{"version":3,"sources":["../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/three/build/three.module.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@react-three/fiber/node_modules/react-use-measure/dist/web.js","../node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../../src/constants.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/isStaticRules.js","../../src/models/Keyframes.js","../../src/models/StyledComponent.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/zustand/esm/index.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/use-asset/dist/index.js","../node_modules/prop-types/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/scheduler/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-dom/index.js","../node_modules/react-is/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/fast-deep-equal/index.js","../node_modules/object-assign/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../../src/index.tsx","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/debounce/index.js","../node_modules/@react-three/drei/helpers/environment-assets.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/qr.js/lib/mode.js","../node_modules/qr.js/lib/ErrorCorrectLevel.js","../node_modules/qr.js/lib/Polynomial.js","../node_modules/qr.js/lib/math.js","../node_modules/react-audio-player/dist/bundle.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@react-three/fiber/node_modules/react-reconciler/index.js","../node_modules/zustand/shallow.js","../node_modules/three/examples/js/libs/stats.min.js","../node_modules/react-qr-code/lib/index.js","../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/postprocessing/build/postprocessing.esm.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/process/browser.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@react-three/fiber/node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/webpack/buildin/module.js","../node_modules/qr.js/lib/QRCode.js","../node_modules/qr.js/lib/8BitByte.js","../node_modules/qr.js/lib/RSBlock.js","../node_modules/qr.js/lib/BitBuffer.js","../node_modules/qr.js/lib/util.js","../node_modules/react-qr-code/lib/components/QRCodeCell/index.js","../node_modules/react-qr-code/lib/components/QRCodeSurface/index.js","../node_modules/webpack/buildin/global.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/@react-three/drei/web/Html.js","../node_modules/three-stdlib/loaders/GLTFLoader.js","../node_modules/@react-three/drei/core/shapes.js","../node_modules/@react-three/drei/core/useFBO.js","../node_modules/three-stdlib/loaders/RGBELoader.js","../node_modules/@react-three/drei/core/PerspectiveCamera.js","../node_modules/three-stdlib/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/three-stdlib/controls/OrbitControls.js","../node_modules/@react-three/drei/core/OrbitControls.js","../node_modules/@react-three/drei/helpers/useEffectfulState.js","../node_modules/@react-three/drei/core/Stats.js"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","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","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","GLSL1","GLSL3","EventDispatcher","type","listener","_listeners","listeners","indexOf","push","listenerArray","index","splice","event","target","array","slice","i","l","length","call","_seed","DEG2RAD","Math","PI","RAD2DEG","_lut","toString","hasRandomUUID","crypto","generateUUID","randomUUID","toUpperCase","d0","random","d1","d2","d3","clamp","min","max","euclideanModulo","n","m","lerp","x","y","t","isPowerOfTwo","ceilPowerOfTwo","pow","ceil","log","LN2","floorPowerOfTwo","floor","MathUtils","Object","freeze","__proto__","mapLinear","a1","a2","b1","b2","inverseLerp","damp","lambda","dt","exp","pingpong","abs","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","seededRandom","s","degToRad","degrees","radToDeg","radians","setQuaternionFromProperEuler","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","set","console","warn","Vector2","scalar","Error","constructor","v","w","addVectors","subVectors","multiplyScalar","e","elements","minVal","maxVal","divideScalar","round","sqrt","angle","atan2","distanceToSquared","dx","dy","normalize","alpha","v1","v2","offset","attribute","getX","getY","center","Symbol","iterator","prototype","isVector2","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","invert","transpose","r","tx","ty","sx","sy","rotation","cx","cy","theta","matrix","fromArray","arrayMax","Infinity","isMatrix3","_canvas","TYPED_ARRAYS","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","getTypedArray","buffer","createElementNS","name","document","ImageUtils","image","test","src","HTMLCanvasElement","canvas","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","DEFAULT_IMAGE","mapping","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","defineProperty","uuid","mipmaps","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","isRenderTargetTexture","setUvTransform","copy","source","meta","isRootObject","textures","output","metadata","generator","wrap","images","url","Array","isArray","isDataTexture","serializeImage","dispatchEvent","uv","applyMatrix3","HTMLImageElement","ImageBitmap","getDataURL","data","isTexture","Vector4","z","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getZ","getW","isVector4","WebGLRenderTarget","options","depth","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","dispose","clone","isWebGLRenderTarget","WebGLMultipleRenderTargets","count","il","isWebGLMultipleRenderTargets","WebGLMultisampleRenderTarget","samples","isWebGLMultisampleRenderTarget","Quaternion","_x","_y","_z","_w","_onChangeCallback","quaternion","euler","update","isEuler","_order","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","dot","Number","EPSILON","step","angleTo","slerp","conjugate","p","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","u1","sqrt1u1","sqrtu1","u2","u3","callback","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","isQuaternion","Vector3","multiplyVectors","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","u","isVector3","Box3","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","expandByPoint","size","halfSize","_vector$b","add","object","expandByObject","box","isEmpty","point","vector","addScalar","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","_box$3","union","children","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","isBox3","_testAxis","v0","extents","j","p0","p1","p2","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","at","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","position","scale","x2","y2","z2","wx","wy","wz","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","optionalResult","RotationOrders","Layers","mask","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","parent","DefaultUp","_onChange","defineProperties","configurable","enumerable","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","userData","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","remove","id","getObjectByProperty","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","serialize","library","element","toJSON","JSON","stringify","toArray","isInstancedMesh","instanceMatrix","instanceColor","isScene","background","isColor","environment","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","values","recursive","parse","child","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","i0","i1","i2","fromBufferAttribute","getNormal","setFromCoplanarPoints","getBarycoord","uv1","uv2","uv3","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","addScaledVector","d5","d6","vb","va","denom","targetLengthSq","dot00","dot01","dot02","dot11","dot12","invDenom","p3","materialId","Material","fog","blending","side","vertexColors","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","currentValue","flatShading","isRoot","color","getHex","roughness","metalness","sheen","sheenTint","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularTint","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","map","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularTintMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationTint","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","srcPlanes","dstPlanes","isMaterial","_colorKeywords","_hslA","_hslB","hue2rgb","SRGBToLinear","LinearToSRGB","Color","setRGB","setHex","setStyle","hex","style","handleAlpha","string","parseFloat","exec","components","parseInt","setHSL","charAt","setColorName","toLowerCase","gammaFactor","safeInverse","copyGammaToLinear","copyLinearToGamma","copySRGBToLinear","copyLinearToSRGB","hue","saturation","lightness","delta","getHSL","color1","color2","normalized","NAMES","MeshBasicMaterial","setValues","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","TypeError","usage","updateRange","index1","index2","colors","vectors","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float16BufferAttribute","isFloat16BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","_id","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","attributes","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","start","materialIndex","needsUpdate","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","translate","setAttribute","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","isNaN","jl","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","group","handleTriangle","tmp2","n2","handleVertex","isFinite","positionAttribute","getAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","normalizeNormals","isBufferGeometry","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","keys","hasMorphAttributes","attributeArray","setIndex","assign","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","String","morphTargets","raycaster","intersects","intersection","intersectsBox","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","isGeometry","morphInfluences","influence","boneTransform","intersectTriangle","checkIntersection","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","UniformsUtils","merge","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","isShaderMaterial","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","tan","fullWidth","fullHeight","enabled","offsetX","offsetY","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","render","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","dummy","isInteger","_needsFlipEnvMap","shader","tEquirect","mesh","currentMinFilter","stencil","clear","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","end","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","requestAnimationFrame","stop","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","get","deleteBuffer","delete","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_vert","background_frag","cube_vert","cube_frag","depth_vert","depth_frag","distanceRGBA_vert","distanceRGBA_frag","equirect_vert","equirect_frag","linedashed_vert","linedashed_frag","meshbasic_vert","meshbasic_frag","meshlambert_vert","meshlambert_frag","meshmatcap_vert","meshmatcap_frag","meshnormal_vert","meshnormal_frag","meshphong_vert","meshphong_frag","meshphysical_vert","meshphysical_frag","meshtoon_vert","meshtoon_frag","points_vert","points_frag","shadow_vert","shadow_frag","sprite_vert","sprite_frag","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","toneMapping","unshift","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","reset","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","attributesNum","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","location","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","mode","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","has","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","removeEventListener","cubemap","fromEquirectangularTexture","addEventListener","physical","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","scaleW","scaleH","makeOrthographic","isOrthographicCamera","RawShaderMaterial","isRawShaderMaterial","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","LOD_MAX","MAX_SAMPLES","ENCODINGS","_flatCamera","_createPlanes","_lodPlanes","_sizeLods","_sigmas","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_blurMaterial","weights","poleAxis","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","sigma","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapShader","_getEquirectShader","outputTarget","_setViewport","_textureToCubeUV","params","_isLDR","_createRenderTarget","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","outputEncoding","backgroundMaterial","backgroundBox","useSolidColor","col","_setEncoding","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","sum","weight","outputSize","lod","sizeLod","texelSize","positionSize","uvSize","faceIndexSize","coordinates","fill","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","cubemapUV","isEquirectMap","isCubeMap","isCubeTextureComplete","fromEquirectangular","fromCubemap","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","DataTexture2DArray","wrapR","numericalSort","absNumericalSort","denormalize","morph","WebGLMorphtargets","influencesList","morphTextures","workInfluences","objectInfluences","numberOfMorphTargets","entry","hasMorphNormals","morphNormals","numberOfVertexData","vertexDataStride","morphTarget","morphNormal","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","influences","sort","MAX_SAFE_INTEGER","hasAttribute","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","hasEventListener","isDataTexture2DArray","DataTexture3D","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","unit","safeSetTexture2D","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueT2DArray1","setTexture2DArray","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","status","getShaderParameter","errors","getShaderInfoLog","trim","split","join","addLineNumbers","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","prefixVertex","prefixFragment","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","gammaFactorDefine","customExtensions","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","versionString","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","useVertexTexture","morphTargetsCount","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","specularTintMapEncoding","lightMapEncoding","depthPacking","cachedUniforms","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","deleteShader","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","cubeuvmaps","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","getParameters","shadows","isMeshStandardMaterial","bones","nVertexUniforms","nVertexMatrices","getMaxBones","useAlphaTest","useClearcoat","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","defaultProgram","getNextRenderItem","renderItem","finish","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","renderCallDepth","list","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","hash","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","0","1","2","shadowMaterialVertical","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","result","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","k","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","enable","disable","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","xrFramebuffer","currentBoundFramebuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","bindFramebuffer","framebuffer","bindXRFramebuffer","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","__maxMipLevel","log2","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","convert","glInternalFormat","setTextureParameters","mipmap","mipmapImage","uploadCubeTexture","wrappingToGL","filterToGL","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","attachment","textureTarget","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","isMultipleRenderTargets","isRenderTarget3D","createFramebuffer","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","cameras","isArrayCamera","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","getPose","targetRaySpace","transform","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","handedness","gripSpace","WebXRManager","framebufferScaleFactor","referenceSpaceType","pose","glBinding","glFramebuffer","glProjLayer","glBaseLayer","glMultisampledFramebuffer","glColorRenderbuffer","glDepthRenderbuffer","xrFrame","depthStyle","clearStyle","controllers","inputSourcesMap","Map","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","onSessionEnd","forEach","disconnect","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","getBaseLayer","getBinding","getFrame","setSession","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","WebGLRenderingContext","depthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","requestReferenceSpace","cameraLPos","cameraRPos","updateCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","getCamera","getFoveation","fixedFoveation","setFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","glSubImage","getViewSubImage","depthStencilTexture","colorTexture","invalidateFramebuffer","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshUniformsStandard","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","createCanvasElement","display","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","renderListStack","renderStateStack","domElement","sortObjects","toneMappingExposure","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_currentDrawBuffers","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","shift","message","initGLContext","preventDefault","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReferences","renderObjectImmediate","renderBufferImmediate","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","bits","onXRSessionStart","onXRSessionEnd","hasPositions","hasNormals","hasUvs","hasColors","positionArray","normalArray","uvArray","colorArray","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","getProgram","projectObject","isLOD","intersectsSprite","isImmediateRenderObject","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","needsAntialias","currentToneMapping","onAfterRender","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","onBuild","needsLights","materialNeedsLights","progUniforms","uniformsList","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","markUniformsLightsNeedsUpdate","window","setFromProjectionMatrix","camera2","framebufferBound","drawBuffersWEBGL","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","texSubImage3D","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","CustomEvent","detail","WebGL1Renderer","FogExp2","Fog","Scene","InterleavedBuffer","arrayBuffers","_uuid","ib","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","setFromMatrixScale","transformVertex","intersect","vertexPosition","mvPosition","_v1$2","_v2$1","LOD","_currentLevel","levels","addLevel","getObjectForDistance","raycast","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","boneInverses","Bone","isBone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","boneMatrices","inverse","bone","json","boneInverse","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","getMatrixAt","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","threshold","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","_start","_end","LineSegments","LineLoop","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","requestVideoFrameCallback","updateVideo","readyState","HAVE_CURRENT_DATA","CompressedTexture","CanvasTexture","isCanvasTexture","DepthTexture","CircleGeometry","segments","thetaStart","thetaLength","vertex","segment","CylinderGeometry","radiusTop","radiusBottom","radialSegments","openEnded","indexArray","generateTorso","slope","indexRow","sinTheta","cosTheta","generateCap","centerIndexStart","centerIndexEnd","ConeGeometry","PolyhedronGeometry","vertexBuffer","uvBuffer","subdivide","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","applyRadius","generateUVs","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","computeVertexNormals","details","DodecahedronGeometry","_v0","_v1$1","_normal","_triangle","EdgesGeometry","thresholdAngle","precisionPoints","thresholdDot","indexAttr","getIndex","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","lengths","getLengths","cacheArcLengths","current","last","targetArcLength","arcLengths","comparison","lengthBefore","t2","pt1","pt2","getTangent","closed","binormals","vec","mat","getTangentAt","MAX_VALUE","tz","makeRotationAxis","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","isEllipseCurve","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","isArcCurve","px","py","pz","CatmullRomCurve3","curveType","intPoint","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","isCatmullRomCurve3","CubicBezierCurve","v3","isCubicBezierCurve","CubicBezierCurve3","isCubicBezierCurve3","LineCurve","isLineCurve","LineCurve3","isLineCurve3","QuadraticBezierCurve","isQuadraticBezierCurve","QuadraticBezierCurve3","isQuadraticBezierCurve3","SplineCurve","isSplineCurve","Curves","CurvePath","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","diff","segmentLength","lens","cacheLengths","sums","pts","getPoints","fromJSON","Path","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","concat","absarc","absellipse","firstPoint","lastPoint","Shape","holes","holesPts","getPointsHoles","hole","Earcut","holeIndices","invSize","dim","hasHoles","outerLen","outerNode","linkedList","prev","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","isClockWise","reverse","hl","ahole","triangulateShape","scalePt2","pt","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","bs","vert","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","toJSON$1","geometryShapes","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","IcosahedronGeometry","LatheGeometry","phiStart","phiLength","inverseSegments","base","n1","OctahedronGeometry","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","SphereGeometry","thetaEnd","grid","verticesRow","uOffset","TetrahedronGeometry","TorusGeometry","tube","tubularSegments","arc","TorusKnotGeometry","P1","P2","B","T","N","calculatePositionOnCurve","cu","su","quOverP","cs","TubeGeometry","frames","P","generateBufferData","generateSegment","generateIndices","WireframeGeometry","edges","Set","o","ol","isUniqueEdge","hash1","hash2","Geometries","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","_sheen","_clearcoat","_transmission","Materials","AnimationUtils","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","find","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","getInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","trackType","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","validate","optimize","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","typeName","getTrackTypeForValueTypeName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","global","DefaultLoadingManager","Loader","manager","crossOrigin","withCredentials","resourcePath","requestHeader","load","loading","FileLoader","setTimeout","request","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","header","XMLHttpRequest","open","callbacks","overrideMimeType","setRequestHeader","send","AnimationLoader","setPath","setWithCredentials","text","CompressedTextureLoader","setResponseType","loaded","loadTexture","texDatas","mipmapCount","isCubemap","ImageLoader","onImageLoad","onImageError","substr","CubeTextureLoader","urls","setCrossOrigin","DataTextureLoader","texData","TextureLoader","Light","HemisphereLight","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","isSpotLightShadow","SpotLight","power","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","DirectionalLightShadow","isDirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","MaterialLoader","getTexture","shading","LoaderUtils","TextDecoder","decode","fromCharCode","escape","lastIndexOf","InstancedBufferGeometry","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","arrayBuffer","getArrayBuffer","typedArray","bufferAttribute","drawcalls","offsets","ObjectLoader","extractUrlBase","loadAsync","parseAsync","parseAnimations","parseShapes","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseSkeletons","bindSkeletons","hasImages","parseImagesAsync","bufferGeometryLoader","setTextures","deserializeImage","loadImage","deserializedImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","objectAnimations","bind","setResourcePath","ImageBitmapLoader","createImageBitmap","fetch","fetchOptions","credentials","headers","res","blob","colorSpaceConversion","imageBitmap","catch","isImageBitmapLoader","AudioContext","webkitAudioContext","AudioLoader","bufferCopy","decodeAudioData","audioBuffer","HemisphereLightProbe","sky","ground","isHemisphereLightProbe","AmbientLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","eyeSep","_cache","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","Clock","autoStart","oldTime","elapsedTime","running","now","getElapsedTime","getDelta","newTime","performance","Date","_position$1","_quaternion$1","_scale$1","_orientation$1","AudioListener","gain","createGain","connect","destination","timeDelta","_clock","setTargetAtTime","currentTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","Audio","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","play","delay","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","getFilters","setFilters","_position","_quaternion","_scale","_orientation","PositionalAudio","panner","createPanner","panningModel","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","getValue","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","RegExp","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","rootNode","node","findNode","nodeName","_getValue_unbound","_setValue_unbound","targetObject","resolvedProperty","propertyIndex","dest","targetArray","sourceArray","objectName","_getValue_unavailable","_setValue_unavailable","objectIndex","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","root","isAnimationObjectGroup","matches","results","lastDot","substring","getBoneByName","subTreeNode","searchNodeSubtree","childNode","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","indicesByUUID","paths","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","action","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","create","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","Raycaster","coords","unproject","intersectObject","ascSort","Spherical","other","EPS","setFromCartesianCoords","Cylindrical","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","ImmediateRenderObject","_vector$3","SpotLightHelper","cone","coneLength","coneWidth","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","PointLightHelper","sphereSize","_vector$1","_color1","_color2","HemisphereLightHelper","rotateY","GridHelper","PolarGridHelper","radials","circles","_v1","_v2","_v3","DirectionalLightHelper","lightPlane","targetLine","_vector","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_lineGeometry","_coneGeometry","_box","BoxHelper","setFromObject","Box3Helper","PlaneHelper","positions2","_axis","ArrowHelper","headLength","headWidth","setDirection","setLength","AxesHelper","xAxisColor","yAxisColor","zAxisColor","ShapePath","subPaths","currentPath","quadraticCurveTo","bezierCurveTo","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","_floatView","_int32View","DataUtils","val","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","isMultiMaterial","PointCloud","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","AxisHelper","BoundingBoxHelper","EdgesHelper","WireframeHelper","XHRLoader","BinaryTextureLoader","WebGLRenderTargetCube","CanvasRenderer","JSONLoader","construct","fromPoints","setColors","Handlers","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","getPosition","setRotationFromQuaternion","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateX","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","removeAttribute","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","renderReverseSided","renderSingleSided","setBuffer","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","attach","LensFlare","ParametricGeometry","TextGeometry","FontLoader","Font","revision","__THREE__","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","writable","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Reflect","module","exports","require","_getPrototypeOf","setPrototypeOf","getPrototypeOf","_get","receiver","desc","getOwnPropertyDescriptor","_slicedToArray","arr","arrayWithHoles","_arr","_n","_d","_e","_s","_i","unsupportedIterableToArray","nonIterableRest","_assertThisInitialized","ReferenceError","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","useOnWindowResize","onWindowResize","useEffect","useOnWindowScroll","onScroll","capture","passive","findScrollContainers","body","getComputedStyle","overflow","overflowX","overflowY","some","prop","parentElement","areBoundsEqual","every","useMeasure","debounce","scroll","debounce$1","polyfill","ResizeObserver","useState","bounds","useRef","scrollContainers","resizeObserver","lastBounds","scrollDebounce","resizeDebounce","resize","mounted","useMemo","getBoundingClientRect","forceRefresh","resizeChange","scrollChange","removeListeners","addListeners","observe","scrollContainer","ref","Boolean","is","obj","fun","str","und","equ","makeId","eventObject","createEvents","store","temp","THREE","filterPointerEvents","_r3f","__r3f","cancelPointer","hits","internal","getState","hovered","hoveredObj","hit","eventCount","intersections","onPointerOut","onPointerLeave","pointerMissed","_r3f3","onPointerMissed","handlePointer","capturedMap","pointerId","_raycaster$computeOff","mouse","setFromCamera","prepareRay","isPointerMove","isClickEvent","patchIntersects","seen","eventsObjects","interaction","intersectObjects","item","_r3f2","initialClick","calculateDistance","initialHits","unprojectedPoint","releasePointerCapture","localState","stopped","hasPointerCapture","_internal$capturedMap","_internal$capturedMap2","setPointerCapture","extractEventProps","raycastEvent","spaceX","spaceY","stopPropagation","capturesForPointer","higher","currentTarget","sourceEvent","nativeEvent","handleIntersects","onPointerOver","onPointerEnter","hoveredItem","onPointerMove","handler","includes","isStore","def","getContainer","_container$__r3f$root","_container$__r3f","DEFAULT","EMPTY","catalogue","checkShallow","prepare","primitive","memoizedProps","calculateDpr","dpr","devicePixelRatio","React","createStore","applyProps","invalidate","advance","linear","flat","orthographic","frameloop","clock","raycastOptions","cameraOptions","rootState","initialDpr","defaultTarget","tempTarget","getWorldPosition","performanceTimeout","setPerformanceCurrent","timestamp","runGlobalEffects","controls","regress","clearTimeout","setDpr","events","connected","active","priority","lastProps","subscribers","subscribe","shallow","createSubs","subs","globalEffects","globalAfterEffects","globalTailEffects","addEffect","addAfterEffect","run","effects","render$1","createPointerEvents","names","onClick","onContextMenu","onDoubleClick","onWheel","onPointerDown","onPointerUp","onPointerCancel","onLostPointerCapture","reduce","acc","_events$handlers","entries","eventName","_events$handlers2","HTMLElement","useIsomorphicLayoutEffect","Block","ErrorBoundary","getDerivedStateFromError","Canvas","forwardedRef","fallback","tabIndex","className","containerRef","canvasRef","block","setBlock","setError","_store","_canvas$parentElement","_canvas$parentElement2","_canvas$parentElement3","_canvas$parentElement4","modes","onCreated","clientWidth","clientHeight","roots","fiber","unmountComponentAtNode","glRenderer","createRendererInstance","reconciler","createContainer","updateContainer","Provider","mergeRefs","useStore","useThree","selector","equalityFn","useFrame","renderPriority","buildGraph","nodes","loadingFn","Proto","input","all","useLoader","useAsset","preload","createLoop","diffProps","_instance$__r3f","previous","accumulative","changes","previousKeys","hasOwnProperty","_instance$__r3f2","memoized","_instance$__r3f3","_root$getState","_instance$__r3f4","prevHandlers","isEvent","currentInstance","targetProp","iterableToArray","defaultClassCall","setScalar","convertSRGBToLinear","invalidateInstance","updateInstance","_instance$__r3f5","_instance$__r3f5$root","createInstance","hostContext","internalInstanceHandle","return","stateNode","containerInfo","endsWith","appendChild","parentInstance","addedAsChild","attachArray","attachObject","attachFns","attachFn","insertBefore","beforeChild","restSiblings","sibling","removeRecursive","removeChild","_parentInstance$__r3f","_child$__r3f2","detachFn","_child$__r3f","removeInteractivity","_child$__r3f3","isPrimitive","shouldDispose","unstable_runWithPriority","unstable_IdlePriority","Reconciler","unstable_now","appendInitialChild","warnsIfNotActing","supportsMutation","isPrimaryRenderer","scheduleTimeout","cancelTimeout","noTimeout","appendChildToContainer","removeChildFromContainer","insertInContainerBefore","prepareUpdate","oldProps","newProps","argsNew","restNew","argsOld","restOld","commitUpdate","reconstruct","_instance$__r3f6","newInstance","alternate","switchInstance","hideInstance","unhideInstance","hideTextInstance","getPublicInstance","getRootHostContext","rootContainer","getChildHostContext","parentHostContext","createTextInstance","finalizeInitialChildren","commitMount","shouldDeprioritizeSubtree","prepareForCommit","preparePortalMount","resetAfterCommit","shouldSetTextContent","clearContainer","createRenderer","customRenderer","_state$gl","_state$gl$renderLists","_state$gl2","_dispose","_ref","act","createPortal","injectIntoDevTools","bundleType","rendererPackageName","_defineProperty","_toConsumableArray","arrayLikeToArray","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","_e2","_extends","_taggedTemplateLiteral","strings","raw","insertRule","historyContext","createContext","createNamedContext","Router","computeRootMatch","isExact","pathname","componentDidMount","_pendingLocation","componentWillUnmount","unlisten","RouterContext","history","staticContext","HistoryContext","Component","Lifecycle","onMount","componentDidUpdate","prevProps","onUnmount","cacheCount","generatePath","pathToRegexp","compilePath","pretty","Redirect","computedMatch","createLocation","prevLocation","locationsAreEqual","matchPath","exact","strict","sensitive","matched","pathCache","regexp","memo","Route","component","addLeadingSlash","stripBasename","basename","createURL","createPath","staticHandler","invariant","noop","useContext","useParams","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","condition","_setPrototypeOf","_inheritsLoose","create$1","createState","partial","nextState","previousState","api","currentSlice","listenerToAdd","nextSlice","previousSlice","subscribeWithSelector","navigator","userAgent","useLayoutEffect","newStateSlice","useReducer","forceUpdate","stateRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","unsubscribe","isAbsolute","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","part","valueOf","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","search","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","createElement","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","href","pushState","nextKeys","replaceState","goBack","goForward","unblock","listen","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","querySelector","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextEntries","canGo","globalCache","handleAsset","lifespan","deepEqual","promise","peek","_globalCache$find","_unsupportedIterableToArray","minLen","_objectWithoutPropertiesLoose","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_arrayLikeToArray","arr2","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","equal","flags","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","_arrayWithHoles","_nonIterableRest","_iterableToArray","iter","_superPropBase","_isNativeReflectConstruct","sham","Proxy","_construct","Parent","Class","Function","refs","_typeof","_possibleConstructorReturn","assertThisInitialized","BrowserRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","C","forwardRef","LinkAnchor","innerRef","navigate","rest","ex","isModifiedEvent","Link","ariaCurrent","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","func","wait","immediate","timeout","later","debounced","callNow","flush","presetsObj","sunset","dawn","night","warehouse","forest","apartment","studio","city","park","lobby","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","createEventEmitter","on","off","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","_proto","getChildContext","componentWillReceiveProps","nextProps","oldValue","PropTypes","isRequired","Consumer","_Component2","_this2","observedBits","_proto2","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","modifier","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","encodeURIComponent","token","attachKeys","re","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","memoize","reactPropsRegex","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","L","M","Q","H","math","QRPolynomial","gexp","glog","mod","ratio","QRMath","LOG_TABLE","EXP_TABLE","toStringTag","__esModule","default","__webpack_exports__","__webpack_require__","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","prop_types__WEBPACK_IMPORTED_MODULE_1__","prop_types__WEBPACK_IMPORTED_MODULE_1___default","enterModule","reactHotLoaderGlobal","__signature__","signature","ReactAudioPlayer","_super","createRef","onCanPlay","onCanPlayThrough","setListenTrack","onPlay","clearListenTrack","onAbort","onPause","onSeeked","onLoadedMetadata","onVolumeChanged","audioEl","updateVolume","volume","listenTracker","listenInterval","setInterval","onListen","clearInterval","title","controlsList","autoPlay","muted","__reactstandin__regenerateByEval","code","eval","bool","number","oneOf","objectOf","_default","reactHotLoader","leaveModule","register","webpackPolyfill","objA","objB","compareContext","ret","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","stylis_min","W","K","I","J","G","ca","O","A","X","D","da","ea","fa","Y","E","ha","ia","Z","ja","ka","aa","ba","la","ma","R","na","oa","S","U","use","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","orphans","tabSize","widows","zIndex","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","Stats","dom","cssText","Panel","addPanel","showPanel","begin","usedJSHeapSize","jsHeapSizeLimit","font","textBaseline","fillStyle","fillRect","fillText","globalAlpha","_QRCode2","_interopRequireDefault","_ErrorCorrectLevel2","_propTypes2","_react","_react2","_QRCodeCell2","_QRCodeSurface2","bgColor","fgColor","QRCode","qrcode","addData","make","cells","modules","tileSize","row","rowIndex","cell","cellIndex","transformX","transformY","qrItemWidth","qrItemHeight","ResizeObserverBoxOptions","resizeObservers","msg","trigger","ResizeObserverSize","inlineSize","DOMRectReadOnly","_a","fromRect","rectangle","isSVG","SVGElement","isHidden","getBBox","_b","offsetWidth","offsetHeight","getClientRects","isElement","Element","ownerDocument","defaultView","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","calculateBoxSizes","forceRecalculation","svg","ownerSVGElement","removePadding","boxSizing","writingMode","canScrollVertically","canScrollHorizontally","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","horizontalPadding","verticalPadding","horizontalBorderArea","borderLeftWidth","verticalBorderArea","horizontalScrollbarThickness","verticalScrollbarThickness","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","calculateBoxSize","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","ResizeObserverEntry","calculateDepthForNode","parentNode","broadcastActiveObservations","shallowestDepth","ro","activeTargets","ot","targetDepth","lastReportedSize","observer","callbacks_1","gatherActiveObservationsAtDepth","skippedTargets","observationTargets","process","ErrorEvent","createEvent","initEvent","deliverResizeLoopError","queueMicroTask","toggle_1","el_1","createTextNode","MutationObserver","characterData","textContent","watching","observerConfig","childList","subtree","scheduled","scheduler","Scheduler","schedule","until","elementsHaveResized","updateCount","ResizeObservation","CONTENT_BOX","tagName","isReplacedElement","ResizeObserverDetail","observerMap","getObservationIndex","ResizeObserverController","firstObservation","unobserve","lastObservation","Wrapper","ColorChannel","shader_default2","shader_default3","shader_default5","ShaderMaterial2","ShaderMaterial3","shader_default6","shader_default7","ShaderMaterial4","shader_default8","kernelPresets","ShaderMaterial5","KernelSize","VERY_SMALL","SMALL","MEDIUM","LARGE","VERY_LARGE","HUGE","shader_default10","ShaderMaterial6","shader_default11","DepthCopyMode","ShaderMaterial7","ShaderMaterial8","FULL","SINGLE","EdgeDetectionMode","ShaderMaterial9","ShaderMaterial10","ShaderMaterial11","DEPTH","LUMA","COLOR","Section","ShaderMaterial12","FRAGMENT_HEAD","FRAGMENT_MAIN_UV","FRAGMENT_MAIN_IMAGE","VERTEX_HEAD","VERTEX_MAIN_SUPPORT","shader_default20","ShaderMaterial13","shader_default21","ShaderMaterial14","MaskFunction","ShaderMaterial15","DISCARD","MULTIPLY","MULTIPLY_RGB_SET_ALPHA","shader_default22","shader_default23","shader_default24","ShaderMaterial16","shader_default25","ShaderMaterial17","ShaderMaterial18","BlendFunction","SKIP","ADD","ALPHA","AVERAGE","COLOR_BURN","COLOR_DODGE","DARKEN","DIFFERENCE","EXCLUSION","LIGHTEN","DIVIDE","NEGATION","NORMAL","OVERLAY","REFLECT","SCREEN","SOFT_LIGHT","SUBTRACT","blendFunctions","BlendMode","blendFunction","Uniform19","EffectAttribute","EventDispatcher2","NONE","CONVOLUTION","getNoise","channels","LuminanceFormat2","RGBFormat7","RGBAFormat4","UnsignedByteType11","Matrix42","Image","imageData","createImageData","RawImageData","getImageData","LUTOperation","worker_default","Color5","LookupTexture3D","FloatType4","RGBFormat10","LinearFilter8","domainMin","Vector33","domainMax","transferData","workerURL","URL","createObjectURL","worker","Worker","lut","revokeObjectURL","transferList","postMessage","operation","img0","img1","size0","data0","data1","i3","iRGB","floatData","uint8Data","UnsignedByteType13","RGBAFormat5","convertLinearToSRGB","rgbData","rgbaData","maxValue","DataTexture2","rearrangedData","searchImageDataURL_default","Vector35","areaImageDataURL_default","bilinear","lerp2","e0","e1","e2","e3","Loader2","Loader3","Fragment","StrictMode","Profiler","Suspense","for","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isReactComponent","isPureReactComponent","__self","__source","$$typeof","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","Children","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","isValidElement","lazy","_payload","_init","useCallback","useDebugValue","useImperativeHandle","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","pa","setAttributeNS","xlinkHref","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","stack","Oa","Pa","prepareStackTrace","Qa","tag","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","bb","eb","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","jb","kb","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","gridArea","lineClamp","rb","sb","tb","setProperty","ub","menuitem","br","embed","hr","img","keygen","link","param","wbr","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","$b","memoizedState","dehydrated","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","tc","wc","lanePriority","hydrate","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","locale","which","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","documentMode","ee","fe","ge","he","ie","le","date","datetime","email","month","password","tel","week","ne","oe","pe","qe","se","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","fh","gh","hh","ih","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","ak","bk","dk","focusedElem","selectionRange","ek","extend","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","findDOMNode","flushSync","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","symbol","any","arrayOf","instanceOf","oneOfType","checkPropTypes","jsx","jsxs","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","$$$hostConfig","supportsPersistence","supportsHydration","getInstanceFromNode","makeOpaqueHydratingObject","makeClientId","beforeActiveInstanceBlur","afterActiveInstanceBlur","supportsTestSelectors","findFiberRoot","getBoundingRect","getTextContent","isHiddenSubtree","matchAccessibilityRole","setFocusIfFocusable","setupIntersectionObserver","commitTextUpdate","resetTextContent","unhideTextInstance","cloneInstance","createContainerChildSet","appendChildToContainerChildSet","finalizeContainerChildren","replaceContainerChildren","cloneHiddenInstance","cloneHiddenTextInstance","canHydrateInstance","canHydrateTextInstance","isSuspenseInstancePending","isSuspenseInstanceFallback","getNextHydratableSibling","getFirstHydratableChild","hydrateInstance","hydrateTextInstance","getNextHydratableInstanceAfterSuspenseInstance","commitHydratedContainer","commitHydratedSuspenseInstance","Cd","Ed","Gd","Id","Kd","Qd","Sd","Ud","Wd","Yd","_workInProgressVersionSecondary","Ge","unstable_flushAllWithoutAsserting","setImmediate","IsThisRendererActing","attemptContinuousHydration","attemptHydrationAtCurrentPriority","attemptSynchronousHydration","attemptUserBlockingHydration","batchedEventUpdates","batchedUpdates","createComponentSelector","createHasPsuedoClassSelector","createRoleSelector","createTestNameSelector","createTextSelector","deferredUpdates","discreteUpdates","findAllNodes","findBoundingRects","findHostInstance","findHostInstanceWithNoPortals","findHostInstanceWithWarning","flushControlled","flushDiscreteUpdates","flushPassiveEffects","focusWithin","getCurrentUpdateLanePriority","getFindAllNodesFailureDescription","getPublicRootInstance","observeVisibleRects","registerMutableSourceForHydration","runWithPriority","shouldSuspend","unbatchedUpdates","deprecate","BitByte","RSBlock","BitBuffer","util","Polynomial","typeNumber","errorCorrectLevel","moduleCount","dataCache","dataList","proto","newData","isDark","getModuleCount","rsBlocks","getRSBlocks","totalDataCount","put","getLengthInBits","write","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","lostPoint","getLostPoint","createMovieClip","target_mc","instance_name","qr_mc","createEmptyMovieClip","beginFill","endFill","pos","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","putBit","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","modPoly","modIndex","totalCodeCount","QR8bitByte","ECL","QRRSBlock","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","QRBitBuffer","bufIndex","bit","Mode","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","qrCode","sameCount","darkCount","QRCodeCell","xmlns","QRCodeSurface","defaultCalculatePosition","el","objectPos","project","getCSSMatrix","multipliers","prepend","matrix3d","getCameraCSSMatrix","getObjectCSSMatrix","Html","_portal$current","eps","fullscreen","portal","distanceFactor","occlude","onOcclude","zIndexRange","calculatePosition","as","oldZoom","oldPosition","transformOuterRef","transformInnerRef","ReactDOM","styles","transformStyle","pointerEvents","transformInnerStyles","isBehindCamera","cameraPos","deltaCamObj","camDir","getWorldDirection","isObjectBehindCamera","raytraceTarget","previouslyVisible","isvisible","elPos","screenPos","intersectionDistance","isObjectVisible","dist","objectZIndex","cameraMatrix","cameraTransform","perspective","vFOV","objectScale","GLTFLoader","dracoLoader","ktx2Loader","meshoptDecoder","pluginCallbacks","GLTFMaterialsClearcoatExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFMaterialsTransmissionExtension","GLTFMaterialsVolumeExtension","GLTFMaterialsIorExtension","GLTFMaterialsSpecularExtension","GLTFLightsExtension","GLTFMeshoptCompression","_onError","gltf","content","plugins","decodeText","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","GLTFParser","fileLoader","plugin","extensionsUsed","extensionName","extensionsRequired","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","setPlugins","GLTFRegistry","removeAll","KHR_LIGHTS_PUNCTUAL","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_IOR","KHR_MATERIALS_SPECULAR","KHR_MATERIALS_TRANSMISSION","KHR_MATERIALS_VOLUME","KHR_TEXTURE_BASISU","EXT_TEXTURE_WEBP","EXT_MESHOPT_COMPRESSION","uses","nodeDefs","nodeIndex","nodeLength","nodeDef","_addNodeRef","lightIndex","dependency","lightNode","lightDef","innerConeAngle","outerConeAngle","createUniqueName","_loadLight","_getNodeRef","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","transmissionFactor","transmissionTexture","thicknessFactor","thicknessTexture","attenuationColor","specularFactor","specularTexture","specularColorFactor","specularColorTexture","textureIndex","textureDef","loadTextureImage","isSupported","textureLoader","uri","detectSupport","onload","onerror","bufferView","bufferViews","extensionDef","getDependency","decoder","supported","ready","byteOffset","byteLength","byteStride","decodeGltfBuffer","BINARY_EXTENSION_CHUNK_TYPES","headerView","magic","getUint32","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","decodeDracoFile","texCoord","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","_extraUniforms","uniformName","USE_SPECULARMAP","USE_GLOSSINESSMAP","USE_UV","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","glossinessFactor","specularGlossinessTexture","specGlossMapDef","GLTFCubicSplineInterpolant","stride2","stride3","m0","m1","WEBGL_CONSTANTS","5120","5121","5122","5123","5125","5126","WEBGL_FILTERS","9728","9729","9984","9985","9986","9987","WEBGL_WRAPPINGS","33071","33648","10497","WEBGL_TYPE_SIZES","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","POSITION","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","INTERPOLATION","CUBICSPLINE","LINEAR","STEP","ALPHA_MODES","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","meshDef","targetNames","createPrimitiveKey","primitiveDef","dracoExtension","createAttributesKey","attributesKey","getNormalizedComponentScale","associations","primitiveCache","meshCache","cameraCache","lightCache","textureCache","nodeNamesUsed","_invokeAll","ext","_markDefs","beforeRoot","getDependencies","scenes","afterRoot","skinDefs","skins","meshDefs","meshes","skinLength","skin","loadScene","loadNode","_invokeOne","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","bufferIndex","bufferDef","bufferViewDef","accessorIndex","sparse","pendingBufferViews","TypedArray","elementBytes","itemBytes","ibSlice","ibCacheKey","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setX","setY","setZ","setW","sampler","webkitURL","sourceURI","isObjectURL","hasAlpha","isJPEG","colorType","getUint8","samplers","mapName","mapDef","gltfReference","extendTexture","useVertexTangents","useVertexColors","useFlatShading","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","getMaterialType","extendParams","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","extendMaterialParams","alphaMode","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","createMaterial","originalName","sanitizedName","sanitizeNodeName","primitives","createDracoPrimitive","decodePrimitive","addPrimitiveAttributes","geometryPromise","meshIndex","loadGeometries","normalizeSkinWeights","toTrianglesDrawMode","assignFinalMaterial","cameraIndex","cameraDef","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","accessor","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","inputAccessors","outputAccessors","targets","inputAccessor","outputAccessor","targetName","outputArray","scaled","meshPromise","createNodeMesh","createNodeAttachment","sceneIndex","sceneDef","nodeIds","buildNodeHierachy","nodeId","parentObject","pendingJoints","jointNodes","jointNode","assignAttributeAccessor","gltfAttributeName","boxScale","maxDisplacement","expandByVector","computeBounds","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","addMorphTargets","numberOfTriangles","newIndices","newGeometry","El","useFBO","_settings","multisample","targetSettings","RGBELoader","rgbe_error","rgbe_error_code","fgets","lineLimit","consume","chunk","RGBEByteToRGBFloat","sourceOffset","destArray","destOffset","RGBEByteToRGBHalf","toHalfFloat","byteArray","rgbe_header_info","gamma_re","exposure_re","format_re","dimensions_re","comments","programtype","gamma","exposure","RGBE_ReadHeader","image_rgba_data","scanline_width","data_rgba","ptr_end","rgbeStart","scanline_buffer","num_scanlines","ptr","isEncodedRun","byteValue","RGBE_ReadPixels_RLE","numElements","floatArray","halfArray","makeDefault","manual","cameraRef","cam","oldCam","moduloWrapAround","capacity","OrbitControls","UP","BOTTOM","ONE","TWO","target0","position0","zoom0","getPolarAngle","spherical","getAzimuthalAngle","setPolarAngle","currentPhi","phiDist","sphericalDelta","setAzimuthalAngle","currentTheta","thetaDist","getDistance","listenToKeyEvents","onKeyDown","_domElementKeyEvents","saveState","changeEvent","STATE","quat","setFromUnitVectors","quatInverse","lastPosition","lastQuaternion","twoPI","setFromVector3","autoRotate","rotateLeft","autoRotateSpeed","enableDamping","dampingFactor","minAzimuthAngle","maxAzimuthAngle","minPolarAngle","maxPolarAngle","makeSafe","minDistance","panOffset","setFromSpherical","zoomChanged","touchAction","onMouseWheel","_scope$domElement","_scope$domElement2","_scope$domElement3","_scope$domElement4","_scope$domElement5","_scope$domElement6","startEvent","endEvent","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","getZoomScale","zoomSpeed","rotateUp","panLeft","objectMatrix","panUp","screenSpacePanning","pan","targetDistance","enablePan","dollyOut","dollyScale","minZoom","maxZoom","enableZoom","dollyIn","handleMouseDownRotate","handleMouseDownPan","handleTouchStartRotate","handleTouchStartPan","handleTouchStartDolly","handleTouchMoveRotate","getSecondPointerPosition","rotateSpeed","handleTouchMovePan","panSpeed","handleTouchMoveDolly","_scope$domElement7","_scope$domElement8","addPointer","trackPointer","enableRotate","onTouchStart","mouseAction","mouseButtons","handleMouseDownDolly","onMouseDown","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","onTouchMove","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","onMouseMove","_scope$domElement9","_scope$domElement10","removePointer","handleMouseWheel","keyPanSpeed","handleKeyDown","pointer","onChange","onEnd","restProps","defaultCamera","explCamera","explDomElement","OrbitControls$1","old","useEffectfulState","StatsImpl","classList"],"mappings":";gJAAA,SAASA,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQC,EAAKC,GACpE,IACE,IAAIC,EAAOP,EAAIK,GAAKC,GAChBE,EAAQD,EAAKC,MACjB,MAAOC,GAEP,YADAP,EAAOO,GAILF,EAAKG,KACPT,EAAQO,GAERG,QAAQV,QAAQO,GAAOI,KAAKT,EAAOC,GAIxB,SAASS,EAAkBC,GACxC,OAAO,WACL,IAAIC,EAAOC,KACPC,EAAOC,UACX,OAAO,IAAIP,SAAQ,SAAUV,EAASC,GACpC,IAAIF,EAAMc,EAAGK,MAAMJ,EAAME,GAEzB,SAASd,EAAMK,GACbT,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQI,GAGlE,SAASJ,EAAOgB,GACdrB,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASgB,GAGnEjB,OAAMkB,O,wisBC6QZ,I,gHAvSMC,EAAW,MACXC,EAAQ,CAAEC,KAAM,EAAGC,OAAQ,EAAGC,MAAO,EAAGC,OAAQ,EAAGC,MAAO,EAAGC,IAAK,GAClEC,EAAQ,CAAEH,OAAQ,EAAGE,IAAK,EAAGE,UAAW,EAAGC,aAAc,GACzDC,EAAe,EACfC,EAAe,EACfC,EAAgB,EAChBC,EAAoB,EACpBC,EAAiB,EACjBC,EAAe,EACfC,EAAmB,EACnBC,EAAe,EACfC,EAAY,EACZC,EAAW,EACXC,EAAa,EACbC,EAAc,EACdC,EAAgB,EAChBC,EAAa,EACbC,EAAiB,EACjBC,EAAmB,EACnBC,EAAsB,EACtBC,EAAmB,EACnBC,EAAiB,EACjBC,EAAc,IACdC,EAAmB,IACnBC,EAA0B,IAC1BC,EAAc,IACdC,EAAc,IACdC,EAAa,IACbC,EAAY,IACZC,EAAiB,IACjBC,EAAyB,IACzBC,EAAiB,IACjBC,EAAyB,IACzBC,EAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAyB,IACzBC,GAAa,EACbC,GAAc,EACdC,GAAY,EACZC,GAAiB,EACjBC,GAAa,EACbC,GAAoB,EACpBC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAsB,EACtBC,GAAoB,EACpBC,GAAwB,EACxBC,GAAoB,EAEpBC,GAAY,IACZC,GAAwB,IACxBC,GAAwB,IACxBC,GAAmC,IACnCC,GAAmC,IACnCC,GAA0B,IAC1BC,GAA0B,IAC1BC,GAAiB,IACjBC,GAAsB,KACtBC,GAAyB,KACzBC,GAAgB,KAChBC,GAA6B,KAC7BC,GAA6B,KAC7BC,GAA4B,KAC5BC,GAA4B,KAC5BC,GAAe,KACfC,GAA4B,KAC5BC,GAA4B,KAC5BC,GAA2B,KAC3BC,GAA2B,KAC3BC,GAAmB,KACnBC,GAAW,KACXC,GAAY,KACZC,GAAoB,KACpBC,GAAU,KACVC,GAAkB,KAClBC,GAAY,KACZC,GAAgB,KAChBC,GAAwB,KACxBC,GAAwB,KACxBC,GAAuB,KACvBC,GAAqB,KACrBC,GAAc,KACdC,GAAY,KACZC,GAAa,KACbC,GAAkB,KAClBC,GAAuB,KACvBC,GAAaH,GACbI,GAAc,KACdC,GAAqB,KACrBC,GAAY,KACZC,GAAmB,KACnBC,GAAW,KACXC,GAAkB,KAClBC,GAAmB,KACnBC,GAAoB,KAEpBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAA0B,MAC1BC,GAA0B,MAC1BC,GAA2B,MAC3BC,GAA2B,MAC3BC,GAAkB,MAClBC,GAAkB,MAClBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAmB,MACnBC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAA+B,MAC/BC,GAAgC,MAChCC,GAAgC,MAChCC,GAAgC,MAChCC,GAAiC,MACjCC,GAAiC,MACjCC,GAAiC,MACjCC,GAAW,KACXC,GAAa,KACbC,GAAe,KACfC,GAAsB,KACtBC,GAAoB,KACpBC,GAAoB,KACpBC,GAAsB,KACtBC,GAAkB,KAClBC,GAAmB,KACnBC,GAA2B,KAC3BC,GAA6B,KAC7BC,GAAoB,EACpBC,GAAwB,EACxBC,GAAsB,EACtBC,GAAiB,IACjBC,GAAe,KACfC,GAAgB,KAChBC,GAAe,KACfC,GAAiB,KACjBC,GAAgB,KAChBC,GAAiB,KACjBC,GAAe,KACfC,GAAoB,KACpBC,GAAmB,KACnBC,GAAwB,EACxBC,GAAuB,EAEvBC,GAAgB,EAChBC,GAAgB,KAChBC,GAAmB,KACnBC,GAAqB,KACrBC,GAAqB,KACrBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAkB,KAElBC,GAAmB,IACnBC,GAAkB,IAClBC,GAAmB,IACnBC,GAAuB,IACvBC,GAAqB,IACrBC,GAAsB,IACtBC,GAA0B,IAC1BC,GAAoB,IAEpBC,GAAkB,MAClBC,GAAmB,MACnBC,GAAkB,MAClBC,GAAkB,MAClBC,GAAmB,MACnBC,GAAkB,MAClBC,GAAkB,MAClBC,GAAmB,MACnBC,GAAkB,MAElBC,GAAQ,MACRC,GAAQ,SAMRC,G,gGAEL,SAAkBC,EAAMC,QAEE7M,IAApBL,KAAKmN,aAA2BnN,KAAKmN,WAAa,IAEvD,IAAMC,EAAYpN,KAAKmN,gBAEI9M,IAAtB+M,EAAWH,KAEfG,EAAWH,GAAS,KAI4B,IAA5CG,EAAWH,GAAOI,QAASH,IAE/BE,EAAWH,GAAOK,KAAMJ,K,8BAM1B,SAAkBD,EAAMC,GAEvB,QAAyB7M,IAApBL,KAAKmN,WAA2B,OAAO,EAE5C,IAAMC,EAAYpN,KAAKmN,WAEvB,YAA6B9M,IAAtB+M,EAAWH,KAAoE,IAA5CG,EAAWH,GAAOI,QAASH,K,iCAItE,SAAqBD,EAAMC,GAE1B,QAAyB7M,IAApBL,KAAKmN,WAAV,CAEA,IACMI,EADYvN,KAAKmN,WACUF,GAEjC,QAAuB5M,IAAlBkN,EAA8B,CAElC,IAAMC,EAAQD,EAAcF,QAASH,IAEpB,IAAZM,GAEJD,EAAcE,OAAQD,EAAO,O,2BAQhC,SAAeE,GAEd,QAAyBrN,IAApBL,KAAKmN,WAAV,CAEA,IACMI,EADYvN,KAAKmN,WACUO,EAAMT,MAEvC,QAAuB5M,IAAlBkN,EAA8B,CAElCG,EAAMC,OAAS3N,KAKf,IAFA,IAAM4N,EAAQL,EAAcM,MAAO,GAEzBC,EAAI,EAAGC,EAAIH,EAAMI,OAAQF,EAAIC,EAAGD,IAEzCF,EAAOE,GAAIG,KAAMjO,KAAM0N,GAIxBA,EAAMC,OAAS,W,KAQdO,GAAQ,QAENC,GAAUC,KAAKC,GAAK,IACpBC,GAAU,IAAMF,KAAKC,GAIrBE,GAAO,GAEHT,GAAI,EAAGA,GAAI,IAAKA,KAEzBS,GAAMT,KAAQA,GAAI,GAAK,IAAM,IAASA,GAAIU,SAAU,IAIrD,IAAMC,GAAkC,qBAAXC,QAA0B,eAAgBA,OAEvE,SAASC,KAER,GAAKF,GAEJ,OAAOC,OAAOE,aAAaC,cAO5B,IAAMC,EAAqB,WAAhBV,KAAKW,SAAwB,EAClCC,EAAqB,WAAhBZ,KAAKW,SAAwB,EAClCE,EAAqB,WAAhBb,KAAKW,SAAwB,EAClCG,EAAqB,WAAhBd,KAAKW,SAAwB,EAOxC,OANaR,GAAW,IAALO,GAAcP,GAAMO,GAAM,EAAI,KAASP,GAAMO,GAAM,GAAK,KAASP,GAAMO,GAAM,GAAK,KAAS,IAC5GP,GAAW,IAALS,GAAcT,GAAMS,GAAM,EAAI,KAAS,IAAMT,GAAMS,GAAM,GAAK,GAAO,IAAST,GAAMS,GAAM,GAAK,KAAS,IAC9GT,GAAW,GAALU,EAAY,KAASV,GAAMU,GAAM,EAAI,KAAS,IAAMV,GAAMU,GAAM,GAAK,KAASV,GAAMU,GAAM,GAAK,KACrGV,GAAW,IAALW,GAAcX,GAAMW,GAAM,EAAI,KAASX,GAAMW,GAAM,GAAK,KAASX,GAAMW,GAAM,GAAK,MAG9EL,cAIb,SAASM,GAAO3P,EAAO4P,EAAKC,GAE3B,OAAOjB,KAAKiB,IAAKD,EAAKhB,KAAKgB,IAAKC,EAAK7P,IAMtC,SAAS8P,GAAiBC,EAAGC,GAE5B,OAAWD,EAAIC,EAAMA,GAAMA,EA2B5B,SAASC,GAAMC,EAAGC,EAAGC,GAEpB,OAAS,EAAIA,GAAMF,EAAIE,EAAID,EAuF5B,SAASE,GAAcrQ,GAEtB,OAAqC,KAA5BA,EAAUA,EAAQ,IAAyB,IAAVA,EAI3C,SAASsQ,GAAgBtQ,GAExB,OAAO4O,KAAK2B,IAAK,EAAG3B,KAAK4B,KAAM5B,KAAK6B,IAAKzQ,GAAU4O,KAAK8B,MAIzD,SAASC,GAAiB3Q,GAEzB,OAAO4O,KAAK2B,IAAK,EAAG3B,KAAKgC,MAAOhC,KAAK6B,IAAKzQ,GAAU4O,KAAK8B,MA4D1D,IAAIG,GAAyBC,OAAOC,OAAO,CAC1CC,UAAW,KACXrC,QAASA,GACTG,QAASA,GACTK,aAAcA,GACdQ,MAAOA,GACPG,gBAAiBA,GACjBmB,UAhMD,SAAoBf,EAAGgB,EAAIC,EAAIC,EAAIC,GAElC,OAAOD,GAAOlB,EAAIgB,IAASG,EAAKD,IAASD,EAAKD,IA+L9CI,YA1LD,SAAsBpB,EAAGC,EAAGnQ,GAE3B,OAAKkQ,IAAMC,GAEDnQ,EAAQkQ,IAAQC,EAAID,GAItB,GAmLRD,KAAMA,GACNsB,KAtKD,SAAerB,EAAGC,EAAGqB,EAAQC,GAE5B,OAAOxB,GAAMC,EAAGC,EAAG,EAAIvB,KAAK8C,KAAOF,EAASC,KAqK5CE,SAhKD,SAAmBzB,GAAgB,IAAb1B,EAAa,uDAAJ,EAE9B,OAAOA,EAASI,KAAKgD,IAAK9B,GAAiBI,EAAY,EAAT1B,GAAeA,IA+J7DqD,WA1JD,SAAqB3B,EAAGN,EAAKC,GAE5B,OAAKK,GAAKN,EAAa,EAClBM,GAAKL,EAAa,GAEvBK,GAAMA,EAAIN,IAAUC,EAAMD,IAEfM,GAAM,EAAI,EAAIA,IAoJzB4B,aAhJD,SAAuB5B,EAAGN,EAAKC,GAE9B,OAAKK,GAAKN,EAAa,EAClBM,GAAKL,EAAa,GAEvBK,GAAMA,EAAIN,IAAUC,EAAMD,IAEfM,EAAIA,GAAMA,GAAU,EAAJA,EAAQ,IAAO,KA0I1C6B,QArID,SAAkBC,EAAKC,GAEtB,OAAOD,EAAMpD,KAAKgC,MAAOhC,KAAKW,UAAa0C,EAAOD,EAAM,KAoIxDE,UA/HD,SAAoBF,EAAKC,GAExB,OAAOD,EAAMpD,KAAKW,UAAa0C,EAAOD,IA8HtCG,gBAzHD,SAA0BC,GAEzB,OAAOA,GAAU,GAAMxD,KAAKW,WAwH5B8C,aAnHD,SAAuBC,GAQtB,YANWzR,IAANyR,IAAkB5D,GAAQ4D,EAAI,cAInC5D,GAAgB,MAARA,GAAgB,YAEP,GAAM,YA4GvB6D,SAxGD,SAAmBC,GAElB,OAAOA,EAAU7D,IAuGjB8D,SAnGD,SAAmBC,GAElB,OAAOA,EAAU5D,IAkGjBuB,aAAcA,GACdC,eAAgBA,GAChBK,gBAAiBA,GACjBgC,6BA/ED,SAAuCC,EAAGC,EAAGC,EAAGC,EAAGC,GAQlD,IAAMC,EAAMrE,KAAKqE,IACXC,EAAMtE,KAAKsE,IAEXC,EAAKF,EAAKH,EAAI,GACdM,EAAKF,EAAKJ,EAAI,GAEdO,EAAMJ,GAAOJ,EAAIE,GAAM,GACvBO,EAAMJ,GAAOL,EAAIE,GAAM,GAEvBQ,EAAON,GAAOJ,EAAIE,GAAM,GACxBS,EAAON,GAAOL,EAAIE,GAAM,GAExBU,EAAOR,GAAOF,EAAIF,GAAM,GACxBa,EAAOR,GAAOH,EAAIF,GAAM,GAE9B,OAASG,GAER,IAAK,MACJJ,EAAEe,IAAKR,EAAKG,EAAKF,EAAKG,EAAMH,EAAKI,EAAML,EAAKE,GAC5C,MAED,IAAK,MACJT,EAAEe,IAAKP,EAAKI,EAAML,EAAKG,EAAKF,EAAKG,EAAMJ,EAAKE,GAC5C,MAED,IAAK,MACJT,EAAEe,IAAKP,EAAKG,EAAMH,EAAKI,EAAML,EAAKG,EAAKH,EAAKE,GAC5C,MAED,IAAK,MACJT,EAAEe,IAAKR,EAAKG,EAAKF,EAAKM,EAAMN,EAAKK,EAAMN,EAAKE,GAC5C,MAED,IAAK,MACJT,EAAEe,IAAKP,EAAKK,EAAMN,EAAKG,EAAKF,EAAKM,EAAMP,EAAKE,GAC5C,MAED,IAAK,MACJT,EAAEe,IAAKP,EAAKM,EAAMN,EAAKK,EAAMN,EAAKG,EAAKH,EAAKE,GAC5C,MAED,QACCO,QAAQC,KAAM,kFAAoFb,OAgC/Fc,G,WAEL,aAA4B,IAAf5D,EAAe,uDAAX,EAAGC,EAAQ,uDAAJ,EAAI,oBAE3B3P,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,E,uCAIV,WAEC,OAAO3P,KAAK0P,G,IAIb,SAAWlQ,GAEVQ,KAAK0P,EAAIlQ,I,kBAIV,WAEC,OAAOQ,KAAK2P,G,IAIb,SAAYnQ,GAEXQ,KAAK2P,EAAInQ,I,iBAIV,SAAKkQ,EAAGC,GAKP,OAHA3P,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EAEF3P,O,uBAIR,SAAWuT,GAKV,OAHAvT,KAAK0P,EAAI6D,EACTvT,KAAK2P,EAAI4D,EAEFvT,O,kBAIR,SAAM0P,GAIL,OAFA1P,KAAK0P,EAAIA,EAEF1P,O,kBAIR,SAAM2P,GAIL,OAFA3P,KAAK2P,EAAIA,EAEF3P,O,0BAIR,SAAcwN,EAAOhO,GAEpB,OAASgO,GAER,KAAK,EAAGxN,KAAK0P,EAAIlQ,EAAO,MACxB,KAAK,EAAGQ,KAAK2P,EAAInQ,EAAO,MACxB,QAAS,MAAM,IAAIgU,MAAO,0BAA4BhG,GAIvD,OAAOxN,O,0BAIR,SAAcwN,GAEb,OAASA,GAER,KAAK,EAAG,OAAOxN,KAAK0P,EACpB,KAAK,EAAG,OAAO1P,KAAK2P,EACpB,QAAS,MAAM,IAAI6D,MAAO,0BAA4BhG,M,mBAMxD,WAEC,OAAO,IAAIxN,KAAKyT,YAAazT,KAAK0P,EAAG1P,KAAK2P,K,kBAI3C,SAAM+D,GAKL,OAHA1T,KAAK0P,EAAIgE,EAAEhE,EACX1P,KAAK2P,EAAI+D,EAAE/D,EAEJ3P,O,iBAIR,SAAK0T,EAAGC,GAEP,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,yFACPrT,KAAK4T,WAAYF,EAAGC,KAI5B3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EAEL3P,Q,uBAIR,SAAW8R,GAKV,OAHA9R,KAAK0P,GAAKoC,EACV9R,KAAK2P,GAAKmC,EAEH9R,O,wBAIR,SAAYqS,EAAGC,GAKd,OAHAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EAEV3P,O,6BAIR,SAAiB0T,EAAG5B,GAKnB,OAHA9R,KAAK0P,GAAKgE,EAAEhE,EAAIoC,EAChB9R,KAAK2P,GAAK+D,EAAE/D,EAAImC,EAET9R,O,iBAIR,SAAK0T,EAAGC,GAEP,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,yFACPrT,KAAK6T,WAAYH,EAAGC,KAI5B3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EAEL3P,Q,uBAIR,SAAW8R,GAKV,OAHA9R,KAAK0P,GAAKoC,EACV9R,KAAK2P,GAAKmC,EAEH9R,O,wBAIR,SAAYqS,EAAGC,GAKd,OAHAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EAEV3P,O,sBAIR,SAAU0T,GAKT,OAHA1T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EAEL3P,O,4BAIR,SAAgBuT,GAKf,OAHAvT,KAAK0P,GAAK6D,EACVvT,KAAK2P,GAAK4D,EAEHvT,O,oBAIR,SAAQ0T,GAKP,OAHA1T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EAEL3P,O,0BAIR,SAAcuT,GAEb,OAAOvT,KAAK8T,eAAgB,EAAIP,K,0BAIjC,SAAc/D,GAEb,IAAME,EAAI1P,KAAK0P,EAAGC,EAAI3P,KAAK2P,EACrBoE,EAAIvE,EAAEwE,SAKZ,OAHAhU,KAAK0P,EAAIqE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GACtC/T,KAAK2P,EAAIoE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAE/B/T,O,iBAIR,SAAK0T,GAKJ,OAHA1T,KAAK0P,EAAItB,KAAKgB,IAAKpP,KAAK0P,EAAGgE,EAAEhE,GAC7B1P,KAAK2P,EAAIvB,KAAKgB,IAAKpP,KAAK2P,EAAG+D,EAAE/D,GAEtB3P,O,iBAIR,SAAK0T,GAKJ,OAHA1T,KAAK0P,EAAItB,KAAKiB,IAAKrP,KAAK0P,EAAGgE,EAAEhE,GAC7B1P,KAAK2P,EAAIvB,KAAKiB,IAAKrP,KAAK2P,EAAG+D,EAAE/D,GAEtB3P,O,mBAIR,SAAOoP,EAAKC,GAOX,OAHArP,KAAK0P,EAAItB,KAAKiB,IAAKD,EAAIM,EAAGtB,KAAKgB,IAAKC,EAAIK,EAAG1P,KAAK0P,IAChD1P,KAAK2P,EAAIvB,KAAKiB,IAAKD,EAAIO,EAAGvB,KAAKgB,IAAKC,EAAIM,EAAG3P,KAAK2P,IAEzC3P,O,yBAIR,SAAaiU,EAAQC,GAKpB,OAHAlU,KAAK0P,EAAItB,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK0P,IAClD1P,KAAK2P,EAAIvB,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK2P,IAE3C3P,O,yBAIR,SAAaoP,EAAKC,GAEjB,IAAMrB,EAAShO,KAAKgO,SAEpB,OAAOhO,KAAKmU,aAAcnG,GAAU,GAAI8F,eAAgB1F,KAAKiB,IAAKD,EAAKhB,KAAKgB,IAAKC,EAAKrB,O,mBAIvF,WAKC,OAHAhO,KAAK0P,EAAItB,KAAKgC,MAAOpQ,KAAK0P,GAC1B1P,KAAK2P,EAAIvB,KAAKgC,MAAOpQ,KAAK2P,GAEnB3P,O,kBAIR,WAKC,OAHAA,KAAK0P,EAAItB,KAAK4B,KAAMhQ,KAAK0P,GACzB1P,KAAK2P,EAAIvB,KAAK4B,KAAMhQ,KAAK2P,GAElB3P,O,mBAIR,WAKC,OAHAA,KAAK0P,EAAItB,KAAKgG,MAAOpU,KAAK0P,GAC1B1P,KAAK2P,EAAIvB,KAAKgG,MAAOpU,KAAK2P,GAEnB3P,O,yBAIR,WAKC,OAHAA,KAAK0P,EAAM1P,KAAK0P,EAAI,EAAMtB,KAAK4B,KAAMhQ,KAAK0P,GAAMtB,KAAKgC,MAAOpQ,KAAK0P,GACjE1P,KAAK2P,EAAM3P,KAAK2P,EAAI,EAAMvB,KAAK4B,KAAMhQ,KAAK2P,GAAMvB,KAAKgC,MAAOpQ,KAAK2P,GAE1D3P,O,oBAIR,WAKC,OAHAA,KAAK0P,GAAM1P,KAAK0P,EAChB1P,KAAK2P,GAAM3P,KAAK2P,EAET3P,O,iBAIR,SAAK0T,GAEJ,OAAO1T,KAAK0P,EAAIgE,EAAEhE,EAAI1P,KAAK2P,EAAI+D,EAAE/D,I,mBAIlC,SAAO+D,GAEN,OAAO1T,KAAK0P,EAAIgE,EAAE/D,EAAI3P,KAAK2P,EAAI+D,EAAEhE,I,sBAIlC,WAEC,OAAO1P,KAAK0P,EAAI1P,KAAK0P,EAAI1P,KAAK2P,EAAI3P,KAAK2P,I,oBAIxC,WAEC,OAAOvB,KAAKiG,KAAMrU,KAAK0P,EAAI1P,KAAK0P,EAAI1P,KAAK2P,EAAI3P,KAAK2P,K,6BAInD,WAEC,OAAOvB,KAAKgD,IAAKpR,KAAK0P,GAAMtB,KAAKgD,IAAKpR,KAAK2P,K,uBAI5C,WAEC,OAAO3P,KAAKmU,aAAcnU,KAAKgO,UAAY,K,mBAI5C,WAIC,IAAMsG,EAAQlG,KAAKmG,OAASvU,KAAK2P,GAAK3P,KAAK0P,GAAMtB,KAAKC,GAEtD,OAAOiG,I,wBAIR,SAAYZ,GAEX,OAAOtF,KAAKiG,KAAMrU,KAAKwU,kBAAmBd,M,+BAI3C,SAAmBA,GAElB,IAAMe,EAAKzU,KAAK0P,EAAIgE,EAAEhE,EAAGgF,EAAK1U,KAAK2P,EAAI+D,EAAE/D,EACzC,OAAO8E,EAAKA,EAAKC,EAAKA,I,iCAIvB,SAAqBhB,GAEpB,OAAOtF,KAAKgD,IAAKpR,KAAK0P,EAAIgE,EAAEhE,GAAMtB,KAAKgD,IAAKpR,KAAK2P,EAAI+D,EAAE/D,K,uBAIxD,SAAW3B,GAEV,OAAOhO,KAAK2U,YAAYb,eAAgB9F,K,kBAIzC,SAAM0F,EAAGkB,GAKR,OAHA5U,KAAK0P,IAAOgE,EAAEhE,EAAI1P,KAAK0P,GAAMkF,EAC7B5U,KAAK2P,IAAO+D,EAAE/D,EAAI3P,KAAK2P,GAAMiF,EAEtB5U,O,yBAIR,SAAa6U,EAAIC,EAAIF,GAKpB,OAHA5U,KAAK0P,EAAImF,EAAGnF,GAAMoF,EAAGpF,EAAImF,EAAGnF,GAAMkF,EAClC5U,KAAK2P,EAAIkF,EAAGlF,GAAMmF,EAAGnF,EAAIkF,EAAGlF,GAAMiF,EAE3B5U,O,oBAIR,SAAQ0T,GAEP,OAAWA,EAAEhE,IAAM1P,KAAK0P,GAASgE,EAAE/D,IAAM3P,KAAK2P,I,uBAI/C,SAAW/B,GAAoB,IAAbmH,EAAa,uDAAJ,EAK1B,OAHA/U,KAAK0P,EAAI9B,EAAOmH,GAChB/U,KAAK2P,EAAI/B,EAAOmH,EAAS,GAElB/U,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAK7B,OAHAnH,EAAOmH,GAAW/U,KAAK0P,EACvB9B,EAAOmH,EAAS,GAAM/U,KAAK2P,EAEpB/B,I,iCAIR,SAAqBoH,EAAWxH,EAAOuH,GAWtC,YATgB1U,IAAX0U,GAEJ3B,QAAQC,KAAM,uEAIfrT,KAAK0P,EAAIsF,EAAUC,KAAMzH,GACzBxN,KAAK2P,EAAIqF,EAAUE,KAAM1H,GAElBxN,O,0BAIR,SAAcmV,EAAQb,GAErB,IAAM/B,EAAInE,KAAKqE,IAAK6B,GAASxC,EAAI1D,KAAKsE,IAAK4B,GAErC5E,EAAI1P,KAAK0P,EAAIyF,EAAOzF,EACpBC,EAAI3P,KAAK2P,EAAIwF,EAAOxF,EAK1B,OAHA3P,KAAK0P,EAAIA,EAAI6C,EAAI5C,EAAImC,EAAIqD,EAAOzF,EAChC1P,KAAK2P,EAAID,EAAIoC,EAAInC,EAAI4C,EAAI4C,EAAOxF,EAEzB3P,O,oBAIR,WAKC,OAHAA,KAAK0P,EAAItB,KAAKW,SACd/O,KAAK2P,EAAIvB,KAAKW,SAEP/O,O,KAILoV,OAAOC,S,gBAAV,8EAEC,OAFD,SAEOrV,KAAK0P,EAFZ,OAGC,OAHD,SAGO1P,KAAK2P,EAHZ,kD,KASD2D,GAAQgC,UAAUC,WAAY,E,IAExBC,G,WAEL,aAAc,oBAEbxV,KAAKgU,SAAW,CAEf,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAIF9T,UAAU8N,OAAS,GAEvBoF,QAAQ3T,MAAO,iF,uCAMjB,SAAKgW,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAE5C,IAAMC,EAAKlW,KAAKgU,SAMhB,OAJAkC,EAAI,GAAMT,EAAKS,EAAI,GAAMN,EAAKM,EAAI,GAAMH,EACxCG,EAAI,GAAMR,EAAKQ,EAAI,GAAML,EAAKK,EAAI,GAAMF,EACxCE,EAAI,GAAMP,EAAKO,EAAI,GAAMJ,EAAKI,EAAI,GAAMD,EAEjCjW,O,sBAIR,WAUC,OARAA,KAAKmT,IAEJ,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAIAnT,O,kBAIR,SAAMwP,GAEL,IAAM0G,EAAKlW,KAAKgU,SACVmC,EAAK3G,EAAEwE,SAMb,OAJAkC,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GACpDD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GACpDD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAE7CnW,O,0BAIR,SAAcoW,EAAOC,EAAOC,GAM3B,OAJAF,EAAMG,qBAAsBvW,KAAM,GAClCqW,EAAME,qBAAsBvW,KAAM,GAClCsW,EAAMC,qBAAsBvW,KAAM,GAE3BA,O,4BAIR,SAAgBwP,GAEf,IAAM2G,EAAK3G,EAAEwE,SAUb,OARAhU,KAAKmT,IAEJgD,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAIhBnW,O,sBAIR,SAAUwP,GAET,OAAOxP,KAAKwW,iBAAkBxW,KAAMwP,K,yBAIrC,SAAaA,GAEZ,OAAOxP,KAAKwW,iBAAkBhH,EAAGxP,Q,8BAIlC,SAAkBqS,EAAGC,GAEpB,IAAMmE,EAAKpE,EAAE2B,SACP0C,EAAKpE,EAAE0B,SACPkC,EAAKlW,KAAKgU,SAEV2C,EAAMF,EAAI,GAAKG,EAAMH,EAAI,GAAKI,EAAMJ,EAAI,GACxCK,EAAML,EAAI,GAAKM,EAAMN,EAAI,GAAKO,EAAMP,EAAI,GACxCQ,EAAMR,EAAI,GAAKS,EAAMT,EAAI,GAAKU,EAAMV,EAAI,GAExCW,EAAMV,EAAI,GAAKW,EAAMX,EAAI,GAAKY,EAAMZ,EAAI,GACxCa,EAAMb,EAAI,GAAKc,EAAMd,EAAI,GAAKe,EAAMf,EAAI,GACxCgB,EAAMhB,EAAI,GAAKiB,EAAMjB,EAAI,GAAKkB,EAAMlB,EAAI,GAc9C,OAZAR,EAAI,GAAMS,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EACxCxB,EAAI,GAAMS,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxCzB,EAAI,GAAMS,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAExC1B,EAAI,GAAMY,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EACxCxB,EAAI,GAAMY,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EACxCzB,EAAI,GAAMY,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAExC1B,EAAI,GAAMe,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EACxCxB,EAAI,GAAMe,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EACxCzB,EAAI,GAAMe,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAEjC5X,O,4BAIR,SAAgB8R,GAEf,IAAMoE,EAAKlW,KAAKgU,SAMhB,OAJAkC,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EACvCoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EACvCoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAEhC9R,O,yBAIR,WAEC,IAAMkW,EAAKlW,KAAKgU,SAEV3B,EAAI6D,EAAI,GAAK5D,EAAI4D,EAAI,GAAK3D,EAAI2D,EAAI,GACvC2B,EAAI3B,EAAI,GAAKnC,EAAImC,EAAI,GAAK4B,EAAI5B,EAAI,GAClC6B,EAAI7B,EAAI,GAAK8B,EAAI9B,EAAI,GAAKpI,EAAIoI,EAAI,GAEnC,OAAO7D,EAAI0B,EAAIjG,EAAIuE,EAAIyF,EAAIE,EAAI1F,EAAIuF,EAAI/J,EAAIwE,EAAIwF,EAAIC,EAAIxF,EAAIsF,EAAIG,EAAIzF,EAAIwB,EAAIgE,I,oBAI5E,WAEC,IAAM7B,EAAKlW,KAAKgU,SAEfyB,EAAMS,EAAI,GAAKN,EAAMM,EAAI,GAAKH,EAAMG,EAAI,GACxCR,EAAMQ,EAAI,GAAKL,EAAMK,EAAI,GAAKF,EAAME,EAAI,GACxCP,EAAMO,EAAI,GAAKJ,EAAMI,EAAI,GAAKD,EAAMC,EAAI,GAExC+B,EAAMhC,EAAMJ,EAAMG,EAAMF,EACxBoC,EAAMlC,EAAML,EAAMM,EAAMP,EACxByC,EAAMrC,EAAMJ,EAAMG,EAAMF,EAExByC,EAAM3C,EAAMwC,EAAMrC,EAAMsC,EAAMnC,EAAMoC,EAErC,GAAa,IAARC,EAAY,OAAOpY,KAAKmT,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE1D,IAAMkF,EAAS,EAAID,EAcnB,OAZAlC,EAAI,GAAM+B,EAAMI,EAChBnC,EAAI,IAAQH,EAAMD,EAAMG,EAAML,GAAQyC,EACtCnC,EAAI,IAAQF,EAAMJ,EAAMG,EAAMF,GAAQwC,EAEtCnC,EAAI,GAAMgC,EAAMG,EAChBnC,EAAI,IAAQD,EAAMR,EAAMM,EAAMJ,GAAQ0C,EACtCnC,EAAI,IAAQH,EAAML,EAAMM,EAAMP,GAAQ4C,EAEtCnC,EAAI,GAAMiC,EAAME,EAChBnC,EAAI,IAAQN,EAAMD,EAAMG,EAAML,GAAQ4C,EACtCnC,EAAI,IAAQL,EAAMJ,EAAMG,EAAMF,GAAQ2C,EAE/BrY,O,uBAIR,WAEC,IAAIsY,EACE9I,EAAIxP,KAAKgU,SAMf,OAJAsE,EAAM9I,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAM8I,EACxCA,EAAM9I,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAM8I,EACxCA,EAAM9I,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAM8I,EAEjCtY,O,6BAIR,SAAiBuY,GAEhB,OAAOvY,KAAKwY,eAAgBD,GAAUE,SAASC,c,gCAIhD,SAAoBC,GAEnB,IAAMnJ,EAAIxP,KAAKgU,SAYf,OAVA2E,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GACZmJ,EAAG,GAAMnJ,EAAG,GAELxP,O,4BAIR,SAAgB4Y,EAAIC,EAAIC,EAAIC,EAAIC,EAAUC,EAAIC,GAE7C,IAAM3G,EAAInE,KAAKqE,IAAKuG,GACdlH,EAAI1D,KAAKsE,IAAKsG,GAQpB,OANAhZ,KAAKmT,IACJ2F,EAAKvG,EAAGuG,EAAKhH,GAAKgH,GAAOvG,EAAI0G,EAAKnH,EAAIoH,GAAOD,EAAKL,GAChDG,EAAKjH,EAAGiH,EAAKxG,GAAKwG,IAASjH,EAAImH,EAAK1G,EAAI2G,GAAOA,EAAKL,EACtD,EAAG,EAAG,GAGA7Y,O,mBAIR,SAAO8Y,EAAIC,GAEV,IAAM7C,EAAKlW,KAAKgU,SAKhB,OAHAkC,EAAI,IAAO4C,EAAI5C,EAAI,IAAO4C,EAAI5C,EAAI,IAAO4C,EACzC5C,EAAI,IAAO6C,EAAI7C,EAAI,IAAO6C,EAAI7C,EAAI,IAAO6C,EAElC/Y,O,oBAIR,SAAQmZ,GAEP,IAAM5G,EAAInE,KAAKqE,IAAK0G,GACdrH,EAAI1D,KAAKsE,IAAKyG,GAEdjD,EAAKlW,KAAKgU,SAEV2C,EAAMT,EAAI,GAAKU,EAAMV,EAAI,GAAKW,EAAMX,EAAI,GACxCY,EAAMZ,EAAI,GAAKa,EAAMb,EAAI,GAAKc,EAAMd,EAAI,GAU9C,OARAA,EAAI,GAAM3D,EAAIoE,EAAM7E,EAAIgF,EACxBZ,EAAI,GAAM3D,EAAIqE,EAAM9E,EAAIiF,EACxBb,EAAI,GAAM3D,EAAIsE,EAAM/E,EAAIkF,EAExBd,EAAI,IAAQpE,EAAI6E,EAAMpE,EAAIuE,EAC1BZ,EAAI,IAAQpE,EAAI8E,EAAMrE,EAAIwE,EAC1Bb,EAAI,IAAQpE,EAAI+E,EAAMtE,EAAIyE,EAEnBhX,O,uBAIR,SAAW4Y,EAAIC,GAEd,IAAM3C,EAAKlW,KAAKgU,SAKhB,OAHAkC,EAAI,IAAO0C,EAAK1C,EAAI,GAAKA,EAAI,IAAO0C,EAAK1C,EAAI,GAAKA,EAAI,IAAO0C,EAAK1C,EAAI,GACtEA,EAAI,IAAO2C,EAAK3C,EAAI,GAAKA,EAAI,IAAO2C,EAAK3C,EAAI,GAAKA,EAAI,IAAO2C,EAAK3C,EAAI,GAE/DlW,O,oBAIR,SAAQoZ,GAKP,IAHA,IAAMlD,EAAKlW,KAAKgU,SACVmC,EAAKiD,EAAOpF,SAERlG,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKoI,EAAIpI,KAAQqI,EAAIrI,GAAM,OAAO,EAInC,OAAO,I,uBAIR,SAAWF,GAEV,IAF8B,IAAbmH,EAAa,uDAAJ,EAEhBjH,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKgU,SAAUlG,GAAMF,EAAOE,EAAIiH,GAIjC,OAAO/U,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAEvBmB,EAAKlW,KAAKgU,SAchB,OAZApG,EAAOmH,GAAWmB,EAAI,GACtBtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAE1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAE1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAEnBtI,I,mBAIR,WAEC,OAAO,IAAI5N,KAAKyT,aAAc4F,UAAWrZ,KAAKgU,c,KAQhD,SAASsF,GAAU1L,GAElB,GAAsB,IAAjBA,EAAMI,OAAe,OAASuL,IAInC,IAFA,IAAIlK,EAAMzB,EAAO,GAEPE,EAAI,EAAGC,EAAIH,EAAMI,OAAQF,EAAIC,IAAMD,EAEvCF,EAAOE,GAAMuB,IAAMA,EAAMzB,EAAOE,IAItC,OAAOuB,EAdRmG,GAAQF,UAAUkE,WAAY,EAkB9B,IAwBIC,GAxBEC,GAAe,CACpBC,UAAWA,UACXC,WAAYA,WACZC,kBAAmBA,kBACnBC,WAAYA,WACZC,YAAaA,YACbC,WAAYA,WACZC,YAAaA,YACbC,aAAcA,aACdC,aAAcA,cAGf,SAASC,GAAenN,EAAMoN,GAE7B,OAAO,IAAIX,GAAczM,GAAQoN,GAIlC,SAASC,GAAiBC,GAEzB,OAAOC,SAASF,gBAAiB,+BAAgCC,G,IAM5DE,G,+FAEL,SAAmBC,GAElB,GAAK,UAAUC,KAAMD,EAAME,KAE1B,OAAOF,EAAME,IAId,GAAiC,oBAArBC,kBAEX,OAAOH,EAAME,IAId,IAAIE,EAEJ,GAAKJ,aAAiBG,kBAErBC,EAASJ,MAEH,MAEWra,IAAZoZ,KAAwBA,GAAUa,GAAiB,WAExDb,GAAQsB,MAAQL,EAAMK,MACtBtB,GAAQuB,OAASN,EAAMM,OAEvB,IAAMC,EAAUxB,GAAQyB,WAAY,MAE/BR,aAAiBS,UAErBF,EAAQG,aAAcV,EAAO,EAAG,GAIhCO,EAAQI,UAAWX,EAAO,EAAG,EAAGA,EAAMK,MAAOL,EAAMM,QAIpDF,EAASrB,GAIV,OAAKqB,EAAOC,MAAQ,MAAQD,EAAOE,OAAS,MAE3C5H,QAAQC,KAAM,8EAA+EqH,GAEtFI,EAAOQ,UAAW,aAAc,KAIhCR,EAAOQ,UAAW,iB,KAQxBC,GAAY,EAEVC,G,kDAEL,aAAmS,MAAtRd,EAAsR,uDAA9Qc,EAAQC,cAAeC,EAAuP,uDAA7OF,EAAQG,gBAAiBC,EAAoN,uDAA5M/W,GAAqBgX,EAAuL,uDAA/KhX,GAAqBiX,EAA0J,uDAA9I1W,GAAc2W,EAAgI,uDAApHxW,GAA0ByW,EAA0F,uDAAjFzV,GAAY0G,EAAqE,uDAA9DxH,GAAkBwW,EAA4C,uDAA/B,EAAGC,EAA4B,uDAAjBzR,GAAiB,2BAElS,eAEA6F,OAAO6L,eAAP7L,OAAA,IAAAA,CAAA,GAA6B,KAAM,CAAE9Q,MAAO+b,OAE5C,EAAKa,KAAOzN,KAEZ,EAAK4L,KAAO,GAEZ,EAAKG,MAAQA,EACb,EAAK2B,QAAU,GAEf,EAAKX,QAAUA,EAEf,EAAKE,MAAQA,EACb,EAAKC,MAAQA,EAEb,EAAKC,UAAYA,EACjB,EAAKC,UAAYA,EAEjB,EAAKE,WAAaA,EAElB,EAAKD,OAASA,EACd,EAAKM,eAAiB,KACtB,EAAKrP,KAAOA,EAEZ,EAAK8H,OAAS,IAAIzB,GAAS,EAAG,GAC9B,EAAKiJ,OAAS,IAAIjJ,GAAS,EAAG,GAC9B,EAAK6B,OAAS,IAAI7B,GAAS,EAAG,GAC9B,EAAK0F,SAAW,EAEhB,EAAKwD,kBAAmB,EACxB,EAAKpD,OAAS,IAAI5D,GAElB,EAAKiH,iBAAkB,EACvB,EAAKC,kBAAmB,EACxB,EAAKC,OAAQ,EACb,EAAKC,gBAAkB,EAMvB,EAAKV,SAAWA,EAEhB,EAAKW,QAAU,EACf,EAAKC,SAAW,KAEhB,EAAKC,uBAAwB,EAjDqQ,E,gDAqDnS,WAEC/c,KAAKoZ,OAAO4D,eAAgBhd,KAAK+U,OAAOrF,EAAG1P,KAAK+U,OAAOpF,EAAG3P,KAAKuc,OAAO7M,EAAG1P,KAAKuc,OAAO5M,EAAG3P,KAAKgZ,SAAUhZ,KAAKmV,OAAOzF,EAAG1P,KAAKmV,OAAOxF,K,mBAInI,WAEC,OAAO,IAAI3P,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMkd,GAmCL,OAjCAld,KAAKua,KAAO2C,EAAO3C,KAEnBva,KAAK0a,MAAQwC,EAAOxC,MACpB1a,KAAKqc,QAAUa,EAAOb,QAAQxO,MAAO,GAErC7N,KAAK0b,QAAUwB,EAAOxB,QAEtB1b,KAAK4b,MAAQsB,EAAOtB,MACpB5b,KAAK6b,MAAQqB,EAAOrB,MAEpB7b,KAAK8b,UAAYoB,EAAOpB,UACxB9b,KAAK+b,UAAYmB,EAAOnB,UAExB/b,KAAKic,WAAaiB,EAAOjB,WAEzBjc,KAAKgc,OAASkB,EAAOlB,OACrBhc,KAAKsc,eAAiBY,EAAOZ,eAC7Btc,KAAKiN,KAAOiQ,EAAOjQ,KAEnBjN,KAAK+U,OAAOkI,KAAMC,EAAOnI,QACzB/U,KAAKuc,OAAOU,KAAMC,EAAOX,QACzBvc,KAAKmV,OAAO8H,KAAMC,EAAO/H,QACzBnV,KAAKgZ,SAAWkE,EAAOlE,SAEvBhZ,KAAKwc,iBAAmBU,EAAOV,iBAC/Bxc,KAAKoZ,OAAO6D,KAAMC,EAAO9D,QAEzBpZ,KAAKyc,gBAAkBS,EAAOT,gBAC9Bzc,KAAK0c,iBAAmBQ,EAAOR,iBAC/B1c,KAAK2c,MAAQO,EAAOP,MACpB3c,KAAK4c,gBAAkBM,EAAON,gBAC9B5c,KAAKkc,SAAWgB,EAAOhB,SAEhBlc,O,oBAIR,SAAQmd,GAEP,IAAMC,OAA0B/c,IAAT8c,GAAsC,kBAATA,EAEpD,IAAOC,QAA+C/c,IAA/B8c,EAAKE,SAAUrd,KAAKoc,MAE1C,OAAOe,EAAKE,SAAUrd,KAAKoc,MAI5B,IAAMkB,EAAS,CAEdC,SAAU,CACTV,QAAS,IACT5P,KAAM,UACNuQ,UAAW,kBAGZpB,KAAMpc,KAAKoc,KACX7B,KAAMva,KAAKua,KAEXmB,QAAS1b,KAAK0b,QAEda,OAAQ,CAAEvc,KAAKuc,OAAO7M,EAAG1P,KAAKuc,OAAO5M,GACrCoF,OAAQ,CAAE/U,KAAK+U,OAAOrF,EAAG1P,KAAK+U,OAAOpF,GACrCwF,OAAQ,CAAEnV,KAAKmV,OAAOzF,EAAG1P,KAAKmV,OAAOxF,GACrCqJ,SAAUhZ,KAAKgZ,SAEfyE,KAAM,CAAEzd,KAAK4b,MAAO5b,KAAK6b,OAEzBG,OAAQhc,KAAKgc,OACb/O,KAAMjN,KAAKiN,KACXiP,SAAUlc,KAAKkc,SAEfH,UAAW/b,KAAK+b,UAChBD,UAAW9b,KAAK8b,UAChBG,WAAYjc,KAAKic,WAEjBU,MAAO3c,KAAK2c,MAEZD,iBAAkB1c,KAAK0c,iBACvBE,gBAAiB5c,KAAK4c,iBAIvB,QAAoBvc,IAAfL,KAAK0a,MAAsB,CAI/B,IAAMA,EAAQ1a,KAAK0a,MAQnB,QANoBra,IAAfqa,EAAM0B,OAEV1B,EAAM0B,KAAOzN,OAIPyO,QAA8C/c,IAA9B8c,EAAKO,OAAQhD,EAAM0B,MAAuB,CAEhE,IAAIuB,EAEJ,GAAKC,MAAMC,QAASnD,GAAU,CAI7BiD,EAAM,GAEN,IAAM,IAAI7P,EAAI,EAAGC,EAAI2M,EAAM1M,OAAQF,EAAIC,EAAGD,IAIpC4M,EAAO5M,GAAIgQ,cAEfH,EAAIrQ,KAAMyQ,GAAgBrD,EAAO5M,GAAI4M,QAIrCiD,EAAIrQ,KAAMyQ,GAAgBrD,EAAO5M,UAUnC6P,EAAMI,GAAgBrD,GAIvByC,EAAKO,OAAQhD,EAAM0B,MAAS,CAC3BA,KAAM1B,EAAM0B,KACZuB,IAAKA,GAKPL,EAAO5C,MAAQA,EAAM0B,KAUtB,OANOgB,IAEND,EAAKE,SAAUrd,KAAKoc,MAASkB,GAIvBA,I,qBAIR,WAECtd,KAAKge,cAAe,CAAE/Q,KAAM,c,yBAI7B,SAAagR,GAEZ,GAAKje,KAAK0b,UAAYrX,GAAY,OAAO4Z,EAIzC,GAFAA,EAAGC,aAAcle,KAAKoZ,QAEjB6E,EAAGvO,EAAI,GAAKuO,EAAGvO,EAAI,EAEvB,OAAS1P,KAAK4b,OAEb,KAAKhX,GAEJqZ,EAAGvO,EAAIuO,EAAGvO,EAAItB,KAAKgC,MAAO6N,EAAGvO,GAC7B,MAED,KAAK7K,GAEJoZ,EAAGvO,EAAIuO,EAAGvO,EAAI,EAAI,EAAI,EACtB,MAED,KAAK5K,GAEwC,IAAvCsJ,KAAKgD,IAAKhD,KAAKgC,MAAO6N,EAAGvO,GAAM,GAEnCuO,EAAGvO,EAAItB,KAAK4B,KAAMiO,EAAGvO,GAAMuO,EAAGvO,EAI9BuO,EAAGvO,EAAIuO,EAAGvO,EAAItB,KAAKgC,MAAO6N,EAAGvO,GAUjC,GAAKuO,EAAGtO,EAAI,GAAKsO,EAAGtO,EAAI,EAEvB,OAAS3P,KAAK6b,OAEb,KAAKjX,GAEJqZ,EAAGtO,EAAIsO,EAAGtO,EAAIvB,KAAKgC,MAAO6N,EAAGtO,GAC7B,MAED,KAAK9K,GAEJoZ,EAAGtO,EAAIsO,EAAGtO,EAAI,EAAI,EAAI,EACtB,MAED,KAAK7K,GAEwC,IAAvCsJ,KAAKgD,IAAKhD,KAAKgC,MAAO6N,EAAGtO,GAAM,GAEnCsO,EAAGtO,EAAIvB,KAAK4B,KAAMiO,EAAGtO,GAAMsO,EAAGtO,EAI9BsO,EAAGtO,EAAIsO,EAAGtO,EAAIvB,KAAKgC,MAAO6N,EAAGtO,GAgBjC,OANK3P,KAAK2c,QAETsB,EAAGtO,EAAI,EAAIsO,EAAGtO,GAIRsO,I,uBAIR,SAAiBze,IAED,IAAVA,GAAiBQ,KAAK6c,c,GAlTP7P,IA6TtB,SAAS+Q,GAAgBrD,GAExB,MAAmC,qBAArByD,kBAAoCzD,aAAiByD,kBACnC,qBAAtBtD,mBAAqCH,aAAiBG,mBACtC,qBAAhBuD,aAA+B1D,aAAiB0D,YAIlD3D,GAAW4D,WAAY3D,GAIzBA,EAAM4D,KAIH,CACNA,KAAMV,MAAMtI,UAAUzH,MAAMI,KAAMyM,EAAM4D,MACxCvD,MAAOL,EAAMK,MACbC,OAAQN,EAAMM,OACd/N,KAAMyN,EAAM4D,KAAK7K,YAAY8G,OAK9BnH,QAAQC,KAAM,+CACP,IA/BVmI,GAAQC,mBAAgBpb,EACxBmb,GAAQG,gBAAkBtX,GAE1BmX,GAAQlG,UAAUiJ,WAAY,E,IAoCxBC,G,WAEL,aAA0C,IAA7B9O,EAA6B,uDAAzB,EAAGC,EAAsB,uDAAlB,EAAG8O,EAAe,uDAAX,EAAG9K,EAAQ,uDAAJ,EAAI,oBAEzC3T,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EACT3P,KAAKye,EAAIA,EACTze,KAAK2T,EAAIA,E,uCAIV,WAEC,OAAO3T,KAAKye,G,IAIb,SAAWjf,GAEVQ,KAAKye,EAAIjf,I,kBAIV,WAEC,OAAOQ,KAAK2T,G,IAIb,SAAYnU,GAEXQ,KAAK2T,EAAInU,I,iBAIV,SAAKkQ,EAAGC,EAAG8O,EAAG9K,GAOb,OALA3T,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EACT3P,KAAKye,EAAIA,EACTze,KAAK2T,EAAIA,EAEF3T,O,uBAIR,SAAWuT,GAOV,OALAvT,KAAK0P,EAAI6D,EACTvT,KAAK2P,EAAI4D,EACTvT,KAAKye,EAAIlL,EACTvT,KAAK2T,EAAIJ,EAEFvT,O,kBAIR,SAAM0P,GAIL,OAFA1P,KAAK0P,EAAIA,EAEF1P,O,kBAIR,SAAM2P,GAIL,OAFA3P,KAAK2P,EAAIA,EAEF3P,O,kBAIR,SAAMye,GAIL,OAFAze,KAAKye,EAAIA,EAEFze,O,kBAIR,SAAM2T,GAIL,OAFA3T,KAAK2T,EAAIA,EAEF3T,O,0BAIR,SAAcwN,EAAOhO,GAEpB,OAASgO,GAER,KAAK,EAAGxN,KAAK0P,EAAIlQ,EAAO,MACxB,KAAK,EAAGQ,KAAK2P,EAAInQ,EAAO,MACxB,KAAK,EAAGQ,KAAKye,EAAIjf,EAAO,MACxB,KAAK,EAAGQ,KAAK2T,EAAInU,EAAO,MACxB,QAAS,MAAM,IAAIgU,MAAO,0BAA4BhG,GAIvD,OAAOxN,O,0BAIR,SAAcwN,GAEb,OAASA,GAER,KAAK,EAAG,OAAOxN,KAAK0P,EACpB,KAAK,EAAG,OAAO1P,KAAK2P,EACpB,KAAK,EAAG,OAAO3P,KAAKye,EACpB,KAAK,EAAG,OAAOze,KAAK2T,EACpB,QAAS,MAAM,IAAIH,MAAO,0BAA4BhG,M,mBAMxD,WAEC,OAAO,IAAIxN,KAAKyT,YAAazT,KAAK0P,EAAG1P,KAAK2P,EAAG3P,KAAKye,EAAGze,KAAK2T,K,kBAI3D,SAAMD,GAOL,OALA1T,KAAK0P,EAAIgE,EAAEhE,EACX1P,KAAK2P,EAAI+D,EAAE/D,EACX3P,KAAKye,EAAI/K,EAAE+K,EACXze,KAAK2T,OAActT,IAARqT,EAAEC,EAAoBD,EAAEC,EAAI,EAEhC3T,O,iBAIR,SAAK0T,EAAGC,GAEP,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,yFACPrT,KAAK4T,WAAYF,EAAGC,KAI5B3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EACZze,KAAK2T,GAAKD,EAAEC,EAEL3T,Q,uBAIR,SAAW8R,GAOV,OALA9R,KAAK0P,GAAKoC,EACV9R,KAAK2P,GAAKmC,EACV9R,KAAKye,GAAK3M,EACV9R,KAAK2T,GAAK7B,EAEH9R,O,wBAIR,SAAYqS,EAAGC,GAOd,OALAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EACjB3P,KAAKye,EAAIpM,EAAEoM,EAAInM,EAAEmM,EACjBze,KAAK2T,EAAItB,EAAEsB,EAAIrB,EAAEqB,EAEV3T,O,6BAIR,SAAiB0T,EAAG5B,GAOnB,OALA9R,KAAK0P,GAAKgE,EAAEhE,EAAIoC,EAChB9R,KAAK2P,GAAK+D,EAAE/D,EAAImC,EAChB9R,KAAKye,GAAK/K,EAAE+K,EAAI3M,EAChB9R,KAAK2T,GAAKD,EAAEC,EAAI7B,EAET9R,O,iBAIR,SAAK0T,EAAGC,GAEP,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,yFACPrT,KAAK6T,WAAYH,EAAGC,KAI5B3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EACZze,KAAK2T,GAAKD,EAAEC,EAEL3T,Q,uBAIR,SAAW8R,GAOV,OALA9R,KAAK0P,GAAKoC,EACV9R,KAAK2P,GAAKmC,EACV9R,KAAKye,GAAK3M,EACV9R,KAAK2T,GAAK7B,EAEH9R,O,wBAIR,SAAYqS,EAAGC,GAOd,OALAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EACjB3P,KAAKye,EAAIpM,EAAEoM,EAAInM,EAAEmM,EACjBze,KAAK2T,EAAItB,EAAEsB,EAAIrB,EAAEqB,EAEV3T,O,sBAIR,SAAU0T,GAOT,OALA1T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EACZze,KAAK2T,GAAKD,EAAEC,EAEL3T,O,4BAIR,SAAgBuT,GAOf,OALAvT,KAAK0P,GAAK6D,EACVvT,KAAK2P,GAAK4D,EACVvT,KAAKye,GAAKlL,EACVvT,KAAK2T,GAAKJ,EAEHvT,O,0BAIR,SAAcwP,GAEb,IAAME,EAAI1P,KAAK0P,EAAGC,EAAI3P,KAAK2P,EAAG8O,EAAIze,KAAKye,EAAG9K,EAAI3T,KAAK2T,EAC7CI,EAAIvE,EAAEwE,SAOZ,OALAhU,KAAK0P,EAAIqE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAAI1K,EAAG,IAAOJ,EAC1D3T,KAAK2P,EAAIoE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAAI1K,EAAG,IAAOJ,EAC1D3T,KAAKye,EAAI1K,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,IAAO0K,EAAI1K,EAAG,IAAOJ,EAC3D3T,KAAK2T,EAAII,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,IAAO0K,EAAI1K,EAAG,IAAOJ,EAEpD3T,O,0BAIR,SAAcuT,GAEb,OAAOvT,KAAK8T,eAAgB,EAAIP,K,wCAIjC,SAA4BnB,GAM3BpS,KAAK2T,EAAI,EAAIvF,KAAKsQ,KAAMtM,EAAEuB,GAE1B,IAAM7B,EAAI1D,KAAKiG,KAAM,EAAIjC,EAAEuB,EAAIvB,EAAEuB,GAgBjC,OAdK7B,EAAI,MAER9R,KAAK0P,EAAI,EACT1P,KAAK2P,EAAI,EACT3P,KAAKye,EAAI,IAITze,KAAK0P,EAAI0C,EAAE1C,EAAIoC,EACf9R,KAAK2P,EAAIyC,EAAEzC,EAAImC,EACf9R,KAAKye,EAAIrM,EAAEqM,EAAI3M,GAIT9R,O,4CAIR,SAAgCwP,GAM/B,IAAI8E,EAAO5E,EAAGC,EAAG8O,EACXE,EAAU,IACfC,EAAW,GAEX1I,EAAK1G,EAAEwE,SAEP6K,EAAM3I,EAAI,GAAK4I,EAAM5I,EAAI,GAAK6I,EAAM7I,EAAI,GACxC8I,EAAM9I,EAAI,GAAK+I,EAAM/I,EAAI,GAAKgJ,EAAMhJ,EAAI,GACxCiJ,EAAMjJ,EAAI,GAAKkJ,EAAMlJ,EAAI,GAAKmJ,EAAMnJ,EAAI,IAEzC,GAAO9H,KAAKgD,IAAK0N,EAAME,GAAQL,GACxBvQ,KAAKgD,IAAK2N,EAAMI,GAAQR,GACxBvQ,KAAKgD,IAAK8N,EAAME,GAAQT,EAAY,CAM1C,GAAOvQ,KAAKgD,IAAK0N,EAAME,GAAQJ,GACxBxQ,KAAKgD,IAAK2N,EAAMI,GAAQP,GACxBxQ,KAAKgD,IAAK8N,EAAME,GAAQR,GACxBxQ,KAAKgD,IAAKyN,EAAMI,EAAMI,EAAM,GAAMT,EAMxC,OAFA5e,KAAKmT,IAAK,EAAG,EAAG,EAAG,GAEZnT,KAMRsU,EAAQlG,KAAKC,GAEb,IAAMiR,GAAOT,EAAM,GAAM,EACnBU,GAAON,EAAM,GAAM,EACnBO,GAAOH,EAAM,GAAM,EACnBI,GAAOX,EAAME,GAAQ,EACrBU,GAAOX,EAAMI,GAAQ,EACrBQ,GAAOT,EAAME,GAAQ,EA4D3B,OA1DOE,EAAKC,GAAUD,EAAKE,EAIrBF,EAAKX,GAETjP,EAAI,EACJC,EAAI,WACJ8O,EAAI,aAKJ9O,EAAI8P,GADJ/P,EAAItB,KAAKiG,KAAMiL,IAEfb,EAAIiB,EAAKhQ,GAIC6P,EAAKC,EAIXD,EAAKZ,GAETjP,EAAI,WACJC,EAAI,EACJ8O,EAAI,aAKJ/O,EAAI+P,GADJ9P,EAAIvB,KAAKiG,KAAMkL,IAEfd,EAAIkB,EAAKhQ,GAQL6P,EAAKb,GAETjP,EAAI,WACJC,EAAI,WACJ8O,EAAI,IAKJ/O,EAAIgQ,GADJjB,EAAIrQ,KAAKiG,KAAMmL,IAEf7P,EAAIgQ,EAAKlB,GAMXze,KAAKmT,IAAKzD,EAAGC,EAAG8O,EAAGnK,GAEZtU,KAMR,IAAI8R,EAAI1D,KAAKiG,MAAQ+K,EAAMF,IAAUE,EAAMF,IACxCH,EAAMI,IAAUJ,EAAMI,IACtBH,EAAMF,IAAUE,EAAMF,IAYzB,OAVK1Q,KAAKgD,IAAKU,GAAM,OAAQA,EAAI,GAKjC9R,KAAK0P,GAAM0P,EAAMF,GAAQpN,EACzB9R,KAAK2P,GAAMoP,EAAMI,GAAQrN,EACzB9R,KAAKye,GAAMO,EAAMF,GAAQhN,EACzB9R,KAAK2T,EAAIvF,KAAKsQ,MAAQG,EAAMI,EAAMI,EAAM,GAAM,GAEvCrf,O,iBAIR,SAAK0T,GAOJ,OALA1T,KAAK0P,EAAItB,KAAKgB,IAAKpP,KAAK0P,EAAGgE,EAAEhE,GAC7B1P,KAAK2P,EAAIvB,KAAKgB,IAAKpP,KAAK2P,EAAG+D,EAAE/D,GAC7B3P,KAAKye,EAAIrQ,KAAKgB,IAAKpP,KAAKye,EAAG/K,EAAE+K,GAC7Bze,KAAK2T,EAAIvF,KAAKgB,IAAKpP,KAAK2T,EAAGD,EAAEC,GAEtB3T,O,iBAIR,SAAK0T,GAOJ,OALA1T,KAAK0P,EAAItB,KAAKiB,IAAKrP,KAAK0P,EAAGgE,EAAEhE,GAC7B1P,KAAK2P,EAAIvB,KAAKiB,IAAKrP,KAAK2P,EAAG+D,EAAE/D,GAC7B3P,KAAKye,EAAIrQ,KAAKiB,IAAKrP,KAAKye,EAAG/K,EAAE+K,GAC7Bze,KAAK2T,EAAIvF,KAAKiB,IAAKrP,KAAK2T,EAAGD,EAAEC,GAEtB3T,O,mBAIR,SAAOoP,EAAKC,GASX,OALArP,KAAK0P,EAAItB,KAAKiB,IAAKD,EAAIM,EAAGtB,KAAKgB,IAAKC,EAAIK,EAAG1P,KAAK0P,IAChD1P,KAAK2P,EAAIvB,KAAKiB,IAAKD,EAAIO,EAAGvB,KAAKgB,IAAKC,EAAIM,EAAG3P,KAAK2P,IAChD3P,KAAKye,EAAIrQ,KAAKiB,IAAKD,EAAIqP,EAAGrQ,KAAKgB,IAAKC,EAAIoP,EAAGze,KAAKye,IAChDze,KAAK2T,EAAIvF,KAAKiB,IAAKD,EAAIuE,EAAGvF,KAAKgB,IAAKC,EAAIsE,EAAG3T,KAAK2T,IAEzC3T,O,yBAIR,SAAaiU,EAAQC,GAOpB,OALAlU,KAAK0P,EAAItB,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK0P,IAClD1P,KAAK2P,EAAIvB,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK2P,IAClD3P,KAAKye,EAAIrQ,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAKye,IAClDze,KAAK2T,EAAIvF,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK2T,IAE3C3T,O,yBAIR,SAAaoP,EAAKC,GAEjB,IAAMrB,EAAShO,KAAKgO,SAEpB,OAAOhO,KAAKmU,aAAcnG,GAAU,GAAI8F,eAAgB1F,KAAKiB,IAAKD,EAAKhB,KAAKgB,IAAKC,EAAKrB,O,mBAIvF,WAOC,OALAhO,KAAK0P,EAAItB,KAAKgC,MAAOpQ,KAAK0P,GAC1B1P,KAAK2P,EAAIvB,KAAKgC,MAAOpQ,KAAK2P,GAC1B3P,KAAKye,EAAIrQ,KAAKgC,MAAOpQ,KAAKye,GAC1Bze,KAAK2T,EAAIvF,KAAKgC,MAAOpQ,KAAK2T,GAEnB3T,O,kBAIR,WAOC,OALAA,KAAK0P,EAAItB,KAAK4B,KAAMhQ,KAAK0P,GACzB1P,KAAK2P,EAAIvB,KAAK4B,KAAMhQ,KAAK2P,GACzB3P,KAAKye,EAAIrQ,KAAK4B,KAAMhQ,KAAKye,GACzBze,KAAK2T,EAAIvF,KAAK4B,KAAMhQ,KAAK2T,GAElB3T,O,mBAIR,WAOC,OALAA,KAAK0P,EAAItB,KAAKgG,MAAOpU,KAAK0P,GAC1B1P,KAAK2P,EAAIvB,KAAKgG,MAAOpU,KAAK2P,GAC1B3P,KAAKye,EAAIrQ,KAAKgG,MAAOpU,KAAKye,GAC1Bze,KAAK2T,EAAIvF,KAAKgG,MAAOpU,KAAK2T,GAEnB3T,O,yBAIR,WAOC,OALAA,KAAK0P,EAAM1P,KAAK0P,EAAI,EAAMtB,KAAK4B,KAAMhQ,KAAK0P,GAAMtB,KAAKgC,MAAOpQ,KAAK0P,GACjE1P,KAAK2P,EAAM3P,KAAK2P,EAAI,EAAMvB,KAAK4B,KAAMhQ,KAAK2P,GAAMvB,KAAKgC,MAAOpQ,KAAK2P,GACjE3P,KAAKye,EAAMze,KAAKye,EAAI,EAAMrQ,KAAK4B,KAAMhQ,KAAKye,GAAMrQ,KAAKgC,MAAOpQ,KAAKye,GACjEze,KAAK2T,EAAM3T,KAAK2T,EAAI,EAAMvF,KAAK4B,KAAMhQ,KAAK2T,GAAMvF,KAAKgC,MAAOpQ,KAAK2T,GAE1D3T,O,oBAIR,WAOC,OALAA,KAAK0P,GAAM1P,KAAK0P,EAChB1P,KAAK2P,GAAM3P,KAAK2P,EAChB3P,KAAKye,GAAMze,KAAKye,EAChBze,KAAK2T,GAAM3T,KAAK2T,EAET3T,O,iBAIR,SAAK0T,GAEJ,OAAO1T,KAAK0P,EAAIgE,EAAEhE,EAAI1P,KAAK2P,EAAI+D,EAAE/D,EAAI3P,KAAKye,EAAI/K,EAAE+K,EAAIze,KAAK2T,EAAID,EAAEC,I,sBAIhE,WAEC,OAAO3T,KAAK0P,EAAI1P,KAAK0P,EAAI1P,KAAK2P,EAAI3P,KAAK2P,EAAI3P,KAAKye,EAAIze,KAAKye,EAAIze,KAAK2T,EAAI3T,KAAK2T,I,oBAI5E,WAEC,OAAOvF,KAAKiG,KAAMrU,KAAK0P,EAAI1P,KAAK0P,EAAI1P,KAAK2P,EAAI3P,KAAK2P,EAAI3P,KAAKye,EAAIze,KAAKye,EAAIze,KAAK2T,EAAI3T,KAAK2T,K,6BAIvF,WAEC,OAAOvF,KAAKgD,IAAKpR,KAAK0P,GAAMtB,KAAKgD,IAAKpR,KAAK2P,GAAMvB,KAAKgD,IAAKpR,KAAKye,GAAMrQ,KAAKgD,IAAKpR,KAAK2T,K,uBAItF,WAEC,OAAO3T,KAAKmU,aAAcnU,KAAKgO,UAAY,K,uBAI5C,SAAWA,GAEV,OAAOhO,KAAK2U,YAAYb,eAAgB9F,K,kBAIzC,SAAM0F,EAAGkB,GAOR,OALA5U,KAAK0P,IAAOgE,EAAEhE,EAAI1P,KAAK0P,GAAMkF,EAC7B5U,KAAK2P,IAAO+D,EAAE/D,EAAI3P,KAAK2P,GAAMiF,EAC7B5U,KAAKye,IAAO/K,EAAE+K,EAAIze,KAAKye,GAAM7J,EAC7B5U,KAAK2T,IAAOD,EAAEC,EAAI3T,KAAK2T,GAAMiB,EAEtB5U,O,yBAIR,SAAa6U,EAAIC,EAAIF,GAOpB,OALA5U,KAAK0P,EAAImF,EAAGnF,GAAMoF,EAAGpF,EAAImF,EAAGnF,GAAMkF,EAClC5U,KAAK2P,EAAIkF,EAAGlF,GAAMmF,EAAGnF,EAAIkF,EAAGlF,GAAMiF,EAClC5U,KAAKye,EAAI5J,EAAG4J,GAAM3J,EAAG2J,EAAI5J,EAAG4J,GAAM7J,EAClC5U,KAAK2T,EAAIkB,EAAGlB,GAAMmB,EAAGnB,EAAIkB,EAAGlB,GAAMiB,EAE3B5U,O,oBAIR,SAAQ0T,GAEP,OAAWA,EAAEhE,IAAM1P,KAAK0P,GAASgE,EAAE/D,IAAM3P,KAAK2P,GAAS+D,EAAE+K,IAAMze,KAAKye,GAAS/K,EAAEC,IAAM3T,KAAK2T,I,uBAI3F,SAAW/F,GAAoB,IAAbmH,EAAa,uDAAJ,EAO1B,OALA/U,KAAK0P,EAAI9B,EAAOmH,GAChB/U,KAAK2P,EAAI/B,EAAOmH,EAAS,GACzB/U,KAAKye,EAAI7Q,EAAOmH,EAAS,GACzB/U,KAAK2T,EAAI/F,EAAOmH,EAAS,GAElB/U,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAO7B,OALAnH,EAAOmH,GAAW/U,KAAK0P,EACvB9B,EAAOmH,EAAS,GAAM/U,KAAK2P,EAC3B/B,EAAOmH,EAAS,GAAM/U,KAAKye,EAC3B7Q,EAAOmH,EAAS,GAAM/U,KAAK2T,EAEpB/F,I,iCAIR,SAAqBoH,EAAWxH,EAAOuH,GAatC,YAXgB1U,IAAX0U,GAEJ3B,QAAQC,KAAM,uEAIfrT,KAAK0P,EAAIsF,EAAUC,KAAMzH,GACzBxN,KAAK2P,EAAIqF,EAAUE,KAAM1H,GACzBxN,KAAKye,EAAIzJ,EAAU4K,KAAMpS,GACzBxN,KAAK2T,EAAIqB,EAAU6K,KAAMrS,GAElBxN,O,oBAIR,WAOC,OALAA,KAAK0P,EAAItB,KAAKW,SACd/O,KAAK2P,EAAIvB,KAAKW,SACd/O,KAAKye,EAAIrQ,KAAKW,SACd/O,KAAK2T,EAAIvF,KAAKW,SAEP/O,O,KAILoV,OAAOC,S,gBAAV,8EAEC,OAFD,SAEOrV,KAAK0P,EAFZ,OAGC,OAHD,SAGO1P,KAAK2P,EAHZ,OAIC,OAJD,SAIO3P,KAAKye,EAJZ,OAKC,OALD,SAKOze,KAAK2T,EALZ,kD,KAWD6K,GAAQlJ,UAAUwK,WAAY,E,IAOxBC,G,kDAEL,WAAahF,EAAOC,GAAuB,MAAfgF,EAAe,uDAAL,GAAK,4BAE1C,gBAEKjF,MAAQA,EACb,EAAKC,OAASA,EACd,EAAKiF,MAAQ,EAEb,EAAKC,QAAU,IAAI1B,GAAS,EAAG,EAAGzD,EAAOC,GACzC,EAAKmF,aAAc,EAEnB,EAAKC,SAAW,IAAI5B,GAAS,EAAG,EAAGzD,EAAOC,GAE1C,EAAKqF,QAAU,IAAI7E,QAASnb,EAAW2f,EAAQtE,QAASsE,EAAQpE,MAAOoE,EAAQnE,MAAOmE,EAAQlE,UAAWkE,EAAQjE,UAAWiE,EAAQhE,OAAQgE,EAAQ/S,KAAM+S,EAAQ/D,WAAY+D,EAAQ9D,UACtL,EAAKmE,QAAQtD,uBAAwB,EAErC,EAAKsD,QAAQ3F,MAAQ,CAAEK,MAAOA,EAAOC,OAAQA,EAAQiF,MAAO,GAE5D,EAAKI,QAAQ5D,qBAA8Cpc,IAA5B2f,EAAQvD,iBAAgCuD,EAAQvD,gBAC/E,EAAK4D,QAAQ/D,oBAA4Cjc,IAA3B2f,EAAQ1D,eAA+B0D,EAAQ1D,eAAiB,KAC9F,EAAK+D,QAAQtE,eAAkC1b,IAAtB2f,EAAQjE,UAA0BiE,EAAQjE,UAAY3W,GAE/E,EAAKkb,iBAAsCjgB,IAAxB2f,EAAQM,aAA4BN,EAAQM,YAC/D,EAAKC,mBAA0ClgB,IAA1B2f,EAAQO,eAA8BP,EAAQO,cACnE,EAAKC,kBAAwCngB,IAAzB2f,EAAQQ,aAA6BR,EAAQQ,aAAe,KAxBtC,E,8CA4B3C,SAAYH,GAEXA,EAAQ3F,MAAQ,CACfK,MAAO/a,KAAK+a,MACZC,OAAQhb,KAAKgb,OACbiF,MAAOjgB,KAAKigB,OAGbjgB,KAAKqgB,QAAUA,I,qBAIhB,SAAStF,EAAOC,GAAoB,IAAZiF,EAAY,uDAAJ,EAE1BjgB,KAAK+a,QAAUA,GAAS/a,KAAKgb,SAAWA,GAAUhb,KAAKigB,QAAUA,IAErEjgB,KAAK+a,MAAQA,EACb/a,KAAKgb,OAASA,EACdhb,KAAKigB,MAAQA,EAEbjgB,KAAKqgB,QAAQ3F,MAAMK,MAAQA,EAC3B/a,KAAKqgB,QAAQ3F,MAAMM,OAASA,EAC5Bhb,KAAKqgB,QAAQ3F,MAAMuF,MAAQA,EAE3BjgB,KAAKygB,WAINzgB,KAAKogB,SAASjN,IAAK,EAAG,EAAG4H,EAAOC,GAChChb,KAAKkgB,QAAQ/M,IAAK,EAAG,EAAG4H,EAAOC,K,mBAIhC,WAEC,OAAO,IAAIhb,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMkd,GAeL,OAbAld,KAAK+a,MAAQmC,EAAOnC,MACpB/a,KAAKgb,OAASkC,EAAOlC,OACrBhb,KAAKigB,MAAQ/C,EAAO+C,MAEpBjgB,KAAKogB,SAASnD,KAAMC,EAAOkD,UAE3BpgB,KAAKqgB,QAAUnD,EAAOmD,QAAQK,QAC9B1gB,KAAKqgB,QAAQ3F,MAAb,eAA0B1a,KAAKqgB,QAAQ3F,OAEvC1a,KAAKsgB,YAAcpD,EAAOoD,YAC1BtgB,KAAKugB,cAAgBrD,EAAOqD,cAC5BvgB,KAAKwgB,aAAetD,EAAOsD,aAEpBxgB,O,qBAIR,WAECA,KAAKge,cAAe,CAAE/Q,KAAM,gB,GA1FED,IAgGhC+S,GAAkBzK,UAAUqL,qBAAsB,E,IAE5CC,G,kDAEL,WAAa7F,EAAOC,EAAQ6F,GAAQ,0BAInC,IAAMR,GAFN,cAAOtF,EAAOC,IAEOqF,QAErB,EAAKA,QAAU,GAEf,IAAM,IAAIvS,EAAI,EAAGA,EAAI+S,EAAO/S,IAE3B,EAAKuS,QAASvS,GAAMuS,EAAQK,QAVM,S,2CAgBpC,SAAS3F,EAAOC,GAAoB,IAAZiF,EAAY,uDAAJ,EAE/B,GAAKjgB,KAAK+a,QAAUA,GAAS/a,KAAKgb,SAAWA,GAAUhb,KAAKigB,QAAUA,EAAQ,CAE7EjgB,KAAK+a,MAAQA,EACb/a,KAAKgb,OAASA,EACdhb,KAAKigB,MAAQA,EAEb,IAAM,IAAInS,EAAI,EAAGgT,EAAK9gB,KAAKqgB,QAAQrS,OAAQF,EAAIgT,EAAIhT,IAElD9N,KAAKqgB,QAASvS,GAAI4M,MAAMK,MAAQA,EAChC/a,KAAKqgB,QAASvS,GAAI4M,MAAMM,OAASA,EACjChb,KAAKqgB,QAASvS,GAAI4M,MAAMuF,MAAQA,EAIjCjgB,KAAKygB,UAON,OAHAzgB,KAAKogB,SAASjN,IAAK,EAAG,EAAG4H,EAAOC,GAChChb,KAAKkgB,QAAQ/M,IAAK,EAAG,EAAG4H,EAAOC,GAExBhb,O,kBAIR,SAAMkd,GAELld,KAAKygB,UAELzgB,KAAK+a,MAAQmC,EAAOnC,MACpB/a,KAAKgb,OAASkC,EAAOlC,OACrBhb,KAAKigB,MAAQ/C,EAAO+C,MAEpBjgB,KAAKogB,SAASjN,IAAK,EAAG,EAAGnT,KAAK+a,MAAO/a,KAAKgb,QAC1Chb,KAAKkgB,QAAQ/M,IAAK,EAAG,EAAGnT,KAAK+a,MAAO/a,KAAKgb,QAEzChb,KAAKsgB,YAAcpD,EAAOoD,YAC1BtgB,KAAKugB,cAAgBrD,EAAOqD,cAC5BvgB,KAAKwgB,aAAetD,EAAOsD,aAE3BxgB,KAAKqgB,QAAQrS,OAAS,EAEtB,IAAM,IAAIF,EAAI,EAAGgT,EAAK5D,EAAOmD,QAAQrS,OAAQF,EAAIgT,EAAIhT,IAEpD9N,KAAKqgB,QAASvS,GAAMoP,EAAOmD,QAASvS,GAAI4S,QAIzC,OAAO1gB,S,GApEgC+f,IA0EzCa,GAA2BtL,UAAUyL,8BAA+B,E,IAE9DC,G,kDAEL,WAAajG,EAAOC,EAAQgF,GAAU,kCAErC,cAAOjF,EAAOC,EAAQgF,IAEjBiB,QAAU,EAJsB,E,wCAQtC,SAAM/D,GAML,OAJA,kDAAWjP,KAAMjO,KAAMkd,GAEvBld,KAAKihB,QAAU/D,EAAO+D,QAEfjhB,S,GAhBkC+f,IAsB3CiB,GAA6B1L,UAAU4L,gCAAiC,E,IAElEC,G,WAEL,aAA0C,IAA7BzR,EAA6B,uDAAzB,EAAGC,EAAsB,uDAAlB,EAAG8O,EAAe,uDAAX,EAAG9K,EAAQ,uDAAJ,EAAI,oBAEzC3T,KAAKohB,GAAK1R,EACV1P,KAAKqhB,GAAK1R,EACV3P,KAAKshB,GAAK7C,EACVze,KAAKuhB,GAAK5N,E,mCAgHX,WAEC,OAAO3T,KAAKohB,I,IAIb,SAAO5hB,GAENQ,KAAKohB,GAAK5hB,EACVQ,KAAKwhB,sB,aAIN,WAEC,OAAOxhB,KAAKqhB,I,IAIb,SAAO7hB,GAENQ,KAAKqhB,GAAK7hB,EACVQ,KAAKwhB,sB,aAIN,WAEC,OAAOxhB,KAAKshB,I,IAIb,SAAO9hB,GAENQ,KAAKshB,GAAK9hB,EACVQ,KAAKwhB,sB,aAIN,WAEC,OAAOxhB,KAAKuhB,I,IAIb,SAAO/hB,GAENQ,KAAKuhB,GAAK/hB,EACVQ,KAAKwhB,sB,iBAIN,SAAK9R,EAAGC,EAAG8O,EAAG9K,GASb,OAPA3T,KAAKohB,GAAK1R,EACV1P,KAAKqhB,GAAK1R,EACV3P,KAAKshB,GAAK7C,EACVze,KAAKuhB,GAAK5N,EAEV3T,KAAKwhB,oBAEExhB,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,YAAazT,KAAKohB,GAAIphB,KAAKqhB,GAAIrhB,KAAKshB,GAAIthB,KAAKuhB,M,kBAI9D,SAAME,GASL,OAPAzhB,KAAKohB,GAAKK,EAAW/R,EACrB1P,KAAKqhB,GAAKI,EAAW9R,EACrB3P,KAAKshB,GAAKG,EAAWhD,EACrBze,KAAKuhB,GAAKE,EAAW9N,EAErB3T,KAAKwhB,oBAEExhB,O,0BAIR,SAAc0hB,EAAOC,GAEpB,IAASD,IAASA,EAAME,QAEvB,MAAM,IAAIpO,MAAO,oGAIlB,IAAM9D,EAAIgS,EAAMN,GAAIzR,EAAI+R,EAAML,GAAI5C,EAAIiD,EAAMJ,GAAI9O,EAAQkP,EAAMG,OAMxDpP,EAAMrE,KAAKqE,IACXC,EAAMtE,KAAKsE,IAEXoP,EAAKrP,EAAK/C,EAAI,GACdiD,EAAKF,EAAK9C,EAAI,GACdoS,EAAKtP,EAAKgM,EAAI,GAEduD,EAAKtP,EAAKhD,EAAI,GACdkD,EAAKF,EAAK/C,EAAI,GACdsS,EAAKvP,EAAK+L,EAAI,GAEpB,OAASjM,GAER,IAAK,MACJxS,KAAKohB,GAAKY,EAAKrP,EAAKoP,EAAKD,EAAKlP,EAAKqP,EACnCjiB,KAAKqhB,GAAKS,EAAKlP,EAAKmP,EAAKC,EAAKrP,EAAKsP,EACnCjiB,KAAKshB,GAAKQ,EAAKnP,EAAKsP,EAAKD,EAAKpP,EAAKmP,EACnC/hB,KAAKuhB,GAAKO,EAAKnP,EAAKoP,EAAKC,EAAKpP,EAAKqP,EACnC,MAED,IAAK,MACJjiB,KAAKohB,GAAKY,EAAKrP,EAAKoP,EAAKD,EAAKlP,EAAKqP,EACnCjiB,KAAKqhB,GAAKS,EAAKlP,EAAKmP,EAAKC,EAAKrP,EAAKsP,EACnCjiB,KAAKshB,GAAKQ,EAAKnP,EAAKsP,EAAKD,EAAKpP,EAAKmP,EACnC/hB,KAAKuhB,GAAKO,EAAKnP,EAAKoP,EAAKC,EAAKpP,EAAKqP,EACnC,MAED,IAAK,MACJjiB,KAAKohB,GAAKY,EAAKrP,EAAKoP,EAAKD,EAAKlP,EAAKqP,EACnCjiB,KAAKqhB,GAAKS,EAAKlP,EAAKmP,EAAKC,EAAKrP,EAAKsP,EACnCjiB,KAAKshB,GAAKQ,EAAKnP,EAAKsP,EAAKD,EAAKpP,EAAKmP,EACnC/hB,KAAKuhB,GAAKO,EAAKnP,EAAKoP,EAAKC,EAAKpP,EAAKqP,EACnC,MAED,IAAK,MACJjiB,KAAKohB,GAAKY,EAAKrP,EAAKoP,EAAKD,EAAKlP,EAAKqP,EACnCjiB,KAAKqhB,GAAKS,EAAKlP,EAAKmP,EAAKC,EAAKrP,EAAKsP,EACnCjiB,KAAKshB,GAAKQ,EAAKnP,EAAKsP,EAAKD,EAAKpP,EAAKmP,EACnC/hB,KAAKuhB,GAAKO,EAAKnP,EAAKoP,EAAKC,EAAKpP,EAAKqP,EACnC,MAED,IAAK,MACJjiB,KAAKohB,GAAKY,EAAKrP,EAAKoP,EAAKD,EAAKlP,EAAKqP,EACnCjiB,KAAKqhB,GAAKS,EAAKlP,EAAKmP,EAAKC,EAAKrP,EAAKsP,EACnCjiB,KAAKshB,GAAKQ,EAAKnP,EAAKsP,EAAKD,EAAKpP,EAAKmP,EACnC/hB,KAAKuhB,GAAKO,EAAKnP,EAAKoP,EAAKC,EAAKpP,EAAKqP,EACnC,MAED,IAAK,MACJjiB,KAAKohB,GAAKY,EAAKrP,EAAKoP,EAAKD,EAAKlP,EAAKqP,EACnCjiB,KAAKqhB,GAAKS,EAAKlP,EAAKmP,EAAKC,EAAKrP,EAAKsP,EACnCjiB,KAAKshB,GAAKQ,EAAKnP,EAAKsP,EAAKD,EAAKpP,EAAKmP,EACnC/hB,KAAKuhB,GAAKO,EAAKnP,EAAKoP,EAAKC,EAAKpP,EAAKqP,EACnC,MAED,QACC7O,QAAQC,KAAM,mEAAqEb,GAMrF,OAFgB,IAAXmP,GAAmB3hB,KAAKwhB,oBAEtBxhB,O,8BAIR,SAAkBkiB,EAAM5N,GAMvB,IAAM6N,EAAY7N,EAAQ,EAAGxC,EAAI1D,KAAKsE,IAAKyP,GAS3C,OAPAniB,KAAKohB,GAAKc,EAAKxS,EAAIoC,EACnB9R,KAAKqhB,GAAKa,EAAKvS,EAAImC,EACnB9R,KAAKshB,GAAKY,EAAKzD,EAAI3M,EACnB9R,KAAKuhB,GAAKnT,KAAKqE,IAAK0P,GAEpBniB,KAAKwhB,oBAEExhB,O,mCAIR,SAAuBwP,GAMtB,IAAM0G,EAAK1G,EAAEwE,SAEZ6K,EAAM3I,EAAI,GAAK4I,EAAM5I,EAAI,GAAK6I,EAAM7I,EAAI,GACxC8I,EAAM9I,EAAI,GAAK+I,EAAM/I,EAAI,GAAKgJ,EAAMhJ,EAAI,GACxCiJ,EAAMjJ,EAAI,GAAKkJ,EAAMlJ,EAAI,GAAKmJ,EAAMnJ,EAAI,IAExCkM,EAAQvD,EAAMI,EAAMI,EAErB,GAAK+C,EAAQ,EAAI,CAEhB,IAAMtQ,EAAI,GAAM1D,KAAKiG,KAAM+N,EAAQ,GAEnCpiB,KAAKuhB,GAAK,IAAOzP,EACjB9R,KAAKohB,IAAOhC,EAAMF,GAAQpN,EAC1B9R,KAAKqhB,IAAOtC,EAAMI,GAAQrN,EAC1B9R,KAAKshB,IAAOtC,EAAMF,GAAQhN,OAEpB,GAAK+M,EAAMI,GAAOJ,EAAMQ,EAAM,CAEpC,IAAMvN,EAAI,EAAM1D,KAAKiG,KAAM,EAAMwK,EAAMI,EAAMI,GAE7Crf,KAAKuhB,IAAOnC,EAAMF,GAAQpN,EAC1B9R,KAAKohB,GAAK,IAAOtP,EACjB9R,KAAKqhB,IAAOvC,EAAME,GAAQlN,EAC1B9R,KAAKshB,IAAOvC,EAAMI,GAAQrN,OAEpB,GAAKmN,EAAMI,EAAM,CAEvB,IAAMvN,EAAI,EAAM1D,KAAKiG,KAAM,EAAM4K,EAAMJ,EAAMQ,GAE7Crf,KAAKuhB,IAAOxC,EAAMI,GAAQrN,EAC1B9R,KAAKohB,IAAOtC,EAAME,GAAQlN,EAC1B9R,KAAKqhB,GAAK,IAAOvP,EACjB9R,KAAKshB,IAAOpC,EAAME,GAAQtN,MAEpB,CAEN,IAAMA,EAAI,EAAM1D,KAAKiG,KAAM,EAAMgL,EAAMR,EAAMI,GAE7Cjf,KAAKuhB,IAAOvC,EAAMF,GAAQhN,EAC1B9R,KAAKohB,IAAOrC,EAAMI,GAAQrN,EAC1B9R,KAAKqhB,IAAOnC,EAAME,GAAQtN,EAC1B9R,KAAKshB,GAAK,IAAOxP,EAMlB,OAFA9R,KAAKwhB,oBAEExhB,O,gCAIR,SAAoBqiB,EAAOC,GAI1B,IAAI3J,EAAI0J,EAAME,IAAKD,GAAQ,EAmC3B,OAjCK3J,EAAI6J,OAAOC,SAIf9J,EAAI,EAECvK,KAAKgD,IAAKiR,EAAM3S,GAAMtB,KAAKgD,IAAKiR,EAAM5D,IAE1Cze,KAAKohB,IAAOiB,EAAM1S,EAClB3P,KAAKqhB,GAAKgB,EAAM3S,EAChB1P,KAAKshB,GAAK,EACVthB,KAAKuhB,GAAK5I,IAIV3Y,KAAKohB,GAAK,EACVphB,KAAKqhB,IAAOgB,EAAM5D,EAClBze,KAAKshB,GAAKe,EAAM1S,EAChB3P,KAAKuhB,GAAK5I,KAQX3Y,KAAKohB,GAAKiB,EAAM1S,EAAI2S,EAAI7D,EAAI4D,EAAM5D,EAAI6D,EAAI3S,EAC1C3P,KAAKqhB,GAAKgB,EAAM5D,EAAI6D,EAAI5S,EAAI2S,EAAM3S,EAAI4S,EAAI7D,EAC1Cze,KAAKshB,GAAKe,EAAM3S,EAAI4S,EAAI3S,EAAI0S,EAAM1S,EAAI2S,EAAI5S,EAC1C1P,KAAKuhB,GAAK5I,GAIJ3Y,KAAK2U,c,qBAIb,SAASvC,GAER,OAAO,EAAIhE,KAAKsQ,KAAMtQ,KAAKgD,IAAKjC,GAAOnP,KAAKuiB,IAAKnQ,IAAO,EAAG,O,2BAI5D,SAAeA,EAAGsQ,GAEjB,IAAMpO,EAAQtU,KAAK2iB,QAASvQ,GAE5B,GAAe,IAAVkC,EAAc,OAAOtU,KAE1B,IAAM4P,EAAIxB,KAAKgB,IAAK,EAAGsT,EAAOpO,GAI9B,OAFAtU,KAAK4iB,MAAOxQ,EAAGxC,GAER5P,O,sBAIR,WAEC,OAAOA,KAAKmT,IAAK,EAAG,EAAG,EAAG,K,oBAI3B,WAIC,OAAOnT,KAAK6iB,c,uBAIb,WAQC,OANA7iB,KAAKohB,KAAQ,EACbphB,KAAKqhB,KAAQ,EACbrhB,KAAKshB,KAAQ,EAEbthB,KAAKwhB,oBAEExhB,O,iBAIR,SAAK0T,GAEJ,OAAO1T,KAAKohB,GAAK1N,EAAE0N,GAAKphB,KAAKqhB,GAAK3N,EAAE2N,GAAKrhB,KAAKshB,GAAK5N,EAAE4N,GAAKthB,KAAKuhB,GAAK7N,EAAE6N,K,sBAIvE,WAEC,OAAOvhB,KAAKohB,GAAKphB,KAAKohB,GAAKphB,KAAKqhB,GAAKrhB,KAAKqhB,GAAKrhB,KAAKshB,GAAKthB,KAAKshB,GAAKthB,KAAKuhB,GAAKvhB,KAAKuhB,K,oBAInF,WAEC,OAAOnT,KAAKiG,KAAMrU,KAAKohB,GAAKphB,KAAKohB,GAAKphB,KAAKqhB,GAAKrhB,KAAKqhB,GAAKrhB,KAAKshB,GAAKthB,KAAKshB,GAAKthB,KAAKuhB,GAAKvhB,KAAKuhB,M,uBAI9F,WAEC,IAAIxT,EAAI/N,KAAKgO,SAsBb,OApBW,IAAND,GAEJ/N,KAAKohB,GAAK,EACVphB,KAAKqhB,GAAK,EACVrhB,KAAKshB,GAAK,EACVthB,KAAKuhB,GAAK,IAIVxT,EAAI,EAAIA,EAER/N,KAAKohB,GAAKphB,KAAKohB,GAAKrT,EACpB/N,KAAKqhB,GAAKrhB,KAAKqhB,GAAKtT,EACpB/N,KAAKshB,GAAKthB,KAAKshB,GAAKvT,EACpB/N,KAAKuhB,GAAKvhB,KAAKuhB,GAAKxT,GAIrB/N,KAAKwhB,oBAEExhB,O,sBAIR,SAAUoS,EAAG0Q,GAEZ,YAAWziB,IAANyiB,GAEJ1P,QAAQC,KAAM,0GACPrT,KAAK+iB,oBAAqB3Q,EAAG0Q,IAI9B9iB,KAAK+iB,oBAAqB/iB,KAAMoS,K,yBAIxC,SAAaA,GAEZ,OAAOpS,KAAK+iB,oBAAqB3Q,EAAGpS,Q,iCAIrC,SAAqBqS,EAAGC,GAIvB,IAAM0Q,EAAM3Q,EAAE+O,GAAI6B,EAAM5Q,EAAEgP,GAAI6B,EAAM7Q,EAAEiP,GAAI6B,EAAM9Q,EAAEkP,GAC5C6B,EAAM9Q,EAAE8O,GAAIiC,EAAM/Q,EAAE+O,GAAIiC,EAAMhR,EAAEgP,GAAIiC,EAAMjR,EAAEiP,GASlD,OAPAvhB,KAAKohB,GAAK4B,EAAMO,EAAMJ,EAAMC,EAAMH,EAAMK,EAAMJ,EAAMG,EACpDrjB,KAAKqhB,GAAK4B,EAAMM,EAAMJ,EAAME,EAAMH,EAAME,EAAMJ,EAAMM,EACpDtjB,KAAKshB,GAAK4B,EAAMK,EAAMJ,EAAMG,EAAMN,EAAMK,EAAMJ,EAAMG,EACpDpjB,KAAKuhB,GAAK4B,EAAMI,EAAMP,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAEpDtjB,KAAKwhB,oBAEExhB,O,mBAIR,SAAOwjB,EAAI5T,GAEV,GAAW,IAANA,EAAU,OAAO5P,KACtB,GAAW,IAAN4P,EAAU,OAAO5P,KAAKid,KAAMuG,GAEjC,IAAM9T,EAAI1P,KAAKohB,GAAIzR,EAAI3P,KAAKqhB,GAAI5C,EAAIze,KAAKshB,GAAI3N,EAAI3T,KAAKuhB,GAIlDkC,EAAe9P,EAAI6P,EAAGjC,GAAK7R,EAAI8T,EAAGpC,GAAKzR,EAAI6T,EAAGnC,GAAK5C,EAAI+E,EAAGlC,GAiB9D,GAfKmC,EAAe,GAEnBzjB,KAAKuhB,IAAOiC,EAAGjC,GACfvhB,KAAKohB,IAAOoC,EAAGpC,GACfphB,KAAKqhB,IAAOmC,EAAGnC,GACfrhB,KAAKshB,IAAOkC,EAAGlC,GAEfmC,GAAiBA,GAIjBzjB,KAAKid,KAAMuG,GAIPC,GAAgB,EAOpB,OALAzjB,KAAKuhB,GAAK5N,EACV3T,KAAKohB,GAAK1R,EACV1P,KAAKqhB,GAAK1R,EACV3P,KAAKshB,GAAK7C,EAEHze,KAIR,IAAM0jB,EAAkB,EAAMD,EAAeA,EAE7C,GAAKC,GAAmBlB,OAAOC,QAAU,CAExC,IAAM3Q,EAAI,EAAIlC,EASd,OARA5P,KAAKuhB,GAAKzP,EAAI6B,EAAI/D,EAAI5P,KAAKuhB,GAC3BvhB,KAAKohB,GAAKtP,EAAIpC,EAAIE,EAAI5P,KAAKohB,GAC3BphB,KAAKqhB,GAAKvP,EAAInC,EAAIC,EAAI5P,KAAKqhB,GAC3BrhB,KAAKshB,GAAKxP,EAAI2M,EAAI7O,EAAI5P,KAAKshB,GAE3BthB,KAAK2U,YACL3U,KAAKwhB,oBAEExhB,KAIR,IAAM2jB,EAAevV,KAAKiG,KAAMqP,GAC1BE,EAAYxV,KAAKmG,MAAOoP,EAAcF,GACtCI,EAASzV,KAAKsE,KAAO,EAAI9C,GAAMgU,GAAcD,EAClDG,EAAS1V,KAAKsE,IAAK9C,EAAIgU,GAAcD,EAStC,OAPA3jB,KAAKuhB,GAAO5N,EAAIkQ,EAAS7jB,KAAKuhB,GAAKuC,EACnC9jB,KAAKohB,GAAO1R,EAAImU,EAAS7jB,KAAKohB,GAAK0C,EACnC9jB,KAAKqhB,GAAO1R,EAAIkU,EAAS7jB,KAAKqhB,GAAKyC,EACnC9jB,KAAKshB,GAAO7C,EAAIoF,EAAS7jB,KAAKshB,GAAKwC,EAEnC9jB,KAAKwhB,oBAEExhB,O,8BAIR,SAAkB+jB,EAAIP,EAAI5T,GAEzB5P,KAAKid,KAAM8G,GAAKnB,MAAOY,EAAI5T,K,oBAI5B,WAMC,IAAMoU,EAAK5V,KAAKW,SACVkV,EAAU7V,KAAKiG,KAAM,EAAI2P,GACzBE,EAAS9V,KAAKiG,KAAM2P,GAEpBG,EAAK,EAAI/V,KAAKC,GAAKD,KAAKW,SAExBqV,EAAK,EAAIhW,KAAKC,GAAKD,KAAKW,SAE9B,OAAO/O,KAAKmT,IACX8Q,EAAU7V,KAAKqE,IAAK0R,GACpBD,EAAS9V,KAAKsE,IAAK0R,GACnBF,EAAS9V,KAAKqE,IAAK2R,GACnBH,EAAU7V,KAAKsE,IAAKyR,M,oBAKtB,SAAQ1C,GAEP,OAASA,EAAWL,KAAOphB,KAAKohB,IAAUK,EAAWJ,KAAOrhB,KAAKqhB,IAAUI,EAAWH,KAAOthB,KAAKshB,IAAUG,EAAWF,KAAOvhB,KAAKuhB,K,uBAIpI,SAAW3T,GAAoB,IAAbmH,EAAa,uDAAJ,EAS1B,OAPA/U,KAAKohB,GAAKxT,EAAOmH,GACjB/U,KAAKqhB,GAAKzT,EAAOmH,EAAS,GAC1B/U,KAAKshB,GAAK1T,EAAOmH,EAAS,GAC1B/U,KAAKuhB,GAAK3T,EAAOmH,EAAS,GAE1B/U,KAAKwhB,oBAEExhB,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAO7B,OALAnH,EAAOmH,GAAW/U,KAAKohB,GACvBxT,EAAOmH,EAAS,GAAM/U,KAAKqhB,GAC3BzT,EAAOmH,EAAS,GAAM/U,KAAKshB,GAC3B1T,EAAOmH,EAAS,GAAM/U,KAAKuhB,GAEpB3T,I,iCAIR,SAAqBoH,EAAWxH,GAO/B,OALAxN,KAAKohB,GAAKpM,EAAUC,KAAMzH,GAC1BxN,KAAKqhB,GAAKrM,EAAUE,KAAM1H,GAC1BxN,KAAKshB,GAAKtM,EAAU4K,KAAMpS,GAC1BxN,KAAKuhB,GAAKvM,EAAU6K,KAAMrS,GAEnBxN,O,uBAIR,SAAWqkB,GAIV,OAFArkB,KAAKwhB,kBAAoB6C,EAElBrkB,O,+BAIR,e,oBA7pBA,SAAc+jB,EAAIP,EAAIc,EAAI1U,GAGzB,OADAwD,QAAQC,KAAM,wGACPiR,EAAGC,iBAAkBR,EAAIP,EAAI5T,K,uBAIrC,SAAkB4U,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAYjV,GAIrE,IAAIkV,EAAKJ,EAAMC,EAAa,GAC3BI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAEnBO,EAAKN,EAAMC,EAAa,GAC7BM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAEzB,GAAW,IAANjV,EAMJ,OAJA4U,EAAKC,EAAY,GAAMK,EACvBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,OACvBR,EAAKC,EAAY,GAAMQ,GAKxB,GAAW,IAANrV,EAMJ,OAJA4U,EAAKC,EAAY,GAAMS,EACvBV,EAAKC,EAAY,GAAMU,EACvBX,EAAKC,EAAY,GAAMW,OACvBZ,EAAKC,EAAY,GAAMY,GAKxB,GAAKJ,IAAOI,GAAMP,IAAOI,GAAMH,IAAOI,GAAMH,IAAOI,EAAK,CAEvD,IAAItT,EAAI,EAAIlC,EACN6C,EAAMqS,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAC9CC,EAAQ7S,GAAO,EAAI,GAAM,EACzB8S,EAAS,EAAI9S,EAAMA,EAGpB,GAAK8S,EAAS/C,OAAOC,QAAU,CAE9B,IAAM/P,EAAMtE,KAAKiG,KAAMkR,GACtBC,EAAMpX,KAAKmG,MAAO7B,EAAKD,EAAM6S,GAE9BxT,EAAI1D,KAAKsE,IAAKZ,EAAI0T,GAAQ9S,EAC1B9C,EAAIxB,KAAKsE,IAAK9C,EAAI4V,GAAQ9S,EAI3B,IAAM+S,EAAO7V,EAAI0V,EAQjB,GANAR,EAAKA,EAAKhT,EAAIoT,EAAKO,EACnBV,EAAKA,EAAKjT,EAAIqT,EAAKM,EACnBT,EAAKA,EAAKlT,EAAIsT,EAAKK,EACnBR,EAAKA,EAAKnT,EAAIuT,EAAKI,EAGd3T,IAAM,EAAIlC,EAAI,CAElB,IAAMkI,EAAI,EAAI1J,KAAKiG,KAAMyQ,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAE5DH,GAAMhN,EACNiN,GAAMjN,EACNkN,GAAMlN,EACNmN,GAAMnN,GAMR0M,EAAKC,GAAcK,EACnBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,EACvBR,EAAKC,EAAY,GAAMQ,I,qCAIxB,SAAgCT,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,GAEvE,IAAMC,EAAKJ,EAAMC,GACXI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAExBO,EAAKN,EAAMC,GACXM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAO9B,OALAL,EAAKC,GAAcK,EAAKO,EAAKJ,EAAKC,EAAKH,EAAKK,EAAKJ,EAAKG,EACtDX,EAAKC,EAAY,GAAMM,EAAKM,EAAKJ,EAAKE,EAAKH,EAAKE,EAAKJ,EAAKM,EAC1DZ,EAAKC,EAAY,GAAMO,EAAKK,EAAKJ,EAAKG,EAAKN,EAAKK,EAAKJ,EAAKG,EAC1DV,EAAKC,EAAY,GAAMQ,EAAKI,EAAKP,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAEnDZ,M,KAyjBTrD,GAAW7L,UAAUoQ,cAAe,E,IAE9BC,G,WAEL,aAAmC,IAAtBjW,EAAsB,uDAAlB,EAAGC,EAAe,uDAAX,EAAG8O,EAAQ,uDAAJ,EAAI,oBAElCze,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EACT3P,KAAKye,EAAIA,E,uCAIV,SAAK/O,EAAGC,EAAG8O,GAQV,YANWpe,IAANoe,IAAkBA,EAAIze,KAAKye,GAEhCze,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EACT3P,KAAKye,EAAIA,EAEFze,O,uBAIR,SAAWuT,GAMV,OAJAvT,KAAK0P,EAAI6D,EACTvT,KAAK2P,EAAI4D,EACTvT,KAAKye,EAAIlL,EAEFvT,O,kBAIR,SAAM0P,GAIL,OAFA1P,KAAK0P,EAAIA,EAEF1P,O,kBAIR,SAAM2P,GAIL,OAFA3P,KAAK2P,EAAIA,EAEF3P,O,kBAIR,SAAMye,GAIL,OAFAze,KAAKye,EAAIA,EAEFze,O,0BAIR,SAAcwN,EAAOhO,GAEpB,OAASgO,GAER,KAAK,EAAGxN,KAAK0P,EAAIlQ,EAAO,MACxB,KAAK,EAAGQ,KAAK2P,EAAInQ,EAAO,MACxB,KAAK,EAAGQ,KAAKye,EAAIjf,EAAO,MACxB,QAAS,MAAM,IAAIgU,MAAO,0BAA4BhG,GAIvD,OAAOxN,O,0BAIR,SAAcwN,GAEb,OAASA,GAER,KAAK,EAAG,OAAOxN,KAAK0P,EACpB,KAAK,EAAG,OAAO1P,KAAK2P,EACpB,KAAK,EAAG,OAAO3P,KAAKye,EACpB,QAAS,MAAM,IAAIjL,MAAO,0BAA4BhG,M,mBAMxD,WAEC,OAAO,IAAIxN,KAAKyT,YAAazT,KAAK0P,EAAG1P,KAAK2P,EAAG3P,KAAKye,K,kBAInD,SAAM/K,GAML,OAJA1T,KAAK0P,EAAIgE,EAAEhE,EACX1P,KAAK2P,EAAI+D,EAAE/D,EACX3P,KAAKye,EAAI/K,EAAE+K,EAEJze,O,iBAIR,SAAK0T,EAAGC,GAEP,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,yFACPrT,KAAK4T,WAAYF,EAAGC,KAI5B3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EAELze,Q,uBAIR,SAAW8R,GAMV,OAJA9R,KAAK0P,GAAKoC,EACV9R,KAAK2P,GAAKmC,EACV9R,KAAKye,GAAK3M,EAEH9R,O,wBAIR,SAAYqS,EAAGC,GAMd,OAJAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EACjB3P,KAAKye,EAAIpM,EAAEoM,EAAInM,EAAEmM,EAEVze,O,6BAIR,SAAiB0T,EAAG5B,GAMnB,OAJA9R,KAAK0P,GAAKgE,EAAEhE,EAAIoC,EAChB9R,KAAK2P,GAAK+D,EAAE/D,EAAImC,EAChB9R,KAAKye,GAAK/K,EAAE+K,EAAI3M,EAET9R,O,iBAIR,SAAK0T,EAAGC,GAEP,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,yFACPrT,KAAK6T,WAAYH,EAAGC,KAI5B3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EAELze,Q,uBAIR,SAAW8R,GAMV,OAJA9R,KAAK0P,GAAKoC,EACV9R,KAAK2P,GAAKmC,EACV9R,KAAKye,GAAK3M,EAEH9R,O,wBAIR,SAAYqS,EAAGC,GAMd,OAJAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EACjB3P,KAAKye,EAAIpM,EAAEoM,EAAInM,EAAEmM,EAEVze,O,sBAIR,SAAU0T,EAAGC,GAEZ,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,mGACPrT,KAAK4lB,gBAAiBlS,EAAGC,KAIjC3T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EAELze,Q,4BAIR,SAAgBuT,GAMf,OAJAvT,KAAK0P,GAAK6D,EACVvT,KAAK2P,GAAK4D,EACVvT,KAAKye,GAAKlL,EAEHvT,O,6BAIR,SAAiBqS,EAAGC,GAMnB,OAJAtS,KAAK0P,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACjB1P,KAAK2P,EAAI0C,EAAE1C,EAAI2C,EAAE3C,EACjB3P,KAAKye,EAAIpM,EAAEoM,EAAInM,EAAEmM,EAEVze,O,wBAIR,SAAY0hB,GAQX,OANSA,GAASA,EAAME,SAEvBxO,QAAQ3T,MAAO,+FAITO,KAAK6lB,gBAAiBC,GAAcC,aAAcrE,M,4BAI1D,SAAgBQ,EAAM5N,GAErB,OAAOtU,KAAK6lB,gBAAiBC,GAAcE,iBAAkB9D,EAAM5N,M,0BAIpE,SAAc9E,GAEb,IAAME,EAAI1P,KAAK0P,EAAGC,EAAI3P,KAAK2P,EAAG8O,EAAIze,KAAKye,EACjC1K,EAAIvE,EAAEwE,SAMZ,OAJAhU,KAAK0P,EAAIqE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAC5Cze,KAAK2P,EAAIoE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAC5Cze,KAAKye,EAAI1K,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAErCze,O,+BAIR,SAAmBwP,GAElB,OAAOxP,KAAKke,aAAc1O,GAAImF,c,0BAI/B,SAAcnF,GAEb,IAAME,EAAI1P,KAAK0P,EAAGC,EAAI3P,KAAK2P,EAAG8O,EAAIze,KAAKye,EACjC1K,EAAIvE,EAAEwE,SAENL,EAAI,GAAMI,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,IAAO0K,EAAI1K,EAAG,KAM3D,OAJA/T,KAAK0P,GAAMqE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAAI1K,EAAG,KAASJ,EAC9D3T,KAAK2P,GAAMoE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAAI1K,EAAG,KAASJ,EAC9D3T,KAAKye,GAAM1K,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,IAAO0K,EAAI1K,EAAG,KAASJ,EAExD3T,O,6BAIR,SAAiBoS,GAEhB,IAAM1C,EAAI1P,KAAK0P,EAAGC,EAAI3P,KAAK2P,EAAG8O,EAAIze,KAAKye,EACjCwH,EAAK7T,EAAE1C,EAAGwW,EAAK9T,EAAEzC,EAAGwW,EAAK/T,EAAEqM,EAAG2H,EAAKhU,EAAEuB,EAIrC0S,EAAKD,EAAK1W,EAAIwW,EAAKzH,EAAI0H,EAAKxW,EAC5B2W,EAAKF,EAAKzW,EAAIwW,EAAKzW,EAAIuW,EAAKxH,EAC5B8H,EAAKH,EAAK3H,EAAIwH,EAAKtW,EAAIuW,EAAKxW,EAC5B8W,GAAOP,EAAKvW,EAAIwW,EAAKvW,EAAIwW,EAAK1H,EAQpC,OAJAze,KAAK0P,EAAI2W,EAAKD,EAAKI,GAAOP,EAAKK,GAAOH,EAAKI,GAAOL,EAClDlmB,KAAK2P,EAAI2W,EAAKF,EAAKI,GAAON,EAAKK,GAAON,EAAKI,GAAOF,EAClDnmB,KAAKye,EAAI8H,EAAKH,EAAKI,GAAOL,EAAKE,GAAOH,EAAKI,GAAOL,EAE3CjmB,O,qBAIR,SAASymB,GAER,OAAOzmB,KAAK0mB,aAAcD,EAAOE,oBAAqBD,aAAcD,EAAOG,oB,uBAI5E,SAAWH,GAEV,OAAOzmB,KAAK0mB,aAAcD,EAAOI,yBAA0BH,aAAcD,EAAOK,e,gCAIjF,SAAoBtX,GAKnB,IAAME,EAAI1P,KAAK0P,EAAGC,EAAI3P,KAAK2P,EAAG8O,EAAIze,KAAKye,EACjC1K,EAAIvE,EAAEwE,SAMZ,OAJAhU,KAAK0P,EAAIqE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAC5Cze,KAAK2P,EAAIoE,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,GAAM0K,EAC5Cze,KAAKye,EAAI1K,EAAG,GAAMrE,EAAIqE,EAAG,GAAMpE,EAAIoE,EAAG,IAAO0K,EAEtCze,KAAK2U,c,oBAIb,SAAQjB,GAMP,OAJA1T,KAAK0P,GAAKgE,EAAEhE,EACZ1P,KAAK2P,GAAK+D,EAAE/D,EACZ3P,KAAKye,GAAK/K,EAAE+K,EAELze,O,0BAIR,SAAcuT,GAEb,OAAOvT,KAAK8T,eAAgB,EAAIP,K,iBAIjC,SAAKG,GAMJ,OAJA1T,KAAK0P,EAAItB,KAAKgB,IAAKpP,KAAK0P,EAAGgE,EAAEhE,GAC7B1P,KAAK2P,EAAIvB,KAAKgB,IAAKpP,KAAK2P,EAAG+D,EAAE/D,GAC7B3P,KAAKye,EAAIrQ,KAAKgB,IAAKpP,KAAKye,EAAG/K,EAAE+K,GAEtBze,O,iBAIR,SAAK0T,GAMJ,OAJA1T,KAAK0P,EAAItB,KAAKiB,IAAKrP,KAAK0P,EAAGgE,EAAEhE,GAC7B1P,KAAK2P,EAAIvB,KAAKiB,IAAKrP,KAAK2P,EAAG+D,EAAE/D,GAC7B3P,KAAKye,EAAIrQ,KAAKiB,IAAKrP,KAAKye,EAAG/K,EAAE+K,GAEtBze,O,mBAIR,SAAOoP,EAAKC,GAQX,OAJArP,KAAK0P,EAAItB,KAAKiB,IAAKD,EAAIM,EAAGtB,KAAKgB,IAAKC,EAAIK,EAAG1P,KAAK0P,IAChD1P,KAAK2P,EAAIvB,KAAKiB,IAAKD,EAAIO,EAAGvB,KAAKgB,IAAKC,EAAIM,EAAG3P,KAAK2P,IAChD3P,KAAKye,EAAIrQ,KAAKiB,IAAKD,EAAIqP,EAAGrQ,KAAKgB,IAAKC,EAAIoP,EAAGze,KAAKye,IAEzCze,O,yBAIR,SAAaiU,EAAQC,GAMpB,OAJAlU,KAAK0P,EAAItB,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK0P,IAClD1P,KAAK2P,EAAIvB,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAK2P,IAClD3P,KAAKye,EAAIrQ,KAAKiB,IAAK4E,EAAQ7F,KAAKgB,IAAK8E,EAAQlU,KAAKye,IAE3Cze,O,yBAIR,SAAaoP,EAAKC,GAEjB,IAAMrB,EAAShO,KAAKgO,SAEpB,OAAOhO,KAAKmU,aAAcnG,GAAU,GAAI8F,eAAgB1F,KAAKiB,IAAKD,EAAKhB,KAAKgB,IAAKC,EAAKrB,O,mBAIvF,WAMC,OAJAhO,KAAK0P,EAAItB,KAAKgC,MAAOpQ,KAAK0P,GAC1B1P,KAAK2P,EAAIvB,KAAKgC,MAAOpQ,KAAK2P,GAC1B3P,KAAKye,EAAIrQ,KAAKgC,MAAOpQ,KAAKye,GAEnBze,O,kBAIR,WAMC,OAJAA,KAAK0P,EAAItB,KAAK4B,KAAMhQ,KAAK0P,GACzB1P,KAAK2P,EAAIvB,KAAK4B,KAAMhQ,KAAK2P,GACzB3P,KAAKye,EAAIrQ,KAAK4B,KAAMhQ,KAAKye,GAElBze,O,mBAIR,WAMC,OAJAA,KAAK0P,EAAItB,KAAKgG,MAAOpU,KAAK0P,GAC1B1P,KAAK2P,EAAIvB,KAAKgG,MAAOpU,KAAK2P,GAC1B3P,KAAKye,EAAIrQ,KAAKgG,MAAOpU,KAAKye,GAEnBze,O,yBAIR,WAMC,OAJAA,KAAK0P,EAAM1P,KAAK0P,EAAI,EAAMtB,KAAK4B,KAAMhQ,KAAK0P,GAAMtB,KAAKgC,MAAOpQ,KAAK0P,GACjE1P,KAAK2P,EAAM3P,KAAK2P,EAAI,EAAMvB,KAAK4B,KAAMhQ,KAAK2P,GAAMvB,KAAKgC,MAAOpQ,KAAK2P,GACjE3P,KAAKye,EAAMze,KAAKye,EAAI,EAAMrQ,KAAK4B,KAAMhQ,KAAKye,GAAMrQ,KAAKgC,MAAOpQ,KAAKye,GAE1Dze,O,oBAIR,WAMC,OAJAA,KAAK0P,GAAM1P,KAAK0P,EAChB1P,KAAK2P,GAAM3P,KAAK2P,EAChB3P,KAAKye,GAAMze,KAAKye,EAETze,O,iBAIR,SAAK0T,GAEJ,OAAO1T,KAAK0P,EAAIgE,EAAEhE,EAAI1P,KAAK2P,EAAI+D,EAAE/D,EAAI3P,KAAKye,EAAI/K,EAAE+K,I,sBAMjD,WAEC,OAAOze,KAAK0P,EAAI1P,KAAK0P,EAAI1P,KAAK2P,EAAI3P,KAAK2P,EAAI3P,KAAKye,EAAIze,KAAKye,I,oBAI1D,WAEC,OAAOrQ,KAAKiG,KAAMrU,KAAK0P,EAAI1P,KAAK0P,EAAI1P,KAAK2P,EAAI3P,KAAK2P,EAAI3P,KAAKye,EAAIze,KAAKye,K,6BAIrE,WAEC,OAAOrQ,KAAKgD,IAAKpR,KAAK0P,GAAMtB,KAAKgD,IAAKpR,KAAK2P,GAAMvB,KAAKgD,IAAKpR,KAAKye,K,uBAIjE,WAEC,OAAOze,KAAKmU,aAAcnU,KAAKgO,UAAY,K,uBAI5C,SAAWA,GAEV,OAAOhO,KAAK2U,YAAYb,eAAgB9F,K,kBAIzC,SAAM0F,EAAGkB,GAMR,OAJA5U,KAAK0P,IAAOgE,EAAEhE,EAAI1P,KAAK0P,GAAMkF,EAC7B5U,KAAK2P,IAAO+D,EAAE/D,EAAI3P,KAAK2P,GAAMiF,EAC7B5U,KAAKye,IAAO/K,EAAE+K,EAAIze,KAAKye,GAAM7J,EAEtB5U,O,yBAIR,SAAa6U,EAAIC,EAAIF,GAMpB,OAJA5U,KAAK0P,EAAImF,EAAGnF,GAAMoF,EAAGpF,EAAImF,EAAGnF,GAAMkF,EAClC5U,KAAK2P,EAAIkF,EAAGlF,GAAMmF,EAAGnF,EAAIkF,EAAGlF,GAAMiF,EAClC5U,KAAKye,EAAI5J,EAAG4J,GAAM3J,EAAG2J,EAAI5J,EAAG4J,GAAM7J,EAE3B5U,O,mBAIR,SAAO0T,EAAGC,GAET,YAAWtT,IAANsT,GAEJP,QAAQC,KAAM,6FACPrT,KAAK+mB,aAAcrT,EAAGC,IAIvB3T,KAAK+mB,aAAc/mB,KAAM0T,K,0BAIjC,SAAcrB,EAAGC,GAEhB,IAAM0U,EAAK3U,EAAE3C,EAAGuX,EAAK5U,EAAE1C,EAAGuX,EAAK7U,EAAEoM,EAC3B0I,EAAK7U,EAAE5C,EAAG0X,EAAK9U,EAAE3C,EAAG0X,EAAK/U,EAAEmM,EAMjC,OAJAze,KAAK0P,EAAIuX,EAAKI,EAAKH,EAAKE,EACxBpnB,KAAK2P,EAAIuX,EAAKC,EAAKH,EAAKK,EACxBrnB,KAAKye,EAAIuI,EAAKI,EAAKH,EAAKE,EAEjBnnB,O,6BAIR,SAAiB0T,GAEhB,IAAM4T,EAAc5T,EAAE6T,WAEtB,GAAqB,IAAhBD,EAAoB,OAAOtnB,KAAKmT,IAAK,EAAG,EAAG,GAEhD,IAAMI,EAASG,EAAE6O,IAAKviB,MAASsnB,EAE/B,OAAOtnB,KAAKid,KAAMvJ,GAAII,eAAgBP,K,4BAIvC,SAAgBiU,GAIf,OAFAC,GAAUxK,KAAMjd,MAAO0nB,gBAAiBF,GAEjCxnB,KAAK2nB,IAAKF,M,qBAIlB,SAASG,GAKR,OAAO5nB,KAAK2nB,IAAKF,GAAUxK,KAAM2K,GAAS9T,eAAgB,EAAI9T,KAAKuiB,IAAKqF,O,qBAIzE,SAASlU,GAER,IAAM4T,EAAclZ,KAAKiG,KAAMrU,KAAKunB,WAAa7T,EAAE6T,YAEnD,GAAqB,IAAhBD,EAAoB,OAAOlZ,KAAKC,GAAK,EAE1C,IAAM8K,EAAQnZ,KAAKuiB,IAAK7O,GAAM4T,EAI9B,OAAOlZ,KAAKsQ,KAAMvP,GAAOgK,GAAS,EAAG,M,wBAItC,SAAYzF,GAEX,OAAOtF,KAAKiG,KAAMrU,KAAKwU,kBAAmBd,M,+BAI3C,SAAmBA,GAElB,IAAMe,EAAKzU,KAAK0P,EAAIgE,EAAEhE,EAAGgF,EAAK1U,KAAK2P,EAAI+D,EAAE/D,EAAGkY,EAAK7nB,KAAKye,EAAI/K,EAAE+K,EAE5D,OAAOhK,EAAKA,EAAKC,EAAKA,EAAKmT,EAAKA,I,iCAIjC,SAAqBnU,GAEpB,OAAOtF,KAAKgD,IAAKpR,KAAK0P,EAAIgE,EAAEhE,GAAMtB,KAAKgD,IAAKpR,KAAK2P,EAAI+D,EAAE/D,GAAMvB,KAAKgD,IAAKpR,KAAKye,EAAI/K,EAAE+K,K,8BAInF,SAAkB3M,GAEjB,OAAO9R,KAAK8nB,uBAAwBhW,EAAEiW,OAAQjW,EAAEkW,IAAKlW,EAAEqH,S,oCAIxD,SAAwB4O,EAAQC,EAAK7O,GAEpC,IAAM8O,EAAe7Z,KAAKsE,IAAKsV,GAAQD,EAMvC,OAJA/nB,KAAK0P,EAAIuY,EAAe7Z,KAAKsE,IAAKyG,GAClCnZ,KAAK2P,EAAIvB,KAAKqE,IAAKuV,GAAQD,EAC3B/nB,KAAKye,EAAIwJ,EAAe7Z,KAAKqE,IAAK0G,GAE3BnZ,O,gCAIR,SAAoBuS,GAEnB,OAAOvS,KAAKkoB,yBAA0B3V,EAAEwV,OAAQxV,EAAE4G,MAAO5G,EAAE5C,K,sCAI5D,SAA0BoY,EAAQ5O,EAAOxJ,GAMxC,OAJA3P,KAAK0P,EAAIqY,EAAS3Z,KAAKsE,IAAKyG,GAC5BnZ,KAAK2P,EAAIA,EACT3P,KAAKye,EAAIsJ,EAAS3Z,KAAKqE,IAAK0G,GAErBnZ,O,mCAIR,SAAuBwP,GAEtB,IAAMuE,EAAIvE,EAAEwE,SAMZ,OAJAhU,KAAK0P,EAAIqE,EAAG,IACZ/T,KAAK2P,EAAIoE,EAAG,IACZ/T,KAAKye,EAAI1K,EAAG,IAEL/T,O,gCAIR,SAAoBwP,GAEnB,IAAMsJ,EAAK9Y,KAAKmoB,oBAAqB3Y,EAAG,GAAIxB,SACtC+K,EAAK/Y,KAAKmoB,oBAAqB3Y,EAAG,GAAIxB,SACtCoa,EAAKpoB,KAAKmoB,oBAAqB3Y,EAAG,GAAIxB,SAM5C,OAJAhO,KAAK0P,EAAIoJ,EACT9Y,KAAK2P,EAAIoJ,EACT/Y,KAAKye,EAAI2J,EAEFpoB,O,iCAIR,SAAqBwP,EAAGhC,GAEvB,OAAOxN,KAAKqZ,UAAW7J,EAAEwE,SAAkB,EAARxG,K,kCAIpC,SAAsBgC,EAAGhC,GAExB,OAAOxN,KAAKqZ,UAAW7J,EAAEwE,SAAkB,EAARxG,K,oBAIpC,SAAQkG,GAEP,OAAWA,EAAEhE,IAAM1P,KAAK0P,GAASgE,EAAE/D,IAAM3P,KAAK2P,GAAS+D,EAAE+K,IAAMze,KAAKye,I,uBAIrE,SAAW7Q,GAAoB,IAAbmH,EAAa,uDAAJ,EAM1B,OAJA/U,KAAK0P,EAAI9B,EAAOmH,GAChB/U,KAAK2P,EAAI/B,EAAOmH,EAAS,GACzB/U,KAAKye,EAAI7Q,EAAOmH,EAAS,GAElB/U,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAM7B,OAJAnH,EAAOmH,GAAW/U,KAAK0P,EACvB9B,EAAOmH,EAAS,GAAM/U,KAAK2P,EAC3B/B,EAAOmH,EAAS,GAAM/U,KAAKye,EAEpB7Q,I,iCAIR,SAAqBoH,EAAWxH,EAAOuH,GAYtC,YAVgB1U,IAAX0U,GAEJ3B,QAAQC,KAAM,uEAIfrT,KAAK0P,EAAIsF,EAAUC,KAAMzH,GACzBxN,KAAK2P,EAAIqF,EAAUE,KAAM1H,GACzBxN,KAAKye,EAAIzJ,EAAU4K,KAAMpS,GAElBxN,O,oBAIR,WAMC,OAJAA,KAAK0P,EAAItB,KAAKW,SACd/O,KAAK2P,EAAIvB,KAAKW,SACd/O,KAAKye,EAAIrQ,KAAKW,SAEP/O,O,6BAIR,WAIC,IAAMqoB,EAA8B,GAAxBja,KAAKW,SAAW,IACtBa,EAAIxB,KAAKW,SAAWX,KAAKC,GAAK,EAC9ByJ,EAAI1J,KAAKiG,KAAM,EAAI,KAAJ,IAAIgU,EAAK,IAM9B,OAJAroB,KAAK0P,EAAIoI,EAAI1J,KAAKqE,IAAK7C,GACvB5P,KAAK2P,EAAImI,EAAI1J,KAAKsE,IAAK9C,GACvB5P,KAAKye,EAAI4J,EAEFroB,O,KAILoV,OAAOC,S,gBAAV,8EAEC,OAFD,SAEOrV,KAAK0P,EAFZ,OAGC,OAHD,SAGO1P,KAAK2P,EAHZ,OAIC,OAJD,SAIO3P,KAAKye,EAJZ,kD,KAUDkH,GAAQrQ,UAAUgT,WAAY,EAE9B,IAAMb,GAA0B,IAAI9B,GAC9BG,GAA8B,IAAI3E,GAElCoH,G,WAEL,aAAgI,IAAnHnZ,EAAmH,uDAA7G,IAAIuW,GAAWpM,IAAYA,IAAYA,KAAYlK,EAA0D,uDAApD,IAAIsW,IAAWpM,KAAYA,KAAYA,KAAa,oBAE/HvZ,KAAKoP,IAAMA,EACXpP,KAAKqP,IAAMA,E,uCAIZ,SAAKD,EAAKC,GAKT,OAHArP,KAAKoP,IAAI6N,KAAM7N,GACfpP,KAAKqP,IAAI4N,KAAM5N,GAERrP,O,0BAIR,SAAc4N,GAUb,IARA,IAAI4a,EAASjP,IACTkP,EAASlP,IACTmP,EAASnP,IAEToP,GAASpP,IACTqP,GAASrP,IACTsP,GAAStP,IAEHzL,EAAI,EAAGC,EAAIH,EAAMI,OAAQF,EAAIC,EAAGD,GAAK,EAAI,CAElD,IAAM4B,EAAI9B,EAAOE,GACX6B,EAAI/B,EAAOE,EAAI,GACf2Q,EAAI7Q,EAAOE,EAAI,GAEhB4B,EAAI8Y,IAAOA,EAAO9Y,GAClBC,EAAI8Y,IAAOA,EAAO9Y,GAClB8O,EAAIiK,IAAOA,EAAOjK,GAElB/O,EAAIiZ,IAAOA,EAAOjZ,GAClBC,EAAIiZ,IAAOA,EAAOjZ,GAClB8O,EAAIoK,IAAOA,EAAOpK,GAOxB,OAHAze,KAAKoP,IAAI+D,IAAKqV,EAAMC,EAAMC,GAC1B1oB,KAAKqP,IAAI8D,IAAKwV,EAAMC,EAAMC,GAEnB7oB,O,oCAIR,SAAwBgV,GAUvB,IARA,IAAIwT,EAASjP,IACTkP,EAASlP,IACTmP,EAASnP,IAEToP,GAASpP,IACTqP,GAASrP,IACTsP,GAAStP,IAEHzL,EAAI,EAAGC,EAAIiH,EAAU6L,MAAO/S,EAAIC,EAAGD,IAAO,CAEnD,IAAM4B,EAAIsF,EAAUC,KAAMnH,GACpB6B,EAAIqF,EAAUE,KAAMpH,GACpB2Q,EAAIzJ,EAAU4K,KAAM9R,GAErB4B,EAAI8Y,IAAOA,EAAO9Y,GAClBC,EAAI8Y,IAAOA,EAAO9Y,GAClB8O,EAAIiK,IAAOA,EAAOjK,GAElB/O,EAAIiZ,IAAOA,EAAOjZ,GAClBC,EAAIiZ,IAAOA,EAAOjZ,GAClB8O,EAAIoK,IAAOA,EAAOpK,GAOxB,OAHAze,KAAKoP,IAAI+D,IAAKqV,EAAMC,EAAMC,GAC1B1oB,KAAKqP,IAAI8D,IAAKwV,EAAMC,EAAMC,GAEnB7oB,O,2BAIR,SAAe8oB,GAEd9oB,KAAK+oB,YAEL,IAAM,IAAIjb,EAAI,EAAGgT,EAAKgI,EAAO9a,OAAQF,EAAIgT,EAAIhT,IAE5C9N,KAAKgpB,cAAeF,EAAQhb,IAI7B,OAAO9N,O,kCAIR,SAAsBmV,EAAQ8T,GAE7B,IAAMC,EAAWC,GAAUlM,KAAMgM,GAAOnV,eAAgB,IAKxD,OAHA9T,KAAKoP,IAAI6N,KAAM9H,GAASwS,IAAKuB,GAC7BlpB,KAAKqP,IAAI4N,KAAM9H,GAASiU,IAAKF,GAEtBlpB,O,2BAIR,SAAeqpB,GAId,OAFArpB,KAAK+oB,YAEE/oB,KAAKspB,eAAgBD,K,mBAI7B,WAEC,OAAO,IAAIrpB,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMupB,GAKL,OAHAvpB,KAAKoP,IAAI6N,KAAMsM,EAAIna,KACnBpP,KAAKqP,IAAI4N,KAAMsM,EAAIla,KAEZrP,O,uBAIR,WAKC,OAHAA,KAAKoP,IAAIM,EAAI1P,KAAKoP,IAAIO,EAAI3P,KAAKoP,IAAIqP,EAAMlF,IACzCvZ,KAAKqP,IAAIK,EAAI1P,KAAKqP,IAAIM,EAAI3P,KAAKqP,IAAIoP,GAAMlF,IAElCvZ,O,qBAIR,WAIC,OAASA,KAAKqP,IAAIK,EAAI1P,KAAKoP,IAAIM,GAAS1P,KAAKqP,IAAIM,EAAI3P,KAAKoP,IAAIO,GAAS3P,KAAKqP,IAAIoP,EAAIze,KAAKoP,IAAIqP,I,uBAI9F,SAAW9Q,GAEV,OAAO3N,KAAKwpB,UAAY7b,EAAOwF,IAAK,EAAG,EAAG,GAAMxF,EAAOiG,WAAY5T,KAAKoP,IAAKpP,KAAKqP,KAAMyE,eAAgB,M,qBAIzG,SAASnG,GAER,OAAO3N,KAAKwpB,UAAY7b,EAAOwF,IAAK,EAAG,EAAG,GAAMxF,EAAOkG,WAAY7T,KAAKqP,IAAKrP,KAAKoP,O,2BAInF,SAAeqa,GAKd,OAHAzpB,KAAKoP,IAAIA,IAAKqa,GACdzpB,KAAKqP,IAAIA,IAAKoa,GAEPzpB,O,4BAIR,SAAgB0pB,GAKf,OAHA1pB,KAAKoP,IAAIuY,IAAK+B,GACd1pB,KAAKqP,IAAI+Z,IAAKM,GAEP1pB,O,4BAIR,SAAgBuT,GAKf,OAHAvT,KAAKoP,IAAIua,WAAapW,GACtBvT,KAAKqP,IAAIsa,UAAWpW,GAEbvT,O,4BAIR,SAAgBqpB,GAKfA,EAAOO,mBAAmB,GAAO,GAEjC,IAAMC,EAAWR,EAAOQ,cAENxpB,IAAbwpB,IAE0B,OAAzBA,EAASC,aAEbD,EAASE,qBAIVC,GAAO/M,KAAM4M,EAASC,aACtBE,GAAOtD,aAAc2C,EAAOvC,aAE5B9mB,KAAKiqB,MAAOD,KAMb,IAFA,IAAME,EAAWb,EAAOa,SAEdpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5C9N,KAAKspB,eAAgBY,EAAUpc,IAIhC,OAAO9N,O,2BAIR,SAAeypB,GAEd,QAAOA,EAAM/Z,EAAI1P,KAAKoP,IAAIM,GAAK+Z,EAAM/Z,EAAI1P,KAAKqP,IAAIK,GACjD+Z,EAAM9Z,EAAI3P,KAAKoP,IAAIO,GAAK8Z,EAAM9Z,EAAI3P,KAAKqP,IAAIM,GAC3C8Z,EAAMhL,EAAIze,KAAKoP,IAAIqP,GAAKgL,EAAMhL,EAAIze,KAAKqP,IAAIoP,K,yBAI7C,SAAa8K,GAEZ,OAAOvpB,KAAKoP,IAAIM,GAAK6Z,EAAIna,IAAIM,GAAK6Z,EAAIla,IAAIK,GAAK1P,KAAKqP,IAAIK,GACvD1P,KAAKoP,IAAIO,GAAK4Z,EAAIna,IAAIO,GAAK4Z,EAAIla,IAAIM,GAAK3P,KAAKqP,IAAIM,GACjD3P,KAAKoP,IAAIqP,GAAK8K,EAAIna,IAAIqP,GAAK8K,EAAIla,IAAIoP,GAAKze,KAAKqP,IAAIoP,I,0BAInD,SAAcgL,EAAO9b,GAKpB,OAAOA,EAAOwF,KACXsW,EAAM/Z,EAAI1P,KAAKoP,IAAIM,IAAQ1P,KAAKqP,IAAIK,EAAI1P,KAAKoP,IAAIM,IACjD+Z,EAAM9Z,EAAI3P,KAAKoP,IAAIO,IAAQ3P,KAAKqP,IAAIM,EAAI3P,KAAKoP,IAAIO,IACjD8Z,EAAMhL,EAAIze,KAAKoP,IAAIqP,IAAQze,KAAKqP,IAAIoP,EAAIze,KAAKoP,IAAIqP,M,2BAKrD,SAAe8K,GAGd,QAAOA,EAAIla,IAAIK,EAAI1P,KAAKoP,IAAIM,GAAK6Z,EAAIna,IAAIM,EAAI1P,KAAKqP,IAAIK,GACrD6Z,EAAIla,IAAIM,EAAI3P,KAAKoP,IAAIO,GAAK4Z,EAAIna,IAAIO,EAAI3P,KAAKqP,IAAIM,GAC/C4Z,EAAIla,IAAIoP,EAAIze,KAAKoP,IAAIqP,GAAK8K,EAAIna,IAAIqP,EAAIze,KAAKqP,IAAIoP,K,8BAIjD,SAAkB0L,GAMjB,OAHAnqB,KAAKoqB,WAAYD,EAAOhV,OAAQgU,IAGzBA,GAAU3U,kBAAmB2V,EAAOhV,SAAcgV,EAAOpC,OAASoC,EAAOpC,S,6BAIjF,SAAiBsC,GAKhB,IAAIjb,EAAKC,EAsCT,OApCKgb,EAAMzC,OAAOlY,EAAI,GAErBN,EAAMib,EAAMzC,OAAOlY,EAAI1P,KAAKoP,IAAIM,EAChCL,EAAMgb,EAAMzC,OAAOlY,EAAI1P,KAAKqP,IAAIK,IAIhCN,EAAMib,EAAMzC,OAAOlY,EAAI1P,KAAKqP,IAAIK,EAChCL,EAAMgb,EAAMzC,OAAOlY,EAAI1P,KAAKoP,IAAIM,GAI5B2a,EAAMzC,OAAOjY,EAAI,GAErBP,GAAOib,EAAMzC,OAAOjY,EAAI3P,KAAKoP,IAAIO,EACjCN,GAAOgb,EAAMzC,OAAOjY,EAAI3P,KAAKqP,IAAIM,IAIjCP,GAAOib,EAAMzC,OAAOjY,EAAI3P,KAAKqP,IAAIM,EACjCN,GAAOgb,EAAMzC,OAAOjY,EAAI3P,KAAKoP,IAAIO,GAI7B0a,EAAMzC,OAAOnJ,EAAI,GAErBrP,GAAOib,EAAMzC,OAAOnJ,EAAIze,KAAKoP,IAAIqP,EACjCpP,GAAOgb,EAAMzC,OAAOnJ,EAAIze,KAAKqP,IAAIoP,IAIjCrP,GAAOib,EAAMzC,OAAOnJ,EAAIze,KAAKqP,IAAIoP,EACjCpP,GAAOgb,EAAMzC,OAAOnJ,EAAIze,KAAKoP,IAAIqP,GAIzBrP,IAASib,EAAMC,UAAYjb,IAASgb,EAAMC,W,gCAIpD,SAAoBC,GAEnB,GAAKvqB,KAAKwpB,UAET,OAAO,EAKRxpB,KAAKwqB,UAAWC,IAChBC,GAAS7W,WAAY7T,KAAKqP,IAAKob,IAG/BE,GAAM9W,WAAY0W,EAASlY,EAAGoY,IAC9BG,GAAM/W,WAAY0W,EAASjY,EAAGmY,IAC9BI,GAAMhX,WAAY0W,EAAShY,EAAGkY,IAG9BK,GAAIjX,WAAY+W,GAAOD,IACvBI,GAAIlX,WAAYgX,GAAOD,IACvBI,GAAInX,WAAY8W,GAAOE,IAKvB,IAAII,EAAO,CACV,GAAKH,GAAIrM,EAAGqM,GAAInb,EAAG,GAAKob,GAAItM,EAAGsM,GAAIpb,EAAG,GAAKqb,GAAIvM,EAAGuM,GAAIrb,EACtDmb,GAAIrM,EAAG,GAAKqM,GAAIpb,EAAGqb,GAAItM,EAAG,GAAKsM,GAAIrb,EAAGsb,GAAIvM,EAAG,GAAKuM,GAAItb,GACpDob,GAAInb,EAAGmb,GAAIpb,EAAG,GAAKqb,GAAIpb,EAAGob,GAAIrb,EAAG,GAAKsb,GAAIrb,EAAGqb,GAAItb,EAAG,GAEvD,QAAOwb,GAAYD,EAAMN,GAAOC,GAAOC,GAAOH,QAQvCQ,GADPD,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACRN,GAAOC,GAAOC,GAAOH,MAQ9CS,GAAgBpE,aAAc+D,GAAKC,IAG5BG,GAFPD,EAAO,CAAEE,GAAgBzb,EAAGyb,GAAgBxb,EAAGwb,GAAgB1M,GAEtCkM,GAAOC,GAAOC,GAAOH,Q,wBAI/C,SAAYjB,EAAO9b,GAElB,OAAOA,EAAOsP,KAAMwM,GAAQta,MAAOnP,KAAKoP,IAAKpP,KAAKqP,O,6BAInD,SAAiBoa,GAIhB,OAFqBN,GAAUlM,KAAMwM,GAAQta,MAAOnP,KAAKoP,IAAKpP,KAAKqP,KAE/CsY,IAAK8B,GAAQzb,W,+BAIlC,SAAmBL,GAMlB,OAJA3N,KAAKwqB,UAAW7c,EAAOwH,QAEvBxH,EAAOoa,OAA8C,GAArC/nB,KAAKorB,QAASjC,IAAYnb,SAEnCL,I,uBAIR,SAAW4b,GAQV,OANAvpB,KAAKoP,IAAIC,IAAKka,EAAIna,KAClBpP,KAAKqP,IAAID,IAAKma,EAAIla,KAGbrP,KAAKwpB,WAAYxpB,KAAK+oB,YAEpB/oB,O,mBAIR,SAAOupB,GAKN,OAHAvpB,KAAKoP,IAAIA,IAAKma,EAAIna,KAClBpP,KAAKqP,IAAIA,IAAKka,EAAIla,KAEXrP,O,0BAIR,SAAcoZ,GAGb,OAAKpZ,KAAKwpB,YAGV6B,GAAS,GAAIlY,IAAKnT,KAAKoP,IAAIM,EAAG1P,KAAKoP,IAAIO,EAAG3P,KAAKoP,IAAIqP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKoP,IAAIM,EAAG1P,KAAKoP,IAAIO,EAAG3P,KAAKqP,IAAIoP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKoP,IAAIM,EAAG1P,KAAKqP,IAAIM,EAAG3P,KAAKoP,IAAIqP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKoP,IAAIM,EAAG1P,KAAKqP,IAAIM,EAAG3P,KAAKqP,IAAIoP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKqP,IAAIK,EAAG1P,KAAKoP,IAAIO,EAAG3P,KAAKoP,IAAIqP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKqP,IAAIK,EAAG1P,KAAKoP,IAAIO,EAAG3P,KAAKqP,IAAIoP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKqP,IAAIK,EAAG1P,KAAKqP,IAAIM,EAAG3P,KAAKoP,IAAIqP,GAAIiI,aAActN,GACrEiS,GAAS,GAAIlY,IAAKnT,KAAKqP,IAAIK,EAAG1P,KAAKqP,IAAIM,EAAG3P,KAAKqP,IAAIoP,GAAIiI,aAActN,GAErEpZ,KAAKsrB,cAAeD,KAZSrrB,O,uBAkB9B,SAAW+U,GAKV,OAHA/U,KAAKoP,IAAIga,IAAKrU,GACd/U,KAAKqP,IAAI+Z,IAAKrU,GAEP/U,O,oBAIR,SAAQupB,GAEP,OAAOA,EAAIna,IAAImc,OAAQvrB,KAAKoP,MAASma,EAAIla,IAAIkc,OAAQvrB,KAAKqP,S,KAM5DkZ,GAAKjT,UAAUkW,QAAS,EAExB,IAAMH,GAAU,CACD,IAAI1F,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,IAGbwD,GAA0B,IAAIxD,GAE9BqE,GAAuB,IAAIzB,GAI3BoC,GAAsB,IAAIhF,GAC1BiF,GAAsB,IAAIjF,GAC1BkF,GAAsB,IAAIlF,GAI1BmF,GAAoB,IAAInF,GACxBoF,GAAoB,IAAIpF,GACxBqF,GAAoB,IAAIrF,GAExB8E,GAAwB,IAAI9E,GAC5B+E,GAAyB,IAAI/E,GAC7BwF,GAAgC,IAAIxF,GACpC8F,GAA0B,IAAI9F,GAEpC,SAASuF,GAAYD,EAAMS,EAAI7W,EAAIC,EAAI6W,GAEtC,IAAM,IAAI7d,EAAI,EAAG8d,EAAIX,EAAKjd,OAAS,EAAGF,GAAK8d,EAAG9d,GAAK,EAAI,CAEtD2d,GAAUpS,UAAW4R,EAAMnd,GAE3B,IAAM6K,EAAIgT,EAAQjc,EAAItB,KAAKgD,IAAKqa,GAAU/b,GAAMic,EAAQhc,EAAIvB,KAAKgD,IAAKqa,GAAU9b,GAAMgc,EAAQlN,EAAIrQ,KAAKgD,IAAKqa,GAAUhN,GAEhHoN,EAAKH,EAAGnJ,IAAKkJ,IACbK,EAAKjX,EAAG0N,IAAKkJ,IACbM,EAAKjX,EAAGyN,IAAKkJ,IAEnB,GAAKrd,KAAKiB,KAAOjB,KAAKiB,IAAKwc,EAAIC,EAAIC,GAAM3d,KAAKgB,IAAKyc,EAAIC,EAAIC,IAASpT,EAInE,OAAO,EAMT,OAAO,EAIR,IAAMqT,GAAuB,IAAIzD,GAC3B0D,GAAsB,IAAItG,GAC1BuG,GAAiC,IAAIvG,GACrCwG,GAAyB,IAAIxG,GAE7ByG,G,WAEL,aAAoD,IAAvCjX,EAAuC,uDAA9B,IAAIwQ,GAAWoC,EAAe,wDAAJ,EAAI,oBAEnD/nB,KAAKmV,OAASA,EACdnV,KAAK+nB,OAASA,E,uCAIf,SAAK5S,EAAQ4S,GAKZ,OAHA/nB,KAAKmV,OAAO8H,KAAM9H,GAClBnV,KAAK+nB,OAASA,EAEP/nB,O,2BAIR,SAAe8oB,EAAQuD,GAEtB,IAAMlX,EAASnV,KAAKmV,YAEI9U,IAAnBgsB,EAEJlX,EAAO8H,KAAMoP,GAIbL,GAAOV,cAAexC,GAAS0B,UAAWrV,GAM3C,IAFA,IAAImX,EAAc,EAERxe,EAAI,EAAGgT,EAAKgI,EAAO9a,OAAQF,EAAIgT,EAAIhT,IAE5Cwe,EAAcle,KAAKiB,IAAKid,EAAanX,EAAOX,kBAAmBsU,EAAQhb,KAMxE,OAFA9N,KAAK+nB,OAAS3Z,KAAKiG,KAAMiY,GAElBtsB,O,kBAIR,SAAMmqB,GAKL,OAHAnqB,KAAKmV,OAAO8H,KAAMkN,EAAOhV,QACzBnV,KAAK+nB,OAASoC,EAAOpC,OAEd/nB,O,qBAIR,WAEC,OAASA,KAAK+nB,OAAS,I,uBAIxB,WAKC,OAHA/nB,KAAKmV,OAAOhC,IAAK,EAAG,EAAG,GACvBnT,KAAK+nB,QAAW,EAET/nB,O,2BAIR,SAAeypB,GAEd,OAASA,EAAMjV,kBAAmBxU,KAAKmV,SAAcnV,KAAK+nB,OAAS/nB,KAAK+nB,S,6BAIzE,SAAiB0B,GAEhB,OAASA,EAAM8C,WAAYvsB,KAAKmV,QAAWnV,KAAK+nB,S,8BAIjD,SAAkBoC,GAEjB,IAAMqC,EAAYxsB,KAAK+nB,OAASoC,EAAOpC,OAEvC,OAAOoC,EAAOhV,OAAOX,kBAAmBxU,KAAKmV,SAAcqX,EAAYA,I,2BAIxE,SAAejD,GAEd,OAAOA,EAAIkD,iBAAkBzsB,Q,6BAI9B,SAAiBqqB,GAEhB,OAAOjc,KAAKgD,IAAKiZ,EAAMqC,gBAAiB1sB,KAAKmV,UAAcnV,KAAK+nB,S,wBAIjE,SAAY0B,EAAO9b,GAElB,IAAMgf,EAAgB3sB,KAAKmV,OAAOX,kBAAmBiV,GAWrD,OATA9b,EAAOsP,KAAMwM,GAERkD,EAAkB3sB,KAAK+nB,OAAS/nB,KAAK+nB,SAEzCpa,EAAOga,IAAK3nB,KAAKmV,QAASR,YAC1BhH,EAAOmG,eAAgB9T,KAAK+nB,QAASqB,IAAKppB,KAAKmV,SAIzCxH,I,4BAIR,SAAgBA,GAEf,OAAK3N,KAAKwpB,WAGT7b,EAAOob,YACApb,IAIRA,EAAOwF,IAAKnT,KAAKmV,OAAQnV,KAAKmV,QAC9BxH,EAAOif,eAAgB5sB,KAAK+nB,QAErBpa,K,0BAIR,SAAcyL,GAKb,OAHApZ,KAAKmV,OAAOuR,aAActN,GAC1BpZ,KAAK+nB,OAAS/nB,KAAK+nB,OAAS3O,EAAOyT,oBAE5B7sB,O,uBAIR,SAAW+U,GAIV,OAFA/U,KAAKmV,OAAOiU,IAAKrU,GAEV/U,O,2BAIR,SAAeypB,GAId0C,GAAStY,WAAY4V,EAAOzpB,KAAKmV,QAEjC,IAAMoS,EAAW4E,GAAS5E,WAE1B,GAAKA,EAAavnB,KAAK+nB,OAAS/nB,KAAK+nB,OAAW,CAE/C,IAAM/Z,EAASI,KAAKiG,KAAMkT,GACpBuF,EAA+C,IAAzB9e,EAAShO,KAAK+nB,QAM1C/nB,KAAKmV,OAAOiU,IAAK+C,GAASrY,eAAgBgZ,EAAoB9e,IAC9DhO,KAAK+nB,QAAU+E,EAIhB,OAAO9sB,O,mBAIR,SAAOmqB,GAaN,OALA+B,GAAiBrY,WAAYsW,EAAOhV,OAAQnV,KAAKmV,QAASR,YAAYb,eAAgBqW,EAAOpC,QAE7F/nB,KAAKgpB,cAAeiD,GAAMhP,KAAMkN,EAAOhV,QAASiU,IAAK8C,KACrDlsB,KAAKgpB,cAAeiD,GAAMhP,KAAMkN,EAAOhV,QAASwS,IAAKuE,KAE9ClsB,O,oBAIR,SAAQmqB,GAEP,OAAOA,EAAOhV,OAAOoW,OAAQvrB,KAAKmV,SAAcgV,EAAOpC,SAAW/nB,KAAK+nB,S,mBAIxE,WAEC,OAAO,IAAI/nB,KAAKyT,aAAcwJ,KAAMjd,U,KAMhC+sB,GAA0B,IAAIpH,GAC9BqH,GAA2B,IAAIrH,GAC/BsH,GAAwB,IAAItH,GAC5BuH,GAAsB,IAAIvH,GAE1BwH,GAAuB,IAAIxH,GAC3ByH,GAAuB,IAAIzH,GAC3B0H,GAA0B,IAAI1H,GAE9B2H,G,WAEL,aAA4E,IAA/DC,EAA+D,uDAAtD,IAAI5H,GAAW6H,EAAuC,uDAA3B,IAAI7H,GAAS,EAAG,GAAK,GAAM,oBAE3E3lB,KAAKutB,OAASA,EACdvtB,KAAKwtB,UAAYA,E,uCAIlB,SAAKD,EAAQC,GAKZ,OAHAxtB,KAAKutB,OAAOtQ,KAAMsQ,GAClBvtB,KAAKwtB,UAAUvQ,KAAMuQ,GAEdxtB,O,kBAIR,SAAMytB,GAKL,OAHAztB,KAAKutB,OAAOtQ,KAAMwQ,EAAIF,QACtBvtB,KAAKwtB,UAAUvQ,KAAMwQ,EAAID,WAElBxtB,O,gBAIR,SAAI4P,EAAGjC,GAEN,OAAOA,EAAOsP,KAAMjd,KAAKwtB,WAAY1Z,eAAgBlE,GAAIwZ,IAAKppB,KAAKutB,U,oBAIpE,SAAQ7Z,GAIP,OAFA1T,KAAKwtB,UAAUvQ,KAAMvJ,GAAIiU,IAAK3nB,KAAKutB,QAAS5Y,YAErC3U,O,oBAIR,SAAQ4P,GAIP,OAFA5P,KAAKutB,OAAOtQ,KAAMjd,KAAK0tB,GAAI9d,EAAGmd,KAEvB/sB,O,iCAIR,SAAqBypB,EAAO9b,GAE3BA,EAAOkG,WAAY4V,EAAOzpB,KAAKutB,QAE/B,IAAMI,EAAoBhgB,EAAO4U,IAAKviB,KAAKwtB,WAE3C,OAAKG,EAAoB,EAEjBhgB,EAAOsP,KAAMjd,KAAKutB,QAInB5f,EAAOsP,KAAMjd,KAAKwtB,WAAY1Z,eAAgB6Z,GAAoBvE,IAAKppB,KAAKutB,U,6BAIpF,SAAiB9D,GAEhB,OAAOrb,KAAKiG,KAAMrU,KAAK4tB,kBAAmBnE,M,+BAI3C,SAAmBA,GAElB,IAAMkE,EAAoBZ,GAAUlZ,WAAY4V,EAAOzpB,KAAKutB,QAAShL,IAAKviB,KAAKwtB,WAI/E,OAAKG,EAAoB,EAEjB3tB,KAAKutB,OAAO/Y,kBAAmBiV,IAIvCsD,GAAU9P,KAAMjd,KAAKwtB,WAAY1Z,eAAgB6Z,GAAoBvE,IAAKppB,KAAKutB,QAExER,GAAUvY,kBAAmBiV,M,iCAIrC,SAAqBiC,EAAI7W,EAAIgZ,EAAoBC,GAShDd,GAAW/P,KAAMyO,GAAKtC,IAAKvU,GAAKf,eAAgB,IAChDmZ,GAAQhQ,KAAMpI,GAAK8S,IAAK+D,GAAK/W,YAC7BuY,GAAMjQ,KAAMjd,KAAKutB,QAAS5F,IAAKqF,IAE/B,IAMIe,EAAI/L,EAAIgM,EAASC,EANfC,EAAkC,GAAtBxC,EAAGa,WAAY1X,GAC3BsZ,GAAQnuB,KAAKwtB,UAAUjL,IAAK0K,IAC5BmB,EAAKlB,GAAM3K,IAAKviB,KAAKwtB,WACrB5c,GAAOsc,GAAM3K,IAAK0K,IAClB1a,EAAI2a,GAAM3F,WACVnP,EAAMhK,KAAKgD,IAAK,EAAI+c,EAAMA,GAGhC,GAAK/V,EAAM,EAQV,GAHA4J,EAAKmM,EAAMC,EAAKxd,EAChBqd,EAASC,EAAY9V,GAFrB2V,EAAKI,EAAMvd,EAAKwd,IAIL,EAEV,GAAKpM,IAAQiM,EAEZ,GAAKjM,GAAMiM,EAAS,CAKnB,IAAMI,EAAS,EAAIjW,EAGnB4V,GAFAD,GAAMM,IAEWN,EAAKI,GADtBnM,GAAMqM,GAC2B,EAAID,GAAOpM,GAAOmM,EAAMJ,EAAK/L,EAAK,EAAIpR,GAAO2B,OAM9EyP,EAAKkM,EAELF,IADAD,EAAK3f,KAAKiB,IAAK,IAAO8e,EAAMnM,EAAKoM,KAChBL,EAAK/L,GAAOA,EAAK,EAAIpR,GAAO2B,OAQ9CyP,GAAOkM,EAEPF,IADAD,EAAK3f,KAAKiB,IAAK,IAAO8e,EAAMnM,EAAKoM,KAChBL,EAAK/L,GAAOA,EAAK,EAAIpR,GAAO2B,OAMzCyP,IAAQiM,EAMZD,IAFAD,EAAK3f,KAAKiB,IAAK,KAAS8e,EAAMD,EAAYE,KAEzBL,GADjB/L,EAAO+L,EAAK,GAAQG,EAAY9f,KAAKgB,IAAKhB,KAAKiB,KAAO6e,GAAatd,GAAMsd,KAC5ClM,EAAK,EAAIpR,GAAO2B,EAElCyP,GAAMiM,GAIjBF,EAAK,EAELC,GADAhM,EAAK5T,KAAKgB,IAAKhB,KAAKiB,KAAO6e,GAAatd,GAAMsd,KAC7BlM,EAAK,EAAIpR,GAAO2B,GAQjCyb,IAFAD,EAAK3f,KAAKiB,IAAK,IAAO8e,EAAMD,EAAYE,KAEvBL,GADjB/L,EAAO+L,EAAK,EAAMG,EAAY9f,KAAKgB,IAAKhB,KAAKiB,KAAO6e,GAAatd,GAAMsd,KAC1ClM,EAAK,EAAIpR,GAAO2B,OAU/CyP,EAAOmM,EAAM,GAAQD,EAAYA,EAEjCF,IADAD,EAAK3f,KAAKiB,IAAK,IAAO8e,EAAMnM,EAAKoM,KAChBL,EAAK/L,GAAOA,EAAK,EAAIpR,GAAO2B,EAgB9C,OAZKsb,GAEJA,EAAmB5Q,KAAMjd,KAAKwtB,WAAY1Z,eAAgBia,GAAK3E,IAAKppB,KAAKutB,QAIrEO,GAEJA,EAAuB7Q,KAAMgQ,IAAUnZ,eAAgBkO,GAAKoH,IAAK4D,IAI3DgB,I,6BAIR,SAAiB7D,EAAQxc,GAExBof,GAAUlZ,WAAYsW,EAAOhV,OAAQnV,KAAKutB,QAC1C,IAAMe,EAAMvB,GAAUxK,IAAKviB,KAAKwtB,WAC1Bve,EAAK8d,GAAUxK,IAAKwK,IAAcuB,EAAMA,EACxCC,EAAUpE,EAAOpC,OAASoC,EAAOpC,OAEvC,GAAK9Y,EAAKsf,EAAU,OAAO,KAE3B,IAAMC,EAAMpgB,KAAKiG,KAAMka,EAAUtf,GAG3Bwf,EAAKH,EAAME,EAGXE,EAAKJ,EAAME,EAGjB,OAAKC,EAAK,GAAKC,EAAK,EAAW,KAK1BD,EAAK,EAAWzuB,KAAK0tB,GAAIgB,EAAI/gB,GAG3B3N,KAAK0tB,GAAIe,EAAI9gB,K,8BAIrB,SAAkBwc,GAEjB,OAAOnqB,KAAK4tB,kBAAmBzD,EAAOhV,SAAcgV,EAAOpC,OAASoC,EAAOpC,S,6BAI5E,SAAiBsC,GAEhB,IAAM/C,EAAc+C,EAAMzC,OAAOrF,IAAKviB,KAAKwtB,WAE3C,GAAqB,IAAhBlG,EAGJ,OAA8C,IAAzC+C,EAAMqC,gBAAiB1sB,KAAKutB,QAEzB,EAMD,KAIR,IAAM3d,IAAQ5P,KAAKutB,OAAOhL,IAAK8H,EAAMzC,QAAWyC,EAAMC,UAAahD,EAInE,OAAO1X,GAAK,EAAIA,EAAI,O,4BAIrB,SAAgBya,EAAO1c,GAEtB,IAAMiC,EAAI5P,KAAK2uB,gBAAiBtE,GAEhC,OAAW,OAANza,EAEG,KAID5P,KAAK0tB,GAAI9d,EAAGjC,K,6BAIpB,SAAiB0c,GAIhB,IAAMuE,EAAcvE,EAAMqC,gBAAiB1sB,KAAKutB,QAEhD,OAAqB,IAAhBqB,GAMevE,EAAMzC,OAAOrF,IAAKviB,KAAKwtB,WAExBoB,EAAc,I,0BAYlC,SAAcrF,EAAK5b,GAElB,IAAIkhB,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAE/BC,EAAU,EAAInvB,KAAKwtB,UAAU9d,EAClC0f,EAAU,EAAIpvB,KAAKwtB,UAAU7d,EAC7B0f,EAAU,EAAIrvB,KAAKwtB,UAAU/O,EAExB8O,EAASvtB,KAAKutB,OA0BpB,OAxBK4B,GAAW,GAEfN,GAAStF,EAAIna,IAAIM,EAAI6d,EAAO7d,GAAMyf,EAClCL,GAASvF,EAAIla,IAAIK,EAAI6d,EAAO7d,GAAMyf,IAIlCN,GAAStF,EAAIla,IAAIK,EAAI6d,EAAO7d,GAAMyf,EAClCL,GAASvF,EAAIna,IAAIM,EAAI6d,EAAO7d,GAAMyf,GAI9BC,GAAW,GAEfL,GAAUxF,EAAIna,IAAIO,EAAI4d,EAAO5d,GAAMyf,EACnCJ,GAAUzF,EAAIla,IAAIM,EAAI4d,EAAO5d,GAAMyf,IAInCL,GAAUxF,EAAIla,IAAIM,EAAI4d,EAAO5d,GAAMyf,EACnCJ,GAAUzF,EAAIna,IAAIO,EAAI4d,EAAO5d,GAAMyf,GAI7BP,EAAOG,GAAaD,EAAQD,EAAgB,OAK9CC,EAAQF,GAAQA,IAASA,KAAOA,EAAOE,IAEvCC,EAAQF,GAAQA,IAASA,KAAOA,EAAOE,GAEvCK,GAAW,GAEfJ,GAAU1F,EAAIna,IAAIqP,EAAI8O,EAAO9O,GAAM4Q,EACnCH,GAAU3F,EAAIla,IAAIoP,EAAI8O,EAAO9O,GAAM4Q,IAInCJ,GAAU1F,EAAIla,IAAIoP,EAAI8O,EAAO9O,GAAM4Q,EACnCH,GAAU3F,EAAIna,IAAIqP,EAAI8O,EAAO9O,GAAM4Q,GAI7BR,EAAOK,GAAaD,EAAQH,EAAgB,OAE9CG,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,IAEvCC,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,GAIvCJ,EAAO,EAAW,KAEhB9uB,KAAK0tB,GAAImB,GAAQ,EAAIA,EAAOC,EAAMnhB,O,2BAI1C,SAAe4b,GAEd,OAA+C,OAAxCvpB,KAAKsvB,aAAc/F,EAAKwD,M,+BAIhC,SAAmB1a,EAAGC,EAAGC,EAAGgd,EAAiB5hB,GAM5Cwf,GAAOtZ,WAAYvB,EAAGD,GACtB+a,GAAOvZ,WAAYtB,EAAGF,GACtBgb,GAAUtG,aAAcoG,GAAQC,IAOhC,IACIoC,EADAC,EAAMzvB,KAAKwtB,UAAUjL,IAAK8K,IAG9B,GAAKoC,EAAM,EAAI,CAEd,GAAKF,EAAkB,OAAO,KAC9BC,EAAO,MAED,MAAKC,EAAM,GAOjB,OAAO,KALPD,GAAS,EACTC,GAAQA,EAQTvC,GAAMrZ,WAAY7T,KAAKutB,OAAQlb,GAC/B,IAAMqd,EAASF,EAAOxvB,KAAKwtB,UAAUjL,IAAK6K,GAAOrG,aAAcmG,GAAOE,KAGtE,GAAKsC,EAAS,EAEb,OAAO,KAIR,IAAMC,EAASH,EAAOxvB,KAAKwtB,UAAUjL,IAAK4K,GAAOyC,MAAO1C,KAGxD,GAAKyC,EAAS,EAEb,OAAO,KAKR,GAAKD,EAASC,EAASF,EAEtB,OAAO,KAKR,IAAMI,GAAQL,EAAOtC,GAAM3K,IAAK8K,IAGhC,OAAKwC,EAAM,EAEH,KAKD7vB,KAAK0tB,GAAImC,EAAMJ,EAAK9hB,K,0BAI5B,SAAc4K,GAKb,OAHAvY,KAAKutB,OAAO7G,aAAcnO,GAC1BvY,KAAKwtB,UAAUsC,mBAAoBvX,GAE5BvY,O,oBAIR,SAAQytB,GAEP,OAAOA,EAAIF,OAAOhC,OAAQvrB,KAAKutB,SAAYE,EAAID,UAAUjC,OAAQvrB,KAAKwtB,a,mBAIvE,WAEC,OAAO,IAAIxtB,KAAKyT,aAAcwJ,KAAMjd,U,KAMhC+vB,G,WAEL,aAAc,oBAEb/vB,KAAKgU,SAAW,CAEf,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIL9T,UAAU8N,OAAS,GAEvBoF,QAAQ3T,MAAO,iF,uCAMjB,SAAKgW,EAAKC,EAAKC,EAAKqa,EAAKpa,EAAKC,EAAKC,EAAKma,EAAKla,EAAKC,EAAKC,EAAKia,EAAKC,EAAKC,EAAKC,EAAKC,GAE/E,IAAMpa,EAAKlW,KAAKgU,SAOhB,OALAkC,EAAI,GAAMT,EAAKS,EAAI,GAAMR,EAAKQ,EAAI,GAAMP,EAAKO,EAAI,IAAO8Z,EACxD9Z,EAAI,GAAMN,EAAKM,EAAI,GAAML,EAAKK,EAAI,GAAMJ,EAAKI,EAAI,IAAO+Z,EACxD/Z,EAAI,GAAMH,EAAKG,EAAI,GAAMF,EAAKE,EAAI,IAAOD,EAAKC,EAAI,IAAOga,EACzDha,EAAI,GAAMia,EAAKja,EAAI,GAAMka,EAAKla,EAAI,IAAOma,EAAKna,EAAI,IAAOoa,EAElDtwB,O,sBAIR,WAWC,OATAA,KAAKmT,IAEJ,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIHnT,O,mBAIR,WAEC,OAAO,IAAI+vB,GAAU1W,UAAWrZ,KAAKgU,Y,kBAItC,SAAMxE,GAEL,IAAM0G,EAAKlW,KAAKgU,SACVmC,EAAK3G,EAAEwE,SAOb,OALAkC,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GACvED,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GACvED,EAAI,GAAMC,EAAI,GAAKD,EAAI,GAAMC,EAAI,GAAKD,EAAI,IAAOC,EAAI,IAAMD,EAAI,IAAOC,EAAI,IAC1ED,EAAI,IAAOC,EAAI,IAAMD,EAAI,IAAOC,EAAI,IAAMD,EAAI,IAAOC,EAAI,IAAMD,EAAI,IAAOC,EAAI,IAEvEnW,O,0BAIR,SAAcwP,GAEb,IAAM0G,EAAKlW,KAAKgU,SAAUmC,EAAK3G,EAAEwE,SAMjC,OAJAkC,EAAI,IAAOC,EAAI,IACfD,EAAI,IAAOC,EAAI,IACfD,EAAI,IAAOC,EAAI,IAERnW,O,4BAIR,SAAgBwP,GAEf,IAAM2G,EAAK3G,EAAEwE,SAWb,OATAhU,KAAKmT,IAEJgD,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3B,EAAG,EAAG,EAAG,GAIHnW,O,0BAIR,SAAcoW,EAAOC,EAAOC,GAM3B,OAJAF,EAAM+R,oBAAqBnoB,KAAM,GACjCqW,EAAM8R,oBAAqBnoB,KAAM,GACjCsW,EAAM6R,oBAAqBnoB,KAAM,GAE1BA,O,uBAIR,SAAWoW,EAAOC,EAAOC,GASxB,OAPAtW,KAAKmT,IACJiD,EAAM1G,EAAG2G,EAAM3G,EAAG4G,EAAM5G,EAAG,EAC3B0G,EAAMzG,EAAG0G,EAAM1G,EAAG2G,EAAM3G,EAAG,EAC3ByG,EAAMqI,EAAGpI,EAAMoI,EAAGnI,EAAMmI,EAAG,EAC3B,EAAG,EAAG,EAAG,GAGHze,O,6BAIR,SAAiBwP,GAIhB,IAAM0G,EAAKlW,KAAKgU,SACVmC,EAAK3G,EAAEwE,SAEPuc,EAAS,EAAIC,GAAMrI,oBAAqB3Y,EAAG,GAAIxB,SAC/CyiB,EAAS,EAAID,GAAMrI,oBAAqB3Y,EAAG,GAAIxB,SAC/C0iB,EAAS,EAAIF,GAAMrI,oBAAqB3Y,EAAG,GAAIxB,SAsBrD,OApBAkI,EAAI,GAAMC,EAAI,GAAMoa,EACpBra,EAAI,GAAMC,EAAI,GAAMoa,EACpBra,EAAI,GAAMC,EAAI,GAAMoa,EACpBra,EAAI,GAAM,EAEVA,EAAI,GAAMC,EAAI,GAAMsa,EACpBva,EAAI,GAAMC,EAAI,GAAMsa,EACpBva,EAAI,GAAMC,EAAI,GAAMsa,EACpBva,EAAI,GAAM,EAEVA,EAAI,GAAMC,EAAI,GAAMua,EACpBxa,EAAI,GAAMC,EAAI,GAAMua,EACpBxa,EAAI,IAAOC,EAAI,IAAOua,EACtBxa,EAAI,IAAO,EAEXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJlW,O,mCAIR,SAAuB0hB,GAEbA,GAASA,EAAME,SAEvBxO,QAAQ3T,MAAO,yGAIhB,IAAMyW,EAAKlW,KAAKgU,SAEVtE,EAAIgS,EAAMhS,EAAGC,EAAI+R,EAAM/R,EAAG8O,EAAIiD,EAAMjD,EACpCpM,EAAIjE,KAAKqE,IAAK/C,GAAK4C,EAAIlE,KAAKsE,IAAKhD,GACjC6C,EAAInE,KAAKqE,IAAK9C,GAAKkI,EAAIzJ,KAAKsE,IAAK/C,GACjCoE,EAAI3F,KAAKqE,IAAKgM,GAAK3G,EAAI1J,KAAKsE,IAAK+L,GAEvC,GAAqB,QAAhBiD,EAAMlP,MAAkB,CAE5B,IAAMiE,EAAKpE,EAAI0B,EAAG4c,EAAKte,EAAIyF,EAAGpB,EAAKpE,EAAIyB,EAAG6c,EAAKte,EAAIwF,EAEnD5B,EAAI,GAAM3D,EAAIwB,EACdmC,EAAI,IAAQ3D,EAAIuF,EAChB5B,EAAI,GAAM2B,EAEV3B,EAAI,GAAMya,EAAKja,EAAKmB,EACpB3B,EAAI,GAAMO,EAAKma,EAAK/Y,EACpB3B,EAAI,IAAQ5D,EAAIC,EAEhB2D,EAAI,GAAM0a,EAAKna,EAAKoB,EACpB3B,EAAI,GAAMQ,EAAKia,EAAK9Y,EACpB3B,EAAI,IAAO7D,EAAIE,OAET,GAAqB,QAAhBmP,EAAMlP,MAAkB,CAEnC,IAAMqe,EAAKte,EAAIwB,EAAG+c,EAAKve,EAAIuF,EAAGiZ,EAAKlZ,EAAI9D,EAAGid,EAAKnZ,EAAIC,EAEnD5B,EAAI,GAAM2a,EAAKG,EAAK1e,EACpB4D,EAAI,GAAM6a,EAAKze,EAAIwe,EACnB5a,EAAI,GAAM7D,EAAIwF,EAEd3B,EAAI,GAAM7D,EAAIyF,EACd5B,EAAI,GAAM7D,EAAI0B,EACdmC,EAAI,IAAQ5D,EAEZ4D,EAAI,GAAM4a,EAAKxe,EAAIye,EACnB7a,EAAI,GAAM8a,EAAKH,EAAKve,EACpB4D,EAAI,IAAO7D,EAAIE,OAET,GAAqB,QAAhBmP,EAAMlP,MAAkB,CAEnC,IAAMqe,EAAKte,EAAIwB,EAAG+c,EAAKve,EAAIuF,EAAGiZ,EAAKlZ,EAAI9D,EAAGid,EAAKnZ,EAAIC,EAEnD5B,EAAI,GAAM2a,EAAKG,EAAK1e,EACpB4D,EAAI,IAAQ7D,EAAIyF,EAChB5B,EAAI,GAAM6a,EAAKD,EAAKxe,EAEpB4D,EAAI,GAAM4a,EAAKC,EAAKze,EACpB4D,EAAI,GAAM7D,EAAI0B,EACdmC,EAAI,GAAM8a,EAAKH,EAAKve,EAEpB4D,EAAI,IAAQ7D,EAAIwF,EAChB3B,EAAI,GAAM5D,EACV4D,EAAI,IAAO7D,EAAIE,OAET,GAAqB,QAAhBmP,EAAMlP,MAAkB,CAEnC,IAAMiE,EAAKpE,EAAI0B,EAAG4c,EAAKte,EAAIyF,EAAGpB,EAAKpE,EAAIyB,EAAG6c,EAAKte,EAAIwF,EAEnD5B,EAAI,GAAM3D,EAAIwB,EACdmC,EAAI,GAAMQ,EAAKmB,EAAI8Y,EACnBza,EAAI,GAAMO,EAAKoB,EAAI+Y,EAEnB1a,EAAI,GAAM3D,EAAIuF,EACd5B,EAAI,GAAM0a,EAAK/Y,EAAIpB,EACnBP,EAAI,GAAMya,EAAK9Y,EAAInB,EAEnBR,EAAI,IAAQ2B,EACZ3B,EAAI,GAAM5D,EAAIC,EACd2D,EAAI,IAAO7D,EAAIE,OAET,GAAqB,QAAhBmP,EAAMlP,MAAkB,CAEnC,IAAMye,EAAK5e,EAAIE,EAAG2e,EAAK7e,EAAIwF,EAAGsZ,EAAK7e,EAAIC,EAAG6e,EAAK9e,EAAIuF,EAEnD3B,EAAI,GAAM3D,EAAIwB,EACdmC,EAAI,GAAMkb,EAAKH,EAAKnZ,EACpB5B,EAAI,GAAMib,EAAKrZ,EAAIoZ,EAEnBhb,EAAI,GAAM4B,EACV5B,EAAI,GAAM7D,EAAI0B,EACdmC,EAAI,IAAQ5D,EAAIyB,EAEhBmC,EAAI,IAAQ2B,EAAI9D,EAChBmC,EAAI,GAAMgb,EAAKpZ,EAAIqZ,EACnBjb,EAAI,IAAO+a,EAAKG,EAAKtZ,OAEf,GAAqB,QAAhB4J,EAAMlP,MAAkB,CAEnC,IAAMye,EAAK5e,EAAIE,EAAG2e,EAAK7e,EAAIwF,EAAGsZ,EAAK7e,EAAIC,EAAG6e,EAAK9e,EAAIuF,EAEnD3B,EAAI,GAAM3D,EAAIwB,EACdmC,EAAI,IAAQ4B,EACZ5B,EAAI,GAAM2B,EAAI9D,EAEdmC,EAAI,GAAM+a,EAAKnZ,EAAIsZ,EACnBlb,EAAI,GAAM7D,EAAI0B,EACdmC,EAAI,GAAMgb,EAAKpZ,EAAIqZ,EAEnBjb,EAAI,GAAMib,EAAKrZ,EAAIoZ,EACnBhb,EAAI,GAAM5D,EAAIyB,EACdmC,EAAI,IAAOkb,EAAKtZ,EAAImZ,EAerB,OAVA/a,EAAI,GAAM,EACVA,EAAI,GAAM,EACVA,EAAI,IAAO,EAGXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJlW,O,wCAIR,SAA4BoS,GAE3B,OAAOpS,KAAKqxB,QAASC,GAAOlf,EAAGmf,M,oBAIhC,SAAQC,EAAK7jB,EAAQ8jB,GAEpB,IAAMvb,EAAKlW,KAAKgU,SAyChB,OAvCAsN,GAAGzN,WAAY2d,EAAK7jB,GAEG,IAAlB2T,GAAGiG,aAIPjG,GAAG7C,EAAI,GAIR6C,GAAG3M,YACHyM,GAAG2F,aAAc0K,EAAInQ,IAEE,IAAlBF,GAAGmG,aAImB,IAArBnZ,KAAKgD,IAAKqgB,EAAGhT,GAEjB6C,GAAG5R,GAAK,KAIR4R,GAAG7C,GAAK,KAIT6C,GAAG3M,YACHyM,GAAG2F,aAAc0K,EAAInQ,KAItBF,GAAGzM,YACH0M,GAAG0F,aAAczF,GAAIF,IAErBlL,EAAI,GAAMkL,GAAG1R,EAAGwG,EAAI,GAAMmL,GAAG3R,EAAGwG,EAAI,GAAMoL,GAAG5R,EAC7CwG,EAAI,GAAMkL,GAAGzR,EAAGuG,EAAI,GAAMmL,GAAG1R,EAAGuG,EAAI,GAAMoL,GAAG3R,EAC7CuG,EAAI,GAAMkL,GAAG3C,EAAGvI,EAAI,GAAMmL,GAAG5C,EAAGvI,EAAI,IAAOoL,GAAG7C,EAEvCze,O,sBAIR,SAAUwP,EAAGD,GAEZ,YAAWlP,IAANkP,GAEJ6D,QAAQC,KAAM,oGACPrT,KAAKwW,iBAAkBhH,EAAGD,IAI3BvP,KAAKwW,iBAAkBxW,KAAMwP,K,yBAIrC,SAAaA,GAEZ,OAAOxP,KAAKwW,iBAAkBhH,EAAGxP,Q,8BAIlC,SAAkBqS,EAAGC,GAEpB,IAAMmE,EAAKpE,EAAE2B,SACP0C,EAAKpE,EAAE0B,SACPkC,EAAKlW,KAAKgU,SAEV2C,EAAMF,EAAI,GAAKG,EAAMH,EAAI,GAAKI,EAAMJ,EAAI,GAAKib,EAAMjb,EAAI,IACvDK,EAAML,EAAI,GAAKM,EAAMN,EAAI,GAAKO,EAAMP,EAAI,GAAKkb,EAAMlb,EAAI,IACvDQ,EAAMR,EAAI,GAAKS,EAAMT,EAAI,GAAKU,EAAMV,EAAI,IAAMmb,EAAMnb,EAAI,IACxDob,EAAMpb,EAAI,GAAKqb,EAAMrb,EAAI,GAAKsb,EAAMtb,EAAI,IAAMub,EAAMvb,EAAI,IAExDW,EAAMV,EAAI,GAAKW,EAAMX,EAAI,GAAKY,EAAMZ,EAAI,GAAKub,EAAMvb,EAAI,IACvDa,EAAMb,EAAI,GAAKc,EAAMd,EAAI,GAAKe,EAAMf,EAAI,GAAKwb,EAAMxb,EAAI,IACvDgB,EAAMhB,EAAI,GAAKiB,EAAMjB,EAAI,GAAKkB,EAAMlB,EAAI,IAAMyb,EAAMzb,EAAI,IACxD0b,EAAM1b,EAAI,GAAK2b,EAAM3b,EAAI,GAAK4b,EAAM5b,EAAI,IAAM6b,EAAM7b,EAAI,IAsB9D,OApBAR,EAAI,GAAMS,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EAAMga,EAAMU,EACpDlc,EAAI,GAAMS,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EAAM+Z,EAAMW,EACpDnc,EAAI,GAAMS,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAAM8Z,EAAMY,EACpDpc,EAAI,IAAOS,EAAMsb,EAAMrb,EAAMsb,EAAMrb,EAAMsb,EAAMT,EAAMa,EAErDrc,EAAI,GAAMY,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EAAMia,EAAMS,EACpDlc,EAAI,GAAMY,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EAAMga,EAAMU,EACpDnc,EAAI,GAAMY,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAAM+Z,EAAMW,EACpDpc,EAAI,IAAOY,EAAMmb,EAAMlb,EAAMmb,EAAMlb,EAAMmb,EAAMR,EAAMY,EAErDrc,EAAI,GAAMe,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EAAMka,EAAMQ,EACpDlc,EAAI,GAAMe,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EAAMia,EAAMS,EACpDnc,EAAI,IAAOe,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAAMga,EAAMU,EACrDpc,EAAI,IAAOe,EAAMgb,EAAM/a,EAAMgb,EAAM/a,EAAMgb,EAAMP,EAAMW,EAErDrc,EAAI,GAAM2b,EAAMza,EAAM0a,EAAMva,EAAMwa,EAAMra,EAAMsa,EAAMI,EACpDlc,EAAI,GAAM2b,EAAMxa,EAAMya,EAAMta,EAAMua,EAAMpa,EAAMqa,EAAMK,EACpDnc,EAAI,IAAO2b,EAAMva,EAAMwa,EAAMra,EAAMsa,EAAMna,EAAMoa,EAAMM,EACrDpc,EAAI,IAAO2b,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAAMH,EAAMO,EAE9CvyB,O,4BAIR,SAAgB8R,GAEf,IAAMoE,EAAKlW,KAAKgU,SAOhB,OALAkC,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,KAAQpE,EACtDoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,KAAQpE,EACtDoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,KAAQpE,EAAGoE,EAAI,KAAQpE,EACvDoE,EAAI,IAAOpE,EAAGoE,EAAI,IAAOpE,EAAGoE,EAAI,KAAQpE,EAAGoE,EAAI,KAAQpE,EAEhD9R,O,yBAIR,WAEC,IAAMkW,EAAKlW,KAAKgU,SAEVyB,EAAMS,EAAI,GAAKR,EAAMQ,EAAI,GAAKP,EAAMO,EAAI,GAAK8Z,EAAM9Z,EAAI,IACvDN,EAAMM,EAAI,GAAKL,EAAMK,EAAI,GAAKJ,EAAMI,EAAI,GAAK+Z,EAAM/Z,EAAI,IACvDH,EAAMG,EAAI,GAAKF,EAAME,EAAI,GAAKD,EAAMC,EAAI,IAAMga,EAAMha,EAAI,IAM9D,OALYA,EAAI,KAOZ8Z,EAAMla,EAAME,EACXL,EAAMsa,EAAMja,EACZga,EAAMna,EAAMI,EACZP,EAAMua,EAAMha,EACZN,EAAME,EAAMqa,EACZxa,EAAMI,EAAMoa,GAZUha,EAAI,KAe3BT,EAAMK,EAAMoa,EACXza,EAAMwa,EAAMha,EACZ+Z,EAAMpa,EAAMK,EACZN,EAAMC,EAAMsa,EACZva,EAAMsa,EAAMla,EACZia,EAAMla,EAAMC,GApByBG,EAAI,MAuB1CT,EAAMwa,EAAMja,EACXP,EAAMI,EAAMqa,EACZF,EAAMpa,EAAMI,EACZN,EAAME,EAAMsa,EACZF,EAAMna,EAAME,EACZL,EAAMua,EAAMla,GA5ByCG,EAAI,MA+B1DP,EAAME,EAAME,EACXN,EAAMK,EAAME,EACZP,EAAMI,EAAMI,EACZN,EAAMC,EAAMI,EACZN,EAAME,EAAMK,EACZP,EAAMI,EAAMC,K,uBAOlB,WAEC,IACIuC,EADEpC,EAAKlW,KAAKgU,SAWhB,OARAsE,EAAMpC,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMoC,EAC5CA,EAAMpC,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMoC,EAC5CA,EAAMpC,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMoC,EAE5CA,EAAMpC,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOoC,EAC9CA,EAAMpC,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOoC,EAC9CA,EAAMpC,EAAI,IAAMA,EAAI,IAAOA,EAAI,IAAMA,EAAI,IAAOoC,EAEzCtY,O,yBAIR,SAAa0P,EAAGC,EAAG8O,GAElB,IAAMvI,EAAKlW,KAAKgU,SAgBhB,OAdKtE,EAAE4Y,WAENpS,EAAI,IAAOxG,EAAEA,EACbwG,EAAI,IAAOxG,EAAEC,EACbuG,EAAI,IAAOxG,EAAE+O,IAIbvI,EAAI,IAAOxG,EACXwG,EAAI,IAAOvG,EACXuG,EAAI,IAAOuI,GAILze,O,oBAIR,WAGC,IAAMkW,EAAKlW,KAAKgU,SAEfyB,EAAMS,EAAI,GAAKN,EAAMM,EAAI,GAAKH,EAAMG,EAAI,GAAKia,EAAMja,EAAI,GACvDR,EAAMQ,EAAI,GAAKL,EAAMK,EAAI,GAAKF,EAAME,EAAI,GAAKka,EAAMla,EAAI,GACvDP,EAAMO,EAAI,GAAKJ,EAAMI,EAAI,GAAKD,EAAMC,EAAI,IAAMma,EAAMna,EAAI,IACxD8Z,EAAM9Z,EAAI,IAAM+Z,EAAM/Z,EAAI,IAAMga,EAAMha,EAAI,IAAMoa,EAAMpa,EAAI,IAE1D+B,EAAMnC,EAAMoa,EAAME,EAAMH,EAAMha,EAAMma,EAAMH,EAAMja,EAAMqa,EAAMxa,EAAMqa,EAAMG,EAAMva,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,EAC5GpY,EAAM8X,EAAM/Z,EAAMma,EAAMza,EAAMua,EAAME,EAAMJ,EAAMha,EAAMqa,EAAM3a,EAAMwa,EAAMG,EAAM1a,EAAMK,EAAMsa,EAAM5a,EAAMO,EAAMqa,EAC5GnY,EAAMxC,EAAMsa,EAAMG,EAAMJ,EAAMla,EAAMsa,EAAMJ,EAAMna,EAAMwa,EAAM3a,EAAMua,EAAMI,EAAM1a,EAAME,EAAMya,EAAM5a,EAAMI,EAAMwa,EAC5GkC,EAAMxC,EAAMla,EAAME,EAAML,EAAMsa,EAAMja,EAAMga,EAAMna,EAAMI,EAAMP,EAAMua,EAAMha,EAAMN,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,EAEvG9X,EAAM3C,EAAMwC,EAAMrC,EAAMsC,EAAMnC,EAAMoC,EAAMgY,EAAMqC,EAEtD,GAAa,IAARpa,EAAY,OAAOpY,KAAKmT,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/E,IAAMkF,EAAS,EAAID,EAsBnB,OApBAlC,EAAI,GAAM+B,EAAMI,EAChBnC,EAAI,IAAQ+Z,EAAMha,EAAMka,EAAMra,EAAMoa,EAAMC,EAAMF,EAAMla,EAAMsa,EAAMza,EAAMsa,EAAMG,EAAMva,EAAMC,EAAMua,EAAM1a,EAAMK,EAAMqa,GAAQjY,EAC1HnC,EAAI,IAAQL,EAAMqa,EAAMC,EAAMF,EAAMja,EAAMma,EAAMF,EAAMla,EAAMqa,EAAMxa,EAAMsa,EAAME,EAAMva,EAAME,EAAMua,EAAM1a,EAAMI,EAAMsa,GAAQjY,EAC1HnC,EAAI,IAAQJ,EAAME,EAAMma,EAAMta,EAAMI,EAAMka,EAAMra,EAAMC,EAAMqa,EAAMxa,EAAMK,EAAMma,EAAMva,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,GAAQhY,EAE1HnC,EAAI,GAAMgC,EAAMG,EAChBnC,EAAI,IAAQP,EAAMua,EAAMC,EAAMH,EAAM/Z,EAAMka,EAAMH,EAAMja,EAAMsa,EAAM5a,EAAMya,EAAMG,EAAM1a,EAAMI,EAAMua,EAAM7a,EAAMQ,EAAMqa,GAAQjY,EAC1HnC,EAAI,IAAQ8Z,EAAMha,EAAMma,EAAMza,EAAMwa,EAAMC,EAAMH,EAAMja,EAAMqa,EAAM3a,EAAMya,EAAME,EAAM1a,EAAMK,EAAMua,EAAM7a,EAAMO,EAAMsa,GAAQjY,EAC1HnC,EAAI,IAAQR,EAAMO,EAAMka,EAAMxa,EAAMK,EAAMma,EAAMxa,EAAMI,EAAMqa,EAAM3a,EAAMQ,EAAMma,EAAM1a,EAAMK,EAAMsa,EAAM5a,EAAMO,EAAMqa,GAAQhY,EAE1HnC,EAAI,GAAMiC,EAAME,EAChBnC,EAAI,IAAQ8Z,EAAMla,EAAMqa,EAAMxa,EAAMsa,EAAME,EAAMH,EAAMpa,EAAMya,EAAM5a,EAAMwa,EAAMI,EAAM1a,EAAMC,EAAM0a,EAAM7a,EAAMK,EAAMwa,GAAQjY,EAC1HnC,EAAI,KAASR,EAAMua,EAAME,EAAMH,EAAMna,EAAMsa,EAAMH,EAAMpa,EAAMwa,EAAM3a,EAAMwa,EAAMG,EAAM1a,EAAME,EAAM0a,EAAM7a,EAAMI,EAAMya,GAAQjY,EAC3HnC,EAAI,KAASP,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,EAAMxa,EAAMC,EAAMwa,EAAM3a,EAAMK,EAAMsa,EAAM1a,EAAME,EAAMya,EAAM5a,EAAMI,EAAMwa,GAAQhY,EAE3HnC,EAAI,IAAOsc,EAAMna,EACjBnC,EAAI,KAASP,EAAMsa,EAAMla,EAAMia,EAAMla,EAAMC,EAAMia,EAAMpa,EAAMK,EAAMR,EAAMwa,EAAMha,EAAMN,EAAMC,EAAMsa,EAAMza,EAAMK,EAAMoa,GAAQ7X,EAC3HnC,EAAI,KAAS8Z,EAAMna,EAAME,EAAML,EAAMua,EAAMla,EAAMia,EAAMpa,EAAMI,EAAMP,EAAMwa,EAAMja,EAAMN,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,GAAQ7X,EAC3HnC,EAAI,KAASR,EAAMI,EAAMC,EAAMJ,EAAME,EAAME,EAAMJ,EAAMC,EAAMI,EAAMP,EAAMK,EAAME,EAAMN,EAAME,EAAMK,EAAMR,EAAMI,EAAMI,GAAQoC,EAEpHrY,O,mBAIR,SAAO0T,GAEN,IAAMwC,EAAKlW,KAAKgU,SACVtE,EAAIgE,EAAEhE,EAAGC,EAAI+D,EAAE/D,EAAG8O,EAAI/K,EAAE+K,EAO9B,OALAvI,EAAI,IAAOxG,EAAGwG,EAAI,IAAOvG,EAAGuG,EAAI,IAAOuI,EACvCvI,EAAI,IAAOxG,EAAGwG,EAAI,IAAOvG,EAAGuG,EAAI,IAAOuI,EACvCvI,EAAI,IAAOxG,EAAGwG,EAAI,IAAOvG,EAAGuG,EAAI,KAAQuI,EACxCvI,EAAI,IAAOxG,EAAGwG,EAAI,IAAOvG,EAAGuG,EAAI,KAAQuI,EAEjCze,O,+BAIR,WAEC,IAAMkW,EAAKlW,KAAKgU,SAEVye,EAAWvc,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjEwc,EAAWxc,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjEyc,EAAWzc,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,IAAOA,EAAI,IAExE,OAAO9H,KAAKiG,KAAMjG,KAAKiB,IAAKojB,EAAUC,EAAUC,M,6BAIjD,SAAiBjjB,EAAGC,EAAG8O,GAWtB,OATAze,KAAKmT,IAEJ,EAAG,EAAG,EAAGzD,EACT,EAAG,EAAG,EAAGC,EACT,EAAG,EAAG,EAAG8O,EACT,EAAG,EAAG,EAAG,GAIHze,O,2BAIR,SAAemZ,GAEd,IAAM5G,EAAInE,KAAKqE,IAAK0G,GAASrH,EAAI1D,KAAKsE,IAAKyG,GAW3C,OATAnZ,KAAKmT,IAEJ,EAAG,EAAG,EAAG,EACT,EAAGZ,GAAKT,EAAG,EACX,EAAGA,EAAGS,EAAG,EACT,EAAG,EAAG,EAAG,GAIHvS,O,2BAIR,SAAemZ,GAEd,IAAM5G,EAAInE,KAAKqE,IAAK0G,GAASrH,EAAI1D,KAAKsE,IAAKyG,GAW3C,OATAnZ,KAAKmT,IAEHZ,EAAG,EAAGT,EAAG,EACT,EAAG,EAAG,EAAG,GACRA,EAAG,EAAGS,EAAG,EACV,EAAG,EAAG,EAAG,GAIJvS,O,2BAIR,SAAemZ,GAEd,IAAM5G,EAAInE,KAAKqE,IAAK0G,GAASrH,EAAI1D,KAAKsE,IAAKyG,GAW3C,OATAnZ,KAAKmT,IAEJZ,GAAKT,EAAG,EAAG,EACXA,EAAGS,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIHvS,O,8BAIR,SAAkBkiB,EAAM5N,GAIvB,IAAM/B,EAAInE,KAAKqE,IAAK6B,GACdxC,EAAI1D,KAAKsE,IAAK4B,GACd1E,EAAI,EAAI2C,EACR7C,EAAIwS,EAAKxS,EAAGC,EAAIuS,EAAKvS,EAAG8O,EAAIyD,EAAKzD,EACjC7F,EAAKhJ,EAAIF,EAAGmJ,EAAKjJ,EAAID,EAW3B,OATA3P,KAAKmT,IAEJyF,EAAKlJ,EAAI6C,EAAGqG,EAAKjJ,EAAImC,EAAI2M,EAAG7F,EAAK6F,EAAI3M,EAAInC,EAAG,EAC5CiJ,EAAKjJ,EAAImC,EAAI2M,EAAG5F,EAAKlJ,EAAI4C,EAAGsG,EAAK4F,EAAI3M,EAAIpC,EAAG,EAC5CkJ,EAAK6F,EAAI3M,EAAInC,EAAGkJ,EAAK4F,EAAI3M,EAAIpC,EAAGE,EAAI6O,EAAIA,EAAIlM,EAAG,EAC/C,EAAG,EAAG,EAAG,GAIHvS,O,uBAIR,SAAW0P,EAAGC,EAAG8O,GAWhB,OATAze,KAAKmT,IAEJzD,EAAG,EAAG,EAAG,EACT,EAAGC,EAAG,EAAG,EACT,EAAG,EAAG8O,EAAG,EACT,EAAG,EAAG,EAAG,GAIHze,O,uBAIR,SAAWyf,EAAIC,EAAIkT,EAAIjT,EAAIkT,EAAIC,GAW9B,OATA9yB,KAAKmT,IAEJ,EAAGyf,EAAIC,EAAI,EACXpT,EAAI,EAAGqT,EAAI,EACXpT,EAAIC,EAAI,EAAG,EACX,EAAG,EAAG,EAAG,GAIH3f,O,qBAIR,SAAS+yB,EAAUtR,EAAYuR,GAE9B,IAAM9c,EAAKlW,KAAKgU,SAEVtE,EAAI+R,EAAWL,GAAIzR,EAAI8R,EAAWJ,GAAI5C,EAAIgD,EAAWH,GAAI3N,EAAI8N,EAAWF,GACxE0R,EAAKvjB,EAAIA,EAAGwjB,EAAKvjB,EAAIA,EAAGwjB,EAAK1U,EAAIA,EACjCa,EAAK5P,EAAIujB,EAAIxT,EAAK/P,EAAIwjB,EAAIxT,EAAKhQ,EAAIyjB,EACnC5T,EAAK5P,EAAIujB,EAAIvT,EAAKhQ,EAAIwjB,EAAI3T,EAAKf,EAAI0U,EACnCC,EAAKzf,EAAIsf,EAAII,EAAK1f,EAAIuf,EAAII,EAAK3f,EAAIwf,EAEnCra,EAAKka,EAAMtjB,EAAGqJ,EAAKia,EAAMrjB,EAAGyY,EAAK4K,EAAMvU,EAsB7C,OApBAvI,EAAI,IAAQ,GAAMqJ,EAAKC,IAAS1G,EAChC5C,EAAI,IAAQuJ,EAAK6T,GAAOxa,EACxB5C,EAAI,IAAQwJ,EAAK2T,GAAOva,EACxB5C,EAAI,GAAM,EAEVA,EAAI,IAAQuJ,EAAK6T,GAAOva,EACxB7C,EAAI,IAAQ,GAAMoJ,EAAKE,IAASzG,EAChC7C,EAAI,IAAQyJ,EAAKyT,GAAOra,EACxB7C,EAAI,GAAM,EAEVA,EAAI,IAAQwJ,EAAK2T,GAAOjL,EACxBlS,EAAI,IAAQyJ,EAAKyT,GAAOhL,EACxBlS,EAAI,KAAS,GAAMoJ,EAAKC,IAAS6I,EACjClS,EAAI,IAAO,EAEXA,EAAI,IAAO6c,EAASrjB,EACpBwG,EAAI,IAAO6c,EAASpjB,EACpBuG,EAAI,IAAO6c,EAAStU,EACpBvI,EAAI,IAAO,EAEJlW,O,uBAIR,SAAW+yB,EAAUtR,EAAYuR,GAEhC,IAAM9c,EAAKlW,KAAKgU,SAEZ8E,EAAK0X,GAAMrd,IAAK+C,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMlI,SAC1C+K,EAAKyX,GAAMrd,IAAK+C,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMlI,SAC5Coa,EAAKoI,GAAMrd,IAAK+C,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAAOlI,SAGvChO,KAAKuzB,cACN,IAAIza,GAAOA,GAEtBia,EAASrjB,EAAIwG,EAAI,IACjB6c,EAASpjB,EAAIuG,EAAI,IACjB6c,EAAStU,EAAIvI,EAAI,IAGjBsd,GAAMvW,KAAMjd,MAEZ,IAAMyzB,EAAQ,EAAI3a,EACZ4a,EAAQ,EAAI3a,EACZ4a,EAAQ,EAAIvL,EAoBlB,OAlBAoL,GAAMxf,SAAU,IAAOyf,EACvBD,GAAMxf,SAAU,IAAOyf,EACvBD,GAAMxf,SAAU,IAAOyf,EAEvBD,GAAMxf,SAAU,IAAO0f,EACvBF,GAAMxf,SAAU,IAAO0f,EACvBF,GAAMxf,SAAU,IAAO0f,EAEvBF,GAAMxf,SAAU,IAAO2f,EACvBH,GAAMxf,SAAU,IAAO2f,EACvBH,GAAMxf,SAAU,KAAQ2f,EAExBlS,EAAWmS,sBAAuBJ,IAElCR,EAAMtjB,EAAIoJ,EACVka,EAAMrjB,EAAIoJ,EACVia,EAAMvU,EAAI2J,EAEHpoB,O,6BAIR,SAAiB6zB,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,QAEnC7zB,IAAR6zB,GAEJ9gB,QAAQC,KAAM,wGAIf,IAAM6C,EAAKlW,KAAKgU,SACVtE,EAAI,EAAIukB,GAASH,EAAQD,GACzBlkB,EAAI,EAAIskB,GAASF,EAAMC,GAEvB3hB,GAAMyhB,EAAQD,IAAWC,EAAQD,GACjCvhB,GAAMyhB,EAAMC,IAAaD,EAAMC,GAC/BzhB,IAAQ2hB,EAAMD,IAAWC,EAAMD,GAC/Bpc,GAAM,EAAIqc,EAAMD,GAASC,EAAMD,GAOrC,OALA/d,EAAI,GAAMxG,EAAGwG,EAAI,GAAM,EAAGA,EAAI,GAAM7D,EAAG6D,EAAI,IAAO,EAClDA,EAAI,GAAM,EAAGA,EAAI,GAAMvG,EAAGuG,EAAI,GAAM5D,EAAG4D,EAAI,IAAO,EAClDA,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO3D,EAAG2D,EAAI,IAAO2B,EACnD3B,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAGA,EAAI,IAAO,EAE9ClW,O,8BAIR,SAAkB6zB,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,GAEjD,IAAMhe,EAAKlW,KAAKgU,SACVL,EAAI,GAAQmgB,EAAQD,GACpB7b,EAAI,GAAQ+b,EAAMC,GAClBlR,EAAI,GAAQoR,EAAMD,GAElBvkB,GAAMokB,EAAQD,GAASlgB,EACvBhE,GAAMokB,EAAMC,GAAWhc,EACvByG,GAAMyV,EAAMD,GAASnR,EAO3B,OALA5M,EAAI,GAAM,EAAIvC,EAAGuC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAASxG,EACxDwG,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAI8B,EAAG9B,EAAI,GAAM,EAAGA,EAAI,KAASvG,EACxDuG,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAI4M,EAAG5M,EAAI,KAASuI,EAC3DvI,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO,EAAGA,EAAI,IAAO,EAE5ClW,O,oBAIR,SAAQoZ,GAKP,IAHA,IAAMlD,EAAKlW,KAAKgU,SACVmC,EAAKiD,EAAOpF,SAERlG,EAAI,EAAGA,EAAI,GAAIA,IAExB,GAAKoI,EAAIpI,KAAQqI,EAAIrI,GAAM,OAAO,EAInC,OAAO,I,uBAIR,SAAWF,GAEV,IAF8B,IAAbmH,EAAa,uDAAJ,EAEhBjH,EAAI,EAAGA,EAAI,GAAIA,IAExB9N,KAAKgU,SAAUlG,GAAMF,EAAOE,EAAIiH,GAIjC,OAAO/U,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAEvBmB,EAAKlW,KAAKgU,SAsBhB,OApBApG,EAAOmH,GAAWmB,EAAI,GACtBtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAE1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAE1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,GAAMmB,EAAI,GAC1BtI,EAAOmH,EAAS,IAAOmB,EAAI,IAC3BtI,EAAOmH,EAAS,IAAOmB,EAAI,IAE3BtI,EAAOmH,EAAS,IAAOmB,EAAI,IAC3BtI,EAAOmH,EAAS,IAAOmB,EAAI,IAC3BtI,EAAOmH,EAAS,IAAOmB,EAAI,IAC3BtI,EAAOmH,EAAS,IAAOmB,EAAI,IAEpBtI,M,KAMTmiB,GAAQza,UAAU6e,WAAY,EAE9B,IAAM3D,GAAsB,IAAI7K,GAC1B6N,GAAsB,IAAIzD,GAC1BuB,GAAsB,IAAI3L,GAAS,EAAG,EAAG,GACzC4L,GAAqB,IAAI5L,GAAS,EAAG,EAAG,GACxCvE,GAAmB,IAAIuE,GACvBtE,GAAmB,IAAIsE,GACvBrE,GAAmB,IAAIqE,GAEvByO,GAA0B,IAAIrE,GAC9BsE,GAA8B,IAAIlT,GAElCmT,G,WAEL,aAA+D,IAAlD5kB,EAAkD,uDAA9C,EAAGC,EAA2C,uDAAvC,EAAG8O,EAAoC,uDAAhC,EAAGjM,EAA6B,uDAArB8hB,EAAMC,aAAe,oBAE9Dv0B,KAAKohB,GAAK1R,EACV1P,KAAKqhB,GAAK1R,EACV3P,KAAKshB,GAAK7C,EACVze,KAAK6hB,OAASrP,E,mCAIf,WAEC,OAAOxS,KAAKohB,I,IAIb,SAAO5hB,GAENQ,KAAKohB,GAAK5hB,EACVQ,KAAKwhB,sB,aAIN,WAEC,OAAOxhB,KAAKqhB,I,IAIb,SAAO7hB,GAENQ,KAAKqhB,GAAK7hB,EACVQ,KAAKwhB,sB,aAIN,WAEC,OAAOxhB,KAAKshB,I,IAIb,SAAO9hB,GAENQ,KAAKshB,GAAK9hB,EACVQ,KAAKwhB,sB,iBAIN,WAEC,OAAOxhB,KAAK6hB,Q,IAIb,SAAWriB,GAEVQ,KAAK6hB,OAASriB,EACdQ,KAAKwhB,sB,iBAIN,SAAK9R,EAAGC,EAAG8O,GAAyB,IAAtBjM,EAAsB,uDAAdxS,KAAK6hB,OAS1B,OAPA7hB,KAAKohB,GAAK1R,EACV1P,KAAKqhB,GAAK1R,EACV3P,KAAKshB,GAAK7C,EACVze,KAAK6hB,OAASrP,EAEdxS,KAAKwhB,oBAEExhB,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,YAAazT,KAAKohB,GAAIphB,KAAKqhB,GAAIrhB,KAAKshB,GAAIthB,KAAK6hB,U,kBAI9D,SAAMH,GASL,OAPA1hB,KAAKohB,GAAKM,EAAMN,GAChBphB,KAAKqhB,GAAKK,EAAML,GAChBrhB,KAAKshB,GAAKI,EAAMJ,GAChBthB,KAAK6hB,OAASH,EAAMG,OAEpB7hB,KAAKwhB,oBAEExhB,O,mCAIR,SAAuBwP,GAAwC,IAArCgD,EAAqC,uDAA7BxS,KAAK6hB,OAAQF,IAAgB,yDAIxDzL,EAAK1G,EAAEwE,SACP6K,EAAM3I,EAAI,GAAK4I,EAAM5I,EAAI,GAAK6I,EAAM7I,EAAI,GACxC8I,EAAM9I,EAAI,GAAK+I,EAAM/I,EAAI,GAAKgJ,EAAMhJ,EAAI,GACxCiJ,EAAMjJ,EAAI,GAAKkJ,EAAMlJ,EAAI,GAAKmJ,EAAMnJ,EAAI,IAE9C,OAAS1D,GAER,IAAK,MAEJxS,KAAKqhB,GAAKjT,KAAKomB,KAAMrlB,GAAO4P,GAAO,EAAG,IAEjC3Q,KAAKgD,IAAK2N,GAAQ,UAEtB/e,KAAKohB,GAAKhT,KAAKmG,OAAS2K,EAAKG,GAC7Brf,KAAKshB,GAAKlT,KAAKmG,OAASuK,EAAKD,KAI7B7e,KAAKohB,GAAKhT,KAAKmG,MAAO6K,EAAKH,GAC3Bjf,KAAKshB,GAAK,GAIX,MAED,IAAK,MAEJthB,KAAKohB,GAAKhT,KAAKomB,MAAQrlB,GAAO+P,GAAO,EAAG,IAEnC9Q,KAAKgD,IAAK8N,GAAQ,UAEtBlf,KAAKqhB,GAAKjT,KAAKmG,MAAOwK,EAAKM,GAC3Brf,KAAKshB,GAAKlT,KAAKmG,MAAOyK,EAAKC,KAI3Bjf,KAAKqhB,GAAKjT,KAAKmG,OAAS4K,EAAKN,GAC7B7e,KAAKshB,GAAK,GAIX,MAED,IAAK,MAEJthB,KAAKohB,GAAKhT,KAAKomB,KAAMrlB,GAAOiQ,GAAO,EAAG,IAEjChR,KAAKgD,IAAKgO,GAAQ,UAEtBpf,KAAKqhB,GAAKjT,KAAKmG,OAAS4K,EAAKE,GAC7Brf,KAAKshB,GAAKlT,KAAKmG,OAASuK,EAAKG,KAI7Bjf,KAAKqhB,GAAK,EACVrhB,KAAKshB,GAAKlT,KAAKmG,MAAOyK,EAAKH,IAI5B,MAED,IAAK,MAEJ7e,KAAKqhB,GAAKjT,KAAKomB,MAAQrlB,GAAOgQ,GAAO,EAAG,IAEnC/Q,KAAKgD,IAAK+N,GAAQ,UAEtBnf,KAAKohB,GAAKhT,KAAKmG,MAAO6K,EAAKC,GAC3Brf,KAAKshB,GAAKlT,KAAKmG,MAAOyK,EAAKH,KAI3B7e,KAAKohB,GAAK,EACVphB,KAAKshB,GAAKlT,KAAKmG,OAASuK,EAAKG,IAI9B,MAED,IAAK,MAEJjf,KAAKshB,GAAKlT,KAAKomB,KAAMrlB,GAAO6P,GAAO,EAAG,IAEjC5Q,KAAKgD,IAAK4N,GAAQ,UAEtBhf,KAAKohB,GAAKhT,KAAKmG,OAAS2K,EAAKD,GAC7Bjf,KAAKqhB,GAAKjT,KAAKmG,OAAS4K,EAAKN,KAI7B7e,KAAKohB,GAAK,EACVphB,KAAKqhB,GAAKjT,KAAKmG,MAAOwK,EAAKM,IAI5B,MAED,IAAK,MAEJrf,KAAKshB,GAAKlT,KAAKomB,MAAQrlB,GAAO2P,GAAO,EAAG,IAEnC1Q,KAAKgD,IAAK0N,GAAQ,UAEtB9e,KAAKohB,GAAKhT,KAAKmG,MAAO6K,EAAKH,GAC3Bjf,KAAKqhB,GAAKjT,KAAKmG,MAAOwK,EAAKF,KAI3B7e,KAAKohB,GAAKhT,KAAKmG,OAAS2K,EAAKG,GAC7Brf,KAAKqhB,GAAK,GAIX,MAED,QAECjO,QAAQC,KAAM,uEAAyEb,GAQzF,OAJAxS,KAAK6hB,OAASrP,GAEE,IAAXmP,GAAkB3hB,KAAKwhB,oBAErBxhB,O,+BAIR,SAAmBoS,EAAGI,EAAOmP,GAI5B,OAFAyS,GAAUK,2BAA4BriB,GAE/BpS,KAAK4zB,sBAAuBQ,GAAW5hB,EAAOmP,K,4BAItD,SAAgBjO,GAAyB,IAAtBlB,EAAsB,uDAAdxS,KAAK6hB,OAE/B,OAAO7hB,KAAKmT,IAAKO,EAAEhE,EAAGgE,EAAE/D,EAAG+D,EAAE+K,EAAGjM,K,qBAIjC,SAASkiB,GAMR,OAFAL,GAActO,aAAc/lB,MAErBA,KAAK20B,kBAAmBN,GAAeK,K,oBAI/C,SAAQhT,GAEP,OAASA,EAAMN,KAAOphB,KAAKohB,IAAUM,EAAML,KAAOrhB,KAAKqhB,IAAUK,EAAMJ,KAAOthB,KAAKshB,IAAUI,EAAMG,SAAW7hB,KAAK6hB,S,uBAIpH,SAAWjU,GASV,OAPA5N,KAAKohB,GAAKxT,EAAO,GACjB5N,KAAKqhB,GAAKzT,EAAO,GACjB5N,KAAKshB,GAAK1T,EAAO,QACGvN,IAAfuN,EAAO,KAAoB5N,KAAK6hB,OAASjU,EAAO,IAErD5N,KAAKwhB,oBAEExhB,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAO7B,OALAnH,EAAOmH,GAAW/U,KAAKohB,GACvBxT,EAAOmH,EAAS,GAAM/U,KAAKqhB,GAC3BzT,EAAOmH,EAAS,GAAM/U,KAAKshB,GAC3B1T,EAAOmH,EAAS,GAAM/U,KAAK6hB,OAEpBjU,I,uBAIR,SAAWgnB,GAEV,OAAKA,EAEGA,EAAezhB,IAAKnT,KAAKohB,GAAIphB,KAAKqhB,GAAIrhB,KAAKshB,IAI3C,IAAIqE,GAAS3lB,KAAKohB,GAAIphB,KAAKqhB,GAAIrhB,KAAKshB,M,uBAM7C,SAAW+C,GAIV,OAFArkB,KAAKwhB,kBAAoB6C,EAElBrkB,O,+BAIR,gB,KAIDs0B,GAAMhf,UAAUsM,SAAU,EAE1B0S,GAAMC,aAAe,MACrBD,GAAMO,eAAiB,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,O,IAEtDC,G,WAEL,aAAc,oBAEb90B,KAAK+0B,KAAO,E,uCAIb,SAAKC,GAEJh1B,KAAK+0B,KAAO,GAAKC,EAAU,I,oBAI5B,SAAQA,GAEPh1B,KAAK+0B,MAAQ,GAAKC,EAAU,I,uBAI7B,WAECh1B,KAAK+0B,MAAO,I,oBAIb,SAAQC,GAEPh1B,KAAK+0B,MAAQ,GAAKC,EAAU,I,qBAI7B,SAASA,GAERh1B,KAAK+0B,QAAY,GAAKC,EAAU,K,wBAIjC,WAECh1B,KAAK+0B,KAAO,I,kBAIb,SAAME,GAEL,OAAuC,KAA9Bj1B,KAAK+0B,KAAOE,EAAOF,U,KAM1BG,GAAc,EAEZC,GAAsB,IAAIxP,GAC1ByP,GAAoB,IAAIjU,GACxBkU,GAAsB,IAAItF,GAC1BuF,GAAwB,IAAI3P,GAE5B4P,GAA4B,IAAI5P,GAChC6P,GAAyB,IAAI7P,GAC7B8P,GAA8B,IAAItU,GAElCuU,GAAuB,IAAI/P,GAAS,EAAG,EAAG,GAC1CgQ,GAAuB,IAAIhQ,GAAS,EAAG,EAAG,GAC1CiQ,GAAuB,IAAIjQ,GAAS,EAAG,EAAG,GAE1CkQ,GAAc,CAAE5oB,KAAM,SACtB6oB,GAAgB,CAAE7oB,KAAM,WAExB8oB,G,kDAEL,aAAc,0BAEb,eAEAzlB,OAAO6L,eAAP7L,OAAA,IAAAA,CAAA,GAA6B,KAAM,CAAE9Q,MAAO01B,OAE5C,EAAK9Y,KAAOzN,KAEZ,EAAK4L,KAAO,GACZ,EAAKtN,KAAO,WAEZ,EAAK+oB,OAAS,KACd,EAAK9L,SAAW,GAEhB,EAAKuH,GAAKsE,EAASE,UAAUvV,QAE7B,IAAMqS,EAAW,IAAIpN,GACf3M,EAAW,IAAIsb,GACf7S,EAAa,IAAIN,GACjB6R,EAAQ,IAAIrN,GAAS,EAAG,EAAG,GAnBpB,OAiCb3M,EAASkd,WAZT,WAECzU,EAAWsE,aAAc/M,GAAU,MAWpCyI,EAAWyU,WAPX,WAECld,EAAS2b,kBAAmBlT,OAAYphB,GAAW,MAOpDiQ,OAAO6lB,iBAAP7lB,OAAA,IAAAA,CAAA,GAA+B,CAC9ByiB,SAAU,CACTqD,cAAc,EACdC,YAAY,EACZ72B,MAAOuzB,GAER/Z,SAAU,CACTod,cAAc,EACdC,YAAY,EACZ72B,MAAOwZ,GAERyI,WAAY,CACX2U,cAAc,EACdC,YAAY,EACZ72B,MAAOiiB,GAERuR,MAAO,CACNoD,cAAc,EACdC,YAAY,EACZ72B,MAAOwzB,GAERsD,gBAAiB,CAChB92B,MAAO,IAAIuwB,IAEZwG,aAAc,CACb/2B,MAAO,IAAIgW,MAIb,EAAK4D,OAAS,IAAI2W,GAClB,EAAKjJ,YAAc,IAAIiJ,GAEvB,EAAKvT,iBAAmBuZ,EAASS,wBACjC,EAAKC,wBAAyB,EAE9B,EAAKxB,OAAS,IAAIH,GAClB,EAAK4B,SAAU,EAEf,EAAKC,YAAa,EAClB,EAAKC,eAAgB,EAErB,EAAKC,eAAgB,EACrB,EAAKC,YAAc,EAEnB,EAAKC,WAAa,GAElB,EAAKC,SAAW,GAlFH,E,kDAsFd,c,2BAEA,c,0BAEA,SAAc5d,GAERpZ,KAAKwc,kBAAmBxc,KAAKi3B,eAElCj3B,KAAKoZ,OAAO8d,YAAa9d,GAEzBpZ,KAAKoZ,OAAO+d,UAAWn3B,KAAK+yB,SAAU/yB,KAAKyhB,WAAYzhB,KAAKgzB,S,6BAI7D,SAAiB5gB,GAIhB,OAFApS,KAAKyhB,WAAWyV,YAAa9kB,GAEtBpS,O,sCAIR,SAA0BkiB,EAAM5N,GAI/BtU,KAAKyhB,WAAWuE,iBAAkB9D,EAAM5N,K,kCAIzC,SAAsBoN,GAErB1hB,KAAKyhB,WAAWsE,aAAcrE,GAAO,K,mCAItC,SAAuBlS,GAItBxP,KAAKyhB,WAAWmS,sBAAuBpkB,K,uCAIxC,SAA2B4C,GAI1BpS,KAAKyhB,WAAWxE,KAAM7K,K,0BAIvB,SAAc8P,EAAM5N,GASnB,OAJA8gB,GAAIpP,iBAAkB9D,EAAM5N,GAE5BtU,KAAKyhB,WAAW2V,SAAUhC,IAEnBp1B,O,+BAIR,SAAmBkiB,EAAM5N,GAUxB,OAJA8gB,GAAIpP,iBAAkB9D,EAAM5N,GAE5BtU,KAAKyhB,WAAWyV,YAAa9B,IAEtBp1B,O,qBAIR,SAASsU,GAER,OAAOtU,KAAKq3B,aAAc3B,GAAQphB,K,qBAInC,SAASA,GAER,OAAOtU,KAAKq3B,aAAc1B,GAAQrhB,K,qBAInC,SAASA,GAER,OAAOtU,KAAKq3B,aAAczB,GAAQthB,K,6BAInC,SAAiB4N,EAAMoV,GAStB,OAJAnC,GAAMlY,KAAMiF,GAAO2D,gBAAiB7lB,KAAKyhB,YAEzCzhB,KAAK+yB,SAAS3J,IAAK+L,GAAMrhB,eAAgBwjB,IAElCt3B,O,wBAIR,SAAYs3B,GAEX,OAAOt3B,KAAKu3B,gBAAiB7B,GAAQ4B,K,wBAItC,SAAYA,GAEX,OAAOt3B,KAAKu3B,gBAAiB5B,GAAQ2B,K,wBAItC,SAAYA,GAEX,OAAOt3B,KAAKu3B,gBAAiB3B,GAAQ0B,K,0BAItC,SAAc5N,GAEb,OAAOA,EAAOhD,aAAc1mB,KAAK8mB,e,0BAIlC,SAAc4C,GAEb,OAAOA,EAAOhD,aAAc2O,GAAMpY,KAAMjd,KAAK8mB,aAAcrO,Y,oBAI5D,SAAQ/I,EAAGC,EAAG8O,GAIR/O,EAAE4Y,UAENgN,GAAQrY,KAAMvN,GAId4lB,GAAQniB,IAAKzD,EAAGC,EAAG8O,GAIpB,IAAMuX,EAASh2B,KAAKg2B,OAEpBh2B,KAAK4pB,mBAAmB,GAAM,GAE9B2L,GAAYiC,sBAAuBx3B,KAAK8mB,aAEnC9mB,KAAKy3B,UAAYz3B,KAAK03B,QAE1BrC,GAAMsC,OAAQpC,GAAaD,GAASt1B,KAAKyxB,IAIzC4D,GAAMsC,OAAQrC,GAASC,GAAav1B,KAAKyxB,IAI1CzxB,KAAKyhB,WAAWmS,sBAAuByB,IAElCW,IAEJX,GAAMuC,gBAAiB5B,EAAOlP,aAC9BsO,GAAIxB,sBAAuByB,IAC3Br1B,KAAKyhB,WAAWyV,YAAa9B,GAAI3c,a,iBAMnC,SAAK4Q,GAEJ,GAAKnpB,UAAU8N,OAAS,EAAI,CAE3B,IAAM,IAAIF,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAEtC9N,KAAKopB,IAAKlpB,UAAW4N,IAItB,OAAO9N,KAIR,OAAKqpB,IAAWrpB,MAEfoT,QAAQ3T,MAAO,kEAAoE4pB,GAC5ErpB,OAIHqpB,GAAUA,EAAOwO,YAEE,OAAlBxO,EAAO2M,QAEX3M,EAAO2M,OAAO8B,OAAQzO,GAIvBA,EAAO2M,OAASh2B,KAChBA,KAAKkqB,SAAS5c,KAAM+b,GAEpBA,EAAOrL,cAAe6X,KAItBziB,QAAQ3T,MAAO,gEAAiE4pB,GAI1ErpB,Q,oBAIR,SAAQqpB,GAEP,GAAKnpB,UAAU8N,OAAS,EAAI,CAE3B,IAAM,IAAIF,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAEtC9N,KAAK83B,OAAQ53B,UAAW4N,IAIzB,OAAO9N,KAIR,IAAMwN,EAAQxN,KAAKkqB,SAAS7c,QAASgc,GAWrC,OATiB,IAAZ7b,IAEJ6b,EAAO2M,OAAS,KAChBh2B,KAAKkqB,SAASzc,OAAQD,EAAO,GAE7B6b,EAAOrL,cAAe8X,KAIhB91B,O,8BAIR,WAEC,IAAMg2B,EAASh2B,KAAKg2B,OAQpB,OANgB,OAAXA,GAEJA,EAAO8B,OAAQ93B,MAITA,O,mBAIR,WAEC,IAAM,IAAI8N,EAAI,EAAGA,EAAI9N,KAAKkqB,SAASlc,OAAQF,IAAO,CAEjD,IAAMub,EAASrpB,KAAKkqB,SAAUpc,GAE9Bub,EAAO2M,OAAS,KAEhB3M,EAAOrL,cAAe8X,IAMvB,OAFA91B,KAAKkqB,SAASlc,OAAS,EAEhBhO,O,oBAKR,SAAQqpB,GAsBP,OAlBArpB,KAAK4pB,mBAAmB,GAAM,GAE9ByL,GAAMpY,KAAMjd,KAAK8mB,aAAcrO,SAER,OAAlB4Q,EAAO2M,SAEX3M,EAAO2M,OAAOpM,mBAAmB,GAAM,GAEvCyL,GAAM+B,SAAU/N,EAAO2M,OAAOlP,cAI/BuC,EAAO3C,aAAc2O,IAErBr1B,KAAKopB,IAAKC,GAEVA,EAAOO,mBAAmB,GAAO,GAE1B5pB,O,2BAIR,SAAe+3B,GAEd,OAAO/3B,KAAKg4B,oBAAqB,KAAMD,K,6BAIxC,SAAiBxd,GAEhB,OAAOva,KAAKg4B,oBAAqB,OAAQzd,K,iCAI1C,SAAqBA,EAAM/a,GAE1B,GAAKQ,KAAMua,KAAW/a,EAAQ,OAAOQ,KAErC,IAAM,IAAI8N,EAAI,EAAGC,EAAI/N,KAAKkqB,SAASlc,OAAQF,EAAIC,EAAGD,IAAO,CAExD,IACMub,EADQrpB,KAAKkqB,SAAUpc,GACRkqB,oBAAqBzd,EAAM/a,GAEhD,QAAgBa,IAAXgpB,EAEJ,OAAOA,K,8BAUV,SAAkB1b,GAIjB,OAFA3N,KAAK4pB,mBAAmB,GAAM,GAEvBjc,EAAO6pB,sBAAuBx3B,KAAK8mB,e,gCAI3C,SAAoBnZ,GAMnB,OAJA3N,KAAK4pB,mBAAmB,GAAM,GAE9B5pB,KAAK8mB,YAAYqQ,UAAW5B,GAAa5nB,EAAQ6nB,IAE1C7nB,I,2BAIR,SAAeA,GAMd,OAJA3N,KAAK4pB,mBAAmB,GAAM,GAE9B5pB,KAAK8mB,YAAYqQ,UAAW5B,GAAaE,GAAe9nB,GAEjDA,I,+BAIR,SAAmBA,GAElB3N,KAAK4pB,mBAAmB,GAAM,GAE9B,IAAM7V,EAAI/T,KAAK8mB,YAAY9S,SAE3B,OAAOrG,EAAOwF,IAAKY,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOY,c,qBAI9C,c,sBAEA,SAAU0P,GAETA,EAAUrkB,MAIV,IAFA,IAAMkqB,EAAWlqB,KAAKkqB,SAEZpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5Coc,EAAUpc,GAAImqB,SAAU5T,K,6BAM1B,SAAiBA,GAEhB,IAAsB,IAAjBrkB,KAAK02B,QAAV,CAEArS,EAAUrkB,MAIV,IAFA,IAAMkqB,EAAWlqB,KAAKkqB,SAEZpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5Coc,EAAUpc,GAAIoqB,gBAAiB7T,M,+BAMjC,SAAmBA,GAElB,IAAM2R,EAASh2B,KAAKg2B,OAEJ,OAAXA,IAEJ3R,EAAU2R,GAEVA,EAAOmC,kBAAmB9T,M,0BAM5B,WAECrkB,KAAKoZ,OAAOiY,QAASrxB,KAAK+yB,SAAU/yB,KAAKyhB,WAAYzhB,KAAKgzB,OAE1DhzB,KAAKy2B,wBAAyB,I,+BAI/B,SAAmB2B,GAEbp4B,KAAKwc,kBAAmBxc,KAAKi3B,gBAE7Bj3B,KAAKy2B,wBAA0B2B,KAEd,OAAhBp4B,KAAKg2B,OAETh2B,KAAK8mB,YAAY7J,KAAMjd,KAAKoZ,QAI5BpZ,KAAK8mB,YAAYtQ,iBAAkBxW,KAAKg2B,OAAOlP,YAAa9mB,KAAKoZ,QAIlEpZ,KAAKy2B,wBAAyB,EAE9B2B,GAAQ,GAQT,IAFA,IAAMlO,EAAWlqB,KAAKkqB,SAEZpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5Coc,EAAUpc,GAAIuqB,kBAAmBD,K,+BAMnC,SAAmBE,EAAeC,GAEjC,IAAMvC,EAASh2B,KAAKg2B,OAsBpB,IApBuB,IAAlBsC,GAAqC,OAAXtC,GAE9BA,EAAOpM,mBAAmB,GAAM,GAI5B5pB,KAAKwc,kBAAmBxc,KAAKi3B,eAEb,OAAhBj3B,KAAKg2B,OAETh2B,KAAK8mB,YAAY7J,KAAMjd,KAAKoZ,QAI5BpZ,KAAK8mB,YAAYtQ,iBAAkBxW,KAAKg2B,OAAOlP,YAAa9mB,KAAKoZ,SAM1C,IAAnBmf,EAIJ,IAFA,IAAMrO,EAAWlqB,KAAKkqB,SAEZpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5Coc,EAAUpc,GAAI8b,mBAAmB,GAAO,K,oBAQ3C,SAAQzM,GAGP,IAAMC,OAA0B/c,IAAT8c,GAAsC,kBAATA,EAE9CG,EAAS,GAKVF,IAGJD,EAAO,CACNqb,WAAY,GACZC,UAAW,GACXpb,SAAU,GACVK,OAAQ,GACRgb,OAAQ,GACRC,UAAW,GACX5B,WAAY,IAGbzZ,EAAOC,SAAW,CACjBV,QAAS,IACT5P,KAAM,SACNuQ,UAAW,oBAOb,IAAM6L,EAAS,GA+Bf,SAASuP,EAAWC,EAASC,GAQ5B,YANiCz4B,IAA5Bw4B,EAASC,EAAQ1c,QAErByc,EAASC,EAAQ1c,MAAS0c,EAAQC,OAAQ5b,IAIpC2b,EAAQ1c,KAIhB,GAzCAiN,EAAOjN,KAAOpc,KAAKoc,KACnBiN,EAAOpc,KAAOjN,KAAKiN,KAEA,KAAdjN,KAAKua,OAAc8O,EAAO9O,KAAOva,KAAKua,OAClB,IAApBva,KAAK22B,aAAsBtN,EAAOsN,YAAa,IACxB,IAAvB32B,KAAK42B,gBAAyBvN,EAAOuN,eAAgB,IACpC,IAAjB52B,KAAK02B,UAAoBrN,EAAOqN,SAAU,IACnB,IAAvB12B,KAAK62B,gBAA0BxN,EAAOwN,eAAgB,GACjC,IAArB72B,KAAK82B,cAAoBzN,EAAOyN,YAAc92B,KAAK82B,aACf,OAApCkC,KAAKC,UAAWj5B,KAAKg3B,YAAsB3N,EAAO2N,SAAWh3B,KAAKg3B,UAEvE3N,EAAO4L,OAASj1B,KAAKi1B,OAAOF,KAC5B1L,EAAOjQ,OAASpZ,KAAKoZ,OAAO8f,WAEG,IAA1Bl5B,KAAKwc,mBAA6B6M,EAAO7M,kBAAmB,GAI5Dxc,KAAKm5B,kBAET9P,EAAOpc,KAAO,gBACdoc,EAAOxI,MAAQ7gB,KAAK6gB,MACpBwI,EAAO+P,eAAiBp5B,KAAKo5B,eAAeL,SAChB,OAAvB/4B,KAAKq5B,gBAAyBhQ,EAAOgQ,cAAgBr5B,KAAKq5B,cAAcN,WAkBzE/4B,KAAKs5B,QAEJt5B,KAAKu5B,aAEJv5B,KAAKu5B,WAAWC,QAEpBnQ,EAAOkQ,WAAav5B,KAAKu5B,WAAWR,SAEzB/4B,KAAKu5B,WAAWhb,YAE3B8K,EAAOkQ,WAAav5B,KAAKu5B,WAAWR,OAAQ5b,GAAOf,OAMhDpc,KAAKy5B,aAAez5B,KAAKy5B,YAAYlb,YAEzC8K,EAAOoQ,YAAcz5B,KAAKy5B,YAAYV,OAAQ5b,GAAOf,WAIhD,GAAKpc,KAAK05B,QAAU15B,KAAK25B,QAAU35B,KAAK45B,SAAW,CAEzDvQ,EAAOQ,SAAW+O,EAAWzb,EAAKqb,WAAYx4B,KAAK6pB,UAEnD,IAAMgQ,EAAa75B,KAAK6pB,SAASgQ,WAEjC,QAAoBx5B,IAAfw5B,QAAkDx5B,IAAtBw5B,EAAWnB,OAAuB,CAElE,IAAMA,EAASmB,EAAWnB,OAE1B,GAAK9a,MAAMC,QAAS6a,GAEnB,IAAM,IAAI5qB,EAAI,EAAGC,EAAI2qB,EAAO1qB,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMgsB,EAAQpB,EAAQ5qB,GAEtB8qB,EAAWzb,EAAKub,OAAQoB,QAMzBlB,EAAWzb,EAAKub,OAAQA,IAuB3B,GAfK14B,KAAK+5B,gBAET1Q,EAAO2Q,SAAWh6B,KAAKg6B,SACvB3Q,EAAO4Q,WAAaj6B,KAAKi6B,WAAWf,eAEb74B,IAAlBL,KAAKk6B,WAETtB,EAAWzb,EAAKwb,UAAW34B,KAAKk6B,UAEhC7Q,EAAO6Q,SAAWl6B,KAAKk6B,SAAS9d,YAMX/b,IAAlBL,KAAKm6B,SAET,GAAKvc,MAAMC,QAAS7d,KAAKm6B,UAAa,CAIrC,IAFA,IAAMC,EAAQ,GAEJtsB,EAAI,EAAGC,EAAI/N,KAAKm6B,SAASnsB,OAAQF,EAAIC,EAAGD,IAEjDssB,EAAM9sB,KAAMsrB,EAAWzb,EAAKsb,UAAWz4B,KAAKm6B,SAAUrsB,KAIvDub,EAAO8Q,SAAWC,OAIlB/Q,EAAO8Q,SAAWvB,EAAWzb,EAAKsb,UAAWz4B,KAAKm6B,UAQpD,GAAKn6B,KAAKkqB,SAASlc,OAAS,EAAI,CAE/Bqb,EAAOa,SAAW,GAElB,IAAM,IAAIpc,EAAI,EAAGA,EAAI9N,KAAKkqB,SAASlc,OAAQF,IAE1Cub,EAAOa,SAAS5c,KAAMtN,KAAKkqB,SAAUpc,GAAIirB,OAAQ5b,GAAOkM,QAQ1D,GAAKrpB,KAAK+2B,WAAW/oB,OAAS,EAAI,CAEjCqb,EAAO0N,WAAa,GAEpB,IAAM,IAAIjpB,EAAI,EAAGA,EAAI9N,KAAK+2B,WAAW/oB,OAAQF,IAAO,CAEnD,IAAMusB,EAAYr6B,KAAK+2B,WAAYjpB,GAEnCub,EAAO0N,WAAWzpB,KAAMsrB,EAAWzb,EAAK4Z,WAAYsD,KAMtD,GAAKjd,EAAe,CAEnB,IAAMob,EAAa8B,EAAkBnd,EAAKqb,YACpCC,EAAY6B,EAAkBnd,EAAKsb,WACnCpb,EAAWid,EAAkBnd,EAAKE,UAClCK,EAAS4c,EAAkBnd,EAAKO,QAChCgb,EAAS4B,EAAkBnd,EAAKub,QAChCC,EAAY2B,EAAkBnd,EAAKwb,WACnC5B,EAAauD,EAAkBnd,EAAK4Z,YAErCyB,EAAWxqB,OAAS,IAAIsP,EAAOkb,WAAaA,GAC5CC,EAAUzqB,OAAS,IAAIsP,EAAOmb,UAAYA,GAC1Cpb,EAASrP,OAAS,IAAIsP,EAAOD,SAAWA,GACxCK,EAAO1P,OAAS,IAAIsP,EAAOI,OAASA,GACpCgb,EAAO1qB,OAAS,IAAIsP,EAAOob,OAASA,GACpCC,EAAU3qB,OAAS,IAAIsP,EAAOqb,UAAYA,GAC1C5B,EAAW/oB,OAAS,IAAIsP,EAAOyZ,WAAaA,GAMlD,OAFAzZ,EAAO+L,OAASA,EAET/L,EAKP,SAASgd,EAAkBC,GAE1B,IAAMC,EAAS,GACf,IAAM,IAAMn7B,KAAOk7B,EAAQ,CAE1B,IAAMjc,EAAOic,EAAOl7B,UACbif,EAAKf,SACZid,EAAOltB,KAAMgR,GAId,OAAOkc,K,mBAMT,SAAOC,GAEN,OAAO,IAAIz6B,KAAKyT,aAAcwJ,KAAMjd,KAAMy6B,K,kBAI3C,SAAMvd,GAA2B,IAAnBud,IAAmB,yDA4BhC,GA1BAz6B,KAAKua,KAAO2C,EAAO3C,KAEnBva,KAAKyxB,GAAGxU,KAAMC,EAAOuU,IAErBzxB,KAAK+yB,SAAS9V,KAAMC,EAAO6V,UAC3B/yB,KAAKgZ,SAASxG,MAAQ0K,EAAOlE,SAASxG,MACtCxS,KAAKyhB,WAAWxE,KAAMC,EAAOuE,YAC7BzhB,KAAKgzB,MAAM/V,KAAMC,EAAO8V,OAExBhzB,KAAKoZ,OAAO6D,KAAMC,EAAO9D,QACzBpZ,KAAK8mB,YAAY7J,KAAMC,EAAO4J,aAE9B9mB,KAAKwc,iBAAmBU,EAAOV,iBAC/Bxc,KAAKy2B,uBAAyBvZ,EAAOuZ,uBAErCz2B,KAAKi1B,OAAOF,KAAO7X,EAAO+X,OAAOF,KACjC/0B,KAAK02B,QAAUxZ,EAAOwZ,QAEtB12B,KAAK22B,WAAazZ,EAAOyZ,WACzB32B,KAAK42B,cAAgB1Z,EAAO0Z,cAE5B52B,KAAK62B,cAAgB3Z,EAAO2Z,cAC5B72B,KAAK82B,YAAc5Z,EAAO4Z,YAE1B92B,KAAKg3B,SAAWgC,KAAK0B,MAAO1B,KAAKC,UAAW/b,EAAO8Z,YAEhC,IAAdyD,EAEJ,IAAM,IAAI3sB,EAAI,EAAGA,EAAIoP,EAAOgN,SAASlc,OAAQF,IAAO,CAEnD,IAAM6sB,EAAQzd,EAAOgN,SAAUpc,GAC/B9N,KAAKopB,IAAKuR,EAAMja,SAMlB,OAAO1gB,S,GAn3BcgN,IAy3BvB+oB,GAASE,UAAY,IAAItQ,GAAS,EAAG,EAAG,GACxCoQ,GAASS,yBAA0B,EAEnCT,GAASzgB,UAAUuiB,YAAa,EAEhC,IAAM+C,GAAsB,IAAIjV,GAC1BkV,GAAsB,IAAIlV,GAC1BmV,GAAsB,IAAInV,GAC1BoV,GAAsB,IAAIpV,GAE1BqV,GAAqB,IAAIrV,GACzBsV,GAAqB,IAAItV,GACzBuV,GAAqB,IAAIvV,GACzBwV,GAAqB,IAAIxV,GACzByV,GAAqB,IAAIzV,GACzB0V,GAAqB,IAAI1V,GAEzB2V,G,WAEL,aAAuE,IAA1DjpB,EAA0D,uDAAtD,IAAIsT,GAAWrT,EAAuC,uDAAnC,IAAIqT,GAAWpT,EAAoB,uDAAhB,IAAIoT,GAAY,oBAEtE3lB,KAAKqS,EAAIA,EACTrS,KAAKsS,EAAIA,EACTtS,KAAKuS,EAAIA,E,uCAsFV,SAAKF,EAAGC,EAAGC,GAMV,OAJAvS,KAAKqS,EAAE4K,KAAM5K,GACbrS,KAAKsS,EAAE2K,KAAM3K,GACbtS,KAAKuS,EAAE0K,KAAM1K,GAENvS,O,qCAIR,SAAyB8oB,EAAQyS,EAAIC,EAAIC,GAMxC,OAJAz7B,KAAKqS,EAAE4K,KAAM6L,EAAQyS,IACrBv7B,KAAKsS,EAAE2K,KAAM6L,EAAQ0S,IACrBx7B,KAAKuS,EAAE0K,KAAM6L,EAAQ2S,IAEdz7B,O,wCAIR,SAA4BgV,EAAWumB,EAAIC,EAAIC,GAM9C,OAJAz7B,KAAKqS,EAAEqpB,oBAAqB1mB,EAAWumB,GACvCv7B,KAAKsS,EAAEopB,oBAAqB1mB,EAAWwmB,GACvCx7B,KAAKuS,EAAEmpB,oBAAqB1mB,EAAWymB,GAEhCz7B,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMuqB,GAML,OAJAvqB,KAAKqS,EAAE4K,KAAMsN,EAASlY,GACtBrS,KAAKsS,EAAE2K,KAAMsN,EAASjY,GACtBtS,KAAKuS,EAAE0K,KAAMsN,EAAShY,GAEfvS,O,qBAIR,WAKC,OAHA46B,GAAM/mB,WAAY7T,KAAKuS,EAAGvS,KAAKsS,GAC/BuoB,GAAMhnB,WAAY7T,KAAKqS,EAAGrS,KAAKsS,GAEQ,GAAhCsoB,GAAMhL,MAAOiL,IAAQ7sB,W,yBAI7B,SAAaL,GAEZ,OAAOA,EAAOiG,WAAY5T,KAAKqS,EAAGrS,KAAKsS,GAAI8W,IAAKppB,KAAKuS,GAAIuB,eAAgB,EAAI,K,uBAI9E,SAAWnG,GAEV,OAAO2tB,EAASK,UAAW37B,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAKuS,EAAG5E,K,sBAIpD,SAAUA,GAET,OAAOA,EAAOiuB,sBAAuB57B,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAKuS,K,0BAI3D,SAAckX,EAAO9b,GAEpB,OAAO2tB,EAASO,aAAcpS,EAAOzpB,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAKuS,EAAG5E,K,mBAI9D,SAAO8b,EAAOqS,EAAKC,EAAKC,EAAKruB,GAE5B,OAAO2tB,EAASW,MAAOxS,EAAOzpB,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAKuS,EAAGupB,EAAKC,EAAKC,EAAKruB,K,2BAItE,SAAe8b,GAEd,OAAO6R,EAASY,cAAezS,EAAOzpB,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAKuS,K,2BAI5D,SAAeib,GAEd,OAAO8N,EAASa,cAAen8B,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAKuS,EAAGib,K,2BAIxD,SAAejE,GAEd,OAAOA,EAAI6S,mBAAoBp8B,Q,iCAIhC,SAAqB8iB,EAAGnV,GAEvB,IACI+F,EAAGC,EADDtB,EAAIrS,KAAKqS,EAAGC,EAAItS,KAAKsS,EAAGC,EAAIvS,KAAKuS,EASvCyoB,GAAKnnB,WAAYvB,EAAGD,GACpB4oB,GAAKpnB,WAAYtB,EAAGF,GACpB8oB,GAAKtnB,WAAYiP,EAAGzQ,GACpB,IAAMrD,EAAKgsB,GAAKzY,IAAK4Y,IACflsB,EAAKgsB,GAAK1Y,IAAK4Y,IACrB,GAAKnsB,GAAM,GAAKC,GAAM,EAGrB,OAAOtB,EAAOsP,KAAM5K,GAIrB+oB,GAAKvnB,WAAYiP,EAAGxQ,GACpB,IAAMpD,EAAK8rB,GAAKzY,IAAK6Y,IACfiB,EAAKpB,GAAK1Y,IAAK6Y,IACrB,GAAKlsB,GAAM,GAAKmtB,GAAMntB,EAGrB,OAAOvB,EAAOsP,KAAM3K,GAIrB,IAAMgqB,EAAKttB,EAAKqtB,EAAKntB,EAAKD,EAC1B,GAAKqtB,GAAM,GAAKttB,GAAM,GAAKE,GAAM,EAIhC,OAFAwE,EAAI1E,GAAOA,EAAKE,GAETvB,EAAOsP,KAAM5K,GAAIkqB,gBAAiBvB,GAAMtnB,GAIhD2nB,GAAKxnB,WAAYiP,EAAGvQ,GACpB,IAAMiqB,EAAKxB,GAAKzY,IAAK8Y,IACfoB,EAAKxB,GAAK1Y,IAAK8Y,IACrB,GAAKoB,GAAM,GAAKD,GAAMC,EAGrB,OAAO9uB,EAAOsP,KAAM1K,GAIrB,IAAMmqB,EAAKF,EAAKvtB,EAAKD,EAAKytB,EAC1B,GAAKC,GAAM,GAAKztB,GAAM,GAAKwtB,GAAM,EAIhC,OAFA9oB,EAAI1E,GAAOA,EAAKwtB,GAET9uB,EAAOsP,KAAM5K,GAAIkqB,gBAAiBtB,GAAMtnB,GAIhD,IAAMgpB,EAAKztB,EAAKutB,EAAKD,EAAKH,EAC1B,GAAKM,GAAM,GAAON,EAAKntB,GAAQ,GAAOstB,EAAKC,GAAQ,EAKlD,OAHAvB,GAAKrnB,WAAYtB,EAAGD,GACpBqB,GAAM0oB,EAAKntB,IAAWmtB,EAAKntB,GAASstB,EAAKC,IAElC9uB,EAAOsP,KAAM3K,GAAIiqB,gBAAiBrB,GAAMvnB,GAKhD,IAAMipB,EAAQ,GAAMD,EAAKD,EAAKJ,GAK9B,OAHA5oB,EAAIgpB,EAAKE,EACTjpB,EAAI2oB,EAAKM,EAEFjvB,EAAOsP,KAAM5K,GAAIkqB,gBAAiBvB,GAAMtnB,GAAI6oB,gBAAiBtB,GAAMtnB,K,oBAI3E,SAAQ4W,GAEP,OAAOA,EAASlY,EAAEkZ,OAAQvrB,KAAKqS,IAAOkY,EAASjY,EAAEiZ,OAAQvrB,KAAKsS,IAAOiY,EAAShY,EAAEgZ,OAAQvrB,KAAKuS,M,wBA5Q9F,SAAkBF,EAAGC,EAAGC,EAAG5E,GAE1BA,EAAOkG,WAAYtB,EAAGD,GACtBsoB,GAAM/mB,WAAYxB,EAAGC,GACrB3E,EAAOiiB,MAAOgL,IAEd,IAAMiC,EAAiBlvB,EAAO4Z,WAC9B,OAAKsV,EAAiB,EAEdlvB,EAAOmG,eAAgB,EAAI1F,KAAKiG,KAAMwoB,IAIvClvB,EAAOwF,IAAK,EAAG,EAAG,K,0BAM1B,SAAqBsW,EAAOpX,EAAGC,EAAGC,EAAG5E,GAEpCitB,GAAM/mB,WAAYtB,EAAGF,GACrBwoB,GAAMhnB,WAAYvB,EAAGD,GACrByoB,GAAMjnB,WAAY4V,EAAOpX,GAEzB,IAAMyqB,EAAQlC,GAAMrY,IAAKqY,IACnBmC,EAAQnC,GAAMrY,IAAKsY,IACnBmC,EAAQpC,GAAMrY,IAAKuY,IACnBmC,EAAQpC,GAAMtY,IAAKsY,IACnBqC,EAAQrC,GAAMtY,IAAKuY,IAEnB8B,EAAUE,EAAQG,EAAQF,EAAQA,EAGxC,GAAe,IAAVH,EAIJ,OAAOjvB,EAAOwF,KAAO,GAAK,GAAK,GAIhC,IAAMgqB,EAAW,EAAIP,EACfvU,GAAM4U,EAAQD,EAAQD,EAAQG,GAAUC,EACxCzpB,GAAMopB,EAAQI,EAAQH,EAAQC,GAAUG,EAG9C,OAAOxvB,EAAOwF,IAAK,EAAIkV,EAAI3U,EAAGA,EAAG2U,K,2BAIlC,SAAsBoB,EAAOpX,EAAGC,EAAGC,GAIlC,OAFAvS,KAAK67B,aAAcpS,EAAOpX,EAAGC,EAAGC,EAAGwoB,IAE1BA,GAAMrrB,GAAK,GAASqrB,GAAMprB,GAAK,GAAWorB,GAAMrrB,EAAIqrB,GAAMprB,GAAO,I,mBAI3E,SAAc8Z,EAAOqC,EAAIC,EAAIqR,EAAItB,EAAKC,EAAKC,EAAKruB,GAS/C,OAPA3N,KAAK67B,aAAcpS,EAAOqC,EAAIC,EAAIqR,EAAIrC,IAEtCptB,EAAOwF,IAAK,EAAG,GACfxF,EAAO4uB,gBAAiBT,EAAKf,GAAMrrB,GACnC/B,EAAO4uB,gBAAiBR,EAAKhB,GAAMprB,GACnChC,EAAO4uB,gBAAiBP,EAAKjB,GAAMtc,GAE5B9Q,I,2BAIR,SAAsB0E,EAAGC,EAAGC,EAAGib,GAM9B,OAJAoN,GAAM/mB,WAAYtB,EAAGD,GACrBuoB,GAAMhnB,WAAYxB,EAAGC,GAGZsoB,GAAMhL,MAAOiL,IAAQtY,IAAKiL,GAAc,M,KAoM/C6P,GAAa,EAEXC,G,kDAEL,aAAc,iCAEb,eAEAhtB,OAAO6L,eAAP7L,OAAA,IAAAA,CAAA,GAA6B,KAAM,CAAE9Q,MAAO69B,OAE5C,EAAKjhB,KAAOzN,KAEZ,EAAK4L,KAAO,GACZ,EAAKtN,KAAO,WAEZ,EAAKswB,KAAM,EAEX,EAAKC,SAAWz7B,EAChB,EAAK07B,KAAOh8B,EACZ,EAAKi8B,cAAe,EAEpB,EAAKC,QAAU,EACf,EAAK3hB,OAASzV,GACd,EAAKq3B,aAAc,EAEnB,EAAKC,SAAWh7B,EAChB,EAAKi7B,SAAWh7B,EAChB,EAAKi7B,cAAgB37B,EACrB,EAAK47B,cAAgB,KACrB,EAAKC,cAAgB,KACrB,EAAKC,mBAAqB,KAE1B,EAAKC,UAAY56B,GACjB,EAAK66B,WAAY,EACjB,EAAKC,YAAa,EAElB,EAAKC,iBAAmB,IACxB,EAAKC,YAAcnyB,GACnB,EAAKoyB,WAAa,EAClB,EAAKC,gBAAkB,IACvB,EAAKC,YAAcpzB,GACnB,EAAKqzB,aAAerzB,GACpB,EAAKszB,aAAetzB,GACpB,EAAKuzB,cAAe,EAEpB,EAAKC,eAAiB,KACtB,EAAKC,kBAAmB,EACxB,EAAKC,aAAc,EAEnB,EAAKC,WAAa,KAElB,EAAKC,YAAa,EAElB,EAAKC,UAAY,KAEjB,EAAKC,eAAgB,EACrB,EAAKC,oBAAsB,EAC3B,EAAKC,mBAAqB,EAE1B,EAAKC,WAAY,EAEjB,EAAKC,iBAAkB,EACvB,EAAKC,oBAAqB,EAE1B,EAAK/I,SAAU,EAEf,EAAKgJ,YAAa,EAElB,EAAK1I,SAAW,GAEhB,EAAKna,QAAU,EAEf,EAAK8iB,WAAa,EApEL,E,2CAwEd,WAEC,OAAO3/B,KAAK2/B,Y,IAIb,SAAengC,GAETQ,KAAK2/B,WAAa,IAAMngC,EAAQ,GAEpCQ,KAAK6c,UAIN7c,KAAK2/B,WAAangC,I,qBAInB,c,4BAEA,c,6BAEA,c,mCAEA,WAEC,OAAOQ,KAAK4/B,gBAAgBpxB,a,uBAI7B,SAAWgsB,GAEV,QAAgBn6B,IAAXm6B,EAEL,IAAM,IAAMn7B,KAAOm7B,EAAS,CAE3B,IAAMqF,EAAWrF,EAAQn7B,GAEzB,QAAkBgB,IAAbw/B,EAQL,GAAa,YAARxgC,EAAL,CAQA,IAAMygC,EAAe9/B,KAAMX,QAELgB,IAAjBy/B,EAOAA,GAAgBA,EAAatG,QAEjCsG,EAAa3sB,IAAK0sB,GAELC,GAAgBA,EAAaxX,WAAiBuX,GAAYA,EAASvX,UAEhFwX,EAAa7iB,KAAM4iB,GAInB7/B,KAAMX,GAAQwgC,EAfdzsB,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,MAAS5N,EAAM,8CAVpD+T,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,sEACrCjN,KAAK+/B,YAAgBF,IAAaj+B,OATlCwR,QAAQC,KAAM,oBAAuBhU,EAAM,gC,oBAyC9C,SAAQ8d,GAEP,IAAM6iB,OAAoB3/B,IAAT8c,GAAsC,kBAATA,EAEzC6iB,IAEJ7iB,EAAO,CACNE,SAAU,GACVK,OAAQ,KAKV,IAAMY,EAAO,CACZf,SAAU,CACTV,QAAS,IACT5P,KAAM,WACNuQ,UAAW,oBAoLb,SAAS8c,EAAkBC,GAE1B,IAAMC,EAAS,GAEf,IAAM,IAAMn7B,KAAOk7B,EAAQ,CAE1B,IAAMjc,EAAOic,EAAOl7B,UACbif,EAAKf,SACZid,EAAOltB,KAAMgR,GAId,OAAOkc,EAIR,GA/LAlc,EAAKlC,KAAOpc,KAAKoc,KACjBkC,EAAKrR,KAAOjN,KAAKiN,KAEE,KAAdjN,KAAKua,OAAc+D,EAAK/D,KAAOva,KAAKua,MAEpCva,KAAKigC,OAASjgC,KAAKigC,MAAMzG,UAAUlb,EAAK2hB,MAAQjgC,KAAKigC,MAAMC,eAExC7/B,IAAnBL,KAAKmgC,YAA0B7hB,EAAK6hB,UAAYngC,KAAKmgC,gBAClC9/B,IAAnBL,KAAKogC,YAA0B9hB,EAAK8hB,UAAYpgC,KAAKogC,gBAEtC//B,IAAfL,KAAKqgC,QAAsB/hB,EAAK+hB,MAAQrgC,KAAKqgC,OAC7CrgC,KAAKsgC,WAAatgC,KAAKsgC,UAAU9G,UAAUlb,EAAKgiB,UAAYtgC,KAAKsgC,UAAUJ,eACnD7/B,IAAxBL,KAAKugC,iBAA+BjiB,EAAKiiB,eAAiBvgC,KAAKugC,gBAC/DvgC,KAAKwgC,UAAYxgC,KAAKwgC,SAAShH,UAAUlb,EAAKkiB,SAAWxgC,KAAKwgC,SAASN,UACvElgC,KAAKygC,mBAAgD,IAA3BzgC,KAAKygC,oBAA0BniB,EAAKmiB,kBAAoBzgC,KAAKygC,mBAEvFzgC,KAAK0gC,UAAY1gC,KAAK0gC,SAASlH,UAAUlb,EAAKoiB,SAAW1gC,KAAK0gC,SAASR,eAC5C7/B,IAA3BL,KAAK2gC,oBAAkCriB,EAAKqiB,kBAAoB3gC,KAAK2gC,mBACrE3gC,KAAK4gC,cAAgB5gC,KAAK4gC,aAAapH,UAAUlb,EAAKsiB,aAAe5gC,KAAK4gC,aAAaV,eACpE7/B,IAAnBL,KAAK6gC,YAA0BviB,EAAKuiB,UAAY7gC,KAAK6gC,gBAClCxgC,IAAnBL,KAAK8gC,YAA0BxiB,EAAKwiB,UAAY9gC,KAAK8gC,gBACzBzgC,IAA5BL,KAAK+gC,qBAAmCziB,EAAKyiB,mBAAqB/gC,KAAK+gC,oBAEvE/gC,KAAKghC,cAAgBhhC,KAAKghC,aAAaziB,YAE3CD,EAAK0iB,aAAehhC,KAAKghC,aAAajI,OAAQ5b,GAAOf,MAIjDpc,KAAKihC,uBAAyBjhC,KAAKihC,sBAAsB1iB,YAE7DD,EAAK2iB,sBAAwBjhC,KAAKihC,sBAAsBlI,OAAQ5b,GAAOf,MAInEpc,KAAKkhC,oBAAsBlhC,KAAKkhC,mBAAmB3iB,YAEvDD,EAAK4iB,mBAAqBlhC,KAAKkhC,mBAAmBnI,OAAQ5b,GAAOf,KACjEkC,EAAK6iB,qBAAuBnhC,KAAKmhC,qBAAqBjI,WAIlDl5B,KAAKohC,KAAOphC,KAAKohC,IAAI7iB,YAAYD,EAAK8iB,IAAMphC,KAAKohC,IAAIrI,OAAQ5b,GAAOf,MACpEpc,KAAKqhC,QAAUrhC,KAAKqhC,OAAO9iB,YAAYD,EAAK+iB,OAASrhC,KAAKqhC,OAAOtI,OAAQ5b,GAAOf,MAChFpc,KAAKshC,UAAYthC,KAAKshC,SAAS/iB,YAAYD,EAAKgjB,SAAWthC,KAAKshC,SAASvI,OAAQ5b,GAAOf,MAExFpc,KAAKuhC,UAAYvhC,KAAKuhC,SAAShjB,YAEnCD,EAAKijB,SAAWvhC,KAAKuhC,SAASxI,OAAQ5b,GAAOf,KAC7CkC,EAAKkjB,kBAAoBxhC,KAAKwhC,mBAI1BxhC,KAAKyhC,OAASzhC,KAAKyhC,MAAMljB,YAE7BD,EAAKmjB,MAAQzhC,KAAKyhC,MAAM1I,OAAQ5b,GAAOf,KACvCkC,EAAKojB,eAAiB1hC,KAAK0hC,gBAIvB1hC,KAAK2hC,SAAW3hC,KAAK2hC,QAAQpjB,YAEjCD,EAAKqjB,QAAU3hC,KAAK2hC,QAAQ5I,OAAQ5b,GAAOf,KAC3CkC,EAAKsjB,UAAY5hC,KAAK4hC,WAIlB5hC,KAAK6hC,WAAa7hC,KAAK6hC,UAAUtjB,YAErCD,EAAKujB,UAAY7hC,KAAK6hC,UAAU9I,OAAQ5b,GAAOf,KAC/CkC,EAAKwjB,cAAgB9hC,KAAK8hC,cAC1BxjB,EAAKyjB,YAAc/hC,KAAK+hC,YAAY7I,WAIhCl5B,KAAKgiC,iBAAmBhiC,KAAKgiC,gBAAgBzjB,YAEjDD,EAAK0jB,gBAAkBhiC,KAAKgiC,gBAAgBjJ,OAAQ5b,GAAOf,KAC3DkC,EAAK2jB,kBAAoBjiC,KAAKiiC,kBAC9B3jB,EAAK4jB,iBAAmBliC,KAAKkiC,kBAIzBliC,KAAKmiC,cAAgBniC,KAAKmiC,aAAa5jB,YAAYD,EAAK6jB,aAAeniC,KAAKmiC,aAAapJ,OAAQ5b,GAAOf,MACxGpc,KAAKoiC,cAAgBpiC,KAAKoiC,aAAa7jB,YAAYD,EAAK8jB,aAAepiC,KAAKoiC,aAAarJ,OAAQ5b,GAAOf,MAExGpc,KAAKqiC,aAAeriC,KAAKqiC,YAAY9jB,YAAYD,EAAK+jB,YAAcriC,KAAKqiC,YAAYtJ,OAAQ5b,GAAOf,MACpGpc,KAAKsiC,aAAetiC,KAAKsiC,YAAY/jB,YAAYD,EAAKgkB,YAActiC,KAAKsiC,YAAYvJ,OAAQ5b,GAAOf,MACpGpc,KAAKuiC,sBAAwBviC,KAAKuiC,qBAAqBhkB,YAAYD,EAAKikB,qBAAuBviC,KAAKuiC,qBAAqBxJ,OAAQ5b,GAAOf,MACxIpc,KAAKwiC,iBAAmBxiC,KAAKwiC,gBAAgBjkB,YAAYD,EAAKkkB,gBAAkBxiC,KAAKwiC,gBAAgBzJ,OAAQ5b,GAAOf,MAEpHpc,KAAKyiC,QAAUziC,KAAKyiC,OAAOlkB,YAE/BD,EAAKmkB,OAASziC,KAAKyiC,OAAO1J,OAAQ5b,GAAOf,UAEnB/b,IAAjBL,KAAK0iC,UAAwBpkB,EAAKokB,QAAU1iC,KAAK0iC,eAIzBriC,IAAzBL,KAAK2iC,kBAAgCrkB,EAAKqkB,gBAAkB3iC,KAAK2iC,sBAC3CtiC,IAAtBL,KAAK4iC,eAA6BtkB,EAAKskB,aAAe5iC,KAAK4iC,mBAClCviC,IAAzBL,KAAK6iC,kBAAgCvkB,EAAKukB,gBAAkB7iC,KAAK6iC,iBAEjE7iC,KAAK8iC,aAAe9iC,KAAK8iC,YAAYvkB,YAEzCD,EAAKwkB,YAAc9iC,KAAK8iC,YAAY/J,OAAQ5b,GAAOf,WAIzB/b,IAAtBL,KAAK+iC,eAA6BzkB,EAAKykB,aAAe/iC,KAAK+iC,cAC3D/iC,KAAKgjC,iBAAmBhjC,KAAKgjC,gBAAgBzkB,YAAYD,EAAK0kB,gBAAkBhjC,KAAKgjC,gBAAgBjK,OAAQ5b,GAAOf,WACjG/b,IAAnBL,KAAKijC,YAA0B3kB,EAAK2kB,UAAYjjC,KAAKijC,WACrDjjC,KAAKkjC,cAAgBljC,KAAKkjC,aAAa3kB,YAAYD,EAAK4kB,aAAeljC,KAAKkjC,aAAanK,OAAQ5b,GAAOf,WAC3E/b,IAA7BL,KAAKmjC,sBAAoC7kB,EAAK6kB,oBAAsBnjC,KAAKmjC,0BAChD9iC,IAAzBL,KAAKojC,kBAAgC9kB,EAAK8kB,gBAAkBpjC,KAAKojC,gBAAgBlD,eAEnE7/B,IAAdL,KAAKipB,OAAqB3K,EAAK2K,KAAOjpB,KAAKipB,MACvB,OAApBjpB,KAAKi/B,aAAsB3gB,EAAK2gB,WAAaj/B,KAAKi/B,iBACzB5+B,IAAzBL,KAAKqjC,kBAAgC/kB,EAAK+kB,gBAAkBrjC,KAAKqjC,iBAEjErjC,KAAKw9B,WAAaz7B,IAAiBuc,EAAKkf,SAAWx9B,KAAKw9B,UACxDx9B,KAAKy9B,OAASh8B,IAAY6c,EAAKmf,KAAOz9B,KAAKy9B,MAC3Cz9B,KAAK09B,eAAepf,EAAKof,cAAe,GAExC19B,KAAK29B,QAAU,IAAIrf,EAAKqf,QAAU39B,KAAK29B,SACvC39B,KAAKgc,SAAWzV,KAAa+X,EAAKtC,OAAShc,KAAKgc,SAC3B,IAArBhc,KAAK49B,cAAuBtf,EAAKsf,YAAc59B,KAAK49B,aAEzDtf,EAAK6f,UAAYn+B,KAAKm+B,UACtB7f,EAAK8f,UAAYp+B,KAAKo+B,UACtB9f,EAAK+f,WAAar+B,KAAKq+B,WACvB/f,EAAK4gB,WAAal/B,KAAKk/B,WAEvB5gB,EAAKugB,aAAe7+B,KAAK6+B,aACzBvgB,EAAKggB,iBAAmBt+B,KAAKs+B,iBAC7BhgB,EAAKigB,YAAcv+B,KAAKu+B,YACxBjgB,EAAKkgB,WAAax+B,KAAKw+B,WACvBlgB,EAAKmgB,gBAAkBz+B,KAAKy+B,gBAC5BngB,EAAKogB,YAAc1+B,KAAK0+B,YACxBpgB,EAAKqgB,aAAe3+B,KAAK2+B,aACzBrgB,EAAKsgB,aAAe5+B,KAAK4+B,aAGpB5+B,KAAKgZ,UAA8B,IAAlBhZ,KAAKgZ,WAAiBsF,EAAKtF,SAAWhZ,KAAKgZ,WAErC,IAAvBhZ,KAAKo/B,gBAAyB9gB,EAAK8gB,eAAgB,GACtB,IAA7Bp/B,KAAKq/B,sBAA4B/gB,EAAK+gB,oBAAsBr/B,KAAKq/B,qBACrC,IAA5Br/B,KAAKs/B,qBAA2BhhB,EAAKghB,mBAAqBt/B,KAAKs/B,oBAE/Dt/B,KAAKsjC,WAAgC,IAAnBtjC,KAAKsjC,YAAkBhlB,EAAKglB,UAAYtjC,KAAKsjC,gBAC7CjjC,IAAlBL,KAAKujC,WAAyBjlB,EAAKilB,SAAWvjC,KAAKujC,eAClCljC,IAAjBL,KAAKwjC,UAAwBllB,EAAKklB,QAAUxjC,KAAKwjC,cAClCnjC,IAAfL,KAAKgzB,QAAsB1U,EAAK0U,MAAQhzB,KAAKgzB,QAE1B,IAAnBhzB,KAAKu/B,YAAqBjhB,EAAKihB,WAAY,GAE3Cv/B,KAAKyjC,UAAY,IAAInlB,EAAKmlB,UAAYzjC,KAAKyjC,YAClB,IAAzBzjC,KAAKw/B,kBAA2BlhB,EAAKkhB,gBAAkBx/B,KAAKw/B,kBAChC,IAA5Bx/B,KAAKy/B,qBAA8BnhB,EAAKmhB,mBAAqBz/B,KAAKy/B,qBAE/C,IAAnBz/B,KAAK0jC,YAAqBplB,EAAKolB,UAAY1jC,KAAK0jC,WAChD1jC,KAAK2jC,mBAAqB,IAAIrlB,EAAKqlB,mBAAqB3jC,KAAK2jC,oBACnC,UAA1B3jC,KAAK4jC,mBAA+BtlB,EAAKslB,iBAAmB5jC,KAAK4jC,kBACtC,UAA3B5jC,KAAK6jC,oBAAgCvlB,EAAKulB,kBAAoB7jC,KAAK6jC,oBAE9C,IAArB7jC,KAAK+/B,cAAuBzhB,EAAKyhB,YAAc//B,KAAK+/B,cAEnC,IAAjB//B,KAAK02B,UAAoBpY,EAAKoY,SAAU,IAEpB,IAApB12B,KAAK0/B,aAAuBphB,EAAKohB,YAAa,GAEV,OAApC1G,KAAKC,UAAWj5B,KAAKg3B,YAAsB1Y,EAAK0Y,SAAWh3B,KAAKg3B,UAoBhEgJ,EAAS,CAEb,IAAM3iB,EAAWid,EAAkBnd,EAAKE,UAClCK,EAAS4c,EAAkBnd,EAAKO,QAEjCL,EAASrP,OAAS,IAAIsQ,EAAKjB,SAAWA,GACtCK,EAAO1P,OAAS,IAAIsQ,EAAKZ,OAASA,GAIxC,OAAOY,I,mBAIR,WAEC,OAAO,IAAIte,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMkd,GAELld,KAAKua,KAAO2C,EAAO3C,KAEnBva,KAAKu9B,IAAMrgB,EAAOqgB,IAElBv9B,KAAKw9B,SAAWtgB,EAAOsgB,SACvBx9B,KAAKy9B,KAAOvgB,EAAOugB,KACnBz9B,KAAK09B,aAAexgB,EAAOwgB,aAE3B19B,KAAK29B,QAAUzgB,EAAOygB,QACtB39B,KAAKgc,OAASkB,EAAOlB,OACrBhc,KAAK49B,YAAc1gB,EAAO0gB,YAE1B59B,KAAK69B,SAAW3gB,EAAO2gB,SACvB79B,KAAK89B,SAAW5gB,EAAO4gB,SACvB99B,KAAK+9B,cAAgB7gB,EAAO6gB,cAC5B/9B,KAAKg+B,cAAgB9gB,EAAO8gB,cAC5Bh+B,KAAKi+B,cAAgB/gB,EAAO+gB,cAC5Bj+B,KAAKk+B,mBAAqBhhB,EAAOghB,mBAEjCl+B,KAAKm+B,UAAYjhB,EAAOihB,UACxBn+B,KAAKo+B,UAAYlhB,EAAOkhB,UACxBp+B,KAAKq+B,WAAanhB,EAAOmhB,WAEzBr+B,KAAKs+B,iBAAmBphB,EAAOohB,iBAC/Bt+B,KAAKu+B,YAAcrhB,EAAOqhB,YAC1Bv+B,KAAKw+B,WAAathB,EAAOshB,WACzBx+B,KAAKy+B,gBAAkBvhB,EAAOuhB,gBAC9Bz+B,KAAK0+B,YAAcxhB,EAAOwhB,YAC1B1+B,KAAK2+B,aAAezhB,EAAOyhB,aAC3B3+B,KAAK4+B,aAAe1hB,EAAO0hB,aAC3B5+B,KAAK6+B,aAAe3hB,EAAO2hB,aAE3B,IAAMiF,EAAY5mB,EAAO4hB,eACrBiF,EAAY,KAEhB,GAAmB,OAAdD,EAAqB,CAEzB,IAAMv0B,EAAIu0B,EAAU91B,OACpB+1B,EAAY,IAAInmB,MAAOrO,GAEvB,IAAM,IAAIzB,EAAI,EAAGA,IAAMyB,IAAMzB,EAE5Bi2B,EAAWj2B,GAAMg2B,EAAWh2B,GAAI4S,QAgClC,OA1BA1gB,KAAK8+B,eAAiBiF,EACtB/jC,KAAK++B,iBAAmB7hB,EAAO6hB,iBAC/B/+B,KAAKg/B,YAAc9hB,EAAO8hB,YAE1Bh/B,KAAKi/B,WAAa/hB,EAAO+hB,WAEzBj/B,KAAKk/B,WAAahiB,EAAOgiB,WAEzBl/B,KAAKm/B,UAAYjiB,EAAOiiB,UAExBn/B,KAAKo/B,cAAgBliB,EAAOkiB,cAC5Bp/B,KAAKq/B,oBAAsBniB,EAAOmiB,oBAClCr/B,KAAKs/B,mBAAqBpiB,EAAOoiB,mBAEjCt/B,KAAKu/B,UAAYriB,EAAOqiB,UAExBv/B,KAAKyjC,UAAYvmB,EAAOumB,UACxBzjC,KAAKw/B,gBAAkBtiB,EAAOsiB,gBAC9Bx/B,KAAKy/B,mBAAqBviB,EAAOuiB,mBAEjCz/B,KAAK02B,QAAUxZ,EAAOwZ,QAEtB12B,KAAK0/B,WAAaxiB,EAAOwiB,WAEzB1/B,KAAKg3B,SAAWgC,KAAK0B,MAAO1B,KAAKC,UAAW/b,EAAO8Z,WAE5Ch3B,O,qBAIR,WAECA,KAAKge,cAAe,CAAE/Q,KAAM,c,uBAI7B,SAAiBzN,IAED,IAAVA,GAAiBQ,KAAK6c,c,GA5dN7P,IAkevBswB,GAAShoB,UAAU0uB,YAAa,EAEhC,IAAMC,GAAiB,CAAE,UAAa,SAAU,aAAgB,SAAU,KAAQ,MAAU,WAAc,QAAU,MAAS,SAC5H,MAAS,SAAU,OAAU,SAAU,MAAS,EAAU,eAAkB,SAAU,KAAQ,IAAU,WAAc,QACtH,MAAS,SAAU,UAAa,SAAU,UAAa,QAAU,WAAc,QAAU,UAAa,SAAU,MAAS,SACzH,eAAkB,QAAU,SAAY,SAAU,QAAW,SAAU,KAAQ,MAAU,SAAY,IAAU,SAAY,MAC3H,cAAiB,SAAU,SAAY,SAAU,UAAa,MAAU,SAAY,SAAU,UAAa,SAAU,YAAe,QACpI,eAAkB,QAAU,WAAc,SAAU,WAAc,SAAU,QAAW,QAAU,WAAc,SAAU,aAAgB,QACzI,cAAiB,QAAU,cAAiB,QAAU,cAAiB,QAAU,cAAiB,MAAU,WAAc,QAC1H,SAAY,SAAU,YAAe,MAAU,QAAW,QAAU,QAAW,QAAU,WAAc,QAAU,UAAa,SAC9H,YAAe,SAAU,YAAe,QAAU,QAAW,SAAU,UAAa,SAAU,WAAc,SAAU,KAAQ,SAC9H,UAAa,SAAU,KAAQ,QAAU,MAAS,MAAU,YAAe,SAAU,KAAQ,QAAU,SAAY,SAAU,QAAW,SACxI,UAAa,SAAU,OAAU,QAAU,MAAS,SAAU,MAAS,SAAU,SAAY,SAAU,cAAiB,SAAU,UAAa,QAC/I,aAAgB,SAAU,UAAa,SAAU,WAAc,SAAU,UAAa,SAAU,qBAAwB,SAAU,UAAa,SAC/I,WAAc,QAAU,UAAa,SAAU,UAAa,SAAU,YAAe,SAAU,cAAiB,QAAU,aAAgB,QAC1I,eAAkB,QAAU,eAAkB,QAAU,eAAkB,SAAU,YAAe,SAAU,KAAQ,MAAU,UAAa,QAC5I,MAAS,SAAU,QAAW,SAAU,OAAU,QAAU,iBAAoB,QAAU,WAAc,IAAU,aAAgB,SAClI,aAAgB,QAAU,eAAkB,QAAU,gBAAmB,QAAU,kBAAqB,MAAU,gBAAmB,QACrI,gBAAmB,SAAU,aAAgB,QAAU,UAAa,SAAU,UAAa,SAAU,SAAY,SAAU,YAAe,SAC1I,KAAQ,IAAU,QAAW,SAAU,MAAS,QAAU,UAAa,QAAU,OAAU,SAAU,UAAa,SAAU,OAAU,SACtI,cAAiB,SAAU,UAAa,SAAU,cAAiB,SAAU,cAAiB,SAAU,WAAc,SAAU,UAAa,SAC7I,KAAQ,SAAU,KAAQ,SAAU,KAAQ,SAAU,WAAc,SAAU,OAAU,QAAU,cAAiB,QAAU,IAAO,SAAU,UAAa,SAC3J,UAAa,QAAU,YAAe,QAAU,OAAU,SAAU,WAAc,SAAU,SAAY,QAAU,SAAY,SAC9H,OAAU,SAAU,OAAU,SAAU,QAAW,QAAU,UAAa,QAAU,UAAa,QAAU,UAAa,QAAU,KAAQ,SAC1I,YAAe,MAAU,UAAa,QAAU,IAAO,SAAU,KAAQ,MAAU,QAAW,SAAU,OAAU,SAAU,UAAa,QACzI,OAAU,SAAU,MAAS,SAAU,MAAS,SAAU,WAAc,SAAU,OAAU,SAAU,YAAe,UAEhHC,GAAQ,CAAElsB,EAAG,EAAGlG,EAAG,EAAG/D,EAAG,GACzBo2B,GAAQ,CAAEnsB,EAAG,EAAGlG,EAAG,EAAG/D,EAAG,GAE/B,SAASq2B,GAASthB,EAAG1Q,EAAGxC,GAIvB,OAFKA,EAAI,IAAIA,GAAK,GACbA,EAAI,IAAIA,GAAK,GACbA,EAAI,EAAI,EAAWkT,EAAgB,GAAV1Q,EAAI0Q,GAAUlT,EACvCA,EAAI,GAAewC,EACnBxC,EAAI,EAAI,EAAWkT,EAAgB,GAAV1Q,EAAI0Q,IAAY,EAAI,EAAIlT,GAC/CkT,EAIR,SAASuhB,GAAc9xB,GAEtB,OAASA,EAAI,OAAgB,YAAJA,EAAmBnE,KAAK2B,IAAS,YAAJwC,EAAmB,YAAc,KAIxF,SAAS+xB,GAAc/xB,GAEtB,OAASA,EAAI,SAAkB,MAAJA,EAAY,MAAUnE,KAAK2B,IAAKwC,EAAG,QAAc,K,IAIvEgyB,G,WAEL,WAAa5rB,EAAGZ,EAAGzF,GAElB,OAFsB,yBAEXjS,IAAN0X,QAAyB1X,IAANiS,EAGhBtS,KAAKmT,IAAKwF,GAIX3Y,KAAKwkC,OAAQ7rB,EAAGZ,EAAGzF,G,uCAI3B,SAAK9S,GAgBJ,OAdKA,GAASA,EAAMg6B,QAEnBx5B,KAAKid,KAAMzd,GAEiB,kBAAVA,EAElBQ,KAAKykC,OAAQjlC,GAEe,kBAAVA,GAElBQ,KAAK0kC,SAAUllC,GAITQ,O,uBAIR,SAAWuT,GAMV,OAJAvT,KAAK2Y,EAAIpF,EACTvT,KAAK+X,EAAIxE,EACTvT,KAAKsS,EAAIiB,EAEFvT,O,oBAIR,SAAQ2kC,GAQP,OANAA,EAAMv2B,KAAKgC,MAAOu0B,GAElB3kC,KAAK2Y,GAAMgsB,GAAO,GAAK,KAAQ,IAC/B3kC,KAAK+X,GAAM4sB,GAAO,EAAI,KAAQ,IAC9B3kC,KAAKsS,GAAY,IAANqyB,GAAc,IAElB3kC,O,oBAIR,SAAQ2Y,EAAGZ,EAAGzF,GAMb,OAJAtS,KAAK2Y,EAAIA,EACT3Y,KAAK+X,EAAIA,EACT/X,KAAKsS,EAAIA,EAEFtS,O,oBAIR,SAAQgY,EAAGlG,EAAG/D,GAOb,GAJAiK,EAAI1I,GAAiB0I,EAAG,GACxBlG,EAAI3C,GAAO2C,EAAG,EAAG,GACjB/D,EAAIoB,GAAOpB,EAAG,EAAG,GAEN,IAAN+D,EAEJ9R,KAAK2Y,EAAI3Y,KAAK+X,EAAI/X,KAAKsS,EAAIvE,MAErB,CAEN,IAAM+U,EAAI/U,GAAK,GAAMA,GAAM,EAAI+D,GAAM/D,EAAI+D,EAAM/D,EAAI+D,EAC7CM,EAAM,EAAIrE,EAAM+U,EAEtB9iB,KAAK2Y,EAAIyrB,GAAShyB,EAAG0Q,EAAG9K,EAAI,EAAI,GAChChY,KAAK+X,EAAIqsB,GAAShyB,EAAG0Q,EAAG9K,GACxBhY,KAAKsS,EAAI8xB,GAAShyB,EAAG0Q,EAAG9K,EAAI,EAAI,GAIjC,OAAOhY,O,sBAIR,SAAU4kC,GAET,SAASC,EAAaC,QAELzkC,IAAXykC,GAEAC,WAAYD,GAAW,GAE3B1xB,QAAQC,KAAM,mCAAqCuxB,EAAQ,qBAO7D,IAAIp1B,EAEJ,GAAKA,EAAI,+BAA+Bw1B,KAAMJ,GAAU,CAIvD,IAAI3E,EACE1lB,EAAO/K,EAAG,GACVy1B,EAAaz1B,EAAG,GAEtB,OAAS+K,GAER,IAAK,MACL,IAAK,OAEJ,GAAK0lB,EAAQ,+DAA+D+E,KAAMC,GASjF,OANAjlC,KAAK2Y,EAAIvK,KAAKgB,IAAK,IAAK81B,SAAUjF,EAAO,GAAK,KAAS,IACvDjgC,KAAK+X,EAAI3J,KAAKgB,IAAK,IAAK81B,SAAUjF,EAAO,GAAK,KAAS,IACvDjgC,KAAKsS,EAAIlE,KAAKgB,IAAK,IAAK81B,SAAUjF,EAAO,GAAK,KAAS,IAEvD4E,EAAa5E,EAAO,IAEbjgC,KAIR,GAAKigC,EAAQ,qEAAqE+E,KAAMC,GASvF,OANAjlC,KAAK2Y,EAAIvK,KAAKgB,IAAK,IAAK81B,SAAUjF,EAAO,GAAK,KAAS,IACvDjgC,KAAK+X,EAAI3J,KAAKgB,IAAK,IAAK81B,SAAUjF,EAAO,GAAK,KAAS,IACvDjgC,KAAKsS,EAAIlE,KAAKgB,IAAK,IAAK81B,SAAUjF,EAAO,GAAK,KAAS,IAEvD4E,EAAa5E,EAAO,IAEbjgC,KAIR,MAED,IAAK,MACL,IAAK,OAEJ,GAAKigC,EAAQ,yEAAyE+E,KAAMC,GAAe,CAG1G,IAAMjtB,EAAI+sB,WAAY9E,EAAO,IAAQ,IAC/BnuB,EAAIozB,SAAUjF,EAAO,GAAK,IAAO,IACjClyB,EAAIm3B,SAAUjF,EAAO,GAAK,IAAO,IAIvC,OAFA4E,EAAa5E,EAAO,IAEbjgC,KAAKmlC,OAAQntB,EAAGlG,EAAG/D,UAQvB,GAAKyB,EAAI,oBAAoBw1B,KAAMJ,GAAU,CAInD,IAAMD,EAAMn1B,EAAG,GACTyZ,EAAO0b,EAAI32B,OAEjB,GAAc,IAATib,EAOJ,OAJAjpB,KAAK2Y,EAAIusB,SAAUP,EAAIS,OAAQ,GAAMT,EAAIS,OAAQ,GAAK,IAAO,IAC7DplC,KAAK+X,EAAImtB,SAAUP,EAAIS,OAAQ,GAAMT,EAAIS,OAAQ,GAAK,IAAO,IAC7DplC,KAAKsS,EAAI4yB,SAAUP,EAAIS,OAAQ,GAAMT,EAAIS,OAAQ,GAAK,IAAO,IAEtDplC,KAED,GAAc,IAATipB,EAOX,OAJAjpB,KAAK2Y,EAAIusB,SAAUP,EAAIS,OAAQ,GAAMT,EAAIS,OAAQ,GAAK,IAAO,IAC7DplC,KAAK+X,EAAImtB,SAAUP,EAAIS,OAAQ,GAAMT,EAAIS,OAAQ,GAAK,IAAO,IAC7DplC,KAAKsS,EAAI4yB,SAAUP,EAAIS,OAAQ,GAAMT,EAAIS,OAAQ,GAAK,IAAO,IAEtDplC,KAMT,OAAK4kC,GAASA,EAAM52B,OAAS,EAErBhO,KAAKqlC,aAAcT,GAIpB5kC,O,0BAIR,SAAc4kC,GAGb,IAAMD,EAAMV,GAAgBW,EAAMU,eAclC,YAZajlC,IAARskC,EAGJ3kC,KAAKykC,OAAQE,GAKbvxB,QAAQC,KAAM,8BAAgCuxB,GAIxC5kC,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,YAAazT,KAAK2Y,EAAG3Y,KAAK+X,EAAG/X,KAAKsS,K,kBAInD,SAAM2tB,GAML,OAJAjgC,KAAK2Y,EAAIsnB,EAAMtnB,EACf3Y,KAAK+X,EAAIkoB,EAAMloB,EACf/X,KAAKsS,EAAI2tB,EAAM3tB,EAERtS,O,+BAIR,SAAmBigC,GAA2B,IAApBsF,EAAoB,uDAAN,EAMvC,OAJAvlC,KAAK2Y,EAAIvK,KAAK2B,IAAKkwB,EAAMtnB,EAAG4sB,GAC5BvlC,KAAK+X,EAAI3J,KAAK2B,IAAKkwB,EAAMloB,EAAGwtB,GAC5BvlC,KAAKsS,EAAIlE,KAAK2B,IAAKkwB,EAAM3tB,EAAGizB,GAErBvlC,O,+BAIR,SAAmBigC,GAA2B,IAApBsF,EAAoB,uDAAN,EAEjCC,EAAgBD,EAAc,EAAQ,EAAMA,EAAgB,EAMlE,OAJAvlC,KAAK2Y,EAAIvK,KAAK2B,IAAKkwB,EAAMtnB,EAAG6sB,GAC5BxlC,KAAK+X,EAAI3J,KAAK2B,IAAKkwB,EAAMloB,EAAGytB,GAC5BxlC,KAAKsS,EAAIlE,KAAK2B,IAAKkwB,EAAM3tB,EAAGkzB,GAErBxlC,O,kCAIR,SAAsBulC,GAIrB,OAFAvlC,KAAKylC,kBAAmBzlC,KAAMulC,GAEvBvlC,O,kCAIR,SAAsBulC,GAIrB,OAFAvlC,KAAK0lC,kBAAmB1lC,KAAMulC,GAEvBvlC,O,8BAIR,SAAkBigC,GAMjB,OAJAjgC,KAAK2Y,EAAI0rB,GAAcpE,EAAMtnB,GAC7B3Y,KAAK+X,EAAIssB,GAAcpE,EAAMloB,GAC7B/X,KAAKsS,EAAI+xB,GAAcpE,EAAM3tB,GAEtBtS,O,8BAIR,SAAkBigC,GAMjB,OAJAjgC,KAAK2Y,EAAI2rB,GAAcrE,EAAMtnB,GAC7B3Y,KAAK+X,EAAIusB,GAAcrE,EAAMloB,GAC7B/X,KAAKsS,EAAIgyB,GAAcrE,EAAM3tB,GAEtBtS,O,iCAIR,WAIC,OAFAA,KAAK2lC,iBAAkB3lC,MAEhBA,O,iCAIR,WAIC,OAFAA,KAAK4lC,iBAAkB5lC,MAEhBA,O,oBAIR,WAEC,OAAkB,IAATA,KAAK2Y,GAAa,GAAgB,IAAT3Y,KAAK+X,GAAa,EAAe,IAAT/X,KAAKsS,GAAa,I,0BAI7E,WAEC,OAAS,SAAWtS,KAAKkgC,SAAS1xB,SAAU,KAAOX,OAAS,K,oBAI7D,SAAQF,GAIP,IAKIk4B,EAAKC,EALHntB,EAAI3Y,KAAK2Y,EAAGZ,EAAI/X,KAAK+X,EAAGzF,EAAItS,KAAKsS,EAEjCjD,EAAMjB,KAAKiB,IAAKsJ,EAAGZ,EAAGzF,GACtBlD,EAAMhB,KAAKgB,IAAKuJ,EAAGZ,EAAGzF,GAGtByzB,GAAc32B,EAAMC,GAAQ,EAElC,GAAKD,IAAQC,EAEZw2B,EAAM,EACNC,EAAa,MAEP,CAEN,IAAME,EAAQ32B,EAAMD,EAIpB,OAFA02B,EAAaC,GAAa,GAAMC,GAAU32B,EAAMD,GAAQ42B,GAAU,EAAI32B,EAAMD,GAEnEC,GAER,KAAKsJ,EAAGktB,GAAQ9tB,EAAIzF,GAAM0zB,GAAUjuB,EAAIzF,EAAI,EAAI,GAAK,MACrD,KAAKyF,EAAG8tB,GAAQvzB,EAAIqG,GAAMqtB,EAAQ,EAAG,MACrC,KAAK1zB,EAAGuzB,GAAQltB,EAAIZ,GAAMiuB,EAAQ,EAInCH,GAAO,EAQR,OAJAl4B,EAAOqK,EAAI6tB,EACXl4B,EAAOmE,EAAIg0B,EACXn4B,EAAOI,EAAIg4B,EAEJp4B,I,sBAIR,WAEC,MAAO,QAAsB,IAAT3N,KAAK2Y,EAAY,GAAM,KAAmB,IAAT3Y,KAAK+X,EAAY,GAAM,KAAmB,IAAT/X,KAAKsS,EAAY,GAAM,M,uBAI9G,SAAW0F,EAAGlG,EAAG/D,GAQhB,OANA/N,KAAKimC,OAAQ/B,IAEbA,GAAMlsB,GAAKA,EAAGksB,GAAMpyB,GAAKA,EAAGoyB,GAAMn2B,GAAKA,EAEvC/N,KAAKmlC,OAAQjB,GAAMlsB,EAAGksB,GAAMpyB,EAAGoyB,GAAMn2B,GAE9B/N,O,iBAIR,SAAKigC,GAMJ,OAJAjgC,KAAK2Y,GAAKsnB,EAAMtnB,EAChB3Y,KAAK+X,GAAKkoB,EAAMloB,EAChB/X,KAAKsS,GAAK2tB,EAAM3tB,EAETtS,O,uBAIR,SAAWkmC,EAAQC,GAMlB,OAJAnmC,KAAK2Y,EAAIutB,EAAOvtB,EAAIwtB,EAAOxtB,EAC3B3Y,KAAK+X,EAAImuB,EAAOnuB,EAAIouB,EAAOpuB,EAC3B/X,KAAKsS,EAAI4zB,EAAO5zB,EAAI6zB,EAAO7zB,EAEpBtS,O,uBAIR,SAAW8R,GAMV,OAJA9R,KAAK2Y,GAAK7G,EACV9R,KAAK+X,GAAKjG,EACV9R,KAAKsS,GAAKR,EAEH9R,O,iBAIR,SAAKigC,GAMJ,OAJAjgC,KAAK2Y,EAAIvK,KAAKiB,IAAK,EAAGrP,KAAK2Y,EAAIsnB,EAAMtnB,GACrC3Y,KAAK+X,EAAI3J,KAAKiB,IAAK,EAAGrP,KAAK+X,EAAIkoB,EAAMloB,GACrC/X,KAAKsS,EAAIlE,KAAKiB,IAAK,EAAGrP,KAAKsS,EAAI2tB,EAAM3tB,GAE9BtS,O,sBAIR,SAAUigC,GAMT,OAJAjgC,KAAK2Y,GAAKsnB,EAAMtnB,EAChB3Y,KAAK+X,GAAKkoB,EAAMloB,EAChB/X,KAAKsS,GAAK2tB,EAAM3tB,EAETtS,O,4BAIR,SAAgB8R,GAMf,OAJA9R,KAAK2Y,GAAK7G,EACV9R,KAAK+X,GAAKjG,EACV9R,KAAKsS,GAAKR,EAEH9R,O,kBAIR,SAAMigC,EAAOrrB,GAMZ,OAJA5U,KAAK2Y,IAAOsnB,EAAMtnB,EAAI3Y,KAAK2Y,GAAM/D,EACjC5U,KAAK+X,IAAOkoB,EAAMloB,EAAI/X,KAAK+X,GAAMnD,EACjC5U,KAAKsS,IAAO2tB,EAAM3tB,EAAItS,KAAKsS,GAAMsC,EAE1B5U,O,wBAIR,SAAYkmC,EAAQC,EAAQvxB,GAM3B,OAJA5U,KAAK2Y,EAAIutB,EAAOvtB,GAAMwtB,EAAOxtB,EAAIutB,EAAOvtB,GAAM/D,EAC9C5U,KAAK+X,EAAImuB,EAAOnuB,GAAMouB,EAAOpuB,EAAImuB,EAAOnuB,GAAMnD,EAC9C5U,KAAKsS,EAAI4zB,EAAO5zB,GAAM6zB,EAAO7zB,EAAI4zB,EAAO5zB,GAAMsC,EAEvC5U,O,qBAIR,SAASigC,EAAOrrB,GAEf5U,KAAKimC,OAAQ/B,IACbjE,EAAMgG,OAAQ9B,IAEd,IAAMnsB,EAAIvI,GAAMy0B,GAAMlsB,EAAGmsB,GAAMnsB,EAAGpD,GAC5B9C,EAAIrC,GAAMy0B,GAAMpyB,EAAGqyB,GAAMryB,EAAG8C,GAC5B7G,EAAI0B,GAAMy0B,GAAMn2B,EAAGo2B,GAAMp2B,EAAG6G,GAIlC,OAFA5U,KAAKmlC,OAAQntB,EAAGlG,EAAG/D,GAEZ/N,O,oBAIR,SAAQuS,GAEP,OAASA,EAAEoG,IAAM3Y,KAAK2Y,GAASpG,EAAEwF,IAAM/X,KAAK+X,GAASxF,EAAED,IAAMtS,KAAKsS,I,uBAInE,SAAW1E,GAAoB,IAAbmH,EAAa,uDAAJ,EAM1B,OAJA/U,KAAK2Y,EAAI/K,EAAOmH,GAChB/U,KAAK+X,EAAInK,EAAOmH,EAAS,GACzB/U,KAAKsS,EAAI1E,EAAOmH,EAAS,GAElB/U,O,qBAIR,WAAkC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAM7B,OAJAnH,EAAOmH,GAAW/U,KAAK2Y,EACvB/K,EAAOmH,EAAS,GAAM/U,KAAK+X,EAC3BnK,EAAOmH,EAAS,GAAM/U,KAAKsS,EAEpB1E,I,iCAIR,SAAqBoH,EAAWxH,GAgB/B,OAdAxN,KAAK2Y,EAAI3D,EAAUC,KAAMzH,GACzBxN,KAAK+X,EAAI/C,EAAUE,KAAM1H,GACzBxN,KAAKsS,EAAI0C,EAAU4K,KAAMpS,IAEK,IAAzBwH,EAAUoxB,aAIdpmC,KAAK2Y,GAAK,IACV3Y,KAAK+X,GAAK,IACV/X,KAAKsS,GAAK,KAIJtS,O,oBAIR,WAEC,OAAOA,KAAKkgC,a,KAMdqE,GAAM8B,MAAQpC,GAEdM,GAAMjvB,UAAUkkB,SAAU,EAC1B+K,GAAMjvB,UAAUqD,EAAI,EACpB4rB,GAAMjvB,UAAUyC,EAAI,EACpBwsB,GAAMjvB,UAAUhD,EAAI,E,IA+Bdg0B,G,kDAEL,WAAazM,GAAa,kCAEzB,gBAEK5sB,KAAO,oBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKnD,IAAM,KAEX,EAAKG,SAAW,KAChB,EAAKC,kBAAoB,EAEzB,EAAKC,MAAQ,KACb,EAAKC,eAAiB,EAEtB,EAAKY,YAAc,KAEnB,EAAKhB,SAAW,KAEhB,EAAKmB,OAAS,KACd,EAAKC,QAAU9+B,GACf,EAAKg/B,aAAe,EACpB,EAAKC,gBAAkB,IAEvB,EAAKa,WAAY,EACjB,EAAKC,mBAAqB,EAC1B,EAAKC,iBAAmB,QACxB,EAAKC,kBAAoB,QAEzB,EAAK0C,UAAW1M,GA9BS,E,wCAkC1B,SAAM3c,GA4BL,OA1BA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKuhC,SAAWrkB,EAAOqkB,SACvBvhC,KAAKwhC,kBAAoBtkB,EAAOskB,kBAEhCxhC,KAAKyhC,MAAQvkB,EAAOukB,MACpBzhC,KAAK0hC,eAAiBxkB,EAAOwkB,eAE7B1hC,KAAKsiC,YAAcplB,EAAOolB,YAE1BtiC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKyiC,OAASvlB,EAAOulB,OACrBziC,KAAK0iC,QAAUxlB,EAAOwlB,QACtB1iC,KAAK4iC,aAAe1lB,EAAO0lB,aAC3B5iC,KAAK6iC,gBAAkB3lB,EAAO2lB,gBAE9B7iC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBACjC3jC,KAAK4jC,iBAAmB1mB,EAAO0mB,iBAC/B5jC,KAAK6jC,kBAAoB3mB,EAAO2mB,kBAEzB7jC,S,GAhEuBs9B,IAsEhCgJ,GAAkBhxB,UAAUkxB,qBAAsB,EAElD,IAAMC,GAA0B,IAAI9gB,GAC9B+gB,GAA2B,IAAIpzB,GAE/BqzB,G,WAEL,WAAa/4B,EAAOg5B,EAAUR,GAE7B,GAF0C,oBAErCxoB,MAAMC,QAASjQ,GAEnB,MAAM,IAAIi5B,UAAW,yDAItB7mC,KAAKua,KAAO,GAEZva,KAAK4N,MAAQA,EACb5N,KAAK4mC,SAAWA,EAChB5mC,KAAK6gB,WAAkBxgB,IAAVuN,EAAsBA,EAAMI,OAAS44B,EAAW,EAC7D5mC,KAAKomC,YAA4B,IAAfA,EAElBpmC,KAAK8mC,MAAQz6B,GACbrM,KAAK+mC,YAAc,CAAEhyB,OAAQ,EAAG8L,OAAS,GAEzC7gB,KAAK6c,QAAU,E,oDAIhB,c,uBAEA,SAAiBrd,IAED,IAAVA,GAAiBQ,KAAK6c,Y,sBAI5B,SAAUrd,GAIT,OAFAQ,KAAK8mC,MAAQtnC,EAENQ,O,kBAIR,SAAMkd,GAUL,OARAld,KAAKua,KAAO2C,EAAO3C,KACnBva,KAAK4N,MAAQ,IAAIsP,EAAOtP,MAAM6F,YAAayJ,EAAOtP,OAClD5N,KAAK4mC,SAAW1pB,EAAO0pB,SACvB5mC,KAAK6gB,MAAQ3D,EAAO2D,MACpB7gB,KAAKomC,WAAalpB,EAAOkpB,WAEzBpmC,KAAK8mC,MAAQ5pB,EAAO4pB,MAEb9mC,O,oBAIR,SAAQgnC,EAAQhyB,EAAWiyB,GAE1BD,GAAUhnC,KAAK4mC,SACfK,GAAUjyB,EAAU4xB,SAEpB,IAAM,IAAI94B,EAAI,EAAGC,EAAI/N,KAAK4mC,SAAU94B,EAAIC,EAAGD,IAE1C9N,KAAK4N,MAAOo5B,EAASl5B,GAAMkH,EAAUpH,MAAOq5B,EAASn5B,GAItD,OAAO9N,O,uBAIR,SAAW4N,GAIV,OAFA5N,KAAK4N,MAAMuF,IAAKvF,GAET5N,O,6BAIR,SAAiBknC,GAKhB,IAHA,IAAMt5B,EAAQ5N,KAAK4N,MACfmH,EAAS,EAEHjH,EAAI,EAAGC,EAAIm5B,EAAOl5B,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAImyB,EAAQiH,EAAQp5B,QAELzN,IAAV4/B,IAEJ7sB,QAAQC,KAAM,8DAA+DvF,GAC7EmyB,EAAQ,IAAIsE,IAIb32B,EAAOmH,KAAckrB,EAAMtnB,EAC3B/K,EAAOmH,KAAckrB,EAAMloB,EAC3BnK,EAAOmH,KAAckrB,EAAM3tB,EAI5B,OAAOtS,O,+BAIR,SAAmBmnC,GAKlB,IAHA,IAAMv5B,EAAQ5N,KAAK4N,MACfmH,EAAS,EAEHjH,EAAI,EAAGC,EAAIo5B,EAAQn5B,OAAQF,EAAIC,EAAGD,IAAO,CAElD,IAAI4b,EAASyd,EAASr5B,QAENzN,IAAXqpB,IAEJtW,QAAQC,KAAM,iEAAkEvF,GAChF4b,EAAS,IAAIpW,IAId1F,EAAOmH,KAAc2U,EAAOha,EAC5B9B,EAAOmH,KAAc2U,EAAO/Z,EAI7B,OAAO3P,O,+BAIR,SAAmBmnC,GAKlB,IAHA,IAAMv5B,EAAQ5N,KAAK4N,MACfmH,EAAS,EAEHjH,EAAI,EAAGC,EAAIo5B,EAAQn5B,OAAQF,EAAIC,EAAGD,IAAO,CAElD,IAAI4b,EAASyd,EAASr5B,QAENzN,IAAXqpB,IAEJtW,QAAQC,KAAM,iEAAkEvF,GAChF4b,EAAS,IAAI/D,IAId/X,EAAOmH,KAAc2U,EAAOha,EAC5B9B,EAAOmH,KAAc2U,EAAO/Z,EAC5B/B,EAAOmH,KAAc2U,EAAOjL,EAI7B,OAAOze,O,+BAIR,SAAmBmnC,GAKlB,IAHA,IAAMv5B,EAAQ5N,KAAK4N,MACfmH,EAAS,EAEHjH,EAAI,EAAGC,EAAIo5B,EAAQn5B,OAAQF,EAAIC,EAAGD,IAAO,CAElD,IAAI4b,EAASyd,EAASr5B,QAENzN,IAAXqpB,IAEJtW,QAAQC,KAAM,iEAAkEvF,GAChF4b,EAAS,IAAIlL,IAId5Q,EAAOmH,KAAc2U,EAAOha,EAC5B9B,EAAOmH,KAAc2U,EAAO/Z,EAC5B/B,EAAOmH,KAAc2U,EAAOjL,EAC5B7Q,EAAOmH,KAAc2U,EAAO/V,EAI7B,OAAO3T,O,0BAIR,SAAcwP,GAEb,GAAuB,IAAlBxP,KAAK4mC,SAET,IAAM,IAAI94B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvC44B,GAAWhL,oBAAqB17B,KAAM8N,GACtC44B,GAAWxoB,aAAc1O,GAEzBxP,KAAKonC,MAAOt5B,EAAG44B,GAAWh3B,EAAGg3B,GAAW/2B,QAInC,GAAuB,IAAlB3P,KAAK4mC,SAEhB,IAAM,IAAI94B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvC24B,GAAU/K,oBAAqB17B,KAAM8N,GACrC24B,GAAUvoB,aAAc1O,GAExBxP,KAAKqnC,OAAQv5B,EAAG24B,GAAU/2B,EAAG+2B,GAAU92B,EAAG82B,GAAUhoB,GAMtD,OAAOze,O,0BAIR,SAAcwP,GAEb,IAAM,IAAI1B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvC24B,GAAU/2B,EAAI1P,KAAKiV,KAAMnH,GACzB24B,GAAU92B,EAAI3P,KAAKkV,KAAMpH,GACzB24B,GAAUhoB,EAAIze,KAAK4f,KAAM9R,GAEzB24B,GAAU/f,aAAclX,GAExBxP,KAAKqnC,OAAQv5B,EAAG24B,GAAU/2B,EAAG+2B,GAAU92B,EAAG82B,GAAUhoB,GAIrD,OAAOze,O,+BAIR,SAAmBwP,GAElB,IAAM,IAAI1B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvC24B,GAAU/2B,EAAI1P,KAAKiV,KAAMnH,GACzB24B,GAAU92B,EAAI3P,KAAKkV,KAAMpH,GACzB24B,GAAUhoB,EAAIze,KAAK4f,KAAM9R,GAEzB24B,GAAUa,kBAAmB93B,GAE7BxP,KAAKqnC,OAAQv5B,EAAG24B,GAAU/2B,EAAG+2B,GAAU92B,EAAG82B,GAAUhoB,GAIrD,OAAOze,O,gCAIR,SAAoBwP,GAEnB,IAAM,IAAI1B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvC24B,GAAU/2B,EAAI1P,KAAKiV,KAAMnH,GACzB24B,GAAU92B,EAAI3P,KAAKkV,KAAMpH,GACzB24B,GAAUhoB,EAAIze,KAAK4f,KAAM9R,GAEzB24B,GAAU3W,mBAAoBtgB,GAE9BxP,KAAKqnC,OAAQv5B,EAAG24B,GAAU/2B,EAAG+2B,GAAU92B,EAAG82B,GAAUhoB,GAIrD,OAAOze,O,iBAIR,SAAKR,GAAoB,IAAbuV,EAAa,uDAAJ,EAIpB,OAFA/U,KAAK4N,MAAMuF,IAAK3T,EAAOuV,GAEhB/U,O,kBAIR,SAAMwN,GAEL,OAAOxN,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,Y,kBAIjC,SAAMp5B,EAAOkC,GAIZ,OAFA1P,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,UAAal3B,EAE/B1P,O,kBAIR,SAAMwN,GAEL,OAAOxN,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,SAAW,K,kBAI5C,SAAMp5B,EAAOmC,GAIZ,OAFA3P,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,SAAW,GAAMj3B,EAEnC3P,O,kBAIR,SAAMwN,GAEL,OAAOxN,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,SAAW,K,kBAI5C,SAAMp5B,EAAOiR,GAIZ,OAFAze,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,SAAW,GAAMnoB,EAEnCze,O,kBAIR,SAAMwN,GAEL,OAAOxN,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,SAAW,K,kBAI5C,SAAMp5B,EAAOmG,GAIZ,OAFA3T,KAAK4N,MAAOJ,EAAQxN,KAAK4mC,SAAW,GAAMjzB,EAEnC3T,O,mBAIR,SAAOwN,EAAOkC,EAAGC,GAOhB,OALAnC,GAASxN,KAAK4mC,SAEd5mC,KAAK4N,MAAOJ,EAAQ,GAAMkC,EAC1B1P,KAAK4N,MAAOJ,EAAQ,GAAMmC,EAEnB3P,O,oBAIR,SAAQwN,EAAOkC,EAAGC,EAAG8O,GAQpB,OANAjR,GAASxN,KAAK4mC,SAEd5mC,KAAK4N,MAAOJ,EAAQ,GAAMkC,EAC1B1P,KAAK4N,MAAOJ,EAAQ,GAAMmC,EAC1B3P,KAAK4N,MAAOJ,EAAQ,GAAMiR,EAEnBze,O,qBAIR,SAASwN,EAAOkC,EAAGC,EAAG8O,EAAG9K,GASxB,OAPAnG,GAASxN,KAAK4mC,SAEd5mC,KAAK4N,MAAOJ,EAAQ,GAAMkC,EAC1B1P,KAAK4N,MAAOJ,EAAQ,GAAMmC,EAC1B3P,KAAK4N,MAAOJ,EAAQ,GAAMiR,EAC1Bze,KAAK4N,MAAOJ,EAAQ,GAAMmG,EAEnB3T,O,sBAIR,SAAUqkB,GAIT,OAFArkB,KAAKunC,iBAAmBljB,EAEjBrkB,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,YAAazT,KAAK4N,MAAO5N,KAAK4mC,UAAW3pB,KAAMjd,Q,oBAIhE,WAEC,IAAMse,EAAO,CACZsoB,SAAU5mC,KAAK4mC,SACf35B,KAAMjN,KAAK4N,MAAM6F,YAAY8G,KAC7B3M,MAAOgQ,MAAMtI,UAAUzH,MAAMI,KAAMjO,KAAK4N,OACxCw4B,WAAYpmC,KAAKomC,YAOlB,MAJmB,KAAdpmC,KAAKua,OAAc+D,EAAK/D,KAAOva,KAAKua,MACpCva,KAAK8mC,QAAUz6B,KAAkBiS,EAAKwoB,MAAQ9mC,KAAK8mC,OACvB,IAA5B9mC,KAAK+mC,YAAYhyB,SAA6C,IAA7B/U,KAAK+mC,YAAYlmB,QAAgBvC,EAAKyoB,YAAc/mC,KAAK+mC,aAExFzoB,M,KAMTqoB,GAAgBrxB,UAAUkyB,mBAAoB,E,IAIxCC,G,kDAEL,WAAa75B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIzsB,UAAW/L,GAASg5B,EAAUR,G,UAJTO,IAU5Be,G,kDAEL,WAAa95B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIxsB,WAAYhM,GAASg5B,EAAUR,G,UAJTO,IAU7BgB,G,kDAEL,WAAa/5B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIvsB,kBAAmBjM,GAASg5B,EAAUR,G,UAJTO,IAUpCiB,G,kDAEL,WAAah6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAItsB,WAAYlM,GAASg5B,EAAUR,G,UAJTO,IAU7BkB,G,kDAEL,WAAaj6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIrsB,YAAanM,GAASg5B,EAAUR,G,UAJTO,IAU9BmB,G,kDAEL,WAAal6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIpsB,WAAYpM,GAASg5B,EAAUR,G,UAJTO,IAU7BoB,G,kDAEL,WAAan6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAInsB,YAAarM,GAASg5B,EAAUR,G,UAJTO,IAU9BqB,G,kDAEL,WAAap6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIrsB,YAAanM,GAASg5B,EAAUR,G,UAJRO,IAUrCqB,GAAuB1yB,UAAU2yB,0BAA2B,E,IAEtDC,G,kDAEL,WAAat6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIlsB,aAActM,GAASg5B,EAAUR,G,UAJTO,IAU/BwB,G,kDAEL,WAAav6B,EAAOg5B,EAAUR,GAAa,uCAEnC,IAAIjsB,aAAcvM,GAASg5B,EAAUR,G,UAJTO,IAUjCyB,GAAM,EAEJC,GAAoB,IAAItY,GACxBuY,GAAqB,IAAIvS,GACzBwS,GAAwB,IAAI5iB,GAC5B6iB,GAAuB,IAAIjgB,GAC3BkgB,GAAiC,IAAIlgB,GACrCmgB,GAA0B,IAAI/iB,GAE9BgjB,G,kDAEL,aAAc,iCAEb,eAEAr4B,OAAO6L,eAAP7L,OAAA,IAAAA,CAAA,GAA6B,KAAM,CAAE9Q,MAAO4oC,OAE5C,EAAKhsB,KAAOzN,KAEZ,EAAK4L,KAAO,GACZ,EAAKtN,KAAO,iBAEZ,EAAKO,MAAQ,KACb,EAAKo7B,WAAa,GAElB,EAAKC,gBAAkB,GACvB,EAAKC,sBAAuB,EAE5B,EAAKC,OAAS,GAEd,EAAKjf,YAAc,KACnB,EAAKkf,eAAiB,KAEtB,EAAKC,UAAY,CAAEC,MAAO,EAAGroB,MAAOtH,KAEpC,EAAKyd,SAAW,GAxBH,E,4CA4Bd,WAEC,OAAOh3B,KAAKwN,Q,sBAIb,SAAUA,GAYT,OAVKoQ,MAAMC,QAASrQ,GAEnBxN,KAAKwN,MAAQ,IAAM8L,GAAU9L,GAAU,MAAQu6B,GAAwBF,IAAyBr6B,EAAO,GAIvGxN,KAAKwN,MAAQA,EAIPxN,O,0BAIR,SAAcua,GAEb,OAAOva,KAAK4oC,WAAYruB,K,0BAIzB,SAAcA,EAAMvF,GAInB,OAFAhV,KAAK4oC,WAAYruB,GAASvF,EAEnBhV,O,6BAIR,SAAiBua,GAIhB,cAFOva,KAAK4oC,WAAYruB,GAEjBva,O,0BAIR,SAAcua,GAEb,YAAmCla,IAA5BL,KAAK4oC,WAAYruB,K,sBAIzB,SAAU2uB,EAAOroB,GAA2B,IAApBsoB,EAAoB,uDAAJ,EAEvCnpC,KAAK+oC,OAAOz7B,KAAM,CAEjB47B,MAAOA,EACProB,MAAOA,EACPsoB,cAAeA,M,yBAMjB,WAECnpC,KAAK+oC,OAAS,K,0BAIf,SAAcG,EAAOroB,GAEpB7gB,KAAKipC,UAAUC,MAAQA,EACvBlpC,KAAKipC,UAAUpoB,MAAQA,I,0BAIxB,SAAczH,GAEb,IAAM2Z,EAAW/yB,KAAK4oC,WAAW7V,cAEf1yB,IAAb0yB,IAEJA,EAASrM,aAActN,GAEvB2Z,EAASqW,aAAc,GAIxB,IAAMxhB,EAAS5nB,KAAK4oC,WAAWhhB,OAE/B,QAAgBvnB,IAAXunB,EAAuB,CAE3B,IAAM2O,GAAe,IAAI/gB,IAAU6zB,gBAAiBjwB,GAEpDwO,EAAO0f,kBAAmB/Q,GAE1B3O,EAAOwhB,aAAc,EAItB,IAAME,EAAUtpC,KAAK4oC,WAAWU,QAsBhC,YApBiBjpC,IAAZipC,IAEJA,EAAQxZ,mBAAoB1W,GAE5BkwB,EAAQF,aAAc,GAIG,OAArBppC,KAAK8pB,aAET9pB,KAAK+pB,qBAIuB,OAAxB/pB,KAAKgpC,gBAEThpC,KAAKupC,wBAICvpC,O,6BAIR,SAAiBoS,GAMhB,OAJAi2B,GAAI5T,2BAA4BriB,GAEhCpS,KAAK0mB,aAAc2hB,IAEZroC,O,qBAIR,SAASsU,GAQR,OAJA+zB,GAAImB,cAAel1B,GAEnBtU,KAAK0mB,aAAc2hB,IAEZroC,O,qBAIR,SAASsU,GAQR,OAJA+zB,GAAIoB,cAAen1B,GAEnBtU,KAAK0mB,aAAc2hB,IAEZroC,O,qBAIR,SAASsU,GAQR,OAJA+zB,GAAIqB,cAAep1B,GAEnBtU,KAAK0mB,aAAc2hB,IAEZroC,O,uBAIR,SAAW0P,EAAGC,EAAG8O,GAQhB,OAJA4pB,GAAIsB,gBAAiBj6B,EAAGC,EAAG8O,GAE3Bze,KAAK0mB,aAAc2hB,IAEZroC,O,mBAIR,SAAO0P,EAAGC,EAAG8O,GAQZ,OAJA4pB,GAAIuB,UAAWl6B,EAAGC,EAAG8O,GAErBze,KAAK0mB,aAAc2hB,IAEZroC,O,oBAIR,SAAQ0pB,GAQP,OANA4e,GAAK3Q,OAAQjO,GAEb4e,GAAKrR,eAELj3B,KAAK0mB,aAAc4hB,GAAKlvB,QAEjBpZ,O,oBAIR,WAQC,OANAA,KAAK+pB,qBAEL/pB,KAAK8pB,YAAYU,UAAW+d,IAAUsB,SAEtC7pC,KAAK8pC,UAAWvB,GAAQ74B,EAAG64B,GAAQ54B,EAAG44B,GAAQ9pB,GAEvCze,O,2BAIR,SAAe8oB,GAId,IAFA,IAAMiK,EAAW,GAEPjlB,EAAI,EAAGC,EAAI+a,EAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAM2b,EAAQX,EAAQhb,GACtBilB,EAASzlB,KAAMmc,EAAM/Z,EAAG+Z,EAAM9Z,EAAG8Z,EAAMhL,GAAK,GAM7C,OAFAze,KAAK+pC,aAAc,WAAY,IAAI7B,GAAwBnV,EAAU,IAE9D/yB,O,gCAIR,WAE2B,OAArBA,KAAK8pB,cAET9pB,KAAK8pB,YAAc,IAAIvB,IAIxB,IAAMwK,EAAW/yB,KAAK4oC,WAAW7V,SAC3BiX,EAA0BhqC,KAAK6oC,gBAAgB9V,SAErD,GAAKA,GAAYA,EAASkX,oBASzB,OAPA72B,QAAQ3T,MAAO,kJAAmJO,WAElKA,KAAK8pB,YAAY3W,IAChB,IAAIwS,IAAWpM,KAAYA,KAAYA,KACvC,IAAIoM,GAAWpM,IAAYA,IAAYA,MAOzC,QAAkBlZ,IAAb0yB,GAMJ,GAJA/yB,KAAK8pB,YAAYogB,uBAAwBnX,GAIpCiX,EAEJ,IAAM,IAAIl8B,EAAI,EAAGgT,EAAKkpB,EAAwBh8B,OAAQF,EAAIgT,EAAIhT,IAAO,CAEpE,IAAMq8B,EAAiBH,EAAyBl8B,GAChD06B,GAAO0B,uBAAwBC,GAE1BnqC,KAAK8oC,sBAETJ,GAAU90B,WAAY5T,KAAK8pB,YAAY1a,IAAKo5B,GAAOp5B,KACnDpP,KAAK8pB,YAAYd,cAAe0f,IAEhCA,GAAU90B,WAAY5T,KAAK8pB,YAAYza,IAAKm5B,GAAOn5B,KACnDrP,KAAK8pB,YAAYd,cAAe0f,MAIhC1oC,KAAK8pB,YAAYd,cAAewf,GAAOp5B,KACvCpP,KAAK8pB,YAAYd,cAAewf,GAAOn5B,YAU1CrP,KAAK8pB,YAAYf,aAIbqhB,MAAOpqC,KAAK8pB,YAAY1a,IAAIM,IAAO06B,MAAOpqC,KAAK8pB,YAAY1a,IAAIO,IAAOy6B,MAAOpqC,KAAK8pB,YAAY1a,IAAIqP,KAEtGrL,QAAQ3T,MAAO,sIAAuIO,Q,mCAMxJ,WAE8B,OAAxBA,KAAKgpC,iBAEThpC,KAAKgpC,eAAiB,IAAI5c,IAI3B,IAAM2G,EAAW/yB,KAAK4oC,WAAW7V,SAC3BiX,EAA0BhqC,KAAK6oC,gBAAgB9V,SAErD,GAAKA,GAAYA,EAASkX,oBAMzB,OAJA72B,QAAQ3T,MAAO,wJAAyJO,WAExKA,KAAKgpC,eAAe71B,IAAK,IAAIwS,GAAWpM,KAMzC,GAAKwZ,EAAW,CAIf,IAAM5d,EAASnV,KAAKgpC,eAAe7zB,OAMnC,GAJAqzB,GAAO0B,uBAAwBnX,GAI1BiX,EAEJ,IAAM,IAAIl8B,EAAI,EAAGgT,EAAKkpB,EAAwBh8B,OAAQF,EAAIgT,EAAIhT,IAAO,CAEpE,IAAMq8B,EAAiBH,EAAyBl8B,GAChD26B,GAAiByB,uBAAwBC,GAEpCnqC,KAAK8oC,sBAETJ,GAAU90B,WAAY40B,GAAOp5B,IAAKq5B,GAAiBr5B,KACnDo5B,GAAOxf,cAAe0f,IAEtBA,GAAU90B,WAAY40B,GAAOn5B,IAAKo5B,GAAiBp5B,KACnDm5B,GAAOxf,cAAe0f,MAItBF,GAAOxf,cAAeyf,GAAiBr5B,KACvCo5B,GAAOxf,cAAeyf,GAAiBp5B,MAQ1Cm5B,GAAOhe,UAAWrV,GAOlB,IAFA,IAAImX,EAAc,EAERxe,EAAI,EAAGgT,EAAKiS,EAASlS,MAAO/S,EAAIgT,EAAIhT,IAE7C46B,GAAUhN,oBAAqB3I,EAAUjlB,GAEzCwe,EAAcle,KAAKiB,IAAKid,EAAanX,EAAOX,kBAAmBk0B,KAMhE,GAAKsB,EAEJ,IAAM,IAAIl8B,EAAI,EAAGgT,EAAKkpB,EAAwBh8B,OAAQF,EAAIgT,EAAIhT,IAK7D,IAHA,IAAMq8B,EAAiBH,EAAyBl8B,GAC1Cg7B,EAAuB9oC,KAAK8oC,qBAExBld,EAAI,EAAGye,EAAKF,EAAetpB,MAAO+K,EAAIye,EAAIze,IAEnD8c,GAAUhN,oBAAqByO,EAAgBve,GAE1Ckd,IAEJP,GAAQ7M,oBAAqB3I,EAAUnH,GACvC8c,GAAUtf,IAAKmf,KAIhBjc,EAAcle,KAAKiB,IAAKid,EAAanX,EAAOX,kBAAmBk0B,KAQlE1oC,KAAKgpC,eAAejhB,OAAS3Z,KAAKiG,KAAMiY,GAEnC8d,MAAOpqC,KAAKgpC,eAAejhB,SAE/B3U,QAAQ3T,MAAO,+HAAgIO,S,6BAQlJ,WAEC,IAAMwN,EAAQxN,KAAKwN,MACbo7B,EAAa5oC,KAAK4oC,WAKxB,GAAe,OAAVp7B,QACqBnN,IAAxBuoC,EAAW7V,eACW1yB,IAAtBuoC,EAAWhhB,aACOvnB,IAAlBuoC,EAAW3qB,GAHb,CAUA,IAAMqsB,EAAU98B,EAAMI,MAChB28B,EAAY3B,EAAW7V,SAASnlB,MAChC48B,EAAU5B,EAAWhhB,OAAOha,MAC5B68B,EAAM7B,EAAW3qB,GAAGrQ,MAEpB88B,EAAYH,EAAUv8B,OAAS,OAET3N,IAAvBuoC,EAAWU,SAEftpC,KAAK+pC,aAAc,UAAW,IAAIpD,GAAiB,IAAIzsB,aAAc,EAAIwwB,GAAa,IAQvF,IAJA,IAAMC,EAAW/B,EAAWU,QAAQ17B,MAE9Bg9B,EAAO,GAAIC,EAAO,GAEd/8B,EAAI,EAAGA,EAAI48B,EAAW58B,IAE/B88B,EAAM98B,GAAM,IAAI6X,GAChBklB,EAAM/8B,GAAM,IAAI6X,GAIjB,IAAMmlB,EAAK,IAAInlB,GACdolB,EAAK,IAAIplB,GACTqlB,EAAK,IAAIrlB,GAETslB,EAAM,IAAI33B,GACV43B,EAAM,IAAI53B,GACV63B,EAAM,IAAI73B,GAEV83B,EAAO,IAAIzlB,GACX0lB,EAAO,IAAI1lB,GAqCRojB,EAAS/oC,KAAK+oC,OAEK,IAAlBA,EAAO/6B,SAEX+6B,EAAS,CAAE,CACVG,MAAO,EACProB,MAAOypB,EAAQt8B,UAKjB,IAAM,IAAIF,EAAI,EAAGgT,EAAKioB,EAAO/6B,OAAQF,EAAIgT,IAAOhT,EAO/C,IALA,IAAMw9B,EAAQvC,EAAQj7B,GAEhBo7B,EAAQoC,EAAMpC,MAGVtd,EAAIsd,EAAOmB,EAAKnB,EAFZoC,EAAMzqB,MAEqB+K,EAAIye,EAAIze,GAAK,EAErD2f,EACCjB,EAAS1e,EAAI,GACb0e,EAAS1e,EAAI,GACb0e,EAAS1e,EAAI,IAmChB,IA5BA,IAAMtT,EAAM,IAAIqN,GAAW6lB,EAAO,IAAI7lB,GAChCpW,EAAI,IAAIoW,GAAW8lB,EAAK,IAAI9lB,GA2BxB7X,EAAI,EAAGgT,EAAKioB,EAAO/6B,OAAQF,EAAIgT,IAAOhT,EAO/C,IALA,IAAMw9B,EAAQvC,EAAQj7B,GAEhBo7B,EAAQoC,EAAMpC,MAGVtd,EAAIsd,EAAOmB,EAAKnB,EAFZoC,EAAMzqB,MAEqB+K,EAAIye,EAAIze,GAAK,EAErD8f,EAAcpB,EAAS1e,EAAI,IAC3B8f,EAAcpB,EAAS1e,EAAI,IAC3B8f,EAAcpB,EAAS1e,EAAI,SAhJ5BxY,QAAQ3T,MAAO,gHAwChB,SAAS8rC,EAAgBl5B,EAAGC,EAAGC,GAE9Bu4B,EAAGzxB,UAAWkxB,EAAe,EAAJl4B,GACzB04B,EAAG1xB,UAAWkxB,EAAe,EAAJj4B,GACzB04B,EAAG3xB,UAAWkxB,EAAe,EAAJh4B,GAEzB04B,EAAI5xB,UAAWoxB,EAAS,EAAJp4B,GACpB64B,EAAI7xB,UAAWoxB,EAAS,EAAJn4B,GACpB64B,EAAI9xB,UAAWoxB,EAAS,EAAJl4B,GAEpBw4B,EAAGpjB,IAAKmjB,GACRE,EAAGrjB,IAAKmjB,GAERI,EAAIvjB,IAAKsjB,GACTE,EAAIxjB,IAAKsjB,GAET,IAAMtyB,EAAI,GAAQuyB,EAAIx7B,EAAIy7B,EAAIx7B,EAAIw7B,EAAIz7B,EAAIw7B,EAAIv7B,GAIvCg8B,SAAUhzB,KAEjByyB,EAAKnuB,KAAM8tB,GAAKj3B,eAAgBq3B,EAAIx7B,GAAI4sB,gBAAiByO,GAAME,EAAIv7B,GAAImE,eAAgB6E,GACvF0yB,EAAKpuB,KAAM+tB,GAAKl3B,eAAgBo3B,EAAIx7B,GAAI6sB,gBAAiBwO,GAAMI,EAAIz7B,GAAIoE,eAAgB6E,GAEvFiyB,EAAMv4B,GAAI+W,IAAKgiB,GACfR,EAAMt4B,GAAI8W,IAAKgiB,GACfR,EAAMr4B,GAAI6W,IAAKgiB,GAEfP,EAAMx4B,GAAI+W,IAAKiiB,GACfR,EAAMv4B,GAAI8W,IAAKiiB,GACfR,EAAMt4B,GAAI6W,IAAKiiB,IAqChB,SAASK,EAAch4B,GAEtBnE,EAAE8J,UAAWmxB,EAAa,EAAJ92B,GACtB+3B,EAAGxuB,KAAM1N,GAET,IAAMK,EAAIg7B,EAAMl3B,GAIhB4E,EAAI2E,KAAMrN,GACV0I,EAAIqP,IAAKpY,EAAEuE,eAAgBvE,EAAEgT,IAAK3S,KAAQ+E,YAI1C62B,EAAKzkB,aAAc0kB,EAAI77B,GACvB,IACM+D,EADO63B,EAAKjpB,IAAKsoB,EAAMn3B,IACV,GAAU,EAAM,EAEnCi3B,EAAc,EAAJj3B,GAAU4E,EAAI5I,EACxBi7B,EAAc,EAAJj3B,EAAQ,GAAM4E,EAAI3I,EAC5Bg7B,EAAc,EAAJj3B,EAAQ,GAAM4E,EAAImG,EAC5BksB,EAAc,EAAJj3B,EAAQ,GAAMC,K,kCAuB1B,WAEC,IAAMnG,EAAQxN,KAAKwN,MACbo+B,EAAoB5rC,KAAK6rC,aAAc,YAE7C,QAA2BxrC,IAAtBurC,EAAkC,CAEtC,IAAIE,EAAkB9rC,KAAK6rC,aAAc,UAEzC,QAAyBxrC,IAApByrC,EAEJA,EAAkB,IAAInF,GAAiB,IAAIzsB,aAAwC,EAA1B0xB,EAAkB/qB,OAAa,GACxF7gB,KAAK+pC,aAAc,SAAU+B,QAM7B,IAAM,IAAIh+B,EAAI,EAAGgT,EAAKgrB,EAAgBjrB,MAAO/S,EAAIgT,EAAIhT,IAEpDg+B,EAAgBzE,OAAQv5B,EAAG,EAAG,EAAG,GAMnC,IAAMi+B,EAAK,IAAIpmB,GAAWqmB,EAAK,IAAIrmB,GAAWsmB,EAAK,IAAItmB,GACjDumB,EAAK,IAAIvmB,GAAWwmB,EAAK,IAAIxmB,GAAWymB,EAAK,IAAIzmB,GACjD0mB,EAAK,IAAI1mB,GAAW2mB,EAAK,IAAI3mB,GAInC,GAAKnY,EAEJ,IAAM,IAAIM,EAAI,EAAGgT,EAAKtT,EAAMqT,MAAO/S,EAAIgT,EAAIhT,GAAK,EAAI,CAEnD,IAAMg9B,EAAKt9B,EAAMyH,KAAMnH,EAAI,GACrBi9B,EAAKv9B,EAAMyH,KAAMnH,EAAI,GACrBk9B,EAAKx9B,EAAMyH,KAAMnH,EAAI,GAE3Bi+B,EAAGrQ,oBAAqBkQ,EAAmBd,GAC3CkB,EAAGtQ,oBAAqBkQ,EAAmBb,GAC3CkB,EAAGvQ,oBAAqBkQ,EAAmBZ,GAE3CqB,EAAGx4B,WAAYo4B,EAAID,GACnBM,EAAGz4B,WAAYk4B,EAAIC,GACnBK,EAAGzc,MAAO0c,GAEVJ,EAAGxQ,oBAAqBoQ,EAAiBhB,GACzCqB,EAAGzQ,oBAAqBoQ,EAAiBf,GACzCqB,EAAG1Q,oBAAqBoQ,EAAiBd,GAEzCkB,EAAG9iB,IAAKijB,GACRF,EAAG/iB,IAAKijB,GACRD,EAAGhjB,IAAKijB,GAERP,EAAgBzE,OAAQyD,EAAIoB,EAAGx8B,EAAGw8B,EAAGv8B,EAAGu8B,EAAGztB,GAC3CqtB,EAAgBzE,OAAQ0D,EAAIoB,EAAGz8B,EAAGy8B,EAAGx8B,EAAGw8B,EAAG1tB,GAC3CqtB,EAAgBzE,OAAQ2D,EAAIoB,EAAG18B,EAAG08B,EAAGz8B,EAAGy8B,EAAG3tB,QAQ5C,IAAM,IAAI3Q,EAAI,EAAGgT,EAAK8qB,EAAkB/qB,MAAO/S,EAAIgT,EAAIhT,GAAK,EAE3Di+B,EAAGrQ,oBAAqBkQ,EAAmB99B,EAAI,GAC/Ck+B,EAAGtQ,oBAAqBkQ,EAAmB99B,EAAI,GAC/Cm+B,EAAGvQ,oBAAqBkQ,EAAmB99B,EAAI,GAE/Cu+B,EAAGx4B,WAAYo4B,EAAID,GACnBM,EAAGz4B,WAAYk4B,EAAIC,GACnBK,EAAGzc,MAAO0c,GAEVR,EAAgBzE,OAAQv5B,EAAI,EAAGu+B,EAAG38B,EAAG28B,EAAG18B,EAAG08B,EAAG5tB,GAC9CqtB,EAAgBzE,OAAQv5B,EAAI,EAAGu+B,EAAG38B,EAAG28B,EAAG18B,EAAG08B,EAAG5tB,GAC9CqtB,EAAgBzE,OAAQv5B,EAAI,EAAGu+B,EAAG38B,EAAG28B,EAAG18B,EAAG08B,EAAG5tB,GAMhDze,KAAKusC,mBAELT,EAAgB1C,aAAc,K,mBAMhC,SAAOvf,EAAU9U,GAEhB,GAAS8U,GAAYA,EAAS2iB,iBAA9B,MAOgBnsC,IAAX0U,IAEJA,EAAS,EAET3B,QAAQC,KACP,2JAMF,IAAMu1B,EAAa5oC,KAAK4oC,WAExB,IAAM,IAAMvpC,KAAOupC,EAElB,QAAoCvoC,IAA/BwpB,EAAS+e,WAAYvpC,GAW1B,IATA,IACMotC,EADa7D,EAAYvpC,GACIuO,MAE7B8+B,EAAa7iB,EAAS+e,WAAYvpC,GAClCstC,EAAkBD,EAAW9+B,MAE7Bg/B,EAAkBF,EAAW9F,SAAW7xB,EACxC/G,EAASI,KAAKgB,IAAKu9B,EAAgB3+B,OAAQy+B,EAAgBz+B,OAAS4+B,GAEhE9+B,EAAI,EAAG8d,EAAIghB,EAAiB9+B,EAAIE,EAAQF,IAAM8d,IAEvD6gB,EAAiB7gB,GAAM+gB,EAAiB7+B,GAM1C,OAAO9N,KAvCNoT,QAAQ3T,MAAO,kFAAmFoqB,K,8BA2CpG,WAIC,IAFA,IAAM2gB,EAAUxqC,KAAK4oC,WAAWhhB,OAEtB9Z,EAAI,EAAGgT,EAAK0pB,EAAQ3pB,MAAO/S,EAAIgT,EAAIhT,IAE5C46B,GAAUhN,oBAAqB8O,EAAS18B,GAExC46B,GAAU/zB,YAEV61B,EAAQnD,OAAQv5B,EAAG46B,GAAUh5B,EAAGg5B,GAAU/4B,EAAG+4B,GAAUjqB,K,0BAMzD,WAEC,SAASouB,EAAwB73B,EAAWs1B,GAU3C,IARA,IAAM18B,EAAQoH,EAAUpH,MAClBg5B,EAAW5xB,EAAU4xB,SACrBR,EAAapxB,EAAUoxB,WAEvB0G,EAAS,IAAIl/B,EAAM6F,YAAa62B,EAAQt8B,OAAS44B,GAEnDp5B,EAAQ,EAAGy5B,EAAS,EAEdn5B,EAAI,EAAGC,EAAIu8B,EAAQt8B,OAAQF,EAAIC,EAAGD,IAAO,CAIjDN,EAFIwH,EAAU+3B,6BAENzC,EAASx8B,GAAMkH,EAAUsJ,KAAK0uB,OAASh4B,EAAUD,OAIjDu1B,EAASx8B,GAAM84B,EAIxB,IAAM,IAAIhb,EAAI,EAAGA,EAAIgb,EAAUhb,IAE9BkhB,EAAQ7F,KAAcr5B,EAAOJ,KAM/B,OAAO,IAAIm5B,GAAiBmG,EAAQlG,EAAUR,GAM/C,GAAoB,OAAfpmC,KAAKwN,MAGT,OADA4F,QAAQC,KAAM,+EACPrT,KAIR,IAAMitC,EAAY,IAAItE,EAEhB2B,EAAUtqC,KAAKwN,MAAMI,MACrBg7B,EAAa5oC,KAAK4oC,WAIxB,IAAM,IAAMruB,KAAQquB,EAAa,CAEhC,IAEMsE,EAAeL,EAFHjE,EAAYruB,GAE0B+vB,GAExD2C,EAAUlD,aAAcxvB,EAAM2yB,GAM/B,IAAMrE,EAAkB7oC,KAAK6oC,gBAE7B,IAAM,IAAMtuB,KAAQsuB,EAAkB,CAKrC,IAHA,IAAMsE,EAAa,GACbhD,EAAiBtB,EAAiBtuB,GAE9BzM,EAAI,EAAGgT,EAAKqpB,EAAen8B,OAAQF,EAAIgT,EAAIhT,IAAO,CAE3D,IAEMo/B,EAAeL,EAFH1C,EAAgBr8B,GAEsBw8B,GAExD6C,EAAW7/B,KAAM4/B,GAIlBD,EAAUpE,gBAAiBtuB,GAAS4yB,EAIrCF,EAAUnE,qBAAuB9oC,KAAK8oC,qBAMtC,IAFA,IAAMC,EAAS/oC,KAAK+oC,OAEVj7B,EAAI,EAAGC,EAAIg7B,EAAO/6B,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMw9B,EAAQvC,EAAQj7B,GACtBm/B,EAAUG,SAAU9B,EAAMpC,MAAOoC,EAAMzqB,MAAOyqB,EAAMnC,eAIrD,OAAO8D,I,oBAIR,WAEC,IAAM3uB,EAAO,CACZf,SAAU,CACTV,QAAS,IACT5P,KAAM,iBACNuQ,UAAW,0BAWb,GALAc,EAAKlC,KAAOpc,KAAKoc,KACjBkC,EAAKrR,KAAOjN,KAAKiN,KACE,KAAdjN,KAAKua,OAAc+D,EAAK/D,KAAOva,KAAKua,MACpCjK,OAAO+8B,KAAMrtC,KAAKg3B,UAAWhpB,OAAS,IAAIsQ,EAAK0Y,SAAWh3B,KAAKg3B,eAE3C32B,IAApBL,KAAK65B,WAA2B,CAEpC,IAAMA,EAAa75B,KAAK65B,WAExB,IAAM,IAAMx6B,KAAOw6B,OAESx5B,IAAtBw5B,EAAYx6B,KAAsBif,EAAMjf,GAAQw6B,EAAYx6B,IAIlE,OAAOif,EAMRA,EAAKA,KAAO,CAAEsqB,WAAY,IAE1B,IAAMp7B,EAAQxN,KAAKwN,MAEJ,OAAVA,IAEJ8Q,EAAKA,KAAK9Q,MAAQ,CACjBP,KAAMO,EAAMI,MAAM6F,YAAY8G,KAC9B3M,MAAOgQ,MAAMtI,UAAUzH,MAAMI,KAAMT,EAAMI,SAK3C,IAAMg7B,EAAa5oC,KAAK4oC,WAExB,IAAM,IAAMvpC,KAAOupC,EAAa,CAE/B,IAAM5zB,EAAY4zB,EAAYvpC,GAE9Bif,EAAKA,KAAKsqB,WAAYvpC,GAAQ2V,EAAU+jB,OAAQza,EAAKA,MAItD,IAAMuqB,EAAkB,GACpByE,GAAqB,EAEzB,IAAM,IAAMjuC,KAAOW,KAAK6oC,gBAAkB,CAMzC,IAJA,IAAM0E,EAAiBvtC,KAAK6oC,gBAAiBxpC,GAEvCuO,EAAQ,GAEJE,EAAI,EAAGgT,EAAKysB,EAAev/B,OAAQF,EAAIgT,EAAIhT,IAAO,CAE3D,IAAMkH,EAAYu4B,EAAgBz/B,GAElCF,EAAMN,KAAM0H,EAAU+jB,OAAQza,EAAKA,OAI/B1Q,EAAMI,OAAS,IAEnB66B,EAAiBxpC,GAAQuO,EAEzB0/B,GAAqB,GAMlBA,IAEJhvB,EAAKA,KAAKuqB,gBAAkBA,EAC5BvqB,EAAKA,KAAKwqB,qBAAuB9oC,KAAK8oC,sBAIvC,IAAMC,EAAS/oC,KAAK+oC,OAEfA,EAAO/6B,OAAS,IAEpBsQ,EAAKA,KAAKyqB,OAAS/P,KAAK0B,MAAO1B,KAAKC,UAAW8P,KAIhD,IAAMC,EAAiBhpC,KAAKgpC,eAW5B,OATwB,OAAnBA,IAEJ1qB,EAAKA,KAAK0qB,eAAiB,CAC1B7zB,OAAQ6zB,EAAe7zB,OAAO+jB,UAC9BnR,OAAQihB,EAAejhB,SAKlBzJ,I,mBAIR,WAEE,OAAO,IAAIte,KAAKyT,aAAcwJ,KAAMjd,Q,kBAItC,SAAMkd,GAILld,KAAKwN,MAAQ,KACbxN,KAAK4oC,WAAa,GAClB5oC,KAAK6oC,gBAAkB,GACvB7oC,KAAK+oC,OAAS,GACd/oC,KAAK8pB,YAAc,KACnB9pB,KAAKgpC,eAAiB,KAItB,IAAM1qB,EAAO,GAIbte,KAAKua,KAAO2C,EAAO3C,KAInB,IAAM/M,EAAQ0P,EAAO1P,MAEN,OAAVA,GAEJxN,KAAKwtC,SAAUhgC,EAAMkT,MAAOpC,IAM7B,IAAMsqB,EAAa1rB,EAAO0rB,WAE1B,IAAM,IAAMruB,KAAQquB,EAAa,CAEhC,IAAM5zB,EAAY4zB,EAAYruB,GAC9Bva,KAAK+pC,aAAcxvB,EAAMvF,EAAU0L,MAAOpC,IAM3C,IAAMuqB,EAAkB3rB,EAAO2rB,gBAE/B,IAAM,IAAMtuB,KAAQsuB,EAAkB,CAKrC,IAHA,IAAMj7B,EAAQ,GACRu8B,EAAiBtB,EAAiBtuB,GAE9BzM,EAAI,EAAGC,EAAIo8B,EAAen8B,OAAQF,EAAIC,EAAGD,IAElDF,EAAMN,KAAM68B,EAAgBr8B,GAAI4S,MAAOpC,IAIxCte,KAAK6oC,gBAAiBtuB,GAAS3M,EAIhC5N,KAAK8oC,qBAAuB5rB,EAAO4rB,qBAMnC,IAFA,IAAMC,EAAS7rB,EAAO6rB,OAEZj7B,EAAI,EAAGC,EAAIg7B,EAAO/6B,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMw9B,EAAQvC,EAAQj7B,GACtB9N,KAAKotC,SAAU9B,EAAMpC,MAAOoC,EAAMzqB,MAAOyqB,EAAMnC,eAMhD,IAAMrf,EAAc5M,EAAO4M,YAEN,OAAhBA,IAEJ9pB,KAAK8pB,YAAcA,EAAYpJ,SAMhC,IAAMsoB,EAAiB9rB,EAAO8rB,eAqB9B,OAnBwB,OAAnBA,IAEJhpC,KAAKgpC,eAAiBA,EAAetoB,SAMtC1gB,KAAKipC,UAAUC,MAAQhsB,EAAO+rB,UAAUC,MACxClpC,KAAKipC,UAAUpoB,MAAQ3D,EAAO+rB,UAAUpoB,MAIxC7gB,KAAKg3B,SAAW9Z,EAAO8Z,cAII32B,IAAtB6c,EAAO2c,aAA2B75B,KAAK65B,WAAavpB,OAAOm9B,OAAQ,GAAIvwB,EAAO2c,aAE5E75B,O,qBAIR,WAECA,KAAKge,cAAe,CAAE/Q,KAAM,gB,GA5kCDD,IAklC7B27B,GAAerzB,UAAUk3B,kBAAmB,EAE5C,IAAMkB,GAAiC,IAAI3d,GACrC4d,GAAuB,IAAIrgB,GAC3BsgB,GAA0B,IAAIxhB,GAE9ByhB,GAAsB,IAAIloB,GAC1BmoB,GAAsB,IAAInoB,GAC1BooB,GAAsB,IAAIpoB,GAE1BqoB,GAAuB,IAAIroB,GAC3BsoB,GAAuB,IAAItoB,GAC3BuoB,GAAuB,IAAIvoB,GAE3BwoB,GAAwB,IAAIxoB,GAC5ByoB,GAAwB,IAAIzoB,GAC5B0oB,GAAwB,IAAI1oB,GAE5B2oB,GAAuB,IAAIh7B,GAC3Bi7B,GAAuB,IAAIj7B,GAC3Bk7B,GAAuB,IAAIl7B,GAE3Bm7B,GAAmC,IAAI9oB,GACvC+oB,GAAwC,IAAI/oB,GAE5CgpB,G,kDAEL,aAAmF,MAAtE9kB,EAAsE,uDAA3D,IAAI8e,GAAkBxO,EAAqC,uDAA1B,IAAImM,GAAsB,4BAElF,gBAEKr5B,KAAO,OAEZ,EAAK4c,SAAWA,EAChB,EAAKsQ,SAAWA,EAEhB,EAAKyU,qBAT6E,E,wCAanF,SAAM1xB,GAmBL,OAjBA,4DAAYA,QAE0B7c,IAAjC6c,EAAO2xB,wBAEX7uC,KAAK6uC,sBAAwB3xB,EAAO2xB,sBAAsBhhC,cAIrBxN,IAAjC6c,EAAO4xB,wBAEX9uC,KAAK8uC,sBAAwBx+B,OAAOm9B,OAAQ,GAAIvwB,EAAO4xB,wBAIxD9uC,KAAKm6B,SAAWjd,EAAOid,SACvBn6B,KAAK6pB,SAAW3M,EAAO2M,SAEhB7pB,O,gCAIR,WAEC,IAAM6pB,EAAW7pB,KAAK6pB,SAEtB,GAAKA,EAAS2iB,iBAAmB,CAEhC,IAAM3D,EAAkBhf,EAASgf,gBAC3BwE,EAAO/8B,OAAO+8B,KAAMxE,GAE1B,GAAKwE,EAAKr/B,OAAS,EAAI,CAEtB,IAAMm8B,EAAiBtB,EAAiBwE,EAAM,IAE9C,QAAwBhtC,IAAnB8pC,EAA+B,CAEnCnqC,KAAK6uC,sBAAwB,GAC7B7uC,KAAK8uC,sBAAwB,GAE7B,IAAM,IAAIt/B,EAAI,EAAGu/B,EAAK5E,EAAen8B,OAAQwB,EAAIu/B,EAAIv/B,IAAO,CAE3D,IAAM+K,EAAO4vB,EAAgB36B,GAAI+K,MAAQy0B,OAAQx/B,GAEjDxP,KAAK6uC,sBAAsBvhC,KAAM,GACjCtN,KAAK8uC,sBAAuBv0B,GAAS/K,SAQlC,CAEN,IAAMy/B,EAAeplB,EAASolB,kBAER5uC,IAAjB4uC,GAA8BA,EAAajhC,OAAS,GAExDoF,QAAQ3T,MAAO,2G,qBAQlB,SAASyvC,EAAWC,GAEnB,IA4BIC,EA5BEvlB,EAAW7pB,KAAK6pB,SAChBsQ,EAAWn6B,KAAKm6B,SAChBrT,EAAc9mB,KAAK8mB,YAEzB,QAAkBzmB,IAAb85B,IAI4B,OAA5BtQ,EAASmf,gBAA0Bnf,EAAS0f,wBAEjDqE,GAAU3wB,KAAM4M,EAASmf,gBACzB4E,GAAUlnB,aAAcI,IAE6B,IAAhDooB,EAAUzhB,IAAIhB,iBAAkBmhB,MAIrCF,GAAiBzwB,KAAM6J,GAAcrO,SACrCk1B,GAAO1wB,KAAMiyB,EAAUzhB,KAAM/G,aAAcgnB,IAIb,OAAzB7jB,EAASC,cAEyC,IAAjD6jB,GAAO0B,cAAexlB,EAASC,eAMrC,GAAKD,EAAS2iB,iBAAmB,CAEhC,IAAMh/B,EAAQqc,EAASrc,MACjBulB,EAAWlJ,EAAS+e,WAAW7V,SAC/Buc,EAAgBzlB,EAASgf,gBAAgB9V,SACzC+V,EAAuBjf,EAASif,qBAChC7qB,EAAK4L,EAAS+e,WAAW3qB,GACzB8d,EAAMlS,EAAS+e,WAAW7M,IAC1BgN,EAASlf,EAASkf,OAClBE,EAAYpf,EAASof,UAE3B,GAAe,OAAVz7B,EAIJ,GAAKoQ,MAAMC,QAASsc,GAEnB,IAAM,IAAIrsB,EAAI,EAAGgT,EAAKioB,EAAO/6B,OAAQF,EAAIgT,EAAIhT,IAQ5C,IANA,IAAMw9B,EAAQvC,EAAQj7B,GAChByhC,EAAgBpV,EAAUmR,EAAMnC,eAK5Bvd,EAHIxd,KAAKiB,IAAKi8B,EAAMpC,MAAOD,EAAUC,OAG1BmB,EAFTj8B,KAAKgB,IAAK5B,EAAMqT,MAAOzS,KAAKgB,IAAOk8B,EAAMpC,MAAQoC,EAAMzqB,MAAWooB,EAAUC,MAAQD,EAAUpoB,QAE3E+K,EAAIye,EAAIze,GAAK,EAAI,CAE/C,IAAMvZ,EAAI7E,EAAMyH,KAAM2W,GAChBtZ,EAAI9E,EAAMyH,KAAM2W,EAAI,GACpBrZ,EAAI/E,EAAMyH,KAAM2W,EAAI,IAE1BwjB,EAAeI,GAAiCxvC,KAAMuvC,EAAeL,EAAWvB,GAAQ5a,EAAUuc,EAAexG,EAAsB7qB,EAAI8d,EAAK1pB,EAAGC,EAAGC,MAIrJ68B,EAAaK,UAAYrhC,KAAKgC,MAAOwb,EAAI,GACzCwjB,EAAaM,KAAKvG,cAAgBmC,EAAMnC,cACxCgG,EAAW7hC,KAAM8hC,SAapB,IAHA,IAGUthC,EAHIM,KAAKiB,IAAK,EAAG45B,EAAUC,OAGhBpoB,EAFT1S,KAAKgB,IAAK5B,EAAMqT,MAASooB,EAAUC,MAAQD,EAAUpoB,OAElC/S,EAAIgT,EAAIhT,GAAK,EAAI,CAE/C,IAAMuE,EAAI7E,EAAMyH,KAAMnH,GAChBwE,EAAI9E,EAAMyH,KAAMnH,EAAI,GACpByE,EAAI/E,EAAMyH,KAAMnH,EAAI,IAE1BshC,EAAeI,GAAiCxvC,KAAMm6B,EAAU+U,EAAWvB,GAAQ5a,EAAUuc,EAAexG,EAAsB7qB,EAAI8d,EAAK1pB,EAAGC,EAAGC,MAIhJ68B,EAAaK,UAAYrhC,KAAKgC,MAAOtC,EAAI,GACzCqhC,EAAW7hC,KAAM8hC,SAQd,QAAkB/uC,IAAb0yB,EAIX,GAAKnV,MAAMC,QAASsc,GAEnB,IAAM,IAAIrsB,EAAI,EAAGgT,EAAKioB,EAAO/6B,OAAQF,EAAIgT,EAAIhT,IAQ5C,IANA,IAAMw9B,EAAQvC,EAAQj7B,GAChByhC,EAAgBpV,EAAUmR,EAAMnC,eAK5Bvd,EAHIxd,KAAKiB,IAAKi8B,EAAMpC,MAAOD,EAAUC,OAG1BmB,EAFTj8B,KAAKgB,IAAK2jB,EAASlS,MAAOzS,KAAKgB,IAAOk8B,EAAMpC,MAAQoC,EAAMzqB,MAAWooB,EAAUC,MAAQD,EAAUpoB,QAE9E+K,EAAIye,EAAIze,GAAK,EAAI,EAM/CwjB,EAAeI,GAAiCxvC,KAAMuvC,EAAeL,EAAWvB,GAAQ5a,EAAUuc,EAAexG,EAAsB7qB,EAAI8d,EAJjInQ,EACAA,EAAI,EACJA,EAAI,MAMbwjB,EAAaK,UAAYrhC,KAAKgC,MAAOwb,EAAI,GACzCwjB,EAAaM,KAAKvG,cAAgBmC,EAAMnC,cACxCgG,EAAW7hC,KAAM8hC,SAapB,IAHA,IAGUthC,EAHIM,KAAKiB,IAAK,EAAG45B,EAAUC,OAGhBpoB,EAFT1S,KAAKgB,IAAK2jB,EAASlS,MAASooB,EAAUC,MAAQD,EAAUpoB,OAErC/S,EAAIgT,EAAIhT,GAAK,EAAI,EAM/CshC,EAAeI,GAAiCxvC,KAAMm6B,EAAU+U,EAAWvB,GAAQ5a,EAAUuc,EAAexG,EAAsB7qB,EAAI8d,EAJ5HjuB,EACAA,EAAI,EACJA,EAAI,MAMbshC,EAAaK,UAAYrhC,KAAKgC,MAAOtC,EAAI,GACzCqhC,EAAW7hC,KAAM8hC,UAUVvlB,EAAS8lB,YAEpBv8B,QAAQ3T,MAAO,iG,GAtPCs2B,IA+RnB,SAASyZ,GAAiCnmB,EAAQ8Q,EAAU+U,EAAWzhB,EAAKsF,EAAUuc,EAAexG,EAAsB7qB,EAAI8d,EAAK1pB,EAAGC,EAAGC,GAEzIs7B,GAAMnS,oBAAqB3I,EAAU1gB,GACrCy7B,GAAMpS,oBAAqB3I,EAAUzgB,GACrCy7B,GAAMrS,oBAAqB3I,EAAUxgB,GAErC,IAAMq9B,EAAkBvmB,EAAOwlB,sBAE/B,GAAKS,GAAiBM,EAAkB,CAEvCzB,GAAQh7B,IAAK,EAAG,EAAG,GACnBi7B,GAAQj7B,IAAK,EAAG,EAAG,GACnBk7B,GAAQl7B,IAAK,EAAG,EAAG,GAEnB,IAAM,IAAIrF,EAAI,EAAGgT,EAAKwuB,EAActhC,OAAQF,EAAIgT,EAAIhT,IAAO,CAE1D,IAAM+hC,EAAYD,EAAiB9hC,GAC7Bq8B,EAAiBmF,EAAexhC,GAEnB,IAAd+hC,IAEL7B,GAAOtS,oBAAqByO,EAAgB93B,GAC5C47B,GAAOvS,oBAAqByO,EAAgB73B,GAC5C47B,GAAOxS,oBAAqByO,EAAgB53B,GAEvCu2B,GAEJqF,GAAQ5R,gBAAiByR,GAAQ6B,GACjCzB,GAAQ7R,gBAAiB0R,GAAQ4B,GACjCxB,GAAQ9R,gBAAiB2R,GAAQ2B,KAIjC1B,GAAQ5R,gBAAiByR,GAAOrmB,IAAKkmB,IAASgC,GAC9CzB,GAAQ7R,gBAAiB0R,GAAOtmB,IAAKmmB,IAAS+B,GAC9CxB,GAAQ9R,gBAAiB2R,GAAOvmB,IAAKomB,IAAS8B,KAMhDhC,GAAMzkB,IAAK+kB,IACXL,GAAM1kB,IAAKglB,IACXL,GAAM3kB,IAAKilB,IAIPhlB,EAAO0Q,gBAEX1Q,EAAOymB,cAAez9B,EAAGw7B,IACzBxkB,EAAOymB,cAAex9B,EAAGw7B,IACzBzkB,EAAOymB,cAAev9B,EAAGw7B,KAI1B,IAAMqB,EAtFP,SAA4B/lB,EAAQ8Q,EAAU+U,EAAWzhB,EAAKse,EAAIC,EAAIC,EAAIxiB,GAczE,GAAmB,QAVd0Q,EAASsD,OAAS/7B,EAEV+rB,EAAIsiB,kBAAmB9D,EAAID,EAAID,GAAI,EAAMtiB,GAIzCgE,EAAIsiB,kBAAmBhE,EAAIC,EAAIC,EAAI9R,EAASsD,OAAS97B,EAAY8nB,IAIpD,OAAO,KAEjCilB,GAAwBzxB,KAAMwM,GAC9BilB,GAAwBhoB,aAAc2C,EAAOvC,aAE7C,IAAMwQ,EAAW4X,EAAUzhB,IAAIF,OAAOhB,WAAYmiB,IAElD,OAAKpX,EAAW4X,EAAUjb,MAAQqD,EAAW4X,EAAUhb,IAAa,KAE7D,CACNoD,SAAUA,EACV7N,MAAOilB,GAAwBhuB,QAC/B2I,OAAQA,GA4DY2mB,CAAmB3mB,EAAQ8Q,EAAU+U,EAAWzhB,EAAKogB,GAAOC,GAAOC,GAAOU,IAE/F,GAAKW,EAAe,CAEdnxB,IAEJqwB,GAAO5S,oBAAqBzd,EAAI5L,GAChCk8B,GAAO7S,oBAAqBzd,EAAI3L,GAChCk8B,GAAO9S,oBAAqBzd,EAAI1L,GAEhC68B,EAAanxB,GAAKqd,GAASW,MAAOwS,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAIl7B,KAInGyoB,IAEJuS,GAAO5S,oBAAqBK,EAAK1pB,GACjCk8B,GAAO7S,oBAAqBK,EAAKzpB,GACjCk8B,GAAO9S,oBAAqBK,EAAKxpB,GAEjC68B,EAAarT,IAAMT,GAASW,MAAOwS,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAIl7B,KAIzG,IAAMo8B,EAAO,CACZr9B,EAAGA,EACHC,EAAGA,EACHC,EAAGA,EACHqV,OAAQ,IAAIjC,GACZwjB,cAAe,GAGhB7N,GAASK,UAAWkS,GAAOC,GAAOC,GAAO2B,EAAK9nB,QAE9CwnB,EAAaM,KAAOA,EAIrB,OAAON,EA9HRT,GAAKr5B,UAAUokB,QAAS,E,IAkIlBuW,G,kDAEL,aAA0G,MAA7Fl1B,EAA6F,uDAArF,EAAGC,EAAkF,uDAAzE,EAAGiF,EAAsE,uDAA9D,EAAGiwB,EAA2D,uDAA3C,EAAGC,EAAwC,uDAAvB,EAAGC,EAAoB,uDAAJ,EAAI,qBAEzG,gBAEKnjC,KAAO,cAEZ,EAAK4sB,WAAa,CACjB9e,MAAOA,EACPC,OAAQA,EACRiF,MAAOA,EACPiwB,cAAeA,EACfC,eAAgBA,EAChBC,cAAeA,GAGhB,IAAMC,EAAQ,eAIdH,EAAgB9hC,KAAKgC,MAAO8/B,GAC5BC,EAAiB/hC,KAAKgC,MAAO+/B,GAC7BC,EAAgBhiC,KAAKgC,MAAOggC,GAI5B,IAAM9F,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAIR8F,EAAmB,EACnBC,EAAa,EAkBjB,SAASC,EAAYpoB,EAAG3U,EAAGC,EAAG+8B,EAAMC,EAAM51B,EAAOC,EAAQiF,EAAO2wB,EAAOC,EAAO1H,GAmB7E,IAjBA,IAAM2H,EAAe/1B,EAAQ61B,EACvBG,EAAgB/1B,EAAS61B,EAEzBG,EAAYj2B,EAAQ,EACpBk2B,EAAaj2B,EAAS,EACtBk2B,EAAYjxB,EAAQ,EAEpBkxB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEnBQ,EAAgB,EAChBC,EAAa,EAEX5nB,EAAS,IAAI/D,GAITW,EAAK,EAAGA,EAAK8qB,EAAQ9qB,IAI9B,IAFA,IAAM3W,EAAI2W,EAAKyqB,EAAgBE,EAErB5qB,EAAK,EAAGA,EAAK8qB,EAAQ9qB,IAAQ,CAEtC,IAAM3W,EAAI2W,EAAKyqB,EAAeE,EAI9BtnB,EAAQrB,GAAM3Y,EAAIghC,EAClBhnB,EAAQhW,GAAM/D,EAAIghC,EAClBjnB,EAAQ/V,GAAMu9B,EAIdZ,EAAShjC,KAAMoc,EAAOha,EAAGga,EAAO/Z,EAAG+Z,EAAOjL,GAI1CiL,EAAQrB,GAAM,EACdqB,EAAQhW,GAAM,EACdgW,EAAQ/V,GAAMsM,EAAQ,EAAI,GAAM,EAIhCuqB,EAAQl9B,KAAMoc,EAAOha,EAAGga,EAAO/Z,EAAG+Z,EAAOjL,GAIzCgsB,EAAIn9B,KAAM+Y,EAAKuqB,GACfnG,EAAIn9B,KAAM,EAAMgZ,EAAKuqB,GAIrBQ,GAAiB,EAYnB,IAAM,IAAI/qB,EAAK,EAAGA,EAAKuqB,EAAOvqB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAKuqB,EAAOvqB,IAAQ,CAErC,IAAMhU,EAAIk+B,EAAmBlqB,EAAK8qB,EAAS7qB,EACrChU,EAAIi+B,EAAmBlqB,EAAK8qB,GAAW7qB,EAAK,GAC5C/T,EAAIg+B,GAAqBlqB,EAAK,GAAM8qB,GAAW7qB,EAAK,GACpDzO,EAAI04B,GAAqBlqB,EAAK,GAAM8qB,EAAS7qB,EAInDgkB,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GAIpBy5B,GAAc,EAQhBjB,EAAMjD,SAAUoD,EAAYc,EAAYnI,GAIxCqH,GAAcc,EAIdf,GAAoBc,EArJoF,OAqCzGZ,EAAY,IAAK,IAAK,KAAO,GAAK,EAAGxwB,EAAOjF,EAAQD,EAAOq1B,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGxwB,EAAOjF,GAAUD,EAAOq1B,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,EAAG,EAAG11B,EAAOkF,EAAOjF,EAAQk1B,EAAeE,EAAe,GACrFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAG11B,EAAOkF,GAASjF,EAAQk1B,EAAeE,EAAe,GACzFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAG11B,EAAOC,EAAQiF,EAAOiwB,EAAeC,EAAgB,GACxFM,EAAY,IAAK,IAAK,KAAO,GAAK,EAAG11B,EAAOC,GAAUiF,EAAOiwB,EAAeC,EAAgB,GAI5F,EAAK3C,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IAjD+C,E,iDA2J1G,SAAiBnsB,GAEhB,OAAO,IAAI2xB,EAAa3xB,EAAKvD,MAAOuD,EAAKtD,OAAQsD,EAAK2B,MAAO3B,EAAK4xB,cAAe5xB,EAAK6xB,eAAgB7xB,EAAK8xB,mB,GA/JnFzH,IAyK1B,SAAS4I,GAAe32B,GAEvB,IAAM4J,EAAM,GAEZ,IAAM,IAAM6D,KAAKzN,EAIhB,IAAM,IAAMkI,KAFZ0B,EAAK6D,GAAM,GAEMzN,EAAKyN,GAAM,CAE3B,IAAMmpB,EAAW52B,EAAKyN,GAAKvF,GAEtB0uB,IAAcA,EAAShY,SAC3BgY,EAASh4B,WAAag4B,EAASrd,WAC/Bqd,EAASj8B,WAAai8B,EAASlpB,WAAakpB,EAAS1xB,WACrD0xB,EAASjzB,WAAaizB,EAAS9rB,cAE/BlB,EAAK6D,GAAKvF,GAAM0uB,EAAS9wB,QAEd9C,MAAMC,QAAS2zB,GAE1BhtB,EAAK6D,GAAKvF,GAAM0uB,EAAS3jC,QAIzB2W,EAAK6D,GAAKvF,GAAM0uB,EAQnB,OAAOhtB,EAIR,SAASitB,GAAeC,GAIvB,IAFA,IAAMC,EAAS,GAELtpB,EAAI,EAAGA,EAAIqpB,EAAS1jC,OAAQqa,IAAO,CAE5C,IAAM/P,EAAMi5B,GAAeG,EAAUrpB,IAErC,IAAM,IAAMvF,KAAKxK,EAEhBq5B,EAAQ7uB,GAAMxK,EAAKwK,GAMrB,OAAO6uB,EAMR,IAAMC,GAAgB,CAAElxB,MAAO6wB,GAAeM,MAAOJ,IAqB/CK,G,kDAEL,WAAajY,GAAa,kCAEzB,gBAEK5sB,KAAO,iBAEZ,EAAK8kC,QAAU,GACf,EAAKL,SAAW,GAEhB,EAAKM,aA9Bc,gGA+BnB,EAAKC,eA7BgB,iEA+BrB,EAAK3O,UAAY,EAEjB,EAAKI,WAAY,EACjB,EAAKC,mBAAqB,EAE1B,EAAKpG,KAAM,EACX,EAAK2U,QAAS,EACd,EAAKC,UAAW,EAEhB,EAAKC,WAAa,CACjBC,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,kBAAkB,GAKnB,EAAKC,uBAAyB,CAC7B,MAAS,CAAE,EAAG,EAAG,GACjB,GAAM,CAAE,EAAG,GACX,IAAO,CAAE,EAAG,IAGb,EAAKC,yBAAsBryC,EAC3B,EAAKsyC,oBAAqB,EAE1B,EAAKC,YAAc,UAECvyC,IAAfw5B,SAE2Bx5B,IAA1Bw5B,EAAW+O,YAEfx1B,QAAQ3T,MAAO,2FAIhB,EAAK8mC,UAAW1M,IAjDQ,E,wCAuD1B,SAAM3c,GAqBL,OAnBA,4DAAYA,GAEZld,KAAKiyC,eAAiB/0B,EAAO+0B,eAC7BjyC,KAAKgyC,aAAe90B,EAAO80B,aAE3BhyC,KAAK0xC,SAAWH,GAAer0B,EAAOw0B,UAEtC1xC,KAAK+xC,QAAUzhC,OAAOm9B,OAAQ,GAAIvwB,EAAO60B,SAEzC/xC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBAEjC3jC,KAAKkyC,OAASh1B,EAAOg1B,OACrBlyC,KAAKmyC,SAAWj1B,EAAOi1B,SAEvBnyC,KAAKoyC,WAAa9hC,OAAOm9B,OAAQ,GAAIvwB,EAAOk1B,YAE5CpyC,KAAK4yC,YAAc11B,EAAO01B,YAEnB5yC,O,oBAIR,SAAQmd,GAEP,IAAMmB,EAAO,8DAAcnB,GAK3B,IAAM,IAAM5C,KAHZ+D,EAAKs0B,YAAc5yC,KAAK4yC,YACxBt0B,EAAKozB,SAAW,GAEI1xC,KAAK0xC,SAAW,CAEnC,IACMlyC,EADUQ,KAAK0xC,SAAUn3B,GACT/a,MAEjBA,GAASA,EAAM+e,UAEnBD,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,IACNzN,MAAOA,EAAMu5B,OAAQ5b,GAAOf,MAGlB5c,GAASA,EAAMg6B,QAE1Blb,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,IACNzN,MAAOA,EAAM0gC,UAGH1gC,GAASA,EAAM+V,UAE1B+I,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,KACNzN,MAAOA,EAAM05B,WAGH15B,GAASA,EAAM8oB,UAE1BhK,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,KACNzN,MAAOA,EAAM05B,WAGH15B,GAASA,EAAMsgB,UAE1BxB,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,KACNzN,MAAOA,EAAM05B,WAGH15B,GAASA,EAAMga,UAE1B8E,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,KACNzN,MAAOA,EAAM05B,WAGH15B,GAASA,EAAM20B,UAE1B7V,EAAKozB,SAAUn3B,GAAS,CACvBtN,KAAM,KACNzN,MAAOA,EAAM05B,WAKd5a,EAAKozB,SAAUn3B,GAAS,CACvB/a,MAAOA,GASL8Q,OAAO+8B,KAAMrtC,KAAK+xC,SAAU/jC,OAAS,IAAIsQ,EAAKyzB,QAAU/xC,KAAK+xC,SAElEzzB,EAAK0zB,aAAehyC,KAAKgyC,aACzB1zB,EAAK2zB,eAAiBjyC,KAAKiyC,eAE3B,IAAMG,EAAa,GAEnB,IAAM,IAAM/yC,KAAOW,KAAKoyC,YAES,IAA3BpyC,KAAKoyC,WAAY/yC,KAAiB+yC,EAAY/yC,IAAQ,GAM5D,OAFKiR,OAAO+8B,KAAM+E,GAAapkC,OAAS,IAAIsQ,EAAK8zB,WAAaA,GAEvD9zB,M,GA1KoBgf,IAgL7BwU,GAAex8B,UAAUu9B,kBAAmB,E,IAEtCC,G,kDAEL,aAAc,kCAEb,gBAEK7lC,KAAO,SAEZ,EAAK0Z,mBAAqB,IAAIoJ,GAE9B,EAAKnJ,iBAAmB,IAAImJ,GAC5B,EAAKlJ,wBAA0B,IAAIkJ,GATtB,E,wCAad,SAAM7S,EAAQud,GASb,OAPA,4DAAYvd,EAAQud,GAEpBz6B,KAAK2mB,mBAAmB1J,KAAMC,EAAOyJ,oBAErC3mB,KAAK4mB,iBAAiB3J,KAAMC,EAAO0J,kBACnC5mB,KAAK6mB,wBAAwB5J,KAAMC,EAAO2J,yBAEnC7mB,O,+BAIR,SAAmB2N,GAElB3N,KAAK4pB,mBAAmB,GAAM,GAE9B,IAAM7V,EAAI/T,KAAK8mB,YAAY9S,SAE3B,OAAOrG,EAAOwF,KAAOY,EAAG,IAAOA,EAAG,IAAOA,EAAG,KAAOY,c,+BAIpD,SAAmByjB,GAElB,yEAAyBA,GAEzBp4B,KAAK2mB,mBAAmB1J,KAAMjd,KAAK8mB,aAAcrO,W,+BAIlD,SAAmB6f,EAAeC,GAEjC,yEAAyBD,EAAeC,GAExCv4B,KAAK2mB,mBAAmB1J,KAAMjd,KAAK8mB,aAAcrO,W,mBAIlD,WAEC,OAAO,IAAIzY,KAAKyT,aAAcwJ,KAAMjd,U,GAxDjB+1B,IA8DrB+c,GAAOx9B,UAAUmiB,UAAW,E,IAEtBsb,G,kDAEL,aAA4D,MAA/CC,EAA+C,uDAAzC,GAAIC,EAAqC,uDAA5B,EAAGhf,EAAyB,uDAAlB,GAAKC,EAAa,uDAAP,IAAO,4BAE3D,gBAEKjnB,KAAO,oBAEZ,EAAK+lC,IAAMA,EACX,EAAKE,KAAO,EAEZ,EAAKjf,KAAOA,EACZ,EAAKC,IAAMA,EACX,EAAKif,MAAQ,GAEb,EAAKF,OAASA,EACd,EAAKG,KAAO,KAEZ,EAAKC,UAAY,GACjB,EAAKC,WAAa,EAElB,EAAKC,yBAnBsD,E,wCAuB5D,SAAMr2B,EAAQud,GAiBb,OAfA,4DAAYvd,EAAQud,GAEpBz6B,KAAKgzC,IAAM91B,EAAO81B,IAClBhzC,KAAKkzC,KAAOh2B,EAAOg2B,KAEnBlzC,KAAKi0B,KAAO/W,EAAO+W,KACnBj0B,KAAKk0B,IAAMhX,EAAOgX,IAClBl0B,KAAKmzC,MAAQj2B,EAAOi2B,MAEpBnzC,KAAKizC,OAAS/1B,EAAO+1B,OACrBjzC,KAAKozC,KAAuB,OAAhBl2B,EAAOk2B,KAAgB,KAAO9iC,OAAOm9B,OAAQ,GAAIvwB,EAAOk2B,MAEpEpzC,KAAKqzC,UAAYn2B,EAAOm2B,UACxBrzC,KAAKszC,WAAap2B,EAAOo2B,WAElBtzC,O,4BAYR,SAAgBwzC,GAGf,IAAMC,EAAe,GAAMzzC,KAAK0zC,gBAAkBF,EAElDxzC,KAAKgzC,IAAgB,EAAV1kC,GAAcF,KAAKulC,KAAMF,GACpCzzC,KAAKuzC,2B,4BAON,WAEC,IAAME,EAAerlC,KAAKwlC,IAAe,GAAVzlC,GAAgBnO,KAAKgzC,KAEpD,MAAO,GAAMhzC,KAAK0zC,gBAAkBD,I,6BAIrC,WAEC,OAAiB,EAAVnlC,GAAcF,KAAKulC,KACzBvlC,KAAKwlC,IAAe,GAAVzlC,GAAgBnO,KAAKgzC,KAAQhzC,KAAKkzC,Q,0BAI9C,WAGC,OAAOlzC,KAAKqzC,UAAYjlC,KAAKgB,IAAKpP,KAAKizC,OAAQ,K,2BAIhD,WAGC,OAAOjzC,KAAKqzC,UAAYjlC,KAAKiB,IAAKrP,KAAKizC,OAAQ,K,2BAuChD,SAAeY,EAAWC,EAAYpkC,EAAGC,EAAGoL,EAAOC,GAElDhb,KAAKizC,OAASY,EAAYC,EAEP,OAAd9zC,KAAKozC,OAETpzC,KAAKozC,KAAO,CACXW,SAAS,EACTF,UAAW,EACXC,WAAY,EACZE,QAAS,EACTC,QAAS,EACTl5B,MAAO,EACPC,OAAQ,IAKVhb,KAAKozC,KAAKW,SAAU,EACpB/zC,KAAKozC,KAAKS,UAAYA,EACtB7zC,KAAKozC,KAAKU,WAAaA,EACvB9zC,KAAKozC,KAAKY,QAAUtkC,EACpB1P,KAAKozC,KAAKa,QAAUtkC,EACpB3P,KAAKozC,KAAKr4B,MAAQA,EAClB/a,KAAKozC,KAAKp4B,OAASA,EAEnBhb,KAAKuzC,2B,6BAIN,WAEoB,OAAdvzC,KAAKozC,OAETpzC,KAAKozC,KAAKW,SAAU,GAIrB/zC,KAAKuzC,2B,oCAIN,WAEC,IAAMtf,EAAOj0B,KAAKi0B,KACdF,EAAME,EAAO7lB,KAAKwlC,IAAe,GAAVzlC,GAAgBnO,KAAKgzC,KAAQhzC,KAAKkzC,KACzDl4B,EAAS,EAAI+Y,EACbhZ,EAAQ/a,KAAKizC,OAASj4B,EACtB6Y,GAAS,GAAM9Y,EACbq4B,EAAOpzC,KAAKozC,KAElB,GAAmB,OAAdpzC,KAAKozC,MAAiBpzC,KAAKozC,KAAKW,QAAU,CAE9C,IAAMF,EAAYT,EAAKS,UACtBC,EAAaV,EAAKU,WAEnBjgB,GAAQuf,EAAKY,QAAUj5B,EAAQ84B,EAC/B9f,GAAOqf,EAAKa,QAAUj5B,EAAS84B,EAC/B/4B,GAASq4B,EAAKr4B,MAAQ84B,EACtB74B,GAAUo4B,EAAKp4B,OAAS84B,EAIzB,IAAMI,EAAOl0C,KAAKszC,WACJ,IAATY,IAAargB,GAAQI,EAAOigB,EAAOl0C,KAAKm0C,gBAE7Cn0C,KAAK4mB,iBAAiBwtB,gBAAiBvgB,EAAMA,EAAO9Y,EAAOgZ,EAAKA,EAAM/Y,EAAQiZ,EAAMj0B,KAAKk0B,KAEzFl0B,KAAK6mB,wBAAwB5J,KAAMjd,KAAK4mB,kBAAmBnO,W,oBAI5D,SAAQ0E,GAEP,IAAMmB,EAAO,8DAAcnB,GAgB3B,OAdAmB,EAAK+K,OAAO2pB,IAAMhzC,KAAKgzC,IACvB10B,EAAK+K,OAAO6pB,KAAOlzC,KAAKkzC,KAExB50B,EAAK+K,OAAO4K,KAAOj0B,KAAKi0B,KACxB3V,EAAK+K,OAAO6K,IAAMl0B,KAAKk0B,IACvB5V,EAAK+K,OAAO8pB,MAAQnzC,KAAKmzC,MAEzB70B,EAAK+K,OAAO4pB,OAASjzC,KAAKizC,OAEP,OAAdjzC,KAAKozC,OAAgB90B,EAAK+K,OAAO+pB,KAAO9iC,OAAOm9B,OAAQ,GAAIztC,KAAKozC,OAErE90B,EAAK+K,OAAOgqB,UAAYrzC,KAAKqzC,UAC7B/0B,EAAK+K,OAAOiqB,WAAatzC,KAAKszC,WAEvBh1B,M,GA7NuBw0B,IAmOhCC,GAAkBz9B,UAAU++B,qBAAsB,EAElD,IAAMrB,GAAM,GAENsB,G,kDAEL,WAAargB,EAAMC,EAAKqgB,GAAe,MAMtC,GANsC,qBAEtC,gBAEKtnC,KAAO,cAEkC,IAAzCsnC,EAAaC,wBAGjB,OADAphC,QAAQ3T,MAAO,0GACf,eAID,EAAK80C,aAAeA,EAEpB,IAAME,EAAW,IAAI1B,GAAmBC,GAnBjB,EAmB8B/e,EAAMC,GAC3DugB,EAASxf,OAAS,EAAKA,OACvBwf,EAAShjB,GAAGte,IAAK,GAAK,EAAG,GACzBshC,EAAS9c,OAAQ,IAAIhS,GAAS,EAAG,EAAG,IACpC,EAAKyD,IAAKqrB,GAEV,IAAMC,EAAW,IAAI3B,GAAmBC,GAzBjB,EAyB8B/e,EAAMC,GAC3DwgB,EAASzf,OAAS,EAAKA,OACvByf,EAASjjB,GAAGte,IAAK,GAAK,EAAG,GACzBuhC,EAAS/c,OAAQ,IAAIhS,IAAW,EAAG,EAAG,IACtC,EAAKyD,IAAKsrB,GAEV,IAAMC,EAAW,IAAI5B,GAAmBC,GA/BjB,EA+B8B/e,EAAMC,GAC3DygB,EAAS1f,OAAS,EAAKA,OACvB0f,EAASljB,GAAGte,IAAK,EAAG,EAAG,GACvBwhC,EAAShd,OAAQ,IAAIhS,GAAS,EAAG,EAAG,IACpC,EAAKyD,IAAKurB,GAEV,IAAMC,EAAW,IAAI7B,GAAmBC,GArCjB,EAqC8B/e,EAAMC,GAC3D0gB,EAAS3f,OAAS,EAAKA,OACvB2f,EAASnjB,GAAGte,IAAK,EAAG,GAAK,GACzByhC,EAASjd,OAAQ,IAAIhS,GAAS,GAAK,EAAG,IACtC,EAAKyD,IAAKwrB,GAEV,IAAMC,EAAW,IAAI9B,GAAmBC,GA3CjB,EA2C8B/e,EAAMC,GAC3D2gB,EAAS5f,OAAS,EAAKA,OACvB4f,EAASpjB,GAAGte,IAAK,GAAK,EAAG,GACzB0hC,EAASld,OAAQ,IAAIhS,GAAS,EAAG,EAAG,IACpC,EAAKyD,IAAKyrB,GAEV,IAAMC,EAAW,IAAI/B,GAAmBC,GAjDjB,EAiD8B/e,EAAMC,GA7CrB,OA8CtC4gB,EAAS7f,OAAS,EAAKA,OACvB6f,EAASrjB,GAAGte,IAAK,GAAK,EAAG,GACzB2hC,EAASnd,OAAQ,IAAIhS,GAAS,EAAG,GAAK,IACtC,EAAKyD,IAAK0rB,GAjD4B,E,0CAqDvC,SAAQC,EAAUC,GAEI,OAAhBh1C,KAAKg2B,QAAkBh2B,KAAKq4B,oBAEjC,IAAMkc,EAAev0C,KAAKu0C,aAE1B,cAAuEv0C,KAAKkqB,SAA5E,GAAQuqB,EAAR,KAAkBC,EAAlB,KAA4BC,EAA5B,KAAsCC,EAAtC,KAAgDC,EAAhD,KAA0DC,EAA1D,KAEMG,EAAmBF,EAASG,GAAGnB,QAC/BoB,EAAsBJ,EAASK,kBAErCL,EAASG,GAAGnB,SAAU,EAEtB,IAAMt3B,EAAkB83B,EAAal0B,QAAQ5D,gBAE7C83B,EAAal0B,QAAQ5D,iBAAkB,EAEvCs4B,EAASM,gBAAiBd,EAAc,GACxCQ,EAASO,OAAQN,EAAOP,GAExBM,EAASM,gBAAiBd,EAAc,GACxCQ,EAASO,OAAQN,EAAON,GAExBK,EAASM,gBAAiBd,EAAc,GACxCQ,EAASO,OAAQN,EAAOL,GAExBI,EAASM,gBAAiBd,EAAc,GACxCQ,EAASO,OAAQN,EAAOJ,GAExBG,EAASM,gBAAiBd,EAAc,GACxCQ,EAASO,OAAQN,EAAOH,GAExBN,EAAal0B,QAAQ5D,gBAAkBA,EAEvCs4B,EAASM,gBAAiBd,EAAc,GACxCQ,EAASO,OAAQN,EAAOF,GAExBC,EAASM,gBAAiBF,GAE1BJ,EAASG,GAAGnB,QAAUkB,M,GA9FClf,IAoGnBwf,G,kDAEL,WAAa73B,EAAQhC,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,EAAYC,GAAW,iCAEtGwB,OAAoBrd,IAAXqd,EAAuBA,EAAS,GACzChC,OAAsBrb,IAAZqb,EAAwBA,EAAUpX,IAE5C,cAAOoZ,EAAQhC,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,EAAYC,IAEjFS,OAAQ,EAPyF,E,wCAWvG,WAEC,OAAO3c,KAAK0a,O,IAIb,SAAYlb,GAEXQ,KAAK0a,MAAQlb,M,GArBWgc,IA2B1B+5B,GAAYjgC,UAAUkgC,eAAgB,E,IAEhCC,G,kDAEL,WAAaxsB,EAAMjJ,EAAS01B,GAAQ,iCAE9BlzB,OAAOmzB,UAAW31B,KAEtB5M,QAAQC,KAAM,oGAEd2M,EAAU01B,GAIX,cAAOzsB,EAAMA,EAAMjJ,GAEnBA,EAAUA,GAAW,GAUrB,EAAKK,QAAU,IAAIk1B,QAAal1C,EAAW2f,EAAQtE,QAASsE,EAAQpE,MAAOoE,EAAQnE,MAAOmE,EAAQlE,UAAWkE,EAAQjE,UAAWiE,EAAQhE,OAAQgE,EAAQ/S,KAAM+S,EAAQ/D,WAAY+D,EAAQ9D,UAC1L,EAAKmE,QAAQtD,uBAAwB,EAErC,EAAKsD,QAAQ5D,qBAA8Cpc,IAA5B2f,EAAQvD,iBAAgCuD,EAAQvD,gBAC/E,EAAK4D,QAAQtE,eAAkC1b,IAAtB2f,EAAQjE,UAA0BiE,EAAQjE,UAAY3W,GAE/E,EAAKib,QAAQu1B,kBAAmB,EA5BG,E,8DAgCpC,SAA4Bb,EAAU10B,GAErCrgB,KAAKqgB,QAAQpT,KAAOoT,EAAQpT,KAC5BjN,KAAKqgB,QAAQrE,OAASzV,GACtBvG,KAAKqgB,QAAQnE,SAAWmE,EAAQnE,SAEhClc,KAAKqgB,QAAQ5D,gBAAkB4D,EAAQ5D,gBACvCzc,KAAKqgB,QAAQtE,UAAYsE,EAAQtE,UACjC/b,KAAKqgB,QAAQvE,UAAYuE,EAAQvE,UAEjC,IAAM+5B,EAEK,CACTC,UAAW,CAAEt2C,MAAO,OAHhBq2C,EAMO,qYANPA,EA0BS,+UAoBThsB,EAAW,IAAIomB,GAAa,EAAG,EAAG,GAElC9V,EAAW,IAAI2X,GAAgB,CAEpCv3B,KAAM,sBAENm3B,SAAUH,GAAesE,GACzB7D,aAAc6D,EACd5D,eAAgB4D,EAChBpY,KAAM/7B,EACN87B,SAAU17B,IAIXq4B,EAASuX,SAASoE,UAAUt2C,MAAQ6gB,EAEpC,IAAM01B,EAAO,IAAIpH,GAAM9kB,EAAUsQ,GAE3B6b,EAAmB31B,EAAQtE,UAajC,OAVKsE,EAAQtE,YAAcxW,KAA2B8a,EAAQtE,UAAY3W,IAE3D,IAAIkvC,GAAY,EAAG,GAAIt0C,MAC/B2hB,OAAQozB,EAAUgB,GAEzB11B,EAAQtE,UAAYi6B,EAEpBD,EAAKlsB,SAASpJ,UACds1B,EAAK5b,SAAS1Z,UAEPzgB,O,mBAIR,SAAO+0C,EAAU9U,EAAOhgB,EAAOg2B,GAI9B,IAFA,IAAMd,EAAsBJ,EAASK,kBAE3BtnC,EAAI,EAAGA,EAAI,EAAGA,IAEvBinC,EAASM,gBAAiBr1C,KAAM8N,GAEhCinC,EAASmB,MAAOjW,EAAOhgB,EAAOg2B,GAI/BlB,EAASM,gBAAiBF,O,GAzIQp1B,IA+IpC01B,GAAsBngC,UAAUk/B,yBAA0B,EAE1D,IAAM2B,GAAyB,IAAIxwB,GAC7BywB,GAAyB,IAAIzwB,GAC7B0wB,GAA8B,IAAI7gC,GAElC8gC,G,WAEL,aAA6D,IAAhD1uB,EAAgD,uDAAvC,IAAIjC,GAAS,EAAG,EAAG,GAAK2E,EAAe,uDAAJ,EAAI,oBAI5DtqB,KAAK4nB,OAASA,EACd5nB,KAAKsqB,SAAWA,E,uCAIjB,SAAK1C,EAAQ0C,GAKZ,OAHAtqB,KAAK4nB,OAAO3K,KAAM2K,GAClB5nB,KAAKsqB,SAAWA,EAETtqB,O,2BAIR,SAAe0P,EAAGC,EAAG8O,EAAG9K,GAKvB,OAHA3T,KAAK4nB,OAAOzU,IAAKzD,EAAGC,EAAG8O,GACvBze,KAAKsqB,SAAW3W,EAET3T,O,2CAIR,SAA+B4nB,EAAQ6B,GAKtC,OAHAzpB,KAAK4nB,OAAO3K,KAAM2K,GAClB5nB,KAAKsqB,UAAab,EAAMlH,IAAKviB,KAAK4nB,QAE3B5nB,O,mCAIR,SAAuBqS,EAAGC,EAAGC,GAE5B,IAAMqV,EAASuuB,GAAStiC,WAAYtB,EAAGD,GAAIsd,MAAOwmB,GAASviC,WAAYxB,EAAGC,IAAMqC,YAMhF,OAFA3U,KAAKu2C,8BAA+B3uB,EAAQvV,GAErCrS,O,kBAIR,SAAMqqB,GAKL,OAHArqB,KAAK4nB,OAAO3K,KAAMoN,EAAMzC,QACxB5nB,KAAKsqB,SAAWD,EAAMC,SAEftqB,O,uBAIR,WAIC,IAAMw2C,EAAsB,EAAMx2C,KAAK4nB,OAAO5Z,SAI9C,OAHAhO,KAAK4nB,OAAO9T,eAAgB0iC,GAC5Bx2C,KAAKsqB,UAAYksB,EAEVx2C,O,oBAIR,WAKC,OAHAA,KAAKsqB,WAAc,EACnBtqB,KAAK4nB,OAAOiiB,SAEL7pC,O,6BAIR,SAAiBypB,GAEhB,OAAOzpB,KAAK4nB,OAAOrF,IAAKkH,GAAUzpB,KAAKsqB,W,8BAIxC,SAAkBH,GAEjB,OAAOnqB,KAAK0sB,gBAAiBvC,EAAOhV,QAAWgV,EAAOpC,S,0BAIvD,SAAc0B,EAAO9b,GAEpB,OAAOA,EAAOsP,KAAMjd,KAAK4nB,QAAS9T,gBAAkB9T,KAAK0sB,gBAAiBjD,IAAUL,IAAKK,K,2BAI1F,SAAegtB,EAAM9oC,GAEpB,IAAM6f,EAAYipB,EAAKzQ,MAAOmQ,IAExB7uB,EAActnB,KAAK4nB,OAAOrF,IAAKiL,GAErC,GAAqB,IAAhBlG,EAGJ,OAA4C,IAAvCtnB,KAAK0sB,gBAAiB+pB,EAAKvN,OAExBv7B,EAAOsP,KAAMw5B,EAAKvN,OAKnB,KAIR,IAAMt5B,IAAQ6mC,EAAKvN,MAAM3mB,IAAKviB,KAAK4nB,QAAW5nB,KAAKsqB,UAAahD,EAEhE,OAAK1X,EAAI,GAAKA,EAAI,EAEV,KAIDjC,EAAOsP,KAAMuQ,GAAY1Z,eAAgBlE,GAAIwZ,IAAKqtB,EAAKvN,S,4BAI/D,SAAgBuN,GAIf,IAAMC,EAAY12C,KAAK0sB,gBAAiB+pB,EAAKvN,OACvCyN,EAAU32C,KAAK0sB,gBAAiB+pB,EAAKG,KAE3C,OAASF,EAAY,GAAKC,EAAU,GAASA,EAAU,GAAKD,EAAY,I,2BAIzE,SAAentB,GAEd,OAAOA,EAAIstB,gBAAiB72C,Q,8BAI7B,SAAkBmqB,GAEjB,OAAOA,EAAO0sB,gBAAiB72C,Q,2BAIhC,SAAe2N,GAEd,OAAOA,EAAOsP,KAAMjd,KAAK4nB,QAAS9T,gBAAkB9T,KAAKsqB,Y,0BAI1D,SAAclR,EAAQ09B,GAErB,IAAMvgB,EAAeugB,GAAwBT,GAAchN,gBAAiBjwB,GAEtE29B,EAAiB/2C,KAAKg3C,cAAeb,IAAWzvB,aAActN,GAE9DwO,EAAS5nB,KAAK4nB,OAAO1J,aAAcqY,GAAe5hB,YAIxD,OAFA3U,KAAKsqB,UAAaysB,EAAex0B,IAAKqF,GAE/B5nB,O,uBAIR,SAAW+U,GAIV,OAFA/U,KAAKsqB,UAAYvV,EAAOwN,IAAKviB,KAAK4nB,QAE3B5nB,O,oBAIR,SAAQqqB,GAEP,OAAOA,EAAMzC,OAAO2D,OAAQvrB,KAAK4nB,SAAcyC,EAAMC,WAAatqB,KAAKsqB,W,mBAIxE,WAEC,OAAO,IAAItqB,KAAKyT,aAAcwJ,KAAMjd,U,KAMtCs2C,GAAMhhC,UAAU2hC,SAAU,EAE1B,IAAMC,GAA0B,IAAI9qB,GAC9B+qB,GAA0B,IAAIxxB,GAE9ByxB,G,WAEL,aAA0H,IAA7GvrB,EAA6G,uDAAxG,IAAIyqB,GAASxqB,EAA2F,uDAAtF,IAAIwqB,GAASvqB,EAAyE,uDAApE,IAAIuqB,GAASlZ,EAAuD,uDAAlD,IAAIkZ,GAASe,EAAqC,uDAAhC,IAAIf,GAASgB,EAAmB,uDAAd,IAAIhB,GAAU,oBAEzHt2C,KAAKu3C,OAAS,CAAE1rB,EAAIC,EAAIC,EAAIqR,EAAIia,EAAIC,G,uCAIrC,SAAKzrB,EAAIC,EAAIC,EAAIqR,EAAIia,EAAIC,GAExB,IAAMC,EAASv3C,KAAKu3C,OASpB,OAPAA,EAAQ,GAAIt6B,KAAM4O,GAClB0rB,EAAQ,GAAIt6B,KAAM6O,GAClByrB,EAAQ,GAAIt6B,KAAM8O,GAClBwrB,EAAQ,GAAIt6B,KAAMmgB,GAClBma,EAAQ,GAAIt6B,KAAMo6B,GAClBE,EAAQ,GAAIt6B,KAAMq6B,GAEXt3C,O,kBAIR,SAAMw3C,GAIL,IAFA,IAAMD,EAASv3C,KAAKu3C,OAEVzpC,EAAI,EAAGA,EAAI,EAAGA,IAEvBypC,EAAQzpC,GAAImP,KAAMu6B,EAAQD,OAAQzpC,IAInC,OAAO9N,O,qCAIR,SAAyBwP,GAExB,IAAM+nC,EAASv3C,KAAKu3C,OACdphC,EAAK3G,EAAEwE,SACPyjC,EAAMthC,EAAI,GAAKuhC,EAAMvhC,EAAI,GAAKwhC,EAAMxhC,EAAI,GAAKyhC,EAAMzhC,EAAI,GACvD0hC,EAAM1hC,EAAI,GAAK2hC,EAAM3hC,EAAI,GAAK4hC,EAAM5hC,EAAI,GAAK6hC,EAAM7hC,EAAI,GACvD8hC,EAAM9hC,EAAI,GAAK+hC,EAAM/hC,EAAI,GAAKgiC,EAAOhiC,EAAI,IAAMiiC,EAAOjiC,EAAI,IAC1DkiC,EAAOliC,EAAI,IAAMmiC,EAAOniC,EAAI,IAAMoiC,EAAOpiC,EAAI,IAAMqiC,EAAOriC,EAAI,IASpE,OAPAohC,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO1jC,YAC3E4iC,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO1jC,YAC3E4iC,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO3jC,YAC3E4iC,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO3jC,YAC3E4iC,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO5jC,YAC5E4iC,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO5jC,YAErE3U,O,8BAIR,SAAkBqpB,GAEjB,IAAMQ,EAAWR,EAAOQ,SAMxB,OAJiC,OAA5BA,EAASmf,gBAA0Bnf,EAAS0f,wBAEjD2N,GAAUj6B,KAAM4M,EAASmf,gBAAiBtiB,aAAc2C,EAAOvC,aAExD9mB,KAAKysB,iBAAkByqB,M,8BAI/B,SAAkBwB,GAMjB,OAJAxB,GAAU/hC,OAAOhC,IAAK,EAAG,EAAG,GAC5B+jC,GAAUnvB,OAAS,kBACnBmvB,GAAUxwB,aAAcgyB,EAAO5xB,aAExB9mB,KAAKysB,iBAAkByqB,M,8BAI/B,SAAkB/sB,GAMjB,IAJA,IAAMotB,EAASv3C,KAAKu3C,OACdpiC,EAASgV,EAAOhV,OAChBwjC,GAAcxuB,EAAOpC,OAEjBja,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAI9B,GAFiBypC,EAAQzpC,GAAI4e,gBAAiBvX,GAE9BwjC,EAEf,OAAO,EAMT,OAAO,I,2BAIR,SAAepvB,GAId,IAFA,IAAMguB,EAASv3C,KAAKu3C,OAEVzpC,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAMuc,EAAQktB,EAAQzpC,GAQtB,GAJAqpC,GAAUznC,EAAI2a,EAAMzC,OAAOlY,EAAI,EAAI6Z,EAAIla,IAAIK,EAAI6Z,EAAIna,IAAIM,EACvDynC,GAAUxnC,EAAI0a,EAAMzC,OAAOjY,EAAI,EAAI4Z,EAAIla,IAAIM,EAAI4Z,EAAIna,IAAIO,EACvDwnC,GAAU14B,EAAI4L,EAAMzC,OAAOnJ,EAAI,EAAI8K,EAAIla,IAAIoP,EAAI8K,EAAIna,IAAIqP,EAElD4L,EAAMqC,gBAAiByqB,IAAc,EAEzC,OAAO,EAMT,OAAO,I,2BAIR,SAAe1tB,GAId,IAFA,IAAM8tB,EAASv3C,KAAKu3C,OAEVzpC,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKypC,EAAQzpC,GAAI4e,gBAAiBjD,GAAU,EAE3C,OAAO,EAMT,OAAO,I,mBAIR,WAEC,OAAO,IAAIzpB,KAAKyT,aAAcwJ,KAAMjd,U,KAMtC,SAAS44C,KAER,IAAI39B,EAAU,KACV49B,GAAc,EACdC,EAAgB,KAChBC,EAAY,KAEhB,SAASC,EAAkBC,EAAMC,GAEhCJ,EAAeG,EAAMC,GAErBH,EAAY99B,EAAQk+B,sBAAuBH,GAI5C,MAAO,CAEN9P,MAAO,YAEe,IAAhB2P,GACkB,OAAlBC,IAELC,EAAY99B,EAAQk+B,sBAAuBH,GAE3CH,GAAc,IAIfO,KAAM,WAELn+B,EAAQo+B,qBAAsBN,GAE9BF,GAAc,GAIfS,iBAAkB,SAAWj1B,GAE5By0B,EAAgBz0B,GAIjBk1B,WAAY,SAAW/5C,GAEtByb,EAAUzb,IAQb,SAASg6C,GAAiBC,EAAIC,GAE7B,IAAMC,EAAWD,EAAaC,SAExBC,EAAU,IAAIC,QAiLpB,MAAO,CAENC,IAjED,SAAc9kC,GAIb,OAFKA,EAAU+3B,+BAA+B/3B,EAAYA,EAAUsJ,MAE7Ds7B,EAAQE,IAAK9kC,IA8DpB8iB,OA1DD,SAAiB9iB,GAEXA,EAAU+3B,+BAA+B/3B,EAAYA,EAAUsJ,MAEpE,IAAMA,EAAOs7B,EAAQE,IAAK9kC,GAErBsJ,IAEJm7B,EAAGM,aAAcz7B,EAAKjE,QAEtBu/B,EAAQI,OAAQhlC,KAiDjB2M,OA3CD,SAAiB3M,EAAWilC,GAE3B,GAAKjlC,EAAUi1B,oBAAf,CAEC,IAAMiQ,EAASN,EAAQE,IAAK9kC,KAErBklC,GAAUA,EAAOr9B,QAAU7H,EAAU6H,UAE3C+8B,EAAQzmC,IAAK6B,EAAW,CACvBqF,OAAQrF,EAAUqF,OAClBpN,KAAM+H,EAAU/H,KAChBktC,gBAAiBnlC,EAAUolC,YAC3Bv9B,QAAS7H,EAAU6H,cAVtB,CAmBK7H,EAAU+3B,+BAA+B/3B,EAAYA,EAAUsJ,MAEpE,IAAMA,EAAOs7B,EAAQE,IAAK9kC,QAEZ3U,IAATie,EAEJs7B,EAAQzmC,IAAK6B,EAnKf,SAAuBA,EAAWilC,GAEjC,IAAMrsC,EAAQoH,EAAUpH,MAClBk5B,EAAQ9xB,EAAU8xB,MAElBzsB,EAASo/B,EAAGY,eAElBZ,EAAGa,WAAYL,EAAY5/B,GAC3Bo/B,EAAGc,WAAYN,EAAYrsC,EAAOk5B,GAElC9xB,EAAUuyB,mBAEV,IAAIt6B,EAAO,KAwDX,OAtDKW,aAAiBsM,aAErBjN,EAAO,KAEIW,aAAiBuM,aAE5B/G,QAAQC,KAAM,wEAEHzF,aAAiBmM,YAEvB/E,EAAUizB,yBAET0R,EAEJ1sC,EAAO,KAIPmG,QAAQC,KAAM,2EAMfpG,EAAO,KAIGW,aAAiBkM,WAE5B7M,EAAO,KAEIW,aAAiBqM,YAE5BhN,EAAO,KAEIW,aAAiBoM,WAE5B/M,EAAO,KAEIW,aAAiB+L,UAE5B1M,EAAO,MAEIW,aAAiBgM,YAIjBhM,aAAiBiM,qBAF5B5M,EAAO,MAQD,CACNoN,OAAQA,EACRpN,KAAMA,EACNktC,gBAAiBvsC,EAAM4sC,kBACvB39B,QAAS7H,EAAU6H,SA2FKw9B,CAAcrlC,EAAWilC,IAEtC37B,EAAKzB,QAAU7H,EAAU6H,WAxFtC,SAAuBxC,EAAQrF,EAAWilC,GAEzC,IAAMrsC,EAAQoH,EAAUpH,MAClBm5B,EAAc/xB,EAAU+xB,YAE9B0S,EAAGa,WAAYL,EAAY5/B,IAEE,IAAxB0sB,EAAYlmB,MAIhB44B,EAAGgB,cAAeR,EAAY,EAAGrsC,IAI5B+rC,EAEJF,EAAGgB,cAAeR,EAAYlT,EAAYhyB,OAASnH,EAAM4sC,kBACxD5sC,EAAOm5B,EAAYhyB,OAAQgyB,EAAYlmB,OAIxC44B,EAAGgB,cAAeR,EAAYlT,EAAYhyB,OAASnH,EAAM4sC,kBACxD5sC,EAAM8sC,SAAU3T,EAAYhyB,OAAQgyB,EAAYhyB,OAASgyB,EAAYlmB,QAIvEkmB,EAAYlmB,OAAU,GA+DtB85B,CAAcr8B,EAAKjE,OAAQrF,EAAWilC,GAEtC37B,EAAKzB,QAAU7H,EAAU6H,Y,IAgBtB+9B,G,kDAEL,aAA4E,MAA/D7/B,EAA+D,uDAAvD,EAAGC,EAAoD,uDAA3C,EAAGk1B,EAAwC,uDAAxB,EAAGC,EAAqB,uDAAJ,EAAI,qBAE3E,gBACKljC,KAAO,gBAEZ,EAAK4sB,WAAa,CACjB9e,MAAOA,EACPC,OAAQA,EACRk1B,cAAeA,EACfC,eAAgBA,GAsBjB,IAnBA,IAAM0K,EAAa9/B,EAAQ,EACrB+/B,EAAc9/B,EAAS,EAEvB41B,EAAQxiC,KAAKgC,MAAO8/B,GACpBW,EAAQziC,KAAKgC,MAAO+/B,GAEpBgB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEjBkK,EAAgBhgC,EAAQ61B,EACxBoK,EAAiBhgC,EAAS61B,EAI1BvG,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAEFnkB,EAAK,EAAGA,EAAK8qB,EAAQ9qB,IAI9B,IAFA,IAAM3W,EAAI2W,EAAK00B,EAAiBF,EAEtBz0B,EAAK,EAAGA,EAAK8qB,EAAQ9qB,IAAQ,CAEtC,IAAM3W,EAAI2W,EAAK00B,EAAgBF,EAE/BvK,EAAShjC,KAAMoC,GAAKC,EAAG,GAEvB66B,EAAQl9B,KAAM,EAAG,EAAG,GAEpBm9B,EAAIn9B,KAAM+Y,EAAKuqB,GACfnG,EAAIn9B,KAAM,EAAMgZ,EAAKuqB,GAMvB,IAAM,IAAIvqB,EAAK,EAAGA,EAAKuqB,EAAOvqB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAKuqB,EAAOvqB,IAAQ,CAErC,IAAMhU,EAAIgU,EAAK8qB,EAAS7qB,EAClBhU,EAAI+T,EAAK8qB,GAAW7qB,EAAK,GACzB/T,EAAM8T,EAAK,EAAM8qB,GAAW7qB,EAAK,GACjCzO,EAAMwO,EAAK,EAAM8qB,EAAS7qB,EAEhCgkB,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GA5DqD,OAkE3E,EAAK21B,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IArEiB,E,iDAyE5E,SAAiBnsB,GAEhB,OAAO,IAAIs8B,EAAet8B,EAAKvD,MAAOuD,EAAKtD,OAAQsD,EAAK4xB,cAAe5xB,EAAK6xB,oB,GA7ElDxH,IA+VtBsS,GAAc,CACnBC,kBA7QuB,iFA8QvBC,uBA5Q4B,6DA6Q5BC,mBA3QwB,6EA4QxBC,wBA1Q6B,2DA2Q7BC,eAzQoB,maA0QpBC,oBAxQyB,wFAyQzBC,aAvQkB,uCAwQlBC,mBAtQwB,+GAuQxBC,MArQW,wkKAsQXC,sBApQ2B,g8BAqQ3BC,yBAnQ8B,6nBAoQ9BC,8BAlQmC,4HAmQnCC,4BAjQiC,qEAkQjCC,uBAhQ4B,2EAiQ5BC,eA/PoB,+HAgQpBC,oBA9PyB,qHA+PzBC,kBA7PuB,wJA8PvBC,aA5PkB,iRA6PlBC,OA3PY,mxEA4PZC,4BA1PiC,21HA2PjCC,qBAzP0B,2jBA0P1BC,4BAxPiC,kJAyPjCC,uBAvP4B,mKAwP5BC,qBAtP0B,6MAuP1BC,0BArP+B,mEAsP/BC,mBApPwB,sDAqPxBC,wBAnP6B,4uFAoP7BC,gBAlPqB,u0CAmPrBC,4BAjPiC,yOAkPjCC,qBAhP0B,yTAiP1BC,mBA/OwB,+RAgPxBC,8BA1NmC,qnCA2NnCC,cA/OmB,4oBAgPnBC,WA9OgB,wDA+OhBC,gBA7OqB,qDA8OrBC,aA5OkB,2RA6OlBC,kBA3OuB,2MA4OvBC,0BA1O+B,iYA2O/BC,kBAzOuB,uTA0OvBC,uBAxO4B,iGAyO5BC,sBAvO2B,ovFAwO3BC,kBAtOuB,iwJAuOvBC,qBAnO0B,oEAoO1BC,0BAlO+B,20BAmO/BC,sBAjO2B,sMAkO3BC,2BAhOgC,mqCAiOhCC,yBA/N8B,okEAgO9BC,8BA9NmC,23LA+NnCC,sBA7N2B,21HA8N3BC,qBA5N0B,6yBA6N1BC,oBA3NyB,2QA4NzBC,qBA1N0B,mLA2N1BC,0BAzN+B,yKA0N/BC,wBAxN6B,sLAyN7BC,mBAvNwB,+XAwNxBC,aAtNkB,oJAuNlBC,kBArNuB,mDAsNvBC,sBApN2B,kVAqN3BC,2BAnNgC,uMAoNhCC,sBAlN2B,uKAmN3BC,2BAjNgC,qEAkNhCC,mBAhNwB,6jBAiNxBC,wBA/M6B,u6BAgN7BC,mBA9MwB,iiCA+MxBC,sBA7M2B,o2BA8M3BC,qBA5M0B,mqBA6M1BC,qBA3M0B,iJA4M1BC,mBA1MwB,iJA2MxBC,cAzMmB,mOA0MnBC,wBAxM6B,6+BAyM7BC,gCAvMqC,yEAwMrCC,+BAtMoC,mXAuMpCC,wBArM6B,mRAsM7BC,gBApMqB,mLAqMrBC,QAnMa,4jDAoMbC,6BAlMkC,4EAmMlCC,eAjMoB,oNAkMpBC,mBAhMwB,gFAiMxBC,wBA/L6B,2UAgM7BC,sBA9L2B,uKA+L3BC,2BA7LgC,qEA8LhCC,wBA5L6B,26RA6L7BC,sBA3L2B,mxCA4L3BC,iBA1LsB,kzCA2LtBC,yBAzL8B,k5CA0L9BC,gBAxLqB,kOAyLrBC,qBAvL0B,ghCAwL1BC,gBAtLqB,+XAuLrBC,kBArLuB,qdAsLvBC,qBApL0B,0LAqL1BC,0BAnL+B,mEAoL/BC,qBAlL0B,6FAmL1BC,0BAjL+B,oyCAkL/BC,sBAhL2B,i5BAiL3BC,2BA/KgC,q2FAgLhCC,iBA9KsB,yFA+KtBC,eA7KoB,wIA8KpBC,UA5Ke,qEA6KfC,kBA3KuB,oFA4KvBC,gBA1KqB,yIA2KrBC,WAzKgB,8GA0KhBC,gBAxKqB,kTA0KrBC,gBAxKgB,8JAyKhBC,gBAvKkB,4NAwKlBC,UAtKgB,iOAuKhBC,UArKkB,0VAsKlBC,WApKgB,wuBAqKhBC,WAnKkB,83BAoKlBC,kBAlKgB,ktBAmKhBC,kBAjKkB,iuBAkKlBC,cAhKgB,+LAiKhBC,cA/JkB,0WAgKlBC,gBA9JgB,+hBA+JhBC,gBA7JkB,wwBA8JlBC,eA5JgB,o5BA6JhBC,eA3JkB,qqDA4JlBC,iBA1JgB,6nCA2JhBC,iBAzJkB,s0EA0JlBC,gBAxJgB,k5BAyJhBC,gBAvJkB,igDAwJlBC,gBAtJgB,4+BAuJhBC,gBArJkB,onBAsJlBC,eApJgB,gmCAqJhBC,eAnJkB,4kEAoJlBC,kBAlJgB,irCAmJhBC,kBAjJkB,2wGAkJlBC,cAhJgB,oiCAiJhBC,cA/IkB,myDAgJlBC,YA9IgB,qrBA+IhBC,YA7IkB,6vBA8IlBC,YA5IgB,yhBA6IhBC,YA3IkB,maA4IlBC,YA1IgB,snCA2IhBC,YAzIkB,ouBAgJbC,GAAc,CAEnBpH,OAAQ,CAEPqH,QAAS,CAAEjkD,MAAO,IAAI+kC,GAAO,WAC7B5G,QAAS,CAAEn+B,MAAO,GAElB4hC,IAAK,CAAE5hC,MAAO,MACdkkD,YAAa,CAAElkD,MAAO,IAAIgW,IAC1BmuC,aAAc,CAAEnkD,MAAO,IAAIgW,IAE3B8rB,SAAU,CAAE9hC,MAAO,MACnBikC,UAAW,CAAEjkC,MAAO,IAIrBokD,YAAa,CAEZthB,YAAa,CAAE9iC,MAAO,OAIvBqkD,OAAQ,CAEPphB,OAAQ,CAAEjjC,MAAO,MACjBskD,WAAY,CAAEtkD,OAAS,GACvBojC,aAAc,CAAEpjC,MAAO,GACvBukD,IAAK,CAAEvkD,MAAO,KACdqjC,gBAAiB,CAAErjC,MAAO,KAC1BwkD,YAAa,CAAExkD,MAAO,IAIvBykD,MAAO,CAENxiB,MAAO,CAAEjiC,MAAO,MAChBkiC,eAAgB,CAAEliC,MAAO,IAI1B0kD,SAAU,CAET3iB,SAAU,CAAE/hC,MAAO,MACnBgiC,kBAAmB,CAAEhiC,MAAO,IAI7B2kD,YAAa,CAEZ9hB,YAAa,CAAE7iC,MAAO,OAIvB4kD,QAAS,CAERziB,QAAS,CAAEniC,MAAO,MAClBoiC,UAAW,CAAEpiC,MAAO,IAIrB6kD,UAAW,CAEVxiB,UAAW,CAAEriC,MAAO,MACpBuiC,YAAa,CAAEviC,MAAO,IAAI8T,GAAS,EAAG,KAIvCgxC,gBAAiB,CAEhBtiB,gBAAiB,CAAExiC,MAAO,MAC1ByiC,kBAAmB,CAAEziC,MAAO,GAC5B0iC,iBAAkB,CAAE1iC,MAAO,IAI5B+kD,aAAc,CAEbpiB,aAAc,CAAE3iC,MAAO,OAIxBglD,aAAc,CAEbpiB,aAAc,CAAE5iC,MAAO,OAIxBilD,YAAa,CAEZ3hB,YAAa,CAAEtjC,MAAO,OAIvB+9B,IAAK,CAEJmnB,WAAY,CAAEllD,MAAO,OACrBmlD,QAAS,CAAEnlD,MAAO,GAClBolD,OAAQ,CAAEplD,MAAO,KACjBqlD,SAAU,CAAErlD,MAAO,IAAI+kC,GAAO,YAI/B2N,OAAQ,CAEP4S,kBAAmB,CAAEtlD,MAAO,IAE5BulD,WAAY,CAAEvlD,MAAO,IAErBwlD,kBAAmB,CAAExlD,MAAO,GAAIylD,WAAY,CAC3Cz3B,UAAW,GACXyS,MAAO,KAGRilB,wBAAyB,CAAE1lD,MAAO,GAAIylD,WAAY,CACjDE,WAAY,GACZC,iBAAkB,GAClBC,aAAc,GACdC,cAAe,KAGhBC,qBAAsB,CAAE/lD,MAAO,IAC/BgmD,wBAAyB,CAAEhmD,MAAO,IAElCimD,WAAY,CAAEjmD,MAAO,GAAIylD,WAAY,CACpChlB,MAAO,GACPlN,SAAU,GACVvF,UAAW,GACX8J,SAAU,GACVouB,QAAS,GACTC,YAAa,GACbC,MAAO,KAGRC,iBAAkB,CAAErmD,MAAO,GAAIylD,WAAY,CAC1CE,WAAY,GACZC,iBAAkB,GAClBC,aAAc,GACdC,cAAe,KAGhBQ,cAAe,CAAEtmD,MAAO,IACxBumD,iBAAkB,CAAEvmD,MAAO,IAE3BwmD,YAAa,CAAExmD,MAAO,GAAIylD,WAAY,CACrChlB,MAAO,GACPlN,SAAU,GACV6yB,MAAO,GACPtuB,SAAU,KAGX2uB,kBAAmB,CAAEzmD,MAAO,GAAIylD,WAAY,CAC3CE,WAAY,GACZC,iBAAkB,GAClBC,aAAc,GACdC,cAAe,GACfY,iBAAkB,GAClBC,gBAAiB,KAGlBC,eAAgB,CAAE5mD,MAAO,IACzB6mD,kBAAmB,CAAE7mD,MAAO,IAE5B8mD,iBAAkB,CAAE9mD,MAAO,GAAIylD,WAAY,CAC1Cz3B,UAAW,GACX+4B,SAAU,GACVC,YAAa,KAIdC,eAAgB,CAAEjnD,MAAO,GAAIylD,WAAY,CACxChlB,MAAO,GACPlN,SAAU,GACVhY,MAAO,GACPC,OAAQ,KAGT0rC,MAAO,CAAElnD,MAAO,MAChBmnD,MAAO,CAAEnnD,MAAO,OAIjBspB,OAAQ,CAEP26B,QAAS,CAAEjkD,MAAO,IAAI+kC,GAAO,WAC7B5G,QAAS,CAAEn+B,MAAO,GAClBypB,KAAM,CAAEzpB,MAAO,GACfwzB,MAAO,CAAExzB,MAAO,GAChB4hC,IAAK,CAAE5hC,MAAO,MACd8hC,SAAU,CAAE9hC,MAAO,MACnBikC,UAAW,CAAEjkC,MAAO,GACpBkkD,YAAa,CAAElkD,MAAO,IAAIgW,KAI3BkjC,OAAQ,CAEP+K,QAAS,CAAEjkD,MAAO,IAAI+kC,GAAO,WAC7B5G,QAAS,CAAEn+B,MAAO,GAClB2V,OAAQ,CAAE3V,MAAO,IAAI8T,GAAS,GAAK,KACnC0F,SAAU,CAAExZ,MAAO,GACnB4hC,IAAK,CAAE5hC,MAAO,MACd8hC,SAAU,CAAE9hC,MAAO,MACnBikC,UAAW,CAAEjkC,MAAO,GACpBkkD,YAAa,CAAElkD,MAAO,IAAIgW,MAMtBoxC,GAAY,CAEjBC,MAAO,CAENnV,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYI,YACZJ,GAAYK,OACZL,GAAYS,MACZT,GAAYU,SACZV,GAAYjmB,MAGbyU,aAAciJ,GAAYmH,eAC1BnQ,eAAgBgJ,GAAYoH,gBAI7ByE,QAAS,CAERpV,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYI,YACZJ,GAAYK,OACZL,GAAYS,MACZT,GAAYU,SACZV,GAAYW,YACZX,GAAYjmB,IACZimB,GAAYtR,OACZ,CACC1R,SAAU,CAAEhhC,MAAO,IAAI+kC,GAAO,OAIhCyN,aAAciJ,GAAYqH,iBAC1BrQ,eAAgBgJ,GAAYsH,kBAI7BwE,MAAO,CAENrV,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYI,YACZJ,GAAYK,OACZL,GAAYS,MACZT,GAAYU,SACZV,GAAYW,YACZX,GAAYY,QACZZ,GAAYa,UACZb,GAAYc,gBACZd,GAAYjmB,IACZimB,GAAYtR,OACZ,CACC1R,SAAU,CAAEhhC,MAAO,IAAI+kC,GAAO,IAC9B7D,SAAU,CAAElhC,MAAO,IAAI+kC,GAAO,UAC9B1D,UAAW,CAAErhC,MAAO,OAItBwyC,aAAciJ,GAAY2H,eAC1B3Q,eAAgBgJ,GAAY4H,gBAI7BmE,SAAU,CAETtV,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYK,OACZL,GAAYS,MACZT,GAAYU,SACZV,GAAYW,YACZX,GAAYY,QACZZ,GAAYa,UACZb,GAAYc,gBACZd,GAAYe,aACZf,GAAYgB,aACZhB,GAAYjmB,IACZimB,GAAYtR,OACZ,CACC1R,SAAU,CAAEhhC,MAAO,IAAI+kC,GAAO,IAC9BpE,UAAW,CAAE3gC,MAAO,GACpB4gC,UAAW,CAAE5gC,MAAO,GACpBmjC,gBAAiB,CAAEnjC,MAAO,MAI5BwyC,aAAciJ,GAAY6H,kBAC1B7Q,eAAgBgJ,GAAY8H,mBAI7BkE,KAAM,CAELvV,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYS,MACZT,GAAYU,SACZV,GAAYW,YACZX,GAAYY,QACZZ,GAAYa,UACZb,GAAYc,gBACZd,GAAYiB,YACZjB,GAAYjmB,IACZimB,GAAYtR,OACZ,CACC1R,SAAU,CAAEhhC,MAAO,IAAI+kC,GAAO,OAIhCyN,aAAciJ,GAAY+H,cAC1B/Q,eAAgBgJ,GAAYgI,eAI7B5hB,OAAQ,CAEPqQ,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYY,QACZZ,GAAYa,UACZb,GAAYc,gBACZd,GAAYjmB,IACZ,CACC8D,OAAQ,CAAE7hC,MAAO,SAInBwyC,aAAciJ,GAAYuH,gBAC1BvQ,eAAgBgJ,GAAYwH,iBAI7B35B,OAAQ,CAEP4oB,SAAUD,GAAe,CACxB+R,GAAY16B,OACZ06B,GAAYjmB,MAGbyU,aAAciJ,GAAYiI,YAC1BjR,eAAgBgJ,GAAYkI,aAI7B+D,OAAQ,CAEPxV,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYjmB,IACZ,CACCvK,MAAO,CAAExzB,MAAO,GAChB+jC,SAAU,CAAE/jC,MAAO,GACnB2nD,UAAW,CAAE3nD,MAAO,MAItBwyC,aAAciJ,GAAYiH,gBAC1BjQ,eAAgBgJ,GAAYkH,iBAI7BliC,MAAO,CAENyxB,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYc,kBAGbtS,aAAciJ,GAAY2G,WAC1B3P,eAAgBgJ,GAAY4G,YAI7Bj6B,OAAQ,CAEP8pB,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYY,QACZZ,GAAYa,UACZb,GAAYc,gBACZ,CACC3mB,QAAS,CAAEn+B,MAAO,MAIpBwyC,aAAciJ,GAAYyH,gBAC1BzQ,eAAgBgJ,GAAY0H,iBAI7BjK,OAAQ,CAEPhH,SAAUD,GAAe,CACxB+R,GAAY9K,OACZ8K,GAAYjmB,MAGbyU,aAAciJ,GAAYqI,YAC1BrR,eAAgBgJ,GAAYsI,aAI7BhqB,WAAY,CAEXmY,SAAU,CACTgS,YAAa,CAAElkD,MAAO,IAAIgW,IAC1B4xC,IAAK,CAAE5nD,MAAO,OAGfwyC,aAAciJ,GAAYuG,gBAC1BvP,eAAgBgJ,GAAYwG,iBAO7B4F,KAAM,CAEL3V,SAAUD,GAAe,CACxB+R,GAAYK,OACZ,CACClmB,QAAS,CAAEn+B,MAAO,MAIpBwyC,aAAciJ,GAAYyG,UAC1BzP,eAAgBgJ,GAAY0G,WAI7B2F,SAAU,CAET5V,SAAU,CACToE,UAAW,CAAEt2C,MAAO,OAGrBwyC,aAAciJ,GAAY+G,cAC1B/P,eAAgBgJ,GAAYgH,eAI7BsF,aAAc,CAEb7V,SAAUD,GAAe,CACxB+R,GAAYpH,OACZoH,GAAYc,gBACZ,CACCkD,kBAAmB,CAAEhoD,MAAO,IAAImmB,IAChC8hC,aAAc,CAAEjoD,MAAO,GACvBkoD,YAAa,CAAEloD,MAAO,QAIxBwyC,aAAciJ,GAAY6G,kBAC1B7P,eAAgBgJ,GAAY8G,mBAI7B4F,OAAQ,CAEPjW,SAAUD,GAAe,CACxB+R,GAAYtR,OACZsR,GAAYjmB,IACZ,CACC0C,MAAO,CAAEzgC,MAAO,IAAI+kC,GAAO,IAC3B5G,QAAS,CAAEn+B,MAAO,MAIpBwyC,aAAciJ,GAAYmI,YAC1BnR,eAAgBgJ,GAAYoI,cAwC9B,SAASuE,GAAiB7S,EAAU8S,EAAUC,EAAOC,EAAStoB,GAE7D,IAGIuoB,EACAC,EAJEC,EAAa,IAAI3jB,GAAO,GAC1B4jB,EAAa,EAKbC,EAAoB,KACpBC,EAA2B,EAC3BC,EAAqB,KAuKzB,SAASC,EAAUtoB,EAAOrrB,GAEzBkzC,EAAMlO,QAAQ3Z,MAAMsoB,SAAUtoB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,EAAGsC,EAAO6qB,GAIjE,MAAO,CAEN+oB,cAAe,WAEd,OAAON,GAGRO,cAAe,SAAWxoB,GAAmB,IAAZrrB,EAAY,uDAAJ,EAExCszC,EAAW/0C,IAAK8sB,GAEhBsoB,EAAUL,EADVC,EAAavzC,IAId8zC,cAAe,WAEd,OAAOP,GAGRQ,cAAe,SAAW/zC,GAGzB2zC,EAAUL,EADVC,EAAavzC,IAId0gC,OApMD,SAAiBsT,EAAY5T,GAE5B,IAAI6T,GAAa,EACbtvB,GAA+B,IAAlByb,EAAM1b,QAAmB0b,EAAMzb,WAAa,KAExDA,GAAcA,EAAWhb,YAE7Bgb,EAAasuB,EAAS/N,IAAKvgB,IAO5B,IAAM2b,EAAKH,EAASG,GACd4T,EAAU5T,EAAG6T,YAAc7T,EAAG6T,aAE/BD,GAA4C,aAAjCA,EAAQE,uBAEvBzvB,EAAa,MAIM,OAAfA,EAEJgvB,EAAUL,EAAYC,GAEX5uB,GAAcA,EAAWC,UAEpC+uB,EAAUhvB,EAAY,GACtBsvB,GAAa,IAIT9T,EAASkU,WAAaJ,IAE1B9T,EAASmB,MAAOnB,EAASmU,eAAgBnU,EAASoU,eAAgBpU,EAASqU,kBAIvE7vB,IAAgBA,EAAWic,eAAiBjc,EAAW7d,UAAYhX,UAEtDrE,IAAZ4nD,KAEJA,EAAU,IAAItZ,GACb,IAAIsB,GAAa,EAAG,EAAG,GACvB,IAAI6B,GAAgB,CACnBv3B,KAAM,yBACNm3B,SAAUH,GAAeqV,GAAUS,KAAK3V,UACxCM,aAAc4U,GAAUS,KAAKrV,aAC7BC,eAAgB2U,GAAUS,KAAKpV,eAC/BxU,KAAM/7B,EACN08B,WAAW,EACXC,YAAY,EACZd,KAAK,MAIC1T,SAASw/B,gBAAiB,UAClCpB,EAAQp+B,SAASw/B,gBAAiB,MAElCpB,EAAQqB,eAAiB,SAAWvU,EAAUC,EAAOvuB,GAEpDzmB,KAAK8mB,YAAYyiC,aAAc9iC,EAAOK,cAKvCxW,OAAO6L,eAAgB8rC,EAAQ9tB,SAAU,SAAU,CAElD2f,IAAK,WAEJ,OAAO95C,KAAK0xC,SAASjP,OAAOjjC,SAM9BuoD,EAAQpmC,OAAQsmC,IAIjBA,EAAQ9tB,SAASuX,SAASjP,OAAOjjC,MAAQ+5B,EACzC0uB,EAAQ9tB,SAASuX,SAASoS,WAAWtkD,MAAU+5B,EAAWic,gBAAsD,IAArCjc,EAAWxc,uBAAsC,EAAI,EAE3HqrC,IAAsB7uB,GAC1B8uB,IAA6B9uB,EAAW1c,SACxCyrC,IAAuBvT,EAASyU,cAEhCvB,EAAQ9tB,SAASiP,aAAc,EAE/Bgf,EAAoB7uB,EACpB8uB,EAA2B9uB,EAAW1c,QACtCyrC,EAAqBvT,EAASyU,aAK/BZ,EAAWa,QAASxB,EAASA,EAAQp+B,SAAUo+B,EAAQ9tB,SAAU,EAAG,EAAG,OAE5DZ,GAAcA,EAAWhb,iBAEjBle,IAAd2nD,KAEJA,EAAY,IAAIrZ,GACf,IAAIiM,GAAe,EAAG,GACtB,IAAI9I,GAAgB,CACnBv3B,KAAM,qBACNm3B,SAAUH,GAAeqV,GAAUrtB,WAAWmY,UAC9CM,aAAc4U,GAAUrtB,WAAWyY,aACnCC,eAAgB2U,GAAUrtB,WAAW0Y,eACrCxU,KAAMh8B,EACN28B,WAAW,EACXC,YAAY,EACZd,KAAK,MAIG1T,SAASw/B,gBAAiB,UAGpC/4C,OAAO6L,eAAgB6rC,EAAU7tB,SAAU,MAAO,CAEjD2f,IAAK,WAEJ,OAAO95C,KAAK0xC,SAAS0V,IAAI5nD,SAM3BuoD,EAAQpmC,OAAQqmC,IAIjBA,EAAU7tB,SAASuX,SAAS0V,IAAI5nD,MAAQ+5B,GAEH,IAAhCA,EAAW/c,kBAEf+c,EAAWtC,eAIZ+wB,EAAU7tB,SAASuX,SAASgS,YAAYlkD,MAAMyd,KAAMsc,EAAWngB,QAE1DgvC,IAAsB7uB,GAC1B8uB,IAA6B9uB,EAAW1c,SACxCyrC,IAAuBvT,EAASyU,cAEhCxB,EAAU7tB,SAASiP,aAAc,EAEjCgf,EAAoB7uB,EACpB8uB,EAA2B9uB,EAAW1c,QACtCyrC,EAAqBvT,EAASyU,aAM/BZ,EAAWa,QAASzB,EAAWA,EAAUn+B,SAAUm+B,EAAU7tB,SAAU,EAAG,EAAG,SA2ChF,SAASuvB,GAAoBjQ,EAAIrH,EAAYxJ,EAAY8Q,GAExD,IAAMiQ,EAAsBlQ,EAAGmQ,aAAc,OAEvCC,EAAYnQ,EAAaC,SAAW,KAAOvH,EAAW0H,IAAK,2BAC3DgQ,EAAepQ,EAAaC,UAA0B,OAAdkQ,EAExCE,EAAgB,GAEhBC,EAAeC,EAAoB,MACrCC,EAAeF,EAyEnB,SAASG,EAAuBC,GAE/B,OAAK1Q,EAAaC,SAAkBF,EAAG4Q,gBAAiBD,GAEjDP,EAAUS,mBAAoBF,GAItC,SAASG,EAAyBH,GAEjC,OAAK1Q,EAAaC,SAAkBF,EAAG+Q,kBAAmBJ,GAEnDP,EAAUY,qBAAsBL,GAuCxC,SAASH,EAAoBG,GAM5B,IAJA,IAAMM,EAAgB,GAChBC,EAAoB,GACpBC,EAAoB,GAEhB98C,EAAI,EAAGA,EAAI67C,EAAqB77C,IAEzC48C,EAAe58C,GAAM,EACrB68C,EAAmB78C,GAAM,EACzB88C,EAAmB98C,GAAM,EAI1B,MAAO,CAGN+b,SAAU,KACVghC,QAAS,KACTnnB,WAAW,EAEXgnB,cAAeA,EACfC,kBAAmBA,EACnBC,kBAAmBA,EACnBvhC,OAAQ+gC,EACRxhB,WAAY,GACZp7B,MAAO,MAoET,SAASs9C,IAIR,IAFA,IAAMJ,EAAgBR,EAAaQ,cAEzB58C,EAAI,EAAGgT,EAAK4pC,EAAc18C,OAAQF,EAAIgT,EAAIhT,IAEnD48C,EAAe58C,GAAM,EAMvB,SAASi9C,EAAiB/1C,GAEzBg2C,EAA2Bh2C,EAAW,GAIvC,SAASg2C,EAA2Bh2C,EAAWi2C,GAE9C,IAAMP,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBACjCC,EAAoBV,EAAaU,mBAEvCF,EAAe11C,GAAc,EAEW,IAAnC21C,EAAmB31C,KAEvBykC,EAAGyR,wBAAyBl2C,GAC5B21C,EAAmB31C,GAAc,GAI7B41C,EAAmB51C,KAAgBi2C,MAErBvR,EAAaC,SAAWF,EAAKrH,EAAW0H,IAAK,2BAEpDJ,EAAaC,SAAW,sBAAwB,4BAA8B3kC,EAAWi2C,GACpGL,EAAmB51C,GAAci2C,GAMnC,SAASE,IAKR,IAHA,IAAMT,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBAE7B78C,EAAI,EAAGgT,EAAK6pC,EAAkB38C,OAAQF,EAAIgT,EAAIhT,IAElD68C,EAAmB78C,KAAQ48C,EAAe58C,KAE9C2rC,EAAG2R,yBAA0Bt9C,GAC7B68C,EAAmB78C,GAAM,GAQ5B,SAASu9C,EAAqB79C,EAAOyb,EAAMhc,EAAMm5B,EAAY4G,EAAQj4B,IAErC,IAA1B2kC,EAAaC,UAAgC,OAAT1sC,GAA0B,OAATA,EAMzDwsC,EAAG4R,oBAAqB79C,EAAOyb,EAAMhc,EAAMm5B,EAAY4G,EAAQj4B,GAJ/D0kC,EAAG6R,qBAAsB99C,EAAOyb,EAAMhc,EAAM+/B,EAAQj4B,GAqQtD,SAASw2C,IAERC,IAEKtB,IAAiBF,GAGtBG,GADAD,EAAeF,GACqB3gC,QAMrC,SAASmiC,IAERxB,EAAangC,SAAW,KACxBmgC,EAAaa,QAAU,KACvBb,EAAatmB,WAAY,EAI1B,MAAO,CAEN+nB,MAtjBD,SAAgBpiC,EAAQ8Q,EAAU0wB,EAAShhC,EAAUrc,GAEpD,IAAIk+C,GAAgB,EAEpB,GAAK5B,EAAe,CAEnB,IAAMhC,EAiFR,SAA0Bj+B,EAAUghC,EAAS1wB,GAE5C,IAAMuJ,GAAqC,IAAvBvJ,EAASuJ,UAEzBioB,EAAa5B,EAAelgC,EAASkO,SAErB13B,IAAfsrD,IAEJA,EAAa,GACb5B,EAAelgC,EAASkO,IAAO4zB,GAIhC,IAAIC,EAAWD,EAAYd,EAAQ9yB,SAEjB13B,IAAburD,IAEJA,EAAW,GACXD,EAAYd,EAAQ9yB,IAAO6zB,GAI5B,IAAI9D,EAAQ8D,EAAUloB,QAEPrjC,IAAVynD,IAEJA,EAAQmC,EAhDJvQ,EAAaC,SAAkBF,EAAGoS,oBAEhChC,EAAUiC,wBA+ChBF,EAAUloB,GAAcokB,GAIzB,OAAOA,EAhHQiE,CAAiBliC,EAAUghC,EAAS1wB,GAE7C+vB,IAAiBpC,GAGrBqC,GADAD,EAAepC,GACqBz+B,SAIrCqiC,EA2IF,SAAsB7hC,EAAUrc,GAE/B,IAAMw+C,EAAmB9B,EAAathB,WAChCqjB,EAAqBpiC,EAAS+e,WAEhCsjB,EAAgB,EAEpB,IAAM,IAAM7sD,KAAO4sD,EAAqB,CAEvC,IAAME,EAAkBH,EAAkB3sD,GACpC+sD,EAAoBH,EAAoB5sD,GAE9C,QAAyBgB,IAApB8rD,EAAgC,OAAO,EAE5C,GAAKA,EAAgBn3C,YAAco3C,EAAoB,OAAO,EAE9D,GAAKD,EAAgB7tC,OAAS8tC,EAAkB9tC,KAAO,OAAO,EAE9D4tC,IAID,OAAKhC,EAAagC,gBAAkBA,GAE/BhC,EAAa18C,QAAUA,EAnKX47B,CAAavf,EAAUrc,KAyKzC,SAAoBqc,EAAUrc,GAE7B,IAAM+sB,EAAQ,GACRqO,EAAa/e,EAAS+e,WACxBsjB,EAAgB,EAEpB,IAAM,IAAM7sD,KAAOupC,EAAa,CAE/B,IAAM5zB,EAAY4zB,EAAYvpC,GAExBif,EAAO,GACbA,EAAKtJ,UAAYA,EAEZA,EAAUsJ,OAEdA,EAAKA,KAAOtJ,EAAUsJ,MAIvBic,EAAOl7B,GAAQif,EAEf4tC,IAIDhC,EAAathB,WAAarO,EAC1B2vB,EAAagC,cAAgBA,EAE7BhC,EAAa18C,MAAQA,EAnMC6+C,CAAWxiC,EAAUrc,OAEpC,CAEN,IAAMk2B,GAAqC,IAAvBvJ,EAASuJ,UAExBwmB,EAAargC,WAAaA,EAASkO,IACvCmyB,EAAaW,UAAYA,EAAQ9yB,IACjCmyB,EAAaxmB,YAAcA,IAE3BwmB,EAAargC,SAAWA,EAASkO,GACjCmyB,EAAaW,QAAUA,EAAQ9yB,GAC/BmyB,EAAaxmB,UAAYA,EAEzBgoB,GAAgB,IAMc,IAA3BriC,EAAO8P,kBAEXuyB,GAAgB,GAIF,OAAVl+C,GAEJo7B,EAAWjnB,OAAQnU,EAAO,OAItBk+C,KAmPN,SAAgCriC,EAAQ8Q,EAAU0wB,EAAShhC,GAE1D,IAA+B,IAA1B6vB,EAAaC,WAAwBtwB,EAAO8P,iBAAmBtP,EAASyiC,4BAExB,OAA/Cla,EAAW0H,IAAK,0BAAsC,OAI5DgR,IAEA,IAAMmB,EAAqBpiC,EAAS+e,WAE9B2jB,EAAoB1B,EAAQ2B,gBAE5BC,EAAiCtyB,EAASsY,uBAEhD,IAAM,IAAMl4B,KAAQgyC,EAAoB,CAEvC,IAAMG,EAAmBH,EAAmBhyC,GAE5C,GAAKmyC,EAAiBC,UAAY,EAAI,CAErC,IAAIP,EAAoBH,EAAoB1xC,GAS5C,QAP2Bla,IAAtB+rD,IAEU,mBAAT7xC,GAA6B8O,EAAO+P,iBAAiBgzB,EAAoB/iC,EAAO+P,gBACvE,kBAAT7e,GAA4B8O,EAAOgQ,gBAAgB+yB,EAAoB/iC,EAAOgQ,qBAIzDh5B,IAAtB+rD,EAAkC,CAEtC,IAAMhmB,EAAagmB,EAAkBhmB,WAC/Bnd,EAAOmjC,EAAkBxlB,SAEzB5xB,EAAY4zB,EAAWkR,IAAKsS,GAIlC,QAAmB/rD,IAAd2U,EAA0B,SAE/B,IAAMqF,EAASrF,EAAUqF,OACnBpN,EAAO+H,EAAU/H,KACjBktC,EAAkBnlC,EAAUmlC,gBAElC,GAAKiS,EAAkBrf,6BAA+B,CAErD,IAAMzuB,EAAO8tC,EAAkB9tC,KACzB0uB,EAAS1uB,EAAK0uB,OACdj4B,EAASq3C,EAAkBr3C,OAEjC,GAAKuJ,GAAQA,EAAKsuC,6BAA+B,CAEhD,IAAM,IAAI9+C,EAAI,EAAGA,EAAI4+C,EAAiBG,aAAc/+C,IAEnDk9C,EAA2B0B,EAAiBC,SAAW7+C,EAAGwQ,EAAK2sC,mBAIhC,IAA3B5hC,EAAO8P,sBAA2D94B,IAA/BwpB,EAASijC,oBAEhDjjC,EAASijC,kBAAoBxuC,EAAK2sC,iBAAmB3sC,EAAKuC,YAM3D,IAAM,IAAI/S,EAAI,EAAGA,EAAI4+C,EAAiBG,aAAc/+C,IAEnDi9C,EAAiB2B,EAAiBC,SAAW7+C,GAM/C2rC,EAAGa,WAAY,MAAOjgC,GAEtB,IAAM,IAAIvM,EAAI,EAAGA,EAAI4+C,EAAiBG,aAAc/+C,IAEnDu9C,EACCqB,EAAiBC,SAAW7+C,EAC5Bmb,EAAOyjC,EAAiBG,aACxB5/C,EACAm5B,EACA4G,EAASmN,GACPplC,EAAWkU,EAAOyjC,EAAiBG,aAAiB/+C,GAAMqsC,OAKxD,CAEN,GAAKiS,EAAkBW,2BAA6B,CAEnD,IAAM,IAAIj/C,EAAI,EAAGA,EAAI4+C,EAAiBG,aAAc/+C,IAEnDk9C,EAA2B0B,EAAiBC,SAAW7+C,EAAGs+C,EAAkBnB,mBAI7C,IAA3B5hC,EAAO8P,sBAA2D94B,IAA/BwpB,EAASijC,oBAEhDjjC,EAASijC,kBAAoBV,EAAkBnB,iBAAmBmB,EAAkBvrC,YAMrF,IAAM,IAAI/S,EAAI,EAAGA,EAAI4+C,EAAiBG,aAAc/+C,IAEnDi9C,EAAiB2B,EAAiBC,SAAW7+C,GAM/C2rC,EAAGa,WAAY,MAAOjgC,GAEtB,IAAM,IAAIvM,EAAI,EAAGA,EAAI4+C,EAAiBG,aAAc/+C,IAEnDu9C,EACCqB,EAAiBC,SAAW7+C,EAC5Bmb,EAAOyjC,EAAiBG,aACxB5/C,EACAm5B,EACAnd,EAAOkxB,EACLlxB,EAAOyjC,EAAiBG,aAAiB/+C,EAAIqsC,SAO5C,QAAwC95C,IAAnCosD,EAA+C,CAE1D,IAAMjtD,EAAQitD,EAAgClyC,GAE9C,QAAela,IAAVb,EAEJ,OAASA,EAAMwO,QAEd,KAAK,EACJyrC,EAAGuT,gBAAiBN,EAAiBC,SAAUntD,GAC/C,MAED,KAAK,EACJi6C,EAAGwT,gBAAiBP,EAAiBC,SAAUntD,GAC/C,MAED,KAAK,EACJi6C,EAAGyT,gBAAiBR,EAAiBC,SAAUntD,GAC/C,MAED,QACCi6C,EAAG0T,gBAAiBT,EAAiBC,SAAUntD,MAYrD2rD,IAxZCiC,CAAuB/jC,EAAQ8Q,EAAU0wB,EAAShhC,GAEnC,OAAVrc,GAEJisC,EAAGa,WAAY,MAAO1R,EAAWkR,IAAKtsC,GAAQ6M,UAggBhDkxC,MAAOA,EACPC,kBAAmBA,EACnB/qC,QA1GD,WAIC,IAAM,IAAM4sC,KAFZ9B,IAE0BxB,EAAgB,CAEzC,IAAM4B,EAAa5B,EAAesD,GAElC,IAAM,IAAMC,KAAa3B,EAAa,CAErC,IAAMC,EAAWD,EAAY2B,GAE7B,IAAM,IAAM5pB,KAAakoB,EAExBrB,EAAyBqB,EAAUloB,GAAYra,eAExCuiC,EAAUloB,UAIXioB,EAAY2B,UAIbvD,EAAesD,KAmFvBE,wBA7ED,SAAkC1jC,GAEjC,QAAsCxpB,IAAjC0pD,EAAelgC,EAASkO,IAA7B,CAEA,IAAM4zB,EAAa5B,EAAelgC,EAASkO,IAE3C,IAAM,IAAMu1B,KAAa3B,EAAa,CAErC,IAAMC,EAAWD,EAAY2B,GAE7B,IAAM,IAAM5pB,KAAakoB,EAExBrB,EAAyBqB,EAAUloB,GAAYra,eAExCuiC,EAAUloB,UAIXioB,EAAY2B,UAIbvD,EAAelgC,EAASkO,MAwD/By1B,uBApDD,SAAiC3C,GAEhC,IAAM,IAAMwC,KAActD,EAAgB,CAEzC,IAAM4B,EAAa5B,EAAesD,GAElC,QAAkChtD,IAA7BsrD,EAAYd,EAAQ9yB,IAAzB,CAEA,IAAM6zB,EAAWD,EAAYd,EAAQ9yB,IAErC,IAAM,IAAM2L,KAAakoB,EAExBrB,EAAyBqB,EAAUloB,GAAYra,eAExCuiC,EAAUloB,UAIXioB,EAAYd,EAAQ9yB,OAoC5B+yB,eAAgBA,EAChBC,gBAAiBA,EACjBI,wBAAyBA,GAM3B,SAASsC,GAAqBhU,EAAIrH,EAAY7yC,EAAMm6C,GAEnD,IAEIgU,EAFE/T,EAAWD,EAAaC,SAmD9B35C,KAAK2tD,QA/CL,SAAkBnuD,GAEjBkuD,EAAOluD,GA8CRQ,KAAKs1C,OA1CL,SAAiBpM,EAAOroB,GAEvB44B,EAAGmU,WAAYF,EAAMxkB,EAAOroB,GAE5BthB,EAAKoiB,OAAQd,EAAO6sC,EAAM,IAuC3B1tD,KAAK6tD,gBAnCL,SAA0B3kB,EAAOroB,EAAOitC,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAIjE,EAAWkE,EAEf,GAAKpU,EAEJkQ,EAAYpQ,EACZsU,EAAa,2BAOb,GAFAA,EAAa,2BAEM,QAHnBlE,EAAYzX,EAAW0H,IAAK,2BAM3B,YADA1mC,QAAQ3T,MAAO,kIAOjBoqD,EAAWkE,GAAcL,EAAMxkB,EAAOroB,EAAOitC,GAE7CvuD,EAAKoiB,OAAQd,EAAO6sC,EAAMI,KAY5B,SAASE,GAAmBvU,EAAIrH,EAAYvY,GAE3C,IAAIo0B,EAsBJ,SAASC,EAAiB/uB,GAEzB,GAAmB,UAAdA,EAAwB,CAE5B,GAAKsa,EAAG0U,yBAA0B,MAAO,OAAQhvB,UAAY,GAC5Dsa,EAAG0U,yBAA0B,MAAO,OAAQhvB,UAAY,EAExD,MAAO,QAIRA,EAAY,UAIb,MAAmB,YAAdA,GAECsa,EAAG0U,yBAA0B,MAAO,OAAQhvB,UAAY,GAC5Dsa,EAAG0U,yBAA0B,MAAO,OAAQhvB,UAAY,EAEjD,UAMF,OAKR,IAAMwa,EAA+C,qBAA3ByU,wBAA0C3U,aAAc2U,wBACtC,qBAAlCC,+BAAiD5U,aAAc4U,8BAGrElvB,OAAqC9+B,IAAzBw5B,EAAWsF,UAA0BtF,EAAWsF,UAAY,QACtEmvB,EAAeJ,EAAiB/uB,GAEjCmvB,IAAiBnvB,IAErB/rB,QAAQC,KAAM,uBAAwB8rB,EAAW,uBAAwBmvB,EAAc,YACvFnvB,EAAYmvB,GAIb,IAAM/b,EAAcoH,GAAYvH,EAAWmc,IAAK,sBAE1CC,GAA+D,IAAtC30B,EAAW20B,uBAEpCC,EAAchV,EAAGmQ,aAAc,OAC/B8E,EAAoBjV,EAAGmQ,aAAc,OACrC+E,EAAiBlV,EAAGmQ,aAAc,MAClCgF,EAAiBnV,EAAGmQ,aAAc,OAElCiF,EAAgBpV,EAAGmQ,aAAc,OACjCkF,EAAoBrV,EAAGmQ,aAAc,OACrCmF,EAActV,EAAGmQ,aAAc,OAC/BoF,EAAsBvV,EAAGmQ,aAAc,OAEvCqF,EAAiBP,EAAoB,EACrCQ,EAAwBvV,GAAYvH,EAAWmc,IAAK,qBAK1D,MAAO,CAEN5U,SAAUA,EAEVpH,YAAaA,EAEb4c,iBA3FD,WAEC,QAAuB9uD,IAAlB4tD,EAA8B,OAAOA,EAE1C,IAA4D,IAAvD7b,EAAWmc,IAAK,kCAA8C,CAElE,IAAM1E,EAAYzX,EAAW0H,IAAK,kCAElCmU,EAAgBxU,EAAGmQ,aAAcC,EAAUuF,qCAI3CnB,EAAgB,EAIjB,OAAOA,GA4EPC,gBAAiBA,EAEjB/uB,UAAWA,EACXqvB,uBAAwBA,EAExBC,YAAaA,EACbC,kBAAmBA,EACnBC,eAAgBA,EAChBC,eAAgBA,EAEhBC,cAAeA,EACfC,kBAAmBA,EACnBC,YAAaA,EACbC,oBAAqBA,EAErBC,eAAgBA,EAChBC,sBAAuBA,EACvBG,oBA5B2BJ,GAAkBC,EA8B7CI,WA5BkB3V,EAAWF,EAAGmQ,aAAc,OAAU,GAkC1D,SAAS2F,GAAetK,GAEvB,IAAM5U,EAAQrwC,KAEVwvD,EAAc,KACjBC,EAAkB,EAClBC,GAAuB,EACvBC,GAAmB,EAEdtlC,EAAQ,IAAIisB,GACjBsZ,EAAmB,IAAIp6C,GAEvBq6C,EAAU,CAAErwD,MAAO,KAAM4pC,aAAa,GAyFvC,SAAS0mB,IAEHD,EAAQrwD,QAAUgwD,IAEtBK,EAAQrwD,MAAQgwD,EAChBK,EAAQzmB,YAAcqmB,EAAkB,GAIzCpf,EAAM0f,UAAYN,EAClBpf,EAAM2f,gBAAkB,EAIzB,SAASC,EAAe1Y,EAAQ9wB,EAAQhC,EAAWyrC,GAElD,IAAMC,EAAqB,OAAX5Y,EAAkBA,EAAOvpC,OAAS,EAC9CoiD,EAAW,KAEf,GAAiB,IAAZD,EAAgB,CAIpB,GAFAC,EAAWP,EAAQrwD,OAEI,IAAlB0wD,GAAuC,OAAbE,EAAoB,CAElD,IAAMC,EAAW5rC,EAAsB,EAAV0rC,EAC5BG,EAAa7pC,EAAOE,mBAErBipC,EAAiBvmB,gBAAiBinB,IAEhB,OAAbF,GAAqBA,EAASpiD,OAASqiD,KAE3CD,EAAW,IAAIl2C,aAAcm2C,IAI9B,IAAM,IAAIviD,EAAI,EAAGyiD,EAAK9rC,EAAW3W,IAAMqiD,IAAYriD,EAAGyiD,GAAM,EAE3DlmC,EAAMpN,KAAMs6B,EAAQzpC,IAAM4Y,aAAc4pC,EAAYV,GAEpDvlC,EAAMzC,OAAOsR,QAASk3B,EAAUG,GAChCH,EAAUG,EAAK,GAAMlmC,EAAMC,SAM7BulC,EAAQrwD,MAAQ4wD,EAChBP,EAAQzmB,aAAc,EAOvB,OAHAiH,EAAM0f,UAAYI,EAClB9f,EAAM2f,gBAAkB,EAEjBI,EA9IRpwD,KAAK6vD,QAAUA,EACf7vD,KAAK+vD,UAAY,EACjB/vD,KAAKgwD,gBAAkB,EAEvBhwD,KAAKwwD,KAAO,SAAWjZ,EAAQkZ,EAAqBhqC,GAEnD,IAAMstB,EACa,IAAlBwD,EAAOvpC,QACPyiD,GAGoB,IAApBhB,GACAC,EAOD,OALAA,EAAuBe,EAEvBjB,EAAcS,EAAe1Y,EAAQ9wB,EAAQ,GAC7CgpC,EAAkBlY,EAAOvpC,OAElB+lC,GAIR/zC,KAAK0wD,aAAe,WAEnBf,GAAmB,EACnBM,EAAe,OAIhBjwD,KAAK2wD,WAAa,WAEjBhB,GAAmB,EACnBG,KAID9vD,KAAK4wD,SAAW,SAAWz2B,EAAU1T,EAAQoqC,GAE5C,IAAMtZ,EAASpd,EAAS2E,eACvBC,EAAmB5E,EAAS4E,iBAC5BC,EAAc7E,EAAS6E,YAElB8xB,EAAqB7L,EAAWnL,IAAK3f,GAE3C,IAAOu1B,GAAmC,OAAXnY,GAAqC,IAAlBA,EAAOvpC,QAAgB2hD,IAAsB3wB,EAIzF2wB,EAIJM,EAAe,MAIfH,QAIK,CAEN,IAAMiB,EAAUpB,EAAmB,EAAIF,EACtCuB,EAAoB,EAAVD,EAEPX,EAAWU,EAAmBG,eAAiB,KAEnDpB,EAAQrwD,MAAQ4wD,EAEhBA,EAAWH,EAAe1Y,EAAQ9wB,EAAQuqC,EAASH,GAEnD,IAAM,IAAI/iD,EAAI,EAAGA,IAAMkjD,IAAYljD,EAElCsiD,EAAUtiD,GAAM0hD,EAAa1hD,GAI9BgjD,EAAmBG,cAAgBb,EACnCpwD,KAAKgwD,gBAAkBjxB,EAAmB/+B,KAAK+vD,UAAY,EAC3D/vD,KAAK+vD,WAAagB,IAoErB,SAASG,GAAenc,GAEvB,IAAI8S,EAAW,IAAIhO,QAEnB,SAASsX,EAAmB9wC,EAAS3E,GAYpC,OAVKA,IAAYlX,GAEhB6b,EAAQ3E,QAAUpX,GAEPoX,IAAYjX,KAEvB4b,EAAQ3E,QAAUnX,IAIZ8b,EAqDR,SAAS+wC,EAAkB1jD,GAE1B,IAAM2S,EAAU3S,EAAMC,OAEtB0S,EAAQgxC,oBAAqB,UAAWD,GAExC,IAAME,EAAUzJ,EAAS/N,IAAKz5B,QAEbhgB,IAAZixD,IAEJzJ,EAAS7N,OAAQ35B,GACjBixC,EAAQ7wC,WAYV,MAAO,CACNq5B,IAzED,SAAcz5B,GAEb,GAAKA,GAAWA,EAAQ9B,YAA+C,IAAlC8B,EAAQtD,sBAAkC,CAE9E,IAAMrB,EAAU2E,EAAQ3E,QAExB,GAAKA,IAAYlX,IAAoCkX,IAAYjX,GAAmC,CAEnG,GAAKojD,EAAS0G,IAAKluC,GAGlB,OAAO8wC,EADStJ,EAAS/N,IAAKz5B,GAAUA,QACLA,EAAQ3E,SAI3C,IAAMhB,EAAQ2F,EAAQ3F,MAEtB,GAAKA,GAASA,EAAMM,OAAS,EAAI,CAEhC,IAAMm6B,EAAsBJ,EAASK,kBAE/Bb,EAAe,IAAIkB,GAAuB/6B,EAAMM,OAAS,GAQ/D,OAPAu5B,EAAagd,2BAA4Bxc,EAAU10B,GACnDwnC,EAAS10C,IAAKkN,EAASk0B,GAEvBQ,EAASM,gBAAiBF,GAE1B90B,EAAQmxC,iBAAkB,UAAWJ,GAE9BD,EAAmB5c,EAAal0B,QAASA,EAAQ3E,SAMxD,OAAO,MAUX,OAAO2E,GA6BPI,QARD,WAEConC,EAAW,IAAIhO,UAvvCjB+M,GAAU6K,SAAW,CAEpB/f,SAAUD,GAAe,CACxBmV,GAAUI,SAAStV,SACnB,CACC5Q,UAAW,CAAEthC,MAAO,GACpBwhC,aAAc,CAAExhC,MAAO,MACvBuhC,mBAAoB,CAAEvhC,MAAO,GAC7ByhC,sBAAuB,CAAEzhC,MAAO,MAChC2hC,qBAAsB,CAAE3hC,MAAO,IAAI8T,GAAS,EAAG,IAC/C4tB,mBAAoB,CAAE1hC,MAAO,MAC7B6gC,MAAO,CAAE7gC,MAAO,GAChB8gC,UAAW,CAAE9gC,MAAO,IAAI+kC,GAAO,IAC/BhE,eAAgB,CAAE/gC,MAAO,GACzBujC,aAAc,CAAEvjC,MAAO,GACvBwjC,gBAAiB,CAAExjC,MAAO,MAC1BkyD,wBAAyB,CAAElyD,MAAO,IAAI8T,IACtCq+C,uBAAwB,CAAEnyD,MAAO,MACjCyjC,UAAW,CAAEzjC,MAAO,GACpB0jC,aAAc,CAAE1jC,MAAO,MACvB2jC,oBAAqB,CAAE3jC,MAAO,GAC9B4jC,gBAAiB,CAAE5jC,MAAO,IAAI+kC,GAAO,IACrC5D,kBAAmB,CAAEnhC,MAAO,GAC5B+iC,qBAAsB,CAAE/iC,MAAO,MAC/BohC,aAAc,CAAEphC,MAAO,IAAI+kC,GAAO,EAAG,EAAG,IACxC/B,gBAAiB,CAAEhjC,MAAO,SAI5BwyC,aAAciJ,GAAY6H,kBAC1B7Q,eAAgBgJ,GAAY8H,mB,IAouCvB6O,G,kDAEL,aAAoF,MAAvE/9B,EAAuE,wDAA9D,EAAGC,EAA2D,uDAAnD,EAAGC,EAAgD,uDAA1C,EAAGC,EAAuC,wDAA5B,EAAGC,EAAyB,uDAAlB,GAAKC,EAAa,uDAAP,IAAO,4BAEnF,gBAEKjnB,KAAO,qBAEZ,EAAKimC,KAAO,EACZ,EAAKE,KAAO,KAEZ,EAAKvf,KAAOA,EACZ,EAAKC,MAAQA,EACb,EAAKC,IAAMA,EACX,EAAKC,OAASA,EAEd,EAAKC,KAAOA,EACZ,EAAKC,IAAMA,EAEX,EAAKqf,yBAjB8E,E,wCAqBpF,SAAMr2B,EAAQud,GAcb,OAZA,4DAAYvd,EAAQud,GAEpBz6B,KAAK6zB,KAAO3W,EAAO2W,KACnB7zB,KAAK8zB,MAAQ5W,EAAO4W,MACpB9zB,KAAK+zB,IAAM7W,EAAO6W,IAClB/zB,KAAKg0B,OAAS9W,EAAO8W,OACrBh0B,KAAKi0B,KAAO/W,EAAO+W,KACnBj0B,KAAKk0B,IAAMhX,EAAOgX,IAElBl0B,KAAKkzC,KAAOh2B,EAAOg2B,KACnBlzC,KAAKozC,KAAuB,OAAhBl2B,EAAOk2B,KAAgB,KAAO9iC,OAAOm9B,OAAQ,GAAIvwB,EAAOk2B,MAE7DpzC,O,2BAIR,SAAe6zC,EAAWC,EAAYpkC,EAAGC,EAAGoL,EAAOC,GAE/B,OAAdhb,KAAKozC,OAETpzC,KAAKozC,KAAO,CACXW,SAAS,EACTF,UAAW,EACXC,WAAY,EACZE,QAAS,EACTC,QAAS,EACTl5B,MAAO,EACPC,OAAQ,IAKVhb,KAAKozC,KAAKW,SAAU,EACpB/zC,KAAKozC,KAAKS,UAAYA,EACtB7zC,KAAKozC,KAAKU,WAAaA,EACvB9zC,KAAKozC,KAAKY,QAAUtkC,EACpB1P,KAAKozC,KAAKa,QAAUtkC,EACpB3P,KAAKozC,KAAKr4B,MAAQA,EAClB/a,KAAKozC,KAAKp4B,OAASA,EAEnBhb,KAAKuzC,2B,6BAIN,WAEoB,OAAdvzC,KAAKozC,OAETpzC,KAAKozC,KAAKW,SAAU,GAIrB/zC,KAAKuzC,2B,oCAIN,WAEC,IAAM9+B,GAAOzU,KAAK8zB,MAAQ9zB,KAAK6zB,OAAW,EAAI7zB,KAAKkzC,MAC7Cx+B,GAAO1U,KAAK+zB,IAAM/zB,KAAKg0B,SAAa,EAAIh0B,KAAKkzC,MAC7Cj6B,GAAOjZ,KAAK8zB,MAAQ9zB,KAAK6zB,MAAS,EAClC3a,GAAOlZ,KAAK+zB,IAAM/zB,KAAKg0B,QAAW,EAEpCH,EAAO5a,EAAKxE,EACZqf,EAAQ7a,EAAKxE,EACbsf,EAAM7a,EAAKxE,EACXsf,EAAS9a,EAAKxE,EAElB,GAAmB,OAAd1U,KAAKozC,MAAiBpzC,KAAKozC,KAAKW,QAAU,CAE9C,IAAM8d,GAAW7xD,KAAK8zB,MAAQ9zB,KAAK6zB,MAAS7zB,KAAKozC,KAAKS,UAAY7zC,KAAKkzC,KACjE4e,GAAW9xD,KAAK+zB,IAAM/zB,KAAKg0B,QAAWh0B,KAAKozC,KAAKU,WAAa9zC,KAAKkzC,KAGxEpf,GADAD,GAAQg+B,EAAS7xD,KAAKozC,KAAKY,SACZ6d,EAAS7xD,KAAKozC,KAAKr4B,MAElCiZ,GADAD,GAAO+9B,EAAS9xD,KAAKozC,KAAKa,SACX6d,EAAS9xD,KAAKozC,KAAKp4B,OAInChb,KAAK4mB,iBAAiBmrC,iBAAkBl+B,EAAMC,EAAOC,EAAKC,EAAQh0B,KAAKi0B,KAAMj0B,KAAKk0B,KAElFl0B,KAAK6mB,wBAAwB5J,KAAMjd,KAAK4mB,kBAAmBnO,W,oBAI5D,SAAQ0E,GAEP,IAAMmB,EAAO,8DAAcnB,GAY3B,OAVAmB,EAAK+K,OAAO6pB,KAAOlzC,KAAKkzC,KACxB50B,EAAK+K,OAAOwK,KAAO7zB,KAAK6zB,KACxBvV,EAAK+K,OAAOyK,MAAQ9zB,KAAK8zB,MACzBxV,EAAK+K,OAAO0K,IAAM/zB,KAAK+zB,IACvBzV,EAAK+K,OAAO2K,OAASh0B,KAAKg0B,OAC1B1V,EAAK+K,OAAO4K,KAAOj0B,KAAKi0B,KACxB3V,EAAK+K,OAAO6K,IAAMl0B,KAAKk0B,IAEJ,OAAdl0B,KAAKozC,OAAgB90B,EAAK+K,OAAO+pB,KAAO9iC,OAAOm9B,OAAQ,GAAIztC,KAAKozC,OAE9D90B,M,GA7HwBw0B,IAmIjC8e,GAAmBt8C,UAAU08C,sBAAuB,E,IAE9CC,G,kDAEL,WAAap4B,GAAa,kCAEzB,cAAOA,IAEF5sB,KAAO,oBAJa,E,UAFK6kC,IAYhCmgB,GAAkB38C,UAAU48C,qBAAsB,EAElD,IAEMC,GAAW/jD,KAAK2B,IAAK,EADX,GAOVqiD,GAAkB,CAAE,KAAO,KAAO,IAAM,KAAO,KAAO,MAEtDC,GAAaC,EAAwBF,GAAgBpkD,OAIrDukD,GAAc,GAEdC,IAAS,mBACZ/nD,GAAkB,GADN,cAEZC,GAAgB,GAFJ,cAGZE,GAAgB,GAHJ,cAIZE,GAAiB,GAJL,cAKZC,GAAkB,GALN,cAMZC,GAAgB,GANJ,cAOZL,GAAiB,GAPL,GAUT8nD,GAA4B,IAAIb,GACtC,GAAyDc,KAAjDC,GAAR,GAAQA,WAAYC,GAApB,GAAoBA,UAAWC,GAA/B,GAA+BA,QACzBC,GAA4B,IAAIvuB,GAClCwuB,GAAa,KAGXC,IAAQ,EAAI5kD,KAAKiG,KAAM,IAAQ,EAC/B4+C,GAAU,EAAID,GAIdE,GAAkB,CACT,IAAIvtC,GAAS,EAAG,EAAG,GACnB,IAAIA,IAAW,EAAG,EAAG,GACrB,IAAIA,GAAS,EAAG,GAAK,GACrB,IAAIA,IAAW,EAAG,GAAK,GACvB,IAAIA,GAAS,EAAGqtC,GAAKC,IACrB,IAAIttC,GAAS,EAAGqtC,IAAOC,IACvB,IAAIttC,GAASstC,GAAS,EAAGD,IACzB,IAAIrtC,IAAWstC,GAAS,EAAGD,IAC3B,IAAIrtC,GAASqtC,GAAKC,GAAS,GAC3B,IAAIttC,IAAWqtC,GAAKC,GAAS,IAiBtCE,G,WAEL,WAAape,GAAW,oBAEvB/0C,KAAKozD,UAAYre,EACjB/0C,KAAKqzD,sBAAwB,KAE7BrzD,KAAKszD,cAkiBP,SAAyBhE,GAExB,IAAMiE,EAAU,IAAIr5C,aAAco1C,GAC5BkE,EAAW,IAAI7tC,GAAS,EAAG,EAAG,GA6FpC,OA5FuB,IAAIssC,GAAmB,CAE7C13C,KAAM,wBAENw3B,QAAS,CAAE,EAAKud,GAEhB5d,SAAU,CACT,OAAU,CAAElyC,MAAO,MACnB,QAAW,CAAEA,MAAO,GACpB,QAAW,CAAEA,MAAO+zD,GACpB,YAAe,CAAE/zD,OAAO,GACxB,OAAU,CAAEA,MAAO,GACnB,OAAU,CAAEA,MAAO,GACnB,SAAY,CAAEA,MAAOg0D,GACrB,cAAiB,CAAEh0D,MAAOgzD,GAAW/nD,KACrC,eAAkB,CAAEjL,MAAOgzD,GAAW/nD,MAGvCunC,aA8LD,+rCA5LCC,eAAc,uVA2Pf,29CA3Pe,gyCAkEdzU,SAAU17B,EACVs8B,WAAW,EACXC,YAAY,IA9nBSo1B,CAAgBlB,IACrCvyD,KAAK0zD,gBAAkB,KACvB1zD,KAAK2zD,eAAiB,KAEtB3zD,KAAK4zD,iBAAkB5zD,KAAKszD,e,6CAW7B,SAAWte,GAA0C,IAAnC6e,EAAmC,uDAA3B,EAAG5/B,EAAwB,uDAAjB,GAAKC,EAAY,uDAAN,IAE9C6+B,GAAa/yD,KAAKozD,UAAUhe,kBAC5B,IAAM0e,EAAqB9zD,KAAK+zD,mBAYhC,OAVA/zD,KAAKg0D,eAAgBhf,EAAO/gB,EAAMC,EAAK4/B,GAClCD,EAAQ,GAEZ7zD,KAAKi0D,MAAOH,EAAoB,EAAG,EAAGD,GAIvC7zD,KAAKk0D,YAAaJ,GAClB9zD,KAAKm0D,SAAUL,GAERA,I,iCASR,SAAqBM,GAEpB,OAAOp0D,KAAKq0D,aAAcD,K,yBAS3B,SAAa9C,GAEZ,OAAOtxD,KAAKq0D,aAAc/C,K,kCAQ3B,WAE8B,OAAxBtxD,KAAK2zD,iBAET3zD,KAAK2zD,eAAiBW,KACtBt0D,KAAK4zD,iBAAkB5zD,KAAK2zD,mB,0CAU9B,WAE+B,OAAzB3zD,KAAK0zD,kBAET1zD,KAAK0zD,gBAAkBa,KACvBv0D,KAAK4zD,iBAAkB5zD,KAAK0zD,oB,qBAW9B,WAEC1zD,KAAKszD,cAAc7yC,UAEU,OAAxBzgB,KAAK2zD,gBAA0B3zD,KAAK2zD,eAAelzC,UAC1B,OAAzBzgB,KAAK0zD,iBAA2B1zD,KAAK0zD,gBAAgBjzC,UAE1D,IAAM,IAAI3S,EAAI,EAAGA,EAAI6kD,GAAW3kD,OAAQF,IAEvC6kD,GAAY7kD,GAAI2S,Y,sBAQlB,SAAU+zC,GAETx0D,KAAKqzD,sBAAsB5yC,UAC3BzgB,KAAKozD,UAAU/d,gBAAiB0d,IAChCyB,EAAar0C,aAAc,EAC3Bs0C,GAAcD,EAAc,EAAG,EAAGA,EAAaz5C,MAAOy5C,EAAax5C,U,0BAIpE,SAAcqF,GAEb0yC,GAAa/yD,KAAKozD,UAAUhe,kBAC5B,IAAM0e,EAAqB9zD,KAAK+zD,iBAAkB1zC,GAKlD,OAJArgB,KAAK00D,iBAAkBr0C,EAASyzC,GAChC9zD,KAAKk0D,YAAaJ,GAClB9zD,KAAKm0D,SAAUL,GAERA,I,8BAIR,SAAkBzzC,GAEjB,IAAMs0C,EAAS,CACd74C,UAAW/W,GACXgX,UAAWhX,GACX0X,iBAAiB,EACjBxP,KAAMxH,GACNuW,OAAQtV,GACRwV,SAAU04C,GAAQv0C,GAAYA,EAAQnE,SAAWtR,GACjD0V,aAAa,GAGRwzC,EAAqBe,GAAqBF,GAGhD,OAFAb,EAAmBxzC,aAAcD,EACjCrgB,KAAKqzD,sBAAwBwB,GAAqBF,GAC3Cb,I,8BAIR,SAAkB35B,GAEjB,IAAM26B,EAAU,IAAInmB,GAAMgkB,GAAY,GAAKx4B,GAC3Cn6B,KAAKozD,UAAU2B,QAASD,EAASrC,M,4BAIlC,SAAgBzd,EAAO/gB,EAAMC,EAAK4/B,GAEjC,IAEMkB,EAAa,IAAIjiB,GAFX,GACG,EACwC9e,EAAMC,GACvD+gC,EAAS,CAAE,GAAK,EAAG,EAAG,EAAG,EAAG,GAC5BC,EAAc,CAAE,EAAG,EAAG,GAAK,GAAK,GAAK,GACrCngB,EAAW/0C,KAAKozD,UAEhB+B,EAAoBpgB,EAASkU,UAC7BmM,EAAiBrgB,EAASqgB,eAC1B5L,EAAczU,EAASyU,YAC7BzU,EAASyT,cAAesK,IAExB/d,EAASyU,YAAczlD,GACvBgxC,EAASqgB,eAAiB3qD,GAC1BsqC,EAASkU,WAAY,EAErB,IAAMoM,EAAqB,IAAI/uB,GAAmB,CACjD/rB,KAAM,mBACNkjB,KAAM/7B,EACN28B,YAAY,EACZD,WAAW,IAGNk3B,EAAgB,IAAI3mB,GAAM,IAAIsB,GAAeolB,GAE/CE,GAAgB,EACdh8B,EAAayb,EAAMzb,WAEpBA,EAECA,EAAWC,UAEf67B,EAAmBp1B,MAAMhjB,KAAMsc,GAC/Byb,EAAMzb,WAAa,KACnBg8B,GAAgB,IAMjBF,EAAmBp1B,MAAMhjB,KAAM61C,IAC/ByC,GAAgB,GAIjB,IAAM,IAAIznD,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM0nD,EAAM1nD,EAAI,EACJ,GAAP0nD,GAEJR,EAAWvjC,GAAGte,IAAK,EAAG8hD,EAAQnnD,GAAK,GACnCknD,EAAWr9B,OAAQu9B,EAAapnD,GAAK,EAAG,IAEtB,GAAP0nD,GAEXR,EAAWvjC,GAAGte,IAAK,EAAG,EAAG8hD,EAAQnnD,IACjCknD,EAAWr9B,OAAQ,EAAGu9B,EAAapnD,GAAK,KAIxCknD,EAAWvjC,GAAGte,IAAK,EAAG8hD,EAAQnnD,GAAK,GACnCknD,EAAWr9B,OAAQ,EAAG,EAAGu9B,EAAapnD,KAIvC2mD,GAAcX,EACb0B,EAAMrD,GAAUrkD,EAAI,EAAIqkD,GAAW,EAAGA,GAAUA,IACjDpd,EAASM,gBAAiBye,GAErByB,GAEJxgB,EAASO,OAAQggB,EAAeN,GAIjCjgB,EAASO,OAAQN,EAAOggB,GAIzBM,EAAczrC,SAASpJ,UACvB60C,EAAcn7B,SAAS1Z,UAEvBs0B,EAASyU,YAAcA,EACvBzU,EAASqgB,eAAiBA,EAC1BrgB,EAASkU,UAAYkM,EACrBngB,EAAMzb,WAAaA,I,0BAIpB,SAAcs2B,EAASxvC,IAEwB,IAAzCrgB,KAAKozD,UAAU1Z,aAAaC,UAAqBt5B,EAAQrE,SAAWzV,IAAc8Z,EAAQpT,OAASxH,IAAoB4a,EAAQnE,WAAaxR,GAEhJmlD,EAAQrwD,MAAQgzD,GAAW/nD,IAI3BolD,EAAQrwD,MAAQgzD,GAAWnyC,EAAQnE,Y,8BAMrC,SAAkBmE,EAASyzC,GAE1B,IAAM/e,EAAW/0C,KAAKozD,UAEjB/yC,EAAQm1B,cAEgB,MAAvBx1C,KAAK2zD,iBAET3zD,KAAK2zD,eAAiBW,MAMM,MAAxBt0D,KAAK0zD,kBAET1zD,KAAK0zD,gBAAkBa,MAMzB,IAAMp6B,EAAW9Z,EAAQm1B,cAAgBx1C,KAAK2zD,eAAiB3zD,KAAK0zD,gBAC9D3d,EAAO,IAAIpH,GAAMgkB,GAAY,GAAKx4B,GAElCuX,EAAWvX,EAASuX,SAE1BA,EAAQ,OAAalyC,MAAQ6gB,EAEtBA,EAAQm1B,eAEd9D,EAAQ,UAAgBlyC,MAAM2T,IAAK,EAAMkN,EAAQ3F,MAAMK,MAAO,EAAMsF,EAAQ3F,MAAMM,QAInFhb,KAAKy1D,aAAc/jB,EAAQ,cAAqBrxB,GAChDrgB,KAAKy1D,aAAc/jB,EAAQ,eAAsBoiB,EAAmBzzC,SAEpEo0C,GAAcX,EAAoB,EAAG,EAAG,EAAI3B,GAAU,EAAIA,IAE1Dpd,EAASM,gBAAiBye,GAC1B/e,EAASO,OAAQS,EAAM0c,M,yBAIxB,SAAaqB,GAEZ,IAAM/e,EAAW/0C,KAAKozD,UAChBnK,EAAYlU,EAASkU,UAC3BlU,EAASkU,WAAY,EAErB,IAAM,IAAIn7C,EAAI,EAAGA,EAAIukD,GAAYvkD,IAAO,CAEvC,IAAM+lD,EAAQzlD,KAAKiG,KAAMw+C,GAAS/kD,GAAM+kD,GAAS/kD,GAAM+kD,GAAS/kD,EAAI,GAAM+kD,GAAS/kD,EAAI,IAEjF0lD,EAAWN,IAAmBplD,EAAI,GAAMolD,GAAgBllD,QAE9DhO,KAAKi0D,MAAOH,EAAoBhmD,EAAI,EAAGA,EAAG+lD,EAAOL,GAIlDze,EAASkU,UAAYA,I,mBAWtB,SAAO6K,EAAoB4B,EAAOC,EAAQ9B,EAAOL,GAEhD,IAAMoC,EAAuB51D,KAAKqzD,sBAElCrzD,KAAK61D,UACJ/B,EACA8B,EACAF,EACAC,EACA9B,EACA,cACAL,GAEDxzD,KAAK61D,UACJD,EACA9B,EACA6B,EACAA,EACA9B,EACA,eACAL,K,uBAIF,SAAWsC,EAAUC,EAAWL,EAAOC,EAAQK,EAAcxoC,EAAWgmC,GAEvE,IAAMze,EAAW/0C,KAAKozD,UAChB6C,EAAej2D,KAAKszD,cAEP,gBAAd9lC,GAA6C,iBAAdA,GAEnCpa,QAAQ3T,MACP,8DAKF,IAEMy2D,EAAW,IAAIvnB,GAAMgkB,GAAYgD,GAAUM,GAC3CE,EAAeF,EAAavkB,SAE5B0kB,EAASxD,GAAW8C,GAAU,EAC9BW,EAAkB1qB,SAAUqqB,GAAiB5nD,KAAKC,IAAO,EAAI+nD,GAAW,EAAIhoD,KAAKC,GAAT,GACxEioD,EAAcN,EAAeK,EAC7Bp1C,EAAU0qB,SAAUqqB,GAAiB,EAAI5nD,KAAKgC,MARxB,EAQqDkmD,GAAgB/D,GAE5FtxC,EAAUsxC,IAEdn/C,QAAQC,KAAR,wBACC2iD,EADD,yDAEC/0C,EAFD,+CAE+CsxC,KAOhD,IAHA,IAAMgB,EAAU,GACZgD,EAAM,EAEAzoD,EAAI,EAAGA,EAAIykD,KAAgBzkD,EAAI,CAExC,IAAM4B,EAAI5B,EAAIwoD,EACRE,EAASpoD,KAAK8C,KAAOxB,EAAIA,EAAI,GACnC6jD,EAAQjmD,KAAMkpD,GAEJ,GAAL1oD,EAEJyoD,GAAOC,EAEI1oD,EAAImT,IAEfs1C,GAAO,EAAIC,GAMb,IAAM,IAAI1oD,EAAI,EAAGA,EAAIylD,EAAQvlD,OAAQF,IAEpCylD,EAASzlD,GAAMylD,EAASzlD,GAAMyoD,EAI/BJ,EAAY,OAAa32D,MAAQs2D,EAASz1C,QAC1C81C,EAAY,QAAc32D,MAAQyhB,EAClCk1C,EAAY,QAAc32D,MAAQ+zD,EAClC4C,EAAY,YAAkB32D,MAAsB,gBAAdguB,EAEjCgmC,IAEJ2C,EAAY,SAAe32D,MAAQg0D,GAIpC2C,EAAY,OAAa32D,MAAQ62D,EACjCF,EAAY,OAAa32D,MAhfX,EAgf6Bk2D,EAE3C11D,KAAKy1D,aAAcU,EAAY,cAAqBL,EAASz1C,SAC7DrgB,KAAKy1D,aAAcU,EAAY,eAAsBL,EAASz1C,SAE9D,IAAMo2C,EAAa7D,GAAW+C,GAI9BlB,GAAcsB,EAHJ,EAAI3nD,KAAKiB,IAAK,EAAG8iD,GAAW,EAAIsE,IACnB,IAAXd,EAAe,EAAI,EAAIxD,IAAa,EAAIsE,GAAed,EAASrD,EAAoBqD,EAvflF,EADA,EAwf+G,GAE9F,EAAIc,EAAY,EAAIA,GACnD1hB,EAASM,gBAAiB0gB,GAC1BhhB,EAASO,OAAQ4gB,EAAUzD,Q,KAM7B,SAASmC,GAAQv0C,GAEhB,YAAiBhgB,IAAZggB,GAAyBA,EAAQpT,OAASxH,KAExC4a,EAAQnE,WAAazR,IAAkB4V,EAAQnE,WAAaxR,IAAgB2V,EAAQnE,WAAavR,IAIzG,SAAS+nD,KAQR,IANA,IAAMC,EAAa,GACbC,EAAY,GACZC,EAAU,GAEZ6D,EA/gBW,EAihBL5oD,EAAI,EAAGA,EAAIukD,GAAYvkD,IAAO,CAEvC,IAAM6oD,EAAUvoD,KAAK2B,IAAK,EAAG2mD,GAC7B9D,EAAUtlD,KAAMqpD,GAChB,IAAI9C,EAAQ,EAAM8C,EAEb7oD,EAAIwkD,EAERuB,EAAQzB,GAAiBtkD,EAzhBZ,EADA,EA0hBoC,GAEjC,GAALA,IAEX+lD,EAAQ,GAIThB,EAAQvlD,KAAMumD,GAiBd,IAfA,IAAM+C,EAAY,GAAQD,EAAU,GAC9BvnD,GAAQwnD,EAAY,EACpBvnD,EAAM,EAAIunD,EAAY,EACtB96B,EAAM,CAAE1sB,EAAKA,EAAKC,EAAKD,EAAKC,EAAKA,EAAKD,EAAKA,EAAKC,EAAKA,EAAKD,EAAKC,GAQ/D0jB,EAAW,IAAI7Y,aAAc28C,KAC7B54C,EAAK,IAAI/D,aAAc48C,IACvBrnB,EAAY,IAAIv1B,aAAc68C,IAE1BrnB,EAAO,EAAGA,EAVF,EAUoBA,IAAU,CAE/C,IAAMhgC,EAAMggC,EAAO,EAAM,EAAI,EAAI,EAC3B//B,EAAI+/B,EAAO,EAAI,GAAM,EACrBsnB,EAAc,CACnBtnD,EAAGC,EAAG,EACND,EAAI,EAAI,EAAGC,EAAG,EACdD,EAAI,EAAI,EAAGC,EAAI,EAAG,EAClBD,EAAGC,EAAG,EACND,EAAI,EAAI,EAAGC,EAAI,EAAG,EAClBD,EAAGC,EAAI,EAAG,GAEXojB,EAAS5f,IAAK6jD,EAAaH,GAA0BnnB,GACrDzxB,EAAG9K,IAAK2oB,EAAKg7B,GAAoBpnB,GACjC,IAAMunB,EAAO,CAAEvnB,EAAMA,EAAMA,EAAMA,EAAMA,EAAMA,GAC7CD,EAAUt8B,IAAK8jD,EAAMF,EAA2BrnB,GAIjD,IAAM6H,EAAS,IAAI5O,GACnB4O,EAAOxN,aAAc,WAAY,IAAIpD,GAAiB5T,EA5BjC,IA6BrBwkB,EAAOxN,aAAc,KAAM,IAAIpD,GAAiB1oB,EA5BjC,IA6Bfs5B,EAAOxN,aAAc,YAAa,IAAIpD,GAAiB8I,EA5BjC,IA6BtBkjB,EAAWrlD,KAAMiqC,GAEZmf,EA5kBS,GA8kBbA,IAMF,MAAO,CAAE/D,aAAYC,YAAWC,WAIjC,SAASgC,GAAqBF,GAE7B,IAAMb,EAAqB,IAAI/zC,GAAmB,EAAIoyC,GAAU,EAAIA,GAAUwC,GAI9E,OAHAb,EAAmBzzC,QAAQ3E,QAAUhX,GACrCovD,EAAmBzzC,QAAQ9F,KAAO,eAClCu5C,EAAmB3zC,aAAc,EAC1B2zC,EAIR,SAASW,GAAc9mD,EAAQ+B,EAAGC,EAAGoL,EAAOC,GAE3CrN,EAAOyS,SAASjN,IAAKzD,EAAGC,EAAGoL,EAAOC,GAClCrN,EAAOuS,QAAQ/M,IAAKzD,EAAGC,EAAGoL,EAAOC,GAwGlC,SAASu5C,KAER,IAAMqC,EAAY,IAAItjD,GAAS,EAAG,GA4DlC,OA3DuB,IAAI2+C,GAAmB,CAE7C13C,KAAM,0BAENm3B,SAAU,CACT,OAAU,CAAElyC,MAAO,MACnB,UAAa,CAAEA,MAAOo3D,GACtB,cAAiB,CAAEp3D,MAAOgzD,GAAW/nD,KACrC,eAAkB,CAAEjL,MAAOgzD,GAAW/nD,MAGvCunC,aAkGD,+rCAhGCC,eAAc,8LA+Jf,29CA/Je,03BAwCdzU,SAAU17B,EACVs8B,WAAW,EACXC,YAAY,IAQd,SAASi2B,KAwCR,OAtCuB,IAAIrC,GAAmB,CAE7C13C,KAAM,kBAENm3B,SAAU,CACT,OAAU,CAAElyC,MAAO,MACnB,cAAiB,CAAEA,MAAOgzD,GAAW/nD,KACrC,eAAkB,CAAEjL,MAAOgzD,GAAW/nD,MAGvCunC,aAkCD,+rCAhCCC,eAAc,iKA+Ff,29CA/Fe,gSAoBdzU,SAAU17B,EACVs8B,WAAW,EACXC,YAAY,IA6Jd,SAAS64B,GAAiBniB,GAEzB,IAAIoiB,EAAa,IAAItd,QAEjBud,EAAiB,KAwErB,SAAShG,EAAkB1jD,GAE1B,IAAM2S,EAAU3S,EAAMC,OAEtB0S,EAAQgxC,oBAAqB,UAAWD,GAExC,IAAMiG,EAAYF,EAAWrd,IAAKz5B,QAEfhgB,IAAdg3D,IAEJF,EAAWnd,OAAQ35B,GACnBg3C,EAAU52C,WAmBZ,MAAO,CACNq5B,IArGD,SAAcz5B,GAEb,GAAKA,GAAWA,EAAQ9B,YAA+C,IAAlC8B,EAAQtD,sBAAkC,CAE9E,IAAMrB,EAAU2E,EAAQ3E,QAElB47C,EAAkB57C,IAAYlX,IAAoCkX,IAAYjX,GAC9E8yD,EAAc77C,IAAYpX,IAAyBoX,IAAYnX,GAErE,GAAK+yD,GAAiBC,EAAY,CAIjC,GAAKJ,EAAW5I,IAAKluC,GAEpB,OAAO82C,EAAWrd,IAAKz5B,GAAUA,QAIjC,IAAM3F,EAAQ2F,EAAQ3F,MAEtB,GAAO48C,GAAiB58C,GAASA,EAAMM,OAAS,GAASu8C,GAAa78C,GAiC1E,SAAgCA,GAK/B,IAHA,IAAImG,EAAQ,EACN7S,EAAS,EAELF,EAAI,EAAGA,EAAIE,EAAQF,SAERzN,IAAfqa,EAAO5M,IAAoB+S,IAIjC,OAAOA,IAAU7S,EA5CiEwpD,CAAuB98C,GAAY,CAEjH,IAAMy6B,EAAsBJ,EAASK,kBAEb,OAAnBgiB,IAA0BA,EAAiB,IAAIjE,GAAgBpe,IAEpE,IAAMR,EAAe+iB,EAAgBF,EAAeK,oBAAqBp3C,GAAY+2C,EAAeM,YAAar3C,GAOjH,OANA82C,EAAWhkD,IAAKkN,EAASk0B,GAEzBQ,EAASM,gBAAiBF,GAE1B90B,EAAQmxC,iBAAkB,UAAWJ,GAE9B7c,EAAal0B,QAMpB,OAAO,MAUX,OAAOA,GAoDPI,QAfD,WAEC02C,EAAa,IAAItd,QAEO,OAAnBud,IAEJA,EAAe32C,UACf22C,EAAiB,QAapB,SAASO,GAAiBle,GAEzB,IAAMrH,EAAa,GAEnB,SAASwlB,EAAcr9C,GAEtB,QAA4Bla,IAAvB+xC,EAAY73B,GAEhB,OAAO63B,EAAY73B,GAIpB,IAAIsvC,EAEJ,OAAStvC,GAER,IAAK,sBACJsvC,EAAYpQ,EAAGme,aAAc,wBAA2Bne,EAAGme,aAAc,4BAA+Bne,EAAGme,aAAc,8BACzH,MAED,IAAK,iCACJ/N,EAAYpQ,EAAGme,aAAc,mCAAsCne,EAAGme,aAAc,uCAA0Cne,EAAGme,aAAc,yCAC/I,MAED,IAAK,gCACJ/N,EAAYpQ,EAAGme,aAAc,kCAAqCne,EAAGme,aAAc,sCAAyCne,EAAGme,aAAc,wCAC7I,MAED,IAAK,iCACJ/N,EAAYpQ,EAAGme,aAAc,mCAAsCne,EAAGme,aAAc,yCACpF,MAED,QACC/N,EAAYpQ,EAAGme,aAAcr9C,GAM/B,OAFA63B,EAAY73B,GAASsvC,EAEdA,EAIR,MAAO,CAEN0E,IAAK,SAAWh0C,GAEf,OAAgC,OAAzBq9C,EAAcr9C,IAItBi2C,KAAM,SAAW9W,GAEXA,EAAaC,SAEjBie,EAAc,2BAIdA,EAAc,uBACdA,EAAc,qBACdA,EAAc,0BACdA,EAAc,iCACdA,EAAc,4BACdA,EAAc,0BACdA,EAAc,2BACdA,EAAc,2BAIfA,EAAc,4BACdA,EAAc,gCAIf9d,IAAK,SAAWv/B,GAEf,IAAMsvC,EAAY+N,EAAcr9C,GAQhC,OANmB,OAAdsvC,GAEJz2C,QAAQC,KAAM,wBAA0BkH,EAAO,6BAIzCsvC,IAQV,SAASgO,GAAiBpe,EAAI7Q,EAAYrpC,EAAMwqD,GAE/C,IAAMvxB,EAAa,GACbs/B,EAAsB,IAAIje,QAEhC,SAASke,EAAmBrqD,GAE3B,IAAMmc,EAAWnc,EAAMC,OAQvB,IAAM,IAAM4M,KANY,OAAnBsP,EAASrc,OAEbo7B,EAAW9Q,OAAQjO,EAASrc,OAITqc,EAAS+e,WAE5BA,EAAW9Q,OAAQjO,EAAS+e,WAAYruB,IAIzCsP,EAASwnC,oBAAqB,UAAW0G,UAElCv/B,EAAY3O,EAASkO,IAE5B,IAAM/iB,EAAY8iD,EAAoBhe,IAAKjwB,GAEtC7U,IAEJ4zB,EAAW9Q,OAAQ9iB,GACnB8iD,EAAoB9d,OAAQnwB,IAI7BkgC,EAAcwD,wBAAyB1jC,IAEK,IAAvCA,EAASyiC,kCAENziC,EAASijC,kBAMjBvtD,EAAKy4D,OAAOx/B,aAgDb,SAASy/B,EAA0BpuC,GAElC,IAAMygB,EAAU,GAEV4tB,EAAgBruC,EAASrc,MACzB2qD,EAAmBtuC,EAAS+e,WAAW7V,SACzClW,EAAU,EAEd,GAAuB,OAAlBq7C,EAAyB,CAE7B,IAAMtqD,EAAQsqD,EAActqD,MAC5BiP,EAAUq7C,EAAcr7C,QAExB,IAAM,IAAI/O,EAAI,EAAGC,EAAIH,EAAMI,OAAQF,EAAIC,EAAGD,GAAK,EAAI,CAElD,IAAMuE,EAAIzE,EAAOE,EAAI,GACfwE,EAAI1E,EAAOE,EAAI,GACfyE,EAAI3E,EAAOE,EAAI,GAErBw8B,EAAQh9B,KAAM+E,EAAGC,EAAGA,EAAGC,EAAGA,EAAGF,QAIxB,CAEN,IAAMzE,EAAQuqD,EAAiBvqD,MAC/BiP,EAAUs7C,EAAiBt7C,QAE3B,IAAM,IAAI/O,EAAI,EAAGC,EAAMH,EAAMI,OAAS,EAAM,EAAGF,EAAIC,EAAGD,GAAK,EAAI,CAE9D,IAAMuE,EAAIvE,EAAI,EACRwE,EAAIxE,EAAI,EACRyE,EAAIzE,EAAI,EAEdw8B,EAAQh9B,KAAM+E,EAAGC,EAAGA,EAAGC,EAAGA,EAAGF,IAM/B,IAAM2C,EAAY,IAAMsE,GAAUgxB,GAAY,MAAQvC,GAAwBF,IAAyByC,EAAS,GAChHt1B,EAAU6H,QAAUA,EAMpB,IAAMu7C,EAAoBN,EAAoBhe,IAAKjwB,GAE9CuuC,GAAoBxvB,EAAW9Q,OAAQsgC,GAI5CN,EAAoB3kD,IAAK0W,EAAU7U,GAkCpC,MAAO,CAEN8kC,IArID,SAAczwB,EAAQQ,GAErB,OAAmC,IAA9B2O,EAAY3O,EAASkO,MAE1BlO,EAAS2nC,iBAAkB,UAAWuG,GAEtCv/B,EAAY3O,EAASkO,KAAO,EAE5Bx4B,EAAKy4D,OAAOx/B,cANqC3O,GAoIjDlI,OAxHD,SAAiBkI,GAEhB,IAAMoiC,EAAqBpiC,EAAS+e,WAIpC,IAAM,IAAMruB,KAAQ0xC,EAEnBrjB,EAAWjnB,OAAQsqC,EAAoB1xC,GAAQ,OAMhD,IAAMsuB,EAAkBhf,EAASgf,gBAEjC,IAAM,IAAMtuB,KAAQsuB,EAInB,IAFA,IAAMj7B,EAAQi7B,EAAiBtuB,GAErBzM,EAAI,EAAGC,EAAIH,EAAMI,OAAQF,EAAIC,EAAGD,IAEzC86B,EAAWjnB,OAAQ/T,EAAOE,GAAK,QAoGjCuqD,sBAnCD,SAAgCxuC,GAE/B,IAAMyuC,EAAmBR,EAAoBhe,IAAKjwB,GAElD,GAAKyuC,EAAmB,CAEvB,IAAMJ,EAAgBruC,EAASrc,MAER,OAAlB0qD,GAICI,EAAiBz7C,QAAUq7C,EAAcr7C,SAE7Co7C,EAA0BpuC,QAQ5BouC,EAA0BpuC,GAI3B,OAAOiuC,EAAoBhe,IAAKjwB,KAelC,SAAS0uC,GAA4B9e,EAAIrH,EAAY7yC,EAAMm6C,GAE1D,IAEIgU,EAQAzgD,EAAMktC,EAVJR,EAAWD,EAAaC,SA4D9B35C,KAAK2tD,QAxDL,SAAkBnuD,GAEjBkuD,EAAOluD,GAuDRQ,KAAKwtC,SAjDL,SAAmBhuC,GAElByN,EAAOzN,EAAMyN,KACbktC,EAAkB36C,EAAM26C,iBA+CzBn6C,KAAKs1C,OA3CL,SAAiBpM,EAAOroB,GAEvB44B,EAAG+e,aAAc9K,EAAM7sC,EAAO5T,EAAMi8B,EAAQiR,GAE5C56C,EAAKoiB,OAAQd,EAAO6sC,EAAM,IAwC3B1tD,KAAK6tD,gBApCL,SAA0B3kB,EAAOroB,EAAOitC,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAIjE,EAAWkE,EAEf,GAAKpU,EAEJkQ,EAAYpQ,EACZsU,EAAa,6BAOb,GAFAA,EAAa,6BAEM,QAHnBlE,EAAYzX,EAAW0H,IAAK,2BAM3B,YADA1mC,QAAQ3T,MAAO,yIAOjBoqD,EAAWkE,GAAcL,EAAM7sC,EAAO5T,EAAMi8B,EAAQiR,EAAiB2T,GAErEvuD,EAAKoiB,OAAQd,EAAO6sC,EAAMI,KAa5B,SAAS2K,GAAWhf,GAEnB,IAKMnE,EAAS,CACd4D,MAAO,EACPwf,MAAO,EACPC,UAAW,EACX7vC,OAAQ,EACR8vC,MAAO,GA+CR,MAAO,CACNZ,OA1Dc,CACdx/B,WAAY,EACZnb,SAAU,GAyDVi4B,OAAQA,EACRujB,SAAU,KACVC,WAAW,EACXvN,MAfD,WAECjW,EAAO4D,QACP5D,EAAOojB,MAAQ,EACfpjB,EAAOqjB,UAAY,EACnBrjB,EAAOxsB,OAAS,EAChBwsB,EAAOsjB,MAAQ,GAUfj3C,OAlDD,SAAiBd,EAAO6sC,EAAMqL,GAI7B,OAFAzjB,EAAOojB,QAEEhL,GAER,KAAK,EACJpY,EAAOqjB,WAAaI,GAAkBl4C,EAAQ,GAC9C,MAED,KAAK,EACJy0B,EAAOsjB,OAASG,GAAkBl4C,EAAQ,GAC1C,MAED,KAAK,EACJy0B,EAAOsjB,OAASG,GAAkBl4C,EAAQ,GAC1C,MAED,KAAK,EACJy0B,EAAOsjB,OAASG,EAAgBl4C,EAChC,MAED,KAAK,EACJy0B,EAAOxsB,QAAUiwC,EAAgBl4C,EACjC,MAED,QACCzN,QAAQ3T,MAAO,sCAAuCiuD,M,IA4BpDsL,G,kDAEL,aAA6D,MAAhD16C,EAAgD,uDAAzC,KAAMvD,EAAmC,uDAA3B,EAAGC,EAAwB,uDAAf,EAAGiF,EAAY,uDAAJ,EAAI,4BAE5D,cAAO,OAEFvF,MAAQ,CAAE4D,OAAMvD,QAAOC,SAAQiF,SAEpC,EAAKnE,UAAY/W,GACjB,EAAKgX,UAAYhX,GAEjB,EAAKk0D,MAAQp0D,GAEb,EAAK4X,iBAAkB,EACvB,EAAKE,OAAQ,EACb,EAAKC,gBAAkB,EAEvB,EAAKwsB,aAAc,EAfyC,E,UAF7B5tB,IAyBjC,SAAS09C,GAAe7mD,EAAGC,GAE1B,OAAOD,EAAG,GAAMC,EAAG,GAIpB,SAAS6mD,GAAkB9mD,EAAGC,GAE7B,OAAOlE,KAAKgD,IAAKkB,EAAG,IAAQlE,KAAKgD,IAAKiB,EAAG,IAI1C,SAAS+mD,GAAaC,EAAOrkD,GAE5B,IAAIsS,EAAc,EACZ1Z,EAAQoH,EAAU+3B,6BAA+B/3B,EAAUsJ,KAAK1Q,MAAQoH,EAAUpH,MAEnFA,aAAiB+L,UAAY2N,EAAc,IACtC1Z,aAAiBkM,WAAawN,EAAc,MAC5C1Z,aAAiBoM,WAAasN,EAAc,WACjDlU,QAAQ3T,MAAO,mEAAoEmO,GAExFyrD,EAAMllD,aAAcmT,GAIrB,SAASgyC,GAAmB7f,EAAIC,EAAcr8B,GAS7C,IAPA,IAAMk8C,EAAiB,GACjB3pB,EAAkB,IAAI11B,aAAc,GACpCs/C,EAAgB,IAAI3f,QACpBwf,EAAQ,IAAI1zC,GAEZ8zC,EAAiB,GAEb3rD,EAAI,EAAGA,EAAI,EAAGA,IAEvB2rD,EAAgB3rD,GAAM,CAAEA,EAAG,GAuO5B,MAAO,CAEN6T,OArOD,SAAiB0H,EAAQQ,EAAUsQ,EAAU0wB,GAE5C,IAAM6O,EAAmBrwC,EAAOwlB,sBAEhC,IAA+B,IAA1B6K,EAAaC,SAAoB,CAKrC,IAAMggB,EAAuB9vC,EAASgf,gBAAgB9V,SAAS/kB,OAE3D4rD,EAAQJ,EAAc1f,IAAKjwB,GAE/B,QAAexpB,IAAVu5D,GAAuBA,EAAM/4C,QAAU84C,EAAuB,MAEnDt5D,IAAVu5D,GAAsBA,EAAMv5C,QAAQI,UAEzC,IAAMo5C,OAAsDx5D,IAApCwpB,EAASgf,gBAAgBjhB,OAE3CqnB,EAAeplB,EAASgf,gBAAgB9V,SACxC+mC,EAAejwC,EAASgf,gBAAgBjhB,QAAU,GAGlDmyC,GAA2C,IAApBF,EAA6B,EAAI,EAE1D9+C,EAHqB8O,EAAS+e,WAAW7V,SAASlS,MAGvBk5C,EAC3B/+C,EAAS,EAERD,EAAQ2+B,EAAaiV,iBAEzB3zC,EAAS5M,KAAK4B,KAAM+K,EAAQ2+B,EAAaiV,gBACzC5zC,EAAQ2+B,EAAaiV,gBAItB,IAAMt0C,EAAS,IAAIH,aAAca,EAAQC,EAAS,EAAI2+C,GAEhDt5C,EAAU,IAAI24C,GAAoB3+C,EAAQU,EAAOC,EAAQ2+C,GAC/Dt5C,EAAQrE,OAASzV,GACjB8Z,EAAQpT,KAAOlH,GAMf,IAFA,IAAMi0D,EAAwC,EAArBD,EAEfjsD,EAAI,EAAGA,EAAI6rD,EAAsB7rD,IAO1C,IALA,IAAMmsD,EAAchrB,EAAcnhC,GAC5BosD,EAAcJ,EAAchsD,GAE5BiH,EAASgG,EAAQC,EAAS,EAAIlN,EAE1B8d,EAAI,EAAGA,EAAIquC,EAAYp5C,MAAO+K,IAAO,CAE9CytC,EAAM39B,oBAAqBu+B,EAAaruC,IAER,IAA3BquC,EAAY7zB,YAAsBgzB,GAAaC,EAAOY,GAE3D,IAAMjtB,EAASphB,EAAIouC,EAEnB3/C,EAAQtF,EAASi4B,EAAS,GAAMqsB,EAAM3pD,EACtC2K,EAAQtF,EAASi4B,EAAS,GAAMqsB,EAAM1pD,EACtC0K,EAAQtF,EAASi4B,EAAS,GAAMqsB,EAAM56C,EACtCpE,EAAQtF,EAASi4B,EAAS,GAAM,GAEP,IAApB6sB,IAEJR,EAAM39B,oBAAqBw+B,EAAatuC,IAER,IAA3BsuC,EAAY9zB,YAAsBgzB,GAAaC,EAAOa,GAE3D7/C,EAAQtF,EAASi4B,EAAS,GAAMqsB,EAAM3pD,EACtC2K,EAAQtF,EAASi4B,EAAS,GAAMqsB,EAAM1pD,EACtC0K,EAAQtF,EAASi4B,EAAS,GAAMqsB,EAAM56C,EACtCpE,EAAQtF,EAASi4B,EAAS,GAAM,GAQnC4sB,EAAQ,CACP/4C,MAAO84C,EACPt5C,QAASA,EACT4I,KAAM,IAAI3V,GAASyH,EAAOC,IAG3Bw+C,EAAcrmD,IAAK0W,EAAU+vC,GAQ9B,IAFA,IAAIO,EAAqB,EAEfrsD,EAAI,EAAGA,EAAI4rD,EAAiB1rD,OAAQF,IAE7CqsD,GAAsBT,EAAkB5rD,GAIzC,IAAMssD,EAAqBvwC,EAASif,qBAAuB,EAAI,EAAIqxB,EAEnEtP,EAAQwP,cAAcC,SAAU7gB,EAAI,2BAA4B2gB,GAChEvP,EAAQwP,cAAcC,SAAU7gB,EAAI,wBAAyBigB,GAE7D7O,EAAQwP,cAAcC,SAAU7gB,EAAI,sBAAuBmgB,EAAMv5C,QAAShD,GAC1EwtC,EAAQwP,cAAcC,SAAU7gB,EAAI,0BAA2BmgB,EAAM3wC,UAG/D,CAKN,IAAMjb,OAA8B3N,IAArBq5D,EAAiC,EAAIA,EAAiB1rD,OAEjEusD,EAAahB,EAAgB1vC,EAASkO,IAE1C,QAAoB13B,IAAfk6D,GAA4BA,EAAWvsD,SAAWA,EAAS,CAI/DusD,EAAa,GAEb,IAAM,IAAIzsD,EAAI,EAAGA,EAAIE,EAAQF,IAE5BysD,EAAYzsD,GAAM,CAAEA,EAAG,GAIxByrD,EAAgB1vC,EAASkO,IAAOwiC,EAMjC,IAAM,IAAIzsD,EAAI,EAAGA,EAAIE,EAAQF,IAAO,CAEnC,IAAM+hC,EAAY0qB,EAAYzsD,GAE9B+hC,EAAW,GAAM/hC,EACjB+hC,EAAW,GAAM6pB,EAAkB5rD,GAIpCysD,EAAWC,KAAMrB,IAEjB,IAAM,IAAIrrD,EAAI,EAAGA,EAAI,EAAGA,IAElBA,EAAIE,GAAUusD,EAAYzsD,GAAK,IAEnC2rD,EAAgB3rD,GAAK,GAAMysD,EAAYzsD,GAAK,GAC5C2rD,EAAgB3rD,GAAK,GAAMysD,EAAYzsD,GAAK,KAI5C2rD,EAAgB3rD,GAAK,GAAM0U,OAAOi4C,iBAClChB,EAAgB3rD,GAAK,GAAM,GAM7B2rD,EAAee,KAAMtB,IAOrB,IALA,IAAMjqB,EAAeplB,EAASgf,gBAAgB9V,SACxC+mC,EAAejwC,EAASgf,gBAAgBjhB,OAE1CuyC,EAAqB,EAEfrsD,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM+hC,EAAY4pB,EAAgB3rD,GAC5BN,EAAQqiC,EAAW,GACnBrwC,EAAQqwC,EAAW,GAEpBriC,IAAUgV,OAAOi4C,kBAAoBj7D,GAEpCyvC,GAAgBplB,EAASgiB,aAAc,cAAgB/9B,KAAQmhC,EAAczhC,IAEjFqc,EAASkgB,aAAc,cAAgBj8B,EAAGmhC,EAAczhC,IAIpDssD,GAAgBjwC,EAASgiB,aAAc,cAAgB/9B,KAAQgsD,EAActsD,IAEjFqc,EAASkgB,aAAc,cAAgBj8B,EAAGgsD,EAActsD,IAIzDoiC,EAAiB9hC,GAAMtO,EACvB26D,GAAsB36D,IAIjByvC,IAA+D,IAA/CplB,EAAS6wC,aAAc,cAAgB5sD,IAE3D+b,EAASw/B,gBAAiB,cAAgBv7C,GAItCgsD,IAA+D,IAA/CjwC,EAAS6wC,aAAc,cAAgB5sD,IAE3D+b,EAASw/B,gBAAiB,cAAgBv7C,GAI3C8hC,EAAiB9hC,GAAM,GASzB,IAAMssD,EAAqBvwC,EAASif,qBAAuB,EAAI,EAAIqxB,EAEnEtP,EAAQwP,cAAcC,SAAU7gB,EAAI,2BAA4B2gB,GAChEvP,EAAQwP,cAAcC,SAAU7gB,EAAI,wBAAyB7J,MAchE,SAAS+qB,GAAclhB,EAAIjhB,EAAYoQ,EAAYrpC,GAElD,IAAIq7D,EAAY,IAAI/gB,QA+CpB,SAASghB,EAAwBntD,GAEhC,IAAMotD,EAAgBptD,EAAMC,OAE5BmtD,EAAczJ,oBAAqB,UAAWwJ,GAE9CjyB,EAAW9Q,OAAQgjC,EAAc1hC,gBAEI,OAAhC0hC,EAAczhC,eAAyBuP,EAAW9Q,OAAQgjC,EAAczhC,eAI9E,MAAO,CAEN1X,OA3DD,SAAiB0H,GAEhB,IAAM6vB,EAAQ35C,EAAK+1C,OAAO4D,MAEpBrvB,EAAWR,EAAOQ,SAClBkxC,EAAiBviC,EAAWshB,IAAKzwB,EAAQQ,GA8B/C,OA1BK+wC,EAAU9gB,IAAKihB,KAAqB7hB,IAExC1gB,EAAW7W,OAAQo5C,GAEnBH,EAAUznD,IAAK4nD,EAAgB7hB,IAI3B7vB,EAAO8P,mBAE2D,IAAjE9P,EAAO2xC,iBAAkB,UAAWH,IAExCxxC,EAAOmoC,iBAAkB,UAAWqJ,GAIrCjyB,EAAWjnB,OAAQ0H,EAAO+P,eAAgB,OAEZ,OAAzB/P,EAAOgQ,eAEXuP,EAAWjnB,OAAQ0H,EAAOgQ,cAAe,QAMpC0hC,GAyBPt6C,QArBD,WAECm6C,EAAY,IAAI/gB,UAnUlBmf,GAAmB1jD,UAAU2lD,sBAAuB,E,IA4V9CC,G,kDAEL,aAA6D,MAAhD58C,EAAgD,uDAAzC,KAAMvD,EAAmC,uDAA3B,EAAGC,EAAwB,uDAAf,EAAGiF,EAAY,uDAAJ,EAAI,4BAU5D,cAAO,OAEFvF,MAAQ,CAAE4D,OAAMvD,QAAOC,SAAQiF,SAEpC,EAAKnE,UAAY/W,GACjB,EAAKgX,UAAYhX,GAEjB,EAAKk0D,MAAQp0D,GAEb,EAAK4X,iBAAkB,EACvB,EAAKE,OAAQ,EACb,EAAKC,gBAAkB,EAEvB,EAAKwsB,aAAc,EAvByC,E,UAFlC5tB,IA+B5B0/C,GAAc5lD,UAAU6lD,iBAAkB,EA6C1C,IAAMC,GAAe,IAAI5/C,GACnB6/C,GAAsB,IAAIrC,GAC1BsC,GAAiB,IAAIJ,GACrBK,GAAmB,IAAIhmB,GAMvBimB,GAAgB,GAChBC,GAAgB,GAIhBC,GAAY,IAAIxhD,aAAc,IAC9ByhD,GAAY,IAAIzhD,aAAc,GAC9B0hD,GAAY,IAAI1hD,aAAc,GAIpC,SAAS2hD,GAASjuD,EAAOkuD,EAASC,GAEjC,IAAMC,EAAYpuD,EAAO,GAEzB,GAAKouD,GAAa,GAAKA,EAAY,EAAI,OAAOpuD,EAI9C,IAAM2B,EAAIusD,EAAUC,EAChBpjD,EAAI6iD,GAAejsD,GASvB,QAPWlP,IAANsY,IAEJA,EAAI,IAAIuB,aAAc3K,GACtBisD,GAAejsD,GAAMoJ,GAIL,IAAZmjD,EAAgB,CAEpBE,EAAU9iC,QAASvgB,EAAG,GAEtB,IAAM,IAAI7K,EAAI,EAAGiH,EAAS,EAAGjH,IAAMguD,IAAYhuD,EAE9CiH,GAAUgnD,EACVnuD,EAAOE,GAAIorB,QAASvgB,EAAG5D,GAMzB,OAAO4D,EAIR,SAASsjD,GAAa5pD,EAAGC,GAExB,GAAKD,EAAErE,SAAWsE,EAAEtE,OAAS,OAAO,EAEpC,IAAM,IAAIF,EAAI,EAAGC,EAAIsE,EAAErE,OAAQF,EAAIC,EAAGD,IAErC,GAAKuE,EAAGvE,KAAQwE,EAAGxE,GAAM,OAAO,EAIjC,OAAO,EAIR,SAASouD,GAAW7pD,EAAGC,GAEtB,IAAM,IAAIxE,EAAI,EAAGC,EAAIuE,EAAEtE,OAAQF,EAAIC,EAAGD,IAErCuE,EAAGvE,GAAMwE,EAAGxE,GAQd,SAASquD,GAAe9+C,EAAU9N,GAEjC,IAAIoJ,EAAI8iD,GAAelsD,QAEZlP,IAANsY,IAEJA,EAAI,IAAIqB,WAAYzK,GACpBksD,GAAelsD,GAAMoJ,GAItB,IAAM,IAAI7K,EAAI,EAAGA,IAAMyB,IAAMzB,EAE5B6K,EAAG7K,GAAMuP,EAAS++C,sBAInB,OAAOzjD,EAWR,SAAS0jD,GAAa5iB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEdA,EAAO,KAAQ7mB,IAEpB+lC,EAAG6iB,UAAWt8D,KAAKu8D,KAAM7oD,GAEzB6mB,EAAO,GAAM7mB,GAMd,SAAS8oD,GAAa/iB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEnB,QAAal6B,IAARqT,EAAEhE,EAED6qB,EAAO,KAAQ7mB,EAAEhE,GAAK6qB,EAAO,KAAQ7mB,EAAE/D,IAE3C8pC,EAAGgjB,UAAWz8D,KAAKu8D,KAAM7oD,EAAEhE,EAAGgE,EAAE/D,GAEhC4qB,EAAO,GAAM7mB,EAAEhE,EACf6qB,EAAO,GAAM7mB,EAAE/D,OAIV,CAEN,GAAKssD,GAAa1hC,EAAO7mB,GAAM,OAE/B+lC,EAAGijB,WAAY18D,KAAKu8D,KAAM7oD,GAE1BwoD,GAAW3hC,EAAO7mB,IAMpB,SAASipD,GAAaljB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEnB,QAAal6B,IAARqT,EAAEhE,EAED6qB,EAAO,KAAQ7mB,EAAEhE,GAAK6qB,EAAO,KAAQ7mB,EAAE/D,GAAK4qB,EAAO,KAAQ7mB,EAAE+K,IAEjEg7B,EAAGmjB,UAAW58D,KAAKu8D,KAAM7oD,EAAEhE,EAAGgE,EAAE/D,EAAG+D,EAAE+K,GAErC8b,EAAO,GAAM7mB,EAAEhE,EACf6qB,EAAO,GAAM7mB,EAAE/D,EACf4qB,EAAO,GAAM7mB,EAAE+K,QAIV,QAAape,IAARqT,EAAEiF,EAER4hB,EAAO,KAAQ7mB,EAAEiF,GAAK4hB,EAAO,KAAQ7mB,EAAEqE,GAAKwiB,EAAO,KAAQ7mB,EAAEpB,IAEjEmnC,EAAGmjB,UAAW58D,KAAKu8D,KAAM7oD,EAAEiF,EAAGjF,EAAEqE,EAAGrE,EAAEpB,GAErCioB,EAAO,GAAM7mB,EAAEiF,EACf4hB,EAAO,GAAM7mB,EAAEqE,EACfwiB,EAAO,GAAM7mB,EAAEpB,OAIV,CAEN,GAAK2pD,GAAa1hC,EAAO7mB,GAAM,OAE/B+lC,EAAGojB,WAAY78D,KAAKu8D,KAAM7oD,GAE1BwoD,GAAW3hC,EAAO7mB,IAMpB,SAASopD,GAAarjB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEnB,QAAal6B,IAARqT,EAAEhE,EAED6qB,EAAO,KAAQ7mB,EAAEhE,GAAK6qB,EAAO,KAAQ7mB,EAAE/D,GAAK4qB,EAAO,KAAQ7mB,EAAE+K,GAAK8b,EAAO,KAAQ7mB,EAAEC,IAEvF8lC,EAAGsjB,UAAW/8D,KAAKu8D,KAAM7oD,EAAEhE,EAAGgE,EAAE/D,EAAG+D,EAAE+K,EAAG/K,EAAEC,GAE1C4mB,EAAO,GAAM7mB,EAAEhE,EACf6qB,EAAO,GAAM7mB,EAAE/D,EACf4qB,EAAO,GAAM7mB,EAAE+K,EACf8b,EAAO,GAAM7mB,EAAEC,OAIV,CAEN,GAAKsoD,GAAa1hC,EAAO7mB,GAAM,OAE/B+lC,EAAGujB,WAAYh9D,KAAKu8D,KAAM7oD,GAE1BwoD,GAAW3hC,EAAO7mB,IAQpB,SAASupD,GAAYxjB,EAAI/lC,GAExB,IAAM6mB,EAAQv6B,KAAKu6B,MACbvmB,EAAWN,EAAEM,SAEnB,QAAkB3T,IAAb2T,EAAyB,CAE7B,GAAKioD,GAAa1hC,EAAO7mB,GAAM,OAE/B+lC,EAAGyjB,iBAAkBl9D,KAAKu8D,MAAM,EAAO7oD,GAEvCwoD,GAAW3hC,EAAO7mB,OAEZ,CAEN,GAAKuoD,GAAa1hC,EAAOvmB,GAAa,OAEtC4nD,GAAUzoD,IAAKa,GAEfylC,EAAGyjB,iBAAkBl9D,KAAKu8D,MAAM,EAAOX,IAEvCM,GAAW3hC,EAAOvmB,IAMpB,SAASmpD,GAAY1jB,EAAI/lC,GAExB,IAAM6mB,EAAQv6B,KAAKu6B,MACbvmB,EAAWN,EAAEM,SAEnB,QAAkB3T,IAAb2T,EAAyB,CAE7B,GAAKioD,GAAa1hC,EAAO7mB,GAAM,OAE/B+lC,EAAG2jB,iBAAkBp9D,KAAKu8D,MAAM,EAAO7oD,GAEvCwoD,GAAW3hC,EAAO7mB,OAEZ,CAEN,GAAKuoD,GAAa1hC,EAAOvmB,GAAa,OAEtC2nD,GAAUxoD,IAAKa,GAEfylC,EAAG2jB,iBAAkBp9D,KAAKu8D,MAAM,EAAOZ,IAEvCO,GAAW3hC,EAAOvmB,IAMpB,SAASqpD,GAAY5jB,EAAI/lC,GAExB,IAAM6mB,EAAQv6B,KAAKu6B,MACbvmB,EAAWN,EAAEM,SAEnB,QAAkB3T,IAAb2T,EAAyB,CAE7B,GAAKioD,GAAa1hC,EAAO7mB,GAAM,OAE/B+lC,EAAG6jB,iBAAkBt9D,KAAKu8D,MAAM,EAAO7oD,GAEvCwoD,GAAW3hC,EAAO7mB,OAEZ,CAEN,GAAKuoD,GAAa1hC,EAAOvmB,GAAa,OAEtC0nD,GAAUvoD,IAAKa,GAEfylC,EAAG6jB,iBAAkBt9D,KAAKu8D,MAAM,EAAOb,IAEvCQ,GAAW3hC,EAAOvmB,IAQpB,SAASupD,GAAa9jB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEdA,EAAO,KAAQ7mB,IAEpB+lC,EAAG+jB,UAAWx9D,KAAKu8D,KAAM7oD,GAEzB6mB,EAAO,GAAM7mB,GAMd,SAAS+pD,GAAahkB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEd0hC,GAAa1hC,EAAO7mB,KAEzB+lC,EAAGikB,WAAY19D,KAAKu8D,KAAM7oD,GAE1BwoD,GAAW3hC,EAAO7mB,IAInB,SAASiqD,GAAalkB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEd0hC,GAAa1hC,EAAO7mB,KAEzB+lC,EAAGmkB,WAAY59D,KAAKu8D,KAAM7oD,GAE1BwoD,GAAW3hC,EAAO7mB,IAInB,SAASmqD,GAAapkB,EAAI/lC,GAEzB,IAAM6mB,EAAQv6B,KAAKu6B,MAEd0hC,GAAa1hC,EAAO7mB,KAEzB+lC,EAAGqkB,WAAY99D,KAAKu8D,KAAM7oD,GAE1BwoD,GAAW3hC,EAAO7mB,IAMnB,SAASqqD,GAActkB,EAAI/lC,GAE1B,IAAM6mB,EAAQv6B,KAAKu6B,MAEdA,EAAO,KAAQ7mB,IAEpB+lC,EAAGukB,WAAYh+D,KAAKu8D,KAAM7oD,GAE1B6mB,EAAO,GAAM7mB,GAMd,SAASuqD,GAAcxkB,EAAI/lC,GAE1B,IAAM6mB,EAAQv6B,KAAKu6B,MAEd0hC,GAAa1hC,EAAO7mB,KAEzB+lC,EAAGykB,YAAal+D,KAAKu8D,KAAM7oD,GAE3BwoD,GAAW3hC,EAAO7mB,IAInB,SAASyqD,GAAc1kB,EAAI/lC,GAE1B,IAAM6mB,EAAQv6B,KAAKu6B,MAEd0hC,GAAa1hC,EAAO7mB,KAEzB+lC,EAAG2kB,YAAap+D,KAAKu8D,KAAM7oD,GAE3BwoD,GAAW3hC,EAAO7mB,IAInB,SAAS2qD,GAAc5kB,EAAI/lC,GAE1B,IAAM6mB,EAAQv6B,KAAKu6B,MAEd0hC,GAAa1hC,EAAO7mB,KAEzB+lC,EAAG6kB,YAAat+D,KAAKu8D,KAAM7oD,GAE3BwoD,GAAW3hC,EAAO7mB,IAOnB,SAAS6qD,GAAY9kB,EAAI/lC,EAAG2J,GAE3B,IAAMkd,EAAQv6B,KAAKu6B,MACbikC,EAAOnhD,EAAS++C,sBAEjB7hC,EAAO,KAAQikC,IAEnB/kB,EAAG+jB,UAAWx9D,KAAKu8D,KAAMiC,GACzBjkC,EAAO,GAAMikC,GAIdnhD,EAASohD,iBAAkB/qD,GAAK0nD,GAAcoD,GAI/C,SAASE,GAAcjlB,EAAI/lC,EAAG2J,GAE7B,IAAMkd,EAAQv6B,KAAKu6B,MACbikC,EAAOnhD,EAAS++C,sBAEjB7hC,EAAO,KAAQikC,IAEnB/kB,EAAG+jB,UAAWx9D,KAAKu8D,KAAMiC,GACzBjkC,EAAO,GAAMikC,GAIdnhD,EAASshD,aAAcjrD,GAAK4nD,GAAgBkD,GAI7C,SAASI,GAAYnlB,EAAI/lC,EAAG2J,GAE3B,IAAMkd,EAAQv6B,KAAKu6B,MACbikC,EAAOnhD,EAAS++C,sBAEjB7hC,EAAO,KAAQikC,IAEnB/kB,EAAG+jB,UAAWx9D,KAAKu8D,KAAMiC,GACzBjkC,EAAO,GAAMikC,GAIdnhD,EAASwhD,mBAAoBnrD,GAAK6nD,GAAkBiD,GAIrD,SAASM,GAAmBrlB,EAAI/lC,EAAG2J,GAElC,IAAMkd,EAAQv6B,KAAKu6B,MACbikC,EAAOnhD,EAAS++C,sBAEjB7hC,EAAO,KAAQikC,IAEnB/kB,EAAG+jB,UAAWx9D,KAAKu8D,KAAMiC,GACzBjkC,EAAO,GAAMikC,GAIdnhD,EAAS0hD,kBAAmBrrD,GAAK2nD,GAAqBmD,GA4DvD,SAASQ,GAAkBvlB,EAAI/lC,GAE9B+lC,EAAGwlB,WAAYj/D,KAAKu8D,KAAM7oD,GAM3B,SAASwrD,GAAkBzlB,EAAI/lC,GAE9B,IAAM4K,EAAOu9C,GAASnoD,EAAG1T,KAAKipB,KAAM,GAEpCwwB,EAAGijB,WAAY18D,KAAKu8D,KAAMj+C,GAI3B,SAAS6gD,GAAkB1lB,EAAI/lC,GAE9B,IAAM4K,EAAOu9C,GAASnoD,EAAG1T,KAAKipB,KAAM,GAEpCwwB,EAAGojB,WAAY78D,KAAKu8D,KAAMj+C,GAI3B,SAAS8gD,GAAkB3lB,EAAI/lC,GAE9B,IAAM4K,EAAOu9C,GAASnoD,EAAG1T,KAAKipB,KAAM,GAEpCwwB,EAAGujB,WAAYh9D,KAAKu8D,KAAMj+C,GAM3B,SAAS+gD,GAAiB5lB,EAAI/lC,GAE7B,IAAM4K,EAAOu9C,GAASnoD,EAAG1T,KAAKipB,KAAM,GAEpCwwB,EAAGyjB,iBAAkBl9D,KAAKu8D,MAAM,EAAOj+C,GAIxC,SAASghD,GAAiB7lB,EAAI/lC,GAE7B,IAAM4K,EAAOu9C,GAASnoD,EAAG1T,KAAKipB,KAAM,GAEpCwwB,EAAG2jB,iBAAkBp9D,KAAKu8D,MAAM,EAAOj+C,GAIxC,SAASihD,GAAiB9lB,EAAI/lC,GAE7B,IAAM4K,EAAOu9C,GAASnoD,EAAG1T,KAAKipB,KAAM,IAEpCwwB,EAAG6jB,iBAAkBt9D,KAAKu8D,MAAM,EAAOj+C,GAMxC,SAASkhD,GAAkB/lB,EAAI/lC,GAE9B+lC,EAAGgmB,WAAYz/D,KAAKu8D,KAAM7oD,GAM3B,SAASgsD,GAAkBjmB,EAAI/lC,GAE9B+lC,EAAGikB,WAAY19D,KAAKu8D,KAAM7oD,GAI3B,SAASisD,GAAkBlmB,EAAI/lC,GAE9B+lC,EAAGmkB,WAAY59D,KAAKu8D,KAAM7oD,GAI3B,SAASksD,GAAkBnmB,EAAI/lC,GAE9B+lC,EAAGqkB,WAAY99D,KAAKu8D,KAAM7oD,GAM3B,SAASmsD,GAAmBpmB,EAAI/lC,GAE/B+lC,EAAGqmB,YAAa9/D,KAAKu8D,KAAM7oD,GAM5B,SAASqsD,GAAmBtmB,EAAI/lC,GAE/B+lC,EAAGykB,YAAal+D,KAAKu8D,KAAM7oD,GAI5B,SAASssD,GAAmBvmB,EAAI/lC,GAE/B+lC,EAAG2kB,YAAap+D,KAAKu8D,KAAM7oD,GAI5B,SAASusD,GAAmBxmB,EAAI/lC,GAE/B+lC,EAAG6kB,YAAat+D,KAAKu8D,KAAM7oD,GAO5B,SAASwsD,GAAiBzmB,EAAI/lC,EAAG2J,GAEhC,IAAM9N,EAAImE,EAAE1F,OAENmyD,EAAQhE,GAAe9+C,EAAU9N,GAEvCkqC,EAAGgmB,WAAYz/D,KAAKu8D,KAAM4D,GAE1B,IAAM,IAAIryD,EAAI,EAAGA,IAAMyB,IAAMzB,EAE5BuP,EAASohD,iBAAkB/qD,EAAG5F,IAAOstD,GAAc+E,EAAOryD,IAM5D,SAASsyD,GAAiB3mB,EAAI/lC,EAAG2J,GAEhC,IAAM9N,EAAImE,EAAE1F,OAENmyD,EAAQhE,GAAe9+C,EAAU9N,GAEvCkqC,EAAGgmB,WAAYz/D,KAAKu8D,KAAM4D,GAE1B,IAAM,IAAIryD,EAAI,EAAGA,IAAMyB,IAAMzB,EAE5BuP,EAASwhD,mBAAoBnrD,EAAG5F,IAAOytD,GAAkB4E,EAAOryD,IAkDlE,SAASuyD,GAAetoC,EAAIuoC,EAAY/D,GAEvCv8D,KAAK+3B,GAAKA,EACV/3B,KAAKu8D,KAAOA,EACZv8D,KAAKu6B,MAAQ,GACbv6B,KAAKs6D,SA5PN,SAA4BrtD,GAE3B,OAASA,GAER,KAAK,KAAQ,OAAOovD,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GAEpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GAEjC,KAAK,KAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOG,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,IA+MOyB,CAAmBD,EAAWrzD,MAM/C,SAASuzD,GAAkBzoC,EAAIuoC,EAAY/D,GAE1Cv8D,KAAK+3B,GAAKA,EACV/3B,KAAKu8D,KAAOA,EACZv8D,KAAKu6B,MAAQ,GACbv6B,KAAKipB,KAAOq3C,EAAWr3C,KACvBjpB,KAAKs6D,SA3DN,SAA6BrtD,GAE5B,OAASA,GAER,KAAK,KAAQ,OAAO+xD,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GAEjC,KAAK,KAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,IAyBOK,CAAoBH,EAAWrzD,MAoBhD,SAASyzD,GAAmB3oC,GAE3B/3B,KAAK+3B,GAAKA,EAEV/3B,KAAK2gE,IAAM,GACX3gE,KAAKohC,IAAM,GAnBZo/B,GAAiBlrD,UAAUsrD,YAAc,SAAWtiD,GAEnD,IAAMic,EAAQv6B,KAAKu6B,MAEdjc,aAAgBpE,cAAgBqgB,EAAMvsB,SAAWsQ,EAAKtQ,SAE1DhO,KAAKu6B,MAAQ,IAAIrgB,aAAcoE,EAAKtQ,SAIrCkuD,GAAW3hC,EAAOjc,IAanBoiD,GAAkBprD,UAAUglD,SAAW,SAAW7gB,EAAIj6C,EAAO6d,GAI5D,IAFA,IAAMsjD,EAAM3gE,KAAK2gE,IAEP7yD,EAAI,EAAGyB,EAAIoxD,EAAI3yD,OAAQF,IAAMyB,IAAMzB,EAAI,CAEhD,IAAMua,EAAIs4C,EAAK7yD,GACfua,EAAEiyC,SAAU7gB,EAAIj6C,EAAO6oB,EAAE0P,IAAM1a,KAUjC,IAAMwjD,GAAa,sBAWnB,SAASC,GAAYC,EAAWC,GAE/BD,EAAUJ,IAAIrzD,KAAM0zD,GACpBD,EAAU3/B,IAAK4/B,EAAcjpC,IAAOipC,EAIrC,SAASC,GAAcX,EAAY/D,EAAMwE,GAExC,IAAMG,EAAOZ,EAAW/lD,KACvB4mD,EAAaD,EAAKlzD,OAKnB,IAFA6yD,GAAWO,UAAY,IAER,CAEd,IAAMC,EAAQR,GAAW77B,KAAMk8B,GAC9BI,EAAWT,GAAWO,UAEnBrpC,EAAKspC,EAAO,GACVE,EAA2B,MAAfF,EAAO,GACxBG,EAAYH,EAAO,GAIpB,GAFKE,IAAYxpC,GAAU,QAER13B,IAAdmhE,GAAyC,MAAdA,GAAqBF,EAAW,IAAMH,EAAa,CAIlFL,GAAYC,OAAyB1gE,IAAdmhE,EACtB,IAAInB,GAAetoC,EAAIuoC,EAAY/D,GACnC,IAAIiE,GAAkBzoC,EAAIuoC,EAAY/D,IAEvC,MAMA,IACIkF,EADQV,EAAU3/B,IACNrJ,QAEF13B,IAATohE,GAGJX,GAAYC,EADZU,EAAO,IAAIf,GAAmB3oC,IAK/BgpC,EAAYU,GAUf,SAASC,GAAejoB,EAAIoR,GAE3B7qD,KAAK2gE,IAAM,GACX3gE,KAAKohC,IAAM,GAIX,IAFA,IAAM7xB,EAAIkqC,EAAGkoB,oBAAqB9W,EAAS,OAEjC/8C,EAAI,EAAGA,EAAIyB,IAAMzB,EAAI,CAE9B,IAAMvO,EAAOk6C,EAAGmoB,iBAAkB/W,EAAS/8C,GAG3CmzD,GAAc1hE,EAFNk6C,EAAGooB,mBAAoBhX,EAAStrD,EAAKgb,MAEnBva,OA0D5B,SAAS8hE,GAAaroB,EAAIxsC,EAAM63B,GAE/B,IAAM+Q,EAAS4D,EAAGsoB,aAAc90D,GAKhC,OAHAwsC,EAAGuoB,aAAcnsB,EAAQ/Q,GACzB2U,EAAGwoB,cAAepsB,GAEXA,EA3DR6rB,GAAcpsD,UAAUglD,SAAW,SAAW7gB,EAAIl/B,EAAM/a,EAAO6d,GAE9D,IAAMgL,EAAIroB,KAAKohC,IAAK7mB,QAETla,IAANgoB,GAAkBA,EAAEiyC,SAAU7gB,EAAIj6C,EAAO6d,IAI/CqkD,GAAcpsD,UAAU4sD,YAAc,SAAWzoB,EAAIpwB,EAAQ9O,GAE5D,IAAM7G,EAAI2V,EAAQ9O,QAEPla,IAANqT,GAAkB1T,KAAKs6D,SAAU7gB,EAAIl/B,EAAM7G,IAOjDguD,GAAcS,OAAS,SAAW1oB,EAAIknB,EAAKnmC,EAAQnd,GAElD,IAAM,IAAIvP,EAAI,EAAGyB,EAAIoxD,EAAI3yD,OAAQF,IAAMyB,IAAMzB,EAAI,CAEhD,IAAMua,EAAIs4C,EAAK7yD,GACd4F,EAAI8mB,EAAQnS,EAAE0P,KAEQ,IAAlBrkB,EAAE01B,aAGN/gB,EAAEiyC,SAAU7gB,EAAI/lC,EAAElU,MAAO6d,KAQ5BqkD,GAAcU,aAAe,SAAWzB,EAAKnmC,GAI5C,IAFA,IAAM7hB,EAAI,GAEA7K,EAAI,EAAGyB,EAAIoxD,EAAI3yD,OAAQF,IAAMyB,IAAMzB,EAAI,CAEhD,IAAMua,EAAIs4C,EAAK7yD,GACVua,EAAE0P,MAAMyC,GAAS7hB,EAAErL,KAAM+a,GAI/B,OAAO1P,GAeR,IAAI0pD,GAAiB,EAgBrB,SAASC,GAAuBpmD,GAE/B,OAASA,GAER,KAAKzR,GACJ,MAAO,CAAE,SAAU,aACpB,KAAKC,GACJ,MAAO,CAAE,OAAQ,aAClB,KAAKE,GACJ,MAAO,CAAE,OAAQ,aAClB,KAAKE,GACJ,MAAO,CAAE,OAAQ,kBAClB,KAAKC,GACJ,MAAO,CAAE,OAAQ,mBAClB,KAAKC,GACJ,MAAO,CAAE,OAAQ,oBAClB,KAAKL,GACJ,MAAO,CAAE,QAAS,oCACnB,KAAKE,GACJ,MAAO,CAAE,SAAU,aACpB,QAEC,OADAuI,QAAQC,KAAM,4CAA6C6I,GACpD,CAAE,SAAU,cAMtB,SAASqmD,GAAiB9oB,EAAI5D,EAAQ5oC,GAErC,IAAMu1D,EAAS/oB,EAAGgpB,mBAAoB5sB,EAAQ,OACxC6sB,EAASjpB,EAAGkpB,iBAAkB9sB,GAAS+sB,OAE7C,OAAKJ,GAAqB,KAAXE,EAAuB,GAK/Bz1D,EAAK4B,cAAgB,OAAS6zD,EAAS,OApD/C,SAAyB59B,GAIxB,IAFA,IAAM8zB,EAAQ9zB,EAAO+9B,MAAO,MAElB/0D,EAAI,EAAGA,EAAI8qD,EAAM5qD,OAAQF,IAElC8qD,EAAO9qD,GAAQA,EAAI,EAAM,KAAO8qD,EAAO9qD,GAIxC,OAAO8qD,EAAMkK,KAAM,MA0CoCC,CAAgBtpB,EAAGupB,gBAAiBntB,IAI5F,SAASotB,GAA0BC,EAAchnD,GAEhD,IAAM+oB,EAAaq9B,GAAuBpmD,GAC1C,MAAO,QAAUgnD,EAAe,2BAA6Bj+B,EAAY,GAAM,WAAaA,EAAY,GAAM,MAI/G,SAASk+B,GAA0BD,EAAchnD,GAEhD,IAAM+oB,EAAaq9B,GAAuBpmD,GAC1C,MAAO,QAAUgnD,EAAe,mCAAqCj+B,EAAY,GAAMA,EAAY,GAAM,MAI1G,SAASm+B,GAAwBF,EAAc1Z,GAE9C,IAAI6Z,EAEJ,OAAS7Z,GAER,KAAKxlD,GACJq/D,EAAkB,SAClB,MAED,KAAKp/D,GACJo/D,EAAkB,WAClB,MAED,KAAKn/D,GACJm/D,EAAkB,kBAClB,MAED,KAAKl/D,GACJk/D,EAAkB,aAClB,MAED,KAAKj/D,GACJi/D,EAAkB,SAClB,MAED,QACCjwD,QAAQC,KAAM,+CAAgDm2C,GAC9D6Z,EAAkB,SAIpB,MAAO,QAAUH,EAAe,2BAA6BG,EAAkB,0BAiEhF,SAASC,GAAiBx+B,GAEzB,MAAkB,KAAXA,EAIR,SAASy+B,GAAkBz+B,EAAQjL,GAElC,OAAOiL,EACL0+B,QAAS,kBAAmB3pC,EAAW4pC,cACvCD,QAAS,mBAAoB3pC,EAAW6pC,eACxCF,QAAS,wBAAyB3pC,EAAW8pC,mBAC7CH,QAAS,oBAAqB3pC,EAAW+pC,gBACzCJ,QAAS,mBAAoB3pC,EAAWgqC,eACxCL,QAAS,yBAA0B3pC,EAAWiqC,oBAC9CN,QAAS,0BAA2B3pC,EAAWkqC,qBAC/CP,QAAS,2BAA4B3pC,EAAWmqC,sBAInD,SAASC,GAA0Bn/B,EAAQjL,GAE1C,OAAOiL,EACL0+B,QAAS,uBAAwB3pC,EAAWqqC,mBAC5CV,QAAS,yBAA4B3pC,EAAWqqC,kBAAoBrqC,EAAWsqC,qBAMlF,IAAMC,GAAiB,mCAEvB,SAASC,GAAiBv/B,GAEzB,OAAOA,EAAO0+B,QAASY,GAAgBE,IAIxC,SAASA,GAAiBjD,EAAOkD,GAEhC,IAAMz/B,EAASmW,GAAaspB,GAE5B,QAAgBlkE,IAAXykC,EAEJ,MAAM,IAAItxB,MAAO,6BAA+B+wD,EAAU,KAI3D,OAAOF,GAAiBv/B,GAMzB,IAAM0/B,GAA8B,+FAC9BC,GAAoB,+IAE1B,SAASC,GAAa5/B,GAErB,OAAOA,EACL0+B,QAASiB,GAAmBE,IAC5BnB,QAASgB,GAA6BI,IAIzC,SAASA,GAAwBvD,EAAOn4B,EAAO0N,EAAKiuB,GAGnD,OADAzxD,QAAQC,KAAM,uHACPsxD,GAActD,EAAOn4B,EAAO0N,EAAKiuB,GAIzC,SAASF,GAActD,EAAOn4B,EAAO0N,EAAKiuB,GAIzC,IAFA,IAAI//B,EAAS,GAEHh3B,EAAIo3B,SAAUgE,GAASp7B,EAAIo3B,SAAU0R,GAAO9oC,IAErDg3B,GAAU+/B,EACRrB,QAAS,eAAgB,KAAO11D,EAAI,MACpC01D,QAAS,uBAAwB11D,GAIpC,OAAOg3B,EAMR,SAASggC,GAAmBjrC,GAE3B,IAAIkrC,EAAkB,aAAelrC,EAAWsF,UAAY,sBAAwBtF,EAAWsF,UAAY,QAgB3G,MAd8B,UAAzBtF,EAAWsF,UAEf4lC,GAAmB,2BAEiB,YAAzBlrC,EAAWsF,UAEtB4lC,GAAmB,6BAEiB,SAAzBlrC,EAAWsF,YAEtB4lC,GAAmB,2BAIbA,EAsGR,SAASC,GAAcjwB,EAAUkwB,EAAUprC,EAAYkwB,GAKtD,IAqBImb,EAAcC,EArBZ1rB,EAAK1E,EAAS75B,aAEd62B,EAAUlY,EAAWkY,QAEvBC,EAAenY,EAAWmY,aAC1BC,EAAiBpY,EAAWoY,eAE1BmzB,EA9GP,SAAsCvrC,GAErC,IAAIurC,EAAsB,uBAgB1B,OAdKvrC,EAAWwrC,gBAAkB/jE,EAEjC8jE,EAAsB,qBAEXvrC,EAAWwrC,gBAAkB9jE,EAExC6jE,EAAsB,0BAEXvrC,EAAWwrC,gBAAkB7jE,IAExC4jE,EAAsB,sBAIhBA,EA4FqBE,CAA6BzrC,GACnD0rC,EAzFP,SAAmC1rC,GAElC,IAAI0rC,EAAmB,mBAEvB,GAAK1rC,EAAW4I,OAEf,OAAS5I,EAAW2rC,YAEnB,KAAKlhE,GACL,KAAKC,GACJghE,EAAmB,mBACnB,MAED,KAAK7gE,GACL,KAAKC,GACJ4gE,EAAmB,sBAOtB,OAAOA,EAmEkBE,CAA0B5rC,GAC7C6rC,EAhEP,SAAmC7rC,GAElC,IAAI6rC,EAAmB,yBAEvB,GAAK7rC,EAAW4I,OAEf,OAAS5I,EAAW2rC,YAEnB,KAAKjhE,GACL,KAAKI,GAEJ+gE,EAAmB,yBAOtB,OAAOA,EA8CkBC,CAA0B9rC,GAC7C+rC,EA3CP,SAAuC/rC,GAEtC,IAAI+rC,EAAuB,uBAE3B,GAAK/rC,EAAW4I,OAEf,OAAS5I,EAAW6I,SAEnB,KAAK9+B,GACJgiE,EAAuB,2BACvB,MAED,KAAK/hE,GACJ+hE,EAAuB,sBACvB,MAED,KAAK9hE,GACJ8hE,EAAuB,sBAO1B,OAAOA,EAmBsBC,CAA8BhsC,GAGrDisC,EAAsB/wB,EAASxP,YAAc,EAAMwP,EAASxP,YAAc,EAE1EwgC,EAAmBlsC,EAAW8f,SAAW,GAnShD,SAA6B9f,GAS5B,MAPe,CACZA,EAAWmsC,sBAAwBnsC,EAAWosC,cAAgBpsC,EAAW8H,SAAW9H,EAAWqsC,uBAAyBrsC,EAAWqH,oBAAsBrH,EAAWkG,aAAuC,aAAxBlG,EAAWssC,SAA4B,kDAAoD,IAC9QtsC,EAAWusC,oBAAsBvsC,EAAW20B,yBAA4B30B,EAAWwsC,2BAA6B,wCAA0C,GAC1JxsC,EAAWysC,sBAAwBzsC,EAAW0sC,6BAAiC,2CAA6C,IAC5H1sC,EAAW2sC,2BAA6B3sC,EAAW4I,QAAU5I,EAAWkJ,eAAkBlJ,EAAW4sC,kCAAoC,gDAAkD,IAGhLC,OAAQpD,IAAkBR,KAAM,MA0RM6D,CAAoB9sC,GAElE+sC,EAxRP,SAA0B70B,GAEzB,IAAM80B,EAAS,GAEf,IAAM,IAAMtsD,KAAQw3B,EAAU,CAE7B,IAAMvyC,EAAQuyC,EAASx3B,IAER,IAAV/a,GAELqnE,EAAOv5D,KAAM,WAAaiN,EAAO,IAAM/a,GAIxC,OAAOqnE,EAAO/D,KAAM,MA0QEgE,CAAiB/0B,GAEjC8Y,EAAUpR,EAAGstB,gBAGfC,EAAgBntC,EAAW+Y,YAAc,YAAc/Y,EAAW+Y,YAAc,KAAO,GAEtF/Y,EAAWq4B,sBAEfgT,EAAe,CAEd0B,GAECF,OAAQpD,IAAkBR,KAAM,OAEhB90D,OAAS,IAE1Bk3D,GAAgB,OAIjBC,EAAiB,CAEhBY,EACAa,GAECF,OAAQpD,IAAkBR,KAAM,OAEd90D,OAAS,IAE5Bm3D,GAAkB,QAMnBD,EAAe,CAEdJ,GAAmBjrC,GAEnB,uBAAyBA,EAAWotC,WAEpCL,EAEA/sC,EAAWqtC,WAAa,yBAA2B,GACnDrtC,EAAWstC,gBAAkB,+BAAiC,GAE9DttC,EAAWutC,uBAAyB,0BAA4B,GAEhE,wBAA0BtB,EAE1B,qBAAuBjsC,EAAWwtC,SAChCxtC,EAAWytC,QAAUztC,EAAW0D,IAAQ,kBAAoB,GAC5D1D,EAAWytC,QAAUztC,EAAW0tC,QAAY,mBAAqB,GAEnE1tC,EAAWuH,IAAM,kBAAoB,GACrCvH,EAAW4I,OAAS,qBAAuB,GAC3C5I,EAAW4I,OAAS,WAAaijC,EAAmB,GACpD7rC,EAAW0H,SAAW,uBAAyB,GAC/C1H,EAAW4H,MAAQ,oBAAsB,GACzC5H,EAAWwI,YAAc,0BAA4B,GACrDxI,EAAW8H,QAAU,sBAAwB,GAC7C9H,EAAWgI,UAAY,wBAA0B,GAC/ChI,EAAWgI,WAAahI,EAAW2tC,qBAAyB,gCAAkC,GAC9F3tC,EAAWgI,WAAahI,EAAWqsC,sBAA0B,iCAAmC,GAElGrsC,EAAWmH,aAAe,2BAA6B,GACvDnH,EAAWoH,sBAAwB,qCAAuC,GAC1EpH,EAAWqH,mBAAqB,kCAAoC,GAEpErH,EAAWmI,iBAAmBnI,EAAWutC,uBAAyB,8BAAgC,GAElGvtC,EAAWyI,YAAc,0BAA4B,GACrDzI,EAAW0I,qBAAuB,mCAAqC,GACvE1I,EAAW2I,gBAAkB,8BAAgC,GAE7D3I,EAAWsI,aAAe,2BAA6B,GACvDtI,EAAWuI,aAAe,2BAA6B,GACvDvI,EAAWyH,SAAW,uBAAyB,GAE/CzH,EAAWkJ,aAAe,2BAA6B,GACvDlJ,EAAWmJ,gBAAkB,8BAAgC,GAC7DnJ,EAAWqJ,aAAe,2BAA6B,GAEvDrJ,EAAW4tC,eAAiB,sBAAwB,GACpD5tC,EAAW6D,aAAe,oBAAsB,GAChD7D,EAAW6tC,aAAe,0BAA4B,GACtD7tC,EAAW8tC,UAAY,iBAAmB,GAC1C9tC,EAAW+tC,cAAgB,0BAA4B,GAEvD/tC,EAAWkG,YAAc,sBAAwB,GAEjDlG,EAAWguC,SAAW,uBAAyB,GAC/ChuC,EAAWiuC,iBAAmB,uBAAyB,GAEvDjuC,EAAWoV,aAAe,2BAA6B,GACvDpV,EAAWigC,eAA2C,IAA3BjgC,EAAWkG,YAAwB,2BAA6B,GACzFlG,EAAWoV,cAAgBpV,EAAW8f,SAAa,+BAAiC,GACpF9f,EAAWoV,cAAgBpV,EAAW8f,SAAa,8BAAgC9f,EAAWkuC,kBAAoB,GACpHluC,EAAWmuC,YAAc,uBAAyB,GAClDnuC,EAAWouC,UAAY,qBAAuB,GAE9CpuC,EAAWquC,iBAAmB,wBAA0B,GACxDruC,EAAWquC,iBAAmB,WAAa9C,EAAsB,GAEjEvrC,EAAWwJ,gBAAkB,8BAAgC,GAE7DxJ,EAAW20B,uBAAyB,0BAA4B,GAC9D30B,EAAW20B,wBAA0B30B,EAAWwsC,2BAA+B,8BAAgC,GAEjH,4BACA,gCACA,iCACA,2BACA,6BACA,+BACA,+BAEA,wBAEA,mCAEA,SAEA,8BAEA,kCAEA,SAEA,2BACA,yBACA,qBAEA,qBAEA,4BAEA,SAEA,iCAEA,0BAEA,6BAEA,0BAEA,SAEA,2EAEA,iCACA,iCACA,iCACA,iCAEA,4BAEA,mCACA,mCACA,mCACA,mCAEA,UAEA,mCACA,mCACA,mCACA,mCAEA,WAEA,SAEA,sBAEA,8BACA,+BAEA,SAEA,MAECK,OAAQpD,IAAkBR,KAAM,MAElCqC,EAAiB,CAEhBY,EAEAjB,GAAmBjrC,GAEnB,uBAAyBA,EAAWotC,WAEpCL,EAEA,wBAA0Bd,EAExBjsC,EAAWytC,QAAUztC,EAAW0D,IAAQ,kBAAoB,GAC5D1D,EAAWytC,QAAUztC,EAAW0tC,QAAY,mBAAqB,GAEnE1tC,EAAWuH,IAAM,kBAAoB,GACrCvH,EAAWwH,OAAS,qBAAuB,GAC3CxH,EAAW4I,OAAS,qBAAuB,GAC3C5I,EAAW4I,OAAS,WAAa8iC,EAAmB,GACpD1rC,EAAW4I,OAAS,WAAaijC,EAAmB,GACpD7rC,EAAW4I,OAAS,WAAamjC,EAAuB,GACxD/rC,EAAW0H,SAAW,uBAAyB,GAC/C1H,EAAW4H,MAAQ,oBAAsB,GACzC5H,EAAWwI,YAAc,0BAA4B,GACrDxI,EAAW8H,QAAU,sBAAwB,GAC7C9H,EAAWgI,UAAY,wBAA0B,GAC/ChI,EAAWgI,WAAahI,EAAW2tC,qBAAyB,gCAAkC,GAC9F3tC,EAAWgI,WAAahI,EAAWqsC,sBAA0B,iCAAmC,GAElGrsC,EAAWiH,UAAY,wBAA0B,GACjDjH,EAAWmH,aAAe,2BAA6B,GACvDnH,EAAWoH,sBAAwB,qCAAuC,GAC1EpH,EAAWqH,mBAAqB,kCAAoC,GAEpErH,EAAWyI,YAAc,0BAA4B,GACrDzI,EAAW0I,qBAAuB,mCAAqC,GACvE1I,EAAW2I,gBAAkB,8BAAgC,GAC7D3I,EAAWsI,aAAe,2BAA6B,GACvDtI,EAAWuI,aAAe,2BAA6B,GAEvDvI,EAAWyH,SAAW,uBAAyB,GAC/CzH,EAAW4J,UAAY,wBAA0B,GAEjD5J,EAAWwG,MAAQ,oBAAsB,GAEzCxG,EAAWkJ,aAAe,2BAA6B,GACvDlJ,EAAWmJ,gBAAkB,8BAAgC,GAC7DnJ,EAAWqJ,aAAe,2BAA6B,GAEvDrJ,EAAW4tC,eAAiB,sBAAwB,GACpD5tC,EAAW6D,cAAgB7D,EAAWstC,gBAAkB,oBAAsB,GAC9EttC,EAAW6tC,aAAe,0BAA4B,GACtD7tC,EAAW8tC,UAAY,iBAAmB,GAC1C9tC,EAAW+tC,cAAgB,0BAA4B,GAEvD/tC,EAAWiJ,YAAc,0BAA4B,GAErDjJ,EAAWkG,YAAc,sBAAwB,GAEjDlG,EAAWmuC,YAAc,uBAAyB,GAClDnuC,EAAWouC,UAAY,qBAAuB,GAE9CpuC,EAAWquC,iBAAmB,wBAA0B,GACxDruC,EAAWquC,iBAAmB,WAAa9C,EAAsB,GAEjEvrC,EAAW4F,mBAAqB,8BAAgC,GAEhE5F,EAAWsuC,wBAA0B,oCAAsC,GAE3EtuC,EAAW20B,uBAAyB,0BAA4B,GAC9D30B,EAAW20B,wBAA0B30B,EAAWwsC,2BAA+B,8BAAgC,IAE7GxsC,EAAW2sC,2BAA6B3sC,EAAW4I,SAAY5I,EAAW4sC,kCAAsC,0BAA4B,GAEhJ,2BACA,+BACA,+BAEE5sC,EAAW2vB,cAAgBzlD,GAAkB,uBAAyB,GACtE81B,EAAW2vB,cAAgBzlD,GAAkBk3C,GAAW,0BAAkC,GAC1FphB,EAAW2vB,cAAgBzlD,GAAkBq/D,GAAwB,cAAevpC,EAAW2vB,aAAgB,GAEjH3vB,EAAW0F,UAAY,oBAAsB,GAC7C1F,EAAW7d,SAAW1V,GAAY,iBAAmB,GAErD20C,GAAW,wBACXphB,EAAWuH,IAAM6hC,GAA0B,mBAAoBppC,EAAWuuC,aAAgB,GAC1FvuC,EAAWwH,OAAS4hC,GAA0B,sBAAuBppC,EAAWwuC,gBAAmB,GACnGxuC,EAAW4I,OAASwgC,GAA0B,sBAAuBppC,EAAWyuC,gBAAmB,GACnGzuC,EAAWwI,YAAc4gC,GAA0B,2BAA4BppC,EAAW0uC,qBAAwB,GAClH1uC,EAAW2I,gBAAkBygC,GAA0B,+BAAgCppC,EAAW2uC,yBAA4B,GAC9H3uC,EAAW0H,SAAW0hC,GAA0B,wBAAyBppC,EAAW4uC,kBAAqB,GACzGtF,GAA0B,sBAAuBtpC,EAAWu7B,gBAE5Dv7B,EAAW6uC,aAAe,yBAA2B7uC,EAAW6uC,aAAe,GAE/E,MAEChC,OAAQpD,IAAkBR,KAAM,OAMnC9wB,EAAeiyB,GADfjyB,EAAeuxB,GADfvxB,EAAeqyB,GAAiBryB,GACenY,GACQA,GAIvDoY,EAAiBgyB,GADjBhyB,EAAiBsxB,GADjBtxB,EAAiBoyB,GAAiBpyB,GACiBpY,GACQA,GAE3DmY,EAAe0yB,GAAa1yB,GAC5BC,EAAiByyB,GAAazyB,GAEzBpY,EAAW8f,WAA+C,IAAnC9f,EAAWq4B,sBAItC8U,EAAgB,oBAEhB9B,EAAe,CACd,oCACA,uBACA,sBACA,6BACCpC,KAAM,MAAS,KAAOoC,EAExBC,EAAiB,CAChB,qBACEtrC,EAAW+Y,cAAgB7lC,GAAU,GAAK,+BAC1C8sB,EAAW+Y,cAAgB7lC,GAAU,GAAK,oCAC5C,uCACA,4BACA,8BACA,oCACA,qCACA,6CACA,uCACA,uCACA,+CACA,0CACC+1D,KAAM,MAAS,KAAOqC,GAIzB,IAqGIwD,EAgBA3c,EApHE4c,EAAe5B,EAAgB7B,EAAiBlzB,EAKhD42B,EAAiB/G,GAAaroB,EAAI,MANrButB,EAAgB9B,EAAelzB,GAO5C82B,EAAmBhH,GAAaroB,EAAI,MAAOmvB,GAqBjD,GAnBAnvB,EAAGsvB,aAAcle,EAASge,GAC1BpvB,EAAGsvB,aAAcle,EAASie,QAIczoE,IAAnCw5B,EAAW6Y,oBAEf+G,EAAGuvB,mBAAoBne,EAAS,EAAGhxB,EAAW6Y,sBAEP,IAA5B7Y,EAAWoV,cAGtBwK,EAAGuvB,mBAAoBne,EAAS,EAAG,YAIpCpR,EAAGwvB,YAAape,GAGX9V,EAASm0B,MAAMC,kBAAoB,CAEvC,IAAMC,EAAa3vB,EAAG4vB,kBAAmBxe,GAAU+X,OAC7C0G,EAAY7vB,EAAGkpB,iBAAkBkG,GAAiBjG,OAClD2G,EAAc9vB,EAAGkpB,iBAAkBmG,GAAmBlG,OAExD4G,GAAW,EACXC,GAAkB,EAEtB,IAAkD,IAA7ChwB,EAAGkoB,oBAAqB9W,EAAS,OAAoB,CAEzD2e,GAAW,EAEX,IAAME,EAAenH,GAAiB9oB,EAAIovB,EAAgB,UACpDc,EAAiBpH,GAAiB9oB,EAAIqvB,EAAkB,YAE9D11D,QAAQ3T,MACP,oCAAsCg6C,EAAGmwB,WAAzC,sBACqBnwB,EAAGkoB,oBAAqB9W,EAAS,OADtD,yBAEuBue,EAAa,KACpCM,EAAe,KACfC,OAGyB,KAAfP,EAEXh2D,QAAQC,KAAM,wCAAyC+1D,GAE9B,KAAdE,GAAoC,KAAhBC,IAE/BE,GAAkB,GAIdA,IAEJzpE,KAAK6pE,YAAc,CAElBL,SAAUA,EAEVJ,WAAYA,EAEZp3B,aAAc,CAEb/hC,IAAKq5D,EACLQ,OAAQ5E,GAITjzB,eAAgB,CAEfhiC,IAAKs5D,EACLO,OAAQ3E,KAwEZ,OAxDA1rB,EAAGswB,aAAclB,GACjBpvB,EAAGswB,aAAcjB,GAMjB9oE,KAAKq6D,YAAc,WAQlB,YANwBh6D,IAAnBsoE,IAEJA,EAAiB,IAAIjH,GAAejoB,EAAIoR,IAIlC8d,GAQR3oE,KAAKwsD,cAAgB,WAQpB,YAN0BnsD,IAArB2rD,IAEJA,EA3sBH,SAAkCvS,EAAIoR,GAMrC,IAJA,IAAMjiB,EAAa,GAEbr5B,EAAIkqC,EAAGkoB,oBAAqB9W,EAAS,OAEjC/8C,EAAI,EAAGA,EAAIyB,EAAGzB,IAAO,CAE9B,IAAMvO,EAAOk6C,EAAGuwB,gBAAiBnf,EAAS/8C,GACpCyM,EAAOhb,EAAKgb,KAEdsyC,EAAe,EACA,QAAdttD,EAAK0N,OAAiB4/C,EAAe,GACvB,QAAdttD,EAAK0N,OAAiB4/C,EAAe,GACvB,QAAdttD,EAAK0N,OAAiB4/C,EAAe,GAI1CjkB,EAAYruB,GAAS,CACpBtN,KAAM1N,EAAK0N,KACX0/C,SAAUlT,EAAGwwB,kBAAmBpf,EAAStwC,GACzCsyC,aAAcA,GAKhB,OAAOjkB,EAirBcshC,CAAyBzwB,EAAIoR,IAI1CmB,GAMRhsD,KAAKmqE,QAAU,WAEdpgB,EAAcyD,uBAAwBxtD,MAEtCy5C,EAAG2wB,cAAevf,GAClB7qD,KAAK6qD,aAAUxqD,GAMhBL,KAAKua,KAAOsf,EAAWotC,WACvBjnE,KAAK+3B,GAAKsqC,KACVriE,KAAKilE,SAAWA,EAChBjlE,KAAKqqE,UAAY,EACjBrqE,KAAK6qD,QAAUA,EACf7qD,KAAKgyC,aAAe62B,EACpB7oE,KAAKiyC,eAAiB62B,EAEf9oE,KAIR,SAASsqE,GAAev1B,EAAU8S,EAAU0iB,EAAYn4B,EAAYsH,EAAcqQ,EAAe5X,GAEhG,IAAM0mB,EAAW,GAEXlf,EAAWD,EAAaC,SACxB6U,EAAyB9U,EAAa8U,uBACtCa,EAAsB3V,EAAa2V,oBACnCP,EAAoBpV,EAAaoV,kBACjCG,EAAiBvV,EAAauV,eAEhC9vB,EAAYua,EAAava,UAEvBqrC,EAAY,CACjBC,kBAAmB,QACnBC,qBAAsB,eACtBC,mBAAoB,SACpBrkC,kBAAmB,QACnBskC,oBAAqB,UACrBC,kBAAmB,QACnBC,iBAAkB,OAClBC,qBAAsB,WACtBC,qBAAsB,WACtBC,mBAAoB,SACpBC,kBAAmB,QACnBC,mBAAoB,SACpBC,eAAgB,SAChBC,eAAgB,SAChBC,eAAgB,UAGXC,EAAiB,CACtB,YAAa,WAAY,yBAA0B,iBAAkB,aAAc,kBACnF,MAAO,cAAe,SAAU,iBAAkB,SAAU,aAAc,iBAAkB,eAC5F,WAAY,mBAAoB,QAAS,cAAe,sBAAuB,UAAW,YAC1F,uBAAwB,wBACxB,YAAa,eAAgB,wBAAyB,qBACtD,kBACA,cAAe,uBAAwB,kBAAmB,0BAA2B,eAAgB,eAAgB,cACrH,WAAY,YAAa,UAAW,eAAgB,eAAgB,iBAAkB,YAAa,gBAAiB,MAAO,SAAU,UACrI,cAAe,kBAAmB,yBAA0B,WAC5D,WAAY,mBAAoB,eAAgB,eAAgB,oBAAqB,qBACrF,eAAgB,iBAAkB,gBAAiB,gBAAiB,oBACpE,qBAAsB,uBAAwB,sBAC9C,mBAAoB,gBAAiB,cAAe,0BACpD,cAAe,YAAa,oBAAqB,sBAAuB,eAAgB,YAAa,SACrG,QAAS,eAAgB,kBAAmB,gBAuC7C,SAASC,EAA2BpqC,GAEnC,IAAIllB,EAuBJ,OArBKklB,GAAOA,EAAI7iB,UAEfrC,EAAWklB,EAAIllB,SAEJklB,GAAOA,EAAIzgB,qBAEtBvN,QAAQC,KAAM,6HACd6I,EAAWklB,EAAI/gB,QAAQnE,UAIvBA,EAAWzR,GAIPkvC,GAAYvY,GAAOA,EAAI7iB,WAAa6iB,EAAIplB,SAAWzV,IAAc66B,EAAIn0B,OAASxH,IAAoB27B,EAAIllB,WAAaxR,KAEvHwR,EAAWzR,IAILyR,EA2SR,MAAO,CACNuvD,cAxSD,SAAwBtxC,EAAU+X,EAAQw5B,EAAS12B,EAAO3rB,GAEzD,IAwBI2oB,EAAcC,EAxBZ1U,EAAMyX,EAAMzX,IACZ9D,EAAcU,EAASwxC,uBAAyB32B,EAAMvb,YAAc,KAEpEgJ,GAAWtI,EAASwxC,uBAAyBpB,EAAa1iB,GAAW/N,IAAK3f,EAASsI,QAAUhJ,GAE7F0sC,EAAWqE,EAAWrwC,EAASltB,MAK/Bo6D,EAAWh+C,EAAO0Q,cA7EzB,SAAsB1Q,GAErB,IACMuiD,EADWviD,EAAO6Q,SACD0xC,MAEvB,GAAKvc,EAEJ,OAAO,KAWP,IAAMwc,EAAkB/c,EAClBgd,EAAkB19D,KAAKgC,OAASy7D,EAAkB,IAAO,GAEzDxE,EAAWj5D,KAAKgB,IAAK08D,EAAiBF,EAAM59D,QAElD,OAAKq5D,EAAWuE,EAAM59D,QAErBoF,QAAQC,KAAM,qCAAuCu4D,EAAM59D,OAAS,6BAA+Bq5D,EAAW,KACvG,GAIDA,EA+CgC0E,CAAa1iD,GAAW,EAgBhE,GAd4B,OAAvB8Q,EAASgF,YAEbA,EAAYua,EAAawU,gBAAiB/zB,EAASgF,cAEhChF,EAASgF,WAE3B/rB,QAAQC,KAAM,oCAAqC8mB,EAASgF,UAAW,uBAAwBA,EAAW,YAQvGgnC,EAAW,CAEf,IAAMtwB,EAAS+Q,GAAWuf,GAE1Bn0B,EAAe6D,EAAO7D,aACtBC,EAAiB4D,EAAO5D,oBAIxBD,EAAe7X,EAAS6X,aACxBC,EAAiB9X,EAAS8X,eAI3B,IAAMkD,EAAsBJ,EAASK,kBAE/B42B,EAAe7xC,EAASsJ,UAAY,EACpCwoC,EAAe9xC,EAAS2G,UAAY,EAsI1C,MApImB,CAElB6Y,SAAUA,EAEVwsB,SAAUA,EACVc,WAAY9sC,EAASltB,KAErB+kC,aAAcA,EACdC,eAAgBA,EAChBF,QAAS5X,EAAS4X,QAElBmgB,qBAAsD,IAAjC/3B,EAAS+3B,oBAC9Btf,YAAazY,EAASyY,YAEtBzT,UAAWA,EAEX+nC,YAAuC,IAA3B79C,EAAO8P,gBACnBguC,iBAA4C,IAA3B99C,EAAO8P,iBAAqD,OAAzB9P,EAAOgQ,cAE3D+tC,uBAAwBnY,EACxBmG,eAA0C,OAAxBjgB,EAAiCq2B,EAA2Br2B,EAAoB90B,SAAY00B,EAASqgB,eACvHh0B,MAAQjH,EAASiH,IACjBgnC,YAAaoD,EAA2BrxC,EAASiH,KACjDC,SAAWlH,EAASkH,OACpBgnC,eAAgBmD,EAA2BrxC,EAASkH,QACpDoB,SAAWA,EACX+iC,WAAY/iC,GAAUA,EAAO/mB,QAC7B4sD,eAAgBkD,EAA2B/oC,GAC3CwjC,eAAmBxjC,IAAgBA,EAAO/mB,UAAYhX,IAA+B+9B,EAAO/mB,UAAY/W,IACxG48B,WAAapH,EAASoH,SACtBknC,iBAAkB+C,EAA2BrxC,EAASoH,UACtDE,QAAUtH,EAASsH,MACnBY,cAAgBlI,EAASkI,YACzBkmC,oBAAqBiD,EAA2BrxC,EAASkI,aACzDV,UAAYxH,EAASwH,QACrBE,YAAc1H,EAAS0H,UACvB2lC,qBAAsBrtC,EAAS2H,gBAAkB12B,GACjD86D,sBAAuB/rC,EAAS2H,gBAAkB32B,GAElD21B,UAAWmrC,EACXjrC,aAAcirC,KAAmB9xC,EAAS6G,aAC1CC,sBAAuBgrC,KAAmB9xC,EAAS8G,sBACnDC,mBAAoB+qC,KAAmB9xC,EAAS+G,mBAEhDc,kBAAoB7H,EAAS6H,gBAC7BG,eAAiBhI,EAASgI,aAC1BC,eAAiBjI,EAASiI,aAC1BE,cAAgBnI,EAASmI,YACzBC,uBAAyBpI,EAASoI,qBAClCC,kBAAoBrI,EAASqI,gBAC7BgmC,wBAAyBgD,EAA2BrxC,EAASqI,iBAE7DlB,WAAanH,EAASmH,SACtBmC,UAAWuoC,EAEXlpC,cAAgB3I,EAAS2I,YAEzBzC,MAAOlG,EAASkG,MAAQ,EAExB0C,aAAc5I,EAAS4I,aAAe,EACtCC,kBAAoB7I,EAAS6I,gBAC7BE,eAAiB/I,EAAS+I,aAE1BR,QAASvI,EAASuI,QAElB+kC,iBAAqBttC,EAAS0H,aAAgBxY,EAAOQ,YAAeR,EAAOQ,SAAS+e,WAAWU,QAC/F5L,aAAcvD,EAASuD,aACvBgqC,cAAwC,IAA1BvtC,EAASuD,gBAA4BrU,EAAOQ,YAAeR,EAAOQ,SAAS+e,WAAW3I,OAAuD,IAA9C5W,EAAOQ,SAAS+e,WAAW3I,MAAM2G,SAC9I+gC,YAAcxtC,EAASiH,OAAUjH,EAASwH,WAAcxH,EAAS0H,aAAgB1H,EAASmI,eAAkBnI,EAASmH,YAAenH,EAASkI,eAAkBlI,EAASgI,gBAAmBhI,EAASiI,gBAAmBjI,EAAS6G,gBAAmB7G,EAAS8G,yBAA4B9G,EAAS+G,sBAAyB/G,EAAS6H,mBAAsB7H,EAAS6I,mBAAsB7I,EAAS+I,gBAAmB/I,EAASoI,wBAA2BpI,EAASqI,gBACjcolC,gBAAsBztC,EAASiH,KAAUjH,EAASwH,SAAcxH,EAAS0H,WAAgB1H,EAASmI,aAAkBnI,EAASmH,UAAenH,EAASkI,aAAkBlI,EAASgI,cAAmBhI,EAASiI,cAAmBjI,EAAS+G,oBAAsB/G,EAAS4I,aAAe,GAAQ5I,EAAS6I,iBAAsB7I,EAAS+I,cAAmB/I,EAASoI,sBAA2BpI,EAASqI,oBAAwBrI,EAAS6H,gBAEvazE,MAAQA,EACR+pC,OAAQntC,EAASoD,IACjBgqC,QAAWhqC,GAAOA,EAAI2uC,UAEtBnsC,cAAgB5F,EAAS4F,YAEzBsD,gBAAiBlJ,EAASkJ,gBAC1BmrB,uBAAwBA,EAExBqZ,UAAmC,IAAzBx+C,EAAO0Q,eAA0BstC,EAAW,EACtDA,SAAUA,EACVS,iBAAkBzY,EAElBpgB,eAAiB5lB,EAAOQ,YAAeR,EAAOQ,SAASgf,gBAAgB9V,SACvE+mC,eAAiBzwC,EAAOQ,YAAeR,EAAOQ,SAASgf,gBAAgBjhB,OACvEmgD,kBAAwB1+C,EAAOQ,UAAeR,EAAOQ,SAASgf,gBAAgB9V,SAAa1J,EAAOQ,SAASgf,gBAAgB9V,SAAS/kB,OAAS,EAE7Iy1D,aAAcvxB,EAAOi6B,YAAYn+D,OACjC41D,eAAgB1xB,EAAOzoB,MAAMzb,OAC7B01D,cAAexxB,EAAOk6B,KAAKp+D,OAC3B21D,kBAAmBzxB,EAAOm6B,SAASr+D,OACnC61D,cAAe3xB,EAAOo6B,KAAKt+D,OAE3B81D,mBAAoB5xB,EAAOqT,qBAAqBv3C,OAChDg2D,qBAAsB9xB,EAAOkU,eAAep4C,OAC5C+1D,oBAAqB7xB,EAAO4T,cAAc93C,OAE1Ck2D,kBAAmB/xB,EAAS4d,UAC5BoU,oBAAqBhyB,EAAS6d,gBAE9Bh0C,OAAQme,EAASne,OACjBujB,UAAWpF,EAASoF,UAEpB2oC,iBAAkBnzB,EAASw3B,UAAUx4B,SAAW23B,EAAQ19D,OAAS,EACjEq3D,cAAetwB,EAASw3B,UAAUt/D,KAElCu8C,YAAarvB,EAASuF,WAAaqV,EAASyU,YAAczlD,GAC1DokE,wBAAyBpzB,EAASozB,wBAElC1oC,mBAAoBtF,EAASsF,mBAE7BuoC,YAAa7tC,EAASsD,OAAS97B,EAC/BsmE,UAAW9tC,EAASsD,OAAS/7B,EAE7BgnE,kBAA0CroE,IAA1B85B,EAASuuC,cAA+BvuC,EAASuuC,aAEjEh2B,oBAAqBvY,EAASuY,oBAE9BszB,qBAAsB7rC,EAASiY,YAAcjY,EAASiY,WAAWC,YACjE+zB,mBAAoBjsC,EAASiY,YAAcjY,EAASiY,WAAWE,UAC/Dg0B,qBAAsBnsC,EAASiY,YAAcjY,EAASiY,WAAWG,YACjEi0B,0BAA2BrsC,EAASiY,YAAcjY,EAASiY,WAAWI,iBAEtE6zB,2BAA4B1sB,GAAYvH,EAAWmc,IAAK,kBACxDgY,6BAA8B5sB,GAAYvH,EAAWmc,IAAK,sBAC1DkY,kCAAmC9sB,GAAYvH,EAAWmc,IAAK,0BAE/Die,sBAAuBryC,EAASqyC,0BA0HjCC,mBAlHD,SAA6B5yC,GAE5B,IAAMjsB,EAAQ,GAad,GAXKisB,EAAWssC,SAEfv4D,EAAMN,KAAMusB,EAAWssC,WAIvBv4D,EAAMN,KAAMusB,EAAWoY,gBACvBrkC,EAAMN,KAAMusB,EAAWmY,oBAII3xC,IAAvBw5B,EAAWkY,QAEf,IAAM,IAAMx3B,KAAQsf,EAAWkY,QAE9BnkC,EAAMN,KAAMiN,GACZ3M,EAAMN,KAAMusB,EAAWkY,QAASx3B,IAMlC,IAAwC,IAAnCsf,EAAWq4B,oBAAgC,CAE/C,IAAM,IAAIpkD,EAAI,EAAGA,EAAIy9D,EAAev9D,OAAQF,IAE3CF,EAAMN,KAAMusB,EAAY0xC,EAAgBz9D,KAIzCF,EAAMN,KAAMynC,EAASqgB,gBACrBxnD,EAAMN,KAAMynC,EAASxP,aAMtB,OAFA33B,EAAMN,KAAMusB,EAAW2yC,uBAEhB5+D,EAAMk1D,QA0EbzI,YAtED,SAAsBlgC,GAErB,IACIuX,EADEy0B,EAAWqE,EAAWrwC,EAASltB,MAGrC,GAAKk5D,EAAW,CAEf,IAAMtwB,EAAS+Q,GAAWuf,GAC1Bz0B,EAAWE,GAAclxB,MAAOm1B,EAAOnE,eAIvCA,EAAWvX,EAASuX,SAIrB,OAAOA,GAuDPg7B,eAnDD,SAAyB7yC,EAAYorC,GAKpC,IAHA,IAAIpa,EAGM/nC,EAAI,EAAG6pD,EAAK9T,EAAS7qD,OAAQ8U,EAAI6pD,EAAI7pD,IAAO,CAErD,IAAM8pD,EAAqB/T,EAAU/1C,GAErC,GAAK8pD,EAAmB3H,WAAaA,EAAW,IAE/Cpa,EAAU+hB,GACCvC,UAEX,OAaF,YAPiBhqE,IAAZwqD,IAEJA,EAAU,IAAIma,GAAcjwB,EAAUkwB,EAAUprC,EAAYkwB,GAC5D8O,EAASvrD,KAAMu9C,IAITA,GAyBPgiB,eArBD,SAAyBhiB,GAExB,GAA8B,MAAtBA,EAAQwf,UAAkB,CAGjC,IAAMv8D,EAAI+qD,EAASxrD,QAASw9C,GAC5BgO,EAAU/qD,GAAM+qD,EAAUA,EAAS7qD,OAAS,GAC5C6qD,EAASiU,MAGTjiB,EAAQsf,YAaTtR,SAAUA,GAKZ,SAASkU,KAER,IAAI9nB,EAAa,IAAIpL,QAmCrB,MAAO,CACNC,IAlCD,SAAczwB,GAEb,IAAI+X,EAAM6jB,EAAWnL,IAAKzwB,GAS1B,YAPahpB,IAAR+gC,IAEJA,EAAM,GACN6jB,EAAW9xC,IAAKkW,EAAQ+X,IAIlBA,GAwBPtJ,OApBD,SAAiBzO,GAEhB47B,EAAWjL,OAAQ3wB,IAmBnB1H,OAfD,SAAiB0H,EAAQhqB,EAAKG,GAE7BylD,EAAWnL,IAAKzwB,GAAUhqB,GAAQG,GAclCihB,QAVD,WAECwkC,EAAa,IAAIpL,UAanB,SAASmzB,GAAmB36D,EAAGC,GAE9B,OAAKD,EAAE46D,aAAe36D,EAAE26D,WAEhB56D,EAAE46D,WAAa36D,EAAE26D,WAEb56D,EAAEykB,cAAgBxkB,EAAEwkB,YAExBzkB,EAAEykB,YAAcxkB,EAAEwkB,YAEdzkB,EAAEw4C,UAAYv4C,EAAEu4C,QAEpBx4C,EAAEw4C,QAAQ9yB,GAAKzlB,EAAEu4C,QAAQ9yB,GAErB1lB,EAAE8nB,SAASpC,KAAOzlB,EAAE6nB,SAASpC,GAEjC1lB,EAAE8nB,SAASpC,GAAKzlB,EAAE6nB,SAASpC,GAEvB1lB,EAAEoM,IAAMnM,EAAEmM,EAEdpM,EAAEoM,EAAInM,EAAEmM,EAIRpM,EAAE0lB,GAAKzlB,EAAEylB,GAMlB,SAASm1C,GAA0B76D,EAAGC,GAErC,OAAKD,EAAE46D,aAAe36D,EAAE26D,WAEhB56D,EAAE46D,WAAa36D,EAAE26D,WAEb56D,EAAEykB,cAAgBxkB,EAAEwkB,YAExBzkB,EAAEykB,YAAcxkB,EAAEwkB,YAEdzkB,EAAEoM,IAAMnM,EAAEmM,EAEdnM,EAAEmM,EAAIpM,EAAEoM,EAIRpM,EAAE0lB,GAAKzlB,EAAEylB,GAOlB,SAASo1C,GAAiBloB,GAEzB,IAAMmoB,EAAc,GAChBC,EAAmB,EAEjBC,EAAS,GACTC,EAAe,GACf3vC,EAAc,GAEd4vC,EAAiB,CAAEz1C,IAAM,GAY/B,SAAS01C,EAAmBpkD,EAAQQ,EAAUsQ,EAAU8yC,EAAYxuD,EAAG6sB,GAEtE,IAAIoiC,EAAaN,EAAaC,GACxBvc,EAAqB7L,EAAWnL,IAAK3f,GAkC3C,YAhCoB95B,IAAfqtE,GAEJA,EAAa,CACZ31C,GAAI1O,EAAO0O,GACX1O,OAAQA,EACRQ,SAAUA,EACVsQ,SAAUA,EACV0wB,QAASiG,EAAmBjG,SAAW2iB,EACvCP,WAAYA,EACZn2C,YAAazN,EAAOyN,YACpBrY,EAAGA,EACH6sB,MAAOA,GAGR8hC,EAAaC,GAAqBK,IAIlCA,EAAW31C,GAAK1O,EAAO0O,GACvB21C,EAAWrkD,OAASA,EACpBqkD,EAAW7jD,SAAWA,EACtB6jD,EAAWvzC,SAAWA,EACtBuzC,EAAW7iB,QAAUiG,EAAmBjG,SAAW2iB,EACnDE,EAAWT,WAAaA,EACxBS,EAAW52C,YAAczN,EAAOyN,YAChC42C,EAAWjvD,EAAIA,EACfivD,EAAWpiC,MAAQA,GAIpB+hC,IAEOK,EAyER,MAAO,CAENJ,OAAQA,EACRC,aAAcA,EACd3vC,YAAaA,EAEb4yB,KA9HD,WAEC6c,EAAmB,EAEnBC,EAAOt/D,OAAS,EAChBu/D,EAAav/D,OAAS,EACtB4vB,EAAY5vB,OAAS,GAyHrBV,KA5ED,SAAe+b,EAAQQ,EAAUsQ,EAAU8yC,EAAYxuD,EAAG6sB,GAEzD,IAAMoiC,EAAaD,EAAmBpkD,EAAQQ,EAAUsQ,EAAU8yC,EAAYxuD,EAAG6sB,GAE5EnR,EAAS4I,aAAe,EAE5BwqC,EAAajgE,KAAMogE,IAEiB,IAAzBvzC,EAASyD,YAEpBA,EAAYtwB,KAAMogE,GAIlBJ,EAAOhgE,KAAMogE,IA+DdjkB,QAzDD,SAAkBpgC,EAAQQ,EAAUsQ,EAAU8yC,EAAYxuD,EAAG6sB,GAE5D,IAAMoiC,EAAaD,EAAmBpkD,EAAQQ,EAAUsQ,EAAU8yC,EAAYxuD,EAAG6sB,GAE5EnR,EAAS4I,aAAe,EAE5BwqC,EAAa9jB,QAASikB,IAEc,IAAzBvzC,EAASyD,YAEpBA,EAAY6rB,QAASikB,GAIrBJ,EAAO7jB,QAASikB,IA4CjBC,OA9BD,WAIC,IAAM,IAAI7/D,EAAIu/D,EAAkBvsD,EAAKssD,EAAYp/D,OAAQF,EAAIgT,EAAIhT,IAAO,CAEvE,IAAM4/D,EAAaN,EAAat/D,GAEhC,GAAuB,OAAlB4/D,EAAW31C,GAAc,MAE9B21C,EAAW31C,GAAK,KAChB21C,EAAWrkD,OAAS,KACpBqkD,EAAW7jD,SAAW,KACtB6jD,EAAWvzC,SAAW,KACtBuzC,EAAW7iB,QAAU,KACrB6iB,EAAWpiC,MAAQ,OAiBpBkvB,KAxCD,SAAeoT,EAAkBC,GAE3BP,EAAOt/D,OAAS,GAAIs/D,EAAO9S,KAAMoT,GAAoBZ,IACrDO,EAAav/D,OAAS,GAAIu/D,EAAa/S,KAAMqT,GAAyBX,IACtEtvC,EAAY5vB,OAAS,GAAI4vB,EAAY48B,KAAMqT,GAAyBX,MAyC3E,SAASY,GAAkB7oB,GAE1B,IAAI8oB,EAAQ,IAAIl0B,QAoChB,MAAO,CACNC,IAnCD,SAAc9E,EAAOg5B,GAEpB,IAAIC,EAsBJ,OApB4B,IAAvBF,EAAMxf,IAAKvZ,IAEfi5B,EAAO,IAAId,GAAiBloB,GAC5B8oB,EAAM56D,IAAK6hC,EAAO,CAAEi5B,KAIfD,GAAmBD,EAAMj0B,IAAK9E,GAAQhnC,QAE1CigE,EAAO,IAAId,GAAiBloB,GAC5B8oB,EAAMj0B,IAAK9E,GAAQ1nC,KAAM2gE,IAIzBA,EAAOF,EAAMj0B,IAAK9E,GAASg5B,GAMtBC,GAYPxtD,QARD,WAECstD,EAAQ,IAAIl0B,UAWd,SAASq0B,KAER,IAAMh8B,EAAS,GAEf,MAAO,CAEN4H,IAAK,SAAWq0B,GAEf,QAA4B9tE,IAAvB6xC,EAAQi8B,EAAMp2C,IAElB,OAAOma,EAAQi8B,EAAMp2C,IAItB,IAAI2Z,EAEJ,OAASy8B,EAAMlhE,MAEd,IAAK,mBACJykC,EAAW,CACVlkB,UAAW,IAAI7H,GACfsa,MAAO,IAAIsE,IAEZ,MAED,IAAK,YACJmN,EAAW,CACV3e,SAAU,IAAIpN,GACd6H,UAAW,IAAI7H,GACfsa,MAAO,IAAIsE,GACXjN,SAAU,EACVouB,QAAS,EACTC,YAAa,EACbC,MAAO,GAER,MAED,IAAK,aACJlU,EAAW,CACV3e,SAAU,IAAIpN,GACdsa,MAAO,IAAIsE,GACXjN,SAAU,EACVsuB,MAAO,GAER,MAED,IAAK,kBACJlU,EAAW,CACVlkB,UAAW,IAAI7H,GACf4gC,SAAU,IAAIhiB,GACdiiB,YAAa,IAAIjiB,IAElB,MAED,IAAK,gBACJmN,EAAW,CACVzR,MAAO,IAAIsE,GACXxR,SAAU,IAAIpN,GACdyoD,UAAW,IAAIzoD,GACf0oD,WAAY,IAAI1oD,IAQnB,OAFAusB,EAAQi8B,EAAMp2C,IAAO2Z,EAEdA,IAuEV,IAAI48B,GAAc,EAElB,SAASC,GAA0BC,EAAQC,GAE1C,OAASA,EAAO93C,WAAa,EAAI,IAAQ63C,EAAO73C,WAAa,EAAI,GAIlE,SAAS+3C,GAAat8B,EAAYsH,GA2CjC,IAzCA,IAAMnf,EAAQ,IAAI2zC,GAEZS,EA3EP,WAEC,IAAMz8B,EAAS,GAEf,MAAO,CAEN4H,IAAK,SAAWq0B,GAEf,QAA4B9tE,IAAvB6xC,EAAQi8B,EAAMp2C,IAElB,OAAOma,EAAQi8B,EAAMp2C,IAItB,IAAI2Z,EAEJ,OAASy8B,EAAMlhE,MAEd,IAAK,mBASL,IAAK,YACJykC,EAAW,CACVyT,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhyC,IAEpB,MAED,IAAK,aACJo+B,EAAW,CACVyT,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhyC,GACnB4yC,iBAAkB,EAClBC,gBAAiB,KAUpB,OAFAjU,EAAQi8B,EAAMp2C,IAAO2Z,EAEdA,IAsBWk9B,GAEd9mB,EAAQ,CAEbjrC,QAAS,EAETgyD,KAAM,CACLC,mBAAqB,EACrBC,aAAe,EACfC,YAAc,EACdC,gBAAkB,EAClBC,YAAc,EAEdC,uBAAyB,EACzBC,iBAAmB,EACnBC,gBAAkB,GAGnBC,QAAS,CAAE,EAAG,EAAG,GACjBC,MAAO,GACPpD,YAAa,GACbqD,kBAAmB,GACnBjqB,qBAAsB,GACtBC,wBAAyB,GACzB4mB,KAAM,GACNqD,WAAY,GACZ3pB,cAAe,GACfC,iBAAkB,GAClBsmB,SAAU,GACVqD,aAAc,KACdC,aAAc,KACdlmD,MAAO,GACPmmD,YAAa,GACbxpB,eAAgB,GAChBC,kBAAmB,GACnBimB,KAAM,IAIGx+D,EAAI,EAAGA,EAAI,EAAGA,IAAOg6C,EAAMynB,MAAMjiE,KAAM,IAAIqY,IAErD,IAAMkqD,EAAU,IAAIlqD,GACdpN,EAAU,IAAIwX,GACd+/C,EAAW,IAAI//C,GAsVrB,MAAO,CACN07B,MArVD,SAAgBvZ,EAAQi2B,GAIvB,IAFA,IAAIxvD,EAAI,EAAGZ,EAAI,EAAGzF,EAAI,EAEZxE,EAAI,EAAGA,EAAI,EAAGA,IAAOg6C,EAAMynB,MAAOzhE,GAAIqF,IAAK,EAAG,EAAG,GAE3D,IAAI27D,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEbC,EAAwB,EACxBC,EAAkB,EAClBC,EAAiB,EAErBn9B,EAAOsoB,KAAM+T,IAKb,IAFA,IAAMwB,GAA4C,IAA5B5H,EAAqC/5D,KAAKC,GAAK,EAE3DP,EAAI,EAAGC,EAAImkC,EAAOlkC,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMqgE,EAAQj8B,EAAQpkC,GAEhBmyB,EAAQkuC,EAAMluC,MACd+vC,EAAY7B,EAAM6B,UAClB14C,EAAW62C,EAAM72C,SAEjBi1C,EAAc4B,EAAMxmB,QAAUwmB,EAAMxmB,OAAOvmB,IAAQ+sC,EAAMxmB,OAAOvmB,IAAI/gB,QAAU,KAEpF,GAAK8tD,EAAM8B,eAEVt3D,GAAKsnB,EAAMtnB,EAAIq3D,EAAYD,EAC3Bh4D,GAAKkoB,EAAMloB,EAAIi4D,EAAYD,EAC3Bz9D,GAAK2tB,EAAM3tB,EAAI09D,EAAYD,OAErB,GAAK5B,EAAM+B,aAEjB,IAAM,IAAItkD,EAAI,EAAGA,EAAI,EAAGA,IAEvBk8B,EAAMynB,MAAO3jD,GAAI2Q,gBAAiB4xC,EAAMgC,GAAGC,aAAcxkD,GAAKokD,QAIzD,GAAK7B,EAAMkC,mBAAqB,CAEtC,IAAM3+B,EAAWnX,EAAMuf,IAAKq0B,GAI5B,GAFAz8B,EAASzR,MAAMhjB,KAAMkxD,EAAMluC,OAAQnsB,eAAgBq6D,EAAM6B,UAAYD,GAEhE5B,EAAMx3C,WAAa,CAEvB,IAAMgxB,EAASwmB,EAAMxmB,OAEf2oB,EAAiB3B,EAAY70B,IAAKq0B,GAExCmC,EAAenrB,WAAawC,EAAO4oB,KACnCD,EAAelrB,iBAAmBuC,EAAO6oB,WACzCF,EAAejrB,aAAesC,EAAO5/B,OACrCuoD,EAAehrB,cAAgBqC,EAAO8oB,QAEtC3oB,EAAM0nB,kBAAmBV,GAAsBwB,EAC/CxoB,EAAMvC,qBAAsBupB,GAAsBvC,EAClDzkB,EAAMtC,wBAAyBspB,GAAsBX,EAAMxmB,OAAOvuC,OAElE+1D,IAIDrnB,EAAMqkB,YAAa2C,GAAsBp9B,EAEzCo9B,SAEM,GAAKX,EAAMuC,YAAc,CAE/B,IAAMh/B,EAAWnX,EAAMuf,IAAKq0B,GAW5B,GATAz8B,EAAS3e,SAASyE,sBAAuB22C,EAAMrnD,aAE/C4qB,EAASzR,MAAMhjB,KAAMgjB,GAAQnsB,eAAgBk8D,EAAYD,GACzDr+B,EAASpa,SAAWA,EAEpBoa,EAASgU,QAAUt3C,KAAKqE,IAAK07D,EAAM75D,OACnCo9B,EAASiU,YAAcv3C,KAAKqE,IAAK07D,EAAM75D,OAAU,EAAI65D,EAAMwC,WAC3Dj/B,EAASkU,MAAQuoB,EAAMvoB,MAElBuoB,EAAMx3C,WAAa,CAEvB,IAAMgxB,EAASwmB,EAAMxmB,OAEf2oB,EAAiB3B,EAAY70B,IAAKq0B,GAExCmC,EAAenrB,WAAawC,EAAO4oB,KACnCD,EAAelrB,iBAAmBuC,EAAO6oB,WACzCF,EAAejrB,aAAesC,EAAO5/B,OACrCuoD,EAAehrB,cAAgBqC,EAAO8oB,QAEtC3oB,EAAM2nB,WAAYT,GAAesB,EACjCxoB,EAAMhC,cAAekpB,GAAezC,EACpCzkB,EAAM/B,iBAAkBipB,GAAeb,EAAMxmB,OAAOvuC,OAEpDi2D,IAIDvnB,EAAMskB,KAAM4C,GAAet9B,EAE3Bs9B,SAEM,GAAKb,EAAMyC,gBAAkB,CAEnC,IAAMl/B,EAAWnX,EAAMuf,IAAKq0B,GAM5Bz8B,EAASzR,MAAMhjB,KAAMgjB,GAAQnsB,eAAgBk8D,GAE7Ct+B,EAAS08B,UAAUj7D,IAAmB,GAAdg7D,EAAMpzD,MAAa,EAAK,GAChD22B,EAAS28B,WAAWl7D,IAAK,EAAoB,GAAfg7D,EAAMnzD,OAAc,GAElD8sC,EAAMukB,SAAU4C,GAAmBv9B,EAEnCu9B,SAEM,GAAKd,EAAM0C,aAAe,CAEhC,IAAMn/B,EAAWnX,EAAMuf,IAAKq0B,GAM5B,GAJAz8B,EAASzR,MAAMhjB,KAAMkxD,EAAMluC,OAAQnsB,eAAgBq6D,EAAM6B,UAAYD,GACrEr+B,EAASpa,SAAW62C,EAAM72C,SAC1Boa,EAASkU,MAAQuoB,EAAMvoB,MAElBuoB,EAAMx3C,WAAa,CAEvB,IAAMgxB,EAASwmB,EAAMxmB,OAEf2oB,EAAiB3B,EAAY70B,IAAKq0B,GAExCmC,EAAenrB,WAAawC,EAAO4oB,KACnCD,EAAelrB,iBAAmBuC,EAAO6oB,WACzCF,EAAejrB,aAAesC,EAAO5/B,OACrCuoD,EAAehrB,cAAgBqC,EAAO8oB,QACtCH,EAAepqB,iBAAmByB,EAAOlhC,OAAOwN,KAChDq8C,EAAenqB,gBAAkBwB,EAAOlhC,OAAOyN,IAE/C4zB,EAAM8nB,YAAab,GAAgBuB,EACnCxoB,EAAM1B,eAAgB2oB,GAAgBxC,EACtCzkB,EAAMzB,kBAAmB0oB,GAAgBZ,EAAMxmB,OAAOvuC,OAEtDg2D,IAIDtnB,EAAMr+B,MAAOslD,GAAgBr9B,EAE7Bq9B,SAEM,GAAKZ,EAAM2C,kBAAoB,CAErC,IAAMp/B,EAAWnX,EAAMuf,IAAKq0B,GAE5Bz8B,EAAS6U,SAAStpC,KAAMkxD,EAAMluC,OAAQnsB,eAAgBk8D,EAAYD,GAClEr+B,EAAS8U,YAAYvpC,KAAMkxD,EAAM3nB,aAAc1yC,eAAgBk8D,EAAYD,GAE3EjoB,EAAMwkB,KAAM4C,GAAex9B,EAE3Bw9B,KAMGD,EAAiB,IAEhBv1B,EAAaC,WAWqC,IAAjDvH,EAAWmc,IAAK,6BAPrBzG,EAAM4nB,aAAelsB,GAAYutB,YACjCjpB,EAAM6nB,aAAensB,GAAYwtB,cAWiC,IAAtD5+B,EAAWmc,IAAK,kCAE3BzG,EAAM4nB,aAAelsB,GAAYytB,WACjCnpB,EAAM6nB,aAAensB,GAAY0tB,YAIjC99D,QAAQ3T,MAAO,gFAQlBqoD,EAAMwnB,QAAS,GAAM32D,EACrBmvC,EAAMwnB,QAAS,GAAMv3D,EACrB+vC,EAAMwnB,QAAS,GAAMh9D,EAErB,IAAMu8D,EAAO/mB,EAAM+mB,KAEdA,EAAKC,oBAAsBA,GAC/BD,EAAKE,cAAgBA,GACrBF,EAAKG,aAAeA,GACpBH,EAAKI,iBAAmBA,GACxBJ,EAAKK,aAAeA,GACpBL,EAAKM,wBAA0BA,GAC/BN,EAAKO,kBAAoBA,GACzBP,EAAKQ,iBAAmBA,IAExBvnB,EAAMqkB,YAAYn+D,OAAS8gE,EAC3BhnB,EAAMskB,KAAKp+D,OAASghE,EACpBlnB,EAAMukB,SAASr+D,OAASihE,EACxBnnB,EAAMr+B,MAAMzb,OAAS+gE,EACrBjnB,EAAMwkB,KAAKt+D,OAASkhE,EAEpBpnB,EAAM0nB,kBAAkBxhE,OAASmhE,EACjCrnB,EAAMvC,qBAAqBv3C,OAASmhE,EACpCrnB,EAAM8nB,YAAY5hE,OAASohE,EAC3BtnB,EAAM1B,eAAep4C,OAASohE,EAC9BtnB,EAAM2nB,WAAWzhE,OAASqhE,EAC1BvnB,EAAMhC,cAAc93C,OAASqhE,EAC7BvnB,EAAMtC,wBAAwBx3C,OAASmhE,EACvCrnB,EAAMzB,kBAAkBr4C,OAASohE,EACjCtnB,EAAM/B,iBAAiB/3C,OAASqhE,EAEhCR,EAAKC,kBAAoBA,EACzBD,EAAKE,YAAcA,EACnBF,EAAKG,WAAaA,EAClBH,EAAKI,eAAiBA,EACtBJ,EAAKK,WAAaA,EAElBL,EAAKM,sBAAwBA,EAC7BN,EAAKO,gBAAkBA,EACvBP,EAAKQ,eAAiBA,EAEtBvnB,EAAMjrC,QAAUyxD,OA6FjB6C,UAvFD,SAAoBj/B,EAAQzrB,GAU3B,IARA,IAAIqoD,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEX5e,EAAa7pC,EAAOE,mBAEhB7Y,EAAI,EAAGC,EAAImkC,EAAOlkC,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMqgE,EAAQj8B,EAAQpkC,GAEtB,GAAKqgE,EAAMkC,mBAAqB,CAE/B,IAAM3+B,EAAWoW,EAAMqkB,YAAa2C,GAEpCp9B,EAASlkB,UAAUgK,sBAAuB22C,EAAMrnD,aAChD+oD,EAAQr4C,sBAAuB22C,EAAMxgE,OAAOmZ,aAC5C4qB,EAASlkB,UAAU7F,IAAKkoD,GACxBn+B,EAASlkB,UAAUsC,mBAAoBwgC,GAEvCwe,SAEM,GAAKX,EAAMuC,YAAc,CAE/B,IAAMh/B,EAAWoW,EAAMskB,KAAM4C,GAE7Bt9B,EAAS3e,SAASyE,sBAAuB22C,EAAMrnD,aAC/C4qB,EAAS3e,SAASrM,aAAc4pC,GAEhC5e,EAASlkB,UAAUgK,sBAAuB22C,EAAMrnD,aAChD+oD,EAAQr4C,sBAAuB22C,EAAMxgE,OAAOmZ,aAC5C4qB,EAASlkB,UAAU7F,IAAKkoD,GACxBn+B,EAASlkB,UAAUsC,mBAAoBwgC,GAEvC0e,SAEM,GAAKb,EAAMyC,gBAAkB,CAEnC,IAAMl/B,EAAWoW,EAAMukB,SAAU4C,GAEjCv9B,EAAS3e,SAASyE,sBAAuB22C,EAAMrnD,aAC/C4qB,EAAS3e,SAASrM,aAAc4pC,GAGhCwf,EAASsB,WACT74D,EAAQ0E,KAAMkxD,EAAMrnD,aACpBvO,EAAQ2e,YAAao5B,GACrBwf,EAASl4C,gBAAiBrf,GAE1Bm5B,EAAS08B,UAAUj7D,IAAmB,GAAdg7D,EAAMpzD,MAAa,EAAK,GAChD22B,EAAS28B,WAAWl7D,IAAK,EAAoB,GAAfg7D,EAAMnzD,OAAc,GAElD02B,EAAS08B,UAAU1nD,aAAcopD,GACjCp+B,EAAS28B,WAAW3nD,aAAcopD,GAElCb,SAEM,GAAKd,EAAM0C,aAAe,CAEhC,IAAMn/B,EAAWoW,EAAMr+B,MAAOslD,GAE9Br9B,EAAS3e,SAASyE,sBAAuB22C,EAAMrnD,aAC/C4qB,EAAS3e,SAASrM,aAAc4pC,GAEhCye,SAEM,GAAKZ,EAAM2C,kBAAoB,CAErC,IAAMp/B,EAAWoW,EAAMwkB,KAAM4C,GAE7Bx9B,EAASlkB,UAAUgK,sBAAuB22C,EAAMrnD,aAChD4qB,EAASlkB,UAAUsC,mBAAoBwgC,GACvC5e,EAASlkB,UAAU7Y,YAEnBu6D,OAWFpnB,MAAOA,GAKT,SAASupB,GAAkBj/B,EAAYsH,GAEtC,IAAMxH,EAAS,IAAIw8B,GAAat8B,EAAYsH,GAEtC43B,EAAc,GACdC,EAAe,GAwCrB,MAAO,CACN/gB,KAvCD,WAEC8gB,EAAYtjE,OAAS,EACrBujE,EAAavjE,OAAS,GAqCtB85C,MATa,CACbwpB,YAAaA,EACbC,aAAcA,EAEdr/B,OAAQA,GAMRs/B,YAtBD,SAAsBrJ,GAErBj2B,EAAOuZ,MAAO6lB,EAAanJ,IAqB3BsJ,gBAjBD,SAA0BhrD,GAEzByrB,EAAOi/B,UAAWG,EAAa7qD,IAiB/BirD,UArCD,SAAoBvD,GAEnBmD,EAAYhkE,KAAM6gE,IAoClBwD,WAhCD,SAAqBC,GAEpBL,EAAajkE,KAAMskE,KAmCrB,SAASC,GAAmBz/B,EAAYsH,GAEvC,IAAIo4B,EAAe,IAAIj4B,QAoCvB,MAAO,CACNC,IAnCD,SAAc9E,GAA6B,IAEtC+8B,EAFgB/D,EAAsB,uDAAJ,EAwBtC,OApBmC,IAA9B8D,EAAavjB,IAAKvZ,IAEtB+8B,EAAc,IAAIV,GAAkBj/B,EAAYsH,GAChDo4B,EAAa3+D,IAAK6hC,EAAO,CAAE+8B,KAItB/D,GAAmB8D,EAAah4B,IAAK9E,GAAQhnC,QAEjD+jE,EAAc,IAAIV,GAAkBj/B,EAAYsH,GAChDo4B,EAAah4B,IAAK9E,GAAQ1nC,KAAMykE,IAIhCA,EAAcD,EAAah4B,IAAK9E,GAASg5B,GAMpC+D,GAYPtxD,QARD,WAECqxD,EAAe,IAAIj4B,U,IA6Bf4wB,G,kDAEL,WAAa5wC,GAAa,kCAEzB,gBAEK5sB,KAAO,oBAEZ,EAAKy7D,aAAez9D,GAEpB,EAAKm2B,IAAM,KAEX,EAAKE,SAAW,KAEhB,EAAKU,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAKwB,WAAY,EACjB,EAAKC,mBAAqB,EAE1B,EAAKpG,KAAM,EAEX,EAAKgJ,UAAW1M,GArBS,E,wCAyB1B,SAAM3c,GAiBL,OAfA,4DAAYA,GAEZld,KAAK0oE,aAAexrD,EAAOwrD,aAE3B1oE,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAE/BliC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBAE1B3jC,S,GA5CuBs9B,IAkDhCmtC,GAAkBn1D,UAAU08D,qBAAsB,E,IAoB5CtH,G,kDAEL,WAAa7wC,GAAa,kCAEzB,gBAEK5sB,KAAO,uBAEZ,EAAKu6C,kBAAoB,IAAI7hC,GAC7B,EAAK8hC,aAAe,EACpB,EAAKC,YAAc,IAEnB,EAAKtmB,IAAM,KAEX,EAAKE,SAAW,KAEhB,EAAKU,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAK3E,KAAM,EAEX,EAAKgJ,UAAW1M,GApBS,E,wCAwB1B,SAAM3c,GAgBL,OAdA,4DAAYA,GAEZld,KAAKwnD,kBAAkBvqC,KAAMC,EAAOsqC,mBACpCxnD,KAAKynD,aAAevqC,EAAOuqC,aAC3BznD,KAAK0nD,YAAcxqC,EAAOwqC,YAE1B1nD,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAExBliC,S,GA1C0Bs9B,IAgDnCotC,GAAqBp1D,UAAU28D,wBAAyB,EAMxD,SAASC,GAAgB9e,EAAW+e,EAAUC,GAE7C,IAAIC,EAAW,IAAIj7B,GAEbk7B,EAAiB,IAAIh/D,GAC1Bi/D,EAAgB,IAAIj/D,GAEpBk/D,EAAY,IAAIh0D,GAEhBi0D,EAAiB,IAAIhI,GAAmB,CAAE/B,aAAcx9D,KACxDwnE,EAAoB,IAAIhI,GAExBiI,EAAiB,GAEjBC,EAAkBR,EAAczjB,eAE3B1vB,EAAa,CAAE4zC,EAAGnxE,EAAUoxE,EAAGrxE,EAAWsxE,EAAGpxE,GAE7CqxE,EAAyB,IAAIlhC,GAAgB,CAElDJ,SAAU,CACTuhC,YAAa,CAAEzzE,MAAO,MACtB0zE,WAAY,CAAE1zE,MAAO,IAAI8T,IACzByU,OAAQ,CAAEvoB,MAAO,GACjByhB,QAAS,CAAEzhB,MAAO,IAGnBwyC,aA/Ba,2DAgCbC,eA9Be,6kCAkCVkhC,EAA2BH,EAAuBtyD,QACxDyyD,EAAyBphC,QAAQqhC,gBAAkB,EAEnD,IAAMC,EAAgB,IAAI1qC,GAC1B0qC,EAActpC,aACb,WACA,IAAIpD,GACH,IAAIzsB,aAAc,EAAI,GAAK,EAAG,GAAK,GAAK,EAAG,IAAO,EAAG,EAAG,KACxD,IAIF,IAAMo5D,EAAiB,IAAI3kC,GAAM0kC,EAAeL,GAE1C3iC,EAAQrwC,KA4Id,SAASuzE,EAAS5rB,EAAQlhC,GAEzB,IAAMoD,EAAWsoD,EAASxwD,OAAQ2xD,GAIlCN,EAAuBthC,SAASuhC,YAAYzzE,MAAQmoD,EAAOvmB,IAAI/gB,QAC/D2yD,EAAuBthC,SAASwhC,WAAW1zE,MAAQmoD,EAAO8oB,QAC1DuC,EAAuBthC,SAAS3pB,OAAOvoB,MAAQmoD,EAAO5/B,OACtDirD,EAAuBthC,SAASzwB,QAAQzhB,MAAQmoD,EAAO6rB,YACvDpgB,EAAU/d,gBAAiBsS,EAAO8rB,SAClCrgB,EAAUld,QACVkd,EAAUsgB,mBAAoBjtD,EAAQ,KAAMoD,EAAUmpD,EAAwBM,EAAgB,MAI9FH,EAAyBzhC,SAASuhC,YAAYzzE,MAAQmoD,EAAO8rB,QAAQpzD,QACrE8yD,EAAyBzhC,SAASwhC,WAAW1zE,MAAQmoD,EAAO8oB,QAC5D0C,EAAyBzhC,SAAS3pB,OAAOvoB,MAAQmoD,EAAO5/B,OACxDorD,EAAyBzhC,SAASzwB,QAAQzhB,MAAQmoD,EAAO6rB,YACzDpgB,EAAU/d,gBAAiBsS,EAAOvmB,KAClCgyB,EAAUld,QACVkd,EAAUsgB,mBAAoBjtD,EAAQ,KAAMoD,EAAUspD,EAA0BG,EAAgB,MAIjG,SAASK,EAAkBtqD,EAAQQ,EAAUsQ,EAAUg0C,EAAOjoB,EAAkBC,EAAiBl5C,GAEhG,IAAI2mE,EAAS,KAEPC,GAA0C,IAAvB1F,EAAM0C,aAA0BxnD,EAAOyqD,uBAAyBzqD,EAAO0qD,oBAYhG,GARCH,OAFuBvzE,IAAnBwzE,EAEKA,GAIyB,IAAvB1F,EAAM0C,aAA0B6B,EAAoBD,EAIzDrf,EAAU1D,uBAAiD,IAAzBv1B,EAAS6E,aAA2D,IAAnC7E,EAAS2E,eAAe9wB,QAC/FmsB,EAAS6H,iBAAkD,IAA/B7H,EAAS8H,mBACrC9H,EAASmH,UAAYnH,EAASsJ,UAAY,EAAM,CAKlD,IAAMuwC,EAAOJ,EAAOx3D,KAAM63D,EAAO95C,EAAS/d,KAEtC83D,EAAsBvB,EAAgBqB,QAEb3zE,IAAxB6zE,IAEJA,EAAsB,GACtBvB,EAAgBqB,GAASE,GAI1B,IAAIC,EAAiBD,EAAqBD,QAElB5zE,IAAnB8zE,IAEJA,EAAiBP,EAAOlzD,QACxBwzD,EAAqBD,GAASE,GAI/BP,EAASO,EAuCV,OAnCAP,EAAOl9C,QAAUyD,EAASzD,QAC1Bk9C,EAAOlwC,UAAYvJ,EAASuJ,UAI3BkwC,EAAOn2C,KAFHxwB,IAASzL,EAE2B,OAAxB24B,EAAS8E,WAAwB9E,EAAS8E,WAAa9E,EAASsD,KAIxC,OAAxBtD,EAAS8E,WAAwB9E,EAAS8E,WAAaA,EAAY9E,EAASsD,MAI7Fm2C,EAAOtyC,SAAWnH,EAASmH,SAC3BsyC,EAAOnwC,UAAYtJ,EAASsJ,UAE5BmwC,EAAO50C,YAAc7E,EAAS6E,YAC9B40C,EAAO90C,eAAiB3E,EAAS2E,eACjC80C,EAAO70C,iBAAmB5E,EAAS4E,iBAEnC60C,EAAO5xC,gBAAkB7H,EAAS6H,gBAClC4xC,EAAO3xC,kBAAoB9H,EAAS8H,kBACpC2xC,EAAO1xC,iBAAmB/H,EAAS+H,iBAEnC0xC,EAAOjwC,mBAAqBxJ,EAASwJ,mBACrCiwC,EAAOtwC,UAAYnJ,EAASmJ,WAEA,IAAvB6qC,EAAM0C,eAA2D,IAAlC+C,EAAO3B,yBAE1C2B,EAAOpsB,kBAAkBhwB,sBAAuB22C,EAAMrnD,aACtD8sD,EAAOnsB,aAAevB,EACtB0tB,EAAOlsB,YAAcvB,GAIfytB,EAIR,SAASQ,EAAc/qD,EAAQ5C,EAAQ4tD,EAAclG,EAAOlhE,GAE3D,IAAwB,IAAnBoc,EAAOqN,QAAZ,CAIA,GAFgBrN,EAAO4L,OAAOta,KAAM8L,EAAOwO,UAEzB5L,EAAOqQ,QAAUrQ,EAAOsQ,QAAUtQ,EAAOuQ,YAEnDvQ,EAAOsN,YAAgBtN,EAAOuN,eAAiB3pB,IAASzL,MAAwB6nB,EAAOwN,eAAiBw7C,EAASiC,iBAAkBjrD,IAAa,CAEtJA,EAAOiN,gBAAgB9f,iBAAkB69D,EAAa1tD,mBAAoB0C,EAAOvC,aAEjF,IAAM+C,EAAWsoD,EAASxwD,OAAQ0H,GAC5B8Q,EAAW9Q,EAAO8Q,SAExB,GAAKvc,MAAMC,QAASsc,GAInB,IAFA,IAAM4O,EAASlf,EAASkf,OAEdwrC,EAAI,EAAGC,EAAKzrC,EAAO/6B,OAAQumE,EAAIC,EAAID,IAAO,CAEnD,IAAMjpC,EAAQvC,EAAQwrC,GAChBhlC,EAAgBpV,EAAUmR,EAAMnC,eAEtC,GAAKoG,GAAiBA,EAAc7Y,QAAU,CAE7C,IAAM+9C,EAAgBd,EAAkBtqD,EAAQQ,EAAU0lB,EAAe4+B,EAAOkG,EAAapgD,KAAMogD,EAAangD,IAAKjnB,GAErHmmD,EAAUsgB,mBAAoBW,EAAc,KAAMxqD,EAAU4qD,EAAeprD,EAAQiiB,SAM/E,GAAKnR,EAASzD,QAAU,CAE9B,IAAM+9C,EAAgBd,EAAkBtqD,EAAQQ,EAAUsQ,EAAUg0C,EAAOkG,EAAapgD,KAAMogD,EAAangD,IAAKjnB,GAEhHmmD,EAAUsgB,mBAAoBW,EAAc,KAAMxqD,EAAU4qD,EAAeprD,EAAQ,OAUtF,IAFA,IAAMa,EAAWb,EAAOa,SAEdpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5CsmE,EAAclqD,EAAUpc,GAAK2Y,EAAQ4tD,EAAclG,EAAOlhE,IA5S5DjN,KAAK+zC,SAAU,EAEf/zC,KAAK00E,YAAa,EAClB10E,KAAKopC,aAAc,EAEnBppC,KAAKiN,KAAO3L,EAEZtB,KAAKs1C,OAAS,SAAWpD,EAAQ8C,EAAOvuB,GAEvC,IAAuB,IAAlB4pB,EAAM0D,WACe,IAArB1D,EAAMqkC,aAA8C,IAAtBrkC,EAAMjH,cAElB,IAAlB8I,EAAOlkC,OAAZ,CAEA,IAAMmnC,EAAsBie,EAAUhe,kBAChCu/B,EAAiBvhB,EAAUwhB,oBAC3BC,EAAoBzhB,EAAU0hB,uBAE9BC,EAAS3hB,EAAUtL,MAGzBitB,EAAOC,YAAalzE,GACpBizE,EAAOn7B,QAAQ3Z,MAAMsoB,SAAU,EAAG,EAAG,EAAG,GACxCwsB,EAAOn7B,QAAQ35B,MAAMg1D,SAAS,GAC9BF,EAAOG,gBAAgB,GAIvB,IAAM,IAAIpnE,EAAI,EAAGgT,EAAKoxB,EAAOlkC,OAAQF,EAAIgT,EAAIhT,IAAO,CAEnD,IAAMqgE,EAAQj8B,EAAQpkC,GAChB65C,EAASwmB,EAAMxmB,OAErB,QAAgBtnD,IAAXsnD,GAOL,IAA2B,IAAtBA,EAAO+sB,aAA+C,IAAvB/sB,EAAOve,YAA3C,CAEAkpC,EAAer1D,KAAM0qC,EAAO8oB,SAE5B,IAAM0E,EAAqBxtB,EAAOytB,kBA0BlC,GAxBA9C,EAAel7C,SAAU+9C,GAEzB5C,EAAct1D,KAAM0qC,EAAO8oB,UAEtB6B,EAAe5iE,EAAIkjE,GAAmBN,EAAe3iE,EAAIijE,KAExDN,EAAe5iE,EAAIkjE,IAEvBL,EAAc7iE,EAAItB,KAAKgC,MAAOwiE,EAAkBuC,EAAmBzlE,GACnE4iE,EAAe5iE,EAAI6iE,EAAc7iE,EAAIylE,EAAmBzlE,EACxDi4C,EAAO8oB,QAAQ/gE,EAAI6iE,EAAc7iE,GAI7B4iE,EAAe3iE,EAAIijE,IAEvBL,EAAc5iE,EAAIvB,KAAKgC,MAAOwiE,EAAkBuC,EAAmBxlE,GACnE2iE,EAAe3iE,EAAI4iE,EAAc5iE,EAAIwlE,EAAmBxlE,EACxDg4C,EAAO8oB,QAAQ9gE,EAAI4iE,EAAc5iE,IAMf,OAAfg4C,EAAOvmB,MAAkBumB,EAAO0tB,oBAAsBr1E,KAAKiN,OAASzL,EAAe,CAEvF,IAAM8zE,EAAO,CAAEv5D,UAAW3W,GAAc0W,UAAW1W,GAAc4W,OAAQzV,IAEzEohD,EAAOvmB,IAAM,IAAIrhB,GAAmBuyD,EAAe5iE,EAAG4iE,EAAe3iE,EAAG2lE,GACxE3tB,EAAOvmB,IAAI/gB,QAAQ9F,KAAO4zD,EAAM5zD,KAAO,aAEvCotC,EAAO8rB,QAAU,IAAI1zD,GAAmBuyD,EAAe5iE,EAAG4iE,EAAe3iE,EAAG2lE,GAE5E3tB,EAAOlhC,OAAO8sB,yBAIf,GAAoB,OAAfoU,EAAOvmB,IAAe,CAE1B,IAAMk0C,EAAO,CAAEv5D,UAAWhX,GAAe+W,UAAW/W,GAAeiX,OAAQzV,IAE3EohD,EAAOvmB,IAAM,IAAIrhB,GAAmBuyD,EAAe5iE,EAAG4iE,EAAe3iE,EAAG2lE,GACxE3tB,EAAOvmB,IAAI/gB,QAAQ9F,KAAO4zD,EAAM5zD,KAAO,aAEvCotC,EAAOlhC,OAAO8sB,yBAIf6f,EAAU/d,gBAAiBsS,EAAOvmB,KAClCgyB,EAAUld,QAIV,IAFA,IAAMq/B,EAAgB5tB,EAAO6tB,mBAEnBC,EAAK,EAAGA,EAAKF,EAAeE,IAAQ,CAE7C,IAAMr1D,EAAWunC,EAAO+tB,YAAaD,GAErCjD,EAAUr/D,IACTo/D,EAAc7iE,EAAI0Q,EAAS1Q,EAC3B6iE,EAAc5iE,EAAIyQ,EAASzQ,EAC3B4iE,EAAc7iE,EAAI0Q,EAAS3B,EAC3B8zD,EAAc5iE,EAAIyQ,EAASzM,GAG5BohE,EAAO30D,SAAUoyD,GAEjB7qB,EAAOguB,eAAgBxH,EAAOsH,GAE9BpD,EAAW1qB,EAAOiuB,aAElBxB,EAAcp/B,EAAOvuB,EAAQkhC,EAAOlhC,OAAQ0nD,EAAOnuE,KAAKiN,MAMlD06C,EAAO0tB,oBAAsBr1E,KAAKiN,OAASzL,GAEjD+xE,EAAS5rB,EAAQlhC,GAIlBkhC,EAAOve,aAAc,QA7FpBh2B,QAAQC,KAAM,wBAAyB86D,EAAO,kBAiGhD99B,EAAMjH,aAAc,EAEpBgqB,EAAU/d,gBAAiBF,EAAqBw/B,EAAgBE,KA8KlE,SAASgB,GAAYp8B,EAAIrH,EAAYsH,GAAe,QAE7CC,EAAWD,EAAaC,SAmT9B,IAAMm8B,EAAc,IAjTpB,WAEC,IAAIC,GAAS,EAEP91C,EAAQ,IAAIzhB,GACdw3D,EAAmB,KACjBC,EAAoB,IAAIz3D,GAAS,EAAG,EAAG,EAAG,GAEhD,MAAO,CAEN03D,QAAS,SAAWC,GAEdH,IAAqBG,GAAeJ,IAExCt8B,EAAG08B,UAAWA,EAAWA,EAAWA,EAAWA,GAC/CH,EAAmBG,IAMrBC,UAAW,SAAWC,GAErBN,EAASM,GAIV9tB,SAAU,SAAW5vC,EAAGZ,EAAGzF,EAAGD,EAAGotB,IAEJ,IAAvBA,IAEJ9mB,GAAKtG,EAAG0F,GAAK1F,EAAGC,GAAKD,GAItB4tB,EAAM9sB,IAAKwF,EAAGZ,EAAGzF,EAAGD,IAEuB,IAAtC4jE,EAAkB1qD,OAAQ0U,KAE9BwZ,EAAGyO,WAAYvvC,EAAGZ,EAAGzF,EAAGD,GACxB4jE,EAAkBh5D,KAAMgjB,KAM1BsrB,MAAO,WAENwqB,GAAS,EAETC,EAAmB,KACnBC,EAAkB9iE,KAAO,EAAG,EAAG,EAAG,MA+P/BmN,EAAc,IAvPpB,WAEC,IAAIy1D,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,KAExB,MAAO,CAENvB,QAAS,SAAW72C,GAEdA,EAEJq4C,GAAQ,MAIRC,GAAS,OAMXR,QAAS,SAAWS,GAEdL,IAAqBK,GAAeZ,IAExCt8B,EAAGk9B,UAAWA,GACdL,EAAmBK,IAMrBC,QAAS,SAAWz4C,GAEnB,GAAKo4C,IAAqBp4C,EAAY,CAErC,GAAKA,EAEJ,OAASA,GAER,KAAK/6B,GAEJq2C,EAAGtb,UAAW,KACd,MAED,KAAK96B,GAEJo2C,EAAGtb,UAAW,KACd,MAED,KAAK76B,GAEJm2C,EAAGtb,UAAW,KACd,MAED,KAAK56B,GAEJk2C,EAAGtb,UAAW,KACd,MAED,KAAK36B,GAEJi2C,EAAGtb,UAAW,KACd,MAED,KAAK16B,GAEJg2C,EAAGtb,UAAW,KACd,MAED,KAAKz6B,GAEJ+1C,EAAGtb,UAAW,KACd,MAED,KAAKx6B,GAEJ81C,EAAGtb,UAAW,KACd,MAED,QAECsb,EAAGtb,UAAW,UAMhBsb,EAAGtb,UAAW,KAIfo4C,EAAmBp4C,IAMrBi4C,UAAW,SAAWC,GAErBN,EAASM,GAIV9tB,SAAU,SAAWtoC,GAEfu2D,IAAsBv2D,IAE1Bw5B,EAAGo9B,WAAY52D,GACfu2D,EAAoBv2D,IAMtBsrC,MAAO,WAENwqB,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,QA4HjBj2D,EAAgB,IApHtB,WAEC,IAAIw1D,GAAS,EAETe,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,KAE1B,MAAO,CAENpC,QAAS,SAAWqC,GAEZvB,IAEDuB,EAEJb,GAAQ,MAIRC,GAAS,QAQZR,QAAS,SAAWqB,GAEdT,IAAuBS,GAAiBxB,IAE5Ct8B,EAAG89B,YAAaA,GAChBT,EAAqBS,IAMvBX,QAAS,SAAWr4C,EAAaC,EAAY+4C,GAEvCR,IAAuBx4C,GACvBy4C,IAAsBx4C,GACtBy4C,IAA2BM,IAE/B99B,EAAGlb,YAAaA,EAAaC,EAAY+4C,GAEzCR,EAAqBx4C,EACrBy4C,EAAoBx4C,EACpBy4C,EAAyBM,IAM3BC,MAAO,SAAW94C,EAAaC,EAAcC,GAEvCs4C,IAAuBx4C,GACvBy4C,IAAwBx4C,GACxBy4C,IAAwBx4C,IAE5B6a,EAAGg+B,UAAW/4C,EAAaC,EAAcC,GAEzCs4C,EAAqBx4C,EACrBy4C,EAAsBx4C,EACtBy4C,EAAsBx4C,IAMxBw3C,UAAW,SAAWC,GAErBN,EAASM,GAIV9tB,SAAU,SAAWtS,GAEfohC,IAAwBphC,IAE5BwD,EAAGi+B,aAAczhC,GACjBohC,EAAsBphC,IAMxBsV,MAAO,WAENwqB,GAAS,EAETe,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,QAcrBM,EAAsB,GAEtBC,EAAgB,KAChBC,EAA2B,GAE3BC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE1BnqB,EAAchV,EAAGmQ,aAAc,OAEjCivB,GAAqB,EACrBh8D,EAAU,EACRi8D,GAAYr/B,EAAGmQ,aAAc,OAEK,IAAnCkvB,GAAUzrE,QAAS,UAEvBwP,EAAUkoB,WAAY,cAAcC,KAAM8zC,IAAa,IACvDD,EAAuBh8D,GAAW,IAEgB,IAAvCi8D,GAAUzrE,QAAS,eAE9BwP,EAAUkoB,WAAY,kBAAkBC,KAAM8zC,IAAa,IAC3DD,EAAuBh8D,GAAW,GAInC,IAAIk8D,GAAqB,KACrBC,GAAuB,GAErBC,GAAex/B,EAAGmQ,aAAc,MAChCsvB,GAAgBz/B,EAAGmQ,aAAc,MAEjCuvB,IAAiB,IAAI36D,IAAUnF,UAAW4/D,IAC1CG,IAAkB,IAAI56D,IAAUnF,UAAW6/D,IAEjD,SAASG,GAAepsE,EAAMU,EAAQkT,GAErC,IAAMvC,EAAO,IAAI1E,WAAY,GACvByG,EAAUo5B,EAAG4/B,gBAEnB5/B,EAAG6/B,YAAarsE,EAAMoT,GACtBo5B,EAAG8/B,cAAetsE,EAAM,MAAO,MAC/BwsC,EAAG8/B,cAAetsE,EAAM,MAAO,MAE/B,IAAM,IAAIa,EAAI,EAAGA,EAAI+S,EAAO/S,IAE3B2rC,EAAG+/B,WAAY7rE,EAASG,EAAG,EAAG,KAAM,EAAG,EAAG,EAAG,KAAM,KAAMwQ,GAI1D,OAAO+B,EAIR,IAAMo5D,GAAgB,GAqBtB,SAAShD,GAAQ1+C,IAEmB,IAA9B4/C,EAAqB5/C,KAEzB0hB,EAAGg9B,OAAQ1+C,GACX4/C,EAAqB5/C,IAAO,GAM9B,SAAS2+C,GAAS3+C,IAEkB,IAA9B4/C,EAAqB5/C,KAEzB0hB,EAAGi9B,QAAS3+C,GACZ4/C,EAAqB5/C,IAAO,GApC9B0hD,GAAe,MAASJ,GAAe,KAAM,KAAM,GACnDI,GAAe,OAAUJ,GAAe,MAAO,MAAO,GAItDvD,EAAYvtB,SAAU,EAAG,EAAG,EAAG,GAC/BjoC,EAAYioC,SAAU,GACtBhoC,EAAcgoC,SAAU,GAExBkuB,GAAQ,MACRn2D,EAAYs2D,QAASrzE,IAErBm2E,IAAc,GACdC,GAAaz4E,GACbu1E,GAAQ,MAERzB,GAAalzE,GA0Fb,IAAM83E,IAAY,mBACfx3E,EAAe,OADA,cAEfC,EAAoB,OAFL,cAGfC,EAA2B,OAHZ,GAMlB,GAAKq3C,EAEJigC,GAAcr3E,GAAgB,MAC9Bq3E,GAAcp3E,GAAgB,UAExB,CAEN,IAAMqnD,GAAYzX,EAAW0H,IAAK,oBAEf,OAAd+P,KAEJ+vB,GAAcr3E,GAAgBsnD,GAAUgwB,QACxCD,GAAcp3E,GAAgBqnD,GAAUiwB,SAM1C,IAAMC,IAAU,mBACbt3E,EAAc,GADD,cAEbC,EAAa,GAFA,cAGbC,EAAkB,KAHL,cAIbE,EAAkB,KAJL,cAKbM,GAA0B,KALb,cAMbF,GAAkB,KANL,cAObF,EAAkB,KAPL,cAQbH,EAA0B,KARb,cASbE,EAA0B,KATb,cAUbI,GAA0B,KAVb,cAWbF,GAA0B,KAXb,GAchB,SAASgyE,GAAax3C,EAAUO,EAAeF,EAAUC,EAAUI,EAAoBF,EAAeC,EAAewB,GAEpH,GAAKjC,IAAa17B,GAoBlB,IAPgC,IAA3Bi2E,IAEJtB,GAAQ,MACRsB,GAAyB,GAIrBv6C,IAAar7B,EAmFlB+7B,EAAqBA,GAAsBH,EAC3CC,EAAgBA,GAAiBH,EACjCI,EAAgBA,GAAiBH,EAE5BC,IAAkBk6C,GAAwB/5C,IAAuBk6C,IAErE3+B,EAAGugC,sBAAuBJ,GAAc77C,GAAiB67C,GAAc17C,IAEvE+5C,EAAuBl6C,EACvBq6C,EAA4Bl6C,GAIxBL,IAAaq6C,GAAmBp6C,IAAaq6C,GAAmBn6C,IAAkBq6C,GAAwBp6C,IAAkBq6C,IAEhI7+B,EAAGwgC,kBAAmBF,GAAYl8C,GAAYk8C,GAAYj8C,GAAYi8C,GAAY/7C,GAAiB+7C,GAAY97C,IAE/Gi6C,EAAkBr6C,EAClBs6C,EAAkBr6C,EAClBu6C,EAAuBr6C,EACvBs6C,EAAuBr6C,GAIxB+5C,EAAkBx6C,EAClB+6C,EAA2B,UA1G1B,GAAK/6C,IAAaw6C,GAAmBv4C,IAAuB84C,EAA2B,CAWtF,GATKN,IAAyB71E,GAAeg2E,IAA8Bh2E,IAE1Eq3C,EAAG1b,cAAe,OAElBk6C,EAAuB71E,EACvBg2E,EAA4Bh2E,GAIxBq9B,EAEJ,OAASjC,GAER,KAAKz7B,EACJ03C,EAAGwgC,kBAAmB,EAAG,IAAK,EAAG,KACjC,MAED,KAAKj4E,EACJy3C,EAAGygC,UAAW,EAAG,GACjB,MAED,KAAKj4E,EACJw3C,EAAGwgC,kBAAmB,EAAG,EAAG,IAAK,KACjC,MAED,KAAK/3E,EACJu3C,EAAGwgC,kBAAmB,EAAG,IAAK,EAAG,KACjC,MAED,QACC7mE,QAAQ3T,MAAO,uCAAwC+9B,QAOzD,OAASA,GAER,KAAKz7B,EACJ03C,EAAGwgC,kBAAmB,IAAK,IAAK,EAAG,KACnC,MAED,KAAKj4E,EACJy3C,EAAGygC,UAAW,IAAK,GACnB,MAED,KAAKj4E,EACJw3C,EAAGygC,UAAW,EAAG,KACjB,MAED,KAAKh4E,EACJu3C,EAAGygC,UAAW,EAAG,KACjB,MAED,QACC9mE,QAAQ3T,MAAO,uCAAwC+9B,GAO1D06C,EAAkB,KAClBC,EAAkB,KAClBE,EAAuB,KACvBC,EAAuB,KAEvBN,EAAkBx6C,EAClB+6C,EAA2B94C,QA3FI,IAA3Bs4C,IAEJrB,GAAS,MACTqB,GAAyB,GAuK5B,SAAS2B,GAAczR,GAEjBuQ,IAAqBvQ,IAEpBA,EAEJxuB,EAAG0gC,UAAW,MAId1gC,EAAG0gC,UAAW,MAIf3B,EAAmBvQ,GAMrB,SAAS0R,GAAaS,GAEhBA,IAAan5E,GAEjBw1E,GAAQ,MAEH2D,IAAa3B,IAEZ2B,IAAal5E,EAEjBu4C,EAAG2gC,SAAU,MAEFA,IAAaj5E,EAExBs4C,EAAG2gC,SAAU,MAIb3gC,EAAG2gC,SAAU,QAQf1D,GAAS,MAIV+B,EAAkB2B,EAgBnB,SAASC,GAAkBj7C,EAAek7C,EAAQna,GAE5C/gC,GAEJq3C,GAAQ,OAEHkC,IAA+B2B,GAAU1B,IAA8BzY,IAE3E1mB,EAAGra,cAAek7C,EAAQna,GAE1BwY,EAA6B2B,EAC7B1B,EAA4BzY,IAM7BuW,GAAS,OAsBX,SAAS6D,GAAeC,QAEJn6E,IAAdm6E,IAA0BA,EAAY,MAAQ/rB,EAAc,GAE5DsqB,KAAuByB,IAE3B/gC,EAAG8gC,cAAeC,GAClBzB,GAAqByB,GA+MvB,MAAO,CAEN5gC,QAAS,CACR3Z,MAAO61C,EACP71D,MAAOK,EACP21B,QAAS11B,GAGVk2D,OAAQA,GACRC,QAASA,GAET+D,gBAllBD,SAA0B9sE,EAAQ+sE,GAIjC,OAFqB,OAAhBA,GAA0C,OAAlB9C,IAAyB8C,EAAc9C,GAE/DC,EAA0BlqE,KAAa+sE,IAE3CjhC,EAAGghC,gBAAiB9sE,EAAQ+sE,GAE5B7C,EAA0BlqE,GAAW+sE,EAEhC/gC,IAIY,QAAXhsC,IAEJkqE,EAA0B,OAAU6C,GAIrB,QAAX/sE,IAEJkqE,EAA0B,OAAU6C,KAM/B,IAujBRC,kBA/lBD,SAA4BD,GAEtBA,IAAgB9C,IAEpBn+B,EAAGghC,gBAAiB,MAAOC,GAE3B9C,EAAgB8C,IA2lBjBE,WAjjBD,SAAqB/vB,GAEpB,OAAKitB,IAAmBjtB,IAEvBpR,EAAGmhC,WAAY/vB,GAEfitB,EAAiBjtB,GAEV,IA2iBRmqB,YAAaA,GACb6F,YAxXD,SAAsB1gD,EAAU2gD,GAE/B3gD,EAASsD,OAAS97B,EACf+0E,GAAS,MACTD,GAAQ,MAEX,IAAIxO,EAAc9tC,EAASsD,OAAS/7B,EAC/Bo5E,IAAc7S,GAAcA,GAEjCyR,GAAczR,GAEZ9tC,EAASqD,WAAaz7B,IAA2C,IAAzBo4B,EAASyD,YAChDo3C,GAAalzE,GACbkzE,GAAa76C,EAASqD,SAAUrD,EAAS4D,cAAe5D,EAAS0D,SAAU1D,EAAS2D,SAAU3D,EAAS+D,mBAAoB/D,EAAS6D,cAAe7D,EAAS8D,cAAe9D,EAASsF,oBAEvLnf,EAAYs2D,QAASz8C,EAASgE,WAC9B7d,EAAY20D,QAAS96C,EAASiE,WAC9B9d,EAAY41D,QAAS/7C,EAASkE,YAC9By3C,EAAYI,QAAS/7C,EAAS+E,YAE9B,IAAML,EAAe1E,EAAS0E,aAC9Bte,EAAc00D,QAASp2C,GAClBA,IAEJte,EAAc21D,QAAS/7C,EAASmE,kBAChC/d,EAAcq2D,QAASz8C,EAASoE,YAAapE,EAASqE,WAAYrE,EAASsE,iBAC3Ele,EAAci3D,MAAOr9C,EAASuE,YAAavE,EAASwE,aAAcxE,EAASyE,eAI5Ey7C,GAAkBlgD,EAASiF,cAAejF,EAASkF,oBAAqBlF,EAASmF,qBAEpD,IAA7BnF,EAASqF,gBACNi3C,GAAQ,OACRC,GAAS,QAwVZgD,aAAcA,GACdC,YAAaA,GAEboB,aA/RD,SAAuBhgE,GAEjBA,IAAU29D,IAETG,GAAqBp/B,EAAGuhC,UAAWjgE,GAExC29D,EAAmB39D,IA0RpBs/D,iBAAkBA,GAElBnF,eA/PD,SAAyB/0D,GAEnBA,EAEJs2D,GAAQ,MAIRC,GAAS,OAyPV6D,cAAeA,GACfjB,YArOD,SAAsB2B,EAAWC,GAEJ,OAAvBnC,IAEJwB,KAID,IAAIY,EAAenC,GAAsBD,SAEnB14E,IAAjB86E,IAEJA,EAAe,CAAEluE,UAAM5M,EAAWggB,aAAShgB,GAC3C24E,GAAsBD,IAAuBoC,GAIzCA,EAAaluE,OAASguE,GAAaE,EAAa96D,UAAY66D,IAEhEzhC,EAAG6/B,YAAa2B,EAAWC,GAAgBzB,GAAewB,IAE1DE,EAAaluE,KAAOguE,EACpBE,EAAa96D,QAAU66D,IAgNxBE,cA1MD,WAEC,IAAMD,EAAenC,GAAsBD,SAErB14E,IAAjB86E,QAAoD96E,IAAtB86E,EAAaluE,OAE/CwsC,EAAG6/B,YAAa6B,EAAaluE,KAAM,MAEnCkuE,EAAaluE,UAAO5M,EACpB86E,EAAa96D,aAAUhgB,IAkMxBg7E,qBA5LD,WAEC,IAEC5hC,EAAG4hC,qBAAqBl7E,MAAOs5C,EAAIv5C,WAElC,MAAQT,GAET2T,QAAQ3T,MAAO,oBAAqBA,KAqLrC+5E,WA/KD,WAEC,IAEC//B,EAAG+/B,WAAWr5E,MAAOs5C,EAAIv5C,WAExB,MAAQT,GAET2T,QAAQ3T,MAAO,oBAAqBA,KAwKrC67E,WAlKD,WAEC,IAEC7hC,EAAG6hC,WAAWn7E,MAAOs5C,EAAIv5C,WAExB,MAAQT,GAET2T,QAAQ3T,MAAO,oBAAqBA,KA4JrCygB,QApJD,SAAkBA,IAEyB,IAArCi5D,GAAe5tD,OAAQrL,KAE3Bu5B,EAAGv5B,QAASA,EAAQxQ,EAAGwQ,EAAQvQ,EAAGuQ,EAAQzB,EAAGyB,EAAQvM,GACrDwlE,GAAel8D,KAAMiD,KAgJtBE,SA1ID,SAAmBA,IAE0B,IAAvCg5D,GAAgB7tD,OAAQnL,KAE5Bq5B,EAAGr5B,SAAUA,EAAS1Q,EAAG0Q,EAASzQ,EAAGyQ,EAAS3B,EAAG2B,EAASzM,GAC1DylE,GAAgBn8D,KAAMmD,KAuIvBmrC,MA/HD,WAIC9R,EAAGi9B,QAAS,MACZj9B,EAAGi9B,QAAS,MACZj9B,EAAGi9B,QAAS,MACZj9B,EAAGi9B,QAAS,OACZj9B,EAAGi9B,QAAS,MACZj9B,EAAGi9B,QAAS,MACZj9B,EAAGi9B,QAAS,OAEZj9B,EAAG1b,cAAe,OAClB0b,EAAGygC,UAAW,EAAG,GACjBzgC,EAAGwgC,kBAAmB,EAAG,EAAG,EAAG,GAE/BxgC,EAAG08B,WAAW,GAAM,GAAM,GAAM,GAChC18B,EAAGyO,WAAY,EAAG,EAAG,EAAG,GAExBzO,EAAGk9B,WAAW,GACdl9B,EAAGtb,UAAW,KACdsb,EAAGo9B,WAAY,GAEfp9B,EAAG89B,YAAa,YAChB99B,EAAGlb,YAAa,IAAK,EAAG,YACxBkb,EAAGg+B,UAAW,KAAM,KAAM,MAC1Bh+B,EAAGi+B,aAAc,GAEjBj+B,EAAG2gC,SAAU,MACb3gC,EAAG0gC,UAAW,MAEd1gC,EAAGra,cAAe,EAAG,GAErBqa,EAAG8gC,cAAe,OAElB9gC,EAAGghC,gBAAiB,MAAO,OAET,IAAb9gC,IAEJF,EAAGghC,gBAAiB,MAAO,MAC3BhhC,EAAGghC,gBAAiB,MAAO,OAI5BhhC,EAAGmhC,WAAY,MAEfnhC,EAAGuhC,UAAW,GAEdvhC,EAAGv5B,QAAS,EAAG,EAAGu5B,EAAG3+B,OAAOC,MAAO0+B,EAAG3+B,OAAOE,QAC7Cy+B,EAAGr5B,SAAU,EAAG,EAAGq5B,EAAG3+B,OAAOC,MAAO0+B,EAAG3+B,OAAOE,QAI9C28D,EAAsB,GAEtBoB,GAAqB,KACrBC,GAAuB,GAEvBpB,EAAgB,KAChBC,EAA2B,GAE3BC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE5BO,GAAehmE,IAAK,EAAG,EAAGsmC,EAAG3+B,OAAOC,MAAO0+B,EAAG3+B,OAAOE,QACrDo+D,GAAgBjmE,IAAK,EAAG,EAAGsmC,EAAG3+B,OAAOC,MAAO0+B,EAAG3+B,OAAOE,QAEtD86D,EAAYvqB,QACZjrC,EAAYirC,QACZhrC,EAAcgrC,UA+ChB,SAASgwB,GAAeC,EAAKppC,EAAY0V,EAAO7C,EAAYvL,EAAc+hC,EAAOl8E,GAAO,QASnFka,EAPEkgC,EAAWD,EAAaC,SACxB8U,EAAc/U,EAAa+U,YAC3BG,EAAiBlV,EAAakV,eAC9BD,EAAiBjV,EAAaiV,eAC9BW,EAAa5V,EAAa4V,WAE1BosB,EAAiB,IAAI7hC,QAOvB8hC,GAAqB,EAEzB,IAECA,EAAgD,qBAApBC,iBAC+B,OAArD,IAAIA,gBAAiB,EAAG,GAAI1gE,WAAY,MAE7C,MAAQ9a,IAMV,SAASy7E,EAAc9gE,EAAOC,GAI7B,OAAO2gE,EACN,IAAIC,gBAAiB7gE,EAAOC,GAAWV,GAAiB,UAI1D,SAASwhE,EAAaphE,EAAOqhE,EAAiBC,EAAgBC,GAE7D,IAAIjpD,EAAQ,EAYZ,IARKtY,EAAMK,MAAQkhE,GAAWvhE,EAAMM,OAASihE,KAE5CjpD,EAAQipD,EAAU7tE,KAAKiB,IAAKqL,EAAMK,MAAOL,EAAMM,SAM3CgY,EAAQ,IAAyB,IAApB+oD,EAA2B,CAI5C,GAAmC,qBAArB59D,kBAAoCzD,aAAiByD,kBACnC,qBAAtBtD,mBAAqCH,aAAiBG,mBACtC,qBAAhBuD,aAA+B1D,aAAiB0D,YAAgB,CAEzE,IAAMhO,EAAQ2rE,EAAkB5rE,GAAkB/B,KAAKgC,MAEjD2K,EAAQ3K,EAAO4iB,EAAQtY,EAAMK,OAC7BC,EAAS5K,EAAO4iB,EAAQtY,EAAMM,aAEnB3a,IAAZoZ,IAAwBA,EAAUoiE,EAAc9gE,EAAOC,IAI5D,IAAMF,EAASkhE,EAAiBH,EAAc9gE,EAAOC,GAAWvB,EAUhE,OARAqB,EAAOC,MAAQA,EACfD,EAAOE,OAASA,EAEAF,EAAOI,WAAY,MAC3BG,UAAWX,EAAO,EAAG,EAAGK,EAAOC,GAEvC5H,QAAQC,KAAM,uDAAyDqH,EAAMK,MAAQ,IAAML,EAAMM,OAAS,SAAWD,EAAQ,IAAMC,EAAS,MAErIF,EAUP,MANK,SAAUJ,GAEdtH,QAAQC,KAAM,yDAA2DqH,EAAMK,MAAQ,IAAML,EAAMM,OAAS,MAItGN,EAMT,OAAOA,EAIR,SAASwhE,EAAgBxhE,GAExB,OAAO7K,GAAc6K,EAAMK,QAAWlL,GAAc6K,EAAMM,QAa3D,SAASmhE,EAA6B97D,EAAS+7D,GAE9C,OAAO/7D,EAAQ5D,iBAAmB2/D,GACjC/7D,EAAQtE,YAAchX,IAAiBsb,EAAQtE,YAAc3W,GAI/D,SAASi3E,EAAgB1uE,EAAQ0S,EAAStF,EAAOC,GAAoB,IAAZiF,EAAY,uDAAJ,EAEhEu7D,EAAIa,eAAgB1uE,GAEpB,IAAM2uE,EAAoBr3B,EAAWnL,IAAKz5B,GAE1Ci8D,EAAkBC,cAAgBnuE,KAAKouE,KAAMpuE,KAAKiB,IAAK0L,EAAOC,EAAQiF,IAIvE,SAASw8D,EAAmBC,EAAoBC,EAAUC,EAAQ1gE,GAEjE,IAAkB,IAAby9B,EAAqB,OAAOgjC,EAEjC,GAA4B,OAAvBD,EAA8B,CAElC,QAAmCr8E,IAA9Bm7E,EAAKkB,GAAqC,OAAOlB,EAAKkB,GAE3DtpE,QAAQC,KAAM,2EAA8EqpE,EAAqB,KAIlH,IAAIpgE,EAAiBqgE,EAiCrB,OA/BkB,OAAbA,IAEY,OAAXC,IAAkBtgE,EAAiB,OACxB,OAAXsgE,IAAkBtgE,EAAiB,OACxB,OAAXsgE,IAAkBtgE,EAAiB,QAIvB,OAAbqgE,IAEY,OAAXC,IAAkBtgE,EAAiB,OACxB,OAAXsgE,IAAkBtgE,EAAiB,OACxB,OAAXsgE,IAAkBtgE,EAAiB,QAIvB,OAAbqgE,IAEY,OAAXC,IAAkBtgE,EAAiB,OACxB,OAAXsgE,IAAkBtgE,EAAiB,OACxB,OAAXsgE,IAAkBtgE,EAAmBJ,IAAaxR,GAAiB,MAAQ,QAIzD,QAAnB4R,GAA+C,QAAnBA,GACb,QAAnBA,GAA+C,QAAnBA,GAE5B81B,EAAW0H,IAAK,0BAIVx9B,EAMR,SAASugE,EAAgB/kE,GAExB,OAAKA,IAAM/S,IAAiB+S,IAAM9S,IAA8B8S,IAAM5S,GAE9D,KAID,KAMR,SAASksD,EAAkB1jD,GAE1B,IAAM2S,EAAU3S,EAAMC,OAEtB0S,EAAQgxC,oBAAqB,UAAWD,GA0BzC,SAA4B/wC,GAE3B,IAAMi8D,EAAoBr3B,EAAWnL,IAAKz5B,GAE1C,QAAuChgB,IAAlCi8E,EAAkBQ,YAA4B,OAEnDtB,EAAIuB,cAAeT,EAAkBU,gBAErC/3B,EAAWntB,OAAQzX,GAhCnB48D,CAAmB58D,GAEdA,EAAQ68D,gBAEZxB,EAAe1hC,OAAQ35B,GAIxB9gB,EAAKy4D,OAAO36C,WAIb,SAAS8/D,EAAuBzvE,GAE/B,IAAM6mC,EAAe7mC,EAAMC,OAE3B4mC,EAAa8c,oBAAqB,UAAW8rB,GAoB9C,SAAiC5oC,GAEhC,IAAMl0B,EAAUk0B,EAAal0B,QAEvB+8D,EAAyBn4B,EAAWnL,IAAKvF,GACzC+nC,EAAoBr3B,EAAWnL,IAAKz5B,GAE1C,IAAOk0B,EAAe,YAEoBl0C,IAArCi8E,EAAkBU,iBAEtBxB,EAAIuB,cAAeT,EAAkBU,gBAErCz9E,EAAKy4D,OAAO36C,YAIRk3B,EAAa/zB,cAEjB+zB,EAAa/zB,aAAaC,UAI3B,GAAK8zB,EAAaC,wBAEjB,IAAM,IAAI1mC,EAAI,EAAGA,EAAI,EAAGA,IAEvB0tE,EAAI6B,kBAAmBD,EAAuBE,mBAAoBxvE,IAC7DsvE,EAAuBG,oBAAqB/B,EAAIgC,mBAAoBJ,EAAuBG,mBAAoBzvE,SAMrH0tE,EAAI6B,kBAAmBD,EAAuBE,oBACzCF,EAAuBG,oBAAqB/B,EAAIgC,mBAAoBJ,EAAuBG,oBAC3FH,EAAuBK,gCAAiCjC,EAAI6B,kBAAmBD,EAAuBK,gCACtGL,EAAuBM,0BAA2BlC,EAAIgC,mBAAoBJ,EAAuBM,0BACjGN,EAAuBO,0BAA2BnC,EAAIgC,mBAAoBJ,EAAuBO,0BAIvG,GAAKppC,EAAaxzB,6BAEjB,IAAM,IAAIjT,EAAI,EAAGgT,EAAKT,EAAQrS,OAAQF,EAAIgT,EAAIhT,IAAO,CAEpD,IAAM8vE,EAAuB34B,EAAWnL,IAAKz5B,EAASvS,IAEjD8vE,EAAqBZ,iBAEzBxB,EAAIuB,cAAea,EAAqBZ,gBAExCz9E,EAAKy4D,OAAO36C,YAIb4nC,EAAWntB,OAAQzX,EAASvS,IAM9Bm3C,EAAWntB,OAAQzX,GACnB4kC,EAAWntB,OAAQyc,GAjFnBspC,CAAwBtpC,GAuFzB,IAAIupC,EAAe,EA0BnB,SAASC,EAAc19D,EAAS29D,GAE/B,IAAM1B,EAAoBr3B,EAAWnL,IAAKz5B,GAI1C,GAFKA,EAAQ68D,gBA+8Bd,SAA6B78D,GAE5B,IAAM64B,EAAQ35C,EAAK+1C,OAAO4D,MAIrBwiC,EAAe5hC,IAAKz5B,KAAc64B,IAEtCwiC,EAAevoE,IAAKkN,EAAS64B,GAC7B74B,EAAQsB,UAx9BqBs8D,CAAoB59D,GAE7CA,EAAQxD,QAAU,GAAKy/D,EAAkB4B,YAAc79D,EAAQxD,QAAU,CAE7E,IAAMnC,EAAQ2F,EAAQ3F,MAEtB,QAAera,IAAVqa,EAEJtH,QAAQC,KAAM,6EAER,KAAwB,IAAnBqH,EAAMyjE,SAOjB,YADAC,EAAe9B,EAAmBj8D,EAAS29D,GAJ3C5qE,QAAQC,KAAM,2EAWhBy0C,EAAMyyB,cAAe,MAAQyD,GAC7Bl2B,EAAMwxB,YAAa,KAAMgD,EAAkBU,gBAoC5C,SAASqB,EAAgBh+D,EAAS29D,GAEjC,IAAM1B,EAAoBr3B,EAAWnL,IAAKz5B,GAErCA,EAAQxD,QAAU,GAAKy/D,EAAkB4B,YAAc79D,EAAQxD,QA+TrE,SAA4By/D,EAAmBj8D,EAAS29D,GAEvD,GAA8B,IAAzB39D,EAAQ3F,MAAM1M,OAAe,OAElCswE,EAAahC,EAAmBj8D,GAEhCynC,EAAMyyB,cAAe,MAAQyD,GAC7Bl2B,EAAMwxB,YAAa,MAAOgD,EAAkBU,gBAE5CxB,EAAI+C,YAAa,MAAOl+D,EAAQ1D,OAChC6+D,EAAI+C,YAAa,MAAOl+D,EAAQ3D,kBAChC8+D,EAAI+C,YAAa,KAAMl+D,EAAQzD,iBAC/B4+D,EAAI+C,YAAa,MAAO,GAOxB,IALA,IAAMC,EAAiBn+D,IAAaA,EAAQo+D,qBAAuBp+D,EAAQ3F,MAAO,GAAI+jE,qBAChF3gE,EAAkBuC,EAAQ3F,MAAO,IAAO2F,EAAQ3F,MAAO,GAAIoD,cAE3D4gE,EAAY,GAER5wE,EAAI,EAAGA,EAAI,EAAGA,IAQtB4wE,EAAW5wE,GANL0wE,GAAkB1gE,EAMPA,EAAgBuC,EAAQ3F,MAAO5M,GAAI4M,MAAQ2F,EAAQ3F,MAAO5M,GAJ1DguE,EAAaz7D,EAAQ3F,MAAO5M,IAAK,GAAO,EAAM8gD,GAUjE,IAQIvyC,EARE3B,EAAQgkE,EAAW,GACxBtC,EAAeF,EAAgBxhE,IAAWi/B,EAC1CgjC,EAAWlB,EAAMkD,QAASt+D,EAAQrE,QAClC4gE,EAASnB,EAAMkD,QAASt+D,EAAQpT,MAChC2xE,EAAmBnC,EAAmBp8D,EAAQ/D,eAAgBqgE,EAAUC,EAAQv8D,EAAQnE,UAMzF,GAJA2iE,EAAsB,MAAOx+D,EAAS+7D,GAIjCoC,EAAe,CAEnB,IAAM,IAAI1wE,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9BuO,EAAUqiE,EAAW5wE,GAAIuO,QAEzB,IAAM,IAAIuP,EAAI,EAAGA,EAAIvP,EAAQrO,OAAQ4d,IAAO,CAE3C,IAAMkzD,EAASziE,EAASuP,GAEnBvL,EAAQrE,SAAWzV,IAAc8Z,EAAQrE,SAAW1V,GAEtC,OAAbq2E,EAEJ70B,EAAMuzB,qBAAsB,MAAQvtE,EAAG8d,EAAGgzD,EAAkBE,EAAO/jE,MAAO+jE,EAAO9jE,OAAQ,EAAG8jE,EAAOxgE,MAInGlL,QAAQC,KAAM,mGAMfy0C,EAAM0xB,WAAY,MAAQ1rE,EAAG8d,EAAGgzD,EAAkBE,EAAO/jE,MAAO+jE,EAAO9jE,OAAQ,EAAG2hE,EAAUC,EAAQkC,EAAOxgE,OAQ9Gg+D,EAAkBC,cAAgBlgE,EAAQrO,OAAS,MAE7C,CAENqO,EAAUgE,EAAQhE,QAElB,IAAM,IAAIvO,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKgQ,EAAgB,CAEpBgqC,EAAM0xB,WAAY,MAAQ1rE,EAAG,EAAG8wE,EAAkBF,EAAW5wE,GAAIiN,MAAO2jE,EAAW5wE,GAAIkN,OAAQ,EAAG2hE,EAAUC,EAAQ8B,EAAW5wE,GAAIwQ,MAEnI,IAAM,IAAIsN,EAAI,EAAGA,EAAIvP,EAAQrO,OAAQ4d,IAAO,CAE3C,IACMmzD,EADS1iE,EAASuP,GACGlR,MAAO5M,GAAI4M,MAEtCotC,EAAM0xB,WAAY,MAAQ1rE,EAAG8d,EAAI,EAAGgzD,EAAkBG,EAAYhkE,MAAOgkE,EAAY/jE,OAAQ,EAAG2hE,EAAUC,EAAQmC,EAAYzgE,WAIzH,CAENwpC,EAAM0xB,WAAY,MAAQ1rE,EAAG,EAAG8wE,EAAkBjC,EAAUC,EAAQ8B,EAAW5wE,IAE/E,IAAM,IAAI8d,EAAI,EAAGA,EAAIvP,EAAQrO,OAAQ4d,IAAO,CAE3C,IAAMkzD,EAASziE,EAASuP,GAExBk8B,EAAM0xB,WAAY,MAAQ1rE,EAAG8d,EAAI,EAAGgzD,EAAkBjC,EAAUC,EAAQkC,EAAOpkE,MAAO5M,KAQzFwuE,EAAkBC,cAAgBlgE,EAAQrO,OAItCmuE,EAA6B97D,EAAS+7D,IAG1CC,EAAgB,MAAOh8D,EAAS3F,EAAMK,MAAOL,EAAMM,QAIpDshE,EAAkB4B,UAAY79D,EAAQxD,QAEjCwD,EAAQvD,UAAWuD,EAAQvD,SAAUuD,GA1bzC2+D,CAAmB1C,EAAmBj8D,EAAS29D,IAKhDl2B,EAAMyyB,cAAe,MAAQyD,GAC7Bl2B,EAAMwxB,YAAa,MAAOgD,EAAkBU,iBAI7C,IAAMiC,GAAY,mBACfr6E,GAAkB,OADH,cAEfC,GAAuB,OAFR,cAGfC,GAA0B,OAHX,GAMZo6E,GAAU,mBACbn6E,GAAiB,MADJ,cAEbC,GAA8B,MAFjB,cAGbE,GAA6B,MAHhB,cAKbE,GAAgB,MALH,cAMbC,GAA6B,MANhB,cAObE,GAA4B,MAPf,GAUhB,SAASs5E,EAAsBM,EAAa9+D,EAAS+7D,GA4CpD,GA1CKA,GAEJZ,EAAIjC,cAAe4F,EAAa,MAAOF,EAAc5+D,EAAQzE,QAC7D4/D,EAAIjC,cAAe4F,EAAa,MAAOF,EAAc5+D,EAAQxE,QAExC,QAAhBsjE,GAAyC,QAAhBA,GAE7B3D,EAAIjC,cAAe4F,EAAa,MAAOF,EAAc5+D,EAAQ44C,QAI9DuiB,EAAIjC,cAAe4F,EAAa,MAAOD,EAAY7+D,EAAQvE,YAC3D0/D,EAAIjC,cAAe4F,EAAa,MAAOD,EAAY7+D,EAAQtE,cAI3Dy/D,EAAIjC,cAAe4F,EAAa,MAAO,OACvC3D,EAAIjC,cAAe4F,EAAa,MAAO,OAElB,QAAhBA,GAAyC,QAAhBA,GAE7B3D,EAAIjC,cAAe4F,EAAa,MAAO,OAInC9+D,EAAQzE,QAAU/W,IAAuBwb,EAAQxE,QAAUhX,IAE/DuO,QAAQC,KAAM,iIAIfmoE,EAAIjC,cAAe4F,EAAa,MAAOtC,EAAgBx8D,EAAQvE,YAC/D0/D,EAAIjC,cAAe4F,EAAa,MAAOtC,EAAgBx8D,EAAQtE,YAE1DsE,EAAQtE,YAAchX,IAAiBsb,EAAQtE,YAAc3W,IAEjEgO,QAAQC,KAAM,qIAM4C,IAAvD++B,EAAWmc,IAAK,kCAA8C,CAElE,IAAM1E,EAAYzX,EAAW0H,IAAK,kCAElC,GAAKz5B,EAAQpT,OAASlH,KAA8D,IAAjDqsC,EAAWmc,IAAK,4BAAyC,OAC5F,IAAkB,IAAb5U,GAAwBt5B,EAAQpT,OAASjH,KAAuE,IAAtDosC,EAAWmc,IAAK,iCAAgD,QAE1HluC,EAAQpE,WAAa,GAAKgpC,EAAWnL,IAAKz5B,GAAU++D,uBAExD5D,EAAI6D,cAAeF,EAAat1B,EAAUy1B,2BAA4BlxE,KAAKgB,IAAKiR,EAAQpE,WAAYy9B,EAAayV,qBACjHlK,EAAWnL,IAAKz5B,GAAU++D,oBAAsB/+D,EAAQpE,aAQ3D,SAASqiE,EAAahC,EAAmBj8D,QAEDhgB,IAAlCi8E,EAAkBQ,cAEtBR,EAAkBQ,aAAc,EAEhCz8D,EAAQmxC,iBAAkB,UAAWJ,GAErCkrB,EAAkBU,eAAiBxB,EAAInC,gBAEvC95E,EAAKy4D,OAAO36C,YAMd,SAAS+gE,EAAe9B,EAAmBj8D,EAAS29D,GAEnD,IAAImB,EAAc,KAEb9+D,EAAQ46C,uBAAuBkkB,EAAc,OAC7C9+D,EAAQ86C,kBAAkBgkB,EAAc,OAE7Cb,EAAahC,EAAmBj8D,GAEhCynC,EAAMyyB,cAAe,MAAQyD,GAC7Bl2B,EAAMwxB,YAAa6F,EAAa7C,EAAkBU,gBAElDxB,EAAI+C,YAAa,MAAOl+D,EAAQ1D,OAChC6+D,EAAI+C,YAAa,MAAOl+D,EAAQ3D,kBAChC8+D,EAAI+C,YAAa,KAAMl+D,EAAQzD,iBAC/B4+D,EAAI+C,YAAa,MAAO,GAExB,IAWIO,EAXE/C,EAnaP,SAAiC17D,GAEhC,OAAKs5B,IAEIt5B,EAAQzE,QAAU/W,IAAuBwb,EAAQxE,QAAUhX,IACjEwb,EAAQtE,YAAchX,IAAiBsb,EAAQtE,YAAc3W,IA8ZxCm6E,CAAwBl/D,KAAiD,IAApC67D,EAAgB77D,EAAQ3F,OAC/EA,EAAQohE,EAAaz7D,EAAQ3F,MAAOqhE,GAAiB,EAAOptB,GAE5DytB,EAAeF,EAAgBxhE,IAAWi/B,EAC/CgjC,EAAWlB,EAAMkD,QAASt+D,EAAQrE,QAE/B4gE,EAASnB,EAAMkD,QAASt+D,EAAQpT,MACnC2xE,EAAmBnC,EAAmBp8D,EAAQ/D,eAAgBqgE,EAAUC,EAAQv8D,EAAQnE,UAEzF2iE,EAAsBM,EAAa9+D,EAAS+7D,GAG5C,IAAM//D,EAAUgE,EAAQhE,QAExB,GAAKgE,EAAQm/D,eAIZZ,EAAmB,KAEdjlC,EAIHilC,EAFIv+D,EAAQpT,OAASlH,GAEF,MAERsa,EAAQpT,OAASnH,GAET,MAERua,EAAQpT,OAAS7G,GAET,MAIA,MAMfia,EAAQpT,OAASlH,IAErBqN,QAAQ3T,MAAO,gEAQZ4gB,EAAQrE,SAAWrV,IAAoC,OAArBi4E,GAKjCv+D,EAAQpT,OAASrH,IAAqBya,EAAQpT,OAASnH,KAE3DsN,QAAQC,KAAM,+FAEdgN,EAAQpT,KAAOrH,GACfg3E,EAASnB,EAAMkD,QAASt+D,EAAQpT,OAM7BoT,EAAQrE,SAAWpV,IAA2C,OAArBg4E,IAI7CA,EAAmB,MAKdv+D,EAAQpT,OAAS7G,KAErBgN,QAAQC,KAAM,oFAEdgN,EAAQpT,KAAO7G,GACfw2E,EAASnB,EAAMkD,QAASt+D,EAAQpT,QAQlC66C,EAAM0xB,WAAY,KAAM,EAAGoF,EAAkBlkE,EAAMK,MAAOL,EAAMM,OAAQ,EAAG2hE,EAAUC,EAAQ,WAEvF,GAAKv8D,EAAQvC,cAMnB,GAAKzB,EAAQrO,OAAS,GAAKouE,EAAe,CAEzC,IAAM,IAAItuE,EAAI,EAAGgT,EAAKzE,EAAQrO,OAAQF,EAAIgT,EAAIhT,IAE7CgxE,EAASziE,EAASvO,GAClBg6C,EAAM0xB,WAAY,KAAM1rE,EAAG8wE,EAAkBE,EAAO/jE,MAAO+jE,EAAO9jE,OAAQ,EAAG2hE,EAAUC,EAAQkC,EAAOxgE,MAIvG+B,EAAQ5D,iBAAkB,EAC1B6/D,EAAkBC,cAAgBlgE,EAAQrO,OAAS,OAInD85C,EAAM0xB,WAAY,KAAM,EAAGoF,EAAkBlkE,EAAMK,MAAOL,EAAMM,OAAQ,EAAG2hE,EAAUC,EAAQliE,EAAM4D,MACnGg+D,EAAkBC,cAAgB,OAI7B,GAAKl8D,EAAQo+D,oBAAsB,CAEzC,IAAM,IAAI3wE,EAAI,EAAGgT,EAAKzE,EAAQrO,OAAQF,EAAIgT,EAAIhT,IAE7CgxE,EAASziE,EAASvO,GAEbuS,EAAQrE,SAAWzV,IAAc8Z,EAAQrE,SAAW1V,GAEtC,OAAbq2E,EAEJ70B,EAAMuzB,qBAAsB,KAAMvtE,EAAG8wE,EAAkBE,EAAO/jE,MAAO+jE,EAAO9jE,OAAQ,EAAG8jE,EAAOxgE,MAI9FlL,QAAQC,KAAM,kGAMfy0C,EAAM0xB,WAAY,KAAM1rE,EAAG8wE,EAAkBE,EAAO/jE,MAAO+jE,EAAO9jE,OAAQ,EAAG2hE,EAAUC,EAAQkC,EAAOxgE,MAMxGg+D,EAAkBC,cAAgBlgE,EAAQrO,OAAS,OAE7C,GAAKqS,EAAQ46C,qBAEnBnT,EAAMwzB,WAAY,MAAO,EAAGsD,EAAkBlkE,EAAMK,MAAOL,EAAMM,OAAQN,EAAMuF,MAAO,EAAG08D,EAAUC,EAAQliE,EAAM4D,MACjHg+D,EAAkBC,cAAgB,OAE5B,GAAKl8D,EAAQ86C,gBAEnBrT,EAAMwzB,WAAY,MAAO,EAAGsD,EAAkBlkE,EAAMK,MAAOL,EAAMM,OAAQN,EAAMuF,MAAO,EAAG08D,EAAUC,EAAQliE,EAAM4D,MACjHg+D,EAAkBC,cAAgB,OAUlC,GAAKlgE,EAAQrO,OAAS,GAAKouE,EAAe,CAEzC,IAAM,IAAItuE,EAAI,EAAGgT,EAAKzE,EAAQrO,OAAQF,EAAIgT,EAAIhT,IAE7CgxE,EAASziE,EAASvO,GAClBg6C,EAAM0xB,WAAY,KAAM1rE,EAAG8wE,EAAkBjC,EAAUC,EAAQkC,GAIhEz+D,EAAQ5D,iBAAkB,EAC1B6/D,EAAkBC,cAAgBlgE,EAAQrO,OAAS,OAInD85C,EAAM0xB,WAAY,KAAM,EAAGoF,EAAkBjC,EAAUC,EAAQliE,GAC/D4hE,EAAkBC,cAAgB,EAM/BJ,EAA6B97D,EAAS+7D,IAE1CC,EAAgB8C,EAAa9+D,EAAS3F,EAAMK,MAAOL,EAAMM,QAI1DshE,EAAkB4B,UAAY79D,EAAQxD,QAEjCwD,EAAQvD,UAAWuD,EAAQvD,SAAUuD,GAwI3C,SAASo/D,EAAyB/E,EAAanmC,EAAcl0B,EAASq/D,EAAYC,GAEjF,IAAMhD,EAAWlB,EAAMkD,QAASt+D,EAAQrE,QAClC4gE,EAASnB,EAAMkD,QAASt+D,EAAQpT,MAChC2xE,EAAmBnC,EAAmBp8D,EAAQ/D,eAAgBqgE,EAAUC,EAAQv8D,EAAQnE,UAEvE,QAAlByjE,GAA6C,QAAlBA,EAE/B73B,EAAMwzB,WAAYqE,EAAe,EAAGf,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,OAAQu5B,EAAat0B,MAAO,EAAG08D,EAAUC,EAAQ,MAIxI90B,EAAM0xB,WAAYmG,EAAe,EAAGf,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,OAAQ,EAAG2hE,EAAUC,EAAQ,MAIrH90B,EAAM2yB,gBAAiB,MAAOC,GAC9Bc,EAAIoE,qBAAsB,MAAOF,EAAYC,EAAe16B,EAAWnL,IAAKz5B,GAAU28D,eAAgB,GACtGl1B,EAAM2yB,gBAAiB,MAAO,MAK/B,SAASoF,EAA0BC,EAAcvrC,EAAcwrC,GAI9D,GAFAvE,EAAIwE,iBAAkB,MAAOF,GAExBvrC,EAAaj0B,cAAiBi0B,EAAah0B,cAAgB,CAE/D,IAAIq+D,EAAmB,MAEvB,GAAKmB,EAAgB,CAEpB,IAAMv/D,EAAe+zB,EAAa/zB,aAE7BA,GAAgBA,EAAag/D,iBAE5Bh/D,EAAavT,OAASlH,GAE1B64E,EAAmB,MAERp+D,EAAavT,OAASnH,KAEjC84E,EAAmB,QAMrB,IAAM39D,EAAUg/D,EAAwB1rC,GAExCinC,EAAI0E,+BAAgC,MAAOj/D,EAAS29D,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,aAIvGwgE,EAAI2E,oBAAqB,MAAOvB,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,QAIpFwgE,EAAI4E,wBAAyB,MAAO,MAAO,MAAON,QAE5C,GAAKvrC,EAAaj0B,aAAei0B,EAAah0B,cAAgB,CAEpE,GAAKw/D,EAAgB,CAEpB,IAAM9+D,EAAUg/D,EAAwB1rC,GAExCinC,EAAI0E,+BAAgC,MAAOj/D,EAAS,MAAOszB,EAAax5B,MAAOw5B,EAAav5B,aAI5FwgE,EAAI2E,oBAAqB,MAAO,MAAO5rC,EAAax5B,MAAOw5B,EAAav5B,QAKzEwgE,EAAI4E,wBAAyB,MAAO,MAAO,MAAON,OAE5C,CAGN,IAAMz/D,GAAwD,IAA9Ck0B,EAAaxzB,6BAAwCwzB,EAAal0B,QAAS,GAAMk0B,EAAal0B,QAExGs8D,EAAWlB,EAAMkD,QAASt+D,EAAQrE,QAClC4gE,EAASnB,EAAMkD,QAASt+D,EAAQpT,MAChC2xE,EAAmBnC,EAAmBp8D,EAAQ/D,eAAgBqgE,EAAUC,EAAQv8D,EAAQnE,UAE9F,GAAK6jE,EAAgB,CAEpB,IAAM9+D,EAAUg/D,EAAwB1rC,GAExCinC,EAAI0E,+BAAgC,MAAOj/D,EAAS29D,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,aAIvGwgE,EAAI2E,oBAAqB,MAAOvB,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,QAMrFwgE,EAAIwE,iBAAkB,MAAO,MAkD9B,SAASK,EAAwB9rC,GAEhC,IAAM6oC,EAAyBn4B,EAAWnL,IAAKvF,GAEzC+rC,GAAoD,IAAzC/rC,EAAaC,wBAE9B,GAAKD,EAAa/zB,aAAe,CAEhC,GAAK8/D,EAAS,MAAM,IAAI9sE,MAAO,6DArDjC,SAA4BknE,EAAanmC,GAGxC,GADiBA,GAAgBA,EAAaC,wBAChC,MAAM,IAAIhhC,MAAO,2DAI/B,GAFAs0C,EAAM2yB,gBAAiB,MAAOC,IAErBnmC,EAAa/zB,eAAgB+zB,EAAa/zB,aAAag/D,eAE/D,MAAM,IAAIhsE,MAAO,uEAKXyxC,EAAWnL,IAAKvF,EAAa/zB,cAAew8D,gBACjDzoC,EAAa/zB,aAAa9F,MAAMK,QAAUw5B,EAAax5B,OACvDw5B,EAAa/zB,aAAa9F,MAAMM,SAAWu5B,EAAav5B,SAEzDu5B,EAAa/zB,aAAa9F,MAAMK,MAAQw5B,EAAax5B,MACrDw5B,EAAa/zB,aAAa9F,MAAMM,OAASu5B,EAAav5B,OACtDu5B,EAAa/zB,aAAa4oB,aAAc,GAIzC20C,EAAcxpC,EAAa/zB,aAAc,GAEzC,IAAM+/D,EAAoBt7B,EAAWnL,IAAKvF,EAAa/zB,cAAew8D,eAEtE,GAAKzoC,EAAa/zB,aAAaxE,SAAWrV,GAEzC60E,EAAIoE,qBAAsB,MAAO,MAAO,KAAMW,EAAmB,OAE3D,IAAKhsC,EAAa/zB,aAAaxE,SAAWpV,GAMhD,MAAM,IAAI4M,MAAO,+BAJjBgoE,EAAIoE,qBAAsB,MAAO,MAAO,KAAMW,EAAmB,IAqBjEC,CAAmBpD,EAAuBE,mBAAoB/oC,QAI9D,GAAK+rC,EAAS,CAEblD,EAAuBG,mBAAqB,GAE5C,IAAM,IAAIzvE,EAAI,EAAGA,EAAI,EAAGA,IAEvBg6C,EAAM2yB,gBAAiB,MAAO2C,EAAuBE,mBAAoBxvE,IACzEsvE,EAAuBG,mBAAoBzvE,GAAM0tE,EAAIiF,qBACrDZ,EAA0BzC,EAAuBG,mBAAoBzvE,GAAKymC,GAAc,QAMzFuT,EAAM2yB,gBAAiB,MAAO2C,EAAuBE,oBACrDF,EAAuBG,mBAAqB/B,EAAIiF,qBAChDZ,EAA0BzC,EAAuBG,mBAAoBhpC,GAAc,GAMrFuT,EAAM2yB,gBAAiB,MAAO,MA0Q/B,SAASwF,EAAwB1rC,GAEhC,OAASoF,GAAYpF,EAAarzB,+BACjC9S,KAAKgB,IAAKkgD,EAAY/a,EAAatzB,SAAY,EAqBjD,IAAIy/D,GAAkB,EAClBC,GAAoB,EA2CxB3gF,KAAKo8D,oBAliCL,WAEC,IAAMwkB,EAAc9C,EAUpB,OARK8C,GAAenyB,GAEnBr7C,QAAQC,KAAM,sCAAwCutE,EAAc,+CAAiDnyB,GAItHqvB,GAAgB,EAET8C,GAuhCR5gF,KAAK6gF,kBAziCL,WAEC/C,EAAe,GAyiChB99E,KAAK+9E,aAAeA,EACpB/9E,KAAK++D,kBAp/BL,SAA4B1+C,EAAS29D,GAEpC,IAAM1B,EAAoBr3B,EAAWnL,IAAKz5B,GAErCA,EAAQxD,QAAU,GAAKy/D,EAAkB4B,YAAc79D,EAAQxD,QAEnEuhE,EAAe9B,EAAmBj8D,EAAS29D,IAK5Cl2B,EAAMyyB,cAAe,MAAQyD,GAC7Bl2B,EAAMwxB,YAAa,MAAOgD,EAAkBU,kBAy+B7Ch9E,KAAK2+D,aAr+BL,SAAuBt+C,EAAS29D,GAE/B,IAAM1B,EAAoBr3B,EAAWnL,IAAKz5B,GAErCA,EAAQxD,QAAU,GAAKy/D,EAAkB4B,YAAc79D,EAAQxD,QAEnEuhE,EAAe9B,EAAmBj8D,EAAS29D,IAK5Cl2B,EAAMyyB,cAAe,MAAQyD,GAC7Bl2B,EAAMwxB,YAAa,MAAOgD,EAAkBU,kBA09B7Ch9E,KAAKq+E,eAAiBA,EACtBr+E,KAAK8gF,kBAhVL,SAA4BvsC,GAE3B,IAAMl0B,EAAUk0B,EAAal0B,QAEvB+8D,EAAyBn4B,EAAWnL,IAAKvF,GACzC+nC,EAAoBr3B,EAAWnL,IAAKz5B,GAE1Ck0B,EAAaid,iBAAkB,UAAW2rB,IAES,IAA9C5oC,EAAaxzB,+BAEjBu7D,EAAkBU,eAAiBxB,EAAInC,gBACvCiD,EAAkB4B,UAAY79D,EAAQxD,QACtCtd,EAAKy4D,OAAO36C,YAIb,IAAMijE,GAAoD,IAAzC/rC,EAAaC,wBACxBusC,GAA0E,IAA9CxsC,EAAaxzB,6BACzCg/D,GAAkE,IAAhDxrC,EAAarzB,+BAC/B8/D,EAAmB3gE,EAAQ86C,iBAAmB96C,EAAQ46C,qBACtDmhB,EAAeF,EAAgB3nC,IAAkBoF,EAcvD,IAVKA,GAAYt5B,EAAQrE,SAAW1V,IAAe+Z,EAAQpT,OAASlH,IAAasa,EAAQpT,OAASjH,KAEjGqa,EAAQrE,OAASzV,GAEjB6M,QAAQC,KAAM,4GAMVitE,EAAS,CAEblD,EAAuBE,mBAAqB,GAE5C,IAAM,IAAIxvE,EAAI,EAAGA,EAAI,EAAGA,IAEvBsvE,EAAuBE,mBAAoBxvE,GAAM0tE,EAAIyF,yBAQtD,GAFA7D,EAAuBE,mBAAqB9B,EAAIyF,oBAE3CF,EAEJ,GAAKrnC,EAAanH,YAIjB,IAFA,IAAMl1B,EAAWk3B,EAAal0B,QAEpBvS,EAAI,EAAGgT,EAAKzD,EAASrP,OAAQF,EAAIgT,EAAIhT,IAAO,CAErD,IAAM8vE,EAAuB34B,EAAWnL,IAAKz8B,EAAUvP,SAEVzN,IAAxCu9E,EAAqBZ,iBAEzBY,EAAqBZ,eAAiBxB,EAAInC,gBAE1C95E,EAAKy4D,OAAO36C,iBAQdjK,QAAQC,KAAM,sHAIT,GAAK0sE,EAEX,GAAKpmC,EAAW,CAEfyjC,EAAuBK,+BAAiCjC,EAAIyF,oBAC5D7D,EAAuBM,yBAA2BlC,EAAIiF,qBAEtDjF,EAAIwE,iBAAkB,MAAO5C,EAAuBM,0BAEpD,IAAMf,EAAWlB,EAAMkD,QAASt+D,EAAQrE,QAClC4gE,EAASnB,EAAMkD,QAASt+D,EAAQpT,MAChC2xE,EAAmBnC,EAAmBp8D,EAAQ/D,eAAgBqgE,EAAUC,EAAQv8D,EAAQnE,UACxF+E,EAAUg/D,EAAwB1rC,GACxCinC,EAAI0E,+BAAgC,MAAOj/D,EAAS29D,EAAkBrqC,EAAax5B,MAAOw5B,EAAav5B,QAEvG8sC,EAAM2yB,gBAAiB,MAAO2C,EAAuBK,gCACrDjC,EAAI4E,wBAAyB,MAAO,MAAO,MAAOhD,EAAuBM,0BACzElC,EAAIwE,iBAAkB,MAAO,MAExBzrC,EAAaj0B,cAEjB88D,EAAuBO,yBAA2BnC,EAAIiF,qBACtDZ,EAA0BzC,EAAuBO,yBAA0BppC,GAAc,IAI1FuT,EAAM2yB,gBAAiB,MAAO,WAK9BrnE,QAAQC,KAAM,mFAUjB,GAAKitE,EAAS,CAEbx4B,EAAMwxB,YAAa,MAAOgD,EAAkBU,gBAC5C6B,EAAsB,MAAOx+D,EAAS+7D,GAEtC,IAAM,IAAItuE,EAAI,EAAGA,EAAI,EAAGA,IAEvB2xE,EAAyBrC,EAAuBE,mBAAoBxvE,GAAKymC,EAAcl0B,EAAS,MAAO,MAAQvS,GAI3GquE,EAA6B97D,EAAS+7D,IAE1CC,EAAgB,MAAOh8D,EAASk0B,EAAax5B,MAAOw5B,EAAav5B,QAIlE8sC,EAAMszB,qBAEA,GAAK2F,EAA0B,CAIrC,IAFA,IAAM1jE,EAAWk3B,EAAal0B,QAEpBvS,EAAI,EAAGgT,EAAKzD,EAASrP,OAAQF,EAAIgT,EAAIhT,IAAO,CAErD,IAAM4xE,EAAariE,EAAUvP,GACvB8vE,EAAuB34B,EAAWnL,IAAK4lC,GAE7C53B,EAAMwxB,YAAa,KAAMsE,EAAqBZ,gBAC9C6B,EAAsB,KAAMa,EAAYtD,GACxCqD,EAAyBrC,EAAuBE,mBAAoB/oC,EAAcmrC,EAAY,MAAQ5xE,EAAG,MAEpGquE,EAA6BuD,EAAYtD,IAE7CC,EAAgB,KAAMqD,EAAYnrC,EAAax5B,MAAOw5B,EAAav5B,QAMrE8sC,EAAMszB,oBAEA,CAEN,IAAI8F,EAAgB,KAEpB,GAAKF,EAIJ,GAAKrnC,EAGJunC,EADoB7gE,EAAQ86C,gBACE,MAAQ,WAItC/nD,QAAQC,KAAM,gFAMhBy0C,EAAMwxB,YAAa4H,EAAe5E,EAAkBU,gBACpD6B,EAAsBqC,EAAe7gE,EAAS+7D,GAC9CqD,EAAyBrC,EAAuBE,mBAAoB/oC,EAAcl0B,EAAS,MAAO6gE,GAE7F/E,EAA6B97D,EAAS+7D,IAE1CC,EAAgB6E,EAAe7gE,EAASk0B,EAAax5B,MAAOw5B,EAAav5B,OAAQu5B,EAAat0B,OAI/F6nC,EAAMszB,gBAMF7mC,EAAaj0B,aAEjB+/D,EAAwB9rC,IA4I1Bv0C,KAAKmhF,yBAtIL,SAAmC5sC,GAMlC,IAJA,IAAM6nC,EAAeF,EAAgB3nC,IAAkBoF,EAEjDt8B,GAAyD,IAA9Ck3B,EAAaxzB,6BAAwCwzB,EAAal0B,QAAU,CAAEk0B,EAAal0B,SAElGvS,EAAI,EAAGgT,EAAKzD,EAASrP,OAAQF,EAAIgT,EAAIhT,IAAO,CAErD,IAAMuS,EAAUhD,EAAUvP,GAE1B,GAAKquE,EAA6B97D,EAAS+7D,GAAiB,CAE3D,IAAMzuE,EAAS4mC,EAAaC,wBAA0B,MAAQ,KACxD0mC,EAAej2B,EAAWnL,IAAKz5B,GAAU28D,eAE/Cl1B,EAAMwxB,YAAa3rE,EAAQutE,GAC3BmB,EAAgB1uE,EAAQ0S,EAASk0B,EAAax5B,MAAOw5B,EAAav5B,QAClE8sC,EAAMszB,mBAsHTp7E,KAAKohF,8BA9GL,SAAwC7sC,GAEvC,GAAKA,EAAarzB,+BAEjB,GAAKy4B,EAAW,CAEf,IAAM5+B,EAAQw5B,EAAax5B,MACrBC,EAASu5B,EAAav5B,OACxB+Z,EAAO,MAENwf,EAAaj0B,cAAcyU,GAAQ,KACnCwf,EAAah0B,gBAAgBwU,GAAQ,MAE1C,IAAMqoD,EAAyBn4B,EAAWnL,IAAKvF,GAE/CuT,EAAM2yB,gBAAiB,MAAO2C,EAAuBK,gCACrD31B,EAAM2yB,gBAAiB,MAAO2C,EAAuBE,oBAErD9B,EAAI6F,gBAAiB,EAAG,EAAGtmE,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,EAAQ+Z,EAAM,MAErE+yB,EAAM2yB,gBAAiB,MAAO,MAC9B3yB,EAAM2yB,gBAAiB,MAAO2C,EAAuBK,qCAIrDrqE,QAAQC,KAAM,oFAuFjBrT,KAAKy+D,iBApDL,SAA2Bp+C,EAAS29D,GAE9B39D,GAAWA,EAAQM,uBAEE,IAApB+/D,IAEJttE,QAAQC,KAAM,oHACdqtE,GAAkB,GAInBrgE,EAAUA,EAAQA,SAInB09D,EAAc19D,EAAS29D,IAsCxBh+E,KAAK6+D,mBAlCL,SAA6Bx+C,EAAS29D,GAEhC39D,GAAWA,EAAQm0B,2BAEI,IAAtBmsC,IAEJvtE,QAAQC,KAAM,2HACdstE,GAAoB,GAIrBtgE,EAAUA,EAAQA,SAKnBg+D,EAAgBh+D,EAAS29D,IAsB3B,SAASsD,GAAY7nC,EAAIrH,EAAYsH,GAEpC,IAAMC,EAAWD,EAAaC,SA2L9B,MAAO,CAAEglC,QAzLT,SAAkB77D,GAEjB,IAAI+mC,EAEJ,GAAK/mC,IAAMrd,GAAmB,OAAO,KACrC,GAAKqd,IAAM7c,GAAwB,OAAO,MAC1C,GAAK6c,IAAM5c,GAAwB,OAAO,MAC1C,GAAK4c,IAAM3c,GAAuB,OAAO,MAEzC,GAAK2c,IAAMpd,GAAW,OAAO,KAC7B,GAAKod,IAAMnd,GAAY,OAAO,KAC9B,GAAKmd,IAAMld,GAAoB,OAAO,KACtC,GAAKkd,IAAMjd,GAAU,OAAO,KAC5B,GAAKid,IAAMhd,GAAkB,OAAO,KACpC,GAAKgd,IAAM/c,GAAY,OAAO,KAE9B,GAAK+c,IAAM9c,GAEV,OAAK2zC,EAAkB,KAIJ,QAFnBkQ,EAAYzX,EAAW0H,IAAK,2BAIpB+P,EAAU03B,eAIV,KAMT,GAAKz+D,IAAMzc,GAAc,OAAO,KAChC,GAAKyc,IAAMxc,GAAY,OAAO,KAC9B,GAAKwc,IAAMvc,GAAa,OAAO,KAC/B,GAAKuc,IAAMtc,GAAkB,OAAO,KACpC,GAAKsc,IAAMrc,GAAuB,OAAO,KACzC,GAAKqc,IAAMnc,GAAc,OAAO,KAChC,GAAKmc,IAAMlc,GAAqB,OAAO,MACvC,GAAKkc,IAAMjc,GAAY,OAAO,KAI9B,GAAKic,IAAMhc,GAAmB,OAAO,MACrC,GAAKgc,IAAM/b,GAAW,OAAO,MAC7B,GAAK+b,IAAM9b,GAAkB,OAAO,MACpC,GAAK8b,IAAM7b,GAAmB,OAAO,MACrC,GAAK6b,IAAM5b,GAAoB,OAAO,MAEtC,GAAK4b,IAAM3b,IAAwB2b,IAAM1b,IACxC0b,IAAMzb,IAAyByb,IAAMxb,GAAwB,CAI7D,GAAmB,QAFnBuiD,EAAYzX,EAAW0H,IAAK,kCAW3B,OAAO,KAPP,GAAKh3B,IAAM3b,GAAuB,OAAO0iD,EAAU23B,6BACnD,GAAK1+D,IAAM1b,GAAwB,OAAOyiD,EAAU43B,8BACpD,GAAK3+D,IAAMzb,GAAwB,OAAOwiD,EAAU63B,8BACpD,GAAK5+D,IAAMxb,GAAwB,OAAOuiD,EAAU83B,8BAUtD,GAAK7+D,IAAMvb,IAA2Bub,IAAMtb,IAC3Csb,IAAMrb,IAA4Bqb,IAAMpb,GAA2B,CAInE,GAAmB,QAFnBmiD,EAAYzX,EAAW0H,IAAK,mCAW3B,OAAO,KAPP,GAAKh3B,IAAMvb,GAA0B,OAAOsiD,EAAU+3B,gCACtD,GAAK9+D,IAAMtb,GAA0B,OAAOqiD,EAAUg4B,gCACtD,GAAK/+D,IAAMrb,GAA2B,OAAOoiD,EAAUi4B,iCACvD,GAAKh/D,IAAMpb,GAA2B,OAAOmiD,EAAUk4B,iCAUzD,GAAKj/D,IAAMnb,GAIV,OAAmB,QAFnBkiD,EAAYzX,EAAW0H,IAAK,kCAIpB+P,EAAUm4B,0BAIV,KAMT,IAAKl/D,IAAMlb,IAAmBkb,IAAMjb,KAIhB,QAFnBgiD,EAAYzX,EAAW0H,IAAK,iCAEF,CAEzB,GAAKh3B,IAAMlb,GAAkB,OAAOiiD,EAAUo4B,qBAC9C,GAAKn/D,IAAMjb,GAAuB,OAAOgiD,EAAUq4B,0BAMrD,OAAKp/D,IAAMhb,IAAwBgb,IAAM/a,IAAwB+a,IAAM9a,IACtE8a,IAAM7a,IAAwB6a,IAAM5a,IAAwB4a,IAAM3a,IAClE2a,IAAM1a,IAAwB0a,IAAMza,IAAwBya,IAAMxa,IAClEwa,IAAMva,IAAyBua,IAAMta,IAAyBsa,IAAMra,IACpEqa,IAAMpa,IAA0Boa,IAAMna,IACtCma,IAAMja,IAAgCia,IAAMha,IAAgCga,IAAM/Z,IAClF+Z,IAAM9Z,IAAgC8Z,IAAM7Z,IAAgC6Z,IAAM5Z,IAClF4Z,IAAM3Z,IAAgC2Z,IAAM1Z,IAAgC0Z,IAAMzZ,IAClFyZ,IAAMxZ,IAAiCwZ,IAAMvZ,IAAiCuZ,IAAMtZ,IACpFsZ,IAAMrZ,IAAkCqZ,IAAMpZ,GAI3B,QAFnBmgD,EAAYzX,EAAW0H,IAAK,kCAMpBh3B,EAIA,KAMJA,IAAMla,GAIS,QAFnBihD,EAAYzX,EAAW0H,IAAK,iCAMpBh3B,EAIA,KAMJA,IAAM1c,GAELuzC,EAAkB,MAIJ,QAFnBkQ,EAAYzX,EAAW0H,IAAK,wBAIpB+P,EAAUs4B,wBAIV,UAZT,I,IAwBIC,G,kDAEL,aAA0B,MAAbx0E,EAAa,uDAAL,GAAK,4BAEzB,gBAEKy0E,QAAUz0E,EAJU,E,UAFDmlC,IAY1BqvC,GAAY9sE,UAAUgtE,eAAgB,E,IAEhCC,G,kDAEL,aAAc,kCAEb,gBAEKt1E,KAAO,QAJC,E,UAFK8oB,IAYpBwsD,GAAMjtE,UAAUktE,SAAU,EAE1B,IAAMC,GAAa,CAAEx1E,KAAM,QAErBy1E,G,WAEL,aAAc,oBAEb1iF,KAAK2iF,WAAa,KAClB3iF,KAAK4iF,MAAQ,KACb5iF,KAAK6iF,MAAQ,K,gDAId,WAaC,OAXoB,OAAf7iF,KAAK6iF,QAET7iF,KAAK6iF,MAAQ,IAAIN,GACjBviF,KAAK6iF,MAAMrmE,kBAAmB,EAC9Bxc,KAAK6iF,MAAMnsD,SAAU,EAErB12B,KAAK6iF,MAAMC,OAAS,GACpB9iF,KAAK6iF,MAAME,WAAa,CAAEC,UAAU,IAI9BhjF,KAAK6iF,Q,+BAIb,WAcC,OAZyB,OAApB7iF,KAAK2iF,aAET3iF,KAAK2iF,WAAa,IAAIJ,GACtBviF,KAAK2iF,WAAWnmE,kBAAmB,EACnCxc,KAAK2iF,WAAWjsD,SAAU,EAC1B12B,KAAK2iF,WAAWM,mBAAoB,EACpCjjF,KAAK2iF,WAAWO,eAAiB,IAAIv9D,GACrC3lB,KAAK2iF,WAAWQ,oBAAqB,EACrCnjF,KAAK2iF,WAAWS,gBAAkB,IAAIz9D,IAIhC3lB,KAAK2iF,a,0BAIb,WAcC,OAZoB,OAAf3iF,KAAK4iF,QAET5iF,KAAK4iF,MAAQ,IAAIL,GACjBviF,KAAK4iF,MAAMpmE,kBAAmB,EAC9Bxc,KAAK4iF,MAAMlsD,SAAU,EACrB12B,KAAK4iF,MAAMK,mBAAoB,EAC/BjjF,KAAK4iF,MAAMM,eAAiB,IAAIv9D,GAChC3lB,KAAK4iF,MAAMO,oBAAqB,EAChCnjF,KAAK4iF,MAAMQ,gBAAkB,IAAIz9D,IAI3B3lB,KAAK4iF,Q,2BAIb,SAAel1E,GAoBd,OAlByB,OAApB1N,KAAK2iF,YAET3iF,KAAK2iF,WAAW3kE,cAAetQ,GAIZ,OAAf1N,KAAK4iF,OAET5iF,KAAK4iF,MAAM5kE,cAAetQ,GAIP,OAAf1N,KAAK6iF,OAET7iF,KAAK6iF,MAAM7kE,cAAetQ,GAIpB1N,O,wBAIR,SAAYqjF,GAsBX,OApBArjF,KAAKge,cAAe,CAAE/Q,KAAM,eAAgBqR,KAAM+kE,IAEzB,OAApBrjF,KAAK2iF,aAET3iF,KAAK2iF,WAAWjsD,SAAU,GAIP,OAAf12B,KAAK4iF,QAET5iF,KAAK4iF,MAAMlsD,SAAU,GAIF,OAAf12B,KAAK6iF,QAET7iF,KAAK6iF,MAAMnsD,SAAU,GAIf12B,O,oBAIR,SAAQqjF,EAAanqC,EAAOoqC,GAE3B,IAAIC,EAAY,KACZC,EAAW,KACXC,EAAW,KAETC,EAAY1jF,KAAK2iF,WACjBgB,EAAO3jF,KAAK4iF,MACZgB,EAAO5jF,KAAK6iF,MAElB,GAAKQ,GAAiD,oBAAlCnqC,EAAM4P,QAAQ+6B,gBAuCjC,GArCmB,OAAdH,GAIe,QAFnBH,EAAYrqC,EAAM4qC,QAAST,EAAYU,eAAgBT,MAItDI,EAAUtqE,OAAOC,UAAWkqE,EAAUS,UAAU5qE,QAChDsqE,EAAUtqE,OAAO+d,UAAWusD,EAAU3wD,SAAU2wD,EAAU1qE,SAAU0qE,EAAU1wD,OAEzEuwD,EAAUL,gBAEdQ,EAAUT,mBAAoB,EAC9BS,EAAUR,eAAejmE,KAAMsmE,EAAUL,iBAIzCQ,EAAUT,mBAAoB,EAI1BM,EAAUH,iBAEdM,EAAUP,oBAAqB,EAC/BO,EAAUN,gBAAgBnmE,KAAMsmE,EAAUH,kBAI1CM,EAAUP,oBAAqB,EAIhCnjF,KAAKge,cAAeykE,KAMjBmB,GAAQP,EAAYO,KAAO,CAE/BH,GAAW,EAFoB,oBAILJ,EAAYO,KAAKppD,UAJZ,IAI/B,2BAAsD,KAA1CypD,EAA0C,QAG/CC,EAAYhrC,EAAMirC,aAAcF,EAAYX,GAElD,QAA6CjjF,IAAxCujF,EAAKd,OAAQmB,EAAWG,WAA4B,CAGxD,IAAMC,EAAQ,IAAI9B,GAClB8B,EAAM7nE,kBAAmB,EACzB6nE,EAAM3tD,SAAU,EAChBktD,EAAKd,OAAQmB,EAAWG,WAAcC,EAEtCT,EAAKx6D,IAAKi7D,GAIX,IAAMA,EAAQT,EAAKd,OAAQmB,EAAWG,WAEnB,OAAdF,IAEJG,EAAMjrE,OAAOC,UAAW6qE,EAAUF,UAAU5qE,QAC5CirE,EAAMjrE,OAAO+d,UAAWktD,EAAMtxD,SAAUsxD,EAAMrrE,SAAUqrE,EAAMrxD,OAC9DqxD,EAAMC,YAAcJ,EAAUn8D,QAI/Bs8D,EAAM3tD,QAAwB,OAAdwtD,GA/Bc,8BAsC/B,IAAMK,EAAWX,EAAKd,OAAQ,oBACxB0B,EAAWZ,EAAKd,OAAQ,aACxBxrD,EAAWitD,EAASxxD,SAASxG,WAAYi4D,EAASzxD,UAKnD6wD,EAAKb,WAAWC,UAAY1rD,EAAWmtD,MAE3Cb,EAAKb,WAAWC,UAAW,EAC3BhjF,KAAKge,cAAe,CACnB/Q,KAAM,WACNy3E,WAAYrB,EAAYqB,WACxB/2E,OAAQ3N,SAGI4jF,EAAKb,WAAWC,UAAY1rD,GAAYmtD,OAErDb,EAAKb,WAAWC,UAAW,EAC3BhjF,KAAKge,cAAe,CACnB/Q,KAAM,aACNy3E,WAAYrB,EAAYqB,WACxB/2E,OAAQ3N,aAOI,OAAT2jF,GAAiBN,EAAYsB,WAIf,QAFlBnB,EAAWtqC,EAAM4qC,QAAST,EAAYsB,UAAWrB,MAIhDK,EAAKvqE,OAAOC,UAAWmqE,EAASQ,UAAU5qE,QAC1CuqE,EAAKvqE,OAAO+d,UAAWwsD,EAAK5wD,SAAU4wD,EAAK3qE,SAAU2qE,EAAK3wD,OAErDwwD,EAASN,gBAEbS,EAAKV,mBAAoB,EACzBU,EAAKT,eAAejmE,KAAMumE,EAASN,iBAInCS,EAAKV,mBAAoB,EAIrBO,EAASJ,iBAEbO,EAAKR,oBAAqB,EAC1BQ,EAAKP,gBAAgBnmE,KAAMumE,EAASJ,kBAIpCO,EAAKR,oBAAqB,GA8B/B,OAlBmB,OAAdO,IAEJA,EAAUhtD,QAA0B,OAAd6sD,GAIT,OAATI,IAEJA,EAAKjtD,QAAyB,OAAb8sD,GAIJ,OAATI,IAEJA,EAAKltD,QAAyB,OAAb+sD,GAIXzjF,S,KAMH4kF,G,kDAEL,WAAa7vC,EAAU0E,GAAK,0BAE3B,eAEA,IAAMpJ,EAAQ,eACRyX,EAAQ/S,EAAS+S,MAEnBgB,EAAU,KACV+7B,EAAyB,EAEzBvB,EAAiB,KACjBwB,EAAqB,cAErBC,EAAO,KACPC,EAAY,KACZC,EAAgB,KAChBC,EAAc,KACdC,EAAc,KACdpF,GAAgB,EAChBqF,EAA4B,KAC5BC,EAAsB,KACtBC,EAAsB,KACtBC,EAAU,KACVC,EAAa,KACbC,EAAa,KAEXC,EAAc,GACdC,EAAkB,IAAIC,IAItBC,EAAU,IAAI9yC,GACpB8yC,EAAQ5wD,OAAOwhD,OAAQ,GACvBoP,EAAQzlE,SAAW,IAAI5B,GAEvB,IAAMsnE,EAAU,IAAI/yC,GACpB+yC,EAAQ7wD,OAAOwhD,OAAQ,GACvBqP,EAAQ1lE,SAAW,IAAI5B,GAEvB,IAAM6jE,EAAU,CAAEwD,EAASC,GAErBC,EAAW,IAAI3D,GACrB2D,EAAS9wD,OAAOwhD,OAAQ,GACxBsP,EAAS9wD,OAAOwhD,OAAQ,GAExB,IAAIuP,EAAoB,KACpBC,EAAmB,KAwDvB,SAASC,EAAgBx4E,GAExB,IAAMy4E,EAAaR,EAAgB7rC,IAAKpsC,EAAM21E,aAEzC8C,GAEJA,EAAWnoE,cAAe,CAAE/Q,KAAMS,EAAMT,KAAMqR,KAAM5Q,EAAM21E,cAM5D,SAAS+C,IAERT,EAAgBU,SAAS,SAAWF,EAAY9C,GAE/C8C,EAAWG,WAAYjD,MAIxBsC,EAAgBzvC,QAEhB8vC,EAAoB,KACpBC,EAAmB,KAInBn+B,EAAM6yB,kBAAmB,MACzB5lC,EAASM,gBAAiBN,EAASK,mBAE9B6vC,GAAgBxrC,EAAG4jC,kBAAmB4H,GACtCG,GAA4B3rC,EAAG4jC,kBAAmB+H,GAClDC,GAAsB5rC,EAAG+jC,mBAAoB6H,GAC7CC,GAAsB7rC,EAAG+jC,mBAAoB8H,GAClDL,EAAgB,KAChBG,EAA4B,KAC5BC,EAAsB,KACtBC,EAAsB,KACtBH,EAAc,KACdD,EAAc,KACdF,EAAY,KACZl8B,EAAU,KAIVzuB,EAAU+e,OAEV/I,EAAMk2C,cAAe,EAErBl2C,EAAMryB,cAAe,CAAE/Q,KAAM,eA2L9B,SAASu5E,EAAsB94E,GAM9B,IAJA,IAAM+4E,EAAe39B,EAAQ29B,aAInB34E,EAAI,EAAGA,EAAI43E,EAAY13E,OAAQF,IAExC63E,EAAgBxyE,IAAKszE,EAAc34E,GAAK43E,EAAa53E,IAMtD,IAAM,IAAIA,EAAI,EAAGA,EAAIJ,EAAMg5E,QAAQ14E,OAAQF,IAAO,CAEjD,IAAMu1E,EAAc31E,EAAMg5E,QAAS54E,GAC7Bq4E,EAAaR,EAAgB7rC,IAAKupC,GAEnC8C,IAEJA,EAAWnoE,cAAe,CAAE/Q,KAAM,eAAgBqR,KAAM+kE,IACxDsC,EAAgB3rC,OAAQqpC,IAQ1B,IAAM,IAAIv1E,EAAI,EAAGA,EAAIJ,EAAMi5E,MAAM34E,OAAQF,IAAO,CAE/C,IAAMu1E,EAAc31E,EAAMi5E,MAAO74E,GAC3Bq4E,EAAaR,EAAgB7rC,IAAKupC,GAEnC8C,GAEJA,EAAWnoE,cAAe,CAAE/Q,KAAM,YAAaqR,KAAM+kE,KArUxD,EAAKuD,kBAAmB,EACxB,EAAK7yC,SAAU,EAEf,EAAKwyC,cAAe,EAEpB,EAAKM,cAAgB,SAAWr5E,GAE/B,IAAI24E,EAAaT,EAAal4E,GAS9B,YAPoBnN,IAAf8lF,IAEJA,EAAa,IAAIzD,GACjBgD,EAAal4E,GAAU24E,GAIjBA,EAAWW,qBAInB,EAAKC,kBAAoB,SAAWv5E,GAEnC,IAAI24E,EAAaT,EAAal4E,GAS9B,YAPoBnN,IAAf8lF,IAEJA,EAAa,IAAIzD,GACjBgD,EAAal4E,GAAU24E,GAIjBA,EAAWa,gBAInB,EAAKC,QAAU,SAAWz5E,GAEzB,IAAI24E,EAAaT,EAAal4E,GAS9B,YAPoBnN,IAAf8lF,IAEJA,EAAa,IAAIzD,GACjBgD,EAAal4E,GAAU24E,GAIjBA,EAAWe,gBA2DnB,EAAKC,0BAA4B,SAAW3nF,GAE3CqlF,EAAyBrlF,GAEG,IAAvB6wC,EAAMk2C,cAEVnzE,QAAQC,KAAM,0EAMhB,EAAK+zE,sBAAwB,SAAW5nF,GAEvCslF,EAAqBtlF,GAEO,IAAvB6wC,EAAMk2C,cAEVnzE,QAAQC,KAAM,6EAMhB,EAAKg0E,kBAAoB,WAExB,OAAO/D,GAIR,EAAKgE,aAAe,WAEnB,OAAuB,OAAhBpC,EAAuBA,EAAcC,GAI7C,EAAKoC,WAAa,WAEjB,OAAOvC,GAIR,EAAKwC,SAAW,WAEf,OAAOjC,GAIR,EAAKx8B,WAAa,WAEjB,OAAOD,GAIR,EAAK2+B,WAAL,6BAAkB,WAAiBjoF,GAAjB,uBAAA6S,EAAA,yDAIA,QAFjBy2C,EAAUtpD,GAFO,oBAMhBspD,EAAQ0I,iBAAkB,SAAU00B,GACpCp9B,EAAQ0I,iBAAkB,cAAe00B,GACzCp9B,EAAQ0I,iBAAkB,YAAa00B,GACvCp9B,EAAQ0I,iBAAkB,UAAW00B,GACrCp9B,EAAQ0I,iBAAkB,eAAgB00B,GAC1Cp9B,EAAQ0I,iBAAkB,aAAc00B,GACxCp9B,EAAQ0I,iBAAkB,MAAO40B,GACjCt9B,EAAQ0I,iBAAkB,qBAAsBg1B,IAIf,KAF3B59C,EAAa6Q,EAAGiuC,wBAENC,aAjBA,kCAmBTluC,EAAGmuC,mBAnBM,oBAuBoBvnF,IAA/ByoD,EAAQipB,YAAY98C,QAElB4yD,EAAY,CACjBC,UAAWl/C,EAAWk/C,UACtBlzE,MAAOg0B,EAAWh0B,MAClBqL,MAAO2oB,EAAW3oB,MAClBg2B,QAASrN,EAAWqN,QACpB4uC,uBAAwBA,GAGzBM,EAAc,IAAI4C,aAAcj/B,EAASrP,EAAIouC,GAE7C/+B,EAAQk/B,kBAAmB,CAAEC,UAAW9C,KAE7B1rC,aAAcyuC,uBAKnBL,EAAY,CACjBC,WAAW,EACXlzE,MAAOg0B,EAAWh0B,MAClBqL,MAAO2oB,EAAW3oB,MAClBg2B,QAASrN,EAAWqN,QACpB4uC,uBAAwBA,GAGzBM,EAAc,IAAI4C,aAAcj/B,EAASrP,EAAIouC,GAE7C/+B,EAAQk/B,kBAAmB,CAAE/yD,OAAQ,CAAEkwD,OAIvCpF,EAAgBn3C,EAAWk/C,UACvBK,EAAc,KAGbv/C,EAAW3oB,QAEfwlE,EAAa,IAER78C,EAAWqN,UAAUwvC,GAAc,MAExCD,EAAa58C,EAAWqN,QAAU,MAAQ,MAC1CkyC,EAAcv/C,EAAWqN,QAAU,MAAQ,OAItCmyC,EAAsB,CAC3BC,YAAaz/C,EAAWh0B,MAAQ,MAAQ,MACxCuzE,YAAaA,EACbpY,YAAa8U,GAGdG,EAAY,IAAIsD,eAAgBx/B,EAASrP,GAEzCyrC,EAAcF,EAAUuD,sBAAuBH,GAE/CnD,EAAgBxrC,EAAGwnC,oBAEnBn4B,EAAQk/B,kBAAmB,CAAE/yD,OAAQ,CAAEiwD,KAElCnF,IAEJqF,EAA4B3rC,EAAGwnC,oBAC/BoE,EAAsB5rC,EAAGgnC,qBACzBhnC,EAAGumC,iBAAkB,MAAOqF,GAC5B5rC,EAAGymC,+BACF,MACA,EACA,MACAgF,EAAYsD,aACZtD,EAAYuD,eACb3gC,EAAM2yB,gBAAiB,MAAO2K,GAC9B3rC,EAAG2mC,wBAAyB,MAAO,MAAO,MAAOiF,GACjD5rC,EAAGumC,iBAAkB,MAAO,MAEP,OAAhBmI,IAEJ7C,EAAsB7rC,EAAGgnC,qBACzBhnC,EAAGumC,iBAAkB,MAAOsF,GAC5B7rC,EAAGymC,+BAAgC,MAAO,EAAGiI,EAAajD,EAAYsD,aAActD,EAAYuD,eAChGhvC,EAAG2mC,wBAAyB,MAAOoF,EAAY,MAAOF,GACtD7rC,EAAGumC,iBAAkB,MAAO,OAI7Bl4B,EAAM2yB,gBAAiB,MAAO,QA9GhB,UAoHO3xB,EAAQ4/B,sBAAuB5D,GApHtC,QAoHhBxB,EApHgB,OAsHhBjpD,EAAUkf,WAAYuP,GACtBzuB,EAAU6O,QAEVmH,EAAMk2C,cAAe,EAErBl2C,EAAMryB,cAAe,CAAE/Q,KAAM,iBA3Hb,4CAAlB,kCAAAjN,KAAA,eAgLA,IAAM2oF,EAAa,IAAIhjE,GACjBijE,EAAa,IAAIjjE,GAyDvB,SAASkjE,EAAcpiE,EAAQuP,GAEd,OAAXA,EAEJvP,EAAOK,YAAY7J,KAAMwJ,EAAOrN,QAIhCqN,EAAOK,YAAYtQ,iBAAkBwf,EAAOlP,YAAaL,EAAOrN,QAIjEqN,EAAOE,mBAAmB1J,KAAMwJ,EAAOK,aAAcrO,SAItD,EAAKowE,aAAe,SAAWpiE,GAE9B,GAAiB,OAAZqiC,EAAL,CAEAi9B,EAAS9xD,KAAO6xD,EAAQ7xD,KAAO4xD,EAAQ5xD,KAAOxN,EAAOwN,KACrD8xD,EAAS7xD,IAAM4xD,EAAQ5xD,IAAM2xD,EAAQ3xD,IAAMzN,EAAOyN,IAE7C8xD,IAAsBD,EAAS9xD,MAAQgyD,IAAqBF,EAAS7xD,MAIzE40B,EAAQk/B,kBAAmB,CAC1Bc,UAAW/C,EAAS9xD,KACpB80D,SAAUhD,EAAS7xD,MAGpB8xD,EAAoBD,EAAS9xD,KAC7BgyD,EAAmBF,EAAS7xD,KAI7B,IAAM8B,EAASvP,EAAOuP,OAChBqsD,EAAU0D,EAAS1D,QAEzBwG,EAAc9C,EAAU/vD,GAExB,IAAM,IAAIloB,EAAI,EAAGA,EAAIu0E,EAAQr0E,OAAQF,IAEpC+6E,EAAcxG,EAASv0E,GAAKkoB,GAI7B+vD,EAASj/D,YAAYqQ,UAAW4uD,EAAShzD,SAAUgzD,EAAStkE,WAAYskE,EAAS/yD,OAIjFvM,EAAOsM,SAAS9V,KAAM8oE,EAAShzD,UAC/BtM,EAAOhF,WAAWxE,KAAM8oE,EAAStkE,YACjCgF,EAAOuM,MAAM/V,KAAM8oE,EAAS/yD,OAC5BvM,EAAOrN,OAAO6D,KAAM8oE,EAAS3sE,QAC7BqN,EAAOK,YAAY7J,KAAM8oE,EAASj/D,aAIlC,IAFA,IAAMoD,EAAWzD,EAAOyD,SAEdpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5Coc,EAAUpc,GAAIuqB,mBAAmB,GAMV,IAAnBgqD,EAAQr0E,OArHd,SAAiCyY,EAAQo/D,EAASC,GAEjD6C,EAAWnxD,sBAAuBquD,EAAQ/+D,aAC1C8hE,EAAWpxD,sBAAuBsuD,EAAQh/D,aAE1C,IAAMkiE,EAAML,EAAWp8D,WAAYq8D,GAE7BK,EAAQpD,EAAQj/D,iBAAiB5S,SACjCk1E,EAAQpD,EAAQl/D,iBAAiB5S,SAKjCigB,EAAOg1D,EAAO,KAASA,EAAO,IAAO,GACrC/0D,EAAM+0D,EAAO,KAASA,EAAO,IAAO,GACpCE,GAAWF,EAAO,GAAM,GAAMA,EAAO,GACrCG,GAAcH,EAAO,GAAM,GAAMA,EAAO,GAExCI,GAAYJ,EAAO,GAAM,GAAMA,EAAO,GACtCK,GAAaJ,EAAO,GAAM,GAAMA,EAAO,GACvCr1D,EAAOI,EAAOo1D,EACdv1D,EAAQG,EAAOq1D,EAIfC,EAAUP,IAAUK,EAAUC,GAC9BE,EAAUD,GAAYF,EAG5BxD,EAAQ/+D,YAAYqQ,UAAW1Q,EAAOsM,SAAUtM,EAAOhF,WAAYgF,EAAOuM,OAC1EvM,EAAOgjE,WAAYD,GACnB/iE,EAAOijE,WAAYH,GACnB9iE,EAAOK,YAAYuK,QAAS5K,EAAOsM,SAAUtM,EAAOhF,WAAYgF,EAAOuM,OACvEvM,EAAOE,mBAAmB1J,KAAMwJ,EAAOK,aAAcrO,SAKrD,IAAMkxE,EAAQ11D,EAAOs1D,EACfK,EAAO11D,EAAMq1D,EACbM,EAAQh2D,EAAO21D,EACfM,EAASh2D,GAAUk1D,EAAMQ,GACzBO,EAAOZ,EAASj1D,EAAM01D,EAAOD,EAC7BK,EAAUZ,EAAYl1D,EAAM01D,EAAOD,EAEzCljE,EAAOG,iBAAiBwtB,gBAAiBy1C,EAAOC,EAAQC,EAAMC,EAASL,EAAOC,GA0E7EK,CAAwBlE,EAAUF,EAASC,GAM3CC,EAASn/D,iBAAiB3J,KAAM4oE,EAAQj/D,oBAM1C,EAAKsjE,UAAY,WAEhB,OAAOnE,GAIR,EAAKoE,aAAe,WAEnB,OAAqB,OAAhBjF,EAEGA,EAAYkF,eAIC,OAAhBjF,EAEGA,EAAYiF,oBAFpB,GAUD,EAAKC,aAAe,SAAWC,GAKT,OAAhBpF,IAEJA,EAAYkF,eAAiBE,GAIT,OAAhBnF,QAAuD9kF,IAA/B8kF,EAAYiF,iBAExCjF,EAAYiF,eAAiBE,IAQ/B,IAAIC,EAA2B,KA8H/B,IAAMlwD,EAAY,IAAIue,GAxrBK,OA0rB3Bve,EAAUif,kBA9HV,SAA2BL,EAAMC,GAKhC,GAHA6rC,EAAO7rC,EAAMsxC,cAAelH,GAC5BiC,EAAUrsC,EAEI,OAAT6rC,EAAgB,CAEpB,IAAM0F,EAAQ1F,EAAK0F,MAEE,OAAhBtF,GAEJr9B,EAAM6yB,kBAAmBwK,EAAYzK,aAItC,IAAIgQ,GAAsB,EAIrBD,EAAMz8E,SAAW+3E,EAAS1D,QAAQr0E,SAEtC+3E,EAAS1D,QAAQr0E,OAAS,EAE1B08E,GAAsB,GAIvB,IAAM,IAAI58E,EAAI,EAAGA,EAAI28E,EAAMz8E,OAAQF,IAAO,CAEzC,IAAMslC,EAAOq3C,EAAO38E,GAEhBsS,EAAW,KAEf,GAAqB,OAAhB+kE,EAEJ/kE,EAAW+kE,EAAYzP,YAAatiC,OAE9B,CAEN,IAAMu3C,EAAa3F,EAAU4F,gBAAiB1F,EAAa9xC,GAE3D0U,EAAM6yB,kBAAmBsK,QAEe5kF,IAAnCsqF,EAAWE,qBAEfpxC,EAAGmmC,qBAAsB,MAAO4F,EAAY,KAAMmF,EAAWE,oBAAqB,GAInFpxC,EAAGmmC,qBAAsB,MAAO,MAAO,KAAM+K,EAAWG,aAAc,GAEtE1qE,EAAWuqE,EAAWvqE,SAIvB,IAAMqG,EAAS47D,EAASv0E,GAExB2Y,EAAOrN,OAAOC,UAAW+5B,EAAK4wC,UAAU5qE,QACxCqN,EAAOG,iBAAiBvN,UAAW+5B,EAAKxsB,kBACxCH,EAAOrG,SAASjN,IAAKiN,EAAS1Q,EAAG0Q,EAASzQ,EAAGyQ,EAASrF,MAAOqF,EAASpF,QAE3D,IAANlN,GAEJi4E,EAAS3sE,OAAO6D,KAAMwJ,EAAOrN,SAID,IAAxBsxE,GAEJ3E,EAAS1D,QAAQ/0E,KAAMmZ,GAMpBs5D,IAEJj4B,EAAM6yB,kBAAmByK,GAEL,OAAfK,GAAsBhsC,EAAGvD,MAAOuvC,IAUvC,IAFA,IAAMgB,EAAe39B,EAAQ29B,aAEnB34E,EAAI,EAAGA,EAAI43E,EAAY13E,OAAQF,IAAO,CAE/C,IAAMq4E,EAAaT,EAAa53E,GAC1Bu1E,EAAcoD,EAAc34E,GAElCq4E,EAAWxkE,OAAQ0hE,EAAanqC,EAAOoqC,GAMxC,GAFKiH,GAA2BA,EAA0BtxC,EAAMC,GAE3D6mC,EAAgB,CAEpB,IAAMhlE,EAAQmqE,EAAYsD,aACpBxtE,EAASkqE,EAAYuD,cAE3B3gC,EAAM2yB,gBAAiB,MAAO2K,GAC9Bt9B,EAAM2yB,gBAAiB,MAAOwK,GAE9BxrC,EAAGsxC,sBAAuB,MAAO,CAAEvF,IACnC/rC,EAAGsxC,sBAAuB,MAAO,CAAEvF,IACnC/rC,EAAG4nC,gBAAiB,EAAG,EAAGtmE,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,EAAQ,MAAO,MAErEy+B,EAAGsxC,sBAAuB,MAAO,CAAE,QACnCjjC,EAAM2yB,gBAAiB,MAAO,MAC9B3yB,EAAM2yB,gBAAiB,MAAO,MAE9B3yB,EAAM2yB,gBAAiB,MAAO2K,GAI/BG,EAAU,QAQX,EAAKjsC,iBAAmB,SAAWj1B,GAElCkmE,EAA2BlmE,GAI5B,EAAK5D,QAAU,aAlsBY,E,UAFFzT,IA0sB3B,SAASg+E,GAAgB/lC,GAyGxB,SAASgmC,EAAuBv5C,EAAUvX,GAEzCuX,EAAS/T,QAAQn+B,MAAQ26B,EAASwD,QAE7BxD,EAAS8F,OAEbyR,EAAS+R,QAAQjkD,MAAMyd,KAAMkd,EAAS8F,OAIlC9F,EAASqG,UAEbkR,EAASlR,SAAShhC,MAAMyd,KAAMkd,EAASqG,UAAW1sB,eAAgBqmB,EAASsG,mBAIvEtG,EAASiH,MAEbsQ,EAAStQ,IAAI5hC,MAAQ26B,EAASiH,KAI1BjH,EAASmH,WAEboQ,EAASpQ,SAAS9hC,MAAQ26B,EAASmH,UAI/BnH,EAASmI,cAEboP,EAASpP,YAAY9iC,MAAQ26B,EAASmI,aAIlCnI,EAASsJ,UAAY,IAEzBiO,EAASjO,UAAUjkC,MAAQ26B,EAASsJ,WAIrC,IAsDIynD,EA2FAC,EAjJE1oD,EAASwiB,EAAWnL,IAAK3f,GAAWsI,OAE1C,GAAKA,EAAS,CAEbiP,EAASjP,OAAOjjC,MAAQijC,EAExBiP,EAASoS,WAAWtkD,MAAUijC,EAAO+S,gBAAkD,IAAjC/S,EAAO1lB,uBAAsC,EAAI,EAEvG20B,EAAS9O,aAAapjC,MAAQ26B,EAASyI,aACvC8O,EAASqS,IAAIvkD,MAAQ26B,EAAS4pB,IAC9BrS,EAAS7O,gBAAgBrjC,MAAQ26B,EAAS0I,gBAE1C,IAAMmhB,EAAciB,EAAWnL,IAAKrX,GAAS85C,mBAExBl8E,IAAhB2jD,IAEJtS,EAASsS,YAAYxkD,MAAQwkD,GAM1B7pB,EAASoH,WAEbmQ,EAASnQ,SAAS/hC,MAAQ26B,EAASoH,SACnCmQ,EAASlQ,kBAAkBhiC,MAAQ26B,EAASqH,mBAIxCrH,EAASsH,QAEbiQ,EAASjQ,MAAMjiC,MAAQ26B,EAASsH,MAChCiQ,EAAShQ,eAAeliC,MAAQ26B,EAASuH,gBAwBrCvH,EAASiH,IAEb8pD,EAAa/wD,EAASiH,IAEXjH,EAASmI,YAEpB4oD,EAAa/wD,EAASmI,YAEXnI,EAAS6H,gBAEpBkpD,EAAa/wD,EAAS6H,gBAEX7H,EAAS0H,UAEpBqpD,EAAa/wD,EAAS0H,UAEX1H,EAASwH,QAEpBupD,EAAa/wD,EAASwH,QAEXxH,EAASgI,aAEpB+oD,EAAa/wD,EAASgI,aAEXhI,EAASiI,aAEpB8oD,EAAa/wD,EAASiI,aAEXjI,EAASmH,SAEpB4pD,EAAa/wD,EAASmH,SAEXnH,EAASkI,YAEpB6oD,EAAa/wD,EAASkI,YAEXlI,EAAS6G,aAEpBkqD,EAAa/wD,EAAS6G,aAEX7G,EAAS+G,mBAEpBgqD,EAAa/wD,EAAS+G,mBAEX/G,EAAS8G,sBAEpBiqD,EAAa/wD,EAAS8G,sBAEX9G,EAASoI,qBAEpB2oD,EAAa/wD,EAASoI,qBAEXpI,EAASqI,gBAEpB0oD,EAAa/wD,EAASqI,gBAEXrI,EAAS6I,gBAEpBkoD,EAAa/wD,EAAS6I,gBAEX7I,EAAS+I,eAEpBgoD,EAAa/wD,EAAS+I,mBAIH7iC,IAAf6qF,IAGCA,EAAWvqE,sBAEfuqE,EAAaA,EAAW7qE,UAIY,IAAhC6qE,EAAW1uE,kBAEf0uE,EAAWj0D,eAIZya,EAASgS,YAAYlkD,MAAMyd,KAAMiuE,EAAW9xE,SAUxC+gB,EAASsH,MAEb0pD,EAAchxD,EAASsH,MAEZtH,EAASoH,WAEpB4pD,EAAchxD,EAASoH,eAIHlhC,IAAhB8qF,IAGCA,EAAYxqE,sBAEhBwqE,EAAcA,EAAY9qE,UAIW,IAAjC8qE,EAAY3uE,kBAEhB2uE,EAAYl0D,eAIbya,EAASiS,aAAankD,MAAMyd,KAAMkuE,EAAY/xE,SAyNhD,SAASgyE,EAAyB15C,EAAUvX,GAE3CuX,EAASvR,UAAU3gC,MAAQ26B,EAASgG,UACpCuR,EAAStR,UAAU5gC,MAAQ26B,EAASiG,UAE/BjG,EAASgI,eAEbuP,EAASvP,aAAa3iC,MAAQ26B,EAASgI,cAInChI,EAASiI,eAEbsP,EAAStP,aAAa5iC,MAAQ26B,EAASiI,cAInCjI,EAASkI,cAEbqP,EAASrP,YAAY7iC,MAAQ26B,EAASkI,aAIlClI,EAASwH,UAEb+P,EAAS/P,QAAQniC,MAAQ26B,EAASwH,QAClC+P,EAAS9P,UAAUpiC,MAAQ26B,EAASyH,UAC/BzH,EAASsD,OAAS/7B,IAAWgwC,EAAS9P,UAAUpiC,QAAW,IAI5D26B,EAAS0H,YAEb6P,EAAS7P,UAAUriC,MAAQ26B,EAAS0H,UACpC6P,EAAS3P,YAAYviC,MAAMyd,KAAMkd,EAAS4H,aACrC5H,EAASsD,OAAS/7B,GAAWgwC,EAAS3P,YAAYviC,MAAMqqC,UAIzD1P,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBAI7B+iB,EAAWnL,IAAK3f,GAAWsI,SAKzCiP,EAAS/O,gBAAgBnjC,MAAQ26B,EAASwI,iBAwL5C,MAAO,CACN0oD,mBAjwBD,SAA6B35C,EAAUnU,GAEtCmU,EAASmT,SAASrlD,MAAMyd,KAAMsgB,EAAI0C,OAE7B1C,EAAI+tD,OAER55C,EAASiT,QAAQnlD,MAAQ+9B,EAAItJ,KAC7Byd,EAASkT,OAAOplD,MAAQ+9B,EAAIrJ,KAEjBqJ,EAAI2uC,YAEfx6B,EAASgT,WAAWllD,MAAQ+9B,EAAIguD,UAuvBjCC,wBAjvBD,SAAkC95C,EAAUvX,EAAUsxD,EAAYzwE,EAAQ0wE,GAEpEvxD,EAASqM,oBAEbykD,EAAuBv5C,EAAUvX,GAEtBA,EAASwxD,uBAEpBV,EAAuBv5C,EAAUvX,GAoanC,SAAiCuX,EAAUvX,GAErCA,EAASkI,cAEbqP,EAASrP,YAAY7iC,MAAQ26B,EAASkI,aAvatCupD,CAAwBl6C,EAAUvX,IAEvBA,EAAS0xD,oBAEpBZ,EAAuBv5C,EAAUvX,GA8cnC,SAA8BuX,EAAUvX,GAElCA,EAAS2I,cAEb4O,EAAS5O,YAAYtjC,MAAQ26B,EAAS2I,aAIlC3I,EAASkI,cAEbqP,EAASrP,YAAY7iC,MAAQ26B,EAASkI,aAIlClI,EAASwH,UAEb+P,EAAS/P,QAAQniC,MAAQ26B,EAASwH,QAClC+P,EAAS9P,UAAUpiC,MAAQ26B,EAASyH,UAC/BzH,EAASsD,OAAS/7B,IAAWgwC,EAAS9P,UAAUpiC,QAAW,IAI5D26B,EAAS0H,YAEb6P,EAAS7P,UAAUriC,MAAQ26B,EAAS0H,UACpC6P,EAAS3P,YAAYviC,MAAMyd,KAAMkd,EAAS4H,aACrC5H,EAASsD,OAAS/7B,GAAWgwC,EAAS3P,YAAYviC,MAAMqqC,UAIzD1P,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBA/e3C4pD,CAAqBp6C,EAAUvX,IAEpBA,EAAS4xD,qBAEpBd,EAAuBv5C,EAAUvX,GAoanC,SAA+BuX,EAAUvX,GAExCuX,EAAShR,SAASlhC,MAAMyd,KAAMkd,EAASuG,UACvCgR,EAAS7Q,UAAUrhC,MAAQ4O,KAAKiB,IAAK8qB,EAAS0G,UAAW,MAEpD1G,EAASkI,cAEbqP,EAASrP,YAAY7iC,MAAQ26B,EAASkI,aAIlClI,EAASwH,UAEb+P,EAAS/P,QAAQniC,MAAQ26B,EAASwH,QAClC+P,EAAS9P,UAAUpiC,MAAQ26B,EAASyH,UAC/BzH,EAASsD,OAAS/7B,IAAWgwC,EAAS9P,UAAUpiC,QAAW,IAI5D26B,EAAS0H,YAEb6P,EAAS7P,UAAUriC,MAAQ26B,EAAS0H,UACpC6P,EAAS3P,YAAYviC,MAAMyd,KAAMkd,EAAS4H,aACrC5H,EAASsD,OAAS/7B,GAAWgwC,EAAS3P,YAAYviC,MAAMqqC,UAIzD1P,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBAlc3C8pD,CAAsBt6C,EAAUvX,IAErBA,EAASwxC,wBAEpBsf,EAAuBv5C,EAAUvX,GAE5BA,EAAS8xD,uBAoiBhB,SAAkCv6C,EAAUvX,EAAUuxD,GAErDN,EAAyB15C,EAAUvX,GAEnCuX,EAASqS,IAAIvkD,MAAQ26B,EAAS4pB,IAEzB5pB,EAASkG,MAAQ,IAErBqR,EAASpR,UAAU9gC,MAAMyd,KAAMkd,EAASmG,WAAYxsB,eAAgBqmB,EAASkG,OAE7EqR,EAASnR,eAAe/gC,MAAQ26B,EAASoG,gBAIrCpG,EAAS2G,UAAY,IAEzB4Q,EAAS5Q,UAAUthC,MAAQ26B,EAAS2G,UACpC4Q,EAAS3Q,mBAAmBvhC,MAAQ26B,EAAS4G,mBAExC5G,EAAS6G,eAEb0Q,EAAS1Q,aAAaxhC,MAAQ26B,EAAS6G,cAInC7G,EAAS8G,wBAEbyQ,EAASzQ,sBAAsBzhC,MAAQ26B,EAAS8G,uBAI5C9G,EAAS+G,qBAEbwQ,EAASvQ,qBAAqB3hC,MAAMyd,KAAMkd,EAASgH,sBACnDuQ,EAASxQ,mBAAmB1hC,MAAQ26B,EAAS+G,mBAExC/G,EAASsD,OAAS/7B,GAEtBgwC,EAASvQ,qBAAqB3hC,MAAMqqC,WAQlC1P,EAAS4I,aAAe,IAE5B2O,EAAS3O,aAAavjC,MAAQ26B,EAAS4I,aACvC2O,EAASigB,uBAAuBnyD,MAAQksF,EAAyBrrE,QACjEqxB,EAASggB,wBAAwBlyD,MAAM2T,IAAKu4E,EAAyB3wE,MAAO2wE,EAAyB1wE,QAEhGmf,EAAS6I,kBAEb0O,EAAS1O,gBAAgBxjC,MAAQ26B,EAAS6I,iBAI3C0O,EAASzO,UAAUzjC,MAAQ26B,EAAS8I,UAE/B9I,EAAS+I,eAEbwO,EAASxO,aAAa1jC,MAAQ26B,EAAS+I,cAIxCwO,EAASvO,oBAAoB3jC,MAAQ26B,EAASgJ,oBAC9CuO,EAAStO,gBAAgB5jC,MAAMyd,KAAMkd,EAASiJ,kBAI/CsO,EAAS/Q,kBAAkBnhC,MAAQ26B,EAASwG,kBAC5C+Q,EAAS9Q,aAAaphC,MAAMyd,KAAMkd,EAASyG,cAEtCzG,EAASoI,uBAEbmP,EAASnP,qBAAqB/iC,MAAQ26B,EAASoI,sBAI3CpI,EAASqI,kBAEbkP,EAASlP,gBAAgBhjC,MAAQ26B,EAASqI,iBApnBzC0pD,CAAyBx6C,EAAUvX,EAAUuxD,GAI7CN,EAAyB15C,EAAUvX,IAIzBA,EAASgyD,sBAEpBlB,EAAuBv5C,EAAUvX,GAgnBnC,SAAgCuX,EAAUvX,GAEpCA,EAASkH,SAEbqQ,EAASrQ,OAAO7hC,MAAQ26B,EAASkH,QAI7BlH,EAASwH,UAEb+P,EAAS/P,QAAQniC,MAAQ26B,EAASwH,QAClC+P,EAAS9P,UAAUpiC,MAAQ26B,EAASyH,UAC/BzH,EAASsD,OAAS/7B,IAAWgwC,EAAS9P,UAAUpiC,QAAW,IAI5D26B,EAAS0H,YAEb6P,EAAS7P,UAAUriC,MAAQ26B,EAAS0H,UACpC6P,EAAS3P,YAAYviC,MAAMyd,KAAMkd,EAAS4H,aACrC5H,EAASsD,OAAS/7B,GAAWgwC,EAAS3P,YAAYviC,MAAMqqC,UAIzD1P,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBA3oB3CkqD,CAAuB16C,EAAUvX,IAEtBA,EAAS63C,qBAEpBiZ,EAAuBv5C,EAAUvX,GA6oBnC,SAA+BuX,EAAUvX,GAEnCA,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBAlpB3CmqD,CAAsB36C,EAAUvX,IAErBA,EAAS83C,wBAEpBgZ,EAAuBv5C,EAAUvX,GAopBnC,SAAkCuX,EAAUvX,GAEtCA,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBAI5CwP,EAAS8V,kBAAkBhoD,MAAMyd,KAAMkd,EAASqtB,mBAChD9V,EAAS+V,aAAajoD,MAAQ26B,EAASstB,aACvC/V,EAASgW,YAAYloD,MAAQ26B,EAASutB,YA/pBrC4kC,CAAyB56C,EAAUvX,IAExBA,EAASoyD,sBAEpBtB,EAAuBv5C,EAAUvX,GA+pBnC,SAAgCuX,EAAUvX,GAEpCA,EAASwH,UAEb+P,EAAS/P,QAAQniC,MAAQ26B,EAASwH,QAClC+P,EAAS9P,UAAUpiC,MAAQ26B,EAASyH,UAC/BzH,EAASsD,OAAS/7B,IAAWgwC,EAAS9P,UAAUpiC,QAAW,IAI5D26B,EAAS0H,YAEb6P,EAAS7P,UAAUriC,MAAQ26B,EAAS0H,UACpC6P,EAAS3P,YAAYviC,MAAMyd,KAAMkd,EAAS4H,aACrC5H,EAASsD,OAAS/7B,GAAWgwC,EAAS3P,YAAYviC,MAAMqqC,UAIzD1P,EAAS6H,kBAEb0P,EAAS1P,gBAAgBxiC,MAAQ26B,EAAS6H,gBAC1C0P,EAASzP,kBAAkBziC,MAAQ26B,EAAS8H,kBAC5CyP,EAASxP,iBAAiB1iC,MAAQ26B,EAAS+H,kBAprB3CsqD,CAAuB96C,EAAUvX,IAEtBA,EAASsyD,qBAyPtB,SAA8B/6C,EAAUvX,GAEvCuX,EAAS+R,QAAQjkD,MAAMyd,KAAMkd,EAAS8F,OACtCyR,EAAS/T,QAAQn+B,MAAQ26B,EAASwD,QA1PjC+uD,CAAqBh7C,EAAUvX,GAE1BA,EAASwyD,sBA4PhB,SAA8Bj7C,EAAUvX,GAEvCuX,EAASnO,SAAS/jC,MAAQ26B,EAASoJ,SACnCmO,EAASyV,UAAU3nD,MAAQ26B,EAASoJ,SAAWpJ,EAASqJ,QACxDkO,EAAS1e,MAAMxzB,MAAQ26B,EAASnH,MA9P9B45D,CAAqBl7C,EAAUvX,IAIrBA,EAAS0yD,iBA8PtB,SAAgCn7C,EAAUvX,EAAUsxD,EAAYzwE,GAE/D02B,EAAS+R,QAAQjkD,MAAMyd,KAAMkd,EAAS8F,OACtCyR,EAAS/T,QAAQn+B,MAAQ26B,EAASwD,QAClC+T,EAASzoB,KAAKzpB,MAAQ26B,EAASlR,KAAOwiE,EACtC/5C,EAAS1e,MAAMxzB,MAAiB,GAATwb,EAElBmf,EAASiH,MAEbsQ,EAAStQ,IAAI5hC,MAAQ26B,EAASiH,KAI1BjH,EAASmH,WAEboQ,EAASpQ,SAAS9hC,MAAQ26B,EAASmH,UAI/BnH,EAASsJ,UAAY,IAEzBiO,EAASjO,UAAUjkC,MAAQ26B,EAASsJ,WAQrC,IAAIynD,EAEC/wD,EAASiH,IAEb8pD,EAAa/wD,EAASiH,IAEXjH,EAASmH,WAEpB4pD,EAAa/wD,EAASmH,eAIHjhC,IAAf6qF,KAEiC,IAAhCA,EAAW1uE,kBAEf0uE,EAAWj0D,eAIZya,EAASgS,YAAYlkD,MAAMyd,KAAMiuE,EAAW9xE,SA7S5C0zE,CAAuBp7C,EAAUvX,EAAUsxD,EAAYzwE,GAE5Cmf,EAAS4yD,iBAiTtB,SAAiCr7C,EAAUvX,GAE1CuX,EAAS+R,QAAQjkD,MAAMyd,KAAMkd,EAAS8F,OACtCyR,EAAS/T,QAAQn+B,MAAQ26B,EAASwD,QAClC+T,EAAS14B,SAASxZ,MAAQ26B,EAASnhB,SAE9BmhB,EAASiH,MAEbsQ,EAAStQ,IAAI5hC,MAAQ26B,EAASiH,KAI1BjH,EAASmH,WAEboQ,EAASpQ,SAAS9hC,MAAQ26B,EAASmH,UAI/BnH,EAASsJ,UAAY,IAEzBiO,EAASjO,UAAUjkC,MAAQ26B,EAASsJ,WAQrC,IAAIynD,EAEC/wD,EAASiH,IAEb8pD,EAAa/wD,EAASiH,IAEXjH,EAASmH,WAEpB4pD,EAAa/wD,EAASmH,eAIHjhC,IAAf6qF,KAEiC,IAAhCA,EAAW1uE,kBAEf0uE,EAAWj0D,eAIZya,EAASgS,YAAYlkD,MAAMyd,KAAMiuE,EAAW9xE,SA/V5C4zE,CAAwBt7C,EAAUvX,GAEvBA,EAAS8yD,kBAEpBv7C,EAASzR,MAAMzgC,MAAMyd,KAAMkd,EAAS8F,OACpCyR,EAAS/T,QAAQn+B,MAAQ26B,EAASwD,SAEvBxD,EAAS0Y,mBAEpB1Y,EAASwY,oBAAqB,KAsqBjC,SAASu6C,KAER,IAAMpyE,EAASR,GAAiB,UAEhC,OADAQ,EAAO8pB,MAAMuoD,QAAU,QAChBryE,EAIR,SAASsyE,KAAiC,IAAlBvzD,EAAkB,uDAAL,GAE9BpgB,OAAgCpZ,IAAtBw5B,EAAW/e,OAAuB+e,EAAW/e,OAASoyE,KACrEG,OAAkChtF,IAAvBw5B,EAAW5e,QAAwB4e,EAAW5e,QAAU,KAEnEqyE,OAA8BjtF,IAArBw5B,EAAWjlB,OAAsBilB,EAAWjlB,MACrD24E,OAA8BltF,IAArBw5B,EAAW5Z,OAAsB4Z,EAAW5Z,MACrDutE,OAAkCntF,IAAvBw5B,EAAWoc,SAAwBpc,EAAWoc,QACzDw3C,OAAsCptF,IAAzBw5B,EAAWiuD,WAA0BjuD,EAAWiuD,UAC7D4F,OAAwDrtF,IAAlCw5B,EAAW4F,oBAAmC5F,EAAW4F,mBAC/EkuD,OAA8DttF,IAArCw5B,EAAW+zD,uBAAsC/zD,EAAW+zD,sBACrFC,OAAkDxtF,IAA/Bw5B,EAAWi0D,gBAAgCj0D,EAAWi0D,gBAAkB,UAC3FC,OAA4E1tF,IAA5Cw5B,EAAWm0D,8BAA6Cn0D,EAAWm0D,6BAEhGC,EAAoB,KACpBC,EAAqB,KAKnBC,EAAkB,GAClBC,EAAmB,GAIzBpuF,KAAKquF,WAAa50E,EAGlBzZ,KAAKkpE,MAAQ,CAMZC,mBAAmB,GAKpBnpE,KAAKipD,WAAY,EACjBjpD,KAAKkpD,gBAAiB,EACtBlpD,KAAKmpD,gBAAiB,EACtBnpD,KAAKopD,kBAAmB,EAIxBppD,KAAKsuF,aAAc,EAInBtuF,KAAK8+B,eAAiB,GACtB9+B,KAAK0vD,sBAAuB,EAI5B1vD,KAAKulC,YAAc,EACnBvlC,KAAKo1D,eAAiB3qD,GAItBzK,KAAKmoE,yBAA0B,EAI/BnoE,KAAKwpD,YAAczlD,GACnB/D,KAAKuuF,oBAAsB,EAI3B,IAAMC,EAAQxuF,KAEVyuF,GAAiB,EAIjBC,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KACvBC,GAAuB,EAEvBC,EAAiB,KAEfC,EAAmB,IAAIvwE,GACvBwwE,EAAkB,IAAIxwE,GACxBywE,EAAsB,KAItBC,EAASz1E,EAAQsB,MACjBo0E,EAAU11E,EAAQuB,OAElBo0E,EAAc,EACdC,EAAc,KACdC,EAAmB,KAEjB9c,EAAY,IAAIh0D,GAAS,EAAG,EAAG0wE,EAAQC,GACvCI,EAAW,IAAI/wE,GAAS,EAAG,EAAG0wE,EAAQC,GACxCK,GAAe,EAIbC,EAAsB,GAItBpd,EAAW,IAAIj7B,GAIjBs4C,GAAmB,EACnBC,GAAwB,EAIxBC,EAA4B,KAI1BC,EAAoB,IAAI9/D,GAExB+/D,EAAW,IAAInqE,GAEfoqE,EAAc,CAAEx2D,WAAY,KAAMgE,IAAK,KAAM9D,YAAa,KAAMu2D,iBAAkB,KAAM12D,SAAS,GAEvG,SAAS22D,IAER,OAAgC,OAAzBrB,EAAgCQ,EAAc,EAMtD,IAiFIh9C,EAAYsH,EAAcoO,EAAOvoD,EACjC0lD,EAAY5nC,EAAUwqC,EAAU0iB,EAAY3hC,EAAYpQ,GAAYuvB,GACpEmoC,GAAcz3D,GAAW03D,GAAare,GAAc3/B,GAAUo6B,GAE9DhzC,GAAY62D,GAAcC,GAAgBC,GAE1C7U,GAAO1xB,GAvFPyxB,GAAM6R,EAEV,SAASnyE,GAAYq1E,EAAcC,GAElC,IAAM,IAAI1iF,EAAI,EAAGA,EAAIyiF,EAAaviF,OAAQF,IAAO,CAEhD,IAAM2iF,EAAcF,EAAcziF,GAC5BmN,EAAUxB,EAAQyB,WAAYu1E,EAAaD,GACjD,GAAiB,OAAZv1E,EAAmB,OAAOA,EAIhC,OAAO,KAIR,IAEC,IAAMu1E,GAAoB,CACzB57E,MAAO04E,EACPrtE,MAAOstE,EACPt3C,QAASu3C,EACT1F,UAAW2F,EACXhuD,mBAAoBiuD,EACpBE,sBAAuBD,EACvBG,gBAAiBD,EACjBG,6BAA8BD,GAQ/B,GAHAt0E,EAAQ+3C,iBAAkB,mBAAoBk/B,IAAe,GAC7Dj3E,EAAQ+3C,iBAAkB,uBAAwBm/B,IAAkB,GAEvD,OAARnV,GAAe,CAEnB,IAAM+U,GAAe,CAAE,SAAU,QAAS,sBAU1C,IARgC,IAA3B/B,EAAMoC,kBAEVL,GAAaM,QAMD,QAFbrV,GAAMtgE,GAAYq1E,GAAcC,KAI/B,MAAKt1E,GAAYq1E,IAEV,IAAI/8E,MAAO,+DAIX,IAAIA,MAAO,sCAUkBnT,IAAjCm7E,GAAIrtB,2BAERqtB,GAAIrtB,yBAA2B,WAE9B,MAAO,CAAE,SAAY,EAAG,SAAY,EAAG,UAAa,KAMrD,MAAQ1uD,IAGT,MADA2T,QAAQ3T,MAAO,wBAA0BA,GAAMqxF,SACzCrxF,GAYP,SAASsxF,KAER3+C,EAAa,IAAIulB,GAAiB6jB,IAElC9hC,EAAe,IAAIsU,GAAmBwtB,GAAKppC,EAAYvY,GAEvDuY,EAAWoe,KAAM9W,GAEjB+hC,GAAQ,IAAI6F,GAAY9F,GAAKppC,EAAYsH,GAEzCoO,EAAQ,IAAI+tB,GAAY2F,GAAKppC,EAAYsH,GAEzC+1C,EAAqB,GAAM,KAE3BlwF,EAAO,IAAIk5D,GAAW+iB,IACtBv2B,EAAa,IAAI8nB,GACjB1vD,EAAW,IAAIk+D,GAAeC,GAAKppC,EAAY0V,EAAO7C,EAAYvL,EAAc+hC,GAAOl8E,GACvFsoD,EAAW,IAAIqJ,GAAes9B,GAC9BjkB,EAAa,IAAIrT,GAAiBs3B,GAClC5lD,EAAa,IAAI4Q,GAAiBgiC,GAAK9hC,GACvCqQ,GAAgB,IAAIL,GAAoB8xB,GAAKppC,EAAYxJ,EAAY8Q,GACrElhB,GAAa,IAAIq/B,GAAiB2jB,GAAK5yC,EAAYrpC,EAAMwqD,IACzDhC,GAAU,IAAI4S,GAAc6gB,GAAKhjD,GAAYoQ,EAAYrpC,GACzD6wF,GAAe,IAAI92B,GAAmBkiB,GAAK9hC,EAAcr8B,GACzD80B,GAAW,IAAIod,GAAetK,GAC9BirC,GAAe,IAAI5lB,GAAekkB,EAAO3mC,EAAU0iB,EAAYn4B,EAAYsH,EAAcqQ,GAAe5X,IACxG1Z,GAAY,IAAIuyD,GAAgB/lC,GAChCkrC,GAAc,IAAIriB,GAAkB7oB,GACpC6sB,GAAe,IAAID,GAAmBz/B,EAAYsH,GAClDngB,GAAa,IAAIquB,GAAiB4mC,EAAO3mC,EAAUC,EAAOC,GAAS2lC,GACnEnhB,GAAY,IAAI2F,GAAgBsc,EAAOzmC,GAASrO,GAEhD22C,GAAiB,IAAI5iC,GAAqB+tB,GAAKppC,EAAY7yC,EAAMm6C,GACjE42C,GAAwB,IAAI/3B,GAA4BijB,GAAKppC,EAAY7yC,EAAMm6C,GAE/En6C,EAAKs5D,SAAWq3B,GAAar3B,SAE7B21B,EAAM90C,aAAeA,EACrB80C,EAAMp8C,WAAaA,EACnBo8C,EAAMvpC,WAAaA,EACnBupC,EAAM2B,YAAcA,GACpB3B,EAAMjiB,UAAYA,GAClBiiB,EAAM1mC,MAAQA,EACd0mC,EAAMjvF,KAAOA,EAIdwxF,KAIA,IAAM77C,GAAK,IAAI0vC,GAAc4J,EAAOhT,IAuQpC,SAASkV,GAAehjF,GAEvBA,EAAMsjF,iBAEN59E,QAAQnD,IAAK,sCAEbw+E,GAAiB,EAIlB,SAASkC,KAERv9E,QAAQnD,IAAK,0CAEbw+E,GAAiB,EAEjB,IAAMwC,EAAgB1xF,EAAKu5D,UACrBoP,EAAmBqE,GAAUx4B,QAC7Bm9C,EAAsB3kB,GAAUmI,WAChCyc,EAAuB5kB,GAAUnjC,YACjCi8B,EAAgBkH,GAAUt/D,KAEhC8jF,KAEAxxF,EAAKu5D,UAAYm4B,EACjB1kB,GAAUx4B,QAAUm0B,EACpBqE,GAAUmI,WAAawc,EACvB3kB,GAAUnjC,YAAc+nD,EACxB5kB,GAAUt/D,KAAOo4D,EAIlB,SAAS+rB,GAAmB1jF,GAE3B,IAAMysB,EAAWzsB,EAAMC,OAEvBwsB,EAASk3B,oBAAqB,UAAW+/B,IAEzCC,GAAoBl3D,GAMrB,SAASk3D,GAAoBl3D,GAE5Bm3D,GAAkCn3D,GAElC8qB,EAAWntB,OAAQqC,GAKpB,SAASm3D,GAAkCn3D,GAE1C,IAAM0+B,EAAW5T,EAAWnL,IAAK3f,GAAW0+B,cAE1Bx4D,IAAbw4D,GAEJA,EAASwtB,SAAS,SAAWx7B,GAE5BqlC,GAAarjB,eAAgBhiB,MAUhC,SAAS0mC,GAAuBloE,EAAQwhC,GAEvCxhC,EAAOisB,QAAQ,SAAWjsB,GAEzBmlE,EAAMgD,sBAAuBnoE,EAAQwhC,MAhVvC7qD,KAAKk1C,GAAKA,GAIVl1C,KAAKkb,WAAa,WAEjB,OAAOsgE,IAIRx7E,KAAK0nF,qBAAuB,WAE3B,OAAOlM,GAAIkM,wBAIZ1nF,KAAKyxF,iBAAmB,WAEvB,IAAM5nC,EAAYzX,EAAW0H,IAAK,sBAC7B+P,GAAYA,EAAU6nC,eAI5B1xF,KAAK2xF,oBAAsB,WAE1B,IAAM9nC,EAAYzX,EAAW0H,IAAK,sBAC7B+P,GAAYA,EAAU+nC,kBAI5B5xF,KAAK6xF,cAAgB,WAEpB,OAAOzC,GAIRpvF,KAAK8xF,cAAgB,SAAWtyF,QAEhBa,IAAVb,IAEL4vF,EAAc5vF,EAEdQ,KAAK+xF,QAAS7C,EAAQC,GAAS,KAIhCnvF,KAAKorB,QAAU,SAAWzd,GAEzB,OAAOA,EAAOwF,IAAK+7E,EAAQC,IAI5BnvF,KAAK+xF,QAAU,SAAWh3E,EAAOC,EAAQg3E,GAEnC98C,GAAGqxC,aAEPnzE,QAAQC,KAAM,0EAKf67E,EAASn0E,EACTo0E,EAAUn0E,EAEVvB,EAAQsB,MAAQ3M,KAAKgC,MAAO2K,EAAQq0E,GACpC31E,EAAQuB,OAAS5M,KAAKgC,MAAO4K,EAASo0E,IAEjB,IAAhB4C,IAEJv4E,EAAQmrB,MAAM7pB,MAAQA,EAAQ,KAC9BtB,EAAQmrB,MAAM5pB,OAASA,EAAS,MAIjChb,KAAKiyF,YAAa,EAAG,EAAGl3E,EAAOC,KAIhChb,KAAKkyF,qBAAuB,SAAWvkF,GAEtC,OAAOA,EAAOwF,IAAK+7E,EAASE,EAAaD,EAAUC,GAAch/E,SAIlEpQ,KAAKmyF,qBAAuB,SAAWp3E,EAAOC,EAAQywE,GAErDyD,EAASn0E,EACTo0E,EAAUn0E,EAEVo0E,EAAc3D,EAEdhyE,EAAQsB,MAAQ3M,KAAKgC,MAAO2K,EAAQ0wE,GACpChyE,EAAQuB,OAAS5M,KAAKgC,MAAO4K,EAASywE,GAEtCzrF,KAAKiyF,YAAa,EAAG,EAAGl3E,EAAOC,IAIhChb,KAAKoyF,mBAAqB,SAAWzkF,GAEpC,OAAOA,EAAOsP,KAAM8xE,IAIrB/uF,KAAK01E,YAAc,SAAW/nE,GAE7B,OAAOA,EAAOsP,KAAMu1D,IAIrBxyE,KAAKiyF,YAAc,SAAWviF,EAAGC,EAAGoL,EAAOC,GAErCtL,EAAEoQ,UAEN0yD,EAAUr/D,IAAKzD,EAAEA,EAAGA,EAAEC,EAAGD,EAAE+O,EAAG/O,EAAEiE,GAIhC6+D,EAAUr/D,IAAKzD,EAAGC,EAAGoL,EAAOC,GAI7B8sC,EAAM1nC,SAAU2uE,EAAiB9xE,KAAMu1D,GAAY1+D,eAAgBs7E,GAAch/E,UAIlFpQ,KAAKqyF,WAAa,SAAW1kF,GAE5B,OAAOA,EAAOsP,KAAMsyE,IAIrBvvF,KAAKsyF,WAAa,SAAW5iF,EAAGC,EAAGoL,EAAOC,GAEpCtL,EAAEoQ,UAENyvE,EAASp8E,IAAKzD,EAAEA,EAAGA,EAAEC,EAAGD,EAAE+O,EAAG/O,EAAEiE,GAI/B47E,EAASp8E,IAAKzD,EAAGC,EAAGoL,EAAOC,GAI5B8sC,EAAM5nC,QAAS8uE,EAAgB/xE,KAAMsyE,GAAWz7E,eAAgBs7E,GAAch/E,UAI/EpQ,KAAKuyF,eAAiB,WAErB,OAAO/C,GAIRxvF,KAAKk1E,eAAiB,SAAWsd,GAEhC1qC,EAAMotB,eAAgBsa,EAAegD,IAItCxyF,KAAKyyF,cAAgB,SAAWC,GAE/BrD,EAAcqD,GAIf1yF,KAAK2yF,mBAAqB,SAAWD,GAEpCpD,EAAmBoD,GAMpB1yF,KAAKwoD,cAAgB,SAAW76C,GAE/B,OAAOA,EAAOsP,KAAMsc,GAAWivB,kBAIhCxoD,KAAKyoD,cAAgB,WAEpBlvB,GAAWkvB,cAActoD,MAAOo5B,GAAYr5B,YAI7CF,KAAK0oD,cAAgB,WAEpB,OAAOnvB,GAAWmvB,iBAInB1oD,KAAK2oD,cAAgB,WAEpBpvB,GAAWovB,cAAcxoD,MAAOo5B,GAAYr5B,YAI7CF,KAAKk2C,MAAQ,SAAWjW,EAAOhgB,EAAOg2B,GAErC,IAAI28C,EAAO,QAEIvyF,IAAV4/B,GAAuBA,KAAQ2yD,GAAQ,aAC7BvyF,IAAV4f,GAAuBA,KAAQ2yE,GAAQ,WAC3BvyF,IAAZ41C,GAAyBA,KAAU28C,GAAQ,MAEhDpX,GAAItlC,MAAO08C,IAIZ5yF,KAAKkoD,WAAa,WAEjBloD,KAAKk2C,OAAO,GAAM,GAAO,IAI1Bl2C,KAAK62E,WAAa,WAEjB72E,KAAKk2C,OAAO,GAAO,GAAM,IAI1Bl2C,KAAK03E,aAAe,WAEnB13E,KAAKk2C,OAAO,GAAO,GAAO,IAM3Bl2C,KAAKygB,QAAU,WAEdhH,EAAQ43C,oBAAqB,mBAAoBq/B,IAAe,GAChEj3E,EAAQ43C,oBAAqB,uBAAwBs/B,IAAkB,GAEvER,GAAY1vE,UACZqxD,GAAarxD,UACbwkC,EAAWxkC,UACXonC,EAASpnC,UACT8pD,EAAW9pD,UACXsnC,GAAQtnC,UACRspC,GAActpC,UAEdy0B,GAAGz0B,UAEHy0B,GAAGmc,oBAAqB,eAAgBwhC,IACxC39C,GAAGmc,oBAAqB,aAAcyhC,IAEjClD,IAEJA,EAA0BnvE,UAC1BmvE,EAA4B,MAI7Bv1D,GAAU+e,QAuFXp5C,KAAKwxF,sBAAwB,SAAWnoE,EAAQwhC,GAE/Cd,GAAce,iBAEd,IAAMlR,EAAUqL,EAAWnL,IAAKzwB,GAE3BA,EAAO0pE,eAAkBn5C,EAAQ7mB,WAAW6mB,EAAQ7mB,SAAWyoD,GAAInhC,gBACnEhxB,EAAO2pE,aAAgBp5C,EAAQhyB,SAASgyB,EAAQhyB,OAAS4zD,GAAInhC,gBAC7DhxB,EAAO4pE,SAAYr5C,EAAQ37B,KAAK27B,EAAQ37B,GAAKu9D,GAAInhC,gBACjDhxB,EAAO6pE,YAAet5C,EAAQ3Z,QAAQ2Z,EAAQ3Z,MAAQu7C,GAAInhC,gBAE/D,IAAMkS,EAAoB1B,EAAQ2B,gBAE7BnjC,EAAO0pE,eAEXvX,GAAIlhC,WAAY,MAAOV,EAAQ7mB,UAC/ByoD,GAAIjhC,WAAY,MAAOlxB,EAAO8pE,cAAe,OAE7CppC,GAAcgB,gBAAiBwB,EAAkBx5B,SAAS45B,UAC1D6uB,GAAInwB,oBAAqBkB,EAAkBx5B,SAAS45B,SAAU,EAAG,MAAM,EAAO,EAAG,IAI7EtjC,EAAO2pE,aAEXxX,GAAIlhC,WAAY,MAAOV,EAAQhyB,QAC/B4zD,GAAIjhC,WAAY,MAAOlxB,EAAO+pE,YAAa,OAE3CrpC,GAAcgB,gBAAiBwB,EAAkB3kC,OAAO+kC,UACxD6uB,GAAInwB,oBAAqBkB,EAAkB3kC,OAAO+kC,SAAU,EAAG,MAAM,EAAO,EAAG,IAI3EtjC,EAAO4pE,SAEXzX,GAAIlhC,WAAY,MAAOV,EAAQ37B,IAC/Bu9D,GAAIjhC,WAAY,MAAOlxB,EAAOgqE,QAAS,OAEvCtpC,GAAcgB,gBAAiBwB,EAAkBtuC,GAAG0uC,UACpD6uB,GAAInwB,oBAAqBkB,EAAkBtuC,GAAG0uC,SAAU,EAAG,MAAM,EAAO,EAAG,IAIvEtjC,EAAO6pE,YAEX1X,GAAIlhC,WAAY,MAAOV,EAAQ3Z,OAC/Bu7C,GAAIjhC,WAAY,MAAOlxB,EAAOiqE,WAAY,OAE1CvpC,GAAcgB,gBAAiBwB,EAAkBtsB,MAAM0sB,UACvD6uB,GAAInwB,oBAAqBkB,EAAkBtsB,MAAM0sB,SAAU,EAAG,MAAM,EAAO,EAAG,IAI/E5C,GAAcoB,0BAEdqwB,GAAI5tB,WAAY,EAAG,EAAGvkC,EAAOxI,OAE7BwI,EAAOxI,MAAQ,GAIhB7gB,KAAK0zE,mBAAqB,SAAWjtD,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,EAAQiiB,GAEhE,OAAV0J,IAAiBA,EAAQ+6C,GAE9B,IAAMjV,EAAgBzxD,EAAOqQ,QAAUrQ,EAAOvC,YAAYyM,cAAgB,EAEpEs3B,EAAU0oC,GAAY9sE,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,GAE/Dy+B,EAAM+yB,YAAa1gD,EAAU2gD,GAI7B,IAAIttE,EAAQqc,EAASrc,MACfulB,EAAWlJ,EAAS+e,WAAW7V,SAIrC,GAAe,OAAVvlB,GAEJ,QAAkBnN,IAAb0yB,GAA6C,IAAnBA,EAASlS,MAAc,YAEhD,GAAqB,IAAhBrT,EAAMqT,MAEjB,OAMD,IAWI7L,EAXAw+E,EAAc,GAEU,IAAvBr5D,EAASuJ,YAEbl2B,EAAQgrB,GAAW6/B,sBAAuBxuC,GAC1C2pE,EAAc,GAIfzpC,GAAc0B,MAAOpiC,EAAQ8Q,EAAU0wB,EAAShhC,EAAUrc,GAG1D,IAAIunC,EAAWs7C,GAEA,OAAV7iF,IAEJwH,EAAY4zB,EAAWkR,IAAKtsC,IAE5BunC,EAAWu7C,IACF9iD,SAAUx4B,IAMpB,IAAMy+E,EAAwB,OAAVjmF,EAAmBA,EAAMqT,MAAQkS,EAASlS,MAExD6yE,EAAa7pE,EAASof,UAAUC,MAAQsqD,EACxCG,EAAa9pE,EAASof,UAAUpoB,MAAQ2yE,EAExChjD,EAAuB,OAAVlF,EAAiBA,EAAMpC,MAAQsqD,EAAc,EAC1DliD,EAAuB,OAAVhG,EAAiBA,EAAMzqB,MAAQ2yE,EAAcj6E,IAE1Dq6E,EAAYxlF,KAAKiB,IAAKqkF,EAAYljD,GAClCqjD,EAAUzlF,KAAKgB,IAAKqkF,EAAWC,EAAaC,EAAYnjD,EAAac,GAAe,EAEpFwiD,EAAY1lF,KAAKiB,IAAK,EAAGwkF,EAAUD,EAAY,GAErD,GAAmB,IAAdE,EAAL,CAIA,GAAKzqE,EAAOqQ,QAEiB,IAAvBS,EAASuJ,WAEbokB,EAAMizB,aAAc5gD,EAASwJ,mBAAqBssD,KAClDl7C,EAAS4Y,QAAS,IAIlB5Y,EAAS4Y,QAAS,QAIb,GAAKtkC,EAAOsQ,OAAS,CAE3B,IAAIqhD,EAAY7gD,EAASmJ,eAENjjC,IAAd26E,IAA0BA,EAAY,GAE3ClzB,EAAMizB,aAAcC,EAAYiV,KAE3B5mE,EAAO0qE,eAEXh/C,EAAS4Y,QAAS,GAEPtkC,EAAO2qE,WAElBj/C,EAAS4Y,QAAS,GAIlB5Y,EAAS4Y,QAAS,QAIRtkC,EAAOuQ,SAElBmb,EAAS4Y,QAAS,GAEPtkC,EAAO4qE,UAElBl/C,EAAS4Y,QAAS,GAInB,GAAKtkC,EAAO8P,gBAEX4b,EAAS8Y,gBAAiB+lC,EAAWE,EAAWzqE,EAAOxI,YAEjD,GAAKgJ,EAASyiC,0BAA4B,CAEhD,IAAMyM,EAAgB3qD,KAAKgB,IAAKya,EAASkvC,cAAelvC,EAASijC,mBAEjE/X,EAAS8Y,gBAAiB+lC,EAAWE,EAAW/6B,QAIhDhkB,EAASO,OAAQs+C,EAAWE,KAQ9B9zF,KAAK+0D,QAAU,SAAW/f,EAAOvuB,IAEhCynE,EAAqBpc,GAAah4B,IAAK9E,IACpBwb,OAEnB49B,EAAiB9gF,KAAM4gF,GAEvBl5C,EAAM9c,iBAAiB,SAAW7O,GAE5BA,EAAOqO,SAAWrO,EAAO4L,OAAOta,KAAM8L,EAAOwO,UAEjDi5D,EAAmBxc,UAAWroD,GAEzBA,EAAOsN,YAEXu3D,EAAmBvc,WAAYtoD,OAQlC6kE,EAAmB1c,YAAagd,EAAMrmB,yBAEtCnzB,EAAM/c,UAAU,SAAW5O,GAE1B,IAAM8Q,EAAW9Q,EAAO8Q,SAExB,GAAKA,EAEJ,GAAKvc,MAAMC,QAASsc,GAEnB,IAAM,IAAIrsB,EAAI,EAAGA,EAAIqsB,EAASnsB,OAAQF,IAAO,CAI5ComF,GAFkB/5D,EAAUrsB,GAELknC,EAAO3rB,QAM/B6qE,GAAY/5D,EAAU6a,EAAO3rB,MAQhC+kE,EAAiBthB,MACjBohB,EAAqB,MAMtB,IAAI3D,GAA2B,KAE/B,SAASvxC,GAAkBC,GAErBsxC,IAA2BA,GAA0BtxC,GAI3D,SAAS45C,KAERx4D,GAAU+e,OAIX,SAAS05C,KAERz4D,GAAU6O,QAIX,IAAM7O,GAAY,IAAIue,GA6KtB,SAASu7C,GAAe9qE,EAAQ5C,EAAQwmD,EAAYqhB,GAEnD,IAAwB,IAAnBjlE,EAAOqN,QAAZ,CAIA,GAFgBrN,EAAO4L,OAAOta,KAAM8L,EAAOwO,QAI1C,GAAK5L,EAAOm5D,QAEXvV,EAAa5jD,EAAOyN,iBAEd,GAAKzN,EAAO+qE,OAES,IAAtB/qE,EAAOqrD,YAAsBrrD,EAAO1H,OAAQ8E,QAE3C,GAAK4C,EAAOqO,QAElBw2D,EAAmBxc,UAAWroD,GAEzBA,EAAOsN,YAEXu3D,EAAmBvc,WAAYtoD,QAI1B,GAAKA,EAAO4qE,UAElB,IAAO5qE,EAAOwN,eAAiBw7C,EAASgiB,iBAAkBhrE,GAAW,CAE/DilE,GAEJwB,EAASt4D,sBAAuBnO,EAAOvC,aACrCJ,aAAcmpE,GAIjB,IAAMhmE,EAAWk+B,GAAQpmC,OAAQ0H,GAC3B8Q,EAAW9Q,EAAO8Q,SAEnBA,EAASzD,SAEbu3D,EAAkB3gF,KAAM+b,EAAQQ,EAAUsQ,EAAU8yC,EAAY6iB,EAASrxE,EAAG,YAMxE,GAAK4K,EAAOirE,wBAEbhG,GAEJwB,EAASt4D,sBAAuBnO,EAAOvC,aACrCJ,aAAcmpE,GAIjB5B,EAAkB3gF,KAAM+b,EAAQ,KAAMA,EAAO8Q,SAAU8yC,EAAY6iB,EAASrxE,EAAG,WAEzE,IAAK4K,EAAOqQ,QAAUrQ,EAAOsQ,QAAUtQ,EAAOuQ,YAE/CvQ,EAAO0Q,eAIN1Q,EAAO6Q,SAASgf,QAAU35C,EAAK+1C,OAAO4D,QAE1C7vB,EAAO6Q,SAASvY,SAChB0H,EAAO6Q,SAASgf,MAAQ35C,EAAK+1C,OAAO4D,QAM/B7vB,EAAOwN,eAAiBw7C,EAASiC,iBAAkBjrD,IAAW,CAE/DilE,GAEJwB,EAASt4D,sBAAuBnO,EAAOvC,aACrCJ,aAAcmpE,GAIjB,IAAMhmE,EAAWk+B,GAAQpmC,OAAQ0H,GAC3B8Q,EAAW9Q,EAAO8Q,SAExB,GAAKvc,MAAMC,QAASsc,GAInB,IAFA,IAAM4O,EAASlf,EAASkf,OAEdj7B,EAAI,EAAGC,EAAIg7B,EAAO/6B,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMw9B,EAAQvC,EAAQj7B,GAChByhC,EAAgBpV,EAAUmR,EAAMnC,eAEjCoG,GAAiBA,EAAc7Y,SAEnCu3D,EAAkB3gF,KAAM+b,EAAQQ,EAAU0lB,EAAe09B,EAAY6iB,EAASrxE,EAAG6sB,QAMxEnR,EAASzD,SAEpBu3D,EAAkB3gF,KAAM+b,EAAQQ,EAAUsQ,EAAU8yC,EAAY6iB,EAASrxE,EAAG,MAYhF,IAFA,IAAMyL,EAAWb,EAAOa,SAEdpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5CqmF,GAAejqE,EAAUpc,GAAK2Y,EAAQwmD,EAAYqhB,IAMpD,SAASiG,GAAatG,EAAmBj5C,EAAOvuB,EAAQrG,GAEvD,IAAMo0E,EAAgBvG,EAAkB3gB,OAClCmnB,EAAsBxG,EAAkB1gB,aACxCmnB,EAAqBzG,EAAkBrwD,YAE7CswD,EAAmBzc,gBAAiBhrD,GAE/BguE,EAAoBzmF,OAAS,GAAI2mF,GAAwBH,EAAex/C,EAAOvuB,GAE/ErG,GAAW0nC,EAAM1nC,SAAU2uE,EAAiB9xE,KAAMmD,IAElDo0E,EAAcxmF,OAAS,GAAI4mF,GAAeJ,EAAex/C,EAAOvuB,GAChEguE,EAAoBzmF,OAAS,GAAI4mF,GAAeH,EAAqBz/C,EAAOvuB,GAC5EiuE,EAAmB1mF,OAAS,GAAI4mF,GAAeF,EAAoB1/C,EAAOvuB,GAIhF,SAASkuE,GAAwBH,EAAex/C,EAAOvuB,GAEtD,GAAmC,OAA9BmpE,EAAqC,CAEzC,IAAMiF,GAAgC,IAAfpH,IAAiD,IAA1B/zC,EAAaC,SAG3Di2C,EAA4B,IAFHiF,EAAiB7zE,GAA+BjB,IAEvB,KAAM,KAAM,CAC7DtD,iBAAiB,EACjBxP,KAAyC,OAAnCwuE,GAAMkD,QAAS34E,IAA2BA,GAAgBP,GAChEsW,UAAWxW,GACXuW,UAAW/W,GACX6W,MAAO/W,GACPgX,MAAOhX,KAKT,IAAMswC,EAAsBq5C,EAAMp5C,kBAClCo5C,EAAMn5C,gBAAiBu6C,GACvBpB,EAAMt4C,QAIN,IAAM4+C,EAAqBtG,EAAMhlC,YACjCglC,EAAMhlC,YAAczlD,GAEpB6wF,GAAeJ,EAAex/C,EAAOvuB,GAErC+nE,EAAMhlC,YAAcsrC,EAEpBz3E,EAAS+jE,8BAA+BwO,GACxCvyE,EAAS8jE,yBAA0ByO,GAEnCpB,EAAMn5C,gBAAiBF,GAIxB,SAASy/C,GAAehsC,EAAY5T,EAAOvuB,GAI1C,IAFA,IAAMupE,GAAqC,IAAlBh7C,EAAM1b,QAAmB0b,EAAMg7C,iBAAmB,KAEjEliF,EAAI,EAAGC,EAAI66C,EAAW56C,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAM4/D,EAAa9kB,EAAY96C,GAEzBub,EAASqkD,EAAWrkD,OACpBQ,EAAW6jD,EAAW7jD,SACtBsQ,EAAgC,OAArB61D,EAA4BtiB,EAAWvzC,SAAW61D,EAC7D1kD,EAAQoiC,EAAWpiC,MAEpBjiB,EAAO4L,OAAOta,KAAM8L,EAAOwO,SAE/Bm/C,GAAc/qD,EAAQ2rB,EAAOvuB,EAAQoD,EAAUsQ,EAAUmR,IAQ5D,SAAS8oC,GAAc/qD,EAAQ2rB,EAAOvuB,EAAQoD,EAAUsQ,EAAUmR,GASjE,GAPAjiB,EAAOigC,eAAgBklC,EAAOx5C,EAAOvuB,EAAQoD,EAAUsQ,EAAUmR,GAEjEjiB,EAAOiN,gBAAgB9f,iBAAkBiQ,EAAOE,mBAAoB0C,EAAOvC,aAC3EuC,EAAOkN,aAAa8S,gBAAiBhgB,EAAOiN,iBAE5C6D,EAASmvB,eAAgBklC,EAAOx5C,EAAOvuB,EAAQoD,EAAUR,EAAQiiB,GAE5DjiB,EAAOirE,wBAA0B,CAErC,IAAMzpC,EAAU0oC,GAAY9sE,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,GAE/Dy+B,EAAM+yB,YAAa1gD,GAEnB4vB,GAAcwB,QAEdgmC,GAAuBloE,EAAQwhC,QAID,IAAzB1wB,EAASyD,aAAwBzD,EAASsD,OAAS97B,GAEvDw4B,EAASsD,KAAO/7B,EAChBy4B,EAASiP,aAAc,EACvBolD,EAAM9a,mBAAoBjtD,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,EAAQiiB,GAErEnR,EAASsD,KAAOh8B,EAChB04B,EAASiP,aAAc,EACvBolD,EAAM9a,mBAAoBjtD,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,EAAQiiB,GAErEnR,EAASsD,KAAO97B,GAIhB6sF,EAAM9a,mBAAoBjtD,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,EAAQiiB,GAMvEjiB,EAAO0rE,cAAevG,EAAOx5C,EAAOvuB,EAAQoD,EAAUsQ,EAAUmR,GAIjE,SAAS4oD,GAAY/5D,EAAU6a,EAAO3rB,IAEd,IAAlB2rB,EAAM1b,UAAmB0b,EAAQ+6C,GAEtC,IAAMj/B,EAAqB7L,EAAWnL,IAAK3f,GAErC+X,EAASg8C,EAAmBpmC,MAAM5V,OAClCq/B,EAAe2c,EAAmBpmC,MAAMypB,aAExCyjB,EAAqB9iD,EAAO4V,MAAMjrC,QAElCgd,EAAaq2D,GAAazkB,cAAetxC,EAAU+X,EAAO4V,MAAOypB,EAAcv8B,EAAO3rB,GACtF4rE,EAAkB/E,GAAazjB,mBAAoB5yC,GAErDg/B,EAAW/H,EAAmB+H,SAIlC/H,EAAmBr3B,YAAcU,EAASwxC,uBAAyB32B,EAAMvb,YAAc,KACvFq3B,EAAmBvzB,IAAMyX,EAAMzX,IAC/BuzB,EAAmBruB,QAAWtI,EAASwxC,uBAAyBpB,EAAa1iB,GAAW/N,IAAK3f,EAASsI,QAAUquB,EAAmBr3B,kBAEjHp5B,IAAbw4D,IAIJ1+B,EAASq3B,iBAAkB,UAAW4/B,IAEtCv4B,EAAW,IAAI+sB,IACf90B,EAAmB+H,SAAWA,GAI/B,IAAIhO,EAAUgO,EAAS/e,IAAKm7C,GAE5B,QAAiB50F,IAAZwqD,GAIJ,GAAKiG,EAAmBgnB,iBAAmBjtB,GAAWiG,EAAmBkkC,qBAAuBA,EAI/F,OAFAE,GAAgC/6D,EAAUN,GAEnCgxB,OAMRhxB,EAAW6X,SAAWw+C,GAAa71B,YAAalgC,GAEhDA,EAASg7D,QAASt7D,EAAY20D,GAE9Br0D,EAASyF,gBAAiB/F,EAAY20D,GAEtC3jC,EAAUqlC,GAAaxjB,eAAgB7yC,EAAYo7D,GACnDp8B,EAAS1lD,IAAK8hF,EAAiBpqC,GAE/BiG,EAAmBpf,SAAW7X,EAAW6X,SAI1C,IAAMA,EAAWof,EAAmBpf,UAE3BvX,EAAS0Y,kBAAsB1Y,EAAS+3B,uBAA+C,IAAtB/3B,EAASgY,WAElFT,EAAS5S,eAAiBqT,GAAS0d,SAIpCqlC,GAAgC/6D,EAAUN,GAI1Ci3B,EAAmBskC,YAAcC,GAAqBl7D,GACtD22B,EAAmBkkC,mBAAqBA,EAEnClkC,EAAmBskC,cAIvB1jD,EAASoT,kBAAkBtlD,MAAQ0yC,EAAO4V,MAAMwnB,QAChD59B,EAASqT,WAAWvlD,MAAQ0yC,EAAO4V,MAAMynB,MACzC79B,EAASsT,kBAAkBxlD,MAAQ0yC,EAAO4V,MAAMqkB,YAChDz6B,EAASwT,wBAAwB1lD,MAAQ0yC,EAAO4V,MAAM0nB,kBACtD99B,EAAS+T,WAAWjmD,MAAQ0yC,EAAO4V,MAAMskB,KACzC16B,EAASmU,iBAAiBrmD,MAAQ0yC,EAAO4V,MAAM2nB,WAC/C/9B,EAAS+U,eAAejnD,MAAQ0yC,EAAO4V,MAAMukB,SAC7C36B,EAASgV,MAAMlnD,MAAQ0yC,EAAO4V,MAAM4nB,aACpCh+B,EAASiV,MAAMnnD,MAAQ0yC,EAAO4V,MAAM6nB,aACpCj+B,EAASsU,YAAYxmD,MAAQ0yC,EAAO4V,MAAMr+B,MAC1CioB,EAASuU,kBAAkBzmD,MAAQ0yC,EAAO4V,MAAM8nB,YAChDl+B,EAAS4U,iBAAiB9mD,MAAQ0yC,EAAO4V,MAAMwkB,KAE/C56B,EAAS6T,qBAAqB/lD,MAAQ0yC,EAAO4V,MAAMvC,qBACnD7T,EAAS8T,wBAAwBhmD,MAAQ0yC,EAAO4V,MAAMtC,wBACtD9T,EAASoU,cAActmD,MAAQ0yC,EAAO4V,MAAMhC,cAC5CpU,EAASqU,iBAAiBvmD,MAAQ0yC,EAAO4V,MAAM/B,iBAC/CrU,EAAS0U,eAAe5mD,MAAQ0yC,EAAO4V,MAAM1B,eAC7C1U,EAAS2U,kBAAkB7mD,MAAQ0yC,EAAO4V,MAAMzB,mBAKjD,IAAMivC,EAAezqC,EAAQwP,cACvBk7B,EAAe7zB,GAAcU,aAAckzB,EAAa30B,IAAKjvB,GAKnE,OAHAof,EAAmBgnB,eAAiBjtB,EACpCiG,EAAmBykC,aAAeA,EAE3B1qC,EAIR,SAASqqC,GAAgC/6D,EAAUN,GAElD,IAAMi3B,EAAqB7L,EAAWnL,IAAK3f,GAE3C22B,EAAmBsE,eAAiBv7B,EAAWu7B,eAC/CtE,EAAmBoW,WAAartC,EAAWqtC,WAC3CpW,EAAmB+W,SAAWhuC,EAAWguC,SACzC/W,EAAmB7hB,aAAepV,EAAWoV,aAC7C6hB,EAAmBgJ,aAAejgC,EAAWigC,aAC7ChJ,EAAmBiX,kBAAoBluC,EAAWkuC,kBAClDjX,EAAmBoT,kBAAoBrqC,EAAWqqC,kBAClDpT,EAAmBd,gBAAkBn2B,EAAWsqC,oBAChDrT,EAAmB4W,aAAe7tC,EAAW6tC,aAC7C5W,EAAmB2W,eAAiB5tC,EAAW4tC,eAIhD,SAAS8rB,GAAY9sE,EAAQuuB,EAAOnrB,EAAUsQ,EAAU9Q,IAEhC,IAAlB2rB,EAAM1b,UAAmB0b,EAAQ+6C,GAEtC1yE,EAASwjE,oBAET,IAAMtjD,EAAMyX,EAAMzX,IACZ9D,EAAcU,EAASwxC,uBAAyB32B,EAAMvb,YAAc,KACpEvd,EAAsC,OAAzB0yE,EAAkCJ,EAAMp5B,eAAiBw5B,EAAqBvuE,QAAQnE,SACnGumB,GAAWtI,EAASwxC,uBAAyBpB,EAAa1iB,GAAW/N,IAAK3f,EAASsI,QAAUhJ,GAC7FiuC,GAAyC,IAA1BvtC,EAASuD,gBAA4B7T,KAAeA,EAAS+e,WAAW3I,OAAgD,IAAvCpW,EAAS+e,WAAW3I,MAAM2G,SAC1H6gC,IAAoBttC,EAAS0H,aAAgBhY,KAAeA,EAAS+e,WAAWU,QAChF2F,IAAkBplB,KAAeA,EAASgf,gBAAgB9V,SAC1D+mC,IAAkBjwC,KAAeA,EAASgf,gBAAgBjhB,OAC1DmgD,EAAyBl+C,GAAeA,EAASgf,gBAAgB9V,SAAalJ,EAASgf,gBAAgB9V,SAAS/kB,OAAS,EAEzH8iD,EAAqB7L,EAAWnL,IAAK3f,GACrC+X,EAASg8C,EAAmBpmC,MAAM5V,OAExC,IAA0B,IAArBw9C,KAE2B,IAA1BC,GAAkClpE,IAAWqoE,GAAiB,CAElE,IAAMj+B,EACLpqC,IAAWqoE,GACX30D,EAASpC,KAAO82D,EAKjB18C,GAASye,SAAUz2B,EAAU1T,EAAQoqC,GAQvC,IAAI2kC,GAAqB,EAEpBr7D,EAAStd,UAAYi0C,EAAmBotB,UAEvCptB,EAAmBskC,aAAiBtkC,EAAmBkkC,qBAAuB9iD,EAAO4V,MAAMjrC,SAIpFi0C,EAAmBsE,iBAAmBl5C,GAItCmN,EAAO8P,kBAAqD,IAAlC23B,EAAmBoW,WANxDsuB,GAAqB,EAURnsE,EAAO8P,kBAAqD,IAAlC23B,EAAmBoW,WAI/C79C,EAAO0Q,gBAAiD,IAAhC+2B,EAAmB+W,SAEtD2tB,GAAqB,EAERnsE,EAAO0Q,gBAAiD,IAAhC+2B,EAAmB+W,SAI7C/W,EAAmBruB,SAAWA,GAI9BtI,EAASoD,KAAOuzB,EAAmBvzB,MAAQA,EAFtDi4D,GAAqB,OAM+Bn1F,IAAzCywD,EAAmBoT,mBAC5BpT,EAAmBoT,oBAAsB/xB,GAAS4d,WACpDe,EAAmBd,kBAAoB7d,GAAS6d,iBAIrCc,EAAmB4W,eAAiBA,GAIpC5W,EAAmB2W,iBAAmBA,GAItC3W,EAAmB7hB,eAAiBA,GAIpC6hB,EAAmBgJ,eAAiBA,IAIV,IAA1BpgB,EAAaC,UAAqBmX,EAAmBiX,oBAAsBA,KAdtFytB,GAAqB,GAJrBA,GAAqB,EAdrBA,GAAqB,EARrBA,GAAqB,GAgDtBA,GAAqB,EACrB1kC,EAAmBotB,UAAY/jD,EAAStd,SAMzC,IAAIguC,EAAUiG,EAAmBgnB,gBAEL,IAAvB0d,IAEJ3qC,EAAUqpC,GAAY/5D,EAAU6a,EAAO3rB,IAIxC,IAAIosE,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,EAEdC,EAAa/qC,EAAQwP,cAC1Bw7B,EAAa/kC,EAAmBpf,SAkBjC,GAhBKoW,EAAM8yB,WAAY/vB,EAAQA,WAE9B4qC,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,GAIZx7D,EAASpC,KAAO82D,IAEpBA,EAAqB10D,EAASpC,GAE9B29D,GAAkB,GAIdD,GAAkB3G,IAAmBroE,EAAS,CA2BlD,GAzBAmvE,EAAWt7B,SAAUkhB,GAAK,mBAAoB/0D,EAAOG,kBAEhD8yB,EAAa8U,wBAEjBonC,EAAWt7B,SAAUkhB,GAAK,gBACzB,GAAQptE,KAAK6B,IAAKwW,EAAOyN,IAAM,GAAQ9lB,KAAK8B,MAIzC4+E,IAAmBroE,IAEvBqoE,EAAiBroE,EAMjBivE,GAAkB,EAClBC,GAAgB,GAOZx7D,EAAS0Y,kBACb1Y,EAAS4xD,qBACT5xD,EAAS0xD,oBACT1xD,EAASwxC,wBACTxxC,EAASsI,OAAS,CAElB,IAAMqzD,EAAUF,EAAWx0D,IAAI20D,oBAEd11F,IAAZy1F,GAEJA,EAAQx7B,SAAUkhB,GACjBsU,EAASt4D,sBAAuB/Q,EAAOK,eAMrCqT,EAAS4xD,qBACb5xD,EAAS0xD,oBACT1xD,EAASwxD,uBACTxxD,EAASqM,qBACTrM,EAASwxC,wBACTxxC,EAAS0Y,mBAET+iD,EAAWt7B,SAAUkhB,GAAK,kBAAkD,IAAhC/0D,EAAOurC,uBAI/C73B,EAAS4xD,qBACb5xD,EAAS0xD,oBACT1xD,EAASwxD,uBACTxxD,EAASqM,qBACTrM,EAASwxC,wBACTxxC,EAAS0Y,kBACT1Y,EAAS8yD,kBACT5jE,EAAO0Q,gBAEP67D,EAAWt7B,SAAUkhB,GAAK,aAAc/0D,EAAOE,oBAUjD,GAAK0C,EAAO0Q,cAAgB,CAE3B67D,EAAW1zB,YAAasZ,GAAKnyD,EAAQ,cACrCusE,EAAW1zB,YAAasZ,GAAKnyD,EAAQ,qBAErC,IAAM6Q,EAAW7Q,EAAO6Q,SAEnBA,IAECwf,EAAa2V,qBAEa,OAAzBn1B,EAAS87D,aAAuB97D,EAAS+7D,qBAE9CL,EAAWt7B,SAAUkhB,GAAK,cAAethD,EAAS87D,YAAa34E,GAC/Du4E,EAAWt7B,SAAUkhB,GAAK,kBAAmBthD,EAASg8D,kBAItDN,EAAW1zB,YAAasZ,GAAKthD,EAAU,iBA0E1C,OAlEQrQ,QAAoDxpB,IAAtCwpB,EAASgf,gBAAgB9V,eAA8D1yB,IAApCwpB,EAASgf,gBAAgBjhB,QAEjGwoE,GAAazuE,OAAQ0H,EAAQQ,EAAUsQ,EAAU0wB,IAK7C6qC,GAAmB5kC,EAAmBl6B,gBAAkBvN,EAAOuN,iBAEnEk6B,EAAmBl6B,cAAgBvN,EAAOuN,cAC1Cg/D,EAAWt7B,SAAUkhB,GAAK,gBAAiBnyD,EAAOuN,gBAI9C8+D,IAEJE,EAAWt7B,SAAUkhB,GAAK,sBAAuBgT,EAAMD,qBAElDz9B,EAAmBskC,aAWvBe,GAA+BN,EAAYF,GAMvCp4D,GAAOpD,EAASoD,KAEpB9E,GAAU4yD,mBAAoBwK,EAAYt4D,GAI3C9E,GAAU+yD,wBAAyBqK,EAAY17D,EAAUi1D,EAAaD,EAASS,GAE/EluB,GAAcS,OAAQqZ,GAAK1qB,EAAmBykC,aAAcM,EAAYx4E,IAIpE8c,EAAS0Y,mBAAoD,IAAhC1Y,EAASwY,qBAE1C+uB,GAAcS,OAAQqZ,GAAK1qB,EAAmBykC,aAAcM,EAAYx4E,GACxE8c,EAASwY,oBAAqB,GAI1BxY,EAAS4yD,kBAEb6I,EAAWt7B,SAAUkhB,GAAK,SAAUnyD,EAAOlU,QAM5CygF,EAAWt7B,SAAUkhB,GAAK,kBAAmBnyD,EAAOiN,iBACpDs/D,EAAWt7B,SAAUkhB,GAAK,eAAgBnyD,EAAOkN,cACjDq/D,EAAWt7B,SAAUkhB,GAAK,cAAenyD,EAAOvC,aAEzC+jC,EAMR,SAASsrC,GAA+BzkD,EAAUlyC,GAEjDkyC,EAASoT,kBAAkB1b,YAAc5pC,EACzCkyC,EAASqT,WAAW3b,YAAc5pC,EAElCkyC,EAASsT,kBAAkB5b,YAAc5pC,EACzCkyC,EAASwT,wBAAwB9b,YAAc5pC,EAC/CkyC,EAASsU,YAAY5c,YAAc5pC,EACnCkyC,EAASuU,kBAAkB7c,YAAc5pC,EACzCkyC,EAAS+T,WAAWrc,YAAc5pC,EAClCkyC,EAASmU,iBAAiBzc,YAAc5pC,EACxCkyC,EAAS+U,eAAerd,YAAc5pC,EACtCkyC,EAAS4U,iBAAiBld,YAAc5pC,EAIzC,SAAS61F,GAAqBl7D,GAE7B,OAAOA,EAASwxD,uBAAyBxxD,EAAS0xD,oBAAsB1xD,EAAS4xD,qBAChF5xD,EAASwxC,wBAA0BxxC,EAAS8yD,kBAC1C9yD,EAAS0Y,mBAAwC,IAApB1Y,EAAS+X,OAt3B1C7X,GAAUif,iBAAkBN,IAEL,qBAAXo9C,QAAyB/7D,GAAUkf,WAAY68C,QAE3Dp2F,KAAKs5C,iBAAmB,SAAWj1B,GAElCkmE,GAA2BlmE,EAC3B6wB,GAAGoE,iBAAkBj1B,GAEN,OAAbA,EAAsBgW,GAAU+e,OAAS/e,GAAU6O,SAItDgM,GAAGsc,iBAAkB,eAAgBqhC,IACrC39C,GAAGsc,iBAAkB,aAAcshC,IAInC9yF,KAAKs1C,OAAS,SAAWN,EAAOvuB,GAE/B,QAAgBpmB,IAAXomB,IAA4C,IAApBA,EAAOgR,UAOpC,IAAwB,IAAnBg3D,EAAL,EAI0B,IAArBz5C,EAAM0/B,YAAsB1/B,EAAM3c,oBAIhB,OAAlB5R,EAAOuP,QAAkBvP,EAAO4R,qBAEjB,IAAf6c,GAAGnB,UAAwC,IAApBmB,GAAGqxC,gBAED,IAAxBrxC,GAAG0xC,kBAA4B1xC,GAAG2zC,aAAcpiE,GAErDA,EAASyuB,GAAGg1C,cAKU,IAAlBl1C,EAAM1b,SAAmB0b,EAAMsU,eAAgBklC,EAAOx5C,EAAOvuB,EAAQmoE,IAE1EV,EAAqBpc,GAAah4B,IAAK9E,EAAOo5C,EAAiBpgF,SAC5CwiD,OAEnB49B,EAAiB9gF,KAAM4gF,GAEvB2B,EAAkBr5E,iBAAkBiQ,EAAOG,iBAAkBH,EAAOE,oBACpE0rD,EAASgkB,wBAAyBxG,GAElCF,EAAwB3vF,KAAK0vD,qBAC7BggC,EAAmBv9C,GAASqe,KAAMxwD,KAAK8+B,eAAgB6wD,EAAuBlpE,IAE9EwnE,EAAoBkC,GAAYr2C,IAAK9E,EAAOm5C,EAAgBngF,SAC1CwiD,OAElB29B,EAAgB7gF,KAAM2gF,GAEtBkG,GAAen/C,EAAOvuB,EAAQ,EAAG+nE,EAAMF,aAEvCL,EAAkBtgB,UAES,IAAtB6gB,EAAMF,aAEVL,EAAkBzzB,KAAM60B,EAAaC,IAMZ,IAArBI,GAA4Bv9C,GAASue,eAE1C,IAAM6gB,EAAe2c,EAAmBpmC,MAAMypB,aAkB9C,GAhBAhF,GAAUj3B,OAAQi8B,EAAcv8B,EAAOvuB,IAEb,IAArBipE,GAA4Bv9C,GAASwe,cAIb,IAAxB3wD,KAAKT,KAAKu5D,WAAqB94D,KAAKT,KAAKgsD,QAI9ChyB,GAAW+b,OAAQ24C,EAAmBj5C,GAItCk5C,EAAmB1c,YAAagd,EAAMrmB,yBAEjC1hD,EAAO67D,cAIX,IAFA,IAAMD,EAAU57D,EAAO47D,QAEbv0E,EAAI,EAAGC,EAAIs0E,EAAQr0E,OAAQF,EAAIC,EAAGD,IAAO,CAElD,IAAMwoF,EAAUjU,EAASv0E,GAEzBymF,GAAatG,EAAmBj5C,EAAOshD,EAASA,EAAQl2E,eAMzDm0E,GAAatG,EAAmBj5C,EAAOvuB,GAMV,OAAzBmoE,IAIJvxE,EAAS+jE,8BAA+BwN,GAIxCvxE,EAAS8jE,yBAA0ByN,KAMb,IAAlB55C,EAAM1b,SAAmB0b,EAAM+/C,cAAevG,EAAOx5C,EAAOvuB,GAIjEqhC,EAAMlO,QAAQ35B,MAAMg1D,SAAS,GAC7BntB,EAAMlO,QAAQ35B,MAAMi2D,SAAS,GAC7BpuB,EAAMlO,QAAQ3Z,MAAMi2C,SAAS,GAE7BpuB,EAAMuyB,kBAAkB,GAIxBtwB,GAAcyB,oBACdqjC,GAAuB,EACvBC,EAAiB,KAEjBV,EAAiBthB,MAIhBohB,EAFIE,EAAiBpgF,OAAS,EAETogF,EAAkBA,EAAiBpgF,OAAS,GAI5C,KAItBmgF,EAAgBrhB,MAIfmhB,EAFIE,EAAgBngF,OAAS,EAETmgF,EAAiBA,EAAgBngF,OAAS,GAI1C,WAhJpBoF,QAAQ3T,MAAO,2EAo2BjBO,KAAK40E,kBAAoB,WAExB,OAAO8Z,GAIR1uF,KAAK80E,qBAAuB,WAE3B,OAAO6Z,GAIR3uF,KAAKo1C,gBAAkB,WAEtB,OAAOw5C,GAIR5uF,KAAKq1C,gBAAkB,SAAWd,GAA0D,IAA5CogC,EAA4C,uDAA3B,EAAGE,EAAwB,uDAAJ,EAEvF+Z,EAAuBr6C,EACvBm6C,EAAyB/Z,EACzBga,EAA4B9Z,EAEvBtgC,QAAsEl0C,IAAtD4kD,EAAWnL,IAAKvF,GAAe+oC,oBAEnDjgE,EAASyjE,kBAAmBvsC,GAI7B,IAAImmC,EAAc,KACd4F,GAAS,EACTU,GAAmB,EAEvB,GAAKzsC,EAAe,CAEnB,IAAMl0B,EAAUk0B,EAAal0B,SAExBA,EAAQ86C,iBAAmB96C,EAAQ46C,wBAEvC+lB,GAAmB,GAIpB,IAAM1D,EAAqBr4B,EAAWnL,IAAKvF,GAAe+oC,mBAErD/oC,EAAaC,yBAEjBkmC,EAAc4C,EAAoB3I,GAClC2L,GAAS,GAIT5F,EAFWnmC,EAAarzB,+BAEV+jC,EAAWnL,IAAKvF,GAAekpC,+BAI/BH,EAIfyR,EAAiB9xE,KAAMs3B,EAAan0B,UACpC4uE,EAAgB/xE,KAAMs3B,EAAar0B,SACnC+uE,EAAsB16C,EAAap0B,iBAInC4uE,EAAiB9xE,KAAMu1D,GAAY1+D,eAAgBs7E,GAAch/E,QACjE4+E,EAAgB/xE,KAAMsyE,GAAWz7E,eAAgBs7E,GAAch/E,QAC/D6+E,EAAsBO,EAIvB,IAAM+G,EAAmBzuC,EAAM2yB,gBAAiB,MAAOC,GAEvD,GAAK6b,GAAoB78C,EAAanH,YAAc,CAEnD,IAAInJ,GAAc,EAElB,GAAKmL,EAEJ,GAAKA,EAAaxzB,6BAA+B,CAEhD,IAAM1D,EAAWk3B,EAAal0B,QAE9B,GAAKovE,EAAoBzhF,SAAWqP,EAASrP,QAAuC,QAA7ByhF,EAAqB,GAAgB,CAE3F,IAAM,IAAI3hF,EAAI,EAAGgT,EAAKzD,EAASrP,OAAQF,EAAIgT,EAAIhT,IAE9C2hF,EAAqB3hF,GAAM,MAAQA,EAIpC2hF,EAAoBzhF,OAASqP,EAASrP,OAEtCo7B,GAAc,QAMqB,IAA/BqmD,EAAoBzhF,QAA6C,QAA7ByhF,EAAqB,KAE7DA,EAAqB,GAAM,MAC3BA,EAAoBzhF,OAAS,EAE7Bo7B,GAAc,QAQoB,IAA/BqmD,EAAoBzhF,QAA6C,OAA7ByhF,EAAqB,KAE7DA,EAAqB,GAAM,KAC3BA,EAAoBzhF,OAAS,EAE7Bo7B,GAAc,GAMXA,IAECsQ,EAAaC,SAEjB6hC,GAAIjpC,YAAak9C,GAIjBr9C,EAAW0H,IAAK,sBAAuB08C,iBAAkB/G,IAY5D,GAJA3nC,EAAM1nC,SAAU2uE,GAChBjnC,EAAM5nC,QAAS8uE,GACflnC,EAAMotB,eAAgB+Z,GAEjB3O,EAAS,CAEb,IAAMhE,EAAoBr3B,EAAWnL,IAAKvF,EAAal0B,SACvDm7D,GAAIoE,qBAAsB,MAAO,MAAO,MAAQjL,EAAgB2H,EAAkBU,eAAgBnI,QAE5F,GAAKmM,EAAmB,CAE9B,IAAM1E,EAAoBr3B,EAAWnL,IAAKvF,EAAal0B,SACjDo2E,EAAQ9hB,GAAkB,EAChC6G,GAAIkb,wBAAyB,MAAO,MAAOpa,EAAkBU,eAAgBnI,GAAqB,EAAG4hB,GAItG5H,GAAuB,GAIxB7uF,KAAK22F,uBAAyB,SAAWpiD,EAAc7kC,EAAGC,EAAGoL,EAAOC,EAAQX,EAAQu8E,GAEnF,GAASriD,GAAgBA,EAAa5zB,oBAAtC,CAOA,IAAI+5D,EAAcz1B,EAAWnL,IAAKvF,GAAe+oC,mBAQjD,GANK/oC,EAAaC,8BAAmDn0C,IAAxBu2F,IAE5Clc,EAAcA,EAAakc,IAIvBlc,EAAc,CAElB5yB,EAAM2yB,gBAAiB,MAAOC,GAE9B,IAEC,IAAMr6D,EAAUk0B,EAAal0B,QACvBw2E,EAAgBx2E,EAAQrE,OACxBmjE,EAAc9+D,EAAQpT,KAE5B,GAAK4pF,IAAkBtwF,IAAck1E,GAAMkD,QAASkY,KAAoBrb,GAAI5xB,aAAc,OAGzF,YADAx2C,QAAQ3T,MAAO,6GAKhB,IAAMq3F,EAA4B3X,IAAgBn5E,KAAqBosC,EAAWmc,IAAK,gCAAqC7U,EAAaC,UAAYvH,EAAWmc,IAAK,2BAErK,GAAK4wB,IAAgB15E,IAAoBg2E,GAAMkD,QAASQ,KAAkB3D,GAAI5xB,aAAc,SACvFu1B,IAAgBp5E,MAAe2zC,EAAaC,UAAYvH,EAAWmc,IAAK,sBAAyBnc,EAAWmc,IAAK,gCACnHuoC,EAGF,YADA1jF,QAAQ3T,MAAO,uHAK6B,QAAxC+7E,GAAIub,uBAAwB,OAIzBrnF,GAAK,GAAKA,GAAO6kC,EAAax5B,MAAQA,GAAepL,GAAK,GAAKA,GAAO4kC,EAAav5B,OAASA,GAElGwgE,GAAIwb,WAAYtnF,EAAGC,EAAGoL,EAAOC,EAAQygE,GAAMkD,QAASkY,GAAiBpb,GAAMkD,QAASQ,GAAe9kE,GAMpGjH,QAAQ3T,MAAO,8GApCjB,QA4CC,IAAMi7E,EAAyC,OAAzBkU,EAAkC3pC,EAAWnL,IAAK80C,GAAuBtR,mBAAqB,KACpHx1B,EAAM2yB,gBAAiB,MAAOC,UA9D/BtnE,QAAQ3T,MAAO,6FAsEjBO,KAAKi3F,yBAA2B,SAAWlkE,EAAU1S,GAAqB,IAAZ62E,EAAY,uDAAJ,EAE/DC,EAAa/oF,KAAK2B,IAAK,GAAKmnF,GAC5Bn8E,EAAQ3M,KAAKgC,MAAOiQ,EAAQ3F,MAAMK,MAAQo8E,GAC1Cn8E,EAAS5M,KAAKgC,MAAOiQ,EAAQ3F,MAAMM,OAASm8E,GAE9Cxa,EAAWlB,GAAMkD,QAASt+D,EAAQrE,QAEjC09B,EAAaC,WAKC,OAAbgjC,IAAoBA,EAAW,OAClB,OAAbA,IAAoBA,EAAW,QAIrCt/D,EAAS0gE,aAAc19D,EAAS,GAEhCm7D,GAAI4b,eAAgB,KAAMF,EAAOva,EAAU5pD,EAASrjB,EAAGqjB,EAASpjB,EAAGoL,EAAOC,EAAQ,GAElF8sC,EAAMszB,iBAIPp7E,KAAKq3F,qBAAuB,SAAWtkE,EAAUukE,EAAYC,GAAwB,IAAZL,EAAY,uDAAJ,EAE1En8E,EAAQu8E,EAAW58E,MAAMK,MACzBC,EAASs8E,EAAW58E,MAAMM,OAC1B2hE,EAAWlB,GAAMkD,QAAS4Y,EAAWv7E,QACrC4gE,EAASnB,GAAMkD,QAAS4Y,EAAWtqF,MAEzCoQ,EAAS0gE,aAAcwZ,EAAY,GAInC/b,GAAI+C,YAAa,MAAOgZ,EAAW56E,OACnC6+D,GAAI+C,YAAa,MAAOgZ,EAAW76E,kBACnC8+D,GAAI+C,YAAa,KAAMgZ,EAAW36E,iBAE7B06E,EAAWx5E,cAEf09D,GAAIgc,cAAe,KAAMN,EAAOnkE,EAASrjB,EAAGqjB,EAASpjB,EAAGoL,EAAOC,EAAQ2hE,EAAUC,EAAQ0a,EAAW58E,MAAM4D,MAIrGg5E,EAAW7Y,oBAEfjD,GAAIic,wBAAyB,KAAMP,EAAOnkE,EAASrjB,EAAGqjB,EAASpjB,EAAG2nF,EAAWj7E,QAAS,GAAItB,MAAOu8E,EAAWj7E,QAAS,GAAIrB,OAAQ2hE,EAAU2a,EAAWj7E,QAAS,GAAIiC,MAInKk9D,GAAIgc,cAAe,KAAMN,EAAOnkE,EAASrjB,EAAGqjB,EAASpjB,EAAGgtE,EAAUC,EAAQ0a,EAAW58E,OAOxE,IAAVw8E,GAAeK,EAAW96E,iBAAkB++D,GAAIa,eAAgB,MAErEv0B,EAAMszB,iBAIPp7E,KAAK03F,uBAAyB,SAAWC,EAAW5kE,EAAUukE,EAAYC,GAAwB,IAAZL,EAAY,uDAAJ,EAE7F,GAAK1I,EAAMoC,iBAEVx9E,QAAQC,KAAM,iFAFf,CAOA,IAKIukF,EALE78E,EAAQ48E,EAAUtoF,IAAIK,EAAIioF,EAAUvoF,IAAIM,EAAI,EAC5CsL,EAAS28E,EAAUtoF,IAAIM,EAAIgoF,EAAUvoF,IAAIO,EAAI,EAC7CsQ,EAAQ03E,EAAUtoF,IAAIoP,EAAIk5E,EAAUvoF,IAAIqP,EAAI,EAC5Ck+D,EAAWlB,GAAMkD,QAAS4Y,EAAWv7E,QACrC4gE,EAASnB,GAAMkD,QAAS4Y,EAAWtqF,MAGzC,GAAKsqF,EAAWp8B,gBAEf99C,EAASshD,aAAc44B,EAAY,GACnCK,EAAW,UAEL,KAAKL,EAAWt8B,qBAQtB,YADA7nD,QAAQC,KAAM,+GALdgK,EAAS0hD,kBAAmBw4B,EAAY,GACxCK,EAAW,MASZpc,GAAI+C,YAAa,MAAOgZ,EAAW56E,OACnC6+D,GAAI+C,YAAa,MAAOgZ,EAAW76E,kBACnC8+D,GAAI+C,YAAa,KAAMgZ,EAAW36E,iBAElC,IAAMi7E,EAAerc,GAAI5xB,aAAc,MACjCkuC,EAAoBtc,GAAI5xB,aAAc,OACtCmuC,EAAmBvc,GAAI5xB,aAAc,MACrCouC,EAAiBxc,GAAI5xB,aAAc,MACnCquC,EAAmBzc,GAAI5xB,aAAc,OAErClvC,EAAQ48E,EAAW7Y,oBAAsB6Y,EAAWj7E,QAAS,GAAMi7E,EAAW58E,MAEpF8gE,GAAI+C,YAAa,KAAM7jE,EAAMK,OAC7BygE,GAAI+C,YAAa,MAAO7jE,EAAMM,QAC9BwgE,GAAI+C,YAAa,KAAMoZ,EAAUvoF,IAAIM,GACrC8rE,GAAI+C,YAAa,KAAMoZ,EAAUvoF,IAAIO,GACrC6rE,GAAI+C,YAAa,MAAOoZ,EAAUvoF,IAAIqP,GAEjC64E,EAAWx5E,eAAiBw5E,EAAWn8B,gBAE3CqgB,GAAI0c,cAAeN,EAAUV,EAAOnkE,EAASrjB,EAAGqjB,EAASpjB,EAAGojB,EAAStU,EAAG1D,EAAOC,EAAQiF,EAAO08D,EAAUC,EAAQliE,EAAM4D,MAIjHg5E,EAAW7Y,qBAEfrrE,QAAQC,KAAM,2FACdmoE,GAAI2c,wBAAyBP,EAAUV,EAAOnkE,EAASrjB,EAAGqjB,EAASpjB,EAAGojB,EAAStU,EAAG1D,EAAOC,EAAQiF,EAAO08D,EAAUjiE,EAAM4D,OAIxHk9D,GAAI0c,cAAeN,EAAUV,EAAOnkE,EAASrjB,EAAGqjB,EAASpjB,EAAGojB,EAAStU,EAAG1D,EAAOC,EAAQiF,EAAO08D,EAAUC,EAAQliE,GAMlH8gE,GAAI+C,YAAa,KAAMsZ,GACvBrc,GAAI+C,YAAa,MAAOuZ,GACxBtc,GAAI+C,YAAa,KAAMwZ,GACvBvc,GAAI+C,YAAa,KAAMyZ,GACvBxc,GAAI+C,YAAa,MAAO0Z,GAGT,IAAVf,GAAeK,EAAW96E,iBAAkB++D,GAAIa,eAAgBub,GAErE9vC,EAAMszB,kBAIPp7E,KAAKs+E,YAAc,SAAWj+D,GAE7BhD,EAAS0gE,aAAc19D,EAAS,GAEhCynC,EAAMszB,iBAIPp7E,KAAKo4F,WAAa,WAEjB1J,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KAEvB9mC,EAAMyD,QACNxB,GAAcwB,SAIoB,qBAAvB8sC,oBAEXA,mBAAmBr6E,cAAe,IAAIs6E,YAAa,UAAW,CAAEC,OAAQv4F,Q,IAMpEw4F,G,4HAAuBpL,IAE7BoL,GAAeljF,UAAUs7E,kBAAmB,E,IAEtC6H,G,WAEL,WAAax4D,GAA2B,IAApBsrD,EAAoB,uDAAV,MAAU,oBAEvCvrF,KAAKua,KAAO,GAEZva,KAAKigC,MAAQ,IAAIsE,GAAOtE,GACxBjgC,KAAKurF,QAAUA,E,yCAIhB,WAEC,OAAO,IAAIkN,EAASz4F,KAAKigC,MAAOjgC,KAAKurF,W,oBAItC,WAEC,MAAO,CACNt+E,KAAM,UACNgzB,MAAOjgC,KAAKigC,MAAMC,SAClBqrD,QAASvrF,KAAKurF,a,KAOjBkN,GAAQnjF,UAAU42D,WAAY,E,IAExBwsB,G,WAEL,WAAaz4D,GAA8B,IAAvBhM,EAAuB,uDAAhB,EAAGC,EAAa,uDAAP,IAAO,oBAE1Cl0B,KAAKua,KAAO,GAEZva,KAAKigC,MAAQ,IAAIsE,GAAOtE,GAExBjgC,KAAKi0B,KAAOA,EACZj0B,KAAKk0B,IAAMA,E,yCAIZ,WAEC,OAAO,IAAIwkE,EAAK14F,KAAKigC,MAAOjgC,KAAKi0B,KAAMj0B,KAAKk0B,O,oBAI7C,WAEC,MAAO,CACNjnB,KAAM,MACNgzB,MAAOjgC,KAAKigC,MAAMC,SAClBjM,KAAMj0B,KAAKi0B,KACXC,IAAKl0B,KAAKk0B,S,KAObwkE,GAAIpjF,UAAUg2E,OAAQ,E,IAEhBqN,G,kDAEL,aAAc,kCAEb,gBAEK1rF,KAAO,QAEZ,EAAKssB,WAAa,KAClB,EAAKE,YAAc,KACnB,EAAK8D,IAAM,KAEX,EAAKyyD,iBAAmB,KAExB,EAAKtb,YAAa,EAEiB,qBAAvB2jB,oBAEXA,mBAAmBr6E,cAAe,IAAIs6E,YAAa,UAAW,CAAEC,OAAQ,kBAhB5D,E,wCAsBd,SAAMr7E,EAAQud,GAab,OAXA,4DAAYvd,EAAQud,GAEO,OAAtBvd,EAAOqc,aAAsBv5B,KAAKu5B,WAAarc,EAAOqc,WAAW7Y,SAC1C,OAAvBxD,EAAOuc,cAAuBz5B,KAAKy5B,YAAcvc,EAAOuc,YAAY/Y,SACrD,OAAfxD,EAAOqgB,MAAev9B,KAAKu9B,IAAMrgB,EAAOqgB,IAAI7c,SAEhB,OAA5BxD,EAAO8yE,mBAA4BhwF,KAAKgwF,iBAAmB9yE,EAAO8yE,iBAAiBtvE,SAExF1gB,KAAK00E,WAAax3D,EAAOw3D,WACzB10E,KAAKwc,iBAAmBU,EAAOV,iBAExBxc,O,oBAIR,SAAQmd,GAEP,IAAMmB,EAAO,8DAAcnB,GAI3B,OAFkB,OAAbnd,KAAKu9B,MAAejf,EAAK+K,OAAOkU,IAAMv9B,KAAKu9B,IAAIxE,UAE7Cza,M,GA/CWyX,IAqDpB4iE,GAAMrjF,UAAUgkB,SAAU,E,IAEpBs/D,G,WAEL,WAAahrF,EAAOo/B,GAAS,oBAE5BhtC,KAAK4N,MAAQA,EACb5N,KAAKgtC,OAASA,EACdhtC,KAAK6gB,WAAkBxgB,IAAVuN,EAAsBA,EAAMI,OAASg/B,EAAS,EAE3DhtC,KAAK8mC,MAAQz6B,GACbrM,KAAK+mC,YAAc,CAAEhyB,OAAQ,EAAG8L,OAAS,GAEzC7gB,KAAK6c,QAAU,EAEf7c,KAAKoc,KAAOzN,K,oDAIb,c,uBAEA,SAAiBnP,IAED,IAAVA,GAAiBQ,KAAK6c,Y,sBAI5B,SAAUrd,GAIT,OAFAQ,KAAK8mC,MAAQtnC,EAENQ,O,kBAIR,SAAMkd,GAOL,OALAld,KAAK4N,MAAQ,IAAIsP,EAAOtP,MAAM6F,YAAayJ,EAAOtP,OAClD5N,KAAK6gB,MAAQ3D,EAAO2D,MACpB7gB,KAAKgtC,OAAS9vB,EAAO8vB,OACrBhtC,KAAK8mC,MAAQ5pB,EAAO4pB,MAEb9mC,O,oBAIR,SAAQgnC,EAAQhyB,EAAWiyB,GAE1BD,GAAUhnC,KAAKgtC,OACf/F,GAAUjyB,EAAUg4B,OAEpB,IAAM,IAAIl/B,EAAI,EAAGC,EAAI/N,KAAKgtC,OAAQl/B,EAAIC,EAAGD,IAExC9N,KAAK4N,MAAOo5B,EAASl5B,GAAMkH,EAAUpH,MAAOq5B,EAASn5B,GAItD,OAAO9N,O,iBAIR,SAAKR,GAAoB,IAAbuV,EAAa,uDAAJ,EAIpB,OAFA/U,KAAK4N,MAAMuF,IAAK3T,EAAOuV,GAEhB/U,O,mBAIR,SAAOse,QAEqBje,IAAtBie,EAAKu6E,eAETv6E,EAAKu6E,aAAe,SAIYx4F,IAA5BL,KAAK4N,MAAMyM,OAAOy+E,QAEtB94F,KAAK4N,MAAMyM,OAAOy+E,MAAQnqF,WAI2BtO,IAAjDie,EAAKu6E,aAAc74F,KAAK4N,MAAMyM,OAAOy+E,SAEzCx6E,EAAKu6E,aAAc74F,KAAK4N,MAAMyM,OAAOy+E,OAAU94F,KAAK4N,MAAMC,MAAO,GAAIwM,QAItE,IAAMzM,EAAQ,IAAI5N,KAAK4N,MAAM6F,YAAa6K,EAAKu6E,aAAc74F,KAAK4N,MAAMyM,OAAOy+E,QAEzEC,EAAK,IAAI/4F,KAAKyT,YAAa7F,EAAO5N,KAAKgtC,QAG7C,OAFA+rD,EAAGC,SAAUh5F,KAAK8mC,OAEXiyD,I,sBAIR,SAAU10E,GAIT,OAFArkB,KAAKunC,iBAAmBljB,EAEjBrkB,O,oBAIR,SAAQse,GAwBP,YAtB2Bje,IAAtBie,EAAKu6E,eAETv6E,EAAKu6E,aAAe,SAMYx4F,IAA5BL,KAAK4N,MAAMyM,OAAOy+E,QAEtB94F,KAAK4N,MAAMyM,OAAOy+E,MAAQnqF,WAI2BtO,IAAjDie,EAAKu6E,aAAc74F,KAAK4N,MAAMyM,OAAOy+E,SAEzCx6E,EAAKu6E,aAAc74F,KAAK4N,MAAMyM,OAAOy+E,OAAUl7E,MAAMtI,UAAUzH,MAAMI,KAAM,IAAIgM,YAAaja,KAAK4N,MAAMyM,UAMjG,CACN+B,KAAMpc,KAAKoc,KACX/B,OAAQra,KAAK4N,MAAMyM,OAAOy+E,MAC1B7rF,KAAMjN,KAAK4N,MAAM6F,YAAY8G,KAC7ByyB,OAAQhtC,KAAKgtC,Y,KAOhB4rD,GAAkBtjF,UAAU2jF,qBAAsB,EAElD,IAAMC,GAA0B,IAAIvzE,GAE9BwzE,G,WAEL,WAAaC,EAAmBxyD,EAAU7xB,GAA6B,IAArBqxB,EAAqB,4EAEtEpmC,KAAKua,KAAO,GAEZva,KAAKse,KAAO86E,EACZp5F,KAAK4mC,SAAWA,EAChB5mC,KAAK+U,OAASA,EAEd/U,KAAKomC,YAA4B,IAAfA,E,uCAInB,WAEC,OAAOpmC,KAAKse,KAAKuC,Q,iBAIlB,WAEC,OAAO7gB,KAAKse,KAAK1Q,Q,uBAIlB,SAAiBpO,GAEhBQ,KAAKse,KAAK8qB,YAAc5pC,I,0BAIzB,SAAcgQ,GAEb,IAAM,IAAI1B,EAAI,EAAGC,EAAI/N,KAAKse,KAAKuC,MAAO/S,EAAIC,EAAGD,IAE5CorF,GAAUxpF,EAAI1P,KAAKiV,KAAMnH,GACzBorF,GAAUvpF,EAAI3P,KAAKkV,KAAMpH,GACzBorF,GAAUz6E,EAAIze,KAAK4f,KAAM9R,GAEzBorF,GAAUxyE,aAAclX,GAExBxP,KAAKqnC,OAAQv5B,EAAGorF,GAAUxpF,EAAGwpF,GAAUvpF,EAAGupF,GAAUz6E,GAIrD,OAAOze,O,+BAIR,SAAmBwP,GAElB,IAAM,IAAI1B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvCorF,GAAUxpF,EAAI1P,KAAKiV,KAAMnH,GACzBorF,GAAUvpF,EAAI3P,KAAKkV,KAAMpH,GACzBorF,GAAUz6E,EAAIze,KAAK4f,KAAM9R,GAEzBorF,GAAU5xD,kBAAmB93B,GAE7BxP,KAAKqnC,OAAQv5B,EAAGorF,GAAUxpF,EAAGwpF,GAAUvpF,EAAGupF,GAAUz6E,GAIrD,OAAOze,O,gCAIR,SAAoBwP,GAEnB,IAAM,IAAI1B,EAAI,EAAGC,EAAI/N,KAAK6gB,MAAO/S,EAAIC,EAAGD,IAEvCorF,GAAUxpF,EAAI1P,KAAKiV,KAAMnH,GACzBorF,GAAUvpF,EAAI3P,KAAKkV,KAAMpH,GACzBorF,GAAUz6E,EAAIze,KAAK4f,KAAM9R,GAEzBorF,GAAUppE,mBAAoBtgB,GAE9BxP,KAAKqnC,OAAQv5B,EAAGorF,GAAUxpF,EAAGwpF,GAAUvpF,EAAGupF,GAAUz6E,GAIrD,OAAOze,O,kBAIR,SAAMwN,EAAOkC,GAIZ,OAFA1P,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,QAAWrF,EAErD1P,O,kBAIR,SAAMwN,EAAOmC,GAIZ,OAFA3P,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAAS,GAAMpF,EAEzD3P,O,kBAIR,SAAMwN,EAAOiR,GAIZ,OAFAze,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAAS,GAAM0J,EAEzDze,O,kBAIR,SAAMwN,EAAOmG,GAIZ,OAFA3T,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAAS,GAAMpB,EAEzD3T,O,kBAIR,SAAMwN,GAEL,OAAOxN,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,U,kBAIzD,SAAMvH,GAEL,OAAOxN,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAAS,K,kBAIlE,SAAMvH,GAEL,OAAOxN,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAAS,K,kBAIlE,SAAMvH,GAEL,OAAOxN,KAAKse,KAAK1Q,MAAOJ,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAAS,K,mBAIlE,SAAOvH,EAAOkC,EAAGC,GAOhB,OALAnC,EAAQA,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAExC/U,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMkC,EAC/B1P,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMmC,EAExB3P,O,oBAIR,SAAQwN,EAAOkC,EAAGC,EAAG8O,GAQpB,OANAjR,EAAQA,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAExC/U,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMkC,EAC/B1P,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMmC,EAC/B3P,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMiR,EAExBze,O,qBAIR,SAASwN,EAAOkC,EAAGC,EAAG8O,EAAG9K,GASxB,OAPAnG,EAAQA,EAAQxN,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAExC/U,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMkC,EAC/B1P,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMmC,EAC/B3P,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMiR,EAC/Bze,KAAKse,KAAK1Q,MAAOJ,EAAQ,GAAMmG,EAExB3T,O,mBAIR,SAAOse,GAEN,QAAcje,IAATie,EAAqB,CAEzBlL,QAAQnD,IAAK,mHAIb,IAFA,IAAMrC,EAAQ,GAEJE,EAAI,EAAGA,EAAI9N,KAAK6gB,MAAO/S,IAIhC,IAFA,IAAMN,EAAQM,EAAI9N,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAEhC6W,EAAI,EAAGA,EAAI5rB,KAAK4mC,SAAUhb,IAEnChe,EAAMN,KAAMtN,KAAKse,KAAK1Q,MAAOJ,EAAQoe,IAMvC,OAAO,IAAI+a,GAAiB,IAAI3mC,KAAK4N,MAAM6F,YAAa7F,GAAS5N,KAAK4mC,SAAU5mC,KAAKomC,YAgBrF,YAZiC/lC,IAA5Bie,EAAK+6E,qBAET/6E,EAAK+6E,mBAAqB,SAIwBh5F,IAA9Cie,EAAK+6E,mBAAoBr5F,KAAKse,KAAKlC,QAEvCkC,EAAK+6E,mBAAoBr5F,KAAKse,KAAKlC,MAASpc,KAAKse,KAAKoC,MAAOpC,IAIvD,IAAI66E,EAA4B76E,EAAK+6E,mBAAoBr5F,KAAKse,KAAKlC,MAAQpc,KAAK4mC,SAAU5mC,KAAK+U,OAAQ/U,KAAKomC,c,oBAMrH,SAAQ9nB,GAEP,QAAcje,IAATie,EAAqB,CAEzBlL,QAAQnD,IAAK,wHAIb,IAFA,IAAMrC,EAAQ,GAEJE,EAAI,EAAGA,EAAI9N,KAAK6gB,MAAO/S,IAIhC,IAFA,IAAMN,EAAQM,EAAI9N,KAAKse,KAAK0uB,OAAShtC,KAAK+U,OAEhC6W,EAAI,EAAGA,EAAI5rB,KAAK4mC,SAAUhb,IAEnChe,EAAMN,KAAMtN,KAAKse,KAAK1Q,MAAOJ,EAAQoe,IAQvC,MAAO,CACNgb,SAAU5mC,KAAK4mC,SACf35B,KAAMjN,KAAK4N,MAAM6F,YAAY8G,KAC7B3M,MAAOA,EACPw4B,WAAYpmC,KAAKomC,YAmBlB,YAZiC/lC,IAA5Bie,EAAK+6E,qBAET/6E,EAAK+6E,mBAAqB,SAIwBh5F,IAA9Cie,EAAK+6E,mBAAoBr5F,KAAKse,KAAKlC,QAEvCkC,EAAK+6E,mBAAoBr5F,KAAKse,KAAKlC,MAASpc,KAAKse,KAAKya,OAAQza,IAIxD,CACNyuB,8BAA8B,EAC9BnG,SAAU5mC,KAAK4mC,SACftoB,KAAMte,KAAKse,KAAKlC,KAChBrH,OAAQ/U,KAAK+U,OACbqxB,WAAYpmC,KAAKomC,gB,KASrB+yD,GAA2B7jF,UAAUy3B,8BAA+B,E,IA0DhEusD,GA9CEhuB,G,kDAEL,WAAazxC,GAAa,kCAEzB,gBAEK5sB,KAAO,iBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKnD,IAAM,KAEX,EAAKE,SAAW,KAEhB,EAAKtoB,SAAW,EAEhB,EAAKqqB,iBAAkB,EAEvB,EAAKzF,aAAc,EAEnB,EAAK2I,UAAW1M,GAlBS,E,wCAsB1B,SAAM3c,GAcL,OAZA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKgZ,SAAWkE,EAAOlE,SAEvBhZ,KAAKqjC,gBAAkBnmB,EAAOmmB,gBAEvBrjC,S,GAtCoBs9B,IA4C7BguC,GAAeh2D,UAAUy3E,kBAAmB,EAI5C,IAAMwM,GAAgC,IAAI5zE,GACpC6zE,GAA4B,IAAI7zE,GAChC8zE,GAA4B,IAAI9zE,GAEhC+zE,GAAiC,IAAIpmF,GACrCqmF,GAAiC,IAAIrmF,GACrCsmF,GAAiC,IAAI7pE,GAErC8pE,GAAoB,IAAIl0E,GACxBm0E,GAAoB,IAAIn0E,GACxBo0E,GAAoB,IAAIp0E,GAExBq0E,GAAqB,IAAI1mF,GACzB2mF,GAAqB,IAAI3mF,GACzB4mF,GAAqB,IAAI5mF,GAEzB6mF,G,kDAEL,WAAahgE,GAAW,MAMvB,GANuB,qBAEvB,gBAEKltB,KAAO,cAEO5M,IAAdi5F,GAA0B,CAE9BA,GAAY,IAAI3wD,GAEhB,IAAMyxD,EAAe,IAAIlgF,aAAc,EACpC,IAAO,GAAK,EAAG,EAAG,EACpB,IAAO,GAAK,EAAG,EAAG,EAClB,GAAK,GAAK,EAAG,EAAG,GACd,GAAK,GAAK,EAAG,EAAG,IAGbk/E,EAAoB,IAAIR,GAAmBwB,EAAc,GAE/Dd,GAAU9rD,SAAU,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,IACrC8rD,GAAUvvD,aAAc,WAAY,IAAIovD,GAA4BC,EAAmB,EAAG,GAAG,IAC7FE,GAAUvvD,aAAc,KAAM,IAAIovD,GAA4BC,EAAmB,EAAG,GAAG,IArBjE,OAyBvB,EAAKvvE,SAAWyvE,GAChB,EAAKn/D,cAA0B95B,IAAb85B,EAA2BA,EAAW,IAAImxC,GAE5D,EAAKn2D,OAAS,IAAI7B,GAAS,GAAK,IA5BT,E,2CAgCxB,SAAS47B,EAAWC,GAEO,OAArBD,EAAUzoB,QAEdrT,QAAQ3T,MAAO,yFAIhB+5F,GAAYa,mBAAoBr6F,KAAK8mB,aAErC8yE,GAAiB38E,KAAMiyB,EAAUzoB,OAAOK,aACxC9mB,KAAKs2B,gBAAgB9f,iBAAkB04B,EAAUzoB,OAAOE,mBAAoB3mB,KAAK8mB,aAEjF2yE,GAAYjiE,sBAAuBx3B,KAAKs2B,iBAEnC4Y,EAAUzoB,OAAO4tB,sBAAyD,IAAlCr0C,KAAKm6B,SAASkJ,iBAE1Dm2D,GAAY1lF,gBAAkB2lF,GAAYh7E,GAI3C,IACI/L,EAAKD,EADHuG,EAAWhZ,KAAKm6B,SAASnhB,SAGb,IAAbA,IAEJvG,EAAMrE,KAAKqE,IAAKuG,GAChBtG,EAAMtE,KAAKsE,IAAKsG,IAIjB,IAAM7D,EAASnV,KAAKmV,OAEpBmlF,GAAiBT,GAAI1mF,KAAO,IAAO,GAAK,GAAKsmF,GAAatkF,EAAQqkF,GAAa9mF,EAAKD,GACpF6nF,GAAiBR,GAAI3mF,IAAK,IAAO,GAAK,GAAKsmF,GAAatkF,EAAQqkF,GAAa9mF,EAAKD,GAClF6nF,GAAiBP,GAAI5mF,IAAK,GAAK,GAAK,GAAKsmF,GAAatkF,EAAQqkF,GAAa9mF,EAAKD,GAEhFunF,GAAK7mF,IAAK,EAAG,GACb8mF,GAAK9mF,IAAK,EAAG,GACb+mF,GAAK/mF,IAAK,EAAG,GAGb,IAAIonF,EAAYrrD,EAAUzhB,IAAIsiB,kBAAmB8pD,GAAKC,GAAKC,IAAK,EAAOR,IAEvE,GAAmB,OAAdgB,IAGJD,GAAiBR,GAAI3mF,KAAO,GAAK,GAAK,GAAKsmF,GAAatkF,EAAQqkF,GAAa9mF,EAAKD,GAClFwnF,GAAK9mF,IAAK,EAAG,GAGM,QADnBonF,EAAYrrD,EAAUzhB,IAAIsiB,kBAAmB8pD,GAAKE,GAAKD,IAAK,EAAOP,MANpE,CAeA,IAAMjiE,EAAW4X,EAAUzhB,IAAIF,OAAOhB,WAAYgtE,IAE7CjiE,EAAW4X,EAAUjb,MAAQqD,EAAW4X,EAAUhb,KAEvDib,EAAW7hC,KAAM,CAEhBgqB,SAAUA,EACV7N,MAAO8vE,GAAgB74E,QACvBzC,GAAIqd,GAASW,MAAOs9D,GAAiBM,GAAKC,GAAKC,GAAKC,GAAMC,GAAMC,GAAM,IAAI5mF,IAC1Eo8B,KAAM,KACNrmB,OAAQrpB,U,kBAMV,SAAMkd,GAQL,OANA,4DAAYA,QAEW7c,IAAlB6c,EAAO/H,QAAuBnV,KAAKmV,OAAO8H,KAAMC,EAAO/H,QAE5DnV,KAAKm6B,SAAWjd,EAAOid,SAEhBn6B,S,GArHY+1B,IA6HrB,SAASukE,GAAiBE,EAAgBC,EAAYtlF,EAAQ6d,EAAOtgB,EAAKD,GAGzEinF,GAAiB7lF,WAAY2mF,EAAgBrlF,GAASwU,UAAW,IAAMyN,SAAUpE,QAGpE3yB,IAARqS,GAEJinF,GAAiBjqF,EAAM+C,EAAMinF,GAAiBhqF,EAAQgD,EAAMgnF,GAAiB/pF,EAC7EgqF,GAAiBhqF,EAAM+C,EAAMgnF,GAAiBhqF,EAAQ+C,EAAMinF,GAAiB/pF,GAI7EgqF,GAAiB18E,KAAMy8E,IAKxBc,EAAev9E,KAAMw9E,GACrBD,EAAe9qF,GAAKiqF,GAAiBjqF,EACrC8qF,EAAe7qF,GAAKgqF,GAAiBhqF,EAGrC6qF,EAAe9zE,aAAckzE,IAzB9BO,GAAO7kF,UAAU2+E,UAAW,EA6B5B,IAAMyG,GAAsB,IAAI/0E,GAC1Bg1E,GAAsB,IAAIh1E,GAE1Bi1E,G,kDAEL,aAAc,kCAEb,gBAEKC,cAAgB,EAErB,EAAK5tF,KAAO,MAEZqD,OAAO6lB,iBAAP7lB,OAAA,IAAAA,CAAA,GAA+B,CAC9BwqF,OAAQ,CACPzkE,YAAY,EACZ72B,MAAO,IAER40F,MAAO,CACN50F,OAAO,KAIT,EAAKk1E,YAAa,EAlBL,E,wCAsBd,SAAMx3D,GAEL,4DAAYA,GAAQ,GAIpB,IAFA,IAAM49E,EAAS59E,EAAO49E,OAEZhtF,EAAI,EAAGC,EAAI+sF,EAAO9sF,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMopF,EAAQ4D,EAAQhtF,GAEtB9N,KAAK+6F,SAAU7D,EAAM7tE,OAAO3I,QAASw2E,EAAM5/D,UAM5C,OAFAt3B,KAAK00E,WAAax3D,EAAOw3D,WAElB10E,O,sBAIR,SAAUqpB,GAAuB,IAAfiO,EAAe,uDAAJ,EAE5BA,EAAWlpB,KAAKgD,IAAKkmB,GAErB,IAEIvpB,EAFE+sF,EAAS96F,KAAK86F,OAIpB,IAAM/sF,EAAI,EAAGA,EAAI+sF,EAAO9sF,UAElBspB,EAAWwjE,EAAQ/sF,GAAIupB,UAFGvpB,KAchC,OAJA+sF,EAAOrtF,OAAQM,EAAG,EAAG,CAAEupB,SAAUA,EAAUjO,OAAQA,IAEnDrpB,KAAKopB,IAAKC,GAEHrpB,O,6BAIR,WAEC,OAAOA,KAAK66F,gB,kCAIb,SAAsBvjE,GAErB,IAAMwjE,EAAS96F,KAAK86F,OAEpB,GAAKA,EAAO9sF,OAAS,EAAI,CAExB,IAAIF,EAAGC,EAEP,IAAMD,EAAI,EAAGC,EAAI+sF,EAAO9sF,OAAQF,EAAIC,KAE9BupB,EAAWwjE,EAAQhtF,GAAIwpB,UAFUxpB,KAUvC,OAAOgtF,EAAQhtF,EAAI,GAAIub,OAIxB,OAAO,O,qBAIR,SAAS6lB,EAAWC,GAInB,GAFenvC,KAAK86F,OAER9sF,OAAS,EAAI,CAExB0sF,GAAMljE,sBAAuBx3B,KAAK8mB,aAElC,IAAMwQ,EAAW4X,EAAUzhB,IAAIF,OAAOhB,WAAYmuE,IAElD16F,KAAKg7F,qBAAsB1jE,GAAW2jE,QAAS/rD,EAAWC,M,oBAM5D,SAAQ1oB,GAEP,IAAMq0E,EAAS96F,KAAK86F,OAEpB,GAAKA,EAAO9sF,OAAS,EAAI,CAExB0sF,GAAMljE,sBAAuB/Q,EAAOK,aACpC6zE,GAAMnjE,sBAAuBx3B,KAAK8mB,aAElC,IAIIhZ,EAAGC,EAJDupB,EAAWojE,GAAMnuE,WAAYouE,IAAUl0E,EAAOysB,KAMpD,IAJA4nD,EAAQ,GAAIzxE,OAAOqN,SAAU,EAIvB5oB,EAAI,EAAGC,EAAI+sF,EAAO9sF,OAAQF,EAAIC,GAE9BupB,GAAYwjE,EAAQhtF,GAAIwpB,SAFSxpB,IAIrCgtF,EAAQhtF,EAAI,GAAIub,OAAOqN,SAAU,EACjCokE,EAAQhtF,GAAIub,OAAOqN,SAAU,EAY/B,IAFA12B,KAAK66F,cAAgB/sF,EAAI,EAEjBA,EAAIC,EAAGD,IAEdgtF,EAAQhtF,GAAIub,OAAOqN,SAAU,K,oBAQhC,SAAQvZ,GAEP,IAAMmB,EAAO,8DAAcnB,IAEF,IAApBnd,KAAK00E,aAAuBp2D,EAAK+K,OAAOqrD,YAAa,GAE1Dp2D,EAAK+K,OAAOyxE,OAAS,GAIrB,IAFA,IAAMA,EAAS96F,KAAK86F,OAEVhtF,EAAI,EAAGC,EAAI+sF,EAAO9sF,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMopF,EAAQ4D,EAAQhtF,GAEtBwQ,EAAK+K,OAAOyxE,OAAOxtF,KAAM,CACxB+b,OAAQ6tE,EAAM7tE,OAAOjN,KACrBkb,SAAU4/D,EAAM5/D,WAKlB,OAAOhZ,M,GArLSyX,IA2LZmlE,GAA8B,IAAIv1E,GAElCw1E,GAA2B,IAAI38E,GAC/B48E,GAA4B,IAAI58E,GAEhC68E,GAA0B,IAAI11E,GAC9B21E,GAAwB,IAAIvrE,GAE5BwrE,G,kDAEL,WAAa1xE,EAAUsQ,GAAW,kCAEjC,cAAOtQ,EAAUsQ,IAEZltB,KAAO,cAEZ,EAAK+sB,SAAW,WAChB,EAAKC,WAAa,IAAIlK,GACtB,EAAKyrE,kBAAoB,IAAIzrE,GARI,E,wCAYlC,SAAM7S,GAUL,OARA,4DAAYA,GAEZld,KAAKg6B,SAAW9c,EAAO8c,SACvBh6B,KAAKi6B,WAAWhd,KAAMC,EAAO+c,YAC7Bj6B,KAAKw7F,kBAAkBv+E,KAAMC,EAAOs+E,mBAEpCx7F,KAAKk6B,SAAWhd,EAAOgd,SAEhBl6B,O,kBAIR,SAAMk6B,EAAUD,GAEfj6B,KAAKk6B,SAAWA,OAEI75B,IAAf45B,IAEJj6B,KAAKq4B,mBAAmB,GAExBr4B,KAAKk6B,SAASuhE,oBAEdxhE,EAAaj6B,KAAK8mB,aAInB9mB,KAAKi6B,WAAWhd,KAAMgd,GACtBj6B,KAAKw7F,kBAAkBv+E,KAAMgd,GAAaxhB,W,kBAI3C,WAECzY,KAAKk6B,SAAS6qD,S,kCAIf,WAMC,IAJA,IAAMr7D,EAAS,IAAIlL,GAEbk9E,EAAa17F,KAAK6pB,SAAS+e,WAAW8yD,WAElC5tF,EAAI,EAAGC,EAAI2tF,EAAW76E,MAAO/S,EAAIC,EAAGD,IAAO,CAEpD4b,EAAOha,EAAIgsF,EAAWzmF,KAAMnH,GAC5B4b,EAAO/Z,EAAI+rF,EAAWxmF,KAAMpH,GAC5B4b,EAAOjL,EAAIi9E,EAAW97E,KAAM9R,GAC5B4b,EAAO/V,EAAI+nF,EAAW77E,KAAM/R,GAE5B,IAAMklB,EAAQ,EAAMtJ,EAAOiyE,kBAEtB3oE,IAAUzZ,IAEdmQ,EAAO5V,eAAgBkf,GAIvBtJ,EAAOvW,IAAK,EAAG,EAAG,EAAG,GAItBuoF,EAAWE,QAAS9tF,EAAG4b,EAAOha,EAAGga,EAAO/Z,EAAG+Z,EAAOjL,EAAGiL,EAAO/V,M,+BAM9D,SAAmBykB,GAElB,yEAAyBA,GAEF,aAAlBp4B,KAAKg6B,SAETh6B,KAAKw7F,kBAAkBv+E,KAAMjd,KAAK8mB,aAAcrO,SAEnB,aAAlBzY,KAAKg6B,SAEhBh6B,KAAKw7F,kBAAkBv+E,KAAMjd,KAAKi6B,YAAaxhB,SAI/CrF,QAAQC,KAAM,6CAA+CrT,KAAKg6B,Y,2BAMpE,SAAexsB,EAAOG,GAErB,IAAMusB,EAAWl6B,KAAKk6B,SAChBrQ,EAAW7pB,KAAK6pB,SAEtBsxE,GAAWz/D,oBAAqB7R,EAAS+e,WAAWizD,UAAWruF,GAC/D4tF,GAAY1/D,oBAAqB7R,EAAS+e,WAAW8yD,WAAYluF,GAEjE0tF,GAAcj+E,KAAMtP,GAAS+Y,aAAc1mB,KAAKi6B,YAEhDtsB,EAAOwF,IAAK,EAAG,EAAG,GAElB,IAAM,IAAIrF,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM0oD,EAAS4kC,GAAYU,aAAchuF,GAEzC,GAAgB,IAAX0oD,EAAe,CAEnB,IAAMulC,EAAYZ,GAAWW,aAAchuF,GAE3CwtF,GAAQ9kF,iBAAkB0jB,EAAS0xC,MAAOmwB,GAAYj1E,YAAaoT,EAAS8hE,aAAcD,IAE1FpuF,EAAO4uB,gBAAiB8+D,GAAUp+E,KAAMi+E,IAAgBx0E,aAAc40E,IAAW9kC,IAMnF,OAAO7oD,EAAO+Y,aAAc1mB,KAAKw7F,uB,GApIT7sD,IA0I1B4sD,GAAYjmF,UAAUykB,eAAgB,E,IAEhCkiE,G,kDAEL,aAAc,kCAEb,gBAEKhvF,KAAO,OAJC,E,UAFI8oB,IAYnBkmE,GAAK3mF,UAAU4mF,QAAS,E,IAElBC,G,kDAEL,aAAmK,MAAtJ79E,EAAsJ,uDAA/I,KAAMvD,EAAyI,uDAAjI,EAAGC,EAA8H,uDAArH,EAAGgB,EAAkH,uCAA1G/O,EAA0G,uCAApGyO,EAAoG,uCAA3FE,EAA2F,uCAApFC,EAAoF,uCAA7EC,EAA6E,uDAAjE/W,GAAegX,EAAkD,uDAAtChX,GAAekX,EAAuB,yCAAXC,EAAW,qEAElK,cAAO,KAAMR,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,EAAYC,IAE/ExB,MAAQ,CAAE4D,KAAMA,EAAMvD,MAAOA,EAAOC,OAAQA,GAEjD,EAAKc,UAAYA,EACjB,EAAKC,UAAYA,EAEjB,EAAKU,iBAAkB,EACvB,EAAKE,OAAQ,EACb,EAAKC,gBAAkB,EAEvB,EAAKwsB,aAAc,EAb+I,E,UAF1I5tB,IAqB1B2gF,GAAY7mF,UAAUwI,eAAgB,EAEtC,IAAMs+E,GAA8B,IAAIrsE,GAClCssE,GAAgC,IAAItsE,GAEpCusE,G,WAEL,aAA6C,IAAhC1wB,EAAgC,uDAAxB,GAAIowB,EAAoB,uDAAL,GAAK,oBAE5Ch8F,KAAKoc,KAAOzN,KAEZ3O,KAAK4rE,MAAQA,EAAM/9D,MAAO,GAC1B7N,KAAKg8F,aAAeA,EACpBh8F,KAAKu8F,aAAe,KAEpBv8F,KAAKg2F,YAAc,KACnBh2F,KAAKk2F,gBAAkB,EAEvBl2F,KAAKk5C,OAAU,EAEfl5C,KAAKwwD,O,wCAIN,WAEC,IAAMob,EAAQ5rE,KAAK4rE,MACbowB,EAAeh8F,KAAKg8F,aAM1B,GAJAh8F,KAAKu8F,aAAe,IAAIriF,aAA6B,GAAf0xD,EAAM59D,QAIf,IAAxBguF,EAAahuF,OAEjBhO,KAAKy7F,yBAML,GAAK7vB,EAAM59D,SAAWguF,EAAahuF,OAAS,CAE3CoF,QAAQC,KAAM,mFAEdrT,KAAKg8F,aAAe,GAEpB,IAAM,IAAIluF,EAAI,EAAGgT,EAAK9gB,KAAK4rE,MAAM59D,OAAQF,EAAIgT,EAAIhT,IAEhD9N,KAAKg8F,aAAa1uF,KAAM,IAAIyiB,O,+BAUhC,WAEC/vB,KAAKg8F,aAAahuF,OAAS,EAE3B,IAAM,IAAIF,EAAI,EAAGgT,EAAK9gB,KAAK4rE,MAAM59D,OAAQF,EAAIgT,EAAIhT,IAAO,CAEvD,IAAM0uF,EAAU,IAAIzsE,GAEf/vB,KAAK4rE,MAAO99D,IAEhB0uF,EAAQv/E,KAAMjd,KAAK4rE,MAAO99D,GAAIgZ,aAAcrO,SAI7CzY,KAAKg8F,aAAa1uF,KAAMkvF,M,kBAM1B,WAIC,IAAM,IAAI1uF,EAAI,EAAGgT,EAAK9gB,KAAK4rE,MAAM59D,OAAQF,EAAIgT,EAAIhT,IAAO,CAEvD,IAAM2uF,EAAOz8F,KAAK4rE,MAAO99D,GAEpB2uF,GAEJA,EAAK31E,YAAY7J,KAAMjd,KAAKg8F,aAAcluF,IAAM2K,SAQlD,IAAM,IAAI3K,EAAI,EAAGgT,EAAK9gB,KAAK4rE,MAAM59D,OAAQF,EAAIgT,EAAIhT,IAAO,CAEvD,IAAM2uF,EAAOz8F,KAAK4rE,MAAO99D,GAEpB2uF,IAECA,EAAKzmE,QAAUymE,EAAKzmE,OAAOkmE,QAE/BO,EAAKrjF,OAAO6D,KAAMw/E,EAAKzmE,OAAOlP,aAAcrO,SAC5CgkF,EAAKrjF,OAAOge,SAAUqlE,EAAK31E,cAI3B21E,EAAKrjF,OAAO6D,KAAMw/E,EAAK31E,aAIxB21E,EAAKrjF,OAAO+d,UAAWslE,EAAK1pE,SAAU0pE,EAAKh7E,WAAYg7E,EAAKzpE,W,oBAQ/D,WASC,IAPA,IAAM44C,EAAQ5rE,KAAK4rE,MACbowB,EAAeh8F,KAAKg8F,aACpBO,EAAev8F,KAAKu8F,aACpBvG,EAAch2F,KAAKg2F,YAIfloF,EAAI,EAAGgT,EAAK8qD,EAAM59D,OAAQF,EAAIgT,EAAIhT,IAAO,CAIlD,IAAMsL,EAASwyD,EAAO99D,GAAM89D,EAAO99D,GAAIgZ,YAAcu1E,GAErDD,GAAc5lF,iBAAkB4C,EAAQ4iF,EAAcluF,IACtDsuF,GAAcljE,QAASqjE,EAAkB,GAAJzuF,GAIjB,OAAhBkoF,IAEJA,EAAY5sD,aAAc,K,mBAM5B,WAEC,OAAO,IAAIkzD,EAAUt8F,KAAK4rE,MAAO5rE,KAAKg8F,gB,gCAIvC,WASC,IAAI/yE,EAAO7a,KAAKiG,KAA0B,EAApBrU,KAAK4rE,MAAM59D,QACjCib,EAAOnZ,GAAgBmZ,GACvBA,EAAO7a,KAAKiB,IAAK4Z,EAAM,GAEvB,IAAMszE,EAAe,IAAIriF,aAAc+O,EAAOA,EAAO,GACrDszE,EAAappF,IAAKnT,KAAKu8F,cAEvB,IAAMvG,EAAc,IAAImG,GAAaI,EAActzE,EAAMA,EAAM1iB,GAAYR,IAM3E,OAJA/F,KAAKu8F,aAAeA,EACpBv8F,KAAKg2F,YAAcA,EACnBh2F,KAAKk2F,gBAAkBjtE,EAEhBjpB,O,2BAIR,SAAeua,GAEd,IAAM,IAAIzM,EAAI,EAAGgT,EAAK9gB,KAAK4rE,MAAM59D,OAAQF,EAAIgT,EAAIhT,IAAO,CAEvD,IAAM2uF,EAAOz8F,KAAK4rE,MAAO99D,GAEzB,GAAK2uF,EAAKliF,OAASA,EAElB,OAAOkiF,K,qBAUV,WAE2B,OAArBz8F,KAAKg2F,cAETh2F,KAAKg2F,YAAYv1E,UAEjBzgB,KAAKg2F,YAAc,Q,sBAMrB,SAAU0G,EAAM9wB,GAEf5rE,KAAKoc,KAAOsgF,EAAKtgF,KAEjB,IAAM,IAAItO,EAAI,EAAGC,EAAI2uF,EAAK9wB,MAAM59D,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAMsO,EAAOsgF,EAAK9wB,MAAO99D,GACrB2uF,EAAO7wB,EAAOxvD,QAEJ/b,IAATo8F,IAEJrpF,QAAQC,KAAM,2CAA4C+I,GAC1DqgF,EAAO,IAAIR,IAIZj8F,KAAK4rE,MAAMt+D,KAAMmvF,GACjBz8F,KAAKg8F,aAAa1uF,MAAM,IAAIyiB,IAAU1W,UAAWqjF,EAAKV,aAAcluF,KAMrE,OAFA9N,KAAKwwD,OAEExwD,O,oBAIR,WAEC,IAAMse,EAAO,CACZf,SAAU,CACTV,QAAS,IACT5P,KAAM,WACNuQ,UAAW,mBAEZouD,MAAO,GACPowB,aAAc,IAGf19E,EAAKlC,KAAOpc,KAAKoc,KAKjB,IAHA,IAAMwvD,EAAQ5rE,KAAK4rE,MACbowB,EAAeh8F,KAAKg8F,aAEhBluF,EAAI,EAAGC,EAAI69D,EAAM59D,OAAQF,EAAIC,EAAGD,IAAO,CAEhD,IAAM2uF,EAAO7wB,EAAO99D,GACpBwQ,EAAKstD,MAAMt+D,KAAMmvF,EAAKrgF,MAEtB,IAAMugF,EAAcX,EAAcluF,GAClCwQ,EAAK09E,aAAa1uF,KAAMqvF,EAAYzjE,WAIrC,OAAO5a,M,KAMHs+E,G,kDAEL,WAAahvF,EAAOg5B,EAAUR,GAAmC,MAAvB6kB,EAAuB,uDAAJ,EAAI,2BAErC,kBAAf7kB,IAEX6kB,EAAmB7kB,EAEnBA,GAAa,EAEbhzB,QAAQ3T,MAAO,mGAIhB,cAAOmO,EAAOg5B,EAAUR,IAEnB6kB,iBAAmBA,EAdwC,E,wCAkBjE,SAAM/tC,GAML,OAJA,4DAAYA,GAEZld,KAAKirD,iBAAmB/tC,EAAO+tC,iBAExBjrD,O,oBAIR,WAEC,IAAMse,EAAO,+DAMb,OAJAA,EAAK2sC,iBAAmBjrD,KAAKirD,iBAE7B3sC,EAAKyuC,4BAA6B,EAE3BzuC,M,GAtC8BqoB,IA4CvCi2D,GAAyBtnF,UAAUy3C,4BAA6B,EAEhE,IAAM8vC,GAAqC,IAAI9sE,GACzC+sE,GAAqC,IAAI/sE,GAEzCgtE,GAAsB,GAEtBC,GAAsB,IAAIruD,GAE1BsuD,G,kDAEL,WAAapzE,EAAUsQ,EAAUtZ,GAAQ,kCAExC,cAAOgJ,EAAUsQ,IAEZf,eAAiB,IAAIwjE,GAA0B,IAAI1iF,aAAsB,GAAR2G,GAAc,IACpF,EAAKwY,cAAgB,KAErB,EAAKxY,MAAQA,EAEb,EAAKgW,eAAgB,EATmB,E,wCAazC,SAAM3Z,GAUL,OARA,4DAAYA,GAEZld,KAAKo5B,eAAenc,KAAMC,EAAOkc,gBAEH,OAAzBlc,EAAOmc,gBAAyBr5B,KAAKq5B,cAAgBnc,EAAOmc,cAAc3Y,SAE/E1gB,KAAK6gB,MAAQ3D,EAAO2D,MAEb7gB,O,wBAIR,SAAYwN,EAAOyyB,GAElBA,EAAM5mB,UAAWrZ,KAAKq5B,cAAczrB,MAAe,EAARJ,K,yBAI5C,SAAaA,EAAO4L,GAEnBA,EAAOC,UAAWrZ,KAAKo5B,eAAexrB,MAAe,GAARJ,K,qBAI9C,SAAS0hC,EAAWC,GAEnB,IAAMroB,EAAc9mB,KAAK8mB,YACnBo2E,EAAel9F,KAAK6gB,MAK1B,GAHAm8E,GAAMnzE,SAAW7pB,KAAK6pB,SACtBmzE,GAAM7iE,SAAWn6B,KAAKm6B,cAEE95B,IAAnB28F,GAAM7iE,SAEX,IAAM,IAAIgjE,EAAa,EAAGA,EAAaD,EAAcC,IAAgB,CAIpEn9F,KAAKo9F,YAAaD,EAAYN,IAE9BC,GAAqBtmF,iBAAkBsQ,EAAa+1E,IAIpDG,GAAMl2E,YAAcg2E,GAEpBE,GAAM/B,QAAS/rD,EAAW6tD,IAI1B,IAAM,IAAIjvF,EAAI,EAAGC,EAAIgvF,GAAoB/uF,OAAQF,EAAIC,EAAGD,IAAO,CAE9D,IAAMysF,EAAYwC,GAAqBjvF,GACvCysF,EAAU4C,WAAaA,EACvB5C,EAAUlxE,OAASrpB,KACnBmvC,EAAW7hC,KAAMitF,GAIlBwC,GAAoB/uF,OAAS,K,wBAM/B,SAAYR,EAAOyyB,GAEU,OAAvBjgC,KAAKq5B,gBAETr5B,KAAKq5B,cAAgB,IAAIujE,GAA0B,IAAI1iF,aAA0C,EAA5Bla,KAAKo5B,eAAevY,OAAa,IAIvGof,EAAM/G,QAASl5B,KAAKq5B,cAAczrB,MAAe,EAARJ,K,yBAI1C,SAAaA,EAAO4L,GAEnBA,EAAO8f,QAASl5B,KAAKo5B,eAAexrB,MAAe,GAARJ,K,gCAI5C,c,qBAIA,WAECxN,KAAKge,cAAe,CAAE/Q,KAAM,gB,GA1GF0hC,IAgH5BsuD,GAAc3nF,UAAU6jB,iBAAkB,E,IAapC+xC,G,kDAEL,WAAarxC,GAAa,kCAEzB,gBAEK5sB,KAAO,oBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKjB,UAAY,EACjB,EAAK+5D,QAAU,QACf,EAAKC,SAAW,QAEhB,EAAK/2D,UAAW1M,GAZS,E,wCAiB1B,SAAM3c,GAUL,OARA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKsjC,UAAYpmB,EAAOomB,UACxBtjC,KAAKq9F,QAAUngF,EAAOmgF,QACtBr9F,KAAKs9F,SAAWpgF,EAAOogF,SAEhBt9F,S,GA7BuBs9B,IAmChC4tC,GAAkB51D,UAAUm3E,qBAAsB,EAElD,IAAM8Q,GAAyB,IAAI53E,GAC7B63E,GAAuB,IAAI73E,GAC3B83E,GAAiC,IAAI1tE,GACrC2tE,GAAuB,IAAIpwE,GAC3BqwE,GAA0B,IAAIvxE,GAE9BwxE,G,kDAEL,aAAmF,MAAtE/zE,EAAsE,uDAA3D,IAAI8e,GAAkBxO,EAAqC,uDAA1B,IAAI+wC,GAAsB,4BAElF,gBAEKj+D,KAAO,OAEZ,EAAK4c,SAAWA,EAChB,EAAKsQ,SAAWA,EAEhB,EAAKyU,qBAT6E,E,wCAanF,SAAM1xB,GAOL,OALA,4DAAYA,GAEZld,KAAKm6B,SAAWjd,EAAOid,SACvBn6B,KAAK6pB,SAAW3M,EAAO2M,SAEhB7pB,O,kCAIR,WAEC,IAAM6pB,EAAW7pB,KAAK6pB,SAEtB,GAAKA,EAAS2iB,iBAIb,GAAwB,OAAnB3iB,EAASrc,MAAiB,CAK9B,IAHA,IAAMo+B,EAAoB/hB,EAAS+e,WAAW7V,SACxC8qE,EAAgB,CAAE,GAEd/vF,EAAI,EAAGC,EAAI69B,EAAkB/qB,MAAO/S,EAAIC,EAAGD,IAEpDyvF,GAAS7hE,oBAAqBkQ,EAAmB99B,EAAI,GACrD0vF,GAAO9hE,oBAAqBkQ,EAAmB99B,GAE/C+vF,EAAe/vF,GAAM+vF,EAAe/vF,EAAI,GACxC+vF,EAAe/vF,IAAOyvF,GAAShxE,WAAYixE,IAI5C3zE,EAASkgB,aAAc,eAAgB,IAAI7B,GAAwB21D,EAAe,SAIlFzqF,QAAQC,KAAM,sGAIJwW,EAAS8lB,YAEpBv8B,QAAQ3T,MAAO,0GAIhB,OAAOO,O,qBAIR,SAASkvC,EAAWC,GAEnB,IAAMtlB,EAAW7pB,KAAK6pB,SAChB/C,EAAc9mB,KAAK8mB,YACnBg3E,EAAY5uD,EAAUylB,OAAOipC,KAAKE,UAClC70D,EAAYpf,EAASof,UAU3B,GANiC,OAA5Bpf,EAASmf,gBAA0Bnf,EAAS0f,wBAEjDo0D,GAAU1gF,KAAM4M,EAASmf,gBACzB20D,GAAUj3E,aAAcI,GACxB62E,GAAU51E,QAAU+1E,GAEiC,IAAhD5uD,EAAUzhB,IAAIhB,iBAAkBkxE,IAArC,CAIAF,GAAiBxgF,KAAM6J,GAAcrO,SACrCilF,GAAOzgF,KAAMiyB,EAAUzhB,KAAM/G,aAAc+2E,IAE3C,IAAMM,EAAiBD,IAAgB99F,KAAKgzB,MAAMtjB,EAAI1P,KAAKgzB,MAAMrjB,EAAI3P,KAAKgzB,MAAMvU,GAAM,GAChFu/E,EAAmBD,EAAiBA,EAEpCE,EAAS,IAAIt4E,GACbu4E,EAAO,IAAIv4E,GACXw4E,EAAe,IAAIx4E,GACnBy4E,EAAW,IAAIz4E,GACfjD,EAAO1iB,KAAK+zF,eAAiB,EAAI,EAEvC,GAAKlqE,EAAS2iB,iBAAmB,CAEhC,IAAMh/B,EAAQqc,EAASrc,MAEjBo+B,EADa/hB,EAAS+e,WACS7V,SAErC,GAAe,OAAVvlB,EAKJ,IAHA,IAGUM,EAHIM,KAAKiB,IAAK,EAAG45B,EAAUC,OAGhBn7B,EAFTK,KAAKgB,IAAK5B,EAAMqT,MAASooB,EAAUC,MAAQD,EAAUpoB,OAElC,EAAG/S,EAAIC,EAAGD,GAAK4U,EAAO,CAEpD,IAAMrQ,EAAI7E,EAAMyH,KAAMnH,GAChBwE,EAAI9E,EAAMyH,KAAMnH,EAAI,GAO1B,GALAmwF,EAAOviE,oBAAqBkQ,EAAmBv5B,GAC/C6rF,EAAKxiE,oBAAqBkQ,EAAmBt5B,KAE9BorF,GAAOW,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAAS13E,aAAc1mB,KAAK8mB,aAE5B,IAAMwQ,EAAW4X,EAAUzhB,IAAIF,OAAOhB,WAAY6xE,GAE7C9mE,EAAW4X,EAAUjb,MAAQqD,EAAW4X,EAAUhb,KAEvDib,EAAW7hC,KAAM,CAEhBgqB,SAAUA,EAGV7N,MAAO00E,EAAaz9E,QAAQgG,aAAc1mB,KAAK8mB,aAC/CtZ,MAAOM,EACP4hC,KAAM,KACND,UAAW,KACXpmB,OAAQrpB,aAWV,IAHA,IAGU8N,EAHIM,KAAKiB,IAAK,EAAG45B,EAAUC,OAGhBn7B,EAFTK,KAAKgB,IAAKw8B,EAAkB/qB,MAASooB,EAAUC,MAAQD,EAAUpoB,OAE9C,EAAG/S,EAAIC,EAAGD,GAAK4U,EAAO,CAOpD,GALAu7E,EAAOviE,oBAAqBkQ,EAAmB99B,GAC/CowF,EAAKxiE,oBAAqBkQ,EAAmB99B,EAAI,KAElC4vF,GAAOW,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAAS13E,aAAc1mB,KAAK8mB,aAE5B,IAAMwQ,EAAW4X,EAAUzhB,IAAIF,OAAOhB,WAAY6xE,GAE7C9mE,EAAW4X,EAAUjb,MAAQqD,EAAW4X,EAAUhb,KAEvDib,EAAW7hC,KAAM,CAEhBgqB,SAAUA,EAGV7N,MAAO00E,EAAaz9E,QAAQgG,aAAc1mB,KAAK8mB,aAC/CtZ,MAAOM,EACP4hC,KAAM,KACND,UAAW,KACXpmB,OAAQrpB,cAQA6pB,EAAS8lB,YAEpBv8B,QAAQ3T,MAAO,gG,gCAMjB,WAEC,IAAMoqB,EAAW7pB,KAAK6pB,SAEtB,GAAKA,EAAS2iB,iBAAmB,CAEhC,IAAM3D,EAAkBhf,EAASgf,gBAC3BwE,EAAO/8B,OAAO+8B,KAAMxE,GAE1B,GAAKwE,EAAKr/B,OAAS,EAAI,CAEtB,IAAMm8B,EAAiBtB,EAAiBwE,EAAM,IAE9C,QAAwBhtC,IAAnB8pC,EAA+B,CAEnCnqC,KAAK6uC,sBAAwB,GAC7B7uC,KAAK8uC,sBAAwB,GAE7B,IAAM,IAAIt/B,EAAI,EAAGu/B,EAAK5E,EAAen8B,OAAQwB,EAAIu/B,EAAIv/B,IAAO,CAE3D,IAAM+K,EAAO4vB,EAAgB36B,GAAI+K,MAAQy0B,OAAQx/B,GAEjDxP,KAAK6uC,sBAAsBvhC,KAAM,GACjCtN,KAAK8uC,sBAAuBv0B,GAAS/K,SAQlC,CAEN,IAAMy/B,EAAeplB,EAASolB,kBAER5uC,IAAjB4uC,GAA8BA,EAAajhC,OAAS,GAExDoF,QAAQ3T,MAAO,2G,GAhOAs2B,IA0OnB6nE,GAAKtoF,UAAUqkB,QAAS,EAExB,IAAM2kE,GAAuB,IAAI34E,GAC3B44E,GAAqB,IAAI54E,GAEzB64E,G,kDAEL,WAAa30E,EAAUsQ,GAAW,kCAEjC,cAAOtQ,EAAUsQ,IAEZltB,KAAO,eAJqB,E,wDAQlC,WAEC,IAAM4c,EAAW7pB,KAAK6pB,SAEtB,GAAKA,EAAS2iB,iBAIb,GAAwB,OAAnB3iB,EAASrc,MAAiB,CAK9B,IAHA,IAAMo+B,EAAoB/hB,EAAS+e,WAAW7V,SACxC8qE,EAAgB,GAEZ/vF,EAAI,EAAGC,EAAI69B,EAAkB/qB,MAAO/S,EAAIC,EAAGD,GAAK,EAEzDwwF,GAAO5iE,oBAAqBkQ,EAAmB99B,GAC/CywF,GAAK7iE,oBAAqBkQ,EAAmB99B,EAAI,GAEjD+vF,EAAe/vF,GAAc,IAANA,EAAY,EAAI+vF,EAAe/vF,EAAI,GAC1D+vF,EAAe/vF,EAAI,GAAM+vF,EAAe/vF,GAAMwwF,GAAO/xE,WAAYgyE,IAIlE10E,EAASkgB,aAAc,eAAgB,IAAI7B,GAAwB21D,EAAe,SAIlFzqF,QAAQC,KAAM,8GAIJwW,EAAS8lB,YAEpBv8B,QAAQ3T,MAAO,kHAIhB,OAAOO,S,GA/CkB49F,IAqD3BY,GAAalpF,UAAUy+E,gBAAiB,E,IAElC0K,G,kDAEL,WAAa50E,EAAUsQ,GAAW,kCAEjC,cAAOtQ,EAAUsQ,IAEZltB,KAAO,WAJqB,E,UAFZ2wF,IAYvBa,GAASnpF,UAAU0+E,YAAa,E,IAe1B5oB,G,kDAEL,WAAavxC,GAAa,kCAEzB,gBAEK5sB,KAAO,iBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKnD,IAAM,KAEX,EAAKE,SAAW,KAEhB,EAAKrY,KAAO,EACZ,EAAKoa,iBAAkB,EAEvB,EAAKkD,UAAW1M,GAfS,E,wCAmB1B,SAAM3c,GAaL,OAXA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKipB,KAAO/L,EAAO+L,KACnBjpB,KAAKqjC,gBAAkBnmB,EAAOmmB,gBAEvBrjC,S,GAlCoBs9B,IAwC7B8tC,GAAe91D,UAAUu3E,kBAAmB,EAE5C,IAAM6R,GAA+B,IAAI3uE,GACnC4uE,GAAqB,IAAIrxE,GACzBsxE,GAAwB,IAAIxyE,GAC5ByyE,GAA4B,IAAIl5E,GAEhCm5E,G,kDAEL,aAAgF,MAAnEj1E,EAAmE,uDAAxD,IAAI8e,GAAkBxO,EAAkC,uDAAvB,IAAIixC,GAAmB,4BAE/E,gBAEKn+D,KAAO,SAEZ,EAAK4c,SAAWA,EAChB,EAAKsQ,SAAWA,EAEhB,EAAKyU,qBAT0E,E,wCAahF,SAAM1xB,GAOL,OALA,4DAAYA,GAEZld,KAAKm6B,SAAWjd,EAAOid,SACvBn6B,KAAK6pB,SAAW3M,EAAO2M,SAEhB7pB,O,qBAIR,SAASkvC,EAAWC,GAEnB,IAAMtlB,EAAW7pB,KAAK6pB,SAChB/C,EAAc9mB,KAAK8mB,YACnBg3E,EAAY5uD,EAAUylB,OAAOmqC,OAAOhB,UACpC70D,EAAYpf,EAASof,UAU3B,GANiC,OAA5Bpf,EAASmf,gBAA0Bnf,EAAS0f,wBAEjDq1D,GAAQ3hF,KAAM4M,EAASmf,gBACvB41D,GAAQl4E,aAAcI,GACtB83E,GAAQ72E,QAAU+1E,GAEiC,IAA9C5uD,EAAUzhB,IAAIhB,iBAAkBmyE,IAArC,CAIAF,GAAezhF,KAAM6J,GAAcrO,SACnCkmF,GAAK1hF,KAAMiyB,EAAUzhB,KAAM/G,aAAcg4E,IAEzC,IAAMX,EAAiBD,IAAgB99F,KAAKgzB,MAAMtjB,EAAI1P,KAAKgzB,MAAMrjB,EAAI3P,KAAKgzB,MAAMvU,GAAM,GAChFu/E,EAAmBD,EAAiBA,EAE1C,GAAKl0E,EAAS2iB,iBAAmB,CAEhC,IAAMh/B,EAAQqc,EAASrc,MAEjBo+B,EADa/hB,EAAS+e,WACS7V,SAErC,GAAe,OAAVvlB,EAKJ,IAHA,IAGUM,EAHIM,KAAKiB,IAAK,EAAG45B,EAAUC,OAGhBpoB,EAFT1S,KAAKgB,IAAK5B,EAAMqT,MAASooB,EAAUC,MAAQD,EAAUpoB,OAElC/S,EAAIgT,EAAIhT,IAAO,CAE7C,IAAMuE,EAAI7E,EAAMyH,KAAMnH,GAEtB+wF,GAAYnjE,oBAAqBkQ,EAAmBv5B,GAEpD0sF,GAAWF,GAAaxsF,EAAG2rF,EAAkBl3E,EAAaooB,EAAWC,EAAYnvC,WASlF,IAHA,IAGU8N,EAHIM,KAAKiB,IAAK,EAAG45B,EAAUC,OAGhBn7B,EAFTK,KAAKgB,IAAKw8B,EAAkB/qB,MAASooB,EAAUC,MAAQD,EAAUpoB,OAE/C/S,EAAIC,EAAGD,IAEpC+wF,GAAYnjE,oBAAqBkQ,EAAmB99B,GAEpDixF,GAAWF,GAAa/wF,EAAGkwF,EAAkBl3E,EAAaooB,EAAWC,EAAYnvC,WAQnFoT,QAAQ3T,MAAO,kG,gCAMjB,WAEC,IAAMoqB,EAAW7pB,KAAK6pB,SAEtB,GAAKA,EAAS2iB,iBAAmB,CAEhC,IAAM3D,EAAkBhf,EAASgf,gBAC3BwE,EAAO/8B,OAAO+8B,KAAMxE,GAE1B,GAAKwE,EAAKr/B,OAAS,EAAI,CAEtB,IAAMm8B,EAAiBtB,EAAiBwE,EAAM,IAE9C,QAAwBhtC,IAAnB8pC,EAA+B,CAEnCnqC,KAAK6uC,sBAAwB,GAC7B7uC,KAAK8uC,sBAAwB,GAE7B,IAAM,IAAIt/B,EAAI,EAAGu/B,EAAK5E,EAAen8B,OAAQwB,EAAIu/B,EAAIv/B,IAAO,CAE3D,IAAM+K,EAAO4vB,EAAgB36B,GAAI+K,MAAQy0B,OAAQx/B,GAEjDxP,KAAK6uC,sBAAsBvhC,KAAM,GACjCtN,KAAK8uC,sBAAuBv0B,GAAS/K,SAQlC,CAEN,IAAMy/B,EAAeplB,EAASolB,kBAER5uC,IAAjB4uC,GAA8BA,EAAajhC,OAAS,GAExDoF,QAAQ3T,MAAO,6G,GApIEs2B,IAgJrB,SAASgpE,GAAWt1E,EAAOjc,EAAOwwF,EAAkBl3E,EAAaooB,EAAWC,EAAY9lB,GAEvF,IAAM21E,EAAqBL,GAAK/wE,kBAAmBnE,GAEnD,GAAKu1E,EAAqBhB,EAAmB,CAE5C,IAAMiB,EAAiB,IAAIt5E,GAE3Bg5E,GAAKO,oBAAqBz1E,EAAOw1E,GACjCA,EAAev4E,aAAcI,GAE7B,IAAMwQ,EAAW4X,EAAUzhB,IAAIF,OAAOhB,WAAY0yE,GAElD,GAAK3nE,EAAW4X,EAAUjb,MAAQqD,EAAW4X,EAAUhb,IAAM,OAE7Dib,EAAW7hC,KAAM,CAEhBgqB,SAAUA,EACV6nE,cAAe/wF,KAAKiG,KAAM2qF,GAC1Bv1E,MAAOw1E,EACPzxF,MAAOA,EACPkiC,KAAM,KACNrmB,OAAQA,KAxBXy1E,GAAOxpF,UAAUskB,UAAW,E,IAgCtBwlE,G,kDAEL,WAAaC,EAAO3jF,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,GAAa,2BAE3F,cAAOojF,EAAO3jF,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,IAEpED,YAAoB3b,IAAX2b,EAAuBA,EAAS1V,GAE9C,EAAKyV,eAA0B1b,IAAd0b,EAA0BA,EAAY3W,GACvD,EAAK0W,eAA0Bzb,IAAdyb,EAA0BA,EAAY1W,GAEvD,EAAKqX,iBAAkB,EAEvB,IAAM4zB,EAAQ,eAX6E,MAoBtF,8BAA+BgvD,GAEnCA,EAAMC,2BATP,SAASC,IAERlvD,EAAMjH,aAAc,EACpBi2D,EAAMC,0BAA2BC,MAhByD,E,yCA4B5F,WAEC,OAAO,IAAIv/F,KAAKyT,YAAazT,KAAK0a,OAAQuC,KAAMjd,Q,oBAIjD,WAEC,IAAMq/F,EAAQr/F,KAAK0a,OAGY,IAFD,8BAA+B2kF,GAErBA,EAAMG,YAAcH,EAAMI,oBAEjEz/F,KAAKopC,aAAc,O,GA3CK5tB,IAmD3B4jF,GAAa9pF,UAAU4nE,gBAAiB,E,IAElCwiB,G,kDAEL,WAAarjF,EAAStB,EAAOC,EAAQgB,EAAQ/O,EAAMyO,EAASE,EAAOC,EAAOC,EAAWC,EAAWE,EAAYC,GAAW,kCAEtH,cAAO,KAAMR,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,EAAYC,IAE/ExB,MAAQ,CAAEK,MAAOA,EAAOC,OAAQA,GACrC,EAAKqB,QAAUA,EAKf,EAAKM,OAAQ,EAKb,EAAKF,iBAAkB,EAf+F,E,UAFxFjB,IAuBhCkkF,GAAkBpqF,UAAUmpE,qBAAsB,E,IAE5CkhB,G,kDAEL,WAAa7kF,EAAQY,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,GAAa,kCAE5F,cAAOnB,EAAQY,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,IAErEmtB,aAAc,EAJyE,E,UAFlE5tB,IAY5BmkF,GAAcrqF,UAAUsqF,iBAAkB,E,IAEpCC,G,kDAEL,WAAa9kF,EAAOC,EAAQ/N,EAAMyO,EAASE,EAAOC,EAAOC,EAAWC,EAAWE,EAAYD,GAAS,MAInG,GAJmG,qBAEnGA,OAAoB3b,IAAX2b,EAAuBA,EAASrV,MAEzBA,IAAeqV,IAAWpV,GAEzC,MAAM,IAAI4M,MAAO,oFANiF,YAUrFnT,IAAT4M,GAAsB+O,IAAWrV,KAAcsG,EAAOrH,SAC7CvF,IAAT4M,GAAsB+O,IAAWpV,KAAqBqG,EAAO7G,KAElE,cAAO,KAAMsV,EAASE,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ/O,EAAMgP,IAEnEvB,MAAQ,CAAEK,MAAOA,EAAOC,OAAQA,GAErC,EAAKc,eAA0Bzb,IAAdyb,EAA0BA,EAAY/W,GACvD,EAAKgX,eAA0B1b,IAAd0b,EAA0BA,EAAYhX,GAEvD,EAAK4X,OAAQ,EACb,EAAKF,iBAAkB,EArB4E,E,UAF1EjB,IA8B3BqkF,GAAavqF,UAAUkqE,gBAAiB,E,IAElCsgB,G,kDAEL,aAAmF,MAAtE/3E,EAAsE,uDAA7D,EAAGg4E,EAA0D,uDAA/C,EAAGC,EAA4C,uDAA/B,EAAGC,EAA4B,uDAAJ,EAAV7xF,KAAKC,GAAS,qBAElF,gBAEKpB,KAAO,iBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRg4E,SAAUA,EACVC,WAAYA,EACZC,YAAaA,GAGdF,EAAW3xF,KAAKiB,IAAK,EAAG0wF,GAIxB,IAAMz1D,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAINy1D,EAAS,IAAIv6E,GACb1H,EAAK,IAAI3K,GAIfg9B,EAAShjC,KAAM,EAAG,EAAG,GACrBk9B,EAAQl9B,KAAM,EAAG,EAAG,GACpBm9B,EAAIn9B,KAAM,GAAK,IAEf,IAAM,IAAIwE,EAAI,EAAGhE,EAAI,EAAGgE,GAAKiuF,EAAUjuF,IAAMhE,GAAK,EAAI,CAErD,IAAMqyF,EAAUH,EAAaluF,EAAIiuF,EAAWE,EAI5CC,EAAOxwF,EAAIqY,EAAS3Z,KAAKqE,IAAK0tF,GAC9BD,EAAOvwF,EAAIoY,EAAS3Z,KAAKsE,IAAKytF,GAE9B7vD,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1C+rB,EAAQl9B,KAAM,EAAG,EAAG,GAIpB2Q,EAAGvO,GAAM4gC,EAAUxiC,GAAMia,EAAS,GAAM,EACxC9J,EAAGtO,GAAM2gC,EAAUxiC,EAAI,GAAMia,EAAS,GAAM,EAE5C0iB,EAAIn9B,KAAM2Q,EAAGvO,EAAGuO,EAAGtO,GAMpB,IAAM,IAAI7B,EAAI,EAAGA,GAAKiyF,EAAUjyF,IAE/Bw8B,EAAQh9B,KAAMQ,EAAGA,EAAI,EAAG,GA7DyD,OAmElF,EAAK0/B,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IAtEwB,E,iDA0EnF,SAAiBnsB,GAEhB,OAAO,IAAIwhF,EAAgBxhF,EAAKyJ,OAAQzJ,EAAKyhF,SAAUzhF,EAAK0hF,WAAY1hF,EAAK2hF,iB,GA9ElDt3D,IAoFvBy3D,G,kDAEL,aAAiK,MAApJC,EAAoJ,uDAAxI,EAAGC,EAAqI,uDAAtH,EAAGtlF,EAAmH,uDAA1G,EAAGulF,EAAuG,uDAAtF,EAAGpwD,EAAmF,uDAAlE,EAAGqwD,EAA+D,wDAA5CR,EAA4C,uDAA/B,EAAGC,EAA4B,uDAAJ,EAAV7xF,KAAKC,GAAS,qBAEhK,gBACKpB,KAAO,mBAEZ,EAAK4sB,WAAa,CACjBwmE,UAAWA,EACXC,aAAcA,EACdtlF,OAAQA,EACRulF,eAAgBA,EAChBpwD,eAAgBA,EAChBqwD,UAAWA,EACXR,WAAYA,EACZC,YAAaA,GAGd,IAAM5vD,EAAQ,eAEdkwD,EAAiBnyF,KAAKgC,MAAOmwF,GAC7BpwD,EAAiB/hC,KAAKgC,MAAO+/B,GAI7B,IAAM7F,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAIRj9B,EAAQ,EACNizF,EAAa,GACbpyB,EAAarzD,EAAS,EACxBw1B,EAAa,EAoBjB,SAASkwD,IAYR,IAVA,IAAM94E,EAAS,IAAIjC,GACbu6E,EAAS,IAAIv6E,GAEf2rB,EAAa,EAGXqvD,GAAUL,EAAeD,GAAcrlF,EAInCrL,EAAI,EAAGA,GAAKwgC,EAAgBxgC,IAAO,CAU5C,IARA,IAAMixF,EAAW,GAEXltF,EAAI/D,EAAIwgC,EAIRpoB,EAASrU,GAAM4sF,EAAeD,GAAcA,EAExC3wF,EAAI,EAAGA,GAAK6wF,EAAgB7wF,IAAO,CAE5C,IAAM2Y,EAAI3Y,EAAI6wF,EAERpnF,EAAQkP,EAAI43E,EAAcD,EAE1Ba,EAAWzyF,KAAKsE,IAAKyG,GACrB2nF,EAAW1yF,KAAKqE,IAAK0G,GAI3B+mF,EAAOxwF,EAAIqY,EAAS84E,EACpBX,EAAOvwF,GAAM+D,EAAIsH,EAASqzD,EAC1B6xB,EAAOzhF,EAAIsJ,EAAS+4E,EACpBxwD,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1CmJ,EAAOzU,IAAK0tF,EAAUF,EAAOG,GAAWnsF,YACxC61B,EAAQl9B,KAAMsa,EAAOlY,EAAGkY,EAAOjY,EAAGiY,EAAOnJ,GAIzCgsB,EAAIn9B,KAAM+a,EAAG,EAAI3U,GAIjBktF,EAAStzF,KAAME,KAMhBizF,EAAWnzF,KAAMszF,GAMlB,IAAM,IAAIlxF,EAAI,EAAGA,EAAI6wF,EAAgB7wF,IAEpC,IAAM,IAAIC,EAAI,EAAGA,EAAIwgC,EAAgBxgC,IAAO,CAI3C,IAAM0C,EAAIouF,EAAY9wF,GAAKD,GACrB4C,EAAImuF,EAAY9wF,EAAI,GAAKD,GACzB6C,EAAIkuF,EAAY9wF,EAAI,GAAKD,EAAI,GAC7BmI,EAAI4oF,EAAY9wF,GAAKD,EAAI,GAI/B46B,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GAIpBy5B,GAAc,EAQhBjB,EAAMjD,SAAUoD,EAAYc,EAAY,GAIxCd,GAAcc,EAIf,SAASyvD,EAAahtE,GAiBrB,IAdA,IAAMitE,EAAmBxzF,EAEnByQ,EAAK,IAAI3K,GACT4sF,EAAS,IAAIv6E,GAEf2rB,EAAa,EAEXvpB,GAAmB,IAARgM,EAAiBssE,EAAYC,EACxC9wE,GAAiB,IAARuE,EAAiB,GAAM,EAM5BrkB,EAAI,EAAGA,GAAK6wF,EAAgB7wF,IAIrC4gC,EAAShjC,KAAM,EAAG+gE,EAAa7+C,EAAM,GAIrCgb,EAAQl9B,KAAM,EAAGkiB,EAAM,GAIvBib,EAAIn9B,KAAM,GAAK,IAIfE,IASD,IAJA,IAAMyzF,EAAiBzzF,EAIbkC,EAAI,EAAGA,GAAK6wF,EAAgB7wF,IAAO,CAE5C,IACMyJ,EADIzJ,EAAI6wF,EACIN,EAAcD,EAE1Bc,EAAW1yF,KAAKqE,IAAK0G,GACrB0nF,EAAWzyF,KAAKsE,IAAKyG,GAI3B+mF,EAAOxwF,EAAIqY,EAAS84E,EACpBX,EAAOvwF,EAAI0+D,EAAa7+C,EACxB0wE,EAAOzhF,EAAIsJ,EAAS+4E,EACpBxwD,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1C+rB,EAAQl9B,KAAM,EAAGkiB,EAAM,GAIvBvR,EAAGvO,EAAiB,GAAXoxF,EAAmB,GAC5B7iF,EAAGtO,EAAiB,GAAXkxF,EAAiBrxE,EAAS,GACnCib,EAAIn9B,KAAM2Q,EAAGvO,EAAGuO,EAAGtO,GAInBnC,IAMD,IAAM,IAAIkC,EAAI,EAAGA,EAAI6wF,EAAgB7wF,IAAO,CAE3C,IAAM6C,EAAIyuF,EAAmBtxF,EACvB5B,EAAImzF,EAAiBvxF,GAEd,IAARqkB,EAIJuW,EAAQh9B,KAAMQ,EAAGA,EAAI,EAAGyE,GAMxB+3B,EAAQh9B,KAAMQ,EAAI,EAAGA,EAAGyE,GAIzB++B,GAAc,EAMfjB,EAAMjD,SAAUoD,EAAYc,GAAoB,IAARvd,EAAe,EAAI,GAI3Dyc,GAAcc,EA5PiJ,OAqChKovD,KAEmB,IAAdF,IAECH,EAAY,GAAIU,GAAa,GAC7BT,EAAe,GAAIS,GAAa,IAMtC,EAAKvzD,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IAnDsG,E,iDAkQjK,SAAiBnsB,GAEhB,OAAO,IAAI8hF,EAAkB9hF,EAAK+hF,UAAW/hF,EAAKgiF,aAAchiF,EAAKtD,OAAQsD,EAAKiiF,eAAgBjiF,EAAK6xB,eAAgB7xB,EAAKkiF,UAAWliF,EAAK0hF,WAAY1hF,EAAK2hF,iB,GAtQhIt3D,IA4QzBu4D,G,kDAEL,aAA4I,MAA/Hn5E,EAA+H,uDAAtH,EAAG/M,EAAmH,uDAA1G,EAAGulF,EAAuG,uDAAtF,EAAGpwD,EAAmF,uDAAlE,EAAGqwD,EAA+D,wDAA5CR,EAA4C,uDAA/B,EAAGC,EAA4B,uDAAJ,EAAV7xF,KAAKC,GAAS,4BAE3I,cAAO,EAAG0Z,EAAQ/M,EAAQulF,EAAgBpwD,EAAgBqwD,EAAWR,EAAYC,IAE5EhzF,KAAO,eAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACR/M,OAAQA,EACRulF,eAAgBA,EAChBpwD,eAAgBA,EAChBqwD,UAAWA,EACXR,WAAYA,EACZC,YAAaA,GAb6H,E,iDAkB5I,SAAiB3hF,GAEhB,OAAO,IAAI4iF,EAAc5iF,EAAKyJ,OAAQzJ,EAAKtD,OAAQsD,EAAKiiF,eAAgBjiF,EAAK6xB,eAAgB7xB,EAAKkiF,UAAWliF,EAAK0hF,WAAY1hF,EAAK2hF,iB,GAtB1GG,IA4BrBe,G,kDAEL,aAAmE,MAAtD7wD,EAAsD,uDAA3C,GAAIhG,EAAuC,uDAA7B,GAAIviB,EAAyB,uDAAhB,EAAGwwE,EAAa,uDAAJ,EAAI,qBAElE,gBAEKtrF,KAAO,qBAEZ,EAAK4sB,WAAa,CACjByW,SAAUA,EACVhG,QAASA,EACTviB,OAAQA,EACRwwE,OAAQA,GAKT,IAAM6I,EAAe,GACfC,EAAW,GAgCjB,SAASC,EAAW/I,GAQnB,IANA,IAAMlmF,EAAI,IAAIsT,GACRrT,EAAI,IAAIqT,GACRpT,EAAI,IAAIoT,GAIJ7X,EAAI,EAAGA,EAAIw8B,EAAQt8B,OAAQF,GAAK,EAIzCyzF,EAAkBj3D,EAASx8B,EAAI,GAAKuE,GACpCkvF,EAAkBj3D,EAASx8B,EAAI,GAAKwE,GACpCivF,EAAkBj3D,EAASx8B,EAAI,GAAKyE,GAIpCivF,EAAenvF,EAAGC,EAAGC,EAAGgmF,GAM1B,SAASiJ,EAAenvF,EAAGC,EAAGC,EAAGgmF,GAUhC,IARA,IAAMkJ,EAAOlJ,EAAS,EAIhB7kF,EAAI,GAIA5F,EAAI,EAAGA,GAAK2zF,EAAM3zF,IAAO,CAElC4F,EAAG5F,GAAM,GAOT,IALA,IAAM4zF,EAAKrvF,EAAEqO,QAAQjR,KAAM8C,EAAGzE,EAAI2zF,GAC5BE,EAAKrvF,EAAEoO,QAAQjR,KAAM8C,EAAGzE,EAAI2zF,GAE5BG,EAAOH,EAAO3zF,EAEV8d,EAAI,EAAGA,GAAKg2E,EAAMh2E,IAI1BlY,EAAG5F,GAAK8d,GAFE,IAANA,GAAW9d,IAAM2zF,EAEPC,EAIAA,EAAGhhF,QAAQjR,KAAMkyF,EAAI/1E,EAAIg2E,GAU1C,IAAM,IAAI9zF,EAAI,EAAGA,EAAI2zF,EAAM3zF,IAE1B,IAAM,IAAI8d,EAAI,EAAGA,EAAI,GAAM61E,EAAO3zF,GAAM,EAAG8d,IAAO,CAEjD,IAAM2oD,EAAInmE,KAAKgC,MAAOwb,EAAI,GAErBA,EAAI,IAAM,GAEdi2E,EAAYnuF,EAAG5F,GAAKymE,EAAI,IACxBstB,EAAYnuF,EAAG5F,EAAI,GAAKymE,IACxBstB,EAAYnuF,EAAG5F,GAAKymE,MAIpBstB,EAAYnuF,EAAG5F,GAAKymE,EAAI,IACxBstB,EAAYnuF,EAAG5F,EAAI,GAAKymE,EAAI,IAC5BstB,EAAYnuF,EAAG5F,EAAI,GAAKymE,MAU5B,SAASutB,EAAa/5E,GAMrB,IAJA,IAAMm4E,EAAS,IAAIv6E,GAIT7X,EAAI,EAAGA,EAAIszF,EAAapzF,OAAQF,GAAK,EAE9CoyF,EAAOxwF,EAAI0xF,EAActzF,EAAI,GAC7BoyF,EAAOvwF,EAAIyxF,EAActzF,EAAI,GAC7BoyF,EAAOzhF,EAAI2iF,EAActzF,EAAI,GAE7BoyF,EAAOvrF,YAAYb,eAAgBiU,GAEnCq5E,EAActzF,EAAI,GAAMoyF,EAAOxwF,EAC/B0xF,EAActzF,EAAI,GAAMoyF,EAAOvwF,EAC/ByxF,EAActzF,EAAI,GAAMoyF,EAAOzhF,EAMjC,SAASsjF,IAIR,IAFA,IAAM7B,EAAS,IAAIv6E,GAET7X,EAAI,EAAGA,EAAIszF,EAAapzF,OAAQF,GAAK,EAAI,CAElDoyF,EAAOxwF,EAAI0xF,EAActzF,EAAI,GAC7BoyF,EAAOvwF,EAAIyxF,EAActzF,EAAI,GAC7BoyF,EAAOzhF,EAAI2iF,EAActzF,EAAI,GAE7B,IAAMua,EAAI25E,EAAS9B,GAAW,EAAI9xF,KAAKC,GAAK,GACtCqF,EAAIuuF,EAAa/B,GAAW9xF,KAAKC,GAAK,GAC5CgzF,EAAS/zF,KAAM+a,EAAG,EAAI3U,GAIvBwuF,IAEAC,IAID,SAASA,IAIR,IAAM,IAAIr0F,EAAI,EAAGA,EAAIuzF,EAASrzF,OAAQF,GAAK,EAAI,CAI9C,IAAMgX,EAAKu8E,EAAUvzF,EAAI,GACnBoX,EAAKm8E,EAAUvzF,EAAI,GACnBmlB,EAAKouE,EAAUvzF,EAAI,GAEnBuB,EAAMjB,KAAKiB,IAAKyV,EAAII,EAAI+N,GACxB7jB,EAAMhB,KAAKgB,IAAK0V,EAAII,EAAI+N,GAIzB5jB,EAAM,IAAOD,EAAM,KAElB0V,EAAK,KAAMu8E,EAAUvzF,EAAI,IAAO,GAChCoX,EAAK,KAAMm8E,EAAUvzF,EAAI,IAAO,GAChCmlB,EAAK,KAAMouE,EAAUvzF,EAAI,IAAO,KAQxC,SAAS+zF,EAAY3B,GAEpBkB,EAAa9zF,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI/C,SAAS8iF,EAAkB/zF,EAAO0yF,GAEjC,IAAMlzD,EAAiB,EAARx/B,EAEf0yF,EAAOxwF,EAAI4gC,EAAUtD,EAAS,GAC9BkzD,EAAOvwF,EAAI2gC,EAAUtD,EAAS,GAC9BkzD,EAAOzhF,EAAI6xB,EAAUtD,EAAS,GAI/B,SAASk1D,IAYR,IAVA,IAAM7vF,EAAI,IAAIsT,GACRrT,EAAI,IAAIqT,GACRpT,EAAI,IAAIoT,GAERy8E,EAAW,IAAIz8E,GAEfslB,EAAM,IAAI33B,GACV43B,EAAM,IAAI53B,GACV63B,EAAM,IAAI73B,GAENxF,EAAI,EAAG8d,EAAI,EAAG9d,EAAIszF,EAAapzF,OAAQF,GAAK,EAAG8d,GAAK,EAAI,CAEjEvZ,EAAEc,IAAKiuF,EAActzF,EAAI,GAAKszF,EAActzF,EAAI,GAAKszF,EAActzF,EAAI,IACvEwE,EAAEa,IAAKiuF,EAActzF,EAAI,GAAKszF,EAActzF,EAAI,GAAKszF,EAActzF,EAAI,IACvEyE,EAAEY,IAAKiuF,EAActzF,EAAI,GAAKszF,EAActzF,EAAI,GAAKszF,EAActzF,EAAI,IAEvEm9B,EAAI93B,IAAKkuF,EAAUz1E,EAAI,GAAKy1E,EAAUz1E,EAAI,IAC1Csf,EAAI/3B,IAAKkuF,EAAUz1E,EAAI,GAAKy1E,EAAUz1E,EAAI,IAC1Cuf,EAAIh4B,IAAKkuF,EAAUz1E,EAAI,GAAKy1E,EAAUz1E,EAAI,IAE1Cw2E,EAASnlF,KAAM5K,GAAI+W,IAAK9W,GAAI8W,IAAK7W,GAAI4B,aAAc,GAEnD,IAAMkuF,EAAML,EAASI,GAErBE,EAAWr3D,EAAKrf,EAAI,EAAGvZ,EAAGgwF,GAC1BC,EAAWp3D,EAAKtf,EAAI,EAAGtZ,EAAG+vF,GAC1BC,EAAWn3D,EAAKvf,EAAI,EAAGrZ,EAAG8vF,IAM5B,SAASC,EAAWrkF,EAAI+uB,EAAQtjB,EAAQs4E,GAEhCA,EAAU,GAAkB,IAAT/jF,EAAGvO,IAE5B2xF,EAAUr0D,GAAW/uB,EAAGvO,EAAI,GAIT,IAAbga,EAAOha,GAA4B,IAAbga,EAAOjL,IAEnC4iF,EAAUr0D,GAAWg1D,EAAU,EAAI5zF,KAAKC,GAAK,IAQ/C,SAAS2zF,EAASt4E,GAEjB,OAAOtb,KAAKmG,MAAOmV,EAAOjL,GAAKiL,EAAOha,GAOvC,SAASuyF,EAAav4E,GAErB,OAAOtb,KAAKmG,OAASmV,EAAO/Z,EAAGvB,KAAKiG,KAAQqV,EAAOha,EAAIga,EAAOha,EAAQga,EAAOjL,EAAIiL,EAAOjL,IA/RvB,OAoBlE6iF,EAAW/I,GAIXuJ,EAAa/5E,GAIbg6E,IAIA,EAAKh4D,aAAc,WAAY,IAAI7B,GAAwBk5D,EAAc,IACzE,EAAKr3D,aAAc,SAAU,IAAI7B,GAAwBk5D,EAAavzF,QAAS,IAC/E,EAAKk8B,aAAc,KAAM,IAAI7B,GAAwBm5D,EAAU,IAE/C,IAAX9I,EAEJ,EAAKgK,uBAIL,EAAKh2D,mBA1C4D,E,iDAqSnE,SAAiBjuB,GAEhB,OAAO,IAAI6iF,EAAoB7iF,EAAKgyB,SAAUhyB,EAAKgsB,QAAShsB,EAAKyJ,OAAQzJ,EAAKkkF,a,GAzS/C75D,IA+S3B85D,G,kDAEL,aAAsC,MAAzB16E,EAAyB,uDAAhB,EAAGwwE,EAAa,uDAAJ,EAAI,oBAErC,IAAM3oF,GAAM,EAAIxB,KAAKiG,KAAM,IAAQ,EAC7BsE,EAAI,EAAI/I,EAER0gC,EAAW,EAGd,GAAK,GAAK,GAAK,GAAK,EAAG,GACvB,EAAG,GAAK,GAAK,EAAG,EAAG,EACrB,GAAK,GAAK,EAAG,GAAK,EAAG,EACrB,EAAG,GAAK,EAAG,EAAG,EAAG,EAGjB,GAAK33B,GAAK/I,EAAG,GAAK+I,EAAG/I,EACrB,EAAG+I,GAAK/I,EAAG,EAAG+I,EAAG/I,GAGf+I,GAAK/I,EAAG,GAAK+I,EAAG/I,EAAG,EACrB+I,GAAK/I,EAAG,EAAG+I,EAAG/I,EAAG,GAGfA,EAAG,GAAK+I,EAAG/I,EAAG,GAAK+I,GACnB/I,EAAG,EAAG+I,EAAG/I,EAAG,EAAG+I,GAGZ2xB,EAAU,CACf,EAAG,GAAI,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GAC7B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAC7B,GAAI,EAAG,EAAI,GAAI,EAAG,GAAK,GAAI,GAAI,EAC/B,EAAG,EAAG,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAC5B,EAAG,GAAI,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GAC7B,EAAG,GAAI,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GAC7B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAC7B,GAAI,EAAG,EAAI,GAAI,EAAG,GAAK,GAAI,GAAI,EAC/B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,EAC7B,GAAI,EAAG,EAAI,GAAI,EAAG,GAAK,GAAI,GAAI,EAC/B,GAAI,EAAG,GAAK,GAAI,GAAI,EAAI,GAAI,EAAG,GAC/B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAtCO,OAyCrC,cAAOgG,EAAUhG,EAASviB,EAAQwwE,IAE7BtrF,KAAO,uBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRwwE,OAAQA,GA/C4B,E,iDAoDtC,SAAiBj6E,GAEhB,OAAO,IAAImkF,EAAsBnkF,EAAKyJ,OAAQzJ,EAAKi6E,Y,GAxDlB4I,IA8D7BuB,GAAM,IAAI/8E,GACVg9E,GAAQ,IAAIh9E,GACZi9E,GAAU,IAAIj9E,GACdk9E,GAAY,IAAIvnE,GAEhBwnE,G,kDAEL,aAAmD,MAAtCj5E,EAAsC,uDAA3B,KAAMk5E,EAAqB,uDAAJ,EAU9C,GAVkD,qBAElD,gBACK91F,KAAO,gBAEZ,EAAK4sB,WAAa,CACjBhQ,SAAUA,EACVk5E,eAAgBA,GAGC,OAAbl5E,EAAoB,CAgBxB,IAdA,IAAMm5E,EAAkB,EAClB7jE,EAAY/wB,KAAK2B,IAAK,GAAIizF,GAC1BC,EAAe70F,KAAKqE,IAAKtE,GAAU40F,GAEnCG,EAAYr5E,EAASs5E,WACrBC,EAAev5E,EAASgiB,aAAc,YACtCw3D,EAAaH,EAAYA,EAAUriF,MAAQuiF,EAAaviF,MAExDyiF,EAAW,CAAE,EAAG,EAAG,GACnBC,EAAW,CAAE,IAAK,IAAK,KACvBC,EAAS,IAAI5lF,MAAO,GAEpB6lF,EAAW,GACXnzD,EAAW,GACPxiC,EAAI,EAAGA,EAAIu1F,EAAYv1F,GAAK,EAAI,CAEpCo1F,GAEJI,EAAU,GAAMJ,EAAUjuF,KAAMnH,GAChCw1F,EAAU,GAAMJ,EAAUjuF,KAAMnH,EAAI,GACpCw1F,EAAU,GAAMJ,EAAUjuF,KAAMnH,EAAI,KAIpCw1F,EAAU,GAAMx1F,EAChBw1F,EAAU,GAAMx1F,EAAI,EACpBw1F,EAAU,GAAMx1F,EAAI,GAIrB,IAAQuE,EAAYwwF,GAAZxwF,EAAGC,EAASuwF,GAATvwF,EAAGC,EAAMswF,GAANtwF,EAYd,GAXAF,EAAEqpB,oBAAqB0nE,EAAcE,EAAU,IAC/ChxF,EAAEopB,oBAAqB0nE,EAAcE,EAAU,IAC/C/wF,EAAEmpB,oBAAqB0nE,EAAcE,EAAU,IAC/CT,GAAUlnE,UAAWinE,IAGrBY,EAAQ,GAAR,UAAkBp1F,KAAKgG,MAAO/B,EAAE3C,EAAIyvB,GAApC,YAAqD/wB,KAAKgG,MAAO/B,EAAE1C,EAAIwvB,GAAvE,YAAwF/wB,KAAKgG,MAAO/B,EAAEoM,EAAI0gB,IAC1GqkE,EAAQ,GAAR,UAAkBp1F,KAAKgG,MAAO9B,EAAE5C,EAAIyvB,GAApC,YAAqD/wB,KAAKgG,MAAO9B,EAAE3C,EAAIwvB,GAAvE,YAAwF/wB,KAAKgG,MAAO9B,EAAEmM,EAAI0gB,IAC1GqkE,EAAQ,GAAR,UAAkBp1F,KAAKgG,MAAO7B,EAAE7C,EAAIyvB,GAApC,YAAqD/wB,KAAKgG,MAAO7B,EAAE5C,EAAIwvB,GAAvE,YAAwF/wB,KAAKgG,MAAO7B,EAAEkM,EAAI0gB,IAGrGqkE,EAAQ,KAAQA,EAAQ,IAAOA,EAAQ,KAAQA,EAAQ,IAAOA,EAAQ,KAAQA,EAAQ,GAO3F,IAAM,IAAI53E,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAG9B,IAAM83E,GAAU93E,EAAI,GAAM,EACpB+3E,EAAWH,EAAQ53E,GACnBg4E,EAAWJ,EAAQE,GACnBh4E,EAAKm3E,GAAWU,EAAU33E,IAC1B/W,EAAKguF,GAAWU,EAAUG,IAE1B70B,EAAO,GAAH,OAAO80B,EAAP,YAAqBC,GACzBC,EAAc,GAAH,OAAOD,EAAP,YAAqBD,GAEjCE,KAAeJ,GAAYA,EAAUI,IAIpCjB,GAAQrgF,IAAKkhF,EAAUI,GAAcj8E,SAAYq7E,IAErD3yD,EAAShjC,KAAMoe,EAAGhc,EAAGgc,EAAG/b,EAAG+b,EAAGjN,GAC9B6xB,EAAShjC,KAAMuH,EAAGnF,EAAGmF,EAAGlF,EAAGkF,EAAG4J,IAI/BglF,EAAUI,GAAgB,MAEXh1B,KAAQ40B,IAGvBA,EAAU50B,GAAS,CAElBi1B,OAAQR,EAAU13E,GAClBob,OAAQs8D,EAAUI,GAClB97E,OAAQg7E,GAAQliF,WAWpB,IAAM,IAAMrhB,KAAOokG,EAElB,GAAKA,EAAUpkG,GAAQ,CAEtB,MAA2BokG,EAAUpkG,GAA7BykG,EAAR,EAAQA,OAAQ98D,EAAhB,EAAgBA,OAChB07D,GAAIhnE,oBAAqB0nE,EAAcU,GACvCnB,GAAMjnE,oBAAqB0nE,EAAcp8D,GAEzCsJ,EAAShjC,KAAMo1F,GAAIhzF,EAAGgzF,GAAI/yF,EAAG+yF,GAAIjkF,GACjC6xB,EAAShjC,KAAMq1F,GAAMjzF,EAAGizF,GAAMhzF,EAAGgzF,GAAMlkF,GAMzC,EAAKsrB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IAvHpB,S,UAFxB3H,IA+JtBo7D,G,WAEL,aAAc,oBAEb/jG,KAAKiN,KAAO,QAEZjN,KAAKgkG,mBAAqB,I,4CAO3B,WAGC,OADA5wF,QAAQC,KAAM,6CACP,O,wBAOR,SAAYgV,EAAG47E,GAEd,IAAMr0F,EAAI5P,KAAKkkG,eAAgB77E,GAC/B,OAAOroB,KAAKmkG,SAAUv0F,EAAGq0F,K,uBAM1B,WAIC,IAJ0B,IAAhBG,EAAgB,uDAAJ,EAEhBt7E,EAAS,GAELjR,EAAI,EAAGA,GAAKusF,EAAWvsF,IAEhCiR,EAAOxb,KAAMtN,KAAKmkG,SAAUtsF,EAAIusF,IAIjC,OAAOt7E,I,6BAMR,WAIC,IAJgC,IAAhBs7E,EAAgB,uDAAJ,EAEtBt7E,EAAS,GAELjR,EAAI,EAAGA,GAAKusF,EAAWvsF,IAEhCiR,EAAOxb,KAAMtN,KAAKqkG,WAAYxsF,EAAIusF,IAInC,OAAOt7E,I,uBAMR,WAEC,IAAMw7E,EAAUtkG,KAAKukG,aACrB,OAAOD,EAASA,EAAQt2F,OAAS,K,wBAMlC,WAAkD,IAAtCo2F,EAAsC,uDAA1BpkG,KAAKgkG,mBAE5B,GAAKhkG,KAAKwkG,iBACPxkG,KAAKwkG,gBAAgBx2F,SAAWo2F,EAAY,IAC5CpkG,KAAKopC,YAEP,OAAOppC,KAAKwkG,gBAIbxkG,KAAKopC,aAAc,EAEnB,IACIq7D,EADElqE,EAAQ,GACDmqE,EAAO1kG,KAAKmkG,SAAU,GAC/B5tC,EAAM,EAEVh8B,EAAMjtB,KAAM,GAEZ,IAAM,IAAIwV,EAAI,EAAGA,GAAKshF,EAAWthF,IAGhCyzC,IADAkuC,EAAUzkG,KAAKmkG,SAAUrhF,EAAIshF,IACd73E,WAAYm4E,GAC3BnqE,EAAMjtB,KAAMipD,GACZmuC,EAAOD,EAMR,OAFAzkG,KAAKwkG,gBAAkBjqE,EAEhBA,I,8BAIR,WAECv6B,KAAKopC,aAAc,EACnBppC,KAAKukG,e,4BAMN,SAAgBl8E,EAAGiP,GAElB,IAKIqtE,EALEC,EAAa5kG,KAAKukG,aAEpBz2F,EAAI,EACFgT,EAAK8jF,EAAW52F,OAMrB22F,EAFIrtE,GAMcjP,EAAIu8E,EAAY9jF,EAAK,GAQxC,IAFA,IAA4B+jF,EAAxBrzF,EAAM,EAAGC,EAAOqP,EAAK,EAEjBtP,GAAOC,GAMd,IAFAozF,EAAaD,EAFb92F,EAAIM,KAAKgC,MAAOoB,GAAQC,EAAOD,GAAQ,IAERmzF,GAEb,EAEjBnzF,EAAM1D,EAAI,MAEJ,MAAK+2F,EAAa,GAIlB,CAENpzF,EAAO3D,EACP,MALA2D,EAAO3D,EAAI,EAeb,GAAK82F,EAFL92F,EAAI2D,KAEqBkzF,EAExB,OAAO72F,GAAMgT,EAAK,GAMnB,IAAMgkF,EAAeF,EAAY92F,GAajC,OAFYA,GAJc62F,EAAkBG,IANxBF,EAAY92F,EAAI,GAEAg3F,KAQEhkF,EAAK,K,wBAW5C,SAAYlR,EAAGq0F,GAEd,IAAMj+D,EAAQ,KACVtX,EAAK9e,EAAIo2B,EACT++D,EAAKn1F,EAAIo2B,EAIRtX,EAAK,IAAIA,EAAK,GACdq2E,EAAK,IAAIA,EAAK,GAEnB,IAAMC,EAAMhlG,KAAKmkG,SAAUz1E,GACrBu2E,EAAMjlG,KAAKmkG,SAAUY,GAErBz7D,EAAU26D,IAAsBe,EAAIzvF,UAAc,IAAIjC,GAAY,IAAIqS,IAI5E,OAFA2jB,EAAQrsB,KAAMgoF,GAAMt9E,IAAKq9E,GAAMrwF,YAExB20B,I,0BAIR,SAAcjhB,EAAG47E,GAEhB,IAAMr0F,EAAI5P,KAAKkkG,eAAgB77E,GAC/B,OAAOroB,KAAKklG,WAAYt1F,EAAGq0F,K,iCAI5B,SAAqBlE,EAAUoF,GAe9B,IAXA,IAAMv9E,EAAS,IAAIjC,GAEbglB,EAAW,GACXH,EAAU,GACV46D,EAAY,GAEZC,EAAM,IAAI1/E,GACV2/E,EAAM,IAAIv1E,GAINjiB,EAAI,EAAGA,GAAKiyF,EAAUjyF,IAAO,CAEtC,IAAMua,EAAIva,EAAIiyF,EAEdp1D,EAAU78B,GAAM9N,KAAKulG,aAAcl9E,EAAG,IAAI1C,IAO3C6kB,EAAS,GAAM,IAAI7kB,GACnBy/E,EAAW,GAAM,IAAIz/E,GACrB,IAAIvW,EAAMoT,OAAOgjF,UACX5sF,EAAKxK,KAAKgD,IAAKu5B,EAAU,GAAIj7B,GAC7BmJ,EAAKzK,KAAKgD,IAAKu5B,EAAU,GAAIh7B,GAC7B81F,EAAKr3F,KAAKgD,IAAKu5B,EAAU,GAAIlsB,GAE9B7F,GAAMxJ,IAEVA,EAAMwJ,EACNgP,EAAOzU,IAAK,EAAG,EAAG,IAId0F,GAAMzJ,IAEVA,EAAMyJ,EACN+O,EAAOzU,IAAK,EAAG,EAAG,IAIdsyF,GAAMr2F,GAEVwY,EAAOzU,IAAK,EAAG,EAAG,GAInBkyF,EAAIt+E,aAAc4jB,EAAU,GAAK/iB,GAASjT,YAE1C61B,EAAS,GAAIzjB,aAAc4jB,EAAU,GAAK06D,GAC1CD,EAAW,GAAIr+E,aAAc4jB,EAAU,GAAKH,EAAS,IAKrD,IAAM,IAAI18B,EAAI,EAAGA,GAAKiyF,EAAUjyF,IAAO,CAQtC,GANA08B,EAAS18B,GAAM08B,EAAS18B,EAAI,GAAI4S,QAEhC0kF,EAAWt3F,GAAMs3F,EAAWt3F,EAAI,GAAI4S,QAEpC2kF,EAAIt+E,aAAc4jB,EAAU78B,EAAI,GAAK68B,EAAU78B,IAE1Cu3F,EAAIr3F,SAAWwU,OAAOC,QAAU,CAEpC4iF,EAAI1wF,YAEJ,IAAMwE,EAAQ/K,KAAKsQ,KAAMvP,GAAOw7B,EAAU78B,EAAI,GAAIyU,IAAKooB,EAAU78B,KAAS,EAAG,IAE7E08B,EAAS18B,GAAI4Y,aAAc4+E,EAAII,iBAAkBL,EAAKlsF,IAIvDisF,EAAWt3F,GAAIiZ,aAAc4jB,EAAU78B,GAAK08B,EAAS18B,IAMtD,IAAgB,IAAXq3F,EAAkB,CAEtB,IAAIhsF,EAAQ/K,KAAKsQ,KAAMvP,GAAOq7B,EAAS,GAAIjoB,IAAKioB,EAASu1D,KAAgB,EAAG,IAC5E5mF,GAAS4mF,EAEJp1D,EAAU,GAAIpoB,IAAK8iF,EAAIt+E,aAAcyjB,EAAS,GAAKA,EAASu1D,KAAiB,IAEjF5mF,GAAUA,GAIX,IAAM,IAAIrL,EAAI,EAAGA,GAAKiyF,EAAUjyF,IAG/B08B,EAAS18B,GAAI4Y,aAAc4+E,EAAII,iBAAkB/6D,EAAU78B,GAAKqL,EAAQrL,IACxEs3F,EAAWt3F,GAAIiZ,aAAc4jB,EAAU78B,GAAK08B,EAAS18B,IAMvD,MAAO,CACN68B,SAAUA,EACVH,QAASA,EACT46D,UAAWA,K,mBAKb,WAEC,OAAO,IAAIplG,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMkd,GAIL,OAFAld,KAAKgkG,mBAAqB9mF,EAAO8mF,mBAE1BhkG,O,oBAIR,WAEC,IAAMse,EAAO,CACZf,SAAU,CACTV,QAAS,IACT5P,KAAM,QACNuQ,UAAW,iBAOb,OAHAc,EAAK0lF,mBAAqBhkG,KAAKgkG,mBAC/B1lF,EAAKrR,KAAOjN,KAAKiN,KAEVqR,I,sBAIR,SAAUo+E,GAIT,OAFA18F,KAAKgkG,mBAAqBtH,EAAKsH,mBAExBhkG,S,KAMH2lG,G,kDAEL,aAAqI,MAAxHC,EAAwH,uDAAnH,EAAGC,EAAgH,uDAA3G,EAAGC,EAAwG,uDAA9F,EAAGC,EAA2F,uDAAjF,EAAGC,EAA8E,uDAAhE,EAAGC,EAA6D,uDAAvC,EAAV73F,KAAKC,GAAQ63F,EAAoC,wDAAhBC,EAAgB,uDAAJ,EAAI,4BAEpI,gBAEKl5F,KAAO,eAEZ,EAAK24F,GAAKA,EACV,EAAKC,GAAKA,EAEV,EAAKC,QAAUA,EACf,EAAKC,QAAUA,EAEf,EAAKC,YAAcA,EACnB,EAAKC,UAAYA,EAEjB,EAAKC,WAAaA,EAElB,EAAKC,UAAYA,EAjBmH,E,4CAqBrI,SAAUv2F,EAAGq0F,GASZ,IAPA,IAAMx6E,EAAQw6E,GAAkB,IAAI3wF,GAE9B8yF,EAAkB,EAAVh4F,KAAKC,GACfg4F,EAAarmG,KAAKimG,UAAYjmG,KAAKgmG,YACjCM,EAAal4F,KAAKgD,IAAKi1F,GAAe7jF,OAAOC,QAG3C4jF,EAAa,GAAIA,GAAcD,EACvC,KAAQC,EAAaD,GAAQC,GAAcD,EAEtCC,EAAa7jF,OAAOC,UAIvB4jF,EAFIC,EAES,EAIAF,IAMU,IAApBpmG,KAAKkmG,YAAyBI,IAE7BD,IAAeD,EAEnBC,GAAeD,EAIfC,GAA0BD,GAM5B,IAAM9xF,EAAQtU,KAAKgmG,YAAcp2F,EAAIy2F,EACjC32F,EAAI1P,KAAK4lG,GAAK5lG,KAAK8lG,QAAU13F,KAAKqE,IAAK6B,GACvC3E,EAAI3P,KAAK6lG,GAAK7lG,KAAK+lG,QAAU33F,KAAKsE,IAAK4B,GAE3C,GAAwB,IAAnBtU,KAAKmmG,UAAkB,CAE3B,IAAM1zF,EAAMrE,KAAKqE,IAAKzS,KAAKmmG,WACrBzzF,EAAMtE,KAAKsE,IAAK1S,KAAKmmG,WAErBvtF,EAAKlJ,EAAI1P,KAAK4lG,GACd/sF,EAAKlJ,EAAI3P,KAAK6lG,GAGpBn2F,EAAIkJ,EAAKnG,EAAMoG,EAAKnG,EAAM1S,KAAK4lG,GAC/Bj2F,EAAIiJ,EAAKlG,EAAMmG,EAAKpG,EAAMzS,KAAK6lG,GAIhC,OAAOp8E,EAAMtW,IAAKzD,EAAGC,K,kBAItB,SAAMuN,GAiBL,OAfA,4DAAYA,GAEZld,KAAK4lG,GAAK1oF,EAAO0oF,GACjB5lG,KAAK6lG,GAAK3oF,EAAO2oF,GAEjB7lG,KAAK8lG,QAAU5oF,EAAO4oF,QACtB9lG,KAAK+lG,QAAU7oF,EAAO6oF,QAEtB/lG,KAAKgmG,YAAc9oF,EAAO8oF,YAC1BhmG,KAAKimG,UAAY/oF,EAAO+oF,UAExBjmG,KAAKkmG,WAAahpF,EAAOgpF,WAEzBlmG,KAAKmmG,UAAYjpF,EAAOipF,UAEjBnmG,O,oBAIR,WAEC,IAAMse,EAAO,+DAeb,OAbAA,EAAKsnF,GAAK5lG,KAAK4lG,GACftnF,EAAKunF,GAAK7lG,KAAK6lG,GAEfvnF,EAAKwnF,QAAU9lG,KAAK8lG,QACpBxnF,EAAKynF,QAAU/lG,KAAK+lG,QAEpBznF,EAAK0nF,YAAchmG,KAAKgmG,YACxB1nF,EAAK2nF,UAAYjmG,KAAKimG,UAEtB3nF,EAAK4nF,WAAalmG,KAAKkmG,WAEvB5nF,EAAK6nF,UAAYnmG,KAAKmmG,UAEf7nF,I,sBAIR,SAAUo+E,GAiBT,OAfA,gEAAgBA,GAEhB18F,KAAK4lG,GAAKlJ,EAAKkJ,GACf5lG,KAAK6lG,GAAKnJ,EAAKmJ,GAEf7lG,KAAK8lG,QAAUpJ,EAAKoJ,QACpB9lG,KAAK+lG,QAAUrJ,EAAKqJ,QAEpB/lG,KAAKgmG,YAActJ,EAAKsJ,YACxBhmG,KAAKimG,UAAYvJ,EAAKuJ,UAEtBjmG,KAAKkmG,WAAaxJ,EAAKwJ,WAEvBlmG,KAAKmmG,UAAYzJ,EAAKyJ,UAEfnmG,S,GAhJkB+jG,IAsJ3B4B,GAAarwF,UAAUixF,gBAAiB,E,IAElCC,G,kDAEL,WAAaZ,EAAIC,EAAIY,EAAST,EAAaC,EAAWC,GAAa,kCAElE,cAAON,EAAIC,EAAIY,EAASA,EAAST,EAAaC,EAAWC,IAEpDj5F,KAAO,WAJsD,E,UAF7C04F,IAkCvB,SAASe,KAER,IAAIC,EAAK,EAAG7kF,EAAK,EAAGnP,EAAK,EAAGoP,EAAK,EAUjC,SAASyuC,EAAM1rC,EAAII,EAAIuJ,EAAIC,GAE1Bi4E,EAAK7hF,EACLhD,EAAK2M,EACL9b,GAAO,EAAImS,EAAK,EAAII,EAAK,EAAIuJ,EAAKC,EAClC3M,EAAK,EAAI+C,EAAK,EAAII,EAAKuJ,EAAKC,EAI7B,MAAO,CAENk4E,eAAgB,SAAW9hF,EAAII,EAAI+N,EAAI4zE,EAAIC,GAE1Ct2C,EAAMtrC,EAAI+N,EAAI6zE,GAAY7zE,EAAKnO,GAAMgiF,GAAYD,EAAK3hF,KAIvD6hF,yBAA0B,SAAWjiF,EAAII,EAAI+N,EAAI4zE,EAAIG,EAAKC,EAAKC,GAG9D,IAAIx4E,GAAOxJ,EAAKJ,GAAOkiF,GAAQ/zE,EAAKnO,IAASkiF,EAAMC,IAAUh0E,EAAK/N,GAAO+hF,EACrElC,GAAO9xE,EAAK/N,GAAO+hF,GAAQJ,EAAK3hF,IAAS+hF,EAAMC,IAAUL,EAAK5zE,GAAOi0E,EAMzE12C,EAAMtrC,EAAI+N,EAHVvE,GAAMu4E,EACNlC,GAAMkC,IAMPE,KAAM,SAAWv3F,GAEhB,IAAMm1F,EAAKn1F,EAAIA,EAEf,OAAO+2F,EAAK7kF,EAAKlS,EAAI+C,EAAKoyF,EAAKhjF,GADpBgjF,EAAKn1F,KApEnB42F,GAASlxF,UAAU8xF,YAAa,EA+EhC,IAAM9uF,GAAM,IAAIqN,GACV0hF,GAAK,IAAIX,GAAaY,GAAK,IAAIZ,GAAaa,GAAK,IAAIb,GAErDc,G,kDAEL,aAAqF,MAAxE1+E,EAAwE,uDAA/D,GAAIq8E,EAA2D,wDAA3CsC,EAA2C,uDAA/B,cAAeX,EAAgB,uDAAN,GAAM,4BAEpF,gBAEK75F,KAAO,mBAEZ,EAAK6b,OAASA,EACd,EAAKq8E,OAASA,EACd,EAAKsC,UAAYA,EACjB,EAAKX,QAAUA,EATqE,E,4CAarF,SAAUl3F,GAAoC,IAsBzCic,EAAIuR,EAtBI6mE,EAAiC,uDAAhB,IAAIt+E,GAE3B8D,EAAQw6E,EAERn7E,EAAS9oB,KAAK8oB,OACd/a,EAAI+a,EAAO9a,OAEX8U,GAAM/U,GAAM/N,KAAKmlG,OAAS,EAAI,IAAQv1F,EACxC83F,EAAWt5F,KAAKgC,MAAO0S,GACvB0zC,EAAS1zC,EAAI4kF,EAEZ1nG,KAAKmlG,OAETuC,GAAYA,EAAW,EAAI,GAAMt5F,KAAKgC,MAAOhC,KAAKgD,IAAKs2F,GAAa35F,GAAM,GAAMA,EAE1D,IAAXyoD,GAAgBkxC,IAAa35F,EAAI,IAE5C25F,EAAW35F,EAAI,EACfyoD,EAAS,GAMLx2D,KAAKmlG,QAAUuC,EAAW,EAE9B77E,EAAK/C,GAAU4+E,EAAW,GAAM35F,IAKhCuK,GAAIzE,WAAYiV,EAAQ,GAAKA,EAAQ,IAAMM,IAAKN,EAAQ,IACxD+C,EAAKvT,IAIN,IAAMwT,EAAKhD,EAAQ4+E,EAAW35F,GACxBge,EAAKjD,GAAU4+E,EAAW,GAAM35F,GActC,GAZK/N,KAAKmlG,QAAUuC,EAAW,EAAI35F,EAElCqvB,EAAKtU,GAAU4+E,EAAW,GAAM35F,IAKhCuK,GAAIzE,WAAYiV,EAAQ/a,EAAI,GAAK+a,EAAQ/a,EAAI,IAAMqb,IAAKN,EAAQ/a,EAAI,IACpEqvB,EAAK9kB,IAIkB,gBAAnBtY,KAAKynG,WAAkD,YAAnBznG,KAAKynG,UAA0B,CAGvE,IAAM13F,EAAyB,YAAnB/P,KAAKynG,UAA0B,GAAM,IAC7CT,EAAM54F,KAAK2B,IAAK8b,EAAGrX,kBAAmBsX,GAAM/b,GAC5Ck3F,EAAM74F,KAAK2B,IAAK+b,EAAGtX,kBAAmBuX,GAAMhc,GAC5Cm3F,EAAM94F,KAAK2B,IAAKgc,EAAGvX,kBAAmB4oB,GAAMrtB,GAG3Ck3F,EAAM,OAAOA,EAAM,GACnBD,EAAM,OAAOA,EAAMC,GACnBC,EAAM,OAAOA,EAAMD,GAExBI,GAAGN,yBAA0Bl7E,EAAGnc,EAAGoc,EAAGpc,EAAGqc,EAAGrc,EAAG0tB,EAAG1tB,EAAGs3F,EAAKC,EAAKC,GAC/DI,GAAGP,yBAA0Bl7E,EAAGlc,EAAGmc,EAAGnc,EAAGoc,EAAGpc,EAAGytB,EAAGztB,EAAGq3F,EAAKC,EAAKC,GAC/DK,GAAGR,yBAA0Bl7E,EAAGpN,EAAGqN,EAAGrN,EAAGsN,EAAGtN,EAAG2e,EAAG3e,EAAGuoF,EAAKC,EAAKC,OAEjC,eAAnBlnG,KAAKynG,YAEhBJ,GAAGT,eAAgB/6E,EAAGnc,EAAGoc,EAAGpc,EAAGqc,EAAGrc,EAAG0tB,EAAG1tB,EAAG1P,KAAK8mG,SAChDQ,GAAGV,eAAgB/6E,EAAGlc,EAAGmc,EAAGnc,EAAGoc,EAAGpc,EAAGytB,EAAGztB,EAAG3P,KAAK8mG,SAChDS,GAAGX,eAAgB/6E,EAAGpN,EAAGqN,EAAGrN,EAAGsN,EAAGtN,EAAG2e,EAAG3e,EAAGze,KAAK8mG,UAUjD,OANAr9E,EAAMtW,IACLk0F,GAAGF,KAAM3wC,GACT8wC,GAAGH,KAAM3wC,GACT+wC,GAAGJ,KAAM3wC,IAGH/sC,I,kBAIR,SAAMvM,GAEL,4DAAYA,GAEZld,KAAK8oB,OAAS,GAEd,IAAM,IAAIhb,EAAI,EAAGC,EAAImP,EAAO4L,OAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAExD,IAAM2b,EAAQvM,EAAO4L,OAAQhb,GAE7B9N,KAAK8oB,OAAOxb,KAAMmc,EAAM/I,SAQzB,OAJA1gB,KAAKmlG,OAASjoF,EAAOioF,OACrBnlG,KAAKynG,UAAYvqF,EAAOuqF,UACxBznG,KAAK8mG,QAAU5pF,EAAO4pF,QAEf9mG,O,oBAIR,WAEC,IAAMse,EAAO,+DAEbA,EAAKwK,OAAS,GAEd,IAAM,IAAIhb,EAAI,EAAGC,EAAI/N,KAAK8oB,OAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAEtD,IAAM2b,EAAQzpB,KAAK8oB,OAAQhb,GAC3BwQ,EAAKwK,OAAOxb,KAAMmc,EAAMyP,WAQzB,OAJA5a,EAAK6mF,OAASnlG,KAAKmlG,OACnB7mF,EAAKmpF,UAAYznG,KAAKynG,UACtBnpF,EAAKwoF,QAAU9mG,KAAK8mG,QAEbxoF,I,sBAIR,SAAUo+E,GAET,gEAAgBA,GAEhB18F,KAAK8oB,OAAS,GAEd,IAAM,IAAIhb,EAAI,EAAGC,EAAI2uF,EAAK5zE,OAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAEtD,IAAM2b,EAAQizE,EAAK5zE,OAAQhb,GAC3B9N,KAAK8oB,OAAOxb,MAAM,IAAIqY,IAAUtM,UAAWoQ,IAQ5C,OAJAzpB,KAAKmlG,OAASzI,EAAKyI,OACnBnlG,KAAKynG,UAAY/K,EAAK+K,UACtBznG,KAAK8mG,QAAUpK,EAAKoK,QAEb9mG,S,GAjKsB+jG,IA8K/B,SAAS4D,GAAY/3F,EAAGic,EAAIC,EAAIC,EAAIqR,GAEnC,IAAM1R,EAAmB,IAAZK,EAAKF,GACZhX,EAAmB,IAAZuoB,EAAKtR,GACZi5E,EAAKn1F,EAAIA,EAEf,OAAS,EAAIkc,EAAK,EAAIC,EAAKL,EAAK7W,IADrBjF,EAAIm1F,KACiC,EAAIj5E,EAAK,EAAIC,EAAK,EAAIL,EAAK7W,GAAOkwF,EAAKr5E,EAAK9b,EAAIkc,EAyBjG,SAAS87E,GAAiBh4F,EAAGic,EAAIC,EAAIC,GAEpC,OArBD,SAA4Bnc,EAAGkT,GAE9B,IAAMyxD,EAAI,EAAI3kE,EACd,OAAO2kE,EAAIA,EAAIzxD,EAkBR+kF,CAAmBj4F,EAAGic,GAd9B,SAA4Bjc,EAAGkT,GAE9B,OAAO,GAAM,EAAIlT,GAAMA,EAAIkT,EAYSglF,CAAmBl4F,EAAGkc,GAR3D,SAA4Blc,EAAGkT,GAE9B,OAAOlT,EAAIA,EAAIkT,EAOdilF,CAAmBn4F,EAAGmc,GAgCxB,SAASi8E,GAAap4F,EAAGic,EAAIC,EAAIC,EAAIqR,GAEpC,OA5BD,SAAwBxtB,EAAGkT,GAE1B,IAAMyxD,EAAI,EAAI3kE,EACd,OAAO2kE,EAAIA,EAAIA,EAAIzxD,EAyBZmlF,CAAer4F,EAAGic,GArB1B,SAAwBjc,EAAGkT,GAE1B,IAAMyxD,EAAI,EAAI3kE,EACd,OAAO,EAAI2kE,EAAIA,EAAI3kE,EAAIkT,EAkBSolF,CAAet4F,EAAGkc,GAdnD,SAAwBlc,EAAGkT,GAE1B,OAAO,GAAM,EAAIlT,GAAMA,EAAIA,EAAIkT,EAY0BqlF,CAAev4F,EAAGmc,GAR5E,SAAwBnc,EAAGkT,GAE1B,OAAOlT,EAAIA,EAAIA,EAAIkT,EAOlBslF,CAAex4F,EAAGwtB,GA5EpBoqE,GAAiBlyF,UAAU+yF,oBAAqB,E,IAgF1CC,G,kDAEL,aAA8F,MAAjF58E,EAAiF,uDAA5E,IAAIpY,GAAWuB,EAA6D,uDAAxD,IAAIvB,GAAWwB,EAAyC,uDAApC,IAAIxB,GAAWi1F,EAAqB,uDAAhB,IAAIj1F,GAAY,4BAE7F,gBAEKrG,KAAO,mBAEZ,EAAKye,GAAKA,EACV,EAAK7W,GAAKA,EACV,EAAKC,GAAKA,EACV,EAAKyzF,GAAKA,EATmF,E,4CAa9F,SAAU34F,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAI3wF,GAE3BmW,EAAQw6E,EAERv4E,EAAK1rB,KAAK0rB,GAAI7W,EAAK7U,KAAK6U,GAAIC,EAAK9U,KAAK8U,GAAIyzF,EAAKvoG,KAAKuoG,GAO1D,OALA9+E,EAAMtW,IACL60F,GAAap4F,EAAG8b,EAAGhc,EAAGmF,EAAGnF,EAAGoF,EAAGpF,EAAG64F,EAAG74F,GACrCs4F,GAAap4F,EAAG8b,EAAG/b,EAAGkF,EAAGlF,EAAGmF,EAAGnF,EAAG44F,EAAG54F,IAG/B8Z,I,kBAIR,SAAMvM,GASL,OAPA,4DAAYA,GAEZld,KAAK0rB,GAAGzO,KAAMC,EAAOwO,IACrB1rB,KAAK6U,GAAGoI,KAAMC,EAAOrI,IACrB7U,KAAK8U,GAAGmI,KAAMC,EAAOpI,IACrB9U,KAAKuoG,GAAGtrF,KAAMC,EAAOqrF,IAEdvoG,O,oBAIR,WAEC,IAAMse,EAAO,+DAOb,OALAA,EAAKoN,GAAK1rB,KAAK0rB,GAAGwN,UAClB5a,EAAKzJ,GAAK7U,KAAK6U,GAAGqkB,UAClB5a,EAAKxJ,GAAK9U,KAAK8U,GAAGokB,UAClB5a,EAAKiqF,GAAKvoG,KAAKuoG,GAAGrvE,UAEX5a,I,sBAIR,SAAUo+E,GAST,OAPA,gEAAgBA,GAEhB18F,KAAK0rB,GAAGrS,UAAWqjF,EAAKhxE,IACxB1rB,KAAK6U,GAAGwE,UAAWqjF,EAAK7nF,IACxB7U,KAAK8U,GAAGuE,UAAWqjF,EAAK5nF,IACxB9U,KAAKuoG,GAAGlvF,UAAWqjF,EAAK6L,IAEjBvoG,S,GAjEsB+jG,IAuE/BuE,GAAiBhzF,UAAUkzF,oBAAqB,E,IAE1CC,G,kDAEL,aAA8F,MAAjF/8E,EAAiF,uDAA5E,IAAI/F,GAAW9Q,EAA6D,uDAAxD,IAAI8Q,GAAW7Q,EAAyC,uDAApC,IAAI6Q,GAAW4iF,EAAqB,uDAAhB,IAAI5iF,GAAY,4BAE7F,gBAEK1Y,KAAO,oBAEZ,EAAKye,GAAKA,EACV,EAAK7W,GAAKA,EACV,EAAKC,GAAKA,EACV,EAAKyzF,GAAKA,EATmF,E,4CAa9F,SAAU34F,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAIt+E,GAE3B8D,EAAQw6E,EAERv4E,EAAK1rB,KAAK0rB,GAAI7W,EAAK7U,KAAK6U,GAAIC,EAAK9U,KAAK8U,GAAIyzF,EAAKvoG,KAAKuoG,GAQ1D,OANA9+E,EAAMtW,IACL60F,GAAap4F,EAAG8b,EAAGhc,EAAGmF,EAAGnF,EAAGoF,EAAGpF,EAAG64F,EAAG74F,GACrCs4F,GAAap4F,EAAG8b,EAAG/b,EAAGkF,EAAGlF,EAAGmF,EAAGnF,EAAG44F,EAAG54F,GACrCq4F,GAAap4F,EAAG8b,EAAGjN,EAAG5J,EAAG4J,EAAG3J,EAAG2J,EAAG8pF,EAAG9pF,IAG/BgL,I,kBAIR,SAAMvM,GASL,OAPA,4DAAYA,GAEZld,KAAK0rB,GAAGzO,KAAMC,EAAOwO,IACrB1rB,KAAK6U,GAAGoI,KAAMC,EAAOrI,IACrB7U,KAAK8U,GAAGmI,KAAMC,EAAOpI,IACrB9U,KAAKuoG,GAAGtrF,KAAMC,EAAOqrF,IAEdvoG,O,oBAIR,WAEC,IAAMse,EAAO,+DAOb,OALAA,EAAKoN,GAAK1rB,KAAK0rB,GAAGwN,UAClB5a,EAAKzJ,GAAK7U,KAAK6U,GAAGqkB,UAClB5a,EAAKxJ,GAAK9U,KAAK8U,GAAGokB,UAClB5a,EAAKiqF,GAAKvoG,KAAKuoG,GAAGrvE,UAEX5a,I,sBAIR,SAAUo+E,GAST,OAPA,gEAAgBA,GAEhB18F,KAAK0rB,GAAGrS,UAAWqjF,EAAKhxE,IACxB1rB,KAAK6U,GAAGwE,UAAWqjF,EAAK7nF,IACxB7U,KAAK8U,GAAGuE,UAAWqjF,EAAK5nF,IACxB9U,KAAKuoG,GAAGlvF,UAAWqjF,EAAK6L,IAEjBvoG,S,GAlEuB+jG,IAwEhC0E,GAAkBnzF,UAAUozF,qBAAsB,E,IAE5CC,G,kDAEL,aAAsD,MAAzC9zF,EAAyC,uDAApC,IAAIvB,GAAWwB,EAAqB,uDAAhB,IAAIxB,GAAY,4BAErD,gBAEKrG,KAAO,YAEZ,EAAK4H,GAAKA,EACV,EAAKC,GAAKA,EAP2C,E,4CAWtD,SAAUlF,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAI3wF,GAE3BmW,EAAQw6E,EAad,OAXW,IAANr0F,EAEJ6Z,EAAMxM,KAAMjd,KAAK8U,KAIjB2U,EAAMxM,KAAMjd,KAAK8U,IAAK6S,IAAK3nB,KAAK6U,IAChC4U,EAAM3V,eAAgBlE,GAAIwZ,IAAKppB,KAAK6U,KAI9B4U,I,wBAKR,SAAYpB,EAAG47E,GAEd,OAAOjkG,KAAKmkG,SAAU97E,EAAG47E,K,wBAI1B,SAAYr0F,EAAGq0F,GAEd,IAAM36D,EAAU26D,GAAkB,IAAI3wF,GAItC,OAFAg2B,EAAQrsB,KAAMjd,KAAK8U,IAAK6S,IAAK3nB,KAAK6U,IAAKF,YAEhC20B,I,kBAIR,SAAMpsB,GAOL,OALA,4DAAYA,GAEZld,KAAK6U,GAAGoI,KAAMC,EAAOrI,IACrB7U,KAAK8U,GAAGmI,KAAMC,EAAOpI,IAEd9U,O,oBAIR,WAEC,IAAMse,EAAO,+DAKb,OAHAA,EAAKzJ,GAAK7U,KAAK6U,GAAGqkB,UAClB5a,EAAKxJ,GAAK9U,KAAK8U,GAAGokB,UAEX5a,I,sBAIR,SAAUo+E,GAOT,OALA,gEAAgBA,GAEhB18F,KAAK6U,GAAGwE,UAAWqjF,EAAK7nF,IACxB7U,KAAK8U,GAAGuE,UAAWqjF,EAAK5nF,IAEjB9U,S,GA9Ee+jG,IAoFxB4E,GAAUrzF,UAAUszF,aAAc,E,IAE5BC,G,kDAEL,aAAsD,MAAzCh0F,EAAyC,uDAApC,IAAI8Q,GAAW7Q,EAAqB,uDAAhB,IAAI6Q,GAAY,4BAErD,gBAEK1Y,KAAO,aACZ,EAAK67F,cAAe,EAEpB,EAAKj0F,GAAKA,EACV,EAAKC,GAAKA,EAR2C,E,4CAWtD,SAAUlF,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAIt+E,GAE3B8D,EAAQw6E,EAad,OAXW,IAANr0F,EAEJ6Z,EAAMxM,KAAMjd,KAAK8U,KAIjB2U,EAAMxM,KAAMjd,KAAK8U,IAAK6S,IAAK3nB,KAAK6U,IAChC4U,EAAM3V,eAAgBlE,GAAIwZ,IAAKppB,KAAK6U,KAI9B4U,I,wBAIR,SAAYpB,EAAG47E,GAEd,OAAOjkG,KAAKmkG,SAAU97E,EAAG47E,K,kBAG1B,SAAM/mF,GAOL,OALA,4DAAYA,GAEZld,KAAK6U,GAAGoI,KAAMC,EAAOrI,IACrB7U,KAAK8U,GAAGmI,KAAMC,EAAOpI,IAEd9U,O,oBAGR,WAEC,IAAMse,EAAO,+DAKb,OAHAA,EAAKzJ,GAAK7U,KAAK6U,GAAGqkB,UAClB5a,EAAKxJ,GAAK9U,KAAK8U,GAAGokB,UAEX5a,I,sBAGR,SAAUo+E,GAOT,OALA,gEAAgBA,GAEhB18F,KAAK6U,GAAGwE,UAAWqjF,EAAK7nF,IACxB7U,KAAK8U,GAAGuE,UAAWqjF,EAAK5nF,IAEjB9U,S,GAhEgB+jG,IAsEnBgF,G,kDAEL,aAA0E,MAA7Dr9E,EAA6D,uDAAxD,IAAIpY,GAAWuB,EAAyC,uDAApC,IAAIvB,GAAWwB,EAAqB,uDAAhB,IAAIxB,GAAY,4BAEzE,gBAEKrG,KAAO,uBAEZ,EAAKye,GAAKA,EACV,EAAK7W,GAAKA,EACV,EAAKC,GAAKA,EAR+D,E,4CAY1E,SAAUlF,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAI3wF,GAE3BmW,EAAQw6E,EAERv4E,EAAK1rB,KAAK0rB,GAAI7W,EAAK7U,KAAK6U,GAAIC,EAAK9U,KAAK8U,GAO5C,OALA2U,EAAMtW,IACLy0F,GAAiBh4F,EAAG8b,EAAGhc,EAAGmF,EAAGnF,EAAGoF,EAAGpF,GACnCk4F,GAAiBh4F,EAAG8b,EAAG/b,EAAGkF,EAAGlF,EAAGmF,EAAGnF,IAG7B8Z,I,kBAIR,SAAMvM,GAQL,OANA,4DAAYA,GAEZld,KAAK0rB,GAAGzO,KAAMC,EAAOwO,IACrB1rB,KAAK6U,GAAGoI,KAAMC,EAAOrI,IACrB7U,KAAK8U,GAAGmI,KAAMC,EAAOpI,IAEd9U,O,oBAIR,WAEC,IAAMse,EAAO,+DAMb,OAJAA,EAAKoN,GAAK1rB,KAAK0rB,GAAGwN,UAClB5a,EAAKzJ,GAAK7U,KAAK6U,GAAGqkB,UAClB5a,EAAKxJ,GAAK9U,KAAK8U,GAAGokB,UAEX5a,I,sBAIR,SAAUo+E,GAQT,OANA,gEAAgBA,GAEhB18F,KAAK0rB,GAAGrS,UAAWqjF,EAAKhxE,IACxB1rB,KAAK6U,GAAGwE,UAAWqjF,EAAK7nF,IACxB7U,KAAK8U,GAAGuE,UAAWqjF,EAAK5nF,IAEjB9U,S,GA7D0B+jG,IAmEnCgF,GAAqBzzF,UAAU0zF,wBAAyB,E,IAElDC,G,kDAEL,aAA0E,MAA7Dv9E,EAA6D,uDAAxD,IAAI/F,GAAW9Q,EAAyC,uDAApC,IAAI8Q,GAAW7Q,EAAqB,uDAAhB,IAAI6Q,GAAY,4BAEzE,gBAEK1Y,KAAO,wBAEZ,EAAKye,GAAKA,EACV,EAAK7W,GAAKA,EACV,EAAKC,GAAKA,EAR+D,E,4CAY1E,SAAUlF,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAIt+E,GAE3B8D,EAAQw6E,EAERv4E,EAAK1rB,KAAK0rB,GAAI7W,EAAK7U,KAAK6U,GAAIC,EAAK9U,KAAK8U,GAQ5C,OANA2U,EAAMtW,IACLy0F,GAAiBh4F,EAAG8b,EAAGhc,EAAGmF,EAAGnF,EAAGoF,EAAGpF,GACnCk4F,GAAiBh4F,EAAG8b,EAAG/b,EAAGkF,EAAGlF,EAAGmF,EAAGnF,GACnCi4F,GAAiBh4F,EAAG8b,EAAGjN,EAAG5J,EAAG4J,EAAG3J,EAAG2J,IAG7BgL,I,kBAIR,SAAMvM,GAQL,OANA,4DAAYA,GAEZld,KAAK0rB,GAAGzO,KAAMC,EAAOwO,IACrB1rB,KAAK6U,GAAGoI,KAAMC,EAAOrI,IACrB7U,KAAK8U,GAAGmI,KAAMC,EAAOpI,IAEd9U,O,oBAIR,WAEC,IAAMse,EAAO,+DAMb,OAJAA,EAAKoN,GAAK1rB,KAAK0rB,GAAGwN,UAClB5a,EAAKzJ,GAAK7U,KAAK6U,GAAGqkB,UAClB5a,EAAKxJ,GAAK9U,KAAK8U,GAAGokB,UAEX5a,I,sBAIR,SAAUo+E,GAQT,OANA,gEAAgBA,GAEhB18F,KAAK0rB,GAAGrS,UAAWqjF,EAAKhxE,IACxB1rB,KAAK6U,GAAGwE,UAAWqjF,EAAK7nF,IACxB7U,KAAK8U,GAAGuE,UAAWqjF,EAAK5nF,IAEjB9U,S,GA9D2B+jG,IAoEpCkF,GAAsB3zF,UAAU4zF,yBAA0B,E,IAEpDC,G,kDAEL,aAA2B,MAAdrgF,EAAc,uDAAL,GAAK,4BAE1B,gBAEK7b,KAAO,cAEZ,EAAK6b,OAASA,EANY,E,4CAU3B,SAAUlZ,GAAoC,IAAjCq0F,EAAiC,uDAAhB,IAAI3wF,GAE3BmW,EAAQw6E,EAERn7E,EAAS9oB,KAAK8oB,OACdhG,GAAMgG,EAAO9a,OAAS,GAAM4B,EAE5B83F,EAAWt5F,KAAKgC,MAAO0S,GACvB0zC,EAAS1zC,EAAI4kF,EAEb77E,EAAK/C,EAAqB,IAAb4+E,EAAiBA,EAAWA,EAAW,GACpD57E,EAAKhD,EAAQ4+E,GACb37E,EAAKjD,EAAQ4+E,EAAW5+E,EAAO9a,OAAS,EAAI8a,EAAO9a,OAAS,EAAI05F,EAAW,GAC3EtqE,EAAKtU,EAAQ4+E,EAAW5+E,EAAO9a,OAAS,EAAI8a,EAAO9a,OAAS,EAAI05F,EAAW,GAOjF,OALAj+E,EAAMtW,IACLw0F,GAAYnxC,EAAQ3qC,EAAGnc,EAAGoc,EAAGpc,EAAGqc,EAAGrc,EAAG0tB,EAAG1tB,GACzCi4F,GAAYnxC,EAAQ3qC,EAAGlc,EAAGmc,EAAGnc,EAAGoc,EAAGpc,EAAGytB,EAAGztB,IAGnC8Z,I,kBAIR,SAAMvM,GAEL,4DAAYA,GAEZld,KAAK8oB,OAAS,GAEd,IAAM,IAAIhb,EAAI,EAAGC,EAAImP,EAAO4L,OAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAExD,IAAM2b,EAAQvM,EAAO4L,OAAQhb,GAE7B9N,KAAK8oB,OAAOxb,KAAMmc,EAAM/I,SAIzB,OAAO1gB,O,oBAIR,WAEC,IAAMse,EAAO,+DAEbA,EAAKwK,OAAS,GAEd,IAAM,IAAIhb,EAAI,EAAGC,EAAI/N,KAAK8oB,OAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAEtD,IAAM2b,EAAQzpB,KAAK8oB,OAAQhb,GAC3BwQ,EAAKwK,OAAOxb,KAAMmc,EAAMyP,WAIzB,OAAO5a,I,sBAIR,SAAUo+E,GAET,gEAAgBA,GAEhB18F,KAAK8oB,OAAS,GAEd,IAAM,IAAIhb,EAAI,EAAGC,EAAI2uF,EAAK5zE,OAAO9a,OAAQF,EAAIC,EAAGD,IAAO,CAEtD,IAAM2b,EAAQizE,EAAK5zE,OAAQhb,GAC3B9N,KAAK8oB,OAAOxb,MAAM,IAAIgG,IAAU+F,UAAWoQ,IAI5C,OAAOzpB,S,GApFiB+jG,IA0F1BoF,GAAY7zF,UAAU8zF,eAAgB,EAEtC,IAAIC,GAAsB/4F,OAAOC,OAAO,CACvCC,UAAW,KACXg2F,SAAUA,GACVgB,iBAAkBA,GAClBc,iBAAkBA,GAClBG,kBAAmBA,GACnB9C,aAAcA,GACdgD,UAAWA,GACXE,WAAYA,GACZE,qBAAsBA,GACtBE,sBAAuBA,GACvBE,YAAaA,KAQRG,G,kDAEL,aAAc,kCAEb,gBAEKr8F,KAAO,YAEZ,EAAKs8F,OAAS,GACd,EAAKC,WAAY,EAPJ,E,uCAWd,SAAKC,GAEJzpG,KAAKupG,OAAOj8F,KAAMm8F,K,uBAInB,WAGC,IAAMC,EAAa1pG,KAAKupG,OAAQ,GAAIpF,SAAU,GACxCwF,EAAW3pG,KAAKupG,OAAQvpG,KAAKupG,OAAOv7F,OAAS,GAAIm2F,SAAU,GAE1DuF,EAAWn+E,OAAQo+E,IAEzB3pG,KAAKupG,OAAOj8F,KAAM,IAAIq7F,GAAWgB,EAAUD,M,sBAe7C,SAAU95F,EAAGq0F,GAQZ,IANA,IAAMpsF,EAAIjI,EAAI5P,KAAK4pG,YACbC,EAAe7pG,KAAK8pG,kBACtBh8F,EAAI,EAIAA,EAAI+7F,EAAa77F,QAAS,CAEjC,GAAK67F,EAAc/7F,IAAO+J,EAAI,CAE7B,IAAMkyF,EAAOF,EAAc/7F,GAAM+J,EAC3B4xF,EAAQzpG,KAAKupG,OAAQz7F,GAErBk8F,EAAgBP,EAAMG,YACtBvhF,EAAsB,IAAlB2hF,EAAsB,EAAI,EAAID,EAAOC,EAE/C,OAAOP,EAAMpF,WAAYh8E,EAAG47E,GAI7Bn2F,IAID,OAAO,O,uBAUR,WAEC,IAAMm8F,EAAOjqG,KAAK8pG,kBAClB,OAAOG,EAAMA,EAAKj8F,OAAS,K,8BAK5B,WAEChO,KAAKopC,aAAc,EACnBppC,KAAKkqG,aAAe,KACpBlqG,KAAK8pG,oB,6BAON,WAIC,GAAK9pG,KAAKkqG,cAAgBlqG,KAAKkqG,aAAal8F,SAAWhO,KAAKupG,OAAOv7F,OAElE,OAAOhO,KAAKkqG,aAUb,IAHA,IAAM5F,EAAU,GACZ6F,EAAO,EAEDr8F,EAAI,EAAGC,EAAI/N,KAAKupG,OAAOv7F,OAAQF,EAAIC,EAAGD,IAE/Cq8F,GAAQnqG,KAAKupG,OAAQz7F,GAAI87F,YACzBtF,EAAQh3F,KAAM68F,GAMf,OAFAnqG,KAAKkqG,aAAe5F,EAEbA,I,6BAIR,WAIC,IAJiC,IAAjBF,EAAiB,uDAAL,GAEtBt7E,EAAS,GAELhb,EAAI,EAAGA,GAAKs2F,EAAWt2F,IAEhCgb,EAAOxb,KAAMtN,KAAKmkG,SAAUr2F,EAAIs2F,IAUjC,OANKpkG,KAAKwpG,WAET1gF,EAAOxb,KAAMwb,EAAQ,IAIfA,I,uBAIR,WAKC,IAL2B,IAGvB47E,EAHMN,EAAiB,uDAAL,GAEhBt7E,EAAS,GAGLhb,EAAI,EAAGy7F,EAASvpG,KAAKupG,OAAQz7F,EAAIy7F,EAAOv7F,OAAQF,IAUzD,IARA,IAAM27F,EAAQF,EAAQz7F,GAChBolE,EAAeu2B,GAASA,EAAMlD,eAA+B,EAAZnC,EAClDqF,IAAWA,EAAMb,aAAea,EAAMX,cAAmB,EACxDW,GAASA,EAAML,cAAkBhF,EAAYqF,EAAM3gF,OAAO9a,OAC3Do2F,EAECgG,EAAMX,EAAMY,UAAWn3B,GAEnBtnD,EAAI,EAAGA,EAAIw+E,EAAIp8F,OAAQ4d,IAAO,CAEvC,IAAMnC,EAAQ2gF,EAAKx+E,GAEd84E,GAAQA,EAAKn5E,OAAQ9B,KAE1BX,EAAOxb,KAAMmc,GACbi7E,EAAOj7E,GAYT,OANKzpB,KAAKwpG,WAAa1gF,EAAO9a,OAAS,IAAO8a,EAAQA,EAAO9a,OAAS,GAAIud,OAAQzC,EAAQ,KAEzFA,EAAOxb,KAAMwb,EAAQ,IAIfA,I,kBAIR,SAAM5L,GAEL,4DAAYA,GAEZld,KAAKupG,OAAS,GAEd,IAAM,IAAIz7F,EAAI,EAAGC,EAAImP,EAAOqsF,OAAOv7F,OAAQF,EAAIC,EAAGD,IAAO,CAExD,IAAM27F,EAAQvsF,EAAOqsF,OAAQz7F,GAE7B9N,KAAKupG,OAAOj8F,KAAMm8F,EAAM/oF,SAMzB,OAFA1gB,KAAKwpG,UAAYtsF,EAAOssF,UAEjBxpG,O,oBAIR,WAEC,IAAMse,EAAO,+DAEbA,EAAKkrF,UAAYxpG,KAAKwpG,UACtBlrF,EAAKirF,OAAS,GAEd,IAAM,IAAIz7F,EAAI,EAAGC,EAAI/N,KAAKupG,OAAOv7F,OAAQF,EAAIC,EAAGD,IAAO,CAEtD,IAAM27F,EAAQzpG,KAAKupG,OAAQz7F,GAC3BwQ,EAAKirF,OAAOj8F,KAAMm8F,EAAM1wE,UAIzB,OAAOza,I,sBAIR,SAAUo+E,GAET,gEAAgBA,GAEhB18F,KAAKwpG,UAAY9M,EAAK8M,UACtBxpG,KAAKupG,OAAS,GAEd,IAAM,IAAIz7F,EAAI,EAAGC,EAAI2uF,EAAK6M,OAAOv7F,OAAQF,EAAIC,EAAGD,IAAO,CAEtD,IAAM27F,EAAQ/M,EAAK6M,OAAQz7F,GAC3B9N,KAAKupG,OAAOj8F,MAAM,IAAI+7F,GAAQI,EAAMx8F,OAASq9F,SAAUb,IAIxD,OAAOzpG,S,GA5Oe+jG,IAkPlBwG,G,kDAEL,WAAazhF,GAAS,kCAErB,gBACK7b,KAAO,OAEZ,EAAKu9F,aAAe,IAAIl3F,GAEnBwV,GAEJ,EAAKwC,cAAexC,GATA,E,iDAetB,SAAeA,GAEd9oB,KAAKyqG,OAAQ3hF,EAAQ,GAAIpZ,EAAGoZ,EAAQ,GAAInZ,GAExC,IAAM,IAAI7B,EAAI,EAAGC,EAAI+a,EAAO9a,OAAQF,EAAIC,EAAGD,IAE1C9N,KAAK0qG,OAAQ5hF,EAAQhb,GAAI4B,EAAGoZ,EAAQhb,GAAI6B,GAIzC,OAAO3P,O,oBAIR,SAAQ0P,EAAGC,GAIV,OAFA3P,KAAKwqG,aAAar3F,IAAKzD,EAAGC,GAEnB3P,O,oBAIR,SAAQ0P,EAAGC,GAEV,IAAM85F,EAAQ,IAAId,GAAW3oG,KAAKwqG,aAAa9pF,QAAS,IAAIpN,GAAS5D,EAAGC,IAKxE,OAJA3P,KAAKupG,OAAOj8F,KAAMm8F,GAElBzpG,KAAKwqG,aAAar3F,IAAKzD,EAAGC,GAEnB3P,O,8BAIR,SAAkB2qG,EAAMC,EAAMhF,EAAIC,GAEjC,IAAM4D,EAAQ,IAAIV,GACjB/oG,KAAKwqG,aAAa9pF,QAClB,IAAIpN,GAASq3F,EAAMC,GACnB,IAAIt3F,GAASsyF,EAAIC,IAOlB,OAJA7lG,KAAKupG,OAAOj8F,KAAMm8F,GAElBzpG,KAAKwqG,aAAar3F,IAAKyyF,EAAIC,GAEpB7lG,O,2BAIR,SAAe6qG,EAAOC,EAAOC,EAAOC,EAAOpF,EAAIC,GAE9C,IAAM4D,EAAQ,IAAInB,GACjBtoG,KAAKwqG,aAAa9pF,QAClB,IAAIpN,GAASu3F,EAAOC,GACpB,IAAIx3F,GAASy3F,EAAOC,GACpB,IAAI13F,GAASsyF,EAAIC,IAOlB,OAJA7lG,KAAKupG,OAAOj8F,KAAMm8F,GAElBzpG,KAAKwqG,aAAar3F,IAAKyyF,EAAIC,GAEpB7lG,O,wBAIR,SAAYoqG,GAEX,IAAMa,EAAO,CAAEjrG,KAAKwqG,aAAa9pF,SAAUwqF,OAAQd,GAE7CX,EAAQ,IAAIN,GAAa8B,GAK/B,OAJAjrG,KAAKupG,OAAOj8F,KAAMm8F,GAElBzpG,KAAKwqG,aAAavtF,KAAMmtF,EAAKA,EAAIp8F,OAAS,IAEnChO,O,iBAIR,SAAK4lG,EAAIC,EAAIY,EAAST,EAAaC,EAAWC,GAE7C,IAAMphF,EAAK9kB,KAAKwqG,aAAa96F,EACvBqV,EAAK/kB,KAAKwqG,aAAa76F,EAK7B,OAHA3P,KAAKmrG,OAAQvF,EAAK9gF,EAAI+gF,EAAK9gF,EAAI0hF,EAC9BT,EAAaC,EAAWC,GAElBlmG,O,oBAIR,SAAQ4lG,EAAIC,EAAIY,EAAST,EAAaC,EAAWC,GAIhD,OAFAlmG,KAAKorG,WAAYxF,EAAIC,EAAIY,EAASA,EAAST,EAAaC,EAAWC,GAE5DlmG,O,qBAIR,SAAS4lG,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAEtE,IAAMrhF,EAAK9kB,KAAKwqG,aAAa96F,EACvBqV,EAAK/kB,KAAKwqG,aAAa76F,EAI7B,OAFA3P,KAAKorG,WAAYxF,EAAK9gF,EAAI+gF,EAAK9gF,EAAI+gF,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAElFnmG,O,wBAIR,SAAY4lG,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAEzE,IAAMsD,EAAQ,IAAI9D,GAAcC,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAE9F,GAAKnmG,KAAKupG,OAAOv7F,OAAS,EAAI,CAG7B,IAAMq9F,EAAa5B,EAAMtF,SAAU,GAE5BkH,EAAW9/E,OAAQvrB,KAAKwqG,eAE9BxqG,KAAK0qG,OAAQW,EAAW37F,EAAG27F,EAAW17F,GAMxC3P,KAAKupG,OAAOj8F,KAAMm8F,GAElB,IAAM6B,EAAY7B,EAAMtF,SAAU,GAGlC,OAFAnkG,KAAKwqG,aAAavtF,KAAMquF,GAEjBtrG,O,kBAIR,SAAMkd,GAML,OAJA,4DAAYA,GAEZld,KAAKwqG,aAAavtF,KAAMC,EAAOstF,cAExBxqG,O,oBAIR,WAEC,IAAMse,EAAO,+DAIb,OAFAA,EAAKksF,aAAexqG,KAAKwqG,aAAatxE,UAE/B5a,I,sBAIR,SAAUo+E,GAMT,OAJA,gEAAgBA,GAEhB18F,KAAKwqG,aAAanxF,UAAWqjF,EAAK8N,cAE3BxqG,S,GAnLUspG,IAyLbiC,G,kDAEL,WAAaziF,GAAS,kCAErB,cAAOA,IAEF1M,KAAOzN,KAEZ,EAAK1B,KAAO,QAEZ,EAAKu+F,MAAQ,GARQ,E,kDAYtB,SAAgBpH,GAIf,IAFA,IAAMqH,EAAW,GAEP39F,EAAI,EAAGC,EAAI/N,KAAKwrG,MAAMx9F,OAAQF,EAAIC,EAAGD,IAE9C29F,EAAU39F,GAAM9N,KAAKwrG,MAAO19F,GAAIu8F,UAAWjG,GAI5C,OAAOqH,I,2BAMR,SAAerH,GAEd,MAAO,CAENtqE,MAAO95B,KAAKqqG,UAAWjG,GACvBoH,MAAOxrG,KAAK0rG,eAAgBtH,M,kBAM9B,SAAMlnF,GAEL,4DAAYA,GAEZld,KAAKwrG,MAAQ,GAEb,IAAM,IAAI19F,EAAI,EAAGC,EAAImP,EAAOsuF,MAAMx9F,OAAQF,EAAIC,EAAGD,IAAO,CAEvD,IAAM69F,EAAOzuF,EAAOsuF,MAAO19F,GAE3B9N,KAAKwrG,MAAMl+F,KAAMq+F,EAAKjrF,SAIvB,OAAO1gB,O,oBAIR,WAEC,IAAMse,EAAO,+DAEbA,EAAKlC,KAAOpc,KAAKoc,KACjBkC,EAAKktF,MAAQ,GAEb,IAAM,IAAI19F,EAAI,EAAGC,EAAI/N,KAAKwrG,MAAMx9F,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAM69F,EAAO3rG,KAAKwrG,MAAO19F,GACzBwQ,EAAKktF,MAAMl+F,KAAMq+F,EAAK5yE,UAIvB,OAAOza,I,sBAIR,SAAUo+E,GAET,gEAAgBA,GAEhB18F,KAAKoc,KAAOsgF,EAAKtgF,KACjBpc,KAAKwrG,MAAQ,GAEb,IAAM,IAAI19F,EAAI,EAAGC,EAAI2uF,EAAK8O,MAAMx9F,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAM69F,EAAOjP,EAAK8O,MAAO19F,GACzB9N,KAAKwrG,MAAMl+F,MAAM,IAAIi9F,IAAOD,SAAUqB,IAIvC,OAAO3rG,S,GA3FWuqG,IAqGdqB,GAEQ,SAAWttF,EAAMutF,GAAuB,IAShDrjF,EAAMC,EAAME,EAAMC,EAAMlZ,EAAGC,EAAGm8F,EATQC,EAAU,uDAAJ,EAE1CC,EAAWH,GAAeA,EAAY79F,OACtCi+F,EAAWD,EAAWH,EAAa,GAAME,EAAMztF,EAAKtQ,OACtDk+F,EAAYC,GAAY7tF,EAAM,EAAG2tF,EAAUF,GAAK,GAC9CpzC,EAAY,GAElB,IAAOuzC,GAAaA,EAAUzqC,OAASyqC,EAAUE,KAAO,OAAOzzC,EAO/D,GAHKqzC,IAAWE,EAAYG,GAAgB/tF,EAAMutF,EAAaK,EAAWH,IAGrEztF,EAAKtQ,OAAS,GAAK+9F,EAAM,CAE7BvjF,EAAOG,EAAOrK,EAAM,GACpBmK,EAAOG,EAAOtK,EAAM,GAEpB,IAAM,IAAIxQ,EAAIi+F,EAAKj+F,EAAIm+F,EAAUn+F,GAAKi+F,GAErCr8F,EAAI4O,EAAMxQ,IAED0a,IAAOA,EAAO9Y,IADvBC,EAAI2O,EAAMxQ,EAAI,IAEL2a,IAAOA,EAAO9Y,GAClBD,EAAIiZ,IAAOA,EAAOjZ,GAClBC,EAAIiZ,IAAOA,EAAOjZ,GAMxBm8F,EAAsB,KADtBA,EAAU19F,KAAKiB,IAAKsZ,EAAOH,EAAMI,EAAOH,IACd,EAAIqjF,EAAU,EAMzC,OAFAQ,GAAcJ,EAAWvzC,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,GAE9CnzC,GAOT,SAASwzC,GAAY7tF,EAAM4qB,EAAO0N,EAAKm1D,EAAKQ,GAE3C,IAAIz+F,EAAG42F,EAEP,GAAK6H,IA+sBN,SAAqBjuF,EAAM4qB,EAAO0N,EAAKm1D,GAGtC,IADA,IAAIx1C,EAAM,EACAzoD,EAAIo7B,EAAOtd,EAAIgrB,EAAMm1D,EAAKj+F,EAAI8oC,EAAK9oC,GAAKi+F,EAEjDx1C,IAASj4C,EAAMsN,GAAMtN,EAAMxQ,KAAUwQ,EAAMxQ,EAAI,GAAMwQ,EAAMsN,EAAI,IAC/DA,EAAI9d,EAIL,OAAOyoD,EAztBci2C,CAAYluF,EAAM4qB,EAAO0N,EAAKm1D,GAAQ,EAE1D,IAAMj+F,EAAIo7B,EAAOp7B,EAAI8oC,EAAK9oC,GAAKi+F,EAAMrH,EAAO+H,GAAY3+F,EAAGwQ,EAAMxQ,GAAKwQ,EAAMxQ,EAAI,GAAK42F,QAIrF,IAAM52F,EAAI8oC,EAAMm1D,EAAKj+F,GAAKo7B,EAAOp7B,GAAKi+F,EAAMrH,EAAO+H,GAAY3+F,EAAGwQ,EAAMxQ,GAAKwQ,EAAMxQ,EAAI,GAAK42F,GAW7F,OAPKA,GAAQn5E,GAAQm5E,EAAMA,EAAKjjC,QAE/BirC,GAAYhI,GACZA,EAAOA,EAAKjjC,MAINijC,EAKR,SAASiI,GAAczjE,EAAO0N,GAE7B,IAAO1N,EAAQ,OAAOA,EACf0N,IAAMA,EAAM1N,GAEnB,IACC0jE,EADG9pF,EAAIomB,EAER,GAIC,GAFA0jE,GAAQ,EAED9pF,EAAE+pF,UAAathF,GAAQzI,EAAGA,EAAE2+C,OAAwC,IAA9BqrC,GAAMhqF,EAAEspF,KAAMtpF,EAAGA,EAAE2+C,MAS/D3+C,EAAIA,EAAE2+C,SAT0E,CAIhF,GAFAirC,GAAY5pF,IACZA,EAAI8zB,EAAM9zB,EAAEspF,QACDtpF,EAAE2+C,KAAO,MACpBmrC,GAAQ,SAQAA,GAAS9pF,IAAM8zB,GAEzB,OAAOA,EAKR,SAAS01D,GAAcS,EAAKp0C,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,EAASkB,GAEhE,GAAOD,EAAP,EAGOC,GAAQlB,GA0VhB,SAAqB5iE,EAAO1gB,EAAMC,EAAMqjF,GAEvC,IAAIhpF,EAAIomB,EACR,GAEc,OAARpmB,EAAErE,IAAaqE,EAAErE,EAAIwuF,GAAQnqF,EAAEpT,EAAGoT,EAAEnT,EAAG6Y,EAAMC,EAAMqjF,IACxDhpF,EAAEoqF,MAAQpqF,EAAEspF,KACZtpF,EAAEqqF,MAAQrqF,EAAE2+C,KACZ3+C,EAAIA,EAAE2+C,WAEG3+C,IAAMomB,GAEhBpmB,EAAEoqF,MAAMC,MAAQ,KAChBrqF,EAAEoqF,MAAQ,KAQX,SAAqBj/B,GAEpB,IAAIngE,EAAGgV,EAAG1Q,EAAG2B,EAAGq5F,EAAMC,EAAWC,EAAOC,EACvCC,EAAS,EAEV,EAAG,CAOF,IALA1qF,EAAImrD,EACJA,EAAO,KACPm/B,EAAO,KACPC,EAAY,EAEJvqF,GAAI,CAKX,IAHAuqF,IACAj7F,EAAI0Q,EACJwqF,EAAQ,EACFx/F,EAAI,EAAGA,EAAI0/F,IAEhBF,IACAl7F,EAAIA,EAAE+6F,OAHkBr/F,KAUzB,IAFAy/F,EAAQC,EAEAF,EAAQ,GAAOC,EAAQ,GAAKn7F,GAEpB,IAAVk7F,IAA2B,IAAVC,IAAiBn7F,GAAK0Q,EAAErE,GAAKrM,EAAEqM,IAEpD1K,EAAI+O,EACJA,EAAIA,EAAEqqF,MACNG,MAIAv5F,EAAI3B,EACJA,EAAIA,EAAE+6F,MACNI,KAIIH,EAAOA,EAAKD,MAAQp5F,EACpBk6D,EAAOl6D,EAEZA,EAAEm5F,MAAQE,EACVA,EAAOr5F,EAIR+O,EAAI1Q,EAILg7F,EAAKD,MAAQ,KACbK,GAAU,QAEDH,EAAY,GAhEtBI,CAAY3qF,GAzWa4qF,CAAYX,EAAKvkF,EAAMC,EAAMqjF,GAMtD,IAJA,IACCM,EAAM3qC,EADHroB,EAAO2zD,EAIHA,EAAIX,OAASW,EAAItrC,MAKxB,GAHA2qC,EAAOW,EAAIX,KACX3qC,EAAOsrC,EAAItrC,KAENqqC,EAAU6B,GAAaZ,EAAKvkF,EAAMC,EAAMqjF,GAAY8B,GAAOb,GAG/Dp0C,EAAUrrD,KAAM8+F,EAAKt+F,EAAIi+F,GACzBpzC,EAAUrrD,KAAMy/F,EAAIj/F,EAAIi+F,GACxBpzC,EAAUrrD,KAAMm0D,EAAK3zD,EAAIi+F,GAEzBW,GAAYK,GAGZA,EAAMtrC,EAAKA,KACXroB,EAAOqoB,EAAKA,UASb,IAHAsrC,EAAMtrC,KAGOroB,EAAO,CAGZ4zD,EAMc,IAATA,EAGXV,GADAS,EAAMc,GAAwBlB,GAAcI,GAAOp0C,EAAWozC,GAC3CpzC,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,EAAS,GAIpC,IAATkB,GAEXc,GAAaf,EAAKp0C,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,GAb9CQ,GAAcK,GAAcI,GAAOp0C,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,EAAS,GAiBzE,QASH,SAAS8B,GAAOb,GAEf,IAAM16F,EAAI06F,EAAIX,KACb95F,EAAIy6F,EACJx6F,EAAIw6F,EAAItrC,KAET,GAAKqrC,GAAMz6F,EAAGC,EAAGC,IAAO,EAAI,OAAO,EAKnC,IAFA,IAAIuQ,EAAIiqF,EAAItrC,KAAKA,KAET3+C,IAAMiqF,EAAIX,MAAO,CAExB,GAAK2B,GAAiB17F,EAAE3C,EAAG2C,EAAE1C,EAAG2C,EAAE5C,EAAG4C,EAAE3C,EAAG4C,EAAE7C,EAAG6C,EAAE5C,EAAGmT,EAAEpT,EAAGoT,EAAEnT,IAC1Dm9F,GAAMhqF,EAAEspF,KAAMtpF,EAAGA,EAAE2+C,OAAU,EAAI,OAAO,EACzC3+C,EAAIA,EAAE2+C,KAIP,OAAO,EAIR,SAASksC,GAAaZ,EAAKvkF,EAAMC,EAAMqjF,GAEtC,IAAMz5F,EAAI06F,EAAIX,KACb95F,EAAIy6F,EACJx6F,EAAIw6F,EAAItrC,KAET,GAAKqrC,GAAMz6F,EAAGC,EAAGC,IAAO,EAAI,OAAO,EAgBnC,IAbA,IAAMy7F,EAAQ37F,EAAE3C,EAAI4C,EAAE5C,EAAM2C,EAAE3C,EAAI6C,EAAE7C,EAAI2C,EAAE3C,EAAI6C,EAAE7C,EAAQ4C,EAAE5C,EAAI6C,EAAE7C,EAAI4C,EAAE5C,EAAI6C,EAAE7C,EAC3Eu+F,EAAQ57F,EAAE1C,EAAI2C,EAAE3C,EAAM0C,EAAE1C,EAAI4C,EAAE5C,EAAI0C,EAAE1C,EAAI4C,EAAE5C,EAAQ2C,EAAE3C,EAAI4C,EAAE5C,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EACtEu+F,EAAQ77F,EAAE3C,EAAI4C,EAAE5C,EAAM2C,EAAE3C,EAAI6C,EAAE7C,EAAI2C,EAAE3C,EAAI6C,EAAE7C,EAAQ4C,EAAE5C,EAAI6C,EAAE7C,EAAI4C,EAAE5C,EAAI6C,EAAE7C,EACtEy+F,EAAQ97F,EAAE1C,EAAI2C,EAAE3C,EAAM0C,EAAE1C,EAAI4C,EAAE5C,EAAI0C,EAAE1C,EAAI4C,EAAE5C,EAAQ2C,EAAE3C,EAAI4C,EAAE5C,EAAI2C,EAAE3C,EAAI4C,EAAE5C,EAGjE+Y,EAAOukF,GAAQe,EAAOC,EAAOzlF,EAAMC,EAAMqjF,GAC9CjjF,EAAOokF,GAAQiB,EAAOC,EAAO3lF,EAAMC,EAAMqjF,GAEtChpF,EAAIiqF,EAAIG,MACX39F,EAAIw9F,EAAII,MAGDrqF,GAAKA,EAAErE,GAAKiK,GAAQnZ,GAAKA,EAAEkP,GAAKoK,GAAO,CAE9C,GAAK/F,IAAMiqF,EAAIX,MAAQtpF,IAAMiqF,EAAItrC,MAChCssC,GAAiB17F,EAAE3C,EAAG2C,EAAE1C,EAAG2C,EAAE5C,EAAG4C,EAAE3C,EAAG4C,EAAE7C,EAAG6C,EAAE5C,EAAGmT,EAAEpT,EAAGoT,EAAEnT,IACtDm9F,GAAMhqF,EAAEspF,KAAMtpF,EAAGA,EAAE2+C,OAAU,EAAI,OAAO,EAGzC,GAFA3+C,EAAIA,EAAEoqF,MAED39F,IAAMw9F,EAAIX,MAAQ78F,IAAMw9F,EAAItrC,MAChCssC,GAAiB17F,EAAE3C,EAAG2C,EAAE1C,EAAG2C,EAAE5C,EAAG4C,EAAE3C,EAAG4C,EAAE7C,EAAG6C,EAAE5C,EAAGJ,EAAEG,EAAGH,EAAEI,IACtDm9F,GAAMv9F,EAAE68F,KAAM78F,EAAGA,EAAEkyD,OAAU,EAAI,OAAO,EACzClyD,EAAIA,EAAE49F,MAKP,KAAQrqF,GAAKA,EAAErE,GAAKiK,GAAO,CAE1B,GAAK5F,IAAMiqF,EAAIX,MAAQtpF,IAAMiqF,EAAItrC,MAChCssC,GAAiB17F,EAAE3C,EAAG2C,EAAE1C,EAAG2C,EAAE5C,EAAG4C,EAAE3C,EAAG4C,EAAE7C,EAAG6C,EAAE5C,EAAGmT,EAAEpT,EAAGoT,EAAEnT,IACtDm9F,GAAMhqF,EAAEspF,KAAMtpF,EAAGA,EAAE2+C,OAAU,EAAI,OAAO,EACzC3+C,EAAIA,EAAEoqF,MAKP,KAAQ39F,GAAKA,EAAEkP,GAAKoK,GAAO,CAE1B,GAAKtZ,IAAMw9F,EAAIX,MAAQ78F,IAAMw9F,EAAItrC,MAChCssC,GAAiB17F,EAAE3C,EAAG2C,EAAE1C,EAAG2C,EAAE5C,EAAG4C,EAAE3C,EAAG4C,EAAE7C,EAAG6C,EAAE5C,EAAGJ,EAAEG,EAAGH,EAAEI,IACtDm9F,GAAMv9F,EAAE68F,KAAM78F,EAAGA,EAAEkyD,OAAU,EAAI,OAAO,EACzClyD,EAAIA,EAAE49F,MAIP,OAAO,EAKR,SAASU,GAAwB3kE,EAAOyvB,EAAWozC,GAElD,IAAIjpF,EAAIomB,EACR,EAAG,CAEF,IAAM72B,EAAIyQ,EAAEspF,KACX95F,EAAIwQ,EAAE2+C,KAAKA,MAELl2C,GAAQlZ,EAAGC,IAAO68B,GAAY98B,EAAGyQ,EAAGA,EAAE2+C,KAAMnvD,IAAO87F,GAAe/7F,EAAGC,IAAO87F,GAAe97F,EAAGD,KAEpGsmD,EAAUrrD,KAAM+E,EAAEvE,EAAIi+F,GACtBpzC,EAAUrrD,KAAMwV,EAAEhV,EAAIi+F,GACtBpzC,EAAUrrD,KAAMgF,EAAExE,EAAIi+F,GAGtBW,GAAY5pF,GACZ4pF,GAAY5pF,EAAE2+C,MAEd3+C,EAAIomB,EAAQ52B,GAIbwQ,EAAIA,EAAE2+C,WAEG3+C,IAAMomB,GAEhB,OAAOyjE,GAAc7pF,GAKtB,SAASgrF,GAAa5kE,EAAOyvB,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,GAGxD,IAAIz5F,EAAI62B,EACR,EAAG,CAGF,IADA,IAAI52B,EAAID,EAAEovD,KAAKA,KACPnvD,IAAMD,EAAE+5F,MAAO,CAEtB,GAAK/5F,EAAEvE,IAAMwE,EAAExE,GAAKugG,GAAiBh8F,EAAGC,GAAM,CAG7C,IAAIC,EAAI+7F,GAAcj8F,EAAGC,GASzB,OANAD,EAAIs6F,GAAct6F,EAAGA,EAAEovD,MACvBlvD,EAAIo6F,GAAcp6F,EAAGA,EAAEkvD,MAGvB6qC,GAAcj6F,EAAGsmD,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,QAC7CQ,GAAc/5F,EAAGomD,EAAWozC,EAAKvjF,EAAMC,EAAMqjF,GAK9Cx5F,EAAIA,EAAEmvD,KAIPpvD,EAAIA,EAAEovD,WAEGpvD,IAAM62B,GAKjB,SAASmjE,GAAgB/tF,EAAMutF,EAAaK,EAAWH,GAEtD,IACIj+F,EAAG0X,EAAiByoD,EADlBsgC,EAAQ,GAGd,IAAMzgG,EAAI,EAAG0X,EAAMqmF,EAAY79F,OAAQF,EAAI0X,EAAK1X,KAI/CmgE,EAAOk+B,GAAY7tF,EAFXutF,EAAa/9F,GAAMi+F,EACrBj+F,EAAI0X,EAAM,EAAIqmF,EAAa/9F,EAAI,GAAMi+F,EAAMztF,EAAKtQ,OACjB+9F,GAAK,MAC5B99B,EAAKxM,OAAOwM,EAAK4+B,SAAU,GACzC0B,EAAMjhG,KAAMkhG,GAAavgC,IAO1B,IAHAsgC,EAAM/zC,KAAMi0C,IAGN3gG,EAAI,EAAGA,EAAIygG,EAAMvgG,OAAQF,IAE9B4gG,GAAeH,EAAOzgG,GAAKo+F,GAC3BA,EAAYS,GAAcT,EAAWA,EAAUzqC,MAIhD,OAAOyqC,EAIR,SAASuC,GAAUp8F,EAAGC,GAErB,OAAOD,EAAE3C,EAAI4C,EAAE5C,EAKhB,SAASg/F,GAAe/C,EAAMO,GAG7B,GADAA,EAcD,SAAyBP,EAAMO,GAE9B,IAGqB18F,EAHjBsT,EAAIopF,EACFyC,EAAKhD,EAAKj8F,EACVk/F,EAAKjD,EAAKh8F,EACZsW,GAAO1M,IAIX,EAAG,CAEF,GAAKq1F,GAAM9rF,EAAEnT,GAAKi/F,GAAM9rF,EAAE2+C,KAAK9xD,GAAKmT,EAAE2+C,KAAK9xD,IAAMmT,EAAEnT,EAAI,CAEtD,IAAMD,EAAIoT,EAAEpT,GAAMk/F,EAAK9rF,EAAEnT,IAAQmT,EAAE2+C,KAAK/xD,EAAIoT,EAAEpT,IAAQoT,EAAE2+C,KAAK9xD,EAAImT,EAAEnT,GACnE,GAAKD,GAAKi/F,GAAMj/F,EAAIuW,EAAK,CAGxB,GADAA,EAAKvW,EACAA,IAAMi/F,EAAK,CAEf,GAAKC,IAAO9rF,EAAEnT,EAAI,OAAOmT,EACzB,GAAK8rF,IAAO9rF,EAAE2+C,KAAK9xD,EAAI,OAAOmT,EAAE2+C,KAIjCjyD,EAAIsT,EAAEpT,EAAIoT,EAAE2+C,KAAK/xD,EAAIoT,EAAIA,EAAE2+C,MAM7B3+C,EAAIA,EAAE2+C,WAEG3+C,IAAMopF,GAEhB,IAAO18F,EAAI,OAAO,KAElB,GAAKm/F,IAAO1oF,EAAK,OAAOzW,EAMxB,IAGuBokC,EAHjBwF,EAAO5pC,EACZq/F,EAAKr/F,EAAEE,EACPo/F,EAAKt/F,EAAEG,EACJo/F,EAASx1F,IAEbuJ,EAAItT,EAEJ,GAEMm/F,GAAM7rF,EAAEpT,GAAKoT,EAAEpT,GAAKm/F,GAAMF,IAAO7rF,EAAEpT,GACtCq+F,GAAiBa,EAAKE,EAAKH,EAAK1oF,EAAI2oF,EAAIC,EAAIC,EAAIF,EAAKE,EAAK7oF,EAAK0oF,EAAIC,EAAI9rF,EAAEpT,EAAGoT,EAAEnT,KAE/EikC,EAAMxlC,KAAKgD,IAAKw9F,EAAK9rF,EAAEnT,IAAQg/F,EAAK7rF,EAAEpT,GAEjC0+F,GAAetrF,EAAG6oF,KAAY/3D,EAAMm7D,GAAYn7D,IAAQm7D,IAAYjsF,EAAEpT,EAAIF,EAAEE,GAAOoT,EAAEpT,IAAMF,EAAEE,GAAKs/F,GAAsBx/F,EAAGsT,OAE/HtT,EAAIsT,EACJisF,EAASn7D,IAMX9wB,EAAIA,EAAE2+C,WAEG3+C,IAAMs2B,GAEhB,OAAO5pC,EAnFKy/F,CAAgBtD,EAAMO,GACjB,CAEhB,IAAM55F,EAAIg8F,GAAcpC,EAAWP,GAGnCgB,GAAcT,EAAWA,EAAUzqC,MACnCkrC,GAAcr6F,EAAGA,EAAEmvD,OAiFrB,SAASutC,GAAsBx/F,EAAGsT,GAEjC,OAAOgqF,GAAMt9F,EAAE48F,KAAM58F,EAAGsT,EAAEspF,MAAS,GAAKU,GAAMhqF,EAAE2+C,KAAMjyD,EAAGA,EAAEiyD,MAAS,EA2FrE,SAASwrC,GAAQv9F,EAAGC,EAAG6Y,EAAMC,EAAMqjF,GAgBlC,OAPAp8F,EAAyB,aADzBA,EAAyB,YADzBA,EAAyB,YADzBA,EAAyB,WAHzBA,EAAI,OAAUA,EAAI8Y,GAASsjF,GAGfp8F,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAKjBC,EAAyB,aADzBA,EAAyB,YADzBA,EAAyB,YADzBA,EAAyB,WAPzBA,EAAI,OAAUA,EAAI8Y,GAASqjF,GAOfn8F,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAEC,EAKnB,SAAS6+F,GAAatlE,GAErB,IAAIpmB,EAAIomB,EACPgmE,EAAWhmE,EACZ,IAEMpmB,EAAEpT,EAAIw/F,EAASx/F,GAAOoT,EAAEpT,IAAMw/F,EAASx/F,GAAKoT,EAAEnT,EAAIu/F,EAASv/F,KAAMu/F,EAAWpsF,GACjFA,EAAIA,EAAE2+C,WAEG3+C,IAAMomB,GAEhB,OAAOgmE,EAKR,SAASnB,GAAiB/mF,EAAIC,EAAIE,EAAIC,EAAInO,EAAIC,EAAImuF,EAAIC,GAErD,OAASruF,EAAKouF,IAASpgF,EAAKqgF,IAAStgF,EAAKqgF,IAASnuF,EAAKouF,IAAQ,IAC5DtgF,EAAKqgF,IAASjgF,EAAKkgF,IAASngF,EAAKkgF,IAASpgF,EAAKqgF,IAAQ,IACvDngF,EAAKkgF,IAASnuF,EAAKouF,IAASruF,EAAKouF,IAASjgF,EAAKkgF,IAAQ,EAK5D,SAAS+G,GAAiBh8F,EAAGC,GAE5B,OAAOD,EAAEovD,KAAK3zD,IAAMwE,EAAExE,GAAKuE,EAAE+5F,KAAKt+F,IAAMwE,EAAExE,IAsD3C,SAA4BuE,EAAGC,GAE9B,IAAIwQ,EAAIzQ,EACR,EAAG,CAEF,GAAKyQ,EAAEhV,IAAMuE,EAAEvE,GAAKgV,EAAE2+C,KAAK3zD,IAAMuE,EAAEvE,GAAKgV,EAAEhV,IAAMwE,EAAExE,GAAKgV,EAAE2+C,KAAK3zD,IAAMwE,EAAExE,GACpEqhC,GAAYrsB,EAAGA,EAAE2+C,KAAMpvD,EAAGC,GAAM,OAAO,EACzCwQ,EAAIA,EAAE2+C,WAEG3+C,IAAMzQ,GAEhB,OAAO,EAjE0C88F,CAAmB98F,EAAGC,KACpE87F,GAAe/7F,EAAGC,IAAO87F,GAAe97F,EAAGD,IA8E/C,SAAuBA,EAAGC,GAEzB,IAAIwQ,EAAIzQ,EACP+8F,GAAS,EACJ/H,GAAOh1F,EAAE3C,EAAI4C,EAAE5C,GAAM,EAC1B43F,GAAOj1F,EAAE1C,EAAI2C,EAAE3C,GAAM,EACtB,GAEUmT,EAAEnT,EAAI23F,IAAWxkF,EAAE2+C,KAAK9xD,EAAI23F,GAAUxkF,EAAE2+C,KAAK9xD,IAAMmT,EAAEnT,GAC1D03F,GAAOvkF,EAAE2+C,KAAK/xD,EAAIoT,EAAEpT,IAAQ43F,EAAKxkF,EAAEnT,IAAQmT,EAAE2+C,KAAK9xD,EAAImT,EAAEnT,GAAMmT,EAAEpT,IACnE0/F,GAAWA,GACZtsF,EAAIA,EAAE2+C,WAEG3+C,IAAMzQ,GAEhB,OAAO+8F,EA7F8CC,CAAch9F,EAAGC,KACnEw6F,GAAMz6F,EAAE+5F,KAAM/5F,EAAGC,EAAE85F,OAAUU,GAAMz6F,EAAGC,EAAE85F,KAAM95F,KAChDiZ,GAAQlZ,EAAGC,IAAOw6F,GAAMz6F,EAAE+5F,KAAM/5F,EAAGA,EAAEovD,MAAS,GAAKqrC,GAAMx6F,EAAE85F,KAAM95F,EAAGA,EAAEmvD,MAAS,GAKjF,SAASqrC,GAAMhqF,EAAG1Q,EAAGuG,GAEpB,OAASvG,EAAEzC,EAAImT,EAAEnT,IAAQgJ,EAAEjJ,EAAI0C,EAAE1C,IAAQ0C,EAAE1C,EAAIoT,EAAEpT,IAAQiJ,EAAEhJ,EAAIyC,EAAEzC,GAKlE,SAAS4b,GAAQO,EAAIC,GAEpB,OAAOD,EAAGpc,IAAMqc,EAAGrc,GAAKoc,EAAGnc,IAAMoc,EAAGpc,EAKrC,SAASw/B,GAAYrjB,EAAIwjF,EAAIvjF,EAAIwjF,GAEhC,IAAMC,EAAKhgF,GAAMs9E,GAAMhhF,EAAIwjF,EAAIvjF,IACzB0jF,EAAKjgF,GAAMs9E,GAAMhhF,EAAIwjF,EAAIC,IACzBG,EAAKlgF,GAAMs9E,GAAM/gF,EAAIwjF,EAAIzjF,IACzB6jF,EAAKngF,GAAMs9E,GAAM/gF,EAAIwjF,EAAID,IAE/B,OAAKE,IAAOC,GAAMC,IAAOC,MAEb,IAAPH,IAAYI,GAAW9jF,EAAIC,EAAIujF,QACxB,IAAPG,IAAYG,GAAW9jF,EAAIyjF,EAAID,QACxB,IAAPI,IAAYE,GAAW7jF,EAAID,EAAIyjF,OACxB,IAAPI,IAAYC,GAAW7jF,EAAIujF,EAAIC,OAOrC,SAASK,GAAW9sF,EAAG1Q,EAAGuG,GAEzB,OAAOvG,EAAE1C,GAAKtB,KAAKiB,IAAKyT,EAAEpT,EAAGiJ,EAAEjJ,IAAO0C,EAAE1C,GAAKtB,KAAKgB,IAAK0T,EAAEpT,EAAGiJ,EAAEjJ,IAAO0C,EAAEzC,GAAKvB,KAAKiB,IAAKyT,EAAEnT,EAAGgJ,EAAEhJ,IAAOyC,EAAEzC,GAAKvB,KAAKgB,IAAK0T,EAAEnT,EAAGgJ,EAAEhJ,GAI7H,SAAS6f,GAAMqgF,GAEd,OAAOA,EAAM,EAAI,EAAIA,EAAM,GAAM,EAAI,EAqBtC,SAASzB,GAAe/7F,EAAGC,GAE1B,OAAOw6F,GAAMz6F,EAAE+5F,KAAM/5F,EAAGA,EAAEovD,MAAS,EAClCqrC,GAAMz6F,EAAGC,EAAGD,EAAEovD,OAAU,GAAKqrC,GAAMz6F,EAAGA,EAAE+5F,KAAM95F,IAAO,EACrDw6F,GAAMz6F,EAAGC,EAAGD,EAAE+5F,MAAS,GAAKU,GAAMz6F,EAAGA,EAAEovD,KAAMnvD,GAAM,EA0BrD,SAASg8F,GAAcj8F,EAAGC,GAEzB,IAAM3B,EAAK,IAAIm/F,GAAMz9F,EAAEvE,EAAGuE,EAAE3C,EAAG2C,EAAE1C,GAChCkB,EAAK,IAAIi/F,GAAMx9F,EAAExE,EAAGwE,EAAE5C,EAAG4C,EAAE3C,GAC3BogG,EAAK19F,EAAEovD,KACPuuC,EAAK19F,EAAE85F,KAcR,OAZA/5F,EAAEovD,KAAOnvD,EACTA,EAAE85F,KAAO/5F,EAET1B,EAAG8wD,KAAOsuC,EACVA,EAAG3D,KAAOz7F,EAEVE,EAAG4wD,KAAO9wD,EACVA,EAAGy7F,KAAOv7F,EAEVm/F,EAAGvuC,KAAO5wD,EACVA,EAAGu7F,KAAO4D,EAEHn/F,EAKR,SAAS47F,GAAY3+F,EAAG4B,EAAGC,EAAG+0F,GAE7B,IAAM5hF,EAAI,IAAIgtF,GAAMhiG,EAAG4B,EAAGC,GAgB1B,OAdO+0F,GAON5hF,EAAE2+C,KAAOijC,EAAKjjC,KACd3+C,EAAEspF,KAAO1H,EACTA,EAAKjjC,KAAK2qC,KAAOtpF,EACjB4hF,EAAKjjC,KAAO3+C,IARZA,EAAEspF,KAAOtpF,EACTA,EAAE2+C,KAAO3+C,GAWHA,EAIR,SAAS4pF,GAAY5pF,GAEpBA,EAAE2+C,KAAK2qC,KAAOtpF,EAAEspF,KAChBtpF,EAAEspF,KAAK3qC,KAAO3+C,EAAE2+C,KAEX3+C,EAAEoqF,QAAQpqF,EAAEoqF,MAAMC,MAAQrqF,EAAEqqF,OAC5BrqF,EAAEqqF,QAAQrqF,EAAEqqF,MAAMD,MAAQpqF,EAAEoqF,OAIlC,SAAS4C,GAAMhiG,EAAG4B,EAAGC,GAGpB3P,KAAK8N,EAAIA,EAGT9N,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EAGT3P,KAAKosG,KAAO,KACZpsG,KAAKyhE,KAAO,KAGZzhE,KAAKye,EAAI,KAGTze,KAAKktG,MAAQ,KACbltG,KAAKmtG,MAAQ,KAGbntG,KAAK6sG,SAAU,E,IAkBVoD,G,yFAIL,SAAaC,GAKZ,IAHA,IAAM3gG,EAAI2gG,EAAQliG,OACdqE,EAAI,EAEEyQ,EAAIvT,EAAI,EAAG6C,EAAI,EAAGA,EAAI7C,EAAGuT,EAAI1Q,IAEtCC,GAAK69F,EAASptF,GAAIpT,EAAIwgG,EAAS99F,GAAIzC,EAAIugG,EAAS99F,GAAI1C,EAAIwgG,EAASptF,GAAInT,EAItE,MAAW,GAAJ0C,I,yBAIR,SAAoB+3F,GAEnB,OAAO6F,EAAWnD,KAAM1C,GAAQ,I,8BAIjC,SAAyB8F,EAAS1E,GAEjC,IAAMl7D,EAAW,GACXu7D,EAAc,GACdsE,EAAQ,GAEdC,GAAiBF,GACjBG,GAAY//D,EAAU4/D,GAItB,IAAII,EAAYJ,EAAQliG,OAExBw9F,EAAMnlB,QAAS+pB,IAEf,IAAM,IAAItiG,EAAI,EAAGA,EAAI09F,EAAMx9F,OAAQF,IAElC+9F,EAAYv+F,KAAMgjG,GAClBA,GAAa9E,EAAO19F,GAAIE,OACxBqiG,GAAY//D,EAAUk7D,EAAO19F,IAU9B,IAJA,IAAM6qD,EAAYizC,GAAoBt7D,EAAUu7D,GAItC/9F,EAAI,EAAGA,EAAI6qD,EAAU3qD,OAAQF,GAAK,EAE3CqiG,EAAM7iG,KAAMqrD,EAAU9qD,MAAOC,EAAGA,EAAI,IAIrC,OAAOqiG,M,KAMT,SAASC,GAAiBtnF,GAEzB,IAAM/a,EAAI+a,EAAO9a,OAEZD,EAAI,GAAK+a,EAAQ/a,EAAI,GAAIwd,OAAQzC,EAAQ,KAE7CA,EAAOgkD,MAMT,SAASujC,GAAY//D,EAAU4/D,GAE9B,IAAM,IAAIpiG,EAAI,EAAGA,EAAIoiG,EAAQliG,OAAQF,IAEpCwiC,EAAShjC,KAAM4iG,EAASpiG,GAAI4B,GAC5B4gC,EAAShjC,KAAM4iG,EAASpiG,GAAI6B,G,IA4BxB4gG,G,kDAEL,aAAkK,MAArJ73E,EAAqJ,uDAA5I,IAAI6yE,GAAO,CAAE,IAAIj4F,GAAS,GAAK,IAAO,IAAIA,IAAW,GAAK,IAAO,IAAIA,IAAW,IAAO,IAAO,IAAIA,GAAS,IAAO,MAAW0M,EAAe,uDAAL,GAAK,qBAEjK,gBAEK/S,KAAO,kBAEZ,EAAK4sB,WAAa,CACjBnB,OAAQA,EACR1Y,QAASA,GAGV0Y,EAAS9a,MAAMC,QAAS6a,GAAWA,EAAS,CAAEA,GAO9C,IALA,IAAM2X,EAAQ,eAERmgE,EAAgB,GAChBnd,EAAU,GAENvlF,EAAI,EAAGC,EAAI2qB,EAAO1qB,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMgsB,EAAQpB,EAAQ5qB,GACtB2iG,EAAU32E,GAaX,SAAS22E,EAAU32E,GAElB,IAAM42E,EAAc,GAIdC,OAA0CtwG,IAA1B2f,EAAQ2wF,cAA8B3wF,EAAQ2wF,cAAgB,GAC9EC,OAA0BvwG,IAAlB2f,EAAQ4wF,MAAsB5wF,EAAQ4wF,MAAQ,EACxD3wF,OAA0B5f,IAAlB2f,EAAQC,MAAsBD,EAAQC,MAAQ,EAEtD4wF,OAAwCxwG,IAAzB2f,EAAQ6wF,cAA6B7wF,EAAQ6wF,aAC5DC,OAA4CzwG,IAA3B2f,EAAQ8wF,eAA+B9wF,EAAQ8wF,eAAiB,GACjFC,OAAkC1wG,IAAtB2f,EAAQ+wF,UAA0B/wF,EAAQ+wF,UAAYD,EAAiB,GACnFE,OAAsC3wG,IAAxB2f,EAAQgxF,YAA4BhxF,EAAQgxF,YAAc,EACxEC,OAA0C5wG,IAA1B2f,EAAQixF,cAA8BjxF,EAAQixF,cAAgB,EAE5EC,EAAclxF,EAAQkxF,YAEtBC,OAAgC9wG,IAAxB2f,EAAQoxF,YAA4BpxF,EAAQoxF,YAAcC,QAIhDhxG,IAAnB2f,EAAQsxF,SAEZl+F,QAAQC,KAAM,kEACd4M,EAAQD,EAAQsxF,QAMjB,IAAIC,EACAC,EAAYC,EAAU7pF,EAAQ8pF,EADlBC,GAAgB,EAG3BT,IAEJK,EAAaL,EAAYU,gBAAiBhB,GAE1Ce,GAAgB,EAChBd,GAAe,EAMfW,EAAaN,EAAYW,oBAAqBjB,GAAO,GAIrDa,EAAW,IAAI9rF,GACfiC,EAAS,IAAIjC,GACb+rF,EAAY,IAAI/rF,IAMVkrF,IAENI,EAAgB,EAChBH,EAAiB,EACjBC,EAAY,EACZC,EAAc,GAMf,IAAMc,EAAch4E,EAAMi4E,cAAepB,GAErCrgE,EAAWwhE,EAAYh4E,MACrB0xE,EAAQsG,EAAYtG,MAI1B,IAFkByE,GAAW+B,YAAa1hE,GAE3B,CAEdA,EAAWA,EAAS2hE,UAIpB,IAAM,IAAIj6F,EAAI,EAAGk6F,EAAK1G,EAAMx9F,OAAQgK,EAAIk6F,EAAIl6F,IAAO,CAElD,IAAMm6F,EAAQ3G,EAAOxzF,GAEhBi4F,GAAW+B,YAAaG,KAE5B3G,EAAOxzF,GAAMm6F,EAAMF,YAetB,IANA,IAAM9B,EAAQF,GAAWmC,iBAAkB9hE,EAAUk7D,GAI/C0E,EAAU5/D,EAENt4B,EAAI,EAAGk6F,EAAK1G,EAAMx9F,OAAQgK,EAAIk6F,EAAIl6F,IAAO,CAElD,IAAMm6F,EAAQ3G,EAAOxzF,GAErBs4B,EAAWA,EAAS46D,OAAQiH,GAK7B,SAASE,EAAUC,EAAIjN,EAAKp8E,GAI3B,OAFOo8E,GAAMjyF,QAAQ3T,MAAO,6CAErB4lG,EAAI3kF,QAAQ5M,eAAgBmV,GAAOG,IAAKkpF,GAIhD,IAAMC,EAAOjiE,EAAStiC,OAAQwkG,EAAOrC,EAAMniG,OAM3C,SAASykG,EAAaC,EAAMC,EAAQC,GASnC,IAAIC,EAAWC,EAAWC,EAKpBC,EAAWN,EAAKhjG,EAAIijG,EAAOjjG,EAChCujG,EAAWP,EAAK/iG,EAAIgjG,EAAOhjG,EACtBujG,EAAWN,EAAOljG,EAAIgjG,EAAKhjG,EAChCyjG,EAAWP,EAAOjjG,EAAI+iG,EAAK/iG,EAEtByjG,EAAiBJ,EAAWA,EAAWC,EAAWA,EAGlDI,EAAeL,EAAWG,EAAWF,EAAWC,EAEtD,GAAK9kG,KAAKgD,IAAKiiG,GAAe7wF,OAAOC,QAAU,CAM9C,IAAM6wF,EAAallG,KAAKiG,KAAM++F,GACxBG,EAAanlG,KAAKiG,KAAM6+F,EAAWA,EAAWC,EAAWA,GAIzDK,EAAkBb,EAAOjjG,EAAIujG,EAAWK,EACxCG,EAAkBd,EAAOhjG,EAAIqjG,EAAWM,EAOxCI,IALkBd,EAAOljG,EAAIyjG,EAAWI,EAKfC,GAAkBL,GAJzBP,EAAOjjG,EAAIujG,EAAWK,EAK1BE,GAAkBP,IACnCF,EAAWG,EAAWF,EAAWC,GAS9BS,GALNd,EAAcW,EAAgBR,EAAWU,EAAKhB,EAAKhjG,GAKfmjG,GAJpCC,EAAcW,EAAgBR,EAAWS,EAAKhB,EAAK/iG,GAISmjG,EAC5D,GAAKa,GAAiB,EAErB,OAAO,IAAIrgG,GAASu/F,EAAWC,GAI/BC,EAAY3kG,KAAKiG,KAAMs/F,EAAgB,OAIlC,CAIN,IAAIC,GAAe,EAEdZ,EAAWxwF,OAAOC,QAEjBywF,EAAW1wF,OAAOC,UAEtBmxF,GAAe,GAMXZ,GAAaxwF,OAAOC,QAEnBywF,GAAa1wF,OAAOC,UAExBmxF,GAAe,GAMXxlG,KAAKohB,KAAMyjF,KAAe7kG,KAAKohB,KAAM2jF,KAEzCS,GAAe,GAQbA,GAGJf,GAAcI,EACdH,EAAYE,EACZD,EAAY3kG,KAAKiG,KAAM++F,KAKvBP,EAAYG,EACZF,EAAYG,EACZF,EAAY3kG,KAAKiG,KAAM++F,EAAe,IAMxC,OAAO,IAAI9/F,GAASu/F,EAAYE,EAAWD,EAAYC,GAOxD,IAFA,IAAMc,EAAmB,GAEf/lG,EAAI,EAAGgT,EAAKovF,EAAQliG,OAAQ4d,EAAI9K,EAAK,EAAGyzD,EAAIzmE,EAAI,EAAGA,EAAIgT,EAAIhT,IAAM8d,IAAM2oD,IAE3E3oD,IAAM9K,IAAK8K,EAAI,GACf2oD,IAAMzzD,IAAKyzD,EAAI,GAKpBs/B,EAAkB/lG,GAAM2kG,EAAavC,EAASpiG,GAAKoiG,EAAStkF,GAAKskF,EAAS37B,IAO3E,IAHA,IACIu/B,EADEC,EAAiB,GACDC,EAAoBH,EAAiB3I,SAEjDlzF,EAAI,EAAGk6F,EAAK1G,EAAMx9F,OAAQgK,EAAIk6F,EAAIl6F,IAAO,CAElD,IAAMm6F,EAAQ3G,EAAOxzF,GAErB87F,EAAmB,GAEnB,IAAM,IAAIhmG,EAAI,EAAGgT,EAAKqxF,EAAMnkG,OAAQ4d,EAAI9K,EAAK,EAAGyzD,EAAIzmE,EAAI,EAAGA,EAAIgT,EAAIhT,IAAM8d,IAAM2oD,IAEzE3oD,IAAM9K,IAAK8K,EAAI,GACf2oD,IAAMzzD,IAAKyzD,EAAI,GAGpBu/B,EAAkBhmG,GAAM2kG,EAAaN,EAAOrkG,GAAKqkG,EAAOvmF,GAAKumF,EAAO59B,IAIrEw/B,EAAezmG,KAAMwmG,GACrBE,EAAoBA,EAAkB9I,OAAQ4I,GAO/C,IAAM,IAAIxhG,EAAI,EAAGA,EAAI2+F,EAAe3+F,IAAO,CAU1C,IANA,IAAM1C,EAAI0C,EAAI2+F,EACRxyF,GAAIqyF,EAAiB1iG,KAAKqE,IAAK7C,EAAIxB,KAAKC,GAAK,GAC7C4lG,GAAKlD,EAAY3iG,KAAKsE,IAAK9C,EAAIxB,KAAKC,GAAK,GAAM2iG,EAI3CljG,GAAI,EAAGgT,GAAKovF,EAAQliG,OAAQF,GAAIgT,GAAIhT,KAAO,CAEpD,IAAMomG,GAAO7B,EAAUnC,EAASpiG,IAAK+lG,EAAkB/lG,IAAKmmG,IAE5DvgG,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,GAAK8O,IAMtB,IAAM,IAAIzG,GAAI,EAAGk6F,GAAK1G,EAAMx9F,OAAQgK,GAAIk6F,GAAIl6F,KAAO,CAElD,IAAMm6F,GAAQ3G,EAAOxzF,IACrB87F,EAAmBC,EAAgB/7F,IAEnC,IAAM,IAAIlK,GAAI,EAAGgT,GAAKqxF,GAAMnkG,OAAQF,GAAIgT,GAAIhT,KAAO,CAElD,IAAMomG,GAAO7B,EAAUF,GAAOrkG,IAAKgmG,EAAkBhmG,IAAKmmG,IAE1DvgG,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,GAAK8O,MAYxB,IAJA,IAAMw1F,GAAKlD,EAAYC,EAIbljG,GAAI,EAAGA,GAAIykG,EAAMzkG,KAAO,CAEjC,IAAMomG,GAAOrD,EAAewB,EAAU/hE,EAAUxiC,IAAKkmG,EAAmBlmG,IAAKmmG,IAAO3jE,EAAUxiC,IAEvF6jG,GAQN/pF,EAAO3K,KAAMu0F,EAAWhnE,QAAS,IAAM12B,eAAgBogG,GAAKxkG,GAC5D+hG,EAASx0F,KAAMu0F,EAAWpM,UAAW,IAAMtxF,eAAgBogG,GAAKvkG,GAEhE+hG,EAAUz0F,KAAMs0F,EAAY,IAAMnoF,IAAKxB,GAASwB,IAAKqoF,GAErD/9F,GAAGg+F,EAAUhiG,EAAGgiG,EAAU/hG,EAAG+hG,EAAUjzF,IAXvC/K,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,EAAG,GAoBrB,IAAM,IAAImC,GAAI,EAAGA,IAAK8+F,EAAO9+F,KAE5B,IAAM,IAAIhE,GAAI,EAAGA,GAAIykG,EAAMzkG,KAAO,CAEjC,IAAMomG,GAAOrD,EAAewB,EAAU/hE,EAAUxiC,IAAKkmG,EAAmBlmG,IAAKmmG,IAAO3jE,EAAUxiC,IAEvF6jG,GAQN/pF,EAAO3K,KAAMu0F,EAAWhnE,QAAS14B,KAAMgC,eAAgBogG,GAAKxkG,GAC5D+hG,EAASx0F,KAAMu0F,EAAWpM,UAAWtzF,KAAMgC,eAAgBogG,GAAKvkG,GAEhE+hG,EAAUz0F,KAAMs0F,EAAYz/F,KAAMsX,IAAKxB,GAASwB,IAAKqoF,GAErD/9F,GAAGg+F,EAAUhiG,EAAGgiG,EAAU/hG,EAAG+hG,EAAUjzF,IAXvC/K,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,EAAGsQ,EAAQ2wF,EAAQ9+F,IAuBtC,IAAM,IAAIQ,GAAI2+F,EAAgB,EAAG3+F,IAAK,EAAGA,KAAO,CAQ/C,IANA,IAAM1C,GAAI0C,GAAI2+F,EACRxyF,GAAIqyF,EAAiB1iG,KAAKqE,IAAK7C,GAAIxB,KAAKC,GAAK,GAC7C4lG,GAAKlD,EAAY3iG,KAAKsE,IAAK9C,GAAIxB,KAAKC,GAAK,GAAM2iG,EAI3CljG,GAAI,EAAGgT,GAAKovF,EAAQliG,OAAQF,GAAIgT,GAAIhT,KAAO,CAEpD,IAAMomG,GAAO7B,EAAUnC,EAASpiG,IAAK+lG,EAAkB/lG,IAAKmmG,IAC5DvgG,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,EAAGsQ,EAAQxB,IAM5B,IAAM,IAAIzG,GAAI,EAAGk6F,GAAK1G,EAAMx9F,OAAQgK,GAAIk6F,GAAIl6F,KAAO,CAElD,IAAMm6F,GAAQ3G,EAAOxzF,IACrB87F,EAAmBC,EAAgB/7F,IAEnC,IAAM,IAAIlK,GAAI,EAAGgT,GAAKqxF,GAAMnkG,OAAQF,GAAIgT,GAAIhT,KAAO,CAElD,IAAMomG,GAAO7B,EAAUF,GAAOrkG,IAAKgmG,EAAkBhmG,IAAKmmG,IAEnDtC,EAMNj+F,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,EAAI4hG,EAAYX,EAAQ,GAAIjhG,EAAG4hG,EAAYX,EAAQ,GAAIlhG,EAAI+O,IAJ3E/K,GAAGwgG,GAAKxkG,EAAGwkG,GAAKvkG,EAAGsQ,EAAQxB,MA4G/B,SAAS01F,GAAWjE,EAASkE,GAI5B,IAFA,IAAItmG,EAAIoiG,EAAQliG,SAELF,GAAK,GAAI,CAEnB,IAAM8d,EAAI9d,EACNymE,EAAIzmE,EAAI,EACPymE,EAAI,IAAIA,EAAI27B,EAAQliG,OAAS,GAIlC,IAAM,IAAI8D,EAAI,EAAGuiG,EAAOzD,EAAwB,EAAhBK,EAAqBn/F,EAAIuiG,EAAIviG,IAAO,CAEnE,IAAMwiG,EAAQ/B,EAAOzgG,EACfyiG,EAAQhC,GAASzgG,EAAI,GAO3B0iG,GALUJ,EAAcxoF,EAAI0oF,EACvBF,EAAc7/B,EAAI+/B,EAClBF,EAAc7/B,EAAIggC,EAClBH,EAAcxoF,EAAI2oF,KAU1B,SAAS7gG,GAAGhE,EAAGC,EAAG8O,GAEjBiyF,EAAYpjG,KAAMoC,GAClBghG,EAAYpjG,KAAMqC,GAClB+gG,EAAYpjG,KAAMmR,GAKnB,SAASg2F,GAAIpiG,EAAGC,EAAGC,GAElBmiG,GAAWriG,GACXqiG,GAAWpiG,GACXoiG,GAAWniG,GAEX,IAAMoiG,EAAYnE,EAAcxiG,OAAS,EACnCy8B,EAAM0mE,EAAMyD,cAAevkE,EAAOmgE,EAAemE,EAAY,EAAGA,EAAY,EAAGA,EAAY,GAEjGE,GAAOpqE,EAAK,IACZoqE,GAAOpqE,EAAK,IACZoqE,GAAOpqE,EAAK,IAIb,SAAS+pE,GAAIniG,EAAGC,EAAGC,EAAGsF,GAErB68F,GAAWriG,GACXqiG,GAAWpiG,GACXoiG,GAAW78F,GAEX68F,GAAWpiG,GACXoiG,GAAWniG,GACXmiG,GAAW78F,GAGX,IAAM88F,EAAYnE,EAAcxiG,OAAS,EACnCy8B,EAAM0mE,EAAM2D,mBAAoBzkE,EAAOmgE,EAAemE,EAAY,EAAGA,EAAY,EAAGA,EAAY,EAAGA,EAAY,GAErHE,GAAOpqE,EAAK,IACZoqE,GAAOpqE,EAAK,IACZoqE,GAAOpqE,EAAK,IAEZoqE,GAAOpqE,EAAK,IACZoqE,GAAOpqE,EAAK,IACZoqE,GAAOpqE,EAAK,IAIb,SAASiqE,GAAWlnG,GAEnBgjG,EAAcljG,KAAMojG,EAAqB,EAARljG,EAAY,IAC7CgjG,EAAcljG,KAAMojG,EAAqB,EAARljG,EAAY,IAC7CgjG,EAAcljG,KAAMojG,EAAqB,EAARljG,EAAY,IAK9C,SAASqnG,GAAOE,GAEf1hB,EAAQ/lF,KAAMynG,EAAQrlG,GACtB2jF,EAAQ/lF,KAAMynG,EAAQplG,IA3KvB,WAEC,IAAMu5B,EAAQsnE,EAAcxiG,OAAS,EAErC,GAAK6iG,EAAe,CAOnB,IALA,IAAIpa,EAAQ,EACR1hF,EAASw9F,EAAO9b,EAIV3oF,EAAI,EAAGA,EAAI0kG,EAAM1kG,IAAO,CAEjC,IAAM4hC,EAAOygE,EAAOriG,GACpB2mG,GAAI/kE,EAAM,GAAM36B,EAAQ26B,EAAM,GAAM36B,EAAQ26B,EAAM,GAAM36B,GAKzDA,EAASw9F,GADT9b,EAAQma,EAAwB,EAAhBK,GAKhB,IAAM,IAAInjG,EAAI,EAAGA,EAAI0kG,EAAM1kG,IAAO,CAEjC,IAAM4hC,EAAOygE,EAAOriG,GACpB2mG,GAAI/kE,EAAM,GAAM36B,EAAQ26B,EAAM,GAAM36B,EAAQ26B,EAAM,GAAM36B,QAInD,CAIN,IAAM,IAAIjH,EAAI,EAAGA,EAAI0kG,EAAM1kG,IAAO,CAEjC,IAAM4hC,EAAOygE,EAAOriG,GACpB2mG,GAAI/kE,EAAM,GAAKA,EAAM,GAAKA,EAAM,IAMjC,IAAM,IAAI5hC,EAAI,EAAGA,EAAI0kG,EAAM1kG,IAAO,CAEjC,IAAM4hC,EAAOygE,EAAOriG,GACpB2mG,GAAI/kE,EAAM,GAAM6iE,EAAO3B,EAAOlhE,EAAM,GAAM6iE,EAAO3B,EAAOlhE,EAAM,GAAM6iE,EAAO3B,IAM7EvgE,EAAMjD,SAAUlE,EAAOsnE,EAAcxiG,OAAS,EAAIk7B,EAAO,GA7D1D8rE,GAmEA,WAEC,IAAM9rE,EAAQsnE,EAAcxiG,OAAS,EACjComG,EAAc,EAClBD,GAAWjE,EAASkE,GACpBA,GAAelE,EAAQliG,OAEvB,IAAM,IAAIgK,EAAI,EAAGk6F,EAAK1G,EAAMx9F,OAAQgK,EAAIk6F,EAAIl6F,IAAO,CAElD,IAAMm6F,EAAQ3G,EAAOxzF,GACrBm8F,GAAWhC,EAAOiC,GAGlBA,GAAejC,EAAMnkG,OAKtBqiC,EAAMjD,SAAUlE,EAAOsnE,EAAcxiG,OAAS,EAAIk7B,EAAO,GAjF1D+rE,GAxdgK,OA2BjK,EAAKlrE,aAAc,WAAY,IAAI7B,GAAwBsoE,EAAe,IAC1E,EAAKzmE,aAAc,KAAM,IAAI7B,GAAwBmrD,EAAS,IAE9D,EAAKkP,uBA9B4J,E,0CAgpBlK,WAEC,IAAMjkF,EAAO,+DAKb,OAwFF,SAAmBoa,EAAQ1Y,EAAS1B,GAInC,GAFAA,EAAKoa,OAAS,GAET9a,MAAMC,QAAS6a,GAEnB,IAAM,IAAI5qB,EAAI,EAAGC,EAAI2qB,EAAO1qB,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMgsB,EAAQpB,EAAQ5qB,GAEtBwQ,EAAKoa,OAAOprB,KAAMwsB,EAAM1d,WAMzBkC,EAAKoa,OAAOprB,KAAMorB,EAAOtc,WAIG/b,IAAxB2f,EAAQkxF,cAA4B5yF,EAAK0B,QAAQkxF,YAAclxF,EAAQkxF,YAAYn4E,UAExF,OAAOza,EA9GC42F,CAHQl1G,KAAK65B,WAAWnB,OACf14B,KAAK65B,WAAW7Z,QAEE1B,M,uBAInC,SAAiBA,EAAMoa,GAItB,IAFA,IAAMy8E,EAAiB,GAEbvpF,EAAI,EAAGye,EAAK/rB,EAAKoa,OAAO1qB,OAAQ4d,EAAIye,EAAIze,IAAO,CAExD,IAAMkO,EAAQpB,EAAQpa,EAAKoa,OAAQ9M,IAEnCupF,EAAe7nG,KAAMwsB,GAItB,IAAMo3E,EAAc5yF,EAAK0B,QAAQkxF,YAQjC,YANqB7wG,IAAhB6wG,IAEJ5yF,EAAK0B,QAAQkxF,aAAc,IAAI7H,GAAQ6H,EAAYjkG,OAASq9F,SAAU4G,IAIhE,IAAIX,EAAiB4E,EAAgB72F,EAAK0B,a,GAjrBrB2oB,IAurBxB0oE,GAAmB,CAExBuD,cAAe,SAAW/qF,EAAUymB,EAAU8kE,EAAQC,EAAQC,GAE7D,IAAMC,EAAMjlE,EAAmB,EAAT8kE,GAChBI,EAAMllE,EAAmB,EAAT8kE,EAAa,GAC7BK,EAAMnlE,EAAmB,EAAT+kE,GAChBK,EAAMplE,EAAmB,EAAT+kE,EAAa,GAC7BM,EAAMrlE,EAAmB,EAATglE,GAChBM,EAAMtlE,EAAmB,EAATglE,EAAa,GAEnC,MAAO,CACN,IAAIhiG,GAASiiG,EAAKC,GAClB,IAAIliG,GAASmiG,EAAKC,GAClB,IAAIpiG,GAASqiG,EAAKC,KAKpBd,mBAAoB,SAAWjrF,EAAUymB,EAAU8kE,EAAQC,EAAQC,EAAQO,GAE1E,IAAMN,EAAMjlE,EAAmB,EAAT8kE,GAChBI,EAAMllE,EAAmB,EAAT8kE,EAAa,GAC7BU,EAAMxlE,EAAmB,EAAT8kE,EAAa,GAC7BK,EAAMnlE,EAAmB,EAAT+kE,GAChBK,EAAMplE,EAAmB,EAAT+kE,EAAa,GAC7BU,EAAMzlE,EAAmB,EAAT+kE,EAAa,GAC7BM,EAAMrlE,EAAmB,EAATglE,GAChBM,EAAMtlE,EAAmB,EAATglE,EAAa,GAC7BU,EAAM1lE,EAAmB,EAATglE,EAAa,GAC7BW,EAAM3lE,EAAmB,EAATulE,GAChBK,EAAM5lE,EAAmB,EAATulE,EAAa,GAC7BM,EAAM7lE,EAAmB,EAATulE,EAAa,GAEnC,OAAKznG,KAAKgD,IAAKokG,EAAME,GAAQtnG,KAAKgD,IAAKmkG,EAAME,GAErC,CACN,IAAIniG,GAASiiG,EAAK,EAAIO,GACtB,IAAIxiG,GAASmiG,EAAK,EAAIM,GACtB,IAAIziG,GAASqiG,EAAK,EAAIK,GACtB,IAAI1iG,GAAS2iG,EAAK,EAAIE,IAKhB,CACN,IAAI7iG,GAASkiG,EAAK,EAAIM,GACtB,IAAIxiG,GAASoiG,EAAK,EAAIK,GACtB,IAAIziG,GAASsiG,EAAK,EAAII,GACtB,IAAI1iG,GAAS4iG,EAAK,EAAIC,M,IAmCpBC,G,kDAEL,aAAsC,MAAzBruF,EAAyB,uDAAhB,EAAGwwE,EAAa,uDAAJ,EAAI,oBAErC,IAAM3oF,GAAM,EAAIxB,KAAKiG,KAAM,IAAQ,EAE7Bi8B,EAAW,EACd,EAAG1gC,EAAG,EAAI,EAAGA,EAAG,GAAM,GAAKA,EAAG,EAAI,GAAKA,EAAG,EAC5C,GAAK,EAAGA,EAAI,EAAG,EAAGA,EAAG,GAAK,GAAKA,EAAI,EAAG,GAAKA,EAC3CA,EAAG,GAAK,EAAIA,EAAG,EAAG,GAAMA,EAAG,GAAK,GAAMA,EAAG,EAAG,GAGvC06B,EAAU,CACf,EAAG,GAAI,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GACjD,EAAG,EAAG,EAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAC/C,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3C,EAAG,EAAG,EAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAdT,OAiBrC,cAAOgG,EAAUhG,EAASviB,EAAQwwE,IAE7BtrF,KAAO,sBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRwwE,OAAQA,GAvB4B,E,iDA4BtC,SAAiBj6E,GAEhB,OAAO,IAAI83F,EAAqB93F,EAAKyJ,OAAQzJ,EAAKi6E,Y,GAhClB4I,IAsC5BkV,G,kDAEL,aAAwJ,MAA3IvtF,EAA2I,uDAAlI,CAAE,IAAIxV,GAAS,EAAG,IAAO,IAAIA,GAAS,GAAK,GAAK,IAAIA,GAAS,GAAK,KAASysF,EAAuD,uDAA5C,GAAIuW,EAAwC,uDAA7B,EAAGC,EAA0B,uDAAJ,EAAVnoG,KAAKC,GAAS,qBAEvJ,gBAEKpB,KAAO,gBAEZ,EAAK4sB,WAAa,CACjB/Q,OAAQA,EACRi3E,SAAUA,EACVuW,SAAUA,EACVC,UAAWA,GAGZxW,EAAW3xF,KAAKgC,MAAO2vF,GAIvBwW,EAAYpnG,GAAOonG,EAAW,EAAa,EAAVnoG,KAAKC,IAgBtC,IAZA,IAAMi8B,EAAU,GACVgG,EAAW,GACX7F,EAAM,GAIN+rE,EAAkB,EAAMzW,EACxBG,EAAS,IAAIv6E,GACb1H,EAAK,IAAI3K,GAILxF,EAAI,EAAGA,GAAKiyF,EAAUjyF,IAO/B,IALA,IAAMka,EAAMsuF,EAAWxoG,EAAI0oG,EAAkBD,EAEvC7jG,EAAMtE,KAAKsE,IAAKsV,GAChBvV,EAAMrE,KAAKqE,IAAKuV,GAEZ4D,EAAI,EAAGA,GAAO9C,EAAO9a,OAAS,EAAK4d,IAI5Cs0E,EAAOxwF,EAAIoZ,EAAQ8C,GAAIlc,EAAIgD,EAC3BwtF,EAAOvwF,EAAImZ,EAAQ8C,GAAIjc,EACvBuwF,EAAOzhF,EAAIqK,EAAQ8C,GAAIlc,EAAI+C,EAE3B69B,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1CR,EAAGvO,EAAI5B,EAAIiyF,EACX9hF,EAAGtO,EAAIic,GAAM9C,EAAO9a,OAAS,GAE7By8B,EAAIn9B,KAAM2Q,EAAGvO,EAAGuO,EAAGtO,GASrB,IAAM,IAAI7B,EAAI,EAAGA,EAAIiyF,EAAUjyF,IAE9B,IAAM,IAAI8d,EAAI,EAAGA,EAAM9C,EAAO9a,OAAS,EAAK4d,IAAO,CAElD,IAAM6qF,EAAO7qF,EAAI9d,EAAIgb,EAAO9a,OAEtBqE,EAAIokG,EACJnkG,EAAImkG,EAAO3tF,EAAO9a,OAClBuE,EAAIkkG,EAAO3tF,EAAO9a,OAAS,EAC3B6J,EAAI4+F,EAAO,EAIjBnsE,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GAmBtB,GAXA,EAAK21B,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IAI1D,EAAK83D,uBAKAgU,IAAwB,EAAVnoG,KAAKC,GAWvB,IATA,IAAMm8B,EAAU,EAAK5B,WAAWhhB,OAAOha,MACjC8oG,EAAK,IAAI/wF,GACT8lB,EAAK,IAAI9lB,GACTpW,EAAI,IAAIoW,GAIR8wF,EAAO1W,EAAWj3E,EAAO9a,OAAS,EAE9BF,EAAI,EAAG8d,EAAI,EAAG9d,EAAIgb,EAAO9a,OAAQF,IAAM8d,GAAK,EAIrD8qF,EAAGhnG,EAAI86B,EAAS5e,EAAI,GACpB8qF,EAAG/mG,EAAI66B,EAAS5e,EAAI,GACpB8qF,EAAGj4F,EAAI+rB,EAAS5e,EAAI,GAIpB6f,EAAG/7B,EAAI86B,EAASisE,EAAO7qF,EAAI,GAC3B6f,EAAG97B,EAAI66B,EAASisE,EAAO7qF,EAAI,GAC3B6f,EAAGhtB,EAAI+rB,EAASisE,EAAO7qF,EAAI,GAI3Brc,EAAEqE,WAAY8iG,EAAIjrE,GAAK92B,YAIvB61B,EAAS5e,EAAI,GAAM4e,EAASisE,EAAO7qF,EAAI,GAAMrc,EAAEG,EAC/C86B,EAAS5e,EAAI,GAAM4e,EAASisE,EAAO7qF,EAAI,GAAMrc,EAAEI,EAC/C66B,EAAS5e,EAAI,GAAM4e,EAASisE,EAAO7qF,EAAI,GAAMrc,EAAEkP,EAlIsG,S,iDA0IxJ,SAAiBH,GAEhB,OAAO,IAAI+3F,EAAe/3F,EAAKwK,OAAQxK,EAAKyhF,SAAUzhF,EAAKg4F,SAAUh4F,EAAKi4F,e,GA9IhD5tE,IAoJtBguE,G,kDAEL,aAAsC,MAAzB5uF,EAAyB,uDAAhB,EAAGwwE,EAAa,uDAAJ,EAAI,oBAErC,IAAMjoD,EAAW,CAChB,EAAG,EAAG,GAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3B,GAAK,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,GAAK,GAGxBhG,EAAU,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACxB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACxB,EAAG,EAAG,EAAG,EAAG,EAAG,GAVqB,OAarC,cAAOgG,EAAUhG,EAASviB,EAAQwwE,IAE7BtrF,KAAO,qBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRwwE,OAAQA,GAnB4B,E,iDAwBtC,SAAiBj6E,GAEhB,OAAO,IAAIq4F,EAAoBr4F,EAAKyJ,OAAQzJ,EAAKi6E,Y,GA5BlB4I,IAkC3ByV,G,kDAEL,aAAiI,MAApHC,EAAoH,uDAAtG,GAAKC,EAAiG,uDAAnF,EAAGC,EAAgF,uDAAhE,EAAGC,EAA6D,uDAA/C,EAAGhX,EAA4C,uDAA/B,EAAGC,EAA4B,uDAAJ,EAAV7xF,KAAKC,GAAS,qBAEhI,gBAEKpB,KAAO,eAEZ,EAAK4sB,WAAa,CACjBg9E,YAAaA,EACbC,YAAaA,EACbC,cAAeA,EACfC,YAAaA,EACbhX,WAAYA,EACZC,YAAaA,GAGd8W,EAAgB3oG,KAAKiB,IAAK,EAAG0nG,GAmB7B,IAdA,IAAMzsE,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAIR1iB,EAAS8uF,EACPI,GAAiBH,EAAcD,IAZrCG,EAAc5oG,KAAKiB,IAAK,EAAG2nG,IAarB9W,EAAS,IAAIv6E,GACb1H,EAAK,IAAI3K,GAILsY,EAAI,EAAGA,GAAKorF,EAAaprF,IAAO,CAEzC,IAAM,IAAI9d,EAAI,EAAGA,GAAKipG,EAAejpG,IAAO,CAI3C,IAAMqyF,EAAUH,EAAalyF,EAAIipG,EAAgB9W,EAIjDC,EAAOxwF,EAAIqY,EAAS3Z,KAAKqE,IAAK0tF,GAC9BD,EAAOvwF,EAAIoY,EAAS3Z,KAAKsE,IAAKytF,GAE9B7vD,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1C+rB,EAAQl9B,KAAM,EAAG,EAAG,GAIpB2Q,EAAGvO,GAAMwwF,EAAOxwF,EAAIonG,EAAc,GAAM,EACxC74F,EAAGtO,GAAMuwF,EAAOvwF,EAAImnG,EAAc,GAAM,EAExCrsE,EAAIn9B,KAAM2Q,EAAGvO,EAAGuO,EAAGtO,GAMpBoY,GAAUkvF,EAMX,IAAM,IAAIrrF,EAAI,EAAGA,EAAIorF,EAAaprF,IAIjC,IAFA,IAAMsrF,EAAoBtrF,GAAMmrF,EAAgB,GAEtCjpG,EAAI,EAAGA,EAAIipG,EAAejpG,IAAO,CAE1C,IAAMqyF,EAAUryF,EAAIopG,EAEd7kG,EAAI8tF,EACJ7tF,EAAI6tF,EAAU4W,EAAgB,EAC9BxkG,EAAI4tF,EAAU4W,EAAgB,EAC9Bl/F,EAAIsoF,EAAU,EAIpB71D,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GAtF0G,OA8FhI,EAAK21B,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IAjGsE,E,iDAqGjI,SAAiBnsB,GAEhB,OAAO,IAAIs4F,EAAct4F,EAAKu4F,YAAav4F,EAAKw4F,YAAax4F,EAAKy4F,cAAez4F,EAAK04F,YAAa14F,EAAK0hF,WAAY1hF,EAAK2hF,iB,GAzGhGt3D,IA+GrBwuE,G,kDAEL,aAA2I,MAA9Hz+E,EAA8H,uDAArH,IAAI6yE,GAAO,CAAE,IAAIj4F,GAAS,EAAG,IAAO,IAAIA,IAAW,IAAO,IAAO,IAAIA,GAAS,IAAO,MAAWq9F,EAAqB,uDAAL,GAAK,qBAE1I,gBACK1jG,KAAO,gBAEZ,EAAK4sB,WAAa,CACjBnB,OAAQA,EACRi4E,cAAeA,GAKhB,IAAMrmE,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAIR+F,EAAa,EACbc,EAAa,EAIjB,IAAiC,IAA5B1zB,MAAMC,QAAS6a,GAEnB+3E,EAAU/3E,QAIV,IAAM,IAAI5qB,EAAI,EAAGA,EAAI4qB,EAAO1qB,OAAQF,IAEnC2iG,EAAU/3E,EAAQ5qB,IAElB,EAAKs/B,SAAUoD,EAAYc,EAAYxjC,GAEvC0iC,GAAcc,EACdA,EAAa,EAgBf,SAASm/D,EAAU32E,GAElB,IAAMs9E,EAAc9mE,EAAStiC,OAAS,EAChC8a,EAASgR,EAAMi4E,cAAepB,GAEhC0G,EAAgBvuF,EAAOgR,MACrBw9E,EAAaxuF,EAAO0iF,OAIuB,IAA5CyE,GAAW+B,YAAaqF,KAE5BA,EAAgBA,EAAcpF,WAI/B,IAAM,IAAInkG,EAAI,EAAGC,EAAIupG,EAAWtpG,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAMypG,EAAYD,EAAYxpG,IAEe,IAAxCmiG,GAAW+B,YAAauF,KAE5BD,EAAYxpG,GAAMypG,EAAUtF,WAU9B,IAJA,IAAM9B,EAAQF,GAAWmC,iBAAkBiF,EAAeC,GAIhDxpG,EAAI,EAAGC,EAAIupG,EAAWtpG,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAMypG,EAAYD,EAAYxpG,GAC9BupG,EAAgBA,EAAcnM,OAAQqM,GAMvC,IAAM,IAAIzpG,EAAI,EAAGC,EAAIspG,EAAcrpG,OAAQF,EAAIC,EAAGD,IAAO,CAExD,IAAMoyF,EAASmX,EAAevpG,GAE9BwiC,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAG,GACnC66B,EAAQl9B,KAAM,EAAG,EAAG,GACpBm9B,EAAIn9B,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,GAM5B,IAAM,IAAI7B,EAAI,EAAGC,EAAIoiG,EAAMniG,OAAQF,EAAIC,EAAGD,IAAO,CAEhD,IAAM4hC,EAAOygE,EAAOriG,GAEduE,EAAIq9B,EAAM,GAAM0nE,EAChB9kG,EAAIo9B,EAAM,GAAM0nE,EAChB7kG,EAAIm9B,EAAM,GAAM0nE,EAEtB9sE,EAAQh9B,KAAM+E,EAAGC,EAAGC,GACpB++B,GAAc,GAnH0H,OA6C1I,EAAK9D,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IAhDgF,E,0CA2H3I,WAEC,IAAMnsB,EAAO,+DAIb,OAsBF,SAAiBoa,EAAQpa,GAIxB,GAFAA,EAAKoa,OAAS,GAET9a,MAAMC,QAAS6a,GAEnB,IAAM,IAAI5qB,EAAI,EAAGC,EAAI2qB,EAAO1qB,OAAQF,EAAIC,EAAGD,IAAO,CAEjD,IAAMgsB,EAAQpB,EAAQ5qB,GAEtBwQ,EAAKoa,OAAOprB,KAAMwsB,EAAM1d,WAMzBkC,EAAKoa,OAAOprB,KAAMorB,EAAOtc,MAI1B,OAAOkC,EA1CCya,CAFQ/4B,KAAK65B,WAAWnB,OAERpa,M,uBAIxB,SAAiBA,EAAMoa,GAItB,IAFA,IAAMy8E,EAAiB,GAEbvpF,EAAI,EAAGye,EAAK/rB,EAAKoa,OAAO1qB,OAAQ4d,EAAIye,EAAIze,IAAO,CAExD,IAAMkO,EAAQpB,EAAQpa,EAAKoa,OAAQ9M,IAEnCupF,EAAe7nG,KAAMwsB,GAItB,OAAO,IAAIq9E,EAAehC,EAAgB72F,EAAKqyF,mB,GAnJrBhoE,I,IAiLtB6uE,G,kDAEL,aAAiJ,MAApIzvF,EAAoI,uDAA3H,EAAGmoB,EAAwH,uDAAxG,GAAIC,EAAoG,uDAAnF,GAAImmE,EAA+E,uDAApE,EAAGC,EAAiE,uDAA3C,EAAVnoG,KAAKC,GAAQ2xF,EAAwC,uDAA3B,EAAGC,EAAwB,uDAAV7xF,KAAKC,GAAK,qBAEhJ,gBACKpB,KAAO,iBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRmoB,cAAeA,EACfC,eAAgBA,EAChBmmE,SAAUA,EACVC,UAAWA,EACXvW,WAAYA,EACZC,YAAaA,GAGd/vD,EAAgB9hC,KAAKiB,IAAK,EAAGjB,KAAKgC,MAAO8/B,IACzCC,EAAiB/hC,KAAKiB,IAAK,EAAGjB,KAAKgC,MAAO+/B,IAmB1C,IAjBA,IAAMsnE,EAAWrpG,KAAKgB,IAAK4wF,EAAaC,EAAa7xF,KAAKC,IAEtDb,EAAQ,EACNkqG,EAAO,GAEPxX,EAAS,IAAIv6E,GACbiC,EAAS,IAAIjC,GAIb2kB,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAIFnkB,EAAK,EAAGA,GAAM6pB,EAAgB7pB,IAAQ,CAE/C,IAAMqxF,EAAc,GAEdjkG,EAAI4S,EAAK6pB,EAIXynE,EAAU,EAEH,GAANtxF,GAAyB,GAAd05E,EAEf4X,EAAU,GAAM1nE,EAEL5pB,GAAM6pB,GAAkBsnE,GAAYrpG,KAAKC,KAEpDupG,GAAY,GAAM1nE,GAInB,IAAM,IAAI7pB,EAAK,EAAGA,GAAM6pB,EAAe7pB,IAAQ,CAE9C,IAAMgC,EAAIhC,EAAK6pB,EAIfgwD,EAAOxwF,GAAMqY,EAAS3Z,KAAKqE,IAAK6jG,EAAWjuF,EAAIkuF,GAAcnoG,KAAKsE,IAAKstF,EAAatsF,EAAIusF,GACxFC,EAAOvwF,EAAIoY,EAAS3Z,KAAKqE,IAAKutF,EAAatsF,EAAIusF,GAC/CC,EAAOzhF,EAAIsJ,EAAS3Z,KAAKsE,IAAK4jG,EAAWjuF,EAAIkuF,GAAcnoG,KAAKsE,IAAKstF,EAAatsF,EAAIusF,GAEtF3vD,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1CmJ,EAAO3K,KAAMijF,GAASvrF,YACtB61B,EAAQl9B,KAAMsa,EAAOlY,EAAGkY,EAAOjY,EAAGiY,EAAOnJ,GAIzCgsB,EAAIn9B,KAAM+a,EAAIuvF,EAAS,EAAIlkG,GAE3BikG,EAAYrqG,KAAME,KAInBkqG,EAAKpqG,KAAMqqG,GAMZ,IAAM,IAAIrxF,EAAK,EAAGA,EAAK6pB,EAAgB7pB,IAEtC,IAAM,IAAID,EAAK,EAAGA,EAAK6pB,EAAe7pB,IAAQ,CAE7C,IAAMhU,EAAIqlG,EAAMpxF,GAAMD,EAAK,GACrB/T,EAAIolG,EAAMpxF,GAAMD,GAChB9T,EAAImlG,EAAMpxF,EAAK,GAAKD,GACpBxO,EAAI6/F,EAAMpxF,EAAK,GAAKD,EAAK,IAEnB,IAAPC,GAAY05E,EAAa,IAAI11D,EAAQh9B,KAAM+E,EAAGC,EAAGuF,IACjDyO,IAAO6pB,EAAiB,GAAKsnE,EAAWrpG,KAAKC,KAAKi8B,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GAhGmE,OAwGhJ,EAAK21B,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IA3GsF,E,iDA+GjJ,SAAiBnsB,GAEhB,OAAO,IAAIk5F,EAAgBl5F,EAAKyJ,OAAQzJ,EAAK4xB,cAAe5xB,EAAK6xB,eAAgB7xB,EAAKg4F,SAAUh4F,EAAKi4F,UAAWj4F,EAAK0hF,WAAY1hF,EAAK2hF,iB,GAnH3Gt3D,IAyHvBkvE,G,kDAEL,aAAsC,MAAzB9vF,EAAyB,uDAAhB,EAAGwwE,EAAa,uDAAJ,EAAI,oBAErC,IAAMjoD,EAAW,CAChB,EAAG,EAAG,GAAM,GAAK,EAAG,GAAM,EAAG,GAAK,EAAI,GAAK,GAAK,GAG3ChG,EAAU,CACf,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAPE,OAUrC,cAAOgG,EAAUhG,EAASviB,EAAQwwE,IAE7BtrF,KAAO,sBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRwwE,OAAQA,GAhB4B,E,iDAqBtC,SAAiBj6E,GAEhB,OAAO,IAAIu5F,EAAqBv5F,EAAKyJ,OAAQzJ,EAAKi6E,Y,GAzBlB4I,IA+B5B2W,G,kDAEL,aAAkG,MAArF/vF,EAAqF,uDAA5E,EAAGgwF,EAAyE,uDAAlE,GAAKxX,EAA6D,uDAA5C,EAAGyX,EAAyC,uDAAvB,EAAGC,EAAoB,uDAAJ,EAAV7pG,KAAKC,GAAS,qBAEjG,gBACKpB,KAAO,gBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRgwF,KAAMA,EACNxX,eAAgBA,EAChByX,gBAAiBA,EACjBC,IAAKA,GAGN1X,EAAiBnyF,KAAKgC,MAAOmwF,GAC7ByX,EAAkB5pG,KAAKgC,MAAO4nG,GAiB9B,IAbA,IAAM1tE,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAINt1B,EAAS,IAAIwQ,GACbu6E,EAAS,IAAIv6E,GACbiC,EAAS,IAAIjC,GAITiG,EAAI,EAAGA,GAAK20E,EAAgB30E,IAErC,IAAM,IAAI9d,EAAI,EAAGA,GAAKkqG,EAAiBlqG,IAAO,CAE7C,IAAMua,EAAIva,EAAIkqG,EAAkBC,EAC1BvkG,EAAIkY,EAAI20E,EAAiBnyF,KAAKC,GAAK,EAIzC6xF,EAAOxwF,GAAMqY,EAASgwF,EAAO3pG,KAAKqE,IAAKiB,IAAQtF,KAAKqE,IAAK4V,GACzD63E,EAAOvwF,GAAMoY,EAASgwF,EAAO3pG,KAAKqE,IAAKiB,IAAQtF,KAAKsE,IAAK2V,GACzD63E,EAAOzhF,EAAIs5F,EAAO3pG,KAAKsE,IAAKgB,GAE5B48B,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1CtJ,EAAOzF,EAAIqY,EAAS3Z,KAAKqE,IAAK4V,GAC9BlT,EAAOxF,EAAIoY,EAAS3Z,KAAKsE,IAAK2V,GAC9BT,EAAO/T,WAAYqsF,EAAQ/qF,GAASR,YAEpC61B,EAAQl9B,KAAMsa,EAAOlY,EAAGkY,EAAOjY,EAAGiY,EAAOnJ,GAIzCgsB,EAAIn9B,KAAMQ,EAAIkqG,GACdvtE,EAAIn9B,KAAMse,EAAI20E,GAQhB,IAAM,IAAI30E,EAAI,EAAGA,GAAK20E,EAAgB30E,IAErC,IAAM,IAAI9d,EAAI,EAAGA,GAAKkqG,EAAiBlqG,IAAO,CAI7C,IAAMuE,GAAM2lG,EAAkB,GAAMpsF,EAAI9d,EAAI,EACtCwE,GAAM0lG,EAAkB,IAAQpsF,EAAI,GAAM9d,EAAI,EAC9CyE,GAAMylG,EAAkB,IAAQpsF,EAAI,GAAM9d,EAC1C+J,GAAMmgG,EAAkB,GAAMpsF,EAAI9d,EAIxCw8B,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GA/E2E,OAuFjG,EAAK21B,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IA1FuC,E,iDA8FlG,SAAiBnsB,GAEhB,OAAO,IAAIw5F,EAAex5F,EAAKyJ,OAAQzJ,EAAKy5F,KAAMz5F,EAAKiiF,eAAgBjiF,EAAK05F,gBAAiB15F,EAAK25F,S,GAlGxEtvE,IAwGtBuvE,G,kDAEL,aAA8F,MAAjFnwF,EAAiF,uDAAxE,EAAGgwF,EAAqE,uDAA9D,GAAKC,EAAyD,uDAAvC,GAAIzX,EAAmC,uDAAlB,EAAGz9E,EAAe,uDAAX,EAAG1Q,EAAQ,uDAAJ,EAAI,qBAE7F,gBACKnF,KAAO,oBAEZ,EAAK4sB,WAAa,CACjB9R,OAAQA,EACRgwF,KAAMA,EACNC,gBAAiBA,EACjBzX,eAAgBA,EAChBz9E,EAAGA,EACH1Q,EAAGA,GAGJ4lG,EAAkB5pG,KAAKgC,MAAO4nG,GAC9BzX,EAAiBnyF,KAAKgC,MAAOmwF,GAuB7B,IAnBA,IAAMj2D,EAAU,GACVgG,EAAW,GACX9F,EAAU,GACVC,EAAM,GAINy1D,EAAS,IAAIv6E,GACbiC,EAAS,IAAIjC,GAEbwyF,EAAK,IAAIxyF,GACTyyF,EAAK,IAAIzyF,GAET0yF,EAAI,IAAI1yF,GACR2yF,EAAI,IAAI3yF,GACR4yF,EAAI,IAAI5yF,GAIJ7X,EAAI,EAAGA,GAAKkqG,IAAoBlqG,EAAI,CAI7C,IAAMua,EAAIva,EAAIkqG,EAAkBl1F,EAAI1U,KAAKC,GAAK,EAK9CmqG,EAA0BnwF,EAAGvF,EAAG1Q,EAAG2V,EAAQowF,GAC3CK,EAA0BnwF,EAAI,IAAMvF,EAAG1Q,EAAG2V,EAAQqwF,GAIlDE,EAAEzkG,WAAYukG,EAAID,GAClBI,EAAE3kG,WAAYwkG,EAAID,GAClBE,EAAEtxF,aAAcuxF,EAAGC,GACnBA,EAAExxF,aAAcsxF,EAAGC,GAInBD,EAAE1jG,YACF4jG,EAAE5jG,YAEF,IAAM,IAAIiX,EAAI,EAAGA,GAAK20E,IAAmB30E,EAAI,CAK5C,IAAMlY,EAAIkY,EAAI20E,EAAiBnyF,KAAKC,GAAK,EACnC4K,GAAO8+F,EAAO3pG,KAAKqE,IAAKiB,GACxBwF,EAAK6+F,EAAO3pG,KAAKsE,IAAKgB,GAK5BwsF,EAAOxwF,EAAIyoG,EAAGzoG,GAAMuJ,EAAKs/F,EAAE7oG,EAAIwJ,EAAKm/F,EAAE3oG,GACtCwwF,EAAOvwF,EAAIwoG,EAAGxoG,GAAMsJ,EAAKs/F,EAAE5oG,EAAIuJ,EAAKm/F,EAAE1oG,GACtCuwF,EAAOzhF,EAAI05F,EAAG15F,GAAMxF,EAAKs/F,EAAE95F,EAAIvF,EAAKm/F,EAAE55F,GAEtC6xB,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,GAI1CmJ,EAAO/T,WAAYqsF,EAAQiY,GAAKxjG,YAEhC61B,EAAQl9B,KAAMsa,EAAOlY,EAAGkY,EAAOjY,EAAGiY,EAAOnJ,GAIzCgsB,EAAIn9B,KAAMQ,EAAIkqG,GACdvtE,EAAIn9B,KAAMse,EAAI20E,IAQhB,IAAM,IAAI30E,EAAI,EAAGA,GAAKosF,EAAiBpsF,IAEtC,IAAM,IAAI9d,EAAI,EAAGA,GAAKyyF,EAAgBzyF,IAAO,CAI5C,IAAMuE,GAAMkuF,EAAiB,IAAQ30E,EAAI,IAAQ9d,EAAI,GAC/CwE,GAAMiuF,EAAiB,GAAM30E,GAAM9d,EAAI,GACvCyE,GAAMguF,EAAiB,GAAM30E,EAAI9d,EACjC+J,GAAM0oF,EAAiB,IAAQ30E,EAAI,GAAM9d,EAI/Cw8B,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,GAetB,SAAS2gG,EAA0BnwF,EAAGvF,EAAG1Q,EAAG2V,EAAQgL,GAEnD,IAAM0lF,EAAKrqG,KAAKqE,IAAK4V,GACfqwF,EAAKtqG,KAAKsE,IAAK2V,GACfswF,EAAUvmG,EAAI0Q,EAAIuF,EAClBuwF,EAAKxqG,KAAKqE,IAAKkmG,GAErB5lF,EAASrjB,EAAIqY,GAAW,EAAI6wF,GAAO,GAAMH,EACzC1lF,EAASpjB,EAAIoY,GAAW,EAAI6wF,GAAOF,EAAK,GACxC3lF,EAAStU,EAAIsJ,EAAS3Z,KAAKsE,IAAKimG,GAAY,GAvIgD,OAuH7F,EAAKnrE,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IA1HmC,E,iDA6I9F,SAAiBnsB,GAEhB,OAAO,IAAI45F,EAAmB55F,EAAKyJ,OAAQzJ,EAAKy5F,KAAMz5F,EAAK05F,gBAAiB15F,EAAKiiF,eAAgBjiF,EAAKwE,EAAGxE,EAAKlM,O,GAjJhFu2B,IAuJ1BkwE,G,kDAEL,aAAsM,MAAzL33C,EAAyL,uDAAlL,IAAI+nC,GAAuB,IAAItjF,IAAW,GAAK,EAAG,GAAK,IAAIA,IAAW,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,IAAOqyF,EAAuE,uDAArD,GAAIjwF,EAAiD,uDAAxC,EAAGw4E,EAAqC,uDAApB,EAAG4E,EAAiB,6EAErM,gBACKl4F,KAAO,eAEZ,EAAK4sB,WAAa,CACjBqnC,KAAMA,EACN82C,gBAAiBA,EACjBjwF,OAAQA,EACRw4E,eAAgBA,EAChB4E,OAAQA,GAGT,IAAM2T,EAAS53C,EAAK2wC,oBAAqBmG,EAAiB7S,GAI1D,EAAKx6D,SAAWmuE,EAAOnuE,SACvB,EAAKH,QAAUsuE,EAAOtuE,QACtB,EAAK46D,UAAY0T,EAAO1T,UAIxB,IAAMlF,EAAS,IAAIv6E,GACbiC,EAAS,IAAIjC,GACb1H,EAAK,IAAI3K,GACXylG,EAAI,IAAIpzF,GAIN2qB,EAAW,GACX9F,EAAU,GACVC,EAAM,GACNH,EAAU,GAehB,SAAS0uE,IAER,IAAM,IAAIlrG,EAAI,EAAGA,EAAIkqG,EAAiBlqG,IAErCmrG,EAAiBnrG,GASlBmrG,GAA8B,IAAX9T,EAAqB6S,EAAkB,GAK1DjW,IAIAmX,IAID,SAASD,EAAiBnrG,GAIzBirG,EAAI73C,EAAKmjC,WAAYv2F,EAAIkqG,EAAiBe,GAS1C,IALA,IAAMR,EAAIO,EAAOtuE,QAAS18B,GACpBuqG,EAAIS,EAAO1T,UAAWt3F,GAIlB8d,EAAI,EAAGA,GAAK20E,EAAgB30E,IAAO,CAE5C,IAAMlY,EAAIkY,EAAI20E,EAAiBnyF,KAAKC,GAAK,EAEnCqE,EAAMtE,KAAKsE,IAAKgB,GAChBjB,GAAQrE,KAAKqE,IAAKiB,GAIxBkU,EAAOlY,EAAM+C,EAAM8lG,EAAE7oG,EAAIgD,EAAM2lG,EAAE3oG,EACjCkY,EAAOjY,EAAM8C,EAAM8lG,EAAE5oG,EAAI+C,EAAM2lG,EAAE1oG,EACjCiY,EAAOnJ,EAAMhM,EAAM8lG,EAAE95F,EAAI/L,EAAM2lG,EAAE55F,EACjCmJ,EAAOjT,YAEP61B,EAAQl9B,KAAMsa,EAAOlY,EAAGkY,EAAOjY,EAAGiY,EAAOnJ,GAIzCyhF,EAAOxwF,EAAIqpG,EAAErpG,EAAIqY,EAASH,EAAOlY,EACjCwwF,EAAOvwF,EAAIopG,EAAEppG,EAAIoY,EAASH,EAAOjY,EACjCuwF,EAAOzhF,EAAIs6F,EAAEt6F,EAAIsJ,EAASH,EAAOnJ,EAEjC6xB,EAAShjC,KAAM4yF,EAAOxwF,EAAGwwF,EAAOvwF,EAAGuwF,EAAOzhF,IAM5C,SAASy6F,IAER,IAAM,IAAIttF,EAAI,EAAGA,GAAKosF,EAAiBpsF,IAEtC,IAAM,IAAI9d,EAAI,EAAGA,GAAKyyF,EAAgBzyF,IAAO,CAE5C,IAAMuE,GAAMkuF,EAAiB,IAAQ30E,EAAI,IAAQ9d,EAAI,GAC/CwE,GAAMiuF,EAAiB,GAAM30E,GAAM9d,EAAI,GACvCyE,GAAMguF,EAAiB,GAAM30E,EAAI9d,EACjC+J,GAAM0oF,EAAiB,IAAQ30E,EAAI,GAAM9d,EAI/Cw8B,EAAQh9B,KAAM+E,EAAGC,EAAGuF,GACpByyB,EAAQh9B,KAAMgF,EAAGC,EAAGsF,IAQvB,SAASkqF,IAER,IAAM,IAAIj0F,EAAI,EAAGA,GAAKkqG,EAAiBlqG,IAEtC,IAAM,IAAI8d,EAAI,EAAGA,GAAK20E,EAAgB30E,IAErC3N,EAAGvO,EAAI5B,EAAIkqG,EACX/5F,EAAGtO,EAAIic,EAAI20E,EAEX91D,EAAIn9B,KAAM2Q,EAAGvO,EAAGuO,EAAGtO,GAlJ+K,OAqCrMqpG,IAIA,EAAKxrE,SAAUlD,GACf,EAAKP,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACrE,EAAKvG,aAAc,SAAU,IAAI7B,GAAwBsC,EAAS,IAClE,EAAKT,aAAc,KAAM,IAAI7B,GAAwBuC,EAAK,IA5C2I,E,0CA4JtM,WAEC,IAAMnsB,EAAO,+DAIb,OAFAA,EAAK4iD,KAAOlhE,KAAK65B,WAAWqnC,KAAKnoC,SAE1Bza,K,uBAIR,SAAiBA,GAIhB,OAAO,IAAIu6F,GACV,IAAIxP,GAAQ/qF,EAAK4iD,KAAKj0D,OAASq9F,SAAUhsF,EAAK4iD,MAC9C5iD,EAAK05F,gBACL15F,EAAKyJ,OACLzJ,EAAKiiF,eACLjiF,EAAK6mF,Y,GAjLmBx8D,IAwLrBwwE,G,kDAEL,aAA+B,MAAlBtvF,EAAkB,uDAAP,KASvB,GAT8B,qBAE9B,gBACK5c,KAAO,oBAEZ,EAAK4sB,WAAa,CACjBhQ,SAAUA,GAGO,OAAbA,EAAoB,CAIxB,IAAMymB,EAAW,GACX8oE,EAAQ,IAAIC,IAIZnwE,EAAQ,IAAIvjB,GACZixB,EAAM,IAAIjxB,GAEhB,GAAwB,OAAnBkE,EAASrc,MAAiB,CAI9B,IAAMulB,EAAWlJ,EAAS+e,WAAW7V,SAC/BuX,EAAUzgB,EAASrc,MACrBu7B,EAASlf,EAASkf,OAEC,IAAlBA,EAAO/6B,SAEX+6B,EAAS,CAAE,CAAEG,MAAO,EAAGroB,MAAOypB,EAAQzpB,MAAOsoB,cAAe,KAM7D,IAAM,IAAImwE,EAAI,EAAGC,EAAKxwE,EAAO/6B,OAAQsrG,EAAIC,IAAOD,EAO/C,IALA,IAAMhuE,EAAQvC,EAAQuwE,GAEhB9oE,EAAalF,EAAMpC,MACnBoI,EAAahG,EAAMzqB,MAEf/S,EAAI0iC,EAAYziC,EAAMyiC,EAAac,EAAcxjC,EAAIC,EAAGD,GAAK,EAEtE,IAAM,IAAI8d,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAMob,EAASsD,EAAQr1B,KAAMnH,EAAI8d,GAC3Bqb,EAASqD,EAAQr1B,KAAMnH,GAAM8d,EAAI,GAAM,GAE7Csd,EAAMxN,oBAAqB3I,EAAUiU,GACrC4P,EAAIlb,oBAAqB3I,EAAUkU,IAEQ,IAAtCuyE,GAActwE,EAAO0N,EAAKwiE,KAE9B9oE,EAAShjC,KAAM47B,EAAMx5B,EAAGw5B,EAAMv5B,EAAGu5B,EAAMzqB,GACvC6xB,EAAShjC,KAAMspC,EAAIlnC,EAAGknC,EAAIjnC,EAAGinC,EAAIn4B,UAgBrC,IAFA,IAAMsU,EAAWlJ,EAAS+e,WAAW7V,SAE3BjlB,EAAI,EAAGC,EAAMglB,EAASlS,MAAQ,EAAK/S,EAAIC,EAAGD,IAEnD,IAAM,IAAI8d,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAK9B,IAAMob,EAAS,EAAIl5B,EAAI8d,EACjBqb,EAAS,EAAIn5B,GAAQ8d,EAAI,GAAM,EAErCsd,EAAMxN,oBAAqB3I,EAAUiU,GACrC4P,EAAIlb,oBAAqB3I,EAAUkU,IAEQ,IAAtCuyE,GAActwE,EAAO0N,EAAKwiE,KAE9B9oE,EAAShjC,KAAM47B,EAAMx5B,EAAGw5B,EAAMv5B,EAAGu5B,EAAMzqB,GACvC6xB,EAAShjC,KAAMspC,EAAIlnC,EAAGknC,EAAIjnC,EAAGinC,EAAIn4B,IAYrC,EAAKsrB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IArGxC,S,UAFA3H,IA+GhC,SAAS6wE,GAActwE,EAAO0N,EAAKwiE,GAElC,IAAMK,EAAQ,GAAH,OAAMvwE,EAAMx5B,EAAZ,YAAiBw5B,EAAMv5B,EAAvB,YAA4Bu5B,EAAMzqB,EAAlC,YAAuCm4B,EAAIlnC,EAA3C,YAAgDknC,EAAIjnC,EAApD,YAAyDinC,EAAIn4B,GAClEi7F,EAAQ,GAAH,OAAM9iE,EAAIlnC,EAAV,YAAeknC,EAAIjnC,EAAnB,YAAwBinC,EAAIn4B,EAA5B,YAAiCyqB,EAAMx5B,EAAvC,YAA4Cw5B,EAAMv5B,EAAlD,YAAuDu5B,EAAMzqB,GAExE,OAA4B,IAAvB26F,EAAM7qD,IAAKkrD,KAA2C,IAAvBL,EAAM7qD,IAAKmrD,KAM9CN,EAAMhwF,IAAKqwF,EAAOC,IACX,GAMT,IAAIC,GAA0BrpG,OAAOC,OAAO,CAC3CC,UAAW,KACXy/B,YAAaA,GACb2pE,kBAAmB3pE,GACnB6vD,eAAgBA,GAChB+Z,qBAAsB/Z,GACtBoB,aAAcA,GACd4Y,mBAAoB5Y,GACpBd,iBAAkBA,GAClB2Z,uBAAwB3Z,GACxBqC,qBAAsBA,GACtBuX,2BAA4BvX,GAC5BK,cAAeA,GACfyN,gBAAiBA,GACjB0J,sBAAuB1J,GACvB6F,oBAAqBA,GACrB8D,0BAA2B9D,GAC3BC,cAAeA,GACf8D,oBAAqB9D,GACrBM,mBAAoBA,GACpByD,yBAA0BzD,GAC1B/7D,cAAeA,GACfy/D,oBAAqBz/D,GACrBumD,mBAAoBA,GACpBmZ,yBAA0BnZ,GAC1ByV,aAAcA,GACd2D,mBAAoB3D,GACpBO,cAAeA,GACfqD,oBAAqBrD,GACrBK,eAAgBA,GAChBiD,qBAAsBjD,GACtBK,oBAAqBA,GACrB6C,0BAA2B7C,GAC3BC,cAAeA,GACf6C,oBAAqB7C,GACrBI,kBAAmBA,GACnB0C,wBAAyB1C,GACzBW,aAAcA,GACdgC,mBAAoBhC,GACpBM,kBAAmBA,KASd9tC,G,kDAEL,WAAaxxC,GAAa,kCAEzB,gBAEK5sB,KAAO,iBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,GACxB,EAAK3G,aAAc,EAEnB,EAAK2I,UAAW1M,GATS,E,wCAa1B,SAAM3c,GAML,OAJA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAEjBjgC,S,GArBoBs9B,IA2B7B+tC,GAAe/1D,UAAU23E,kBAAmB,E,IAkDtCliB,G,kDAEL,WAAalxC,GAAa,kCAEzB,gBAEKkY,QAAU,CAAE,SAAY,IAE7B,EAAK9kC,KAAO,uBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UACxB,EAAKpE,UAAY,EACjB,EAAKC,UAAY,EAEjB,EAAKgB,IAAM,KAEX,EAAKG,SAAW,KAChB,EAAKC,kBAAoB,EAEzB,EAAKC,MAAQ,KACb,EAAKC,eAAiB,EAEtB,EAAKlB,SAAW,IAAI+D,GAAO,GAC3B,EAAK9D,kBAAoB,EACzB,EAAK4B,YAAc,KAEnB,EAAKV,QAAU,KACf,EAAKC,UAAY,EAEjB,EAAKC,UAAY,KACjB,EAAKC,cAAgB32B,GACrB,EAAK42B,YAAc,IAAIzuB,GAAS,EAAG,GAEnC,EAAK0uB,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAKC,aAAe,KAEpB,EAAKC,aAAe,KAEpB,EAAKd,SAAW,KAEhB,EAAKmB,OAAS,KACd,EAAKE,gBAAkB,EAEvB,EAAKE,gBAAkB,IAEvB,EAAKa,WAAY,EACjB,EAAKC,mBAAqB,EAC1B,EAAKC,iBAAmB,QACxB,EAAKC,kBAAoB,QAEzB,EAAK9D,aAAc,EAEnB,EAAKwG,UAAW1M,GArDS,E,wCAyD1B,SAAM3c,GAmDL,OAjDA,4DAAYA,GAEZld,KAAK+xC,QAAU,CAAE,SAAY,IAE7B/xC,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OACxBjgC,KAAKmgC,UAAYjjB,EAAOijB,UACxBngC,KAAKogC,UAAYljB,EAAOkjB,UAExBpgC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKuhC,SAAWrkB,EAAOqkB,SACvBvhC,KAAKwhC,kBAAoBtkB,EAAOskB,kBAEhCxhC,KAAKyhC,MAAQvkB,EAAOukB,MACpBzhC,KAAK0hC,eAAiBxkB,EAAOwkB,eAE7B1hC,KAAKwgC,SAASvjB,KAAMC,EAAOsjB,UAC3BxgC,KAAKqiC,YAAcnlB,EAAOmlB,YAC1BriC,KAAKygC,kBAAoBvjB,EAAOujB,kBAEhCzgC,KAAK2hC,QAAUzkB,EAAOykB,QACtB3hC,KAAK4hC,UAAY1kB,EAAO0kB,UAExB5hC,KAAK6hC,UAAY3kB,EAAO2kB,UACxB7hC,KAAK8hC,cAAgB5kB,EAAO4kB,cAC5B9hC,KAAK+hC,YAAY9kB,KAAMC,EAAO6kB,aAE9B/hC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAE/BliC,KAAKmiC,aAAejlB,EAAOilB,aAE3BniC,KAAKoiC,aAAellB,EAAOklB,aAE3BpiC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKyiC,OAASvlB,EAAOulB,OACrBziC,KAAK2iC,gBAAkBzlB,EAAOylB,gBAE9B3iC,KAAK6iC,gBAAkB3lB,EAAO2lB,gBAE9B7iC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBACjC3jC,KAAK4jC,iBAAmB1mB,EAAO0mB,iBAC/B5jC,KAAK6jC,kBAAoB3mB,EAAO2mB,kBAEhC7jC,KAAK+/B,YAAc7iB,EAAO6iB,YAEnB//B,S,GA9G0Bs9B,IAoHnCytC,GAAqBz1D,UAAUq2D,wBAAyB,E,IAiClDX,G,kDAEL,WAAanxC,GAAa,kCAEzB,gBAEKkY,QAAU,CAEd,SAAY,GACZ,SAAY,IAIb,EAAK9kC,KAAO,uBAEZ,EAAK+zB,aAAe,KACpB,EAAKD,mBAAqB,EAC1B,EAAKE,sBAAwB,KAC7B,EAAKE,qBAAuB,IAAI7tB,GAAS,EAAG,GAC5C,EAAK4tB,mBAAqB,KAE1B,EAAK6iB,IAAM,IAEXzzC,OAAO6L,eAAP7L,OAAA,IAAAA,CAAA,GAA6B,eAAgB,CAC5CwpC,IAAK,WAEJ,OAAS3qC,GAAO,KAAQnP,KAAK+jD,IAAM,IAAQ/jD,KAAK+jD,IAAM,GAAK,EAAG,IAG/D5wC,IAAK,SAAWyvB,GAEf5iC,KAAK+jD,KAAQ,EAAI,GAAMnhB,IAAmB,EAAI,GAAMA,MAKtD,EAAKtC,UAAY,IAAIiE,GAAO,GAC5B,EAAKhE,eAAiB,EAEtB,EAAKyC,gBAAkB,KAEvB,EAAKC,UAAY,IACjB,EAAKC,aAAe,KACpB,EAAKC,oBAAsB,EAC3B,EAAKC,gBAAkB,IAAImB,GAAO,EAAG,EAAG,GAExC,EAAK5D,kBAAoB,EACzB,EAAK4B,qBAAuB,KAC5B,EAAK3B,aAAe,IAAI2D,GAAO,EAAG,EAAG,GACrC,EAAK/B,gBAAkB,KAEvB,EAAKs4E,OAAS,EACd,EAAKC,WAAa,EAClB,EAAKC,cAAgB,EAErB,EAAKz0E,UAAW1M,GArDS,E,uCAyD1B,WAEC,OAAO75B,KAAK86G,Q,IAIb,SAAWt7G,GAELQ,KAAK86G,OAAS,IAAMt7G,EAAQ,GAEhCQ,KAAK6c,UAIN7c,KAAK86G,OAASt7G,I,qBAIf,WAEC,OAAOQ,KAAK+6G,Y,IAIb,SAAev7G,GAETQ,KAAK+6G,WAAa,IAAMv7G,EAAQ,GAEpCQ,KAAK6c,UAIN7c,KAAK+6G,WAAav7G,I,wBAInB,WAEC,OAAOQ,KAAKg7G,e,IAIb,SAAkBx7G,GAEZQ,KAAKg7G,cAAgB,IAAMx7G,EAAQ,GAEvCQ,KAAK6c,UAIN7c,KAAKg7G,cAAgBx7G,I,kBAItB,SAAM0d,GAqCL,OAnCA,4DAAYA,GAEZld,KAAK+xC,QAAU,CAEd,SAAY,GACZ,SAAY,IAIb/xC,KAAK8gC,UAAY5jB,EAAO4jB,UACxB9gC,KAAKghC,aAAe9jB,EAAO8jB,aAC3BhhC,KAAK+gC,mBAAqB7jB,EAAO6jB,mBACjC/gC,KAAKihC,sBAAwB/jB,EAAO+jB,sBACpCjhC,KAAKkhC,mBAAqBhkB,EAAOgkB,mBACjClhC,KAAKmhC,qBAAqBlkB,KAAMC,EAAOikB,sBAEvCnhC,KAAK+jD,IAAM7mC,EAAO6mC,IAElB/jD,KAAKqgC,MAAQnjB,EAAOmjB,MACpBrgC,KAAKsgC,UAAUrjB,KAAMC,EAAOojB,WAC5BtgC,KAAKugC,eAAiBrjB,EAAOqjB,eAE7BvgC,KAAK+iC,aAAe7lB,EAAO6lB,aAC3B/iC,KAAKgjC,gBAAkB9lB,EAAO8lB,gBAE9BhjC,KAAKijC,UAAY/lB,EAAO+lB,UACxBjjC,KAAKkjC,aAAehmB,EAAOgmB,aAC3BljC,KAAKmjC,oBAAsBjmB,EAAOimB,oBAClCnjC,KAAKojC,gBAAgBnmB,KAAMC,EAAOkmB,iBAElCpjC,KAAK2gC,kBAAoBzjB,EAAOyjB,kBAChC3gC,KAAKuiC,qBAAuBrlB,EAAOqlB,qBACnCviC,KAAK4gC,aAAa3jB,KAAMC,EAAO0jB,cAC/B5gC,KAAKwiC,gBAAkBtlB,EAAOslB,gBAEvBxiC,S,GAtJ0B+qE,IA4JnCC,GAAqB11D,UAAU22E,wBAAyB,E,IAgDlDphB,G,kDAEL,WAAahxC,GAAa,kCAEzB,gBAEK5sB,KAAO,oBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UACxB,EAAK7D,SAAW,IAAI6D,GAAO,SAC3B,EAAK1D,UAAY,GAEjB,EAAKO,IAAM,KAEX,EAAKG,SAAW,KAChB,EAAKC,kBAAoB,EAEzB,EAAKC,MAAQ,KACb,EAAKC,eAAiB,EAEtB,EAAKlB,SAAW,IAAI+D,GAAO,GAC3B,EAAK9D,kBAAoB,EACzB,EAAK4B,YAAc,KAEnB,EAAKV,QAAU,KACf,EAAKC,UAAY,EAEjB,EAAKC,UAAY,KACjB,EAAKC,cAAgB32B,GACrB,EAAK42B,YAAc,IAAIzuB,GAAS,EAAG,GAEnC,EAAK0uB,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAKI,YAAc,KAEnB,EAAKhB,SAAW,KAEhB,EAAKmB,OAAS,KACd,EAAKC,QAAU9+B,GACf,EAAKg/B,aAAe,EACpB,EAAKC,gBAAkB,IAEvB,EAAKa,WAAY,EACjB,EAAKC,mBAAqB,EAC1B,EAAKC,iBAAmB,QACxB,EAAKC,kBAAoB,QAEzB,EAAK9D,aAAc,EAEnB,EAAKwG,UAAW1M,GAjDS,E,wCAqD1B,SAAM3c,GA+CL,OA7CA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OACxBjgC,KAAK0gC,SAASzjB,KAAMC,EAAOwjB,UAC3B1gC,KAAK6gC,UAAY3jB,EAAO2jB,UAExB7gC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKuhC,SAAWrkB,EAAOqkB,SACvBvhC,KAAKwhC,kBAAoBtkB,EAAOskB,kBAEhCxhC,KAAKyhC,MAAQvkB,EAAOukB,MACpBzhC,KAAK0hC,eAAiBxkB,EAAOwkB,eAE7B1hC,KAAKwgC,SAASvjB,KAAMC,EAAOsjB,UAC3BxgC,KAAKqiC,YAAcnlB,EAAOmlB,YAC1BriC,KAAKygC,kBAAoBvjB,EAAOujB,kBAEhCzgC,KAAK2hC,QAAUzkB,EAAOykB,QACtB3hC,KAAK4hC,UAAY1kB,EAAO0kB,UAExB5hC,KAAK6hC,UAAY3kB,EAAO2kB,UACxB7hC,KAAK8hC,cAAgB5kB,EAAO4kB,cAC5B9hC,KAAK+hC,YAAY9kB,KAAMC,EAAO6kB,aAE9B/hC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAE/BliC,KAAKsiC,YAAcplB,EAAOolB,YAE1BtiC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKyiC,OAASvlB,EAAOulB,OACrBziC,KAAK0iC,QAAUxlB,EAAOwlB,QACtB1iC,KAAK4iC,aAAe1lB,EAAO0lB,aAC3B5iC,KAAK6iC,gBAAkB3lB,EAAO2lB,gBAE9B7iC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBACjC3jC,KAAK4jC,iBAAmB1mB,EAAO0mB,iBAC/B5jC,KAAK6jC,kBAAoB3mB,EAAO2mB,kBAEhC7jC,KAAK+/B,YAAc7iB,EAAO6iB,YAEnB//B,S,GAtGuBs9B,IA4GhCutC,GAAkBv1D,UAAUy2E,qBAAsB,E,IAsC5CjhB,G,kDAEL,WAAajxC,GAAa,kCAEzB,gBAEKkY,QAAU,CAAE,KAAQ,IAEzB,EAAK9kC,KAAO,mBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKnD,IAAM,KACX,EAAK0B,YAAc,KAEnB,EAAKvB,SAAW,KAChB,EAAKC,kBAAoB,EAEzB,EAAKC,MAAQ,KACb,EAAKC,eAAiB,EAEtB,EAAKlB,SAAW,IAAI+D,GAAO,GAC3B,EAAK9D,kBAAoB,EACzB,EAAK4B,YAAc,KAEnB,EAAKV,QAAU,KACf,EAAKC,UAAY,EAEjB,EAAKC,UAAY,KACjB,EAAKC,cAAgB32B,GACrB,EAAK42B,YAAc,IAAIzuB,GAAS,EAAG,GAEnC,EAAK0uB,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAKZ,SAAW,KAEhB,EAAKoC,WAAY,EACjB,EAAKC,mBAAqB,EAC1B,EAAKC,iBAAmB,QACxB,EAAKC,kBAAoB,QAEzB,EAAK0C,UAAW1M,GAzCS,E,wCA6C1B,SAAM3c,GAqCL,OAnCA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKohC,IAAMlkB,EAAOkkB,IAClBphC,KAAK8iC,YAAc5lB,EAAO4lB,YAE1B9iC,KAAKuhC,SAAWrkB,EAAOqkB,SACvBvhC,KAAKwhC,kBAAoBtkB,EAAOskB,kBAEhCxhC,KAAKyhC,MAAQvkB,EAAOukB,MACpBzhC,KAAK0hC,eAAiBxkB,EAAOwkB,eAE7B1hC,KAAKwgC,SAASvjB,KAAMC,EAAOsjB,UAC3BxgC,KAAKqiC,YAAcnlB,EAAOmlB,YAC1BriC,KAAKygC,kBAAoBvjB,EAAOujB,kBAEhCzgC,KAAK2hC,QAAUzkB,EAAOykB,QACtB3hC,KAAK4hC,UAAY1kB,EAAO0kB,UAExB5hC,KAAK6hC,UAAY3kB,EAAO2kB,UACxB7hC,KAAK8hC,cAAgB5kB,EAAO4kB,cAC5B9hC,KAAK+hC,YAAY9kB,KAAMC,EAAO6kB,aAE9B/hC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAE/BliC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBACjC3jC,KAAK4jC,iBAAmB1mB,EAAO0mB,iBAC/B5jC,KAAK6jC,kBAAoB3mB,EAAO2mB,kBAEzB7jC,S,GApFsBs9B,IA0F/BwtC,GAAiBx1D,UAAUu2E,oBAAqB,E,IAwB1ClhB,G,kDAEL,WAAa9wC,GAAa,kCAEzB,gBAEK5sB,KAAO,qBAEZ,EAAK00B,QAAU,KACf,EAAKC,UAAY,EAEjB,EAAKC,UAAY,KACjB,EAAKC,cAAgB32B,GACrB,EAAK42B,YAAc,IAAIzuB,GAAS,EAAG,GAEnC,EAAK0uB,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAKwB,WAAY,EACjB,EAAKC,mBAAqB,EAE1B,EAAKpG,KAAM,EAEX,EAAKwC,aAAc,EAEnB,EAAKwG,UAAW1M,GAxBS,E,wCA4B1B,SAAM3c,GAoBL,OAlBA,4DAAYA,GAEZld,KAAK2hC,QAAUzkB,EAAOykB,QACtB3hC,KAAK4hC,UAAY1kB,EAAO0kB,UAExB5hC,KAAK6hC,UAAY3kB,EAAO2kB,UACxB7hC,KAAK8hC,cAAgB5kB,EAAO4kB,cAC5B9hC,KAAK+hC,YAAY9kB,KAAMC,EAAO6kB,aAE9B/hC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAE/BliC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBAEjC3jC,KAAK+/B,YAAc7iB,EAAO6iB,YAEnB//B,S,GAlDwBs9B,IAwDjCqtC,GAAmBr1D,UAAUi3E,sBAAuB,E,IAkC9C3hB,G,kDAEL,WAAa/wC,GAAa,kCAEzB,gBAEK5sB,KAAO,sBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKnD,IAAM,KAEX,EAAKG,SAAW,KAChB,EAAKC,kBAAoB,EAEzB,EAAKC,MAAQ,KACb,EAAKC,eAAiB,EAEtB,EAAKlB,SAAW,IAAI+D,GAAO,GAC3B,EAAK9D,kBAAoB,EACzB,EAAK4B,YAAc,KAEnB,EAAKC,YAAc,KAEnB,EAAKhB,SAAW,KAEhB,EAAKmB,OAAS,KACd,EAAKC,QAAU9+B,GACf,EAAKg/B,aAAe,EACpB,EAAKC,gBAAkB,IAEvB,EAAKa,WAAY,EACjB,EAAKC,mBAAqB,EAC1B,EAAKC,iBAAmB,QACxB,EAAKC,kBAAoB,QAEzB,EAAK0C,UAAW1M,GAlCS,E,wCAsC1B,SAAM3c,GAgCL,OA9BA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAKuhC,SAAWrkB,EAAOqkB,SACvBvhC,KAAKwhC,kBAAoBtkB,EAAOskB,kBAEhCxhC,KAAKyhC,MAAQvkB,EAAOukB,MACpBzhC,KAAK0hC,eAAiBxkB,EAAOwkB,eAE7B1hC,KAAKwgC,SAASvjB,KAAMC,EAAOsjB,UAC3BxgC,KAAKqiC,YAAcnlB,EAAOmlB,YAC1BriC,KAAKygC,kBAAoBvjB,EAAOujB,kBAEhCzgC,KAAKsiC,YAAcplB,EAAOolB,YAE1BtiC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAKyiC,OAASvlB,EAAOulB,OACrBziC,KAAK0iC,QAAUxlB,EAAOwlB,QACtB1iC,KAAK4iC,aAAe1lB,EAAO0lB,aAC3B5iC,KAAK6iC,gBAAkB3lB,EAAO2lB,gBAE9B7iC,KAAK0jC,UAAYxmB,EAAOwmB,UACxB1jC,KAAK2jC,mBAAqBzmB,EAAOymB,mBACjC3jC,KAAK4jC,iBAAmB1mB,EAAO0mB,iBAC/B5jC,KAAK6jC,kBAAoB3mB,EAAO2mB,kBAEzB7jC,S,GAxEyBs9B,IA8ElCstC,GAAoBt1D,UAAUq2E,uBAAwB,E,IA4BhD1gB,G,kDAEL,WAAapxC,GAAa,kCAEzB,gBAEKkY,QAAU,CAAE,OAAU,IAE3B,EAAK9kC,KAAO,qBAEZ,EAAKgzB,MAAQ,IAAIsE,GAAO,UAExB,EAAKlD,OAAS,KAEd,EAAKD,IAAM,KAEX,EAAKO,QAAU,KACf,EAAKC,UAAY,EAEjB,EAAKC,UAAY,KACjB,EAAKC,cAAgB32B,GACrB,EAAK42B,YAAc,IAAIzuB,GAAS,EAAG,GAEnC,EAAK0uB,gBAAkB,KACvB,EAAKC,kBAAoB,EACzB,EAAKC,iBAAmB,EAExB,EAAKZ,SAAW,KAEhB,EAAKvB,aAAc,EAEnB,EAAKwG,UAAW1M,GA7BS,E,wCAkC1B,SAAM3c,GA2BL,OAzBA,4DAAYA,GAEZld,KAAK+xC,QAAU,CAAE,OAAU,IAE3B/xC,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OAExBjgC,KAAKqhC,OAASnkB,EAAOmkB,OAErBrhC,KAAKohC,IAAMlkB,EAAOkkB,IAElBphC,KAAK2hC,QAAUzkB,EAAOykB,QACtB3hC,KAAK4hC,UAAY1kB,EAAO0kB,UAExB5hC,KAAK6hC,UAAY3kB,EAAO2kB,UACxB7hC,KAAK8hC,cAAgB5kB,EAAO4kB,cAC5B9hC,KAAK+hC,YAAY9kB,KAAMC,EAAO6kB,aAE9B/hC,KAAKgiC,gBAAkB9kB,EAAO8kB,gBAC9BhiC,KAAKiiC,kBAAoB/kB,EAAO+kB,kBAChCjiC,KAAKkiC,iBAAmBhlB,EAAOglB,iBAE/BliC,KAAKshC,SAAWpkB,EAAOokB,SAEvBthC,KAAK+/B,YAAc7iB,EAAO6iB,YAEnB//B,S,GA/DwBs9B,IAqEjC2tC,GAAmB31D,UAAU62E,sBAAuB,E,IAe9ChhB,G,kDAEL,WAAatxC,GAAa,kCAEzB,gBAEK5sB,KAAO,qBAEZ,EAAK+lB,MAAQ,EACb,EAAKuQ,SAAW,EAChB,EAAKC,QAAU,EAEf,EAAK+C,UAAW1M,GAVS,E,wCAc1B,SAAM3c,GAQL,OANA,4DAAYA,GAEZld,KAAKgzB,MAAQ9V,EAAO8V,MACpBhzB,KAAKujC,SAAWrmB,EAAOqmB,SACvBvjC,KAAKwjC,QAAUtmB,EAAOsmB,QAEfxjC,S,GAxBwBkrE,IA8BjCC,GAAmB71D,UAAUq3E,sBAAuB,EAEpD,IAAIsuB,GAAyB3qG,OAAOC,OAAO,CAC1CC,UAAW,KACX66D,eAAgBA,GAChBC,eAAgBA,GAChBrZ,kBAAmBA,GACnBngB,eAAgBA,GAChBs5B,eAAgBA,GAChBJ,qBAAsBA,GACtBD,qBAAsBA,GACtBF,kBAAmBA,GACnBC,iBAAkBA,GAClBH,mBAAoBA,GACpBC,oBAAqBA,GACrBH,kBAAmBA,GACnBC,qBAAsBA,GACtBpkC,kBAAmBA,GACnB2kC,mBAAoBA,GACpBE,mBAAoBA,GACpBD,kBAAmBA,GACnB5tC,SAAUA,KAGL49E,GAAiB,CAGtBC,WAAY,SAAWvtG,EAAOwtG,EAAMC,GAEnC,OAAKH,GAAeI,aAAc1tG,GAI1B,IAAIA,EAAM6F,YAAa7F,EAAM8sC,SAAU0gE,OAAa/6G,IAAPg7G,EAAmBA,EAAKztG,EAAMI,SAI5EJ,EAAMC,MAAOutG,EAAMC,IAK3BE,aAAc,SAAW3tG,EAAOX,EAAMuuG,GAErC,OAAO5tG,IACJ4tG,GAAc5tG,EAAM6F,cAAgBxG,EAAcW,EAEd,kBAA3BX,EAAKutC,kBAET,IAAIvtC,EAAMW,GAIXgQ,MAAMtI,UAAUzH,MAAMI,KAAML,IAIpC0tG,aAAc,SAAWjyF,GAExB,OAAOoyF,YAAYC,OAAQryF,MACtBA,aAAkBsyF,WAKxBC,iBAAkB,SAAWC,GAU5B,IAFA,IAAMtsG,EAAIssG,EAAM7tG,OACV4lE,EAAS,IAAIh2D,MAAOrO,GAChBzB,EAAI,EAAGA,IAAMyB,IAAMzB,EAAI8lE,EAAQ9lE,GAAMA,EAI/C,OAFA8lE,EAAOpZ,MAVP,SAAsB1sD,EAAG8d,GAExB,OAAOiwF,EAAO/tG,GAAM+tG,EAAOjwF,MAUrBgoD,GAKRkoC,YAAa,SAAWthF,EAAQwS,EAAQx6B,GAKvC,IAHA,IAAMupG,EAAUvhF,EAAOxsB,OACjB4lE,EAAS,IAAIp5C,EAAO/mB,YAAasoG,GAE7BjuG,EAAI,EAAG2W,EAAY,EAAGA,IAAcs3F,IAAYjuG,EAIzD,IAFA,IAAMkuG,EAAYxpG,EAAO1E,GAAMk/B,EAErBphB,EAAI,EAAGA,IAAMohB,IAAWphB,EAEjCgoD,EAAQnvD,KAAiB+V,EAAQwhF,EAAYpwF,GAM/C,OAAOgoD,GAKRqoC,YAAa,SAAWC,EAAUL,EAAOrhF,EAAQ2hF,GAIhD,IAFA,IAAIruG,EAAI,EAAGzO,EAAM68G,EAAU,QAEX77G,IAARhB,QAAkDgB,IAA7BhB,EAAK88G,IAEjC98G,EAAM68G,EAAUpuG,KAIjB,QAAazN,IAARhB,EAAL,CAEA,IAAIG,EAAQH,EAAK88G,GACjB,QAAe97G,IAAVb,EAEL,GAAKoe,MAAMC,QAASre,GAEnB,QAIgBa,KAFfb,EAAQH,EAAK88G,MAIZN,EAAMvuG,KAAMjO,EAAI45C,MAChBze,EAAOltB,KAAKnN,MAAOq6B,EAAQh7B,IAI5BH,EAAM68G,EAAUpuG,gBAECzN,IAARhB,QAEJ,QAAuBgB,IAAlBb,EAAM05B,QAIjB,QAIgB74B,KAFfb,EAAQH,EAAK88G,MAIZN,EAAMvuG,KAAMjO,EAAI45C,MAChBz5C,EAAM05B,QAASsB,EAAQA,EAAOxsB,SAI/B3O,EAAM68G,EAAUpuG,gBAECzN,IAARhB,QAMV,QAIgBgB,KAFfb,EAAQH,EAAK88G,MAIZN,EAAMvuG,KAAMjO,EAAI45C,MAChBze,EAAOltB,KAAM9N,IAIdH,EAAM68G,EAAUpuG,gBAECzN,IAARhB,KAMZ+8G,QAAS,SAAWC,EAAY9hG,EAAM+hG,EAAYC,GAAqB,IAAXC,EAAW,uDAAL,GAE3DC,EAAOJ,EAAW37F,QAExB+7F,EAAKliG,KAAOA,EAIZ,IAFA,IAAMmiG,EAAS,GAEL5uG,EAAI,EAAGA,EAAI2uG,EAAKC,OAAO1uG,SAAWF,EAAI,CAQ/C,IANA,IAAM6uG,EAAQF,EAAKC,OAAQ5uG,GACrB8uG,EAAYD,EAAME,eAElBhB,EAAQ,GACRrhF,EAAS,GAEL5O,EAAI,EAAGA,EAAI+wF,EAAMd,MAAM7tG,SAAW4d,EAAI,CAE/C,IAAMstB,EAAQyjE,EAAMd,MAAOjwF,GAAM4wF,EAEjC,KAAKtjE,EAAQojE,GAAcpjE,GAASqjE,GAApC,CAEAV,EAAMvuG,KAAMqvG,EAAMd,MAAOjwF,IAEzB,IAAM,IAAI2oD,EAAI,EAAGA,EAAIqoC,IAAcroC,EAElC/5C,EAAOltB,KAAMqvG,EAAMniF,OAAQ5O,EAAIgxF,EAAYroC,KAMvB,IAAjBsnC,EAAM7tG,SAEX2uG,EAAMd,MAAQX,GAAeK,aAAcM,EAAOc,EAAMd,MAAMpoG,aAC9DkpG,EAAMniF,OAAS0gF,GAAeK,aAAc/gF,EAAQmiF,EAAMniF,OAAO/mB,aAEjEipG,EAAOpvG,KAAMqvG,IAIdF,EAAKC,OAASA,EAMd,IAFA,IAAII,EAAevjG,IAETzL,EAAI,EAAGA,EAAI2uG,EAAKC,OAAO1uG,SAAWF,EAEtCgvG,EAAeL,EAAKC,OAAQ5uG,GAAI+tG,MAAO,KAE3CiB,EAAeL,EAAKC,OAAQ5uG,GAAI+tG,MAAO,IAQzC,IAAM,IAAI/tG,EAAI,EAAGA,EAAI2uG,EAAKC,OAAO1uG,SAAWF,EAE3C2uG,EAAKC,OAAQ5uG,GAAI+iF,OAAS,EAAIisB,GAM/B,OAFAL,EAAKM,gBAEEN,GAIRO,iBAAkB,SAAWC,GAAuE,IAA3DC,EAA2D,uDAA1C,EAAGC,EAAuC,uDAAvBF,EAAYT,EAAW,uDAAL,GAEzFA,GAAO,IAAIA,EAAM,IAMtB,IAJA,IAAMY,EAAYD,EAAcT,OAAO1uG,OACjCqvG,EAAgBH,EAAiBV,EAL4D,WAQzF1uG,GAET,IAAMwvG,EAAiBH,EAAcT,OAAQ5uG,GACvCyvG,EAAqBD,EAAeE,cAG1C,GAA4B,SAAvBD,GAAwD,WAAvBA,EAAkC,iBAGxE,IAAME,EAAcR,EAAWP,OAAOgB,MAAM,SAAWf,GAEtD,OAAOA,EAAMpiG,OAAS+iG,EAAe/iG,MACjCoiG,EAAMa,gBAAkBD,KAI7B,QAAqBl9G,IAAhBo9G,EAA4B,iBAEjC,IAAIE,EAAkB,EAChBC,EAAqBN,EAAeT,eAErCS,EAAeO,kBAAkBC,4CAErCH,EAAkBC,EAAqB,GAIxC,IAAIG,EAAe,EACbC,EAAkBP,EAAYZ,eAE/BY,EAAYI,kBAAkBC,4CAElCC,EAAeC,EAAkB,GAIlC,IAAM58C,EAAYk8C,EAAezB,MAAM7tG,OAAS,EAC5CiwG,OAAc,EAGlB,GAAKZ,GAAiBC,EAAezB,MAAO,GAAM,CAGjD,IAAMqC,EAAaP,EACbQ,EAAWP,EAAqBD,EACtCM,EAAiB/C,GAAeC,WAAYmC,EAAe9iF,OAAQ0jF,EAAYC,QAEzE,GAAKd,GAAiBC,EAAezB,MAAOz6C,GAAc,CAGhE,IAAM88C,EAAa98C,EAAYw8C,EAAqBD,EAC9CQ,EAAWD,EAAaN,EAAqBD,EACnDM,EAAiB/C,GAAeC,WAAYmC,EAAe9iF,OAAQ0jF,EAAYC,OAEzE,CAGN,IAAMC,EAAcd,EAAeO,oBAC7BK,EAAaP,EACbQ,EAAWP,EAAqBD,EACtCS,EAAYC,SAAUhB,GACtBY,EAAiB/C,GAAeC,WAAYiD,EAAYE,aAAcJ,EAAYC,GAKvD,eAAvBZ,IAEkB,IAAIp8F,IAAa9H,UAAW4kG,GAAiBtpG,YAAYkO,YACjEqW,QAAS+kF,GAOxB,IADA,IAAMM,EAAWd,EAAY5B,MAAM7tG,OACzB4d,EAAI,EAAGA,EAAI2yF,IAAa3yF,EAAI,CAErC,IAAM4yF,EAAa5yF,EAAIoyF,EAAkBD,EAEzC,GAA4B,eAAvBR,EAGJp8F,GAAWs9F,wBACVhB,EAAYjjF,OACZgkF,EACAP,EACA,EACAR,EAAYjjF,OACZgkF,QAQD,IAHA,IAAME,EAAWV,EAAiC,EAAfD,EAGzBxpC,EAAI,EAAGA,EAAImqC,IAAanqC,EAEjCkpC,EAAYjjF,OAAQgkF,EAAajqC,IAAO0pC,EAAgB1pC,KAnGlDzmE,EAAI,EAAGA,EAAIsvG,IAActvG,EAAI,EAA7BA,GA+GV,OAFAmvG,EAAW0B,UAAYt0G,GAEhB4yG,IA2BH2B,G,WAEL,WAAaC,EAAoBC,EAAcC,EAAYT,GAAe,oBAEzEt+G,KAAK6+G,mBAAqBA,EAC1B7+G,KAAKg/G,aAAe,EAEpBh/G,KAAKs+G,kBAAgCj+G,IAAjBi+G,EACnBA,EAAe,IAAIQ,EAAarrG,YAAasrG,GAC9C/+G,KAAK8+G,aAAeA,EACpB9+G,KAAK48G,UAAYmC,EAEjB/+G,KAAKi/G,SAAW,KAChBj/G,KAAKk/G,iBAAmB,G,4CAIzB,SAAUtvG,GAET,IAAMuvG,EAAKn/G,KAAK6+G,mBACZrjF,EAAKx7B,KAAKg/G,aACbtwF,EAAKywF,EAAI3jF,GACT/M,EAAK0wF,EAAI3jF,EAAK,GAEf4jF,EAAmB,CAElBC,EAAM,CAEL,IAAIvrF,EAEJwrF,EAAa,CAMZC,EAAc,KAAS3vG,EAAI8e,GAAO,CAEjC,IAAM,IAAI8wF,EAAWhkF,EAAK,IAAO,CAEhC,QAAYn7B,IAAPquB,EAAmB,CAEvB,GAAK9e,EAAI6e,EAAK,MAAM8wF,EAMpB,OAFA/jF,EAAK2jF,EAAGnxG,OACRhO,KAAKg/G,aAAexjF,EACbx7B,KAAKy/G,UAAWjkF,EAAK,EAAG5rB,EAAG6e,GAInC,GAAK+M,IAAOgkF,EAAW,MAKvB,GAHA/wF,EAAKC,EAGA9e,GAFL8e,EAAKywF,IAAO3jF,IAKX,MAAM6jF,EAORvrF,EAAQqrF,EAAGnxG,OACX,MAAMsxG,EAMP,GAAS1vG,GAAK6e,EAiDd,MAAM2wF,EA7CL,IAAMM,EAAWP,EAAI,GAEhBvvG,EAAI8vG,IAERlkF,EAAK,EACL/M,EAAKixF,GAMN,IAAM,IAAIF,EAAWhkF,EAAK,IAAO,CAEhC,QAAYn7B,IAAPouB,EAKJ,OADAzuB,KAAKg/G,aAAe,EACbh/G,KAAK2/G,aAAc,EAAG/vG,EAAG8e,GAIjC,GAAK8M,IAAOgkF,EAAW,MAKvB,GAHA9wF,EAAKD,EAGA7e,IAFL6e,EAAK0wF,IAAO3jF,EAAK,IAKhB,MAAM6jF,EAORvrF,EAAQ0H,EACRA,EAAK,EAaP,KAAQA,EAAK1H,GAAQ,CAEpB,IAAM8rF,EAAQpkF,EAAK1H,IAAY,EAE1BlkB,EAAIuvG,EAAIS,GAEZ9rF,EAAQ8rF,EAIRpkF,EAAKokF,EAAM,EAWb,GALAlxF,EAAKywF,EAAI3jF,QAKGn7B,KAJZouB,EAAK0wF,EAAI3jF,EAAK,IAOb,OADAx7B,KAAKg/G,aAAe,EACbh/G,KAAK2/G,aAAc,EAAG/vG,EAAG8e,GAIjC,QAAYruB,IAAPquB,EAIJ,OAFA8M,EAAK2jF,EAAGnxG,OACRhO,KAAKg/G,aAAexjF,EACbx7B,KAAKy/G,UAAWjkF,EAAK,EAAG/M,EAAI7e,GAMrC5P,KAAKg/G,aAAexjF,EAEpBx7B,KAAK6/G,iBAAkBrkF,EAAI/M,EAAIC,GAIhC,OAAO1uB,KAAK8/G,aAActkF,EAAI/M,EAAI7e,EAAG8e,K,0BAItC,WAEC,OAAO1uB,KAAKi/G,UAAYj/G,KAAKk/G,mB,8BAI9B,SAAkB1xG,GASjB,IALA,IAAMomE,EAAS5zE,KAAKs+G,aACnB9jF,EAASx6B,KAAK8+G,aACd9xE,EAAShtC,KAAK48G,UACd7nG,EAASvH,EAAQw/B,EAERl/B,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAEjC8lE,EAAQ9lE,GAAM0sB,EAAQzlB,EAASjH,GAIhC,OAAO8lE,I,0BAMR,WAEC,MAAM,IAAIpgE,MAAO,6B,8BAKlB,gB,KAUDorG,GAAYtpG,UAAUqqG,aAAef,GAAYtpG,UAAUyqG,iBAC3DnB,GAAYtpG,UAAUmqG,UAAYb,GAAYtpG,UAAUyqG,iB,IAUlDC,G,kDAEL,WAAanB,EAAoBC,EAAcC,EAAYT,GAAe,kCAEzE,cAAOO,EAAoBC,EAAcC,EAAYT,IAEhD2B,aAAgB,EACrB,EAAKC,aAAgB,EACrB,EAAKC,aAAgB,EACrB,EAAKC,aAAgB,EAErB,EAAKlB,iBAAmB,CAEvBmB,YAAap2G,GACbq2G,UAAWr2G,IAZ6D,E,oDAkB1E,SAAkBuxB,EAAI/M,EAAIC,GAEzB,IAAMywF,EAAKn/G,KAAK6+G,mBACZ0B,EAAQ/kF,EAAK,EAChBglF,EAAQhlF,EAAK,EAEbilF,EAAQtB,EAAIoB,GACZG,EAAQvB,EAAIqB,GAEb,QAAengH,IAAVogH,EAEJ,OAASzgH,KAAK2gH,eAAeN,aAE5B,KAAKn2G,GAGJq2G,EAAQ/kF,EACRilF,EAAQ,EAAIhyF,EAAKC,EAEjB,MAED,KAAKvkB,GAIJs2G,EAAQhyF,EAAK0wF,EADboB,EAAQpB,EAAGnxG,OAAS,GACOmxG,EAAIoB,EAAQ,GAEvC,MAED,QAGCA,EAAQ/kF,EACRilF,EAAQ/xF,EAMX,QAAeruB,IAAVqgH,EAEJ,OAAS1gH,KAAK2gH,eAAeL,WAE5B,KAAKp2G,GAGJs2G,EAAQhlF,EACRklF,EAAQ,EAAIhyF,EAAKD,EAEjB,MAED,KAAKtkB,GAGJq2G,EAAQ,EACRE,EAAQhyF,EAAKywF,EAAI,GAAMA,EAAI,GAE3B,MAED,QAGCqB,EAAQhlF,EAAK,EACbklF,EAAQjyF,EAMX,IAAMmyF,EAAuB,IAAZlyF,EAAKD,GACrBue,EAAShtC,KAAK48G,UAEf58G,KAAKigH,YAAcW,GAAWnyF,EAAKgyF,GACnCzgH,KAAKmgH,YAAcS,GAAWF,EAAQhyF,GACtC1uB,KAAKkgH,YAAcK,EAAQvzE,EAC3BhtC,KAAKogH,YAAcI,EAAQxzE,I,0BAI5B,SAAcxR,EAAI/M,EAAI7e,EAAG8e,GAuBxB,IArBA,IAAMklD,EAAS5zE,KAAKs+G,aACnB9jF,EAASx6B,KAAK8+G,aACd9xE,EAAShtC,KAAK48G,UAEdpN,EAAKh0E,EAAKwR,EAAS6zE,EAAKrR,EAAKxiE,EAC7B8zE,EAAK9gH,KAAKkgH,YAAca,EAAK/gH,KAAKogH,YAClCY,EAAKhhH,KAAKigH,YAAagB,EAAKjhH,KAAKmgH,YAEjCr9F,GAAMlT,EAAI6e,IAASC,EAAKD,GACxB0wF,EAAKr8F,EAAIA,EACTo+F,EAAM/B,EAAKr8F,EAINq+F,GAAOH,EAAKE,EAAM,EAAIF,EAAK7B,EAAK6B,EAAKl+F,EACrCiL,GAAO,EAAIizF,GAAOE,IAAU,IAAM,EAAIF,GAAO7B,IAAS,GAAM6B,GAAOl+F,EAAI,EACvEd,IAAS,EAAIi/F,GAAOC,GAAQ,IAAMD,GAAO9B,EAAK,GAAMr8F,EACpDs+F,EAAKH,EAAKC,EAAMD,EAAK9B,EAIjBrxG,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAEjC8lE,EAAQ9lE,GACNqzG,EAAK3mF,EAAQsmF,EAAKhzG,GAClBigB,EAAKyM,EAAQqmF,EAAK/yG,GAClBkU,EAAKwY,EAAQg1E,EAAK1hG,GAClBszG,EAAK5mF,EAAQumF,EAAKjzG,GAIrB,OAAO8lE,M,GApIsBgrC,IA0IzByC,G,kDAEL,WAAaxC,EAAoBC,EAAcC,EAAYT,GAAe,uCAElEO,EAAoBC,EAAcC,EAAYT,G,gDAItD,SAAc9iF,EAAI/M,EAAI7e,EAAG8e,GAYxB,IAVA,IAAMklD,EAAS5zE,KAAKs+G,aACnB9jF,EAASx6B,KAAK8+G,aACd9xE,EAAShtC,KAAK48G,UAEd0E,EAAU9lF,EAAKwR,EACfu0E,EAAUD,EAAUt0E,EAEpBw0E,GAAY5xG,EAAI6e,IAASC,EAAKD,GAC9BgzF,EAAU,EAAID,EAEL1zG,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAEjC8lE,EAAQ9lE,GACN0sB,EAAQ+mF,EAAUzzG,GAAM2zG,EACxBjnF,EAAQ8mF,EAAUxzG,GAAM0zG,EAI3B,OAAO5tC,M,GA5BuBgrC,IAwC1B8C,G,kDAEL,WAAa7C,EAAoBC,EAAcC,EAAYT,GAAe,uCAElEO,EAAoBC,EAAcC,EAAYT,G,gDAItD,SAAc9iF,GAEb,OAAOx7B,KAAK+/G,iBAAkBvkF,EAAK,O,GAVHojF,IAgB5B+C,G,WAEL,WAAapnG,EAAMshG,EAAOrhF,EAAQonF,GAEjC,GAFiD,yBAEnCvhH,IAATka,EAAqB,MAAM,IAAI/G,MAAO,gDAC3C,QAAenT,IAAVw7G,GAAwC,IAAjBA,EAAM7tG,OAAe,MAAM,IAAIwF,MAAO,oDAAsD+G,GAExHva,KAAKua,KAAOA,EAEZva,KAAK67G,MAAQX,GAAeK,aAAcM,EAAO77G,KAAK6hH,gBACtD7hH,KAAKw6B,OAAS0gF,GAAeK,aAAc/gF,EAAQx6B,KAAK8hH,iBAExD9hH,KAAK+hH,iBAAkBH,GAAiB5hH,KAAKgiH,sB,oEA6C9C,SAAkCpuC,GAEjC,OAAO,IAAI8tC,GAAqB1hH,KAAK67G,MAAO77G,KAAKw6B,OAAQx6B,KAAK68G,eAAgBjpC,K,4CAI/E,SAAgCA,GAE/B,OAAO,IAAIytC,GAAmBrhH,KAAK67G,MAAO77G,KAAKw6B,OAAQx6B,KAAK68G,eAAgBjpC,K,4CAI7E,SAAgCA,GAE/B,OAAO,IAAIosC,GAAkBhgH,KAAK67G,MAAO77G,KAAKw6B,OAAQx6B,KAAK68G,eAAgBjpC,K,8BAI5E,SAAkBguC,GAEjB,IAAIK,EAEJ,OAASL,GAER,KAAK93G,GAEJm4G,EAAgBjiH,KAAKkiH,iCAErB,MAED,KAAKn4G,GAEJk4G,EAAgBjiH,KAAKmiH,+BAErB,MAED,KAAKn4G,GAEJi4G,EAAgBjiH,KAAKoiH,+BAMvB,QAAuB/hH,IAAlB4hH,EAA8B,CAElC,IAAMnxB,EAAU,iCACf9wF,KAAKw9G,cAAgB,yBAA2Bx9G,KAAKua,KAEtD,QAAgCla,IAA3BL,KAAK69G,kBAAkC,CAG3C,GAAK+D,IAAkB5hH,KAAKgiH,qBAM3B,MAAM,IAAIxuG,MAAOs9E,GAJjB9wF,KAAK+hH,iBAAkB/hH,KAAKgiH,sBAW9B,OADA5uG,QAAQC,KAAM,uBAAwBy9E,GAC/B9wF,KAMR,OAFAA,KAAK69G,kBAAoBoE,EAElBjiH,O,8BAIR,WAEC,OAASA,KAAK69G,mBAEb,KAAK79G,KAAKkiH,iCAET,OAAOp4G,GAER,KAAK9J,KAAKmiH,+BAET,OAAOp4G,GAER,KAAK/J,KAAKoiH,+BAET,OAAOp4G,M,0BAMV,WAEC,OAAOhK,KAAKw6B,OAAOxsB,OAAShO,KAAK67G,MAAM7tG,S,mBAKxC,SAAOq0G,GAEN,GAAoB,IAAfA,EAIJ,IAFA,IAAMxG,EAAQ77G,KAAK67G,MAET/tG,EAAI,EAAGyB,EAAIssG,EAAM7tG,OAAQF,IAAMyB,IAAMzB,EAE9C+tG,EAAO/tG,IAAOu0G,EAMhB,OAAOriH,O,mBAKR,SAAOsiH,GAEN,GAAmB,IAAdA,EAIJ,IAFA,IAAMzG,EAAQ77G,KAAK67G,MAET/tG,EAAI,EAAGyB,EAAIssG,EAAM7tG,OAAQF,IAAMyB,IAAMzB,EAE9C+tG,EAAO/tG,IAAOw0G,EAMhB,OAAOtiH,O,kBAMR,SAAMuiH,EAAWC,GAQhB,IANA,IAAM3G,EAAQ77G,KAAK67G,MAClB4G,EAAQ5G,EAAM7tG,OAEXotG,EAAO,EACVC,EAAKoH,EAAQ,EAENrH,IAASqH,GAAS5G,EAAOT,GAASmH,KAEtCnH,EAIJ,MAAiB,IAATC,GAAcQ,EAAOR,GAAOmH,KAEhCnH,EAMJ,KAFGA,EAEW,IAATD,GAAcC,IAAOoH,EAAQ,CAG5BrH,GAAQC,IAGZD,GADAC,EAAKjtG,KAAKiB,IAAKgsG,EAAI,IACP,GAIb,IAAMruE,EAAShtC,KAAK68G,eACpB78G,KAAK67G,MAAQX,GAAeC,WAAYU,EAAOT,EAAMC,GACrDr7G,KAAKw6B,OAAS0gF,GAAeC,WAAYn7G,KAAKw6B,OAAQ4gF,EAAOpuE,EAAQquE,EAAKruE,GAI3E,OAAOhtC,O,sBAKR,WAEC,IAAI0iH,GAAQ,EAEN9F,EAAY58G,KAAK68G,eAClBD,EAAYxuG,KAAKgC,MAAOwsG,KAAgB,IAE5CxpG,QAAQ3T,MAAO,oDAAqDO,MACpE0iH,GAAQ,GAIT,IAAM7G,EAAQ77G,KAAK67G,MAClBrhF,EAASx6B,KAAKw6B,OAEdioF,EAAQ5G,EAAM7tG,OAEA,IAAVy0G,IAEJrvG,QAAQ3T,MAAO,uCAAwCO,MACvD0iH,GAAQ,GAMT,IAFA,IAAIC,EAAW,KAEL70G,EAAI,EAAGA,IAAM20G,EAAO30G,IAAO,CAEpC,IAAM80G,EAAW/G,EAAO/tG,GAExB,GAAyB,kBAAb80G,GAAyBx4E,MAAOw4E,GAAa,CAExDxvG,QAAQ3T,MAAO,mDAAoDO,KAAM8N,EAAG80G,GAC5EF,GAAQ,EACR,MAID,GAAkB,OAAbC,GAAqBA,EAAWC,EAAW,CAE/CxvG,QAAQ3T,MAAO,0CAA2CO,KAAM8N,EAAG80G,EAAUD,GAC7ED,GAAQ,EACR,MAIDC,EAAWC,EAIZ,QAAgBviH,IAAXm6B,GAEC0gF,GAAeI,aAAc9gF,GAEjC,IAAM,IAAI1sB,EAAI,EAAGyB,EAAIirB,EAAOxsB,OAAQF,IAAMyB,IAAMzB,EAAI,CAEnD,IAAMtO,EAAQg7B,EAAQ1sB,GAEtB,GAAKs8B,MAAO5qC,GAAU,CAErB4T,QAAQ3T,MAAO,oDAAqDO,KAAM8N,EAAGtO,GAC7EkjH,GAAQ,EACR,OAUJ,OAAOA,I,sBAMR,WAaC,IAVA,IAAM7G,EAAQX,GAAeC,WAAYn7G,KAAK67G,OAC7CrhF,EAAS0gF,GAAeC,WAAYn7G,KAAKw6B,QACzCwS,EAAShtC,KAAK68G,eAEdgG,EAAsB7iH,KAAK8iH,qBAAuB94G,GAElDo3D,EAAYy6C,EAAM7tG,OAAS,EAExB+0G,EAAa,EAEPj1G,EAAI,EAAGA,EAAIszD,IAActzD,EAAI,CAEtC,IAAIk1G,GAAO,EAEL/pE,EAAO4iE,EAAO/tG,GAKpB,GAAKmrC,IAJY4iE,EAAO/tG,EAAI,KAIM,IAANA,GAAWmrC,IAAS4iE,EAAO,IAEtD,GAAOgH,EAwBNG,GAAO,OAhBP,IAJA,IAAMjuG,EAASjH,EAAIk/B,EAClBi2E,EAAUluG,EAASi4B,EACnBk2E,EAAUnuG,EAASi4B,EAEVphB,EAAI,EAAGA,IAAMohB,IAAWphB,EAAI,CAErC,IAAMpsB,EAAQg7B,EAAQzlB,EAAS6W,GAE/B,GAAKpsB,IAAUg7B,EAAQyoF,EAAUr3F,IAChCpsB,IAAUg7B,EAAQ0oF,EAAUt3F,GAAM,CAElCo3F,GAAO,EACP,OAgBJ,GAAKA,EAAO,CAEX,GAAKl1G,IAAMi1G,EAAa,CAEvBlH,EAAOkH,GAAelH,EAAO/tG,GAK7B,IAHA,IAAMq1G,EAAar1G,EAAIk/B,EACtBo2E,EAAcL,EAAa/1E,EAElBphB,EAAI,EAAGA,IAAMohB,IAAWphB,EAEjC4O,EAAQ4oF,EAAcx3F,GAAM4O,EAAQ2oF,EAAav3F,KAMhDm3F,GAQL,GAAK3hD,EAAY,EAAI,CAEpBy6C,EAAOkH,GAAelH,EAAOz6C,GAE7B,IAAM,IAAI+hD,EAAa/hD,EAAYp0B,EAAQo2E,EAAcL,EAAa/1E,EAAQphB,EAAI,EAAGA,IAAMohB,IAAWphB,EAErG4O,EAAQ4oF,EAAcx3F,GAAM4O,EAAQ2oF,EAAav3F,KAI/Cm3F,EAgBJ,OAZKA,IAAelH,EAAM7tG,QAEzBhO,KAAK67G,MAAQX,GAAeC,WAAYU,EAAO,EAAGkH,GAClD/iH,KAAKw6B,OAAS0gF,GAAeC,WAAY3gF,EAAQ,EAAGuoF,EAAa/1E,KAIjEhtC,KAAK67G,MAAQA,EACb77G,KAAKw6B,OAASA,GAIRx6B,O,mBAIR,WAEC,IAAM67G,EAAQX,GAAeC,WAAYn7G,KAAK67G,MAAO,GAC/CrhF,EAAS0gF,GAAeC,WAAYn7G,KAAKw6B,OAAQ,GAGjDmiF,EAAQ,IAAI0G,EADSrjH,KAAKyT,aACMzT,KAAKua,KAAMshG,EAAOrhF,GAKxD,OAFAmiF,EAAMkB,kBAAoB79G,KAAK69G,kBAExBlB,K,qBAtaR,SAAeA,GAEd,IAEIjgB,EAFE4mB,EAAY3G,EAAMlpG,YAKxB,GAAK6vG,EAAUvqF,SAAW/4B,KAAK+4B,OAE9B2jE,EAAO4mB,EAAUvqF,OAAQ4jF,OAEnB,CAGNjgB,EAAO,CAEN,KAAQigB,EAAMpiG,KACd,MAAS2gG,GAAeK,aAAcoB,EAAMd,MAAOj+F,OACnD,OAAUs9F,GAAeK,aAAcoB,EAAMniF,OAAQ5c,QAItD,IAAMgkG,EAAgBjF,EAAMmG,mBAEvBlB,IAAkBjF,EAAMqF,uBAE5BtlB,EAAKklB,cAAgBA,GAQvB,OAFAllB,EAAKzvF,KAAO0vG,EAAMa,cAEX9gB,M,KA0YTilB,GAAcrsG,UAAUusG,eAAiB3nG,aACzCynG,GAAcrsG,UAAUwsG,gBAAkB5nG,aAC1CynG,GAAcrsG,UAAU0sG,qBAAuBj4G,G,IAKzCw5G,G,4HAA6B5B,IAEnC4B,GAAqBjuG,UAAUkoG,cAAgB,OAC/C+F,GAAqBjuG,UAAUwsG,gBAAkBlkG,MACjD2lG,GAAqBjuG,UAAU0sG,qBAAuBl4G,GACtDy5G,GAAqBjuG,UAAU6sG,oCAAiC9hH,EAChEkjH,GAAqBjuG,UAAU8sG,oCAAiC/hH,E,IAK1DmjH,G,4HAA2B7B,IAEjC6B,GAAmBluG,UAAUkoG,cAAgB,Q,IAKvCiG,G,4HAA4B9B,IAElC8B,GAAoBnuG,UAAUkoG,cAAgB,S,IAMxCkG,G,kDAEL,WAAa7E,EAAoBC,EAAcC,EAAYT,GAAe,uCAElEO,EAAoBC,EAAcC,EAAYT,G,gDAItD,SAAc9iF,EAAI/M,EAAI7e,EAAG8e,GAUxB,IARA,IAAMklD,EAAS5zE,KAAKs+G,aACnB9jF,EAASx6B,KAAK8+G,aACd9xE,EAAShtC,KAAK48G,UAEdhoG,GAAUhF,EAAI6e,IAASC,EAAKD,GAEzB1Z,EAASymB,EAAKwR,EAER4J,EAAM7hC,EAASi4B,EAAQj4B,IAAW6hC,EAAK7hC,GAAU,EAE1DoM,GAAWwiG,UAAW/vC,EAAQ,EAAGp5C,EAAQzlB,EAASi4B,EAAQxS,EAAQzlB,EAAQH,GAI3E,OAAOg/D,M,GAxBiCgrC,IAiCpCgF,G,oLAEL,SAAgChwC,GAE/B,OAAO,IAAI8vC,GAA6B1jH,KAAK67G,MAAO77G,KAAKw6B,OAAQx6B,KAAK68G,eAAgBjpC,O,GAJlD+tC,IAUtCiC,GAAwBtuG,UAAUkoG,cAAgB,aAElDoG,GAAwBtuG,UAAU0sG,qBAAuBj4G,GACzD65G,GAAwBtuG,UAAU8sG,oCAAiC/hH,E,IAK7DwjH,G,4HAA4BlC,IAElCkC,GAAoBvuG,UAAUkoG,cAAgB,SAC9CqG,GAAoBvuG,UAAUwsG,gBAAkBlkG,MAChDimG,GAAoBvuG,UAAU0sG,qBAAuBl4G,GACrD+5G,GAAoBvuG,UAAU6sG,oCAAiC9hH,EAC/DwjH,GAAoBvuG,UAAU8sG,oCAAiC/hH,E,IAKzDyjH,G,4HAA4BnC,IAElCmC,GAAoBxuG,UAAUkoG,cAAgB,S,IAExCuG,G,WAEL,WAAaxpG,GAAqE,IAA/DypG,EAA+D,wDAAlD,EAAGtH,EAA+C,uCAAvCiC,EAAuC,uDAA3Bv0G,GAA2B,oBAEjFpK,KAAKua,KAAOA,EACZva,KAAK08G,OAASA,EACd18G,KAAKgkH,SAAWA,EAChBhkH,KAAK2+G,UAAYA,EAEjB3+G,KAAKoc,KAAOzN,KAGP3O,KAAKgkH,SAAW,GAEpBhkH,KAAK+8G,gB,iDAmSP,WAKC,IAHA,IACIiH,EAAW,EAELl2G,EAAI,EAAGyB,EAHFvP,KAAK08G,OAGQ1uG,OAAQF,IAAMyB,IAAMzB,EAAI,CAEnD,IAAM6uG,EAAQ38G,KAAK08G,OAAQ5uG,GAE3Bk2G,EAAW51G,KAAKiB,IAAK20G,EAAUrH,EAAMd,MAAOc,EAAMd,MAAM7tG,OAAS,IAMlE,OAFAhO,KAAKgkH,SAAWA,EAEThkH,O,kBAIR,WAEC,IAAM,IAAI8N,EAAI,EAAGA,EAAI9N,KAAK08G,OAAO1uG,OAAQF,IAExC9N,KAAK08G,OAAQ5uG,GAAI80D,KAAM,EAAG5iE,KAAKgkH,UAIhC,OAAOhkH,O,sBAIR,WAIC,IAFA,IAAI0iH,GAAQ,EAEF50G,EAAI,EAAGA,EAAI9N,KAAK08G,OAAO1uG,OAAQF,IAExC40G,EAAQA,GAAS1iH,KAAK08G,OAAQ5uG,GAAIm2G,WAInC,OAAOvB,I,sBAIR,WAEC,IAAM,IAAI50G,EAAI,EAAGA,EAAI9N,KAAK08G,OAAO1uG,OAAQF,IAExC9N,KAAK08G,OAAQ5uG,GAAIo2G,WAIlB,OAAOlkH,O,mBAIR,WAIC,IAFA,IAAM08G,EAAS,GAEL5uG,EAAI,EAAGA,EAAI9N,KAAK08G,OAAO1uG,OAAQF,IAExC4uG,EAAOpvG,KAAMtN,KAAK08G,OAAQ5uG,GAAI4S,SAI/B,OAAO,IAAI1gB,KAAKyT,YAAazT,KAAKua,KAAMva,KAAKgkH,SAAUtH,EAAQ18G,KAAK2+G,a,oBAIrE,WAEC,OAAO3+G,KAAKyT,YAAYslB,OAAQ/4B,S,oBArWjC,SAAc08F,GAMb,IAJA,IAAMggB,EAAS,GACdyH,EAAaznB,EAAKggB,OAClB0H,EAAY,GAAQ1nB,EAAK8f,KAAO,GAEvB1uG,EAAI,EAAGyB,EAAI40G,EAAWn2G,OAAQF,IAAMyB,IAAMzB,EAEnD4uG,EAAOpvG,KAAM+2G,GAAoBF,EAAYr2G,IAAMklB,MAAOoxF,IAI3D,IAAM3H,EAAO,IAAIz8G,KAAM08F,EAAKniF,KAAMmiF,EAAKsnB,SAAUtH,EAAQhgB,EAAKiiB,WAG9D,OAFAlC,EAAKrgG,KAAOsgF,EAAKtgF,KAEVqgG,I,oBAIR,SAAeA,GAed,IAbA,IAAMC,EAAS,GACd4H,EAAa7H,EAAKC,OAEbhgB,EAAO,CAEZ,KAAQ+f,EAAKliG,KACb,SAAYkiG,EAAKuH,SACjB,OAAUtH,EACV,KAAQD,EAAKrgG,KACb,UAAaqgG,EAAKkC,WAIT7wG,EAAI,EAAGyB,EAAI+0G,EAAWt2G,OAAQF,IAAMyB,IAAMzB,EAEnD4uG,EAAOpvG,KAAMq0G,GAAc5oF,OAAQurF,EAAYx2G,KAIhD,OAAO4uF,I,2CAIR,SAAsCniF,EAAMgqG,EAAqB/H,EAAKgI,GAKrE,IAHA,IAAMC,EAAkBF,EAAoBv2G,OACtC0uG,EAAS,GAEL5uG,EAAI,EAAGA,EAAI22G,EAAiB32G,IAAO,CAE5C,IAAI+tG,EAAQ,GACRrhF,EAAS,GAEbqhF,EAAMvuG,MACHQ,EAAI22G,EAAkB,GAAMA,EAC9B32G,GACEA,EAAI,GAAM22G,GAEbjqF,EAAOltB,KAAM,EAAG,EAAG,GAEnB,IAAMkF,EAAQ0oG,GAAeU,iBAAkBC,GAC/CA,EAAQX,GAAeY,YAAaD,EAAO,EAAGrpG,GAC9CgoB,EAAS0gF,GAAeY,YAAathF,EAAQ,EAAGhoB,GAIzCgyG,GAAyB,IAAf3I,EAAO,KAEvBA,EAAMvuG,KAAMm3G,GACZjqF,EAAOltB,KAAMktB,EAAQ,KAItBkiF,EAAOpvG,KACN,IAAIm2G,GACH,0BAA4Bc,EAAqBz2G,GAAIyM,KAAO,IAC5DshG,EAAOrhF,GACNxH,MAAO,EAAMwpF,IAIjB,OAAO,IAAIx8G,KAAMua,GAAQ,EAAGmiG,K,wBAI7B,SAAmBgI,EAAmBnqG,GAErC,IAAIoqG,EAAYD,EAEhB,IAAO9mG,MAAMC,QAAS6mG,GAAsB,CAE3C,IAAMpL,EAAIoL,EACVC,EAAYrL,EAAEzvF,UAAYyvF,EAAEzvF,SAASkN,YAAcuiF,EAAEviF,WAItD,IAAM,IAAIjpB,EAAI,EAAGA,EAAI62G,EAAU32G,OAAQF,IAEtC,GAAK62G,EAAW72G,GAAIyM,OAASA,EAE5B,OAAOoqG,EAAW72G,GAMpB,OAAO,O,iDAIR,SAA4CmhC,EAAcutE,EAAKgI,GAU9D,IARA,IAAMI,EAA0B,GAI1BC,EAAU,qBAIN/2G,EAAI,EAAGgT,EAAKmuB,EAAajhC,OAAQF,EAAIgT,EAAIhT,IAAO,CAEzD,IAAMmsD,EAAchrB,EAAcnhC,GAC5Bg3G,EAAQ7qD,EAAY1/C,KAAK8mD,MAAOwjD,GAEtC,GAAKC,GAASA,EAAM92G,OAAS,EAAI,CAEhC,IAAMuM,EAAOuqG,EAAO,GAEhBC,EAAwBH,EAAyBrqG,GAE9CwqG,IAENH,EAAyBrqG,GAASwqG,EAAwB,IAI3DA,EAAsBz3G,KAAM2sD,IAM9B,IAAM+qD,EAAQ,GAEd,IAAM,IAAMzqG,KAAQqqG,EAEnBI,EAAM13G,KAAMtN,KAAKilH,8BAA+B1qG,EAAMqqG,EAAyBrqG,GAAQiiG,EAAKgI,IAI7F,OAAOQ,I,4BAKR,SAAuB3qF,EAAWuxC,GAEjC,IAAOvxC,EAGN,OADAjnB,QAAQ3T,MAAO,yDACR,KAoCR,IAhCA,IAAMylH,EAAmB,SAAW5B,EAAW6B,EAAWC,EAAeC,EAAcC,GAGtF,GAA8B,IAAzBF,EAAcp3G,OAAe,CAEjC,IAAM6tG,EAAQ,GACRrhF,EAAS,GAEf0gF,GAAee,YAAamJ,EAAevJ,EAAOrhF,EAAQ6qF,GAGpC,IAAjBxJ,EAAM7tG,QAEVs3G,EAAWh4G,KAAM,IAAIg2G,EAAW6B,EAAWtJ,EAAOrhF,MAQ/CkiF,EAAS,GAET6I,EAAWlrF,EAAU9f,MAAQ,UAC7BiiG,EAAMniF,EAAUmiF,KAAO,GACvBmC,EAAYtkF,EAAUskF,UAGxBqF,EAAW3pF,EAAUrsB,SAAY,EAE/Bw3G,EAAkBnrF,EAAUorF,WAAa,GAErCztG,EAAI,EAAGA,EAAIwtG,EAAgBx3G,OAAQgK,IAAO,CAEnD,IAAMotG,EAAgBI,EAAiBxtG,GAAIq1B,KAG3C,GAAO+3E,GAA0C,IAAzBA,EAAcp3G,OAGtC,GAAKo3G,EAAe,GAAIn2E,aAAe,CAGtC,IAAMy2E,EAAmB,GAErBnxC,OAAC,EAEL,IAAMA,EAAI,EAAGA,EAAI6wC,EAAcp3G,OAAQumE,IAEtC,GAAK6wC,EAAe7wC,GAAItlC,aAEvB,IAAM,IAAIz/B,EAAI,EAAGA,EAAI41G,EAAe7wC,GAAItlC,aAAajhC,OAAQwB,IAE5Dk2G,EAAkBN,EAAe7wC,GAAItlC,aAAcz/B,KAAU,EAWhE,IAAM,IAAMm2G,KAAmBD,EAAmB,CAKjD,IAHA,IAAM7J,EAAQ,GACRrhF,EAAS,GAELhrB,EAAI,EAAGA,IAAM41G,EAAe7wC,GAAItlC,aAAajhC,SAAWwB,EAAI,CAErE,IAAMo2G,EAAeR,EAAe7wC,GAEpCsnC,EAAMvuG,KAAMs4G,EAAa3sE,MACzBze,EAAOltB,KAAQs4G,EAAa3rD,cAAgB0rD,EAAoB,EAAI,GAIrEjJ,EAAOpvG,KAAM,IAAIm2G,GAAqB,yBAA2BkC,EAAkB,IAAK9J,EAAOrhF,IAIhGwpF,EAAW0B,EAAiB13G,QAAWwuG,GAAO,OAExC,CAIN,IAAMqJ,EAAW,UAAYj6C,EAAO5zD,GAAIuC,KAAO,IAE/C2qG,EACCpB,GAAqB+B,EAAW,YAChCT,EAAe,MAAO1I,GAEvBwI,EACCtB,GAAyBiC,EAAW,cACpCT,EAAe,MAAO1I,GAEvBwI,EACCpB,GAAqB+B,EAAW,SAChCT,EAAe,MAAO1I,IAMzB,OAAuB,IAAlBA,EAAO1uG,OAEJ,KAIK,IAAIhO,KAAMulH,EAAUvB,EAAUtH,EAAQiC,O,KA+HrD,SAAS0F,GAAoB3nB,GAE5B,QAAmBr8F,IAAdq8F,EAAKzvF,KAET,MAAM,IAAIuG,MAAO,4DAIlB,IAAM8vG,EAlDP,SAAuCwC,GAEtC,OAASA,EAASxgF,eAEjB,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,UAEJ,OAAOm+E,GAER,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,UAEJ,OAAOK,GAER,IAAK,QAEJ,OAAON,GAER,IAAK,aAEJ,OAAOI,GAER,IAAK,OACL,IAAK,UAEJ,OAAOL,GAER,IAAK,SAEJ,OAAOM,GAIT,MAAM,IAAIrwG,MAAO,8CAAgDsyG,GAY/CC,CAA8BrpB,EAAKzvF,MAErD,QAAoB5M,IAAfq8F,EAAKmf,MAAsB,CAE/B,IAAMA,EAAQ,GAAIrhF,EAAS,GAE3B0gF,GAAee,YAAavf,EAAKrvD,KAAMwuE,EAAOrhF,EAAQ,SAEtDkiE,EAAKmf,MAAQA,EACbnf,EAAKliE,OAASA,EAKf,YAAyBn6B,IAApBijH,EAAU5oF,MAEP4oF,EAAU5oF,MAAOgiE,GAKjB,IAAI4mB,EAAW5mB,EAAKniF,KAAMmiF,EAAKmf,MAAOnf,EAAKliE,OAAQkiE,EAAKklB,eAMjE,IAAMoE,GAAQ,CAEbjyE,SAAS,EAETkyE,MAAO,GAEP78F,IAAK,SAAW/pB,EAAK6mH,IAEE,IAAjBlmH,KAAK+zC,UAIV/zC,KAAKimH,MAAO5mH,GAAQ6mH,IAIrBpsE,IAAK,SAAWz6C,GAEf,IAAsB,IAAjBW,KAAK+zC,QAIV,OAAO/zC,KAAKimH,MAAO5mH,IAIpBy4B,OAAQ,SAAWz4B,UAEXW,KAAKimH,MAAO5mH,IAIpB62C,MAAO,WAENl2C,KAAKimH,MAAQ,KAMTE,GAEL,WAAaC,EAAQC,EAAYC,GAAU,oBAE1C,IAAMj2E,EAAQrwC,KAEVumH,GAAY,EACZC,EAAc,EACdC,EAAa,EACbC,OAAcrmH,EACZsmH,EAAW,GAKjB3mH,KAAK4mH,aAAUvmH,EACfL,KAAKomH,OAASA,EACdpmH,KAAKqmH,WAAaA,EAClBrmH,KAAKsmH,QAAUA,EAEftmH,KAAK6mH,UAAY,SAAWlpG,GAE3B8oG,KAEmB,IAAdF,QAEmBlmH,IAAlBgwC,EAAMu2E,SAEVv2E,EAAMu2E,QAASjpG,EAAK6oG,EAAaC,GAMnCF,GAAY,GAIbvmH,KAAK8mH,QAAU,SAAWnpG,GAEzB6oG,SAE0BnmH,IAArBgwC,EAAMg2E,YAEVh2E,EAAMg2E,WAAY1oG,EAAK6oG,EAAaC,GAIhCD,IAAgBC,IAEpBF,GAAY,OAEUlmH,IAAjBgwC,EAAM+1E,QAEV/1E,EAAM+1E,WAQTpmH,KAAK+mH,UAAY,SAAWppG,QAEJtd,IAAlBgwC,EAAMi2E,SAEVj2E,EAAMi2E,QAAS3oG,IAMjB3d,KAAKgnH,WAAa,SAAWrpG,GAE5B,OAAK+oG,EAEGA,EAAa/oG,GAIdA,GAIR3d,KAAKinH,eAAiB,SAAWjjC,GAIhC,OAFA0iC,EAAc1iC,EAEPhkF,MAIRA,KAAKknH,WAAa,SAAWC,EAAOC,GAInC,OAFAT,EAASr5G,KAAM65G,EAAOC,GAEfpnH,MAIRA,KAAKqnH,cAAgB,SAAWF,GAE/B,IAAM35G,EAAQm5G,EAASt5G,QAAS85G,GAQhC,OANiB,IAAZ35G,GAEJm5G,EAASl5G,OAAQD,EAAO,GAIlBxN,MAIRA,KAAKsnH,WAAa,SAAWpB,GAE5B,IAAM,IAAIp4G,EAAI,EAAGC,EAAI44G,EAAS34G,OAAQF,EAAIC,EAAGD,GAAK,EAAI,CAErD,IAAMq5G,EAAQR,EAAU74G,GAClBs5G,EAAST,EAAU74G,EAAI,GAI7B,GAFKq5G,EAAMI,SAASJ,EAAM/lD,UAAY,GAEjC+lD,EAAMxsG,KAAMurG,GAEhB,OAAOkB,EAMT,OAAO,OAQJI,GAAwB,IAAIrB,GAE5BsB,G,WAEL,WAAaC,GAAU,oBAEtB1nH,KAAK0nH,aAAwBrnH,IAAZqnH,EAA0BA,EAAUF,GAErDxnH,KAAK2nH,YAAc,YACnB3nH,KAAK4nH,iBAAkB,EACvB5nH,KAAKkhE,KAAO,GACZlhE,KAAK6nH,aAAe,GACpB7nH,KAAK8nH,cAAgB,G,wCAItB,c,uBAEA,SAAWnqG,EAAK0oG,GAEf,IAAMh2E,EAAQrwC,KAEd,OAAO,IAAIL,SAAS,SAAWV,EAASC,GAEvCmxC,EAAM03E,KAAMpqG,EAAK1e,EAASonH,EAAYnnH,Q,mBAMxC,c,4BAEA,SAAgByoH,GAGf,OADA3nH,KAAK2nH,YAAcA,EACZ3nH,O,gCAIR,SAAoBR,GAGnB,OADAQ,KAAK4nH,gBAAkBpoH,EAChBQ,O,qBAIR,SAASkhE,GAGR,OADAlhE,KAAKkhE,KAAOA,EACLlhE,O,6BAIR,SAAiB6nH,GAGhB,OADA7nH,KAAK6nH,aAAeA,EACb7nH,O,8BAIR,SAAkB8nH,GAGjB,OADA9nH,KAAK8nH,cAAgBA,EACd9nH,S,KAMHgoH,GAAU,GAEVC,G,kDAEL,WAAaP,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,QAEjBjmH,IAARsd,IAAoBA,EAAM,SAEZtd,IAAdL,KAAKkhE,OAAqBvjD,EAAM3d,KAAKkhE,KAAOvjD,GAEjDA,EAAM3d,KAAK0nH,QAAQV,WAAYrpG,GAE/B,IAAM0yB,EAAQrwC,KAERk6C,EAAS8rE,GAAMlsE,IAAKn8B,GAE1B,QAAgBtd,IAAX65C,EAYJ,OAVA7J,EAAMq3E,QAAQb,UAAWlpG,GAEzBuqG,YAAY,WAEN9B,GAASA,EAAQlsE,GAEtB7J,EAAMq3E,QAAQZ,QAASnpG,KAErB,GAEIu8B,EAMR,QAAwB75C,IAAnB2nH,GAASrqG,GAAd,CAeA,IAEIwqG,EADEC,EAAqBzqG,EAAI0jD,MADV,+BAKrB,GAAK+mD,EAAqB,CAEzB,IAAMC,EAAWD,EAAoB,GAC/BE,IAAcF,EAAoB,GAEpC9pG,EAAO8pG,EAAoB,GAC/B9pG,EAAOiqG,mBAAoBjqG,GAEtBgqG,IAAWhqG,EAAOkqG,KAAMlqG,IAE7B,IAEC,IAAImqG,EACEC,GAAiB1oH,KAAK0oH,cAAgB,IAAKpjF,cAEjD,OAASojF,GAER,IAAK,cACL,IAAK,OAIJ,IAFA,IAAMt1E,EAAO,IAAIx5B,WAAY0E,EAAKtQ,QAExBF,EAAI,EAAGA,EAAIwQ,EAAKtQ,OAAQF,IAEjCslC,EAAMtlC,GAAMwQ,EAAKqqG,WAAY76G,GAM7B26G,EAFqB,SAAjBC,EAEO,IAAIE,KAAM,CAAEx1E,EAAK/4B,QAAU,CAAEpN,KAAMo7G,IAInCj1E,EAAK/4B,OAIjB,MAED,IAAK,WAEJ,IAAMwuG,EAAS,IAAIC,UACnBL,EAAWI,EAAOE,gBAAiBzqG,EAAM+pG,GAEzC,MAED,IAAK,OAEJI,EAAWzvF,KAAK0B,MAAOpc,GAEvB,MAED,QAECmqG,EAAWnqG,EAOb4pG,YAAY,WAEN9B,GAASA,EAAQqC,GAEtBp4E,EAAMq3E,QAAQZ,QAASnpG,KAErB,GAEF,MAAQle,GAGTyoH,YAAY,WAEN5B,GAAUA,EAAS7mH,GAExB4wC,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,KAErB,QAIE,CAoHN,IAAM,IAAMqrG,KAhHZhB,GAASrqG,GAAQ,GAEjBqqG,GAASrqG,GAAMrQ,KAAM,CAEpB84G,OAAQA,EACRC,WAAYA,EACZC,QAASA,KAIV6B,EAAU,IAAIc,gBAENC,KAAM,MAAOvrG,GAAK,GAE1BwqG,EAAQ32D,iBAAkB,QAAQ,SAAW9jD,GAE5C,IAAM+6G,EAAWzoH,KAAKyoH,SAEhBU,EAAYnB,GAASrqG,GAI3B,UAFOqqG,GAASrqG,GAEK,MAAhB3d,KAAKwiE,QAAkC,IAAhBxiE,KAAKwiE,OAAe,CAK1B,IAAhBxiE,KAAKwiE,QAAepvD,QAAQC,KAAM,6CAIvC2yG,GAAM58F,IAAKzL,EAAK8qG,GAEhB,IAAM,IAAI36G,EAAI,EAAGgT,EAAKqoG,EAAUn7G,OAAQF,EAAIgT,EAAIhT,IAAO,CAEtD,IAAMuW,EAAW8kG,EAAWr7G,GACvBuW,EAAS+hG,QAAS/hG,EAAS+hG,OAAQqC,GAIzCp4E,EAAMq3E,QAAQZ,QAASnpG,OAEjB,CAEN,IAAM,IAAI7P,EAAI,EAAGgT,EAAKqoG,EAAUn7G,OAAQF,EAAIgT,EAAIhT,IAAO,CAEtD,IAAMuW,EAAW8kG,EAAWr7G,GACvBuW,EAASiiG,SAAUjiG,EAASiiG,QAAS54G,GAI3C2iC,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,OAItB,GAEHwqG,EAAQ32D,iBAAkB,YAAY,SAAW9jD,GAIhD,IAFA,IAAMy7G,EAAYnB,GAASrqG,GAEjB7P,EAAI,EAAGgT,EAAKqoG,EAAUn7G,OAAQF,EAAIgT,EAAIhT,IAAO,CAEtD,IAAMuW,EAAW8kG,EAAWr7G,GACvBuW,EAASgiG,YAAahiG,EAASgiG,WAAY34G,OAI/C,GAEHy6G,EAAQ32D,iBAAkB,SAAS,SAAW9jD,GAE7C,IAAMy7G,EAAYnB,GAASrqG,UAEpBqqG,GAASrqG,GAEhB,IAAM,IAAI7P,EAAI,EAAGgT,EAAKqoG,EAAUn7G,OAAQF,EAAIgT,EAAIhT,IAAO,CAEtD,IAAMuW,EAAW8kG,EAAWr7G,GACvBuW,EAASiiG,SAAUjiG,EAASiiG,QAAS54G,GAI3C2iC,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,MAErB,GAEHwqG,EAAQ32D,iBAAkB,SAAS,SAAW9jD,GAE7C,IAAMy7G,EAAYnB,GAASrqG,UAEpBqqG,GAASrqG,GAEhB,IAAM,IAAI7P,EAAI,EAAGgT,EAAKqoG,EAAUn7G,OAAQF,EAAIgT,EAAIhT,IAAO,CAEtD,IAAMuW,EAAW8kG,EAAWr7G,GACvBuW,EAASiiG,SAAUjiG,EAASiiG,QAAS54G,GAI3C2iC,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,MAErB,QAEwBtd,IAAtBL,KAAK0oH,eAA6BP,EAAQO,aAAe1oH,KAAK0oH,mBACrCroH,IAAzBL,KAAK4nH,kBAAgCO,EAAQP,gBAAkB5nH,KAAK4nH,iBAEpEO,EAAQiB,kBAAmBjB,EAAQiB,sBAAoC/oH,IAAlBL,KAAKqoH,SAAyBroH,KAAKqoH,SAAW,cAElFroH,KAAK8nH,cAE1BK,EAAQkB,iBAAkBL,EAAQhpH,KAAK8nH,cAAekB,IAIvDb,EAAQmB,KAAM,MAMf,OAFAj5E,EAAMq3E,QAAQb,UAAWlpG,GAElBwqG,EAtONH,GAASrqG,GAAMrQ,KAAM,CAEpB84G,OAAQA,EACRC,WAAYA,EACZC,QAASA,M,6BAsOZ,SAAiB9mH,GAGhB,OADAQ,KAAK0oH,aAAelpH,EACbQ,O,yBAIR,SAAaR,GAGZ,OADAQ,KAAKqoH,SAAW7oH,EACTQ,S,GA5RgBynH,IAkSnB8B,G,kDAEL,WAAa7B,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAERonH,EAAS,IAAIa,GAAYjoH,KAAK0nH,SACpCN,EAAOoC,QAASxpH,KAAKkhE,MACrBkmD,EAAOiC,iBAAkBrpH,KAAK8nH,eAC9BV,EAAOqC,mBAAoBzpH,KAAK4nH,iBAChCR,EAAOW,KAAMpqG,GAAK,SAAW+rG,GAE5B,IAECtD,EAAQ/1E,EAAM3V,MAAO1B,KAAK0B,MAAOgvF,KAEhC,MAAQ31G,GAEJuyG,EAEJA,EAASvyG,GAITX,QAAQ3T,MAAOsU,GAIhBs8B,EAAMq3E,QAAQX,UAAWppG,MAIxB0oG,EAAYC,K,mBAIhB,SAAO5pB,GAIN,IAFA,IAAM3lE,EAAa,GAETjpB,EAAI,EAAGA,EAAI4uF,EAAK1uF,OAAQF,IAAO,CAExC,IAAM2uG,EAAOsH,GAAcrpF,MAAOgiE,EAAM5uF,IAExCipB,EAAWzpB,KAAMmvG,GAIlB,OAAO1lF,M,GAtDqB0wF,IAkExBkC,G,kDAEL,WAAajC,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAER0d,EAAS,GAET2C,EAAU,IAAIq/E,GAEd0nB,EAAS,IAAIa,GAAYjoH,KAAK0nH,SACpCN,EAAOoC,QAASxpH,KAAKkhE,MACrBkmD,EAAOwC,gBAAiB,eACxBxC,EAAOiC,iBAAkBrpH,KAAK8nH,eAC9BV,EAAOqC,mBAAoBp5E,EAAMu3E,iBAEjC,IAAIiC,EAAS,EAEb,SAASC,EAAah8G,GAErBs5G,EAAOW,KAAMpqG,EAAK7P,IAAK,SAAWuM,GAEjC,IAAM0vG,EAAW15E,EAAM3V,MAAOrgB,GAAQ,GAEtCqD,EAAQ5P,GAAM,CACbiN,MAAOgvG,EAAShvG,MAChBC,OAAQ+uG,EAAS/uG,OACjBgB,OAAQ+tG,EAAS/tG,OACjBK,QAAS0tG,EAAS1tG,SAKH,KAFhBwtG,GAAU,KAIqB,IAAzBE,EAASC,cAAoB3pG,EAAQtE,UAAY3W,IAEtDib,EAAQ3F,MAAQgD,EAChB2C,EAAQrE,OAAS+tG,EAAS/tG,OAC1BqE,EAAQ+oB,aAAc,EAEjBg9E,GAASA,EAAQ/lG,MAIrBgmG,EAAYC,GAIhB,GAAK1oG,MAAMC,QAASF,GAEnB,IAAM,IAAI7P,EAAI,EAAGgT,EAAKnD,EAAI3P,OAAQF,EAAIgT,IAAOhT,EAE5Cg8G,EAAah8G,QAQds5G,EAAOW,KAAMpqG,GAAK,SAAWtD,GAE5B,IAAM0vG,EAAW15E,EAAM3V,MAAOrgB,GAAQ,GAEtC,GAAK0vG,EAASE,UAAY,CAIzB,IAFA,IAAM9Z,EAAQ4Z,EAAS1tG,QAAQrO,OAAS+7G,EAASC,YAEvClyG,EAAI,EAAGA,EAAIq4F,EAAOr4F,IAAO,CAElC4F,EAAQ5F,GAAM,CAAEuE,QAAS,IAEzB,IAAM,IAAIvO,EAAI,EAAGA,EAAIi8G,EAASC,YAAal8G,IAE1C4P,EAAQ5F,GAAIuE,QAAQ/O,KAAMy8G,EAAS1tG,QAASvE,EAAIiyG,EAASC,YAAcl8G,IACvE4P,EAAQ5F,GAAIkE,OAAS+tG,EAAS/tG,OAC9B0B,EAAQ5F,GAAIiD,MAAQgvG,EAAShvG,MAC7B2C,EAAQ5F,GAAIkD,OAAS+uG,EAAS/uG,OAMhCqF,EAAQ3F,MAAQgD,OAIhB2C,EAAQ3F,MAAMK,MAAQgvG,EAAShvG,MAC/BsF,EAAQ3F,MAAMM,OAAS+uG,EAAS/uG,OAChCqF,EAAQhE,QAAU0tG,EAAS1tG,QAIE,IAAzB0tG,EAASC,cAEb3pG,EAAQtE,UAAY3W,IAIrBib,EAAQrE,OAAS+tG,EAAS/tG,OAC1BqE,EAAQ+oB,aAAc,EAEjBg9E,GAASA,EAAQ/lG,KAEpBgmG,EAAYC,GAIhB,OAAOjmG,M,GAnH6BonG,IAyHhCyC,G,kDAEL,WAAaxC,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,QAEXjmH,IAAdL,KAAKkhE,OAAqBvjD,EAAM3d,KAAKkhE,KAAOvjD,GAEjDA,EAAM3d,KAAK0nH,QAAQV,WAAYrpG,GAE/B,IAAM0yB,EAAQrwC,KAERk6C,EAAS8rE,GAAMlsE,IAAKn8B,GAE1B,QAAgBtd,IAAX65C,EAYJ,OAVA7J,EAAMq3E,QAAQb,UAAWlpG,GAEzBuqG,YAAY,WAEN9B,GAASA,EAAQlsE,GAEtB7J,EAAMq3E,QAAQZ,QAASnpG,KAErB,GAEIu8B,EAIR,IAAMx/B,EAAQJ,GAAiB,OAE/B,SAAS6vG,IAERzvG,EAAM22C,oBAAqB,OAAQ84D,GAAa,GAChDzvG,EAAM22C,oBAAqB,QAAS+4D,GAAc,GAElDpE,GAAM58F,IAAKzL,EAAK3d,MAEXomH,GAASA,EAAQpmH,MAEtBqwC,EAAMq3E,QAAQZ,QAASnpG,GAIxB,SAASysG,EAAc18G,GAEtBgN,EAAM22C,oBAAqB,OAAQ84D,GAAa,GAChDzvG,EAAM22C,oBAAqB,QAAS+4D,GAAc,GAE7C9D,GAAUA,EAAS54G,GAExB2iC,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,GAiBxB,OAbAjD,EAAM82C,iBAAkB,OAAQ24D,GAAa,GAC7CzvG,EAAM82C,iBAAkB,QAAS44D,GAAc,GAEnB,UAAvBzsG,EAAI0sG,OAAQ,EAAG,SAEOhqH,IAArBL,KAAK2nH,cAA4BjtG,EAAMitG,YAAc3nH,KAAK2nH,aAIhEt3E,EAAMq3E,QAAQb,UAAWlpG,GAEzBjD,EAAME,IAAM+C,EAELjD,M,GA1EiB+sG,IAgFpB6C,G,kDAEL,WAAa5C,GAAU,uCAEfA,G,wCAIR,SAAM6C,EAAMnE,EAAQC,EAAYC,GAE/B,IAAMjmG,EAAU,IAAIk1B,GAEd6xE,EAAS,IAAI8C,GAAalqH,KAAK0nH,SACrCN,EAAOoD,eAAgBxqH,KAAK2nH,aAC5BP,EAAOoC,QAASxpH,KAAKkhE,MAErB,IAAI2oD,EAAS,EAEb,SAASC,EAAah8G,GAErBs5G,EAAOW,KAAMwC,EAAMz8G,IAAK,SAAW4M,GAElC2F,EAAQ3C,OAAQ5P,GAAM4M,EAIN,MAFhBmvG,IAICxpG,EAAQ+oB,aAAc,EAEjBg9E,GAASA,EAAQ/lG,WAIrBhgB,EAAWimH,GAIf,IAAM,IAAIx4G,EAAI,EAAGA,EAAIy8G,EAAKv8G,SAAWF,EAEpCg8G,EAAah8G,GAId,OAAOuS,M,GA5CuBonG,IAwD1BgD,G,kDAEL,WAAa/C,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAERqgB,EAAU,IAAI87E,GAEdirB,EAAS,IAAIa,GAAYjoH,KAAK0nH,SAiFpC,OAhFAN,EAAOwC,gBAAiB,eACxBxC,EAAOiC,iBAAkBrpH,KAAK8nH,eAC9BV,EAAOoC,QAASxpH,KAAKkhE,MACrBkmD,EAAOqC,mBAAoBp5E,EAAMu3E,iBACjCR,EAAOW,KAAMpqG,GAAK,SAAWtD,GAE5B,IAAMqwG,EAAUr6E,EAAM3V,MAAOrgB,GAEtBqwG,SAEgBrqH,IAAlBqqH,EAAQhwG,MAEZ2F,EAAQ3F,MAAQgwG,EAAQhwG,WAEIra,IAAjBqqH,EAAQpsG,OAEnB+B,EAAQ3F,MAAMK,MAAQ2vG,EAAQ3vG,MAC9BsF,EAAQ3F,MAAMM,OAAS0vG,EAAQ1vG,OAC/BqF,EAAQ3F,MAAM4D,KAAOosG,EAAQpsG,MAI9B+B,EAAQzE,WAA0Bvb,IAAlBqqH,EAAQ9uG,MAAsB8uG,EAAQ9uG,MAAQ/W,GAC9Dwb,EAAQxE,WAA0Bxb,IAAlBqqH,EAAQ7uG,MAAsB6uG,EAAQ7uG,MAAQhX,GAE9Dwb,EAAQvE,eAAkCzb,IAAtBqqH,EAAQ5uG,UAA0B4uG,EAAQ5uG,UAAY1W,GAC1Eib,EAAQtE,eAAkC1b,IAAtBqqH,EAAQ3uG,UAA0B2uG,EAAQ3uG,UAAY3W,GAE1Eib,EAAQpE,gBAAoC5b,IAAvBqqH,EAAQzuG,WAA2ByuG,EAAQzuG,WAAa,OAEnD5b,IAArBqqH,EAAQxuG,WAEZmE,EAAQnE,SAAWwuG,EAAQxuG,eAIL7b,IAAlBqqH,EAAQ/tG,QAEZ0D,EAAQ1D,MAAQ+tG,EAAQ/tG,YAIDtc,IAAnBqqH,EAAQ1uG,SAEZqE,EAAQrE,OAAS0uG,EAAQ1uG,aAIJ3b,IAAjBqqH,EAAQz9G,OAEZoT,EAAQpT,KAAOy9G,EAAQz9G,WAIC5M,IAApBqqH,EAAQruG,UAEZgE,EAAQhE,QAAUquG,EAAQruG,QAC1BgE,EAAQtE,UAAYxW,IAIQ,IAAxBmlH,EAAQV,cAEZ3pG,EAAQtE,UAAY3W,SAIY/E,IAA5BqqH,EAAQjuG,kBAEZ4D,EAAQ5D,gBAAkBiuG,EAAQjuG,iBAInC4D,EAAQ+oB,aAAc,EAEjBg9E,GAASA,EAAQ/lG,EAASqqG,MAE7BrE,EAAYC,GAGRjmG,M,GA/FuBonG,IAqG1BkD,G,kDAEL,WAAajD,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMjmG,EAAU,IAAI7E,GAEd4rG,EAAS,IAAI8C,GAAalqH,KAAK0nH,SAiBrC,OAhBAN,EAAOoD,eAAgBxqH,KAAK2nH,aAC5BP,EAAOoC,QAASxpH,KAAKkhE,MAErBkmD,EAAOW,KAAMpqG,GAAK,SAAWjD,GAE5B2F,EAAQ3F,MAAQA,EAChB2F,EAAQ+oB,aAAc,OAEN/oC,IAAX+lH,GAEJA,EAAQ/lG,KAIPgmG,EAAYC,GAERjmG,M,GA7BmBonG,IAmCtBmD,G,kDAEL,WAAa3qF,GAAuB,MAAhB+vC,EAAgB,uDAAJ,EAAI,4BAEnC,gBAEK/iE,KAAO,QAEZ,EAAKgzB,MAAQ,IAAIsE,GAAOtE,GACxB,EAAK+vC,UAAYA,EAPkB,E,2CAWpC,c,kBAMA,SAAM9yD,GAOL,OALA,4DAAYA,GAEZld,KAAKigC,MAAMhjB,KAAMC,EAAO+iB,OACxBjgC,KAAKgwE,UAAY9yD,EAAO8yD,UAEjBhwE,O,oBAIR,SAAQmd,GAEP,IAAMmB,EAAO,8DAAcnB,GAc3B,OAZAmB,EAAK+K,OAAO4W,MAAQjgC,KAAKigC,MAAMC,SAC/B5hB,EAAK+K,OAAO2mD,UAAYhwE,KAAKgwE,eAEH3vE,IAArBL,KAAKwmD,cAA4BloC,EAAK+K,OAAOm9B,YAAcxmD,KAAKwmD,YAAYtmB,eAE1D7/B,IAAlBL,KAAKs3B,WAAyBhZ,EAAK+K,OAAOiO,SAAWt3B,KAAKs3B,eAC3Cj3B,IAAfL,KAAKsU,QAAsBgK,EAAK+K,OAAO/U,MAAQtU,KAAKsU,YACrCjU,IAAfL,KAAK4lD,QAAsBtnC,EAAK+K,OAAOu8B,MAAQ5lD,KAAK4lD,YAClCvlD,IAAlBL,KAAK2wE,WAAyBryD,EAAK+K,OAAOsnD,SAAW3wE,KAAK2wE,eAE1CtwE,IAAhBL,KAAK2nD,SAAuBrpC,EAAK+K,OAAOs+B,OAAS3nD,KAAK2nD,OAAO5uB,UAE3Dza,M,GA9CWyX,IAoDpB60F,GAAMt1G,UAAUoiB,SAAU,E,IAEpBmzF,G,kDAEL,WAAatkE,EAAUC,EAAawpB,GAAY,kCAE/C,cAAOzpB,EAAUypB,IAEZ/iE,KAAO,kBAEZ,EAAK8lB,SAAS9V,KAAM8Y,GAASE,WAC7B,EAAKgB,eAEL,EAAKuvB,YAAc,IAAIjiB,GAAOiiB,GATiB,E,wCAahD,SAAMtpC,GAML,OAJA0tG,GAAMt1G,UAAU2H,KAAKhP,KAAMjO,KAAMkd,GAEjCld,KAAKwmD,YAAYvpC,KAAMC,EAAOspC,aAEvBxmD,S,GArBqB4qH,IA2B9BC,GAAgBv1G,UAAUw7D,mBAAoB,EAE9C,IAAMg6C,GAAoC,IAAI/6F,GACxCg7F,GAAsC,IAAIplG,GAC1CqlG,GAA8B,IAAIrlG,GAElCslG,G,WAEL,WAAaxkG,GAAS,oBAErBzmB,KAAKymB,OAASA,EAEdzmB,KAAKuwE,KAAO,EACZvwE,KAAKwwE,WAAa,EAClBxwE,KAAK+nB,OAAS,EACd/nB,KAAKwzE,YAAc,EAEnBxzE,KAAKywE,QAAU,IAAIn9D,GAAS,IAAK,KAEjCtT,KAAKohC,IAAM,KACXphC,KAAKyzE,QAAU,KACfzzE,KAAKoZ,OAAS,IAAI2W,GAElB/vB,KAAK00E,YAAa,EAClB10E,KAAKopC,aAAc,EAEnBppC,KAAKqyE,SAAW,IAAIj7B,GACpBp3C,KAAKkrH,cAAgB,IAAI53G,GAAS,EAAG,GAErCtT,KAAKmrH,eAAiB,EAEtBnrH,KAAKorH,WAAa,CAEjB,IAAI5sG,GAAS,EAAG,EAAG,EAAG,I,oDAMxB,WAEC,OAAOxe,KAAKmrH,iB,wBAIb,WAEC,OAAOnrH,KAAKqyE,W,4BAIb,SAAgBlE,GAEf,IAAMkG,EAAer0E,KAAKymB,OACpB4kG,EAAerrH,KAAKoZ,OAE1B2xG,GAAsBvzF,sBAAuB22C,EAAMrnD,aACnDutD,EAAathD,SAAS9V,KAAM8tG,IAE5BC,GAAcxzF,sBAAuB22C,EAAMxgE,OAAOmZ,aAClDutD,EAAa18C,OAAQqzF,IACrB32C,EAAah8C,oBAEbyyF,GAAoBt0G,iBAAkB69D,EAAaztD,iBAAkBytD,EAAa1tD,oBAClF3mB,KAAKqyE,SAASgkB,wBAAyBy0B,IAEvCO,EAAal4G,IACZ,GAAK,EAAK,EAAK,GACf,EAAK,GAAK,EAAK,GACf,EAAK,EAAK,GAAK,GACf,EAAK,EAAK,EAAK,GAGhBk4G,EAAaj0F,SAAUi9C,EAAaztD,kBACpCykG,EAAaj0F,SAAUi9C,EAAa1tD,sB,yBAIrC,SAAa2kG,GAEZ,OAAOtrH,KAAKorH,WAAYE,K,6BAIzB,WAEC,OAAOtrH,KAAKkrH,gB,qBAIb,WAEMlrH,KAAKohC,KAETphC,KAAKohC,IAAI3gB,UAILzgB,KAAKyzE,SAETzzE,KAAKyzE,QAAQhzD,Y,kBAMf,SAAMvD,GASL,OAPAld,KAAKymB,OAASvJ,EAAOuJ,OAAO/F,QAE5B1gB,KAAKuwE,KAAOrzD,EAAOqzD,KACnBvwE,KAAK+nB,OAAS7K,EAAO6K,OAErB/nB,KAAKywE,QAAQxzD,KAAMC,EAAOuzD,SAEnBzwE,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,aAAcwJ,KAAMjd,Q,oBAIrC,WAEC,IAAMqpB,EAAS,GAUf,OARmB,IAAdrpB,KAAKuwE,OAAalnD,EAAOknD,KAAOvwE,KAAKuwE,MACjB,IAApBvwE,KAAKwwE,aAAmBnnD,EAAOmnD,WAAaxwE,KAAKwwE,YACjC,IAAhBxwE,KAAK+nB,SAAesB,EAAOtB,OAAS/nB,KAAK+nB,QACtB,MAAnB/nB,KAAKywE,QAAQ/gE,GAAgC,MAAnB1P,KAAKywE,QAAQ9gE,IAAY0Z,EAAOonD,QAAUzwE,KAAKywE,QAAQv3C,WAEtF7P,EAAO5C,OAASzmB,KAAKymB,OAAOsS,QAAQ,GAAQ1P,cACrCA,EAAO5C,OAAOrN,OAEdiQ,M,KAMHkiG,G,kDAEL,aAAc,kCAEb,cAAO,IAAIx4E,GAAmB,GAAI,EAAG,GAAK,OAErCI,MAAQ,EAJA,E,kDAQd,SAAgBg7B,GAEf,IAAM1nD,EAASzmB,KAAKymB,OAEdusB,EAAgB,EAAV1kC,GAAc6/D,EAAM75D,MAAQtU,KAAKmzC,MACvCF,EAASjzC,KAAKywE,QAAQ11D,MAAQ/a,KAAKywE,QAAQz1D,OAC3CkZ,EAAMi6C,EAAM72C,UAAY7Q,EAAOyN,IAEhC8e,IAAQvsB,EAAOusB,KAAOC,IAAWxsB,EAAOwsB,QAAU/e,IAAQzN,EAAOyN,MAErEzN,EAAOusB,IAAMA,EACbvsB,EAAOwsB,OAASA,EAChBxsB,EAAOyN,IAAMA,EACbzN,EAAO8sB,0BAIR,sEAAsB46B,K,kBAIvB,SAAMjxD,GAML,OAJA,4DAAYA,GAEZld,KAAKmzC,MAAQj2B,EAAOi2B,MAEbnzC,S,GArCqBirH,IA2C9BM,GAAgBj2G,UAAUk2G,mBAAoB,E,IAExCC,G,kDAEL,WAAaxrF,EAAO+vC,GAAwE,MAA7D14C,EAA6D,uDAAlD,EAAGhjB,EAA+C,uDAAvClG,KAAKC,GAAK,EAAGsiE,EAA0B,uDAAf,EAAG/qB,EAAY,uDAAJ,EAAI,4BAE3F,cAAO3lB,EAAO+vC,IAET/iE,KAAO,YAEZ,EAAK8lB,SAAS9V,KAAM8Y,GAASE,WAC7B,EAAKgB,eAEL,EAAKtpB,OAAS,IAAIooB,GAElB,EAAKuB,SAAWA,EAChB,EAAKhjB,MAAQA,EACb,EAAKq8D,SAAWA,EAChB,EAAK/qB,MAAQA,EAEb,EAAK+B,OAAS,IAAI4jE,GAhByE,E,uCAoB5F,WAIC,OAAOvrH,KAAKgwE,UAAY5hE,KAAKC,I,IAI9B,SAAWq9G,GAGV1rH,KAAKgwE,UAAY07C,EAAQt9G,KAAKC,K,qBAI/B,WAECrO,KAAK2nD,OAAOlnC,Y,kBAIb,SAAMvD,GAaL,OAXA,4DAAYA,GAEZld,KAAKs3B,SAAWpa,EAAOoa,SACvBt3B,KAAKsU,MAAQ4I,EAAO5I,MACpBtU,KAAK2wE,SAAWzzD,EAAOyzD,SACvB3wE,KAAK4lD,MAAQ1oC,EAAO0oC,MAEpB5lD,KAAK2N,OAASuP,EAAOvP,OAAO+S,QAE5B1gB,KAAK2nD,OAASzqC,EAAOyqC,OAAOjnC,QAErB1gB,S,GAxDe4qH,IA8DxBa,GAAUn2G,UAAUo7D,aAAc,EAElC,IAAMmf,GAAkC,IAAI9/D,GACtC47F,GAAoC,IAAIhmG,GACxCimG,GAA4B,IAAIjmG,GAEhCkmG,G,kDAEL,aAAc,kCAEb,cAAO,IAAI94E,GAAmB,GAAI,EAAG,GAAK,OAErCm4E,cAAgB,IAAI53G,GAAS,EAAG,GAErC,EAAK63G,eAAiB,EAEtB,EAAKC,WAAa,CAejB,IAAI5sG,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,IAGvB,EAAKstG,gBAAkB,CACtB,IAAInmG,GAAS,EAAG,EAAG,GAAK,IAAIA,IAAW,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GACrE,IAAIA,GAAS,EAAG,GAAK,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,GAAK,EAAG,IAGxE,EAAKomG,SAAW,CACf,IAAIpmG,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GACnE,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,GAAK,IA3CzD,E,kDAgDd,SAAgBwoD,GAA2B,IAApBm9C,EAAoB,uDAAJ,EAEhC7kG,EAASzmB,KAAKymB,OACd4kG,EAAerrH,KAAKoZ,OAEpB8a,EAAMi6C,EAAM72C,UAAY7Q,EAAOyN,IAEhCA,IAAQzN,EAAOyN,MAEnBzN,EAAOyN,IAAMA,EACbzN,EAAO8sB,0BAIRo4E,GAAoBn0F,sBAAuB22C,EAAMrnD,aACjDL,EAAOsM,SAAS9V,KAAM0uG,IAEtBC,GAAY3uG,KAAMwJ,EAAOsM,UACzB64F,GAAYxiG,IAAKppB,KAAK8rH,gBAAiBR,IACvC7kG,EAAOgL,GAAGxU,KAAMjd,KAAK+rH,SAAUT,IAC/B7kG,EAAOkR,OAAQi0F,IACfnlG,EAAO4R,oBAEPgzF,EAAa1hF,iBAAmBgiF,GAAoBj8G,GAAKi8G,GAAoBh8G,GAAKg8G,GAAoBltG,GAEtGoxE,GAAkBr5E,iBAAkBiQ,EAAOG,iBAAkBH,EAAOE,oBACpE3mB,KAAKqyE,SAASgkB,wBAAyBxG,Q,GA5EVo7B,IAkF/BY,GAAiBv2G,UAAU+/D,oBAAqB,E,IAE1C22C,G,kDAEL,WAAa/rF,EAAO+vC,GAAqC,MAA1B14C,EAA0B,uDAAf,EAAGsuB,EAAY,uDAAJ,EAAI,4BAExD,cAAO3lB,EAAO+vC,IAET/iE,KAAO,aAEZ,EAAKqqB,SAAWA,EAChB,EAAKsuB,MAAQA,EAEb,EAAK+B,OAAS,IAAIkkE,GATsC,E,uCAazD,WAIC,OAAwB,EAAjB7rH,KAAKgwE,UAAgB5hE,KAAKC,I,IAIlC,SAAWq9G,GAGV1rH,KAAKgwE,UAAY07C,GAAU,EAAIt9G,KAAKC,M,qBAIrC,WAECrO,KAAK2nD,OAAOlnC,Y,kBAIb,SAAMvD,GASL,OAPA,4DAAYA,GAEZld,KAAKs3B,SAAWpa,EAAOoa,SACvBt3B,KAAK4lD,MAAQ1oC,EAAO0oC,MAEpB5lD,KAAK2nD,OAASzqC,EAAOyqC,OAAOjnC,QAErB1gB,S,GA7CgB4qH,IAmDzBoB,GAAW12G,UAAUu7D,cAAe,E,IAE9Bo7C,G,kDAEL,aAAc,uCAEN,IAAIr6D,IAAsB,EAAG,EAAG,GAAK,EAAG,GAAK,M,UAJjBq5D,IAUrCgB,GAAuB32G,UAAU42G,0BAA2B,E,IAEtDC,G,kDAEL,WAAalsF,EAAO+vC,GAAY,kCAE/B,cAAO/vC,EAAO+vC,IAET/iE,KAAO,mBAEZ,EAAK8lB,SAAS9V,KAAM8Y,GAASE,WAC7B,EAAKgB,eAEL,EAAKtpB,OAAS,IAAIooB,GAElB,EAAK4xB,OAAS,IAAIskE,GAXa,E,2CAehC,WAECjsH,KAAK2nD,OAAOlnC,Y,kBAIb,SAAMvD,GAOL,OALA,4DAAYA,GAEZld,KAAK2N,OAASuP,EAAOvP,OAAO+S,QAC5B1gB,KAAK2nD,OAASzqC,EAAOyqC,OAAOjnC,QAErB1gB,S,GA9BsB4qH,IAoC/BuB,GAAiB72G,UAAU+6D,oBAAqB,E,IAE1C+7C,G,kDAEL,WAAansF,EAAO+vC,GAAY,kCAE/B,cAAO/vC,EAAO+vC,IAET/iE,KAAO,eAJmB,E,UAFN29G,IAY3BwB,GAAa92G,UAAU26D,gBAAiB,E,IAElCo8C,G,kDAEL,WAAapsF,EAAO+vC,GAAqC,MAA1Bj1D,EAA0B,uDAAlB,GAAIC,EAAc,uDAAL,GAAK,4BAExD,cAAOilB,EAAO+vC,IAET/iE,KAAO,gBAEZ,EAAK8N,MAAQA,EACb,EAAKC,OAASA,EAP0C,E,uCAWzD,WAGC,OAAOhb,KAAKgwE,UAAYhwE,KAAK+a,MAAQ/a,KAAKgb,OAAS5M,KAAKC,I,IAIzD,SAAWq9G,GAGV1rH,KAAKgwE,UAAY07C,GAAU1rH,KAAK+a,MAAQ/a,KAAKgb,OAAS5M,KAAKC,M,kBAI5D,SAAM6O,GAOL,OALA,4DAAYA,GAEZld,KAAK+a,MAAQmC,EAAOnC,MACpB/a,KAAKgb,OAASkC,EAAOlC,OAEdhb,O,oBAIR,SAAQmd,GAEP,IAAMmB,EAAO,8DAAcnB,GAK3B,OAHAmB,EAAK+K,OAAOtO,MAAQ/a,KAAK+a,MACzBuD,EAAK+K,OAAOrO,OAAShb,KAAKgb,OAEnBsD,M,GA7CmBssG,IAmD5ByB,GAAc/2G,UAAUs7D,iBAAkB,E,IAYpC07C,G,WAEL,aAAc,oBAEbtsH,KAAKowE,aAAe,GAEpB,IAAM,IAAItiE,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAAa9iE,KAAM,IAAIqY,I,uCAM9B,SAAKyqD,GAEJ,IAAM,IAAItiE,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAActiE,GAAImP,KAAMmzD,EAActiE,IAI5C,OAAO9N,O,kBAIR,WAEC,IAAM,IAAI8N,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAActiE,GAAIqF,IAAK,EAAG,EAAG,GAInC,OAAOnT,O,mBAMR,SAAO4nB,EAAQja,GAId,IAAM+B,EAAIkY,EAAOlY,EAAGC,EAAIiY,EAAOjY,EAAG8O,EAAImJ,EAAOnJ,EAEvC8tG,EAAQvsH,KAAKowE,aAiBnB,OAdAziE,EAAOsP,KAAMsvG,EAAO,IAAMz4G,eAAgB,SAG1CnG,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAW58G,GAC/ChC,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAW9tG,GAC/C9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAW78G,GAG/C/B,EAAO4uB,gBAAiBgwF,EAAO,GAAkB78G,EAAIC,EAAjB,UACpChC,EAAO4uB,gBAAiBgwF,EAAO,GAAkB58G,EAAI8O,EAAjB,UACpC9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,SAAa,EAAM9tG,EAAIA,EAAI,IAC/D9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAkB78G,EAAI+O,EAAjB,UACpC9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,SAAa78G,EAAIA,EAAIC,EAAIA,IAEtDhC,I,6BAOR,SAAiBia,EAAQja,GAIxB,IAAM+B,EAAIkY,EAAOlY,EAAGC,EAAIiY,EAAOjY,EAAG8O,EAAImJ,EAAOnJ,EAEvC8tG,EAAQvsH,KAAKowE,aAiBnB,OAdAziE,EAAOsP,KAAMsvG,EAAO,IAAMz4G,eAAgB,SAG1CnG,EAAO4uB,gBAAiBgwF,EAAO,GAAK,SAAiB58G,GACrDhC,EAAO4uB,gBAAiBgwF,EAAO,GAAK,SAAiB9tG,GACrD9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,SAAiB78G,GAGrD/B,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAiB78G,EAAIC,GACzDhC,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAiB58G,EAAI8O,GACzD9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAW9tG,EAAIA,EAAI,SACvD9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,QAAiB78G,EAAI+O,GACzD9Q,EAAO4uB,gBAAiBgwF,EAAO,GAAK,SAAa78G,EAAIA,EAAIC,EAAIA,IAEtDhC,I,iBAIR,SAAKwiE,GAEJ,IAAM,IAAIriE,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAActiE,GAAIsb,IAAK+mD,EAAGC,aAActiE,IAI9C,OAAO9N,O,yBAIR,SAAamwE,EAAIr+D,GAEhB,IAAM,IAAIhE,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAActiE,GAAIyuB,gBAAiB4zC,EAAGC,aAActiE,GAAKgE,GAI/D,OAAO9R,O,mBAIR,SAAO8R,GAEN,IAAM,IAAIhE,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAActiE,GAAIgG,eAAgBhC,GAIxC,OAAO9R,O,kBAIR,SAAMmwE,EAAIv7D,GAET,IAAM,IAAI9G,EAAI,EAAGA,EAAI,EAAGA,IAEvB9N,KAAKowE,aAActiE,GAAI2B,KAAM0gE,EAAGC,aAActiE,GAAK8G,GAIpD,OAAO5U,O,oBAIR,SAAQmwE,GAEP,IAAM,IAAIriE,EAAI,EAAGA,EAAI,EAAGA,IAEvB,IAAO9N,KAAKowE,aAActiE,GAAIyd,OAAQ4kD,EAAGC,aAActiE,IAEtD,OAAO,EAMT,OAAO,I,kBAIR,SAAMqiE,GAEL,OAAOnwE,KAAKmT,IAAKg9D,EAAGC,gB,mBAIrB,WAEC,OAAO,IAAIpwE,KAAKyT,aAAcwJ,KAAMjd,Q,uBAIrC,SAAW4N,GAIV,IAJ8B,IAAbmH,EAAa,uDAAJ,EAEpBq7D,EAAepwE,KAAKowE,aAEhBtiE,EAAI,EAAGA,EAAI,EAAGA,IAEvBsiE,EAActiE,GAAIuL,UAAWzL,EAAOmH,EAAe,EAAJjH,GAIhD,OAAO9N,O,qBAIR,WAIC,IAJiC,IAAzB4N,EAAyB,uDAAjB,GAAImH,EAAa,uDAAJ,EAEvBq7D,EAAepwE,KAAKowE,aAEhBtiE,EAAI,EAAGA,EAAI,EAAGA,IAEvBsiE,EAActiE,GAAIorB,QAAStrB,EAAOmH,EAAe,EAAJjH,GAI9C,OAAOF,K,yBAMR,SAAmBga,EAAQ4kG,GAI1B,IAAM98G,EAAIkY,EAAOlY,EAAGC,EAAIiY,EAAOjY,EAAG8O,EAAImJ,EAAOnJ,EAG7C+tG,EAAS,GAAM,QAGfA,EAAS,GAAM,QAAW78G,EAC1B68G,EAAS,GAAM,QAAW/tG,EAC1B+tG,EAAS,GAAM,QAAW98G,EAG1B88G,EAAS,GAAM,SAAW98G,EAAIC,EAC9B68G,EAAS,GAAM,SAAW78G,EAAI8O,EAC9B+tG,EAAS,GAAM,SAAa,EAAI/tG,EAAIA,EAAI,GACxC+tG,EAAS,GAAM,SAAW98G,EAAI+O,EAC9B+tG,EAAS,GAAM,SAAa98G,EAAIA,EAAIC,EAAIA,O,KAM1C28G,GAAoBh3G,UAAUm3G,uBAAwB,E,IAEhDC,G,kDAEL,aAA6D,MAAhDv8C,EAAgD,uDAA3C,IAAIm8C,GAAuBt8C,EAAgB,uDAAJ,EAAI,4BAE5D,mBAAO3vE,EAAW2vE,IAEbG,GAAKA,EAJkD,E,wCAQ7D,SAAMjzD,GAML,OAJA,4DAAYA,GAEZld,KAAKmwE,GAAGlzD,KAAMC,EAAOizD,IAEdnwE,O,sBAIR,SAAU08F,GAKT,OAHA18F,KAAKgwE,UAAY0sB,EAAK1sB,UACtBhwE,KAAKmwE,GAAG92D,UAAWqjF,EAAKvsB,IAEjBnwE,O,oBAIR,SAAQmd,GAEP,IAAMmB,EAAO,8DAAcnB,GAI3B,OAFAmB,EAAK+K,OAAO8mD,GAAKnwE,KAAKmwE,GAAGj3C,UAElB5a,M,GAnCgBssG,IAyCzB8B,GAAWp3G,UAAU46D,cAAe,E,IAE9By8C,G,kDAEL,WAAajF,GAAU,kCAEtB,cAAOA,IACFrqG,SAAW,GAHM,E,wCAOvB,SAAMM,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAERonH,EAAS,IAAIa,GAAY53E,EAAMq3E,SACrCN,EAAOoC,QAASn5E,EAAM6wB,MACtBkmD,EAAOiC,iBAAkBh5E,EAAMy3E,eAC/BV,EAAOqC,mBAAoBp5E,EAAMu3E,iBACjCR,EAAOW,KAAMpqG,GAAK,SAAW+rG,GAE5B,IAECtD,EAAQ/1E,EAAM3V,MAAO1B,KAAK0B,MAAOgvF,KAEhC,MAAQ31G,GAEJuyG,EAEJA,EAASvyG,GAITX,QAAQ3T,MAAOsU,GAIhBs8B,EAAMq3E,QAAQX,UAAWppG,MAIxB0oG,EAAYC,K,mBAIhB,SAAO5pB,GAEN,IAAMr/E,EAAWrd,KAAKqd,SAEtB,SAASuvG,EAAYryG,GAQpB,YAN0Bla,IAArBgd,EAAU9C,IAEdnH,QAAQC,KAAM,0CAA2CkH,GAInD8C,EAAU9C,GAIlB,IAAM4f,EAAW,IAAI8gF,GAAWve,EAAKzvF,MAuFrC,QArFmB5M,IAAdq8F,EAAKtgF,OAAqB+d,EAAS/d,KAAOsgF,EAAKtgF,WACjC/b,IAAdq8F,EAAKniF,OAAqB4f,EAAS5f,KAAOmiF,EAAKniF,WAChCla,IAAfq8F,EAAKz8D,YAA0C5/B,IAAnB85B,EAAS8F,OAAsB9F,EAAS8F,MAAMwE,OAAQi4D,EAAKz8D,YACpE5/B,IAAnBq8F,EAAKv8D,YAA0BhG,EAASgG,UAAYu8D,EAAKv8D,gBACtC9/B,IAAnBq8F,EAAKt8D,YAA0BjG,EAASiG,UAAYs8D,EAAKt8D,gBAC1C//B,IAAfq8F,EAAKr8D,QAAsBlG,EAASkG,MAAQq8D,EAAKr8D,YAC9BhgC,IAAnBq8F,EAAKp8D,YAA0BnG,EAASmG,WAAY,IAAIiE,IAAQE,OAAQi4D,EAAKp8D,iBACrDjgC,IAAxBq8F,EAAKn8D,iBAA+BpG,EAASoG,eAAiBm8D,EAAKn8D,qBACjDlgC,IAAlBq8F,EAAKl8D,eAAgDngC,IAAtB85B,EAASqG,UAAyBrG,EAASqG,SAASiE,OAAQi4D,EAAKl8D,eAC9EngC,IAAlBq8F,EAAKh8D,eAAgDrgC,IAAtB85B,EAASuG,UAAyBvG,EAASuG,SAAS+D,OAAQi4D,EAAKh8D,eACrErgC,IAA3Bq8F,EAAK/7D,oBAAkCxG,EAASwG,kBAAoB+7D,EAAK/7D,wBACnDtgC,IAAtBq8F,EAAK97D,mBAAwDvgC,IAA1B85B,EAASyG,cAA6BzG,EAASyG,aAAa6D,OAAQi4D,EAAK97D,mBACzFvgC,IAAnBq8F,EAAK77D,YAA0B1G,EAAS0G,UAAY67D,EAAK77D,gBACtCxgC,IAAnBq8F,EAAK57D,YAA0B3G,EAAS2G,UAAY47D,EAAK57D,gBAC7BzgC,IAA5Bq8F,EAAK37D,qBAAmC5G,EAAS4G,mBAAqB27D,EAAK37D,yBACrD1gC,IAAtBq8F,EAAK35D,eAA6B5I,EAAS4I,aAAe25D,EAAK35D,mBAC5C1iC,IAAnBq8F,EAAKz5D,YAA0B9I,EAAS8I,UAAYy5D,EAAKz5D,gBAC5B5iC,IAA7Bq8F,EAAKv5D,sBAAoChJ,EAASgJ,oBAAsBu5D,EAAKv5D,0BACpD9iC,IAAzBq8F,EAAKt5D,sBAA8D/iC,IAA7B85B,EAASiJ,iBAAgCjJ,EAASiJ,gBAAgBqB,OAAQi4D,EAAKt5D,sBACxG/iC,IAAbq8F,EAAKn/D,MAAoBpD,EAASoD,IAAMm/D,EAAKn/D,UACxBl9B,IAArBq8F,EAAK38D,cAA4B5F,EAAS4F,YAAc28D,EAAK38D,kBAC3C1/B,IAAlBq8F,EAAKl/D,WAAyBrD,EAASqD,SAAWk/D,EAAKl/D,eACtCn9B,IAAjBq8F,EAAKh6D,UAAwBvI,EAASuI,QAAUg6D,EAAKh6D,cACvCriC,IAAdq8F,EAAKj/D,OAAqBtD,EAASsD,KAAOi/D,EAAKj/D,WAC3Bp9B,IAApBq8F,EAAKz9D,aAA2B9E,EAAS8E,WAAay9D,EAAKz9D,iBAC1C5+B,IAAjBq8F,EAAK/+D,UAAwBxD,EAASwD,QAAU++D,EAAK/+D,cACrCt9B,IAAhBq8F,EAAK1gF,SAAuBme,EAASne,OAAS0gF,EAAK1gF,aAC9B3b,IAArBq8F,EAAK9+D,cAA4BzD,EAASyD,YAAc8+D,EAAK9+D,kBAC1Cv9B,IAAnBq8F,EAAKj5D,YAA0BtJ,EAASsJ,UAAYi5D,EAAKj5D,gBACtCpjC,IAAnBq8F,EAAKt+D,YAA0BjE,EAASiE,UAAYs+D,EAAKt+D,gBACrC/9B,IAApBq8F,EAAKr+D,aAA2BlE,EAASkE,WAAaq+D,EAAKr+D,iBACvCh+B,IAApBq8F,EAAKx9D,aAA2B/E,EAAS+E,WAAaw9D,EAAKx9D,iBAErC7+B,IAAtBq8F,EAAK79D,eAA6B1E,EAAS0E,aAAe69D,EAAK79D,mBACrCx+B,IAA1Bq8F,EAAKp+D,mBAAiCnE,EAASmE,iBAAmBo+D,EAAKp+D,uBAClDj+B,IAArBq8F,EAAKn+D,cAA4BpE,EAASoE,YAAcm+D,EAAKn+D,kBACzCl+B,IAApBq8F,EAAKl+D,aAA2BrE,EAASqE,WAAak+D,EAAKl+D,iBAClCn+B,IAAzBq8F,EAAKj+D,kBAAgCtE,EAASsE,gBAAkBi+D,EAAKj+D,sBAChDp+B,IAArBq8F,EAAKh+D,cAA4BvE,EAASuE,YAAcg+D,EAAKh+D,kBACvCr+B,IAAtBq8F,EAAK/9D,eAA6BxE,EAASwE,aAAe+9D,EAAK/9D,mBACzCt+B,IAAtBq8F,EAAK99D,eAA6BzE,EAASyE,aAAe89D,EAAK99D,mBAE5Cv+B,IAAnBq8F,EAAKh5D,YAA0BvJ,EAASuJ,UAAYg5D,EAAKh5D,gBAC7BrjC,IAA5Bq8F,EAAK/4D,qBAAmCxJ,EAASwJ,mBAAqB+4D,EAAK/4D,yBACjDtjC,IAA1Bq8F,EAAK94D,mBAAiCzJ,EAASyJ,iBAAmB84D,EAAK94D,uBAC5CvjC,IAA3Bq8F,EAAK74D,oBAAkC1J,EAAS0J,kBAAoB64D,EAAK74D,wBAEvDxjC,IAAlBq8F,EAAK1jF,WAAyBmhB,EAASnhB,SAAW0jF,EAAK1jF,UAEpC,IAAnB0jF,EAAKp5D,YAAkBnJ,EAASmJ,UAAYo5D,EAAKp5D,gBAC/BjjC,IAAlBq8F,EAAKn5D,WAAyBpJ,EAASoJ,SAAWm5D,EAAKn5D,eACtCljC,IAAjBq8F,EAAKl5D,UAAwBrJ,EAASqJ,QAAUk5D,EAAKl5D,cACtCnjC,IAAfq8F,EAAK1pE,QAAsBmH,EAASnH,MAAQ0pE,EAAK1pE,YAE1B3yB,IAAvBq8F,EAAKt9D,gBAA8BjF,EAASiF,cAAgBs9D,EAAKt9D,oBACpC/+B,IAA7Bq8F,EAAKr9D,sBAAoClF,EAASkF,oBAAsBq9D,EAAKr9D,0BACjDh/B,IAA5Bq8F,EAAKp9D,qBAAmCnF,EAASmF,mBAAqBo9D,EAAKp9D,yBAExDj/B,IAAnBq8F,EAAKn9D,YAA0BpF,EAASoF,UAAYm9D,EAAKn9D,gBAEhCl/B,IAAzBq8F,EAAKl9D,kBAAgCrF,EAASqF,gBAAkBk9D,EAAKl9D,sBACzCn/B,IAA5Bq8F,EAAKj9D,qBAAmCtF,EAASsF,mBAAqBi9D,EAAKj9D,yBAE1Dp/B,IAAjBq8F,EAAKhmE,UAAwByD,EAASzD,QAAUgmE,EAAKhmE,cAEjCr2B,IAApBq8F,EAAKh9D,aAA2BvF,EAASuF,WAAag9D,EAAKh9D,iBAEzCr/B,IAAlBq8F,EAAK1lE,WAAyBmD,EAASnD,SAAW0lE,EAAK1lE,eAEjC32B,IAAtBq8F,EAAKh/D,eAEyB,kBAAtBg/D,EAAKh/D,aAEhBvD,EAASuD,aAAiBg/D,EAAKh/D,aAAe,EAI9CvD,EAASuD,aAAeg/D,EAAKh/D,mBAQRr9B,IAAlBq8F,EAAKhrD,SAET,IAAM,IAAMn3B,KAAQmiF,EAAKhrD,SAAW,CAEnC,IAAMme,EAAU6sC,EAAKhrD,SAAUn3B,GAI/B,OAFA4f,EAASuX,SAAUn3B,GAAS,GAEnBs1C,EAAQ5iD,MAEhB,IAAK,IACJktB,EAASuX,SAAUn3B,GAAO/a,MAAQotH,EAAY/8D,EAAQrwD,OACtD,MAED,IAAK,IACJ26B,EAASuX,SAAUn3B,GAAO/a,OAAQ,IAAI+kC,IAAQE,OAAQorB,EAAQrwD,OAC9D,MAED,IAAK,KACJ26B,EAASuX,SAAUn3B,GAAO/a,OAAQ,IAAI8T,IAAU+F,UAAWw2C,EAAQrwD,OACnE,MAED,IAAK,KACJ26B,EAASuX,SAAUn3B,GAAO/a,OAAQ,IAAImmB,IAAUtM,UAAWw2C,EAAQrwD,OACnE,MAED,IAAK,KACJ26B,EAASuX,SAAUn3B,GAAO/a,OAAQ,IAAIgf,IAAUnF,UAAWw2C,EAAQrwD,OACnE,MAED,IAAK,KACJ26B,EAASuX,SAAUn3B,GAAO/a,OAAQ,IAAIgW,IAAU6D,UAAWw2C,EAAQrwD,OACnE,MAED,IAAK,KACJ26B,EAASuX,SAAUn3B,GAAO/a,OAAQ,IAAIuwB,IAAU1W,UAAWw2C,EAAQrwD,OACnE,MAED,QACC26B,EAASuX,SAAUn3B,GAAO/a,MAAQqwD,EAAQrwD,OAY9C,QAJsBa,IAAjBq8F,EAAK3qD,UAAwB5X,EAAS4X,QAAU2qD,EAAK3qD,cAC/B1xC,IAAtBq8F,EAAK1qD,eAA6B7X,EAAS6X,aAAe0qD,EAAK1qD,mBACvC3xC,IAAxBq8F,EAAKzqD,iBAA+B9X,EAAS8X,eAAiByqD,EAAKzqD,qBAE/C5xC,IAApBq8F,EAAKtqD,WAET,IAAM,IAAM/yC,KAAOq9F,EAAKtqD,WAEvBjY,EAASiY,WAAY/yC,GAAQq9F,EAAKtqD,WAAY/yC,GA2BhD,QAnBsBgB,IAAjBq8F,EAAKmwB,UAAwB1yF,EAAS4F,YAA+B,IAAjB28D,EAAKmwB,cAI3CxsH,IAAdq8F,EAAKzzE,OAAqBkR,EAASlR,KAAOyzE,EAAKzzE,WACtB5oB,IAAzBq8F,EAAKr5D,kBAAgClJ,EAASkJ,gBAAkBq5D,EAAKr5D,sBAIxDhjC,IAAbq8F,EAAKt7D,MAAoBjH,EAASiH,IAAMwrF,EAAYlwB,EAAKt7D,WACzC/gC,IAAhBq8F,EAAKr7D,SAAuBlH,EAASkH,OAASurF,EAAYlwB,EAAKr7D,cAE7ChhC,IAAlBq8F,EAAKp7D,WAAyBnH,EAASmH,SAAWsrF,EAAYlwB,EAAKp7D,gBAElDjhC,IAAjBq8F,EAAK/6D,UAAwBxH,EAASwH,QAAUirF,EAAYlwB,EAAK/6D,eAC9CthC,IAAnBq8F,EAAK96D,YAA0BzH,EAASyH,UAAY86D,EAAK96D,gBAEtCvhC,IAAnBq8F,EAAK76D,YAA0B1H,EAAS0H,UAAY+qF,EAAYlwB,EAAK76D,iBAC9CxhC,IAAvBq8F,EAAK56D,gBAA8B3H,EAAS2H,cAAgB46D,EAAK56D,oBAC5CzhC,IAArBq8F,EAAK36D,YAA4B,CAErC,IAAIA,EAAc26D,EAAK36D,aAEe,IAAjCnkB,MAAMC,QAASkkB,KAInBA,EAAc,CAAEA,EAAaA,IAI9B5H,EAAS4H,aAAc,IAAIzuB,IAAU+F,UAAW0oB,GAwCjD,YApC8B1hC,IAAzBq8F,EAAK16D,kBAAgC7H,EAAS6H,gBAAkB4qF,EAAYlwB,EAAK16D,uBACtD3hC,IAA3Bq8F,EAAKz6D,oBAAkC9H,EAAS8H,kBAAoBy6D,EAAKz6D,wBAC/C5hC,IAA1Bq8F,EAAKx6D,mBAAiC/H,EAAS+H,iBAAmBw6D,EAAKx6D,uBAEjD7hC,IAAtBq8F,EAAKv6D,eAA6BhI,EAASgI,aAAeyqF,EAAYlwB,EAAKv6D,oBACrD9hC,IAAtBq8F,EAAKt6D,eAA6BjI,EAASiI,aAAewqF,EAAYlwB,EAAKt6D,oBAEtD/hC,IAArBq8F,EAAKr6D,cAA4BlI,EAASkI,YAAcuqF,EAAYlwB,EAAKr6D,mBAC9ChiC,IAA3Bq8F,EAAKj8D,oBAAkCtG,EAASsG,kBAAoBi8D,EAAKj8D,wBAEpDpgC,IAArBq8F,EAAKp6D,cAA4BnI,EAASmI,YAAcsqF,EAAYlwB,EAAKp6D,mBAC3CjiC,IAA9Bq8F,EAAKn6D,uBAAqCpI,EAASoI,qBAAuBqqF,EAAYlwB,EAAKn6D,4BAClEliC,IAAzBq8F,EAAKl6D,kBAAgCrI,EAASqI,gBAAkBoqF,EAAYlwB,EAAKl6D,uBAEjEniC,IAAhBq8F,EAAKj6D,SAAuBtI,EAASsI,OAASmqF,EAAYlwB,EAAKj6D,cACtCpiC,IAAzBq8F,EAAK/5D,kBAAgCxI,EAASwI,gBAAkB+5D,EAAK/5D,sBAE/CtiC,IAAtBq8F,EAAK95D,eAA6BzI,EAASyI,aAAe85D,EAAK95D,mBACtCviC,IAAzBq8F,EAAK75D,kBAAgC1I,EAAS0I,gBAAkB65D,EAAK75D,sBAEnDxiC,IAAlBq8F,EAAKn7D,WAAyBpH,EAASoH,SAAWqrF,EAAYlwB,EAAKn7D,gBACxClhC,IAA3Bq8F,EAAKl7D,oBAAkCrH,EAASqH,kBAAoBk7D,EAAKl7D,wBAE1DnhC,IAAfq8F,EAAKj7D,QAAsBtH,EAASsH,MAAQmrF,EAAYlwB,EAAKj7D,aACrCphC,IAAxBq8F,EAAKh7D,iBAA+BvH,EAASuH,eAAiBg7D,EAAKh7D,qBAE9CrhC,IAArBq8F,EAAK55D,cAA4B3I,EAAS2I,YAAc8pF,EAAYlwB,EAAK55D,mBAEnDziC,IAAtBq8F,EAAK17D,eAA6B7G,EAAS6G,aAAe4rF,EAAYlwB,EAAK17D,oBAC5C3gC,IAA/Bq8F,EAAKz7D,wBAAsC9G,EAAS8G,sBAAwB2rF,EAAYlwB,EAAKz7D,6BACjE5gC,IAA5Bq8F,EAAKx7D,qBAAmC/G,EAAS+G,mBAAqB0rF,EAAYlwB,EAAKx7D,0BACzD7gC,IAA9Bq8F,EAAKv7D,uBAAqChH,EAASgH,sBAAuB,IAAI7tB,IAAU+F,UAAWqjF,EAAKv7D,4BAE/E9gC,IAAzBq8F,EAAK15D,kBAAgC7I,EAAS6I,gBAAkB4pF,EAAYlwB,EAAK15D,uBAC3D3iC,IAAtBq8F,EAAKx5D,eAA6B/I,EAAS+I,aAAe0pF,EAAYlwB,EAAKx5D,eAEzE/I,I,yBAIR,SAAa36B,GAGZ,OADAQ,KAAKqd,SAAW7d,EACTQ,S,GA/RoBynH,IAqSvBqF,G,+FAEL,SAAmBl/G,GAElB,GAA4B,qBAAhBm/G,YAEX,OAAO,IAAIA,aAAcC,OAAQp/G,GASlC,IAFA,IAAIkE,EAAI,GAEEhE,EAAI,EAAGgT,EAAKlT,EAAMI,OAAQF,EAAIgT,EAAIhT,IAG3CgE,GAAKk9B,OAAOi+E,aAAcr/G,EAAOE,IAIlC,IAIC,OAAOy6G,mBAAoB2E,OAAQp7G,IAElC,MAAQiC,GAET,OAAOjC,K,4BAMT,SAAuB6L,GAEtB,IAAMnQ,EAAQmQ,EAAIwvG,YAAa,KAE/B,OAAiB,IAAZ3/G,EAAuB,KAErBmQ,EAAI0sG,OAAQ,EAAG78G,EAAQ,O,KAM1B4/G,G,kDAEL,aAAc,kCAEb,gBAEKngH,KAAO,0BACZ,EAAK8rD,cAAgBx/C,IALR,E,wCASd,SAAM2D,GAML,OAJA,4DAAYA,GAEZld,KAAK+4D,cAAgB77C,EAAO67C,cAErB/4D,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,aAAcwJ,KAAMjd,Q,oBAIrC,WAEC,IAAMse,EAAO,8DAActe,MAM3B,OAJAse,EAAKy6C,cAAgB/4D,KAAK+4D,cAE1Bz6C,EAAKguC,2BAA4B,EAE1BhuC,M,GAnC6BqqB,IAyCtCykF,GAAwB93G,UAAUg3C,2BAA4B,E,IAw1C1D+gC,GAt1CEggC,G,kDAEL,WAAa3F,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAERonH,EAAS,IAAIa,GAAY53E,EAAMq3E,SACrCN,EAAOoC,QAASn5E,EAAM6wB,MACtBkmD,EAAOiC,iBAAkBh5E,EAAMy3E,eAC/BV,EAAOqC,mBAAoBp5E,EAAMu3E,iBACjCR,EAAOW,KAAMpqG,GAAK,SAAW+rG,GAE5B,IAECtD,EAAQ/1E,EAAM3V,MAAO1B,KAAK0B,MAAOgvF,KAEhC,MAAQ31G,GAEJuyG,EAEJA,EAASvyG,GAITX,QAAQ3T,MAAOsU,GAIhBs8B,EAAMq3E,QAAQX,UAAWppG,MAIxB0oG,EAAYC,K,mBAIhB,SAAO5pB,GAEN,IAAM4wB,EAAuB,GACvBC,EAAiB,GAEvB,SAASC,EAAsB9wB,EAAMtgF,GAEpC,QAAsC/b,IAAjCitH,EAAsBlxG,GAAuB,OAAOkxG,EAAsBlxG,GAE/E,IACMg9E,EADqBsD,EAAKrD,mBACcj9E,GAExC/B,EAYP,SAAyBqiF,EAAMtgF,GAE9B,QAAgC/b,IAA3BktH,EAAgBnxG,GAAuB,OAAOmxG,EAAgBnxG,GAEnE,IACMqxG,EADe/wB,EAAK7D,aACQz8E,GAE5BkwB,EAAK,IAAIryB,YAAawzG,GAAcpzG,OAI1C,OAFAkzG,EAAgBnxG,GAASkwB,EAElBA,EAvBQohF,CAAgBhxB,EAAMtD,EAAkB/+E,QAEjDzM,EAAQwM,GAAeg/E,EAAkBnsF,KAAMoN,GAC/C0+E,EAAK,IAAIH,GAAmBhrF,EAAOwrF,EAAkBpsD,QAK3D,OAJA+rD,EAAG38E,KAAOg9E,EAAkBh9E,KAE5BkxG,EAAsBlxG,GAAS28E,EAExBA,EAmBR,IAAMlvE,EAAW6yE,EAAKpwC,0BAA4B,IAAI8gE,GAA4B,IAAIzkF,GAEhFn7B,EAAQkvF,EAAKp+E,KAAK9Q,MAExB,QAAenN,IAAVmN,EAAsB,CAE1B,IAAMmgH,EAAavzG,GAAe5M,EAAMP,KAAMO,EAAMI,OACpDic,EAAS2jB,SAAU,IAAI7G,GAAiBgnF,EAAY,IAIrD,IAAM/kF,EAAa8zD,EAAKp+E,KAAKsqB,WAE7B,IAAM,IAAMvpC,KAAOupC,EAAa,CAE/B,IAAM5zB,EAAY4zB,EAAYvpC,GAC1BuuH,OAAe,EAEnB,GAAK54G,EAAU+3B,6BAA+B,CAE7C,IAAMqsD,EAAoBo0B,EAAsB9wB,EAAKp+E,KAAMtJ,EAAUsJ,MACrEsvG,EAAkB,IAAIz0B,GAA4BC,EAAmBpkF,EAAU4xB,SAAU5xB,EAAUD,OAAQC,EAAUoxB,gBAE/G,CAEN,IAAMunF,EAAavzG,GAAepF,EAAU/H,KAAM+H,EAAUpH,OAE5DggH,EAAkB,IADY54G,EAAU+3C,2BAA6B6vC,GAA2Bj2D,IACnDgnF,EAAY34G,EAAU4xB,SAAU5xB,EAAUoxB,iBAIhE/lC,IAAnB2U,EAAUuF,OAAqBqzG,EAAgBrzG,KAAOvF,EAAUuF,WAC5Cla,IAApB2U,EAAU8xB,OAAsB8mF,EAAgB50B,SAAUhkF,EAAU8xB,YAE1CzmC,IAA1B2U,EAAU+xB,cAEd6mF,EAAgB7mF,YAAYhyB,OAASC,EAAU+xB,YAAYhyB,OAC3D64G,EAAgB7mF,YAAYlmB,MAAQ7L,EAAU+xB,YAAYlmB,OAI3DgJ,EAASkgB,aAAc1qC,EAAKuuH,GAI7B,IAAM/kF,EAAkB6zD,EAAKp+E,KAAKuqB,gBAElC,GAAKA,EAEJ,IAAM,IAAMxpC,KAAOwpC,EAAkB,CAMpC,IAJA,IAAM0E,EAAiB1E,EAAiBxpC,GAElCuO,EAAQ,GAEJE,EAAI,EAAGgT,EAAKysB,EAAev/B,OAAQF,EAAIgT,EAAIhT,IAAO,CAE3D,IAAMkH,EAAYu4B,EAAgBz/B,GAC9B8/G,OAAe,EAEnB,GAAK54G,EAAU+3B,6BAA+B,CAE7C,IAAMqsD,EAAoBo0B,EAAsB9wB,EAAKp+E,KAAMtJ,EAAUsJ,MACrEsvG,EAAkB,IAAIz0B,GAA4BC,EAAmBpkF,EAAU4xB,SAAU5xB,EAAUD,OAAQC,EAAUoxB,gBAE/G,CAEN,IAAMunF,EAAavzG,GAAepF,EAAU/H,KAAM+H,EAAUpH,OAC5DggH,EAAkB,IAAIjnF,GAAiBgnF,EAAY34G,EAAU4xB,SAAU5xB,EAAUoxB,iBAI1D/lC,IAAnB2U,EAAUuF,OAAqBqzG,EAAgBrzG,KAAOvF,EAAUuF,MACrE3M,EAAMN,KAAMsgH,GAIb/jG,EAASgf,gBAAiBxpC,GAAQuO,EAMP8uF,EAAKp+E,KAAKwqB,uBAItCjf,EAASif,sBAAuB,GAIjC,IAAMC,EAAS2zD,EAAKp+E,KAAKyqB,QAAU2zD,EAAKp+E,KAAKuvG,WAAanxB,EAAKp+E,KAAKwvG,QAEpE,QAAgBztH,IAAX0oC,EAEJ,IAAM,IAAIj7B,EAAI,EAAGyB,EAAIw5B,EAAO/6B,OAAQF,IAAMyB,IAAMzB,EAAI,CAEnD,IAAMw9B,EAAQvC,EAAQj7B,GAEtB+b,EAASujB,SAAU9B,EAAMpC,MAAOoC,EAAMzqB,MAAOyqB,EAAMnC,eAMrD,IAAMH,EAAiB0zD,EAAKp+E,KAAK0qB,eAEjC,QAAwB3oC,IAAnB2oC,EAA+B,CAEnC,IAAM7zB,EAAS,IAAIwQ,QAEYtlB,IAA1B2oC,EAAe7zB,QAEnBA,EAAOkE,UAAW2vB,EAAe7zB,QAIlC0U,EAASmf,eAAiB,IAAI5c,GAAQjX,EAAQ6zB,EAAejhB,QAO9D,OAHK20E,EAAKniF,OAAOsP,EAAStP,KAAOmiF,EAAKniF,MACjCmiF,EAAK1lE,WAAWnN,EAASmN,SAAW0lE,EAAK1lE,UAEvCnN,M,GA7M0B49F,IAmN7BsG,G,kDAEL,WAAarG,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAERkhE,EAAuB,KAAdlhE,KAAKkhE,KAAgB4rD,GAAYkB,eAAgBrwG,GAAQ3d,KAAKkhE,KAC7ElhE,KAAK6nH,aAAe7nH,KAAK6nH,cAAgB3mD,EAEzC,IAAMkmD,EAAS,IAAIa,GAAYjoH,KAAK0nH,SACpCN,EAAOoC,QAASxpH,KAAKkhE,MACrBkmD,EAAOiC,iBAAkBrpH,KAAK8nH,eAC9BV,EAAOqC,mBAAoBzpH,KAAK4nH,iBAChCR,EAAOW,KAAMpqG,GAAK,SAAW+rG,GAE5B,IAAIhtB,EAAO,KAEX,IAECA,EAAO1jE,KAAK0B,MAAOgvF,GAElB,MAAQjqH,GAMT,YAJiBY,IAAZimH,GAAwBA,EAAS7mH,QAEtC2T,QAAQ3T,MAAO,mCAAsCke,EAAM,IAAKle,EAAMqxF,SAMvE,IAAMvzE,EAAWm/E,EAAKn/E,cAEJld,IAAbkd,QAA4Cld,IAAlBkd,EAAStQ,MAAsD,aAAhCsQ,EAAStQ,KAAKq4B,cAO5E+K,EAAM3V,MAAOgiE,EAAM0pB,GALlBhzG,QAAQ3T,MAAO,kCAAqCke,KAOnD0oG,EAAYC,K,oDAIhB,WAAiB3oG,EAAK0oG,GAAtB,yBAAAh0G,EAAA,6DAEOg+B,EAAQrwC,KAERkhE,EAAuB,KAAdlhE,KAAKkhE,KAAgB4rD,GAAYkB,eAAgBrwG,GAAQ3d,KAAKkhE,KAC7ElhE,KAAK6nH,aAAe7nH,KAAK6nH,cAAgB3mD,GAEnCkmD,EAAS,IAAIa,GAAYjoH,KAAK0nH,UAC7B8B,QAASxpH,KAAKkhE,MACrBkmD,EAAOiC,iBAAkBrpH,KAAK8nH,eAC9BV,EAAOqC,mBAAoBzpH,KAAK4nH,iBAVjC,SAYoBR,EAAO6G,UAAWtwG,EAAK0oG,GAZ3C,UAYOqD,EAZP,OAcOhtB,EAAO1jE,KAAK0B,MAAOgvF,QAIPrpH,KAFZkd,EAAWm/E,EAAKn/E,gBAE2Bld,IAAlBkd,EAAStQ,MAAsD,aAAhCsQ,EAAStQ,KAAKq4B,cAlB7E,uBAoBQ,IAAI9xB,MAAO,kCAAqCmK,GApBxD,yBAwBc0yB,EAAM69E,WAAYxxB,GAxBhC,0F,4EA4BA,SAAOA,EAAM0pB,GAEZ,IAAMrvF,EAAa/2B,KAAKmuH,gBAAiBzxB,EAAK3lE,YACxC2B,EAAS14B,KAAKouH,YAAa1xB,EAAKhkE,QAChCF,EAAax4B,KAAKquH,gBAAiB3xB,EAAKlkE,WAAYE,GAEpDhb,EAAS1d,KAAKsuH,YAAa5xB,EAAKh/E,QAAQ,gBAE7Brd,IAAX+lH,GAAuBA,EAAQ/8F,MAI/BhM,EAAWrd,KAAKuuH,cAAe7xB,EAAKr/E,SAAUK,GAC9C+a,EAAYz4B,KAAKwuH,eAAgB9xB,EAAKjkE,UAAWpb,GAEjDgM,EAASrpB,KAAKyuH,YAAa/xB,EAAKrzE,OAAQmP,EAAYC,EAAWpb,EAAU0Z,GACzE4B,EAAY34B,KAAK0uH,eAAgBhyB,EAAK/jE,UAAWtP,GAMvD,GAJArpB,KAAK2uH,cAAetlG,EAAQsP,QAIZt4B,IAAX+lH,EAAuB,CAE3B,IAAIwI,GAAY,EAEhB,IAAM,IAAMxyG,KAAQsB,EAEnB,GAAKA,EAAQtB,aAAkB+B,iBAAmB,CAEjDywG,GAAY,EACZ,OAMiB,IAAdA,GAAsBxI,EAAQ/8F,GAIpC,OAAOA,I,qDAIR,WAAkBqzE,GAAlB,6BAAArqF,EAAA,6DAEO0kB,EAAa/2B,KAAKmuH,gBAAiBzxB,EAAK3lE,YACxC2B,EAAS14B,KAAKouH,YAAa1xB,EAAKhkE,QAChCF,EAAax4B,KAAKquH,gBAAiB3xB,EAAKlkE,WAAYE,GAJ3D,SAMsB14B,KAAK6uH,iBAAkBnyB,EAAKh/E,QANlD,cAMOA,EANP,OAQOL,EAAWrd,KAAKuuH,cAAe7xB,EAAKr/E,SAAUK,GAC9C+a,EAAYz4B,KAAKwuH,eAAgB9xB,EAAKjkE,UAAWpb,GAEjDgM,EAASrpB,KAAKyuH,YAAa/xB,EAAKrzE,OAAQmP,EAAYC,EAAWpb,EAAU0Z,GACzE4B,EAAY34B,KAAK0uH,eAAgBhyB,EAAK/jE,UAAWtP,GAEvDrpB,KAAK2uH,cAAetlG,EAAQsP,GAd7B,kBAgBQtP,GAhBR,iD,gFAoBA,SAAaqzE,GAEZ,IAAMhkE,EAAS,GAEf,QAAcr4B,IAATq8F,EAEJ,IAAM,IAAI5uF,EAAI,EAAGC,EAAI2uF,EAAK1uF,OAAQF,EAAIC,EAAGD,IAAO,CAE/C,IAAMgsB,GAAQ,IAAIyxE,IAAQjB,SAAU5N,EAAM5uF,IAE1C4qB,EAAQoB,EAAM1d,MAAS0d,EAMzB,OAAOpB,I,4BAIR,SAAgBgkE,EAAMrzE,GAErB,IAAMsP,EAAY,GACZizC,EAAQ,GAYd,GARAviD,EAAO4O,UAAU,SAAW0C,GAEtBA,EAAMuhE,SAAStwB,EAAOjxC,EAAMve,MAASue,WAM7Bt6B,IAATq8F,EAEJ,IAAM,IAAI5uF,EAAI,EAAGC,EAAI2uF,EAAK1uF,OAAQF,EAAIC,EAAGD,IAAO,CAE/C,IAAMosB,GAAW,IAAIoiE,IAAWgO,SAAU5N,EAAM5uF,GAAK89D,GAErDjzC,EAAWuB,EAAS9d,MAAS8d,EAM/B,OAAOvB,I,6BAIR,SAAiB+jE,EAAMhkE,GAEtB,IAAMF,EAAa,GAEnB,QAAcn4B,IAATq8F,EAIJ,IAFA,IAAMoyB,EAAuB,IAAIzB,GAEvBv/G,EAAI,EAAGC,EAAI2uF,EAAK1uF,OAAQF,EAAIC,EAAGD,IAAO,CAE/C,IAAI+b,OAAQ,EACNvL,EAAOo+E,EAAM5uF,GAEnB,OAASwQ,EAAKrR,MAEb,IAAK,iBACL,IAAK,0BAEJ4c,EAAWilG,EAAqBp0F,MAAOpc,GAEvC,MAED,IAAK,WAEJlL,QAAQ3T,MAAO,wEAEf,MAED,QAEM6e,EAAKrR,QAAQ0sG,GAEjB9vF,EAAW8vF,GAAYr7F,EAAKrR,MAAOq9F,SAAUhsF,EAAMoa,GAInDtlB,QAAQC,KAAR,yDAAiEiL,EAAKrR,KAAtE,MAMH4c,EAASzN,KAAOkC,EAAKlC,UAEF/b,IAAdie,EAAK/D,OAAqBsP,EAAStP,KAAO+D,EAAK/D,OACjB,IAA9BsP,EAAS2iB,uBAA+CnsC,IAAlBie,EAAK0Y,WAAyBnN,EAASmN,SAAW1Y,EAAK0Y,UAElGwB,EAAYla,EAAKlC,MAASyN,EAM5B,OAAO2O,I,4BAIR,SAAgBkkE,EAAMr/E,GAErB,IAAMkd,EAAQ,GACR9B,EAAY,GAElB,QAAcp4B,IAATq8F,EAAqB,CAEzB,IAAM0qB,EAAS,IAAIuF,GACnBvF,EAAO2H,YAAa1xG,GAEpB,IAAM,IAAIvP,EAAI,EAAGC,EAAI2uF,EAAK1uF,OAAQF,EAAIC,EAAGD,IAAO,CAE/C,IAAMwQ,EAAOo+E,EAAM5uF,GAEnB,GAAmB,kBAAdwQ,EAAKrR,KAA2B,CAMpC,IAFA,IAAMW,EAAQ,GAEJge,EAAI,EAAGA,EAAItN,EAAKma,UAAUzqB,OAAQ4d,IAAO,CAElD,IAAMuO,EAAW7b,EAAKma,UAAW7M,QAEDvrB,IAA3Bk6B,EAAOJ,EAAS/d,QAEpBme,EAAOJ,EAAS/d,MAASgrG,EAAO1sF,MAAOP,IAIxCvsB,EAAMN,KAAMitB,EAAOJ,EAAS/d,OAI7Bqc,EAAWna,EAAKlC,MAASxO,YAIGvN,IAAvBk6B,EAAOjc,EAAKlC,QAEhBme,EAAOjc,EAAKlC,MAASgrG,EAAO1sF,MAAOpc,IAIpCma,EAAWna,EAAKlC,MAASme,EAAOjc,EAAKlC,OAQxC,OAAOqc,I,6BAIR,SAAiBikE,GAEhB,IAAM3lE,EAAa,GAEnB,QAAc12B,IAATq8F,EAEJ,IAAM,IAAI5uF,EAAI,EAAGA,EAAI4uF,EAAK1uF,OAAQF,IAAO,CAExC,IAAMwQ,EAAOo+E,EAAM5uF,GAEb2uG,EAAOsH,GAAcrpF,MAAOpc,GAElCyY,EAAY0lF,EAAKrgG,MAASqgG,EAM5B,OAAO1lF,I,yBAIR,SAAa2lE,EAAM0pB,GAElB,IAGIgB,EAHE/2E,EAAQrwC,KACR0d,EAAS,GAqBf,SAASsxG,EAAkBt0G,GAE1B,GAAsB,kBAAVA,EAAqB,CAEhC,IAAMiD,EAAMjD,EAIZ,OAzBF,SAAoBiD,GAInB,OAFA0yB,EAAMq3E,QAAQb,UAAWlpG,GAElBypG,EAAOW,KAAMpqG,GAAK,WAExB0yB,EAAMq3E,QAAQZ,QAASnpG,UAErBtd,GAAW,WAEbgwC,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,MAchBsxG,CAFM,4BAA4Bt0G,KAAMgD,GAAQA,EAAM0yB,EAAMw3E,aAAelqG,GAMlF,OAAKjD,EAAM4D,KAEH,CACNA,KAAMlE,GAAeM,EAAMzN,KAAMyN,EAAM4D,MACvCvD,MAAOL,EAAMK,MACbC,OAAQN,EAAMM,QAKR,KAQV,QAAc3a,IAATq8F,GAAsBA,EAAK1uF,OAAS,EAAI,CAE5C,IAAM05G,EAAU,IAAIvB,GAAgBC,IAEpCgB,EAAS,IAAI8C,GAAaxC,IACnB8C,eAAgBxqH,KAAK2nH,aAE5B,IAAM,IAAI75G,EAAI,EAAGgT,EAAK47E,EAAK1uF,OAAQF,EAAIgT,EAAIhT,IAAO,CAEjD,IAAM4M,EAAQgiF,EAAM5uF,GACd6P,EAAMjD,EAAMiD,IAElB,GAAKC,MAAMC,QAASF,GAAQ,CAI3BD,EAAQhD,EAAM0B,MAAS,GAEvB,IAAM,IAAIwP,EAAI,EAAGye,EAAK1sB,EAAI3P,OAAQ4d,EAAIye,EAAIze,IAAO,CAEhD,IAEMsjG,EAAoBF,EAFPrxG,EAAKiO,IAIG,OAAtBsjG,IAECA,aAA6B/wG,iBAEjCT,EAAQhD,EAAM0B,MAAO9O,KAAM4hH,GAM3BxxG,EAAQhD,EAAM0B,MAAO9O,KAAM,IAAI6uF,GAAa+yB,EAAkB5wG,KAAM4wG,EAAkBn0G,MAAOm0G,EAAkBl0G,eAQ5G,CAIN,IAAMk0G,EAAoBF,EAAkBt0G,EAAMiD,KAEvB,OAAtBuxG,IAEJxxG,EAAQhD,EAAM0B,MAAS8yG,KAU3B,OAAOxxG,I,2DAIR,WAAwBg/E,GAAxB,UAOgBsyB,EAPhB,6BAAA38G,EAAA,mFAAAA,EAAA,MAOC,WAAiCqI,GAAjC,iBAAArI,EAAA,yDAEuB,kBAAVqI,EAFb,uBAMQwmD,EAAO,4BAA4BvmD,KAFnCgD,EAAMjD,GAE2CiD,EAAM0yB,EAAMw3E,aAAelqG,EANpF,SAQeypG,EAAO6G,UAAW/sD,GARjC,mDAYOxmD,EAAM4D,KAZb,0CAcU,CACNA,KAAMlE,GAAeM,EAAMzN,KAAMyN,EAAM4D,MACvCvD,MAAOL,EAAMK,MACbC,OAAQN,EAAMM,SAjBlB,iCAsBU,MAtBV,6CAPD,uBAOgBg0G,EAPhB,4CAEO3+E,EAAQrwC,KACR0d,EAAS,UAkCDrd,IAATq8F,GAAsBA,EAAK1uF,OAAS,GArC1C,kBAuCEo5G,EAAS,IAAI8C,GAAalqH,KAAK0nH,UACxB8C,eAAgBxqH,KAAK2nH,aAElB75G,EAAI,EAAGgT,EAAK47E,EAAK1uF,OA1C7B,YA0CqCF,EAAIgT,GA1CzC,oBA4CSpG,EAAQgiF,EAAM5uF,GACd6P,EAAMjD,EAAMiD,KAEbC,MAAMC,QAASF,GA/CvB,iBAmDID,EAAQhD,EAAM0B,MAAS,GAEbwP,EAAI,EAAGye,EAAK1sB,EAAI3P,OArD9B,aAqDsC4d,EAAIye,GArD1C,wBAuDW8kF,EAAaxxG,EAAKiO,GAvD7B,UAyDqCojG,EAAkBG,GAzDvD,QA2DgC,QAFrBD,EAzDX,UA6DWA,aAA6B/wG,iBAEjCT,EAAQhD,EAAM0B,MAAO9O,KAAM4hH,GAM3BxxG,EAAQhD,EAAM0B,MAAO9O,KAAM,IAAI6uF,GAAa+yB,EAAkB5wG,KAAM4wG,EAAkBn0G,MAAOm0G,EAAkBl0G,UArEtH,QAqD8C4Q,IArD9C,iEAiFoCojG,EAAkBt0G,EAAMiD,KAjF5D,QAmF+B,QAFrBuxG,EAjFV,UAqFKxxG,EAAQhD,EAAM0B,MAAS8yG,GArF5B,QA0C6CphH,IA1C7C,gDA+FQ4P,GA/FR,iD,kFAmGA,SAAeg/E,EAAMh/E,GAEpB,SAAS0xG,EAAe5vH,EAAOyN,GAE9B,MAAsB,kBAAVzN,EAA4BA,GAExC4T,QAAQC,KAAM,uEAAwE7T,GAE/EyN,EAAMzN,IAId,IAAM6d,EAAW,GAEjB,QAAchd,IAATq8F,EAEJ,IAAM,IAAI5uF,EAAI,EAAGC,EAAI2uF,EAAK1uF,OAAQF,EAAIC,EAAGD,IAAO,CAE/C,IAAMwQ,EAAOo+E,EAAM5uF,QAECzN,IAAfie,EAAK5D,OAETtH,QAAQC,KAAM,+CAAgDiL,EAAKlC,WAItC/b,IAAzBqd,EAAQY,EAAK5D,QAEjBtH,QAAQC,KAAM,sCAAuCiL,EAAK5D,OAI3D,IAAI2F,OAAO,EACL3F,EAAQgD,EAAQY,EAAK5D,OAEtBkD,MAAMC,QAASnD,IAEnB2F,EAAU,IAAIk1B,GAAa76B,GAEL,IAAjBA,EAAM1M,SAAeqS,EAAQ+oB,aAAc,KAM/C/oB,EAFI3F,GAASA,EAAM4D,KAET,IAAI69E,GAAazhF,EAAM4D,KAAM5D,EAAMK,MAAOL,EAAMM,QAIhD,IAAIQ,GAASd,GAInBA,IAAQ2F,EAAQ+oB,aAAc,IAIpC/oB,EAAQjE,KAAOkC,EAAKlC,UAED/b,IAAdie,EAAK/D,OAAqB8F,EAAQ9F,KAAO+D,EAAK/D,WAE7Bla,IAAjBie,EAAK5C,UAAwB2E,EAAQ3E,QAAU0zG,EAAe9wG,EAAK5C,QAAS2zG,UAE5DhvH,IAAhBie,EAAKvJ,QAAuBsL,EAAQtL,OAAOsE,UAAWiF,EAAKvJ,aAC3C1U,IAAhBie,EAAK/B,QAAuB8D,EAAQ9D,OAAOlD,UAAWiF,EAAK/B,aAC3Clc,IAAhBie,EAAKnJ,QAAuBkL,EAAQlL,OAAOkE,UAAWiF,EAAKnJ,aACzC9U,IAAlBie,EAAKtF,WAAyBqH,EAAQrH,SAAWsF,EAAKtF,eAExC3Y,IAAdie,EAAKb,OAET4C,EAAQzE,MAAQwzG,EAAe9wG,EAAKb,KAAM,GAAK6xG,IAC/CjvG,EAAQxE,MAAQuzG,EAAe9wG,EAAKb,KAAM,GAAK6xG,UAI3BjvH,IAAhBie,EAAKtC,SAAuBqE,EAAQrE,OAASsC,EAAKtC,aACpC3b,IAAdie,EAAKrR,OAAqBoT,EAAQpT,KAAOqR,EAAKrR,WAC5B5M,IAAlBie,EAAKpC,WAAyBmE,EAAQnE,SAAWoC,EAAKpC,eAEnC7b,IAAnBie,EAAKvC,YAA0BsE,EAAQtE,UAAYqzG,EAAe9wG,EAAKvC,UAAWwzG,UAC/DlvH,IAAnBie,EAAKxC,YAA0BuE,EAAQvE,UAAYszG,EAAe9wG,EAAKxC,UAAWyzG,UAC9DlvH,IAApBie,EAAKrC,aAA2BoE,EAAQpE,WAAaqC,EAAKrC,iBAE3C5b,IAAfie,EAAK3B,QAAsB0D,EAAQ1D,MAAQ2B,EAAK3B,YAEtBtc,IAA1Bie,EAAK5B,mBAAiC2D,EAAQ3D,iBAAmB4B,EAAK5B,uBAC7Crc,IAAzBie,EAAK1B,kBAAgCyD,EAAQzD,gBAAkB0B,EAAK1B,iBAEzES,EAAUiB,EAAKlC,MAASiE,EAM1B,OAAOhD,I,yBAIR,SAAaiB,EAAMka,EAAYC,EAAWpb,EAAU0Z,GAEnD,IAAI1N,EA8DAQ,EAAUsQ,EA5Dd,SAASq1F,EAAaj1G,GAQrB,YAN4Bla,IAAvBm4B,EAAYje,IAEhBnH,QAAQC,KAAM,yCAA0CkH,GAIlDie,EAAYje,GAIpB,SAASk1G,EAAal1G,GAErB,QAAcla,IAATka,EAAL,CAEA,GAAKqD,MAAMC,QAAStD,GAAS,CAI5B,IAFA,IAAM3M,EAAQ,GAEJE,EAAI,EAAGC,EAAIwM,EAAKvM,OAAQF,EAAIC,EAAGD,IAAO,CAE/C,IAAMsO,EAAO7B,EAAMzM,QAEQzN,IAAtBo4B,EAAWrc,IAEfhJ,QAAQC,KAAM,yCAA0C+I,GAIzDxO,EAAMN,KAAMmrB,EAAWrc,IAIxB,OAAOxO,EAUR,YAN2BvN,IAAtBo4B,EAAWle,IAEfnH,QAAQC,KAAM,yCAA0CkH,GAIlDke,EAAWle,IAInB,SAASqyG,EAAYxwG,GAQpB,YAN0B/b,IAArBgd,EAAUjB,IAEdhJ,QAAQC,KAAM,wCAAyC+I,GAIjDiB,EAAUjB,GAMlB,OAASkC,EAAKrR,MAEb,IAAK,QAEJoc,EAAS,IAAIsvE,QAEYt4F,IAApBie,EAAKib,aAEJ/W,OAAOmzB,UAAWr3B,EAAKib,YAE3BlQ,EAAOkQ,WAAa,IAAIgL,GAAOjmB,EAAKib,YAIpClQ,EAAOkQ,WAAaqzF,EAAYtuG,EAAKib,kBAMbl5B,IAArBie,EAAKmb,cAETpQ,EAAOoQ,YAAcmzF,EAAYtuG,EAAKmb,mBAIrBp5B,IAAbie,EAAKif,MAEc,QAAlBjf,EAAKif,IAAItwB,KAEboc,EAAOkU,IAAM,IAAIm7D,GAAKp6E,EAAKif,IAAI0C,MAAO3hB,EAAKif,IAAItJ,KAAM3V,EAAKif,IAAIrJ,KAEjC,YAAlB5V,EAAKif,IAAItwB,OAEpBoc,EAAOkU,IAAM,IAAIk7D,GAASn6E,EAAKif,IAAI0C,MAAO3hB,EAAKif,IAAIguD,WAMrD,MAED,IAAK,oBAEJliE,EAAS,IAAI0pB,GAAmBz0B,EAAK00B,IAAK10B,EAAK20B,OAAQ30B,EAAK2V,KAAM3V,EAAK4V,UAEnD7zB,IAAfie,EAAK60B,QAAsB9pB,EAAO8pB,MAAQ70B,EAAK60B,YACjC9yC,IAAdie,EAAK40B,OAAqB7pB,EAAO6pB,KAAO50B,EAAK40B,WAC1B7yC,IAAnBie,EAAK+0B,YAA0BhqB,EAAOgqB,UAAY/0B,EAAK+0B,gBACnChzC,IAApBie,EAAKg1B,aAA2BjqB,EAAOiqB,WAAah1B,EAAKg1B,iBAC3CjzC,IAAdie,EAAK80B,OAAqB/pB,EAAO+pB,KAAO9iC,OAAOm9B,OAAQ,GAAInvB,EAAK80B,OAErE,MAED,IAAK,qBAEJ/pB,EAAS,IAAIuoC,GAAoBtzC,EAAKuV,KAAMvV,EAAKwV,MAAOxV,EAAKyV,IAAKzV,EAAK0V,OAAQ1V,EAAK2V,KAAM3V,EAAK4V,UAE5E7zB,IAAdie,EAAK40B,OAAqB7pB,EAAO6pB,KAAO50B,EAAK40B,WAC/B7yC,IAAdie,EAAK80B,OAAqB/pB,EAAO+pB,KAAO9iC,OAAOm9B,OAAQ,GAAInvB,EAAK80B,OAErE,MAED,IAAK,eAEJ/pB,EAAS,IAAI+iG,GAAc9tG,EAAK2hB,MAAO3hB,EAAK0xD,WAE5C,MAED,IAAK,mBAEJ3mD,EAAS,IAAI8iG,GAAkB7tG,EAAK2hB,MAAO3hB,EAAK0xD,WAEhD,MAED,IAAK,aAEJ3mD,EAAS,IAAI2iG,GAAY1tG,EAAK2hB,MAAO3hB,EAAK0xD,UAAW1xD,EAAKgZ,SAAUhZ,EAAKsnC,OAEzE,MAED,IAAK,gBAEJv8B,EAAS,IAAIgjG,GAAe/tG,EAAK2hB,MAAO3hB,EAAK0xD,UAAW1xD,EAAKvD,MAAOuD,EAAKtD,QAEzE,MAED,IAAK,YAEJqO,EAAS,IAAIoiG,GAAWntG,EAAK2hB,MAAO3hB,EAAK0xD,UAAW1xD,EAAKgZ,SAAUhZ,EAAKhK,MAAOgK,EAAKqyD,SAAUryD,EAAKsnC,OAEnG,MAED,IAAK,kBAEJv8B,EAAS,IAAIwhG,GAAiBvsG,EAAK2hB,MAAO3hB,EAAKkoC,YAAaloC,EAAK0xD,WAEjE,MAED,IAAK,aAEJ3mD,GAAS,IAAIqjG,IAAapiB,SAAUhsF,GAEpC,MAED,IAAK,cAEJuL,EAAW2lG,EAAalxG,EAAKuL,UAC5BsQ,EAAWs1F,EAAanxG,EAAK6b,UAE9B9Q,EAAS,IAAIkyE,GAAa1xE,EAAUsQ,QAEb95B,IAAlBie,EAAK0b,WAAyB3Q,EAAO2Q,SAAW1b,EAAK0b,eACjC35B,IAApBie,EAAK2b,YAA2B5Q,EAAO4Q,WAAW5gB,UAAWiF,EAAK2b,iBAChD55B,IAAlBie,EAAK4b,WAAyB7Q,EAAO6Q,SAAW5b,EAAK4b,UAE1D,MAED,IAAK,OAEJrQ,EAAW2lG,EAAalxG,EAAKuL,UAC7BsQ,EAAWs1F,EAAanxG,EAAK6b,UAE7B9Q,EAAS,IAAIslB,GAAM9kB,EAAUsQ,GAE7B,MAED,IAAK,gBAEJtQ,EAAW2lG,EAAalxG,EAAKuL,UAC7BsQ,EAAWs1F,EAAanxG,EAAK6b,UAC7B,IAAMtZ,EAAQvC,EAAKuC,MACbuY,EAAiB9a,EAAK8a,eACtBC,EAAgB/a,EAAK+a,eAE3BhQ,EAAS,IAAI4zE,GAAepzE,EAAUsQ,EAAUtZ,IACzCuY,eAAiB,IAAIwjE,GAA0B,IAAI1iF,aAAckf,EAAexrB,OAAS,SACzEvN,IAAlBg5B,IAA8BhQ,EAAOgQ,cAAgB,IAAIujE,GAA0B,IAAI1iF,aAAcmf,EAAczrB,OAASyrB,EAAcuN,WAE/I,MAED,IAAK,MAEJvd,EAAS,IAAIuxE,GAEb,MAED,IAAK,OAEJvxE,EAAS,IAAIu0E,GAAM4xB,EAAalxG,EAAKuL,UAAY4lG,EAAanxG,EAAK6b,WAEnE,MAED,IAAK,WAEJ9Q,EAAS,IAAIo1E,GAAU+wB,EAAalxG,EAAKuL,UAAY4lG,EAAanxG,EAAK6b,WAEvE,MAED,IAAK,eAEJ9Q,EAAS,IAAIm1E,GAAcgxB,EAAalxG,EAAKuL,UAAY4lG,EAAanxG,EAAK6b,WAE3E,MAED,IAAK,aACL,IAAK,SAEJ9Q,EAAS,IAAIy1E,GAAQ0wB,EAAalxG,EAAKuL,UAAY4lG,EAAanxG,EAAK6b,WAErE,MAED,IAAK,SAEJ9Q,EAAS,IAAI8wE,GAAQs1B,EAAanxG,EAAK6b,WAEvC,MAED,IAAK,QAEJ9Q,EAAS,IAAIk5D,GAEb,MAED,IAAK,OAEJl5D,EAAS,IAAI4yE,GAEb,MAED,QAEC5yE,EAAS,IAAI0M,GA2Cf,GAvCA1M,EAAOjN,KAAOkC,EAAKlC,UAEA/b,IAAdie,EAAK/D,OAAqB8O,EAAO9O,KAAO+D,EAAK/D,WAE7Bla,IAAhBie,EAAKlF,QAETiQ,EAAOjQ,OAAOC,UAAWiF,EAAKlF,aAEC/Y,IAA1Bie,EAAK9B,mBAAiC6M,EAAO7M,iBAAmB8B,EAAK9B,kBACrE6M,EAAO7M,kBAAmB6M,EAAOjQ,OAAO+d,UAAW9N,EAAO0J,SAAU1J,EAAO5H,WAAY4H,EAAO2J,cAI5E3yB,IAAlBie,EAAKyU,UAAyB1J,EAAO0J,SAAS1Z,UAAWiF,EAAKyU,eAC5C1yB,IAAlBie,EAAKtF,UAAyBqQ,EAAOrQ,SAASK,UAAWiF,EAAKtF,eAC1C3Y,IAApBie,EAAKmD,YAA2B4H,EAAO5H,WAAWpI,UAAWiF,EAAKmD,iBACnDphB,IAAfie,EAAK0U,OAAsB3J,EAAO2J,MAAM3Z,UAAWiF,EAAK0U,aAIrC3yB,IAApBie,EAAKqY,aAA2BtN,EAAOsN,WAAarY,EAAKqY,iBAClCt2B,IAAvBie,EAAKsY,gBAA8BvN,EAAOuN,cAAgBtY,EAAKsY,eAE/DtY,EAAKqpC,cAEiBtnD,IAArBie,EAAKqpC,OAAO4oB,OAAqBlnD,EAAOs+B,OAAO4oB,KAAOjyD,EAAKqpC,OAAO4oB,WACvClwE,IAA3Bie,EAAKqpC,OAAO6oB,aAA2BnnD,EAAOs+B,OAAO6oB,WAAalyD,EAAKqpC,OAAO6oB,iBACvDnwE,IAAvBie,EAAKqpC,OAAO5/B,SAAuBsB,EAAOs+B,OAAO5/B,OAASzJ,EAAKqpC,OAAO5/B,aAC9C1nB,IAAxBie,EAAKqpC,OAAO8oB,SAAwBpnD,EAAOs+B,OAAO8oB,QAAQp3D,UAAWiF,EAAKqpC,OAAO8oB,cAC1DpwE,IAAvBie,EAAKqpC,OAAOlhC,SAAuB4C,EAAOs+B,OAAOlhC,OAASzmB,KAAKyuH,YAAanwG,EAAKqpC,OAAOlhC,eAIxEpmB,IAAjBie,EAAKoY,UAAwBrN,EAAOqN,QAAUpY,EAAKoY,cAC5Br2B,IAAvBie,EAAKuY,gBAA8BxN,EAAOwN,cAAgBvY,EAAKuY,oBAC1Cx2B,IAArBie,EAAKwY,cAA4BzN,EAAOyN,YAAcxY,EAAKwY,kBACzCz2B,IAAlBie,EAAK0Y,WAAyB3N,EAAO2N,SAAW1Y,EAAK0Y,eACrC32B,IAAhBie,EAAK2W,SAAuB5L,EAAO4L,OAAOF,KAAOzW,EAAK2W,aAEpC50B,IAAlBie,EAAK4L,SAIT,IAFA,IAAMA,EAAW5L,EAAK4L,SAEZpc,EAAI,EAAGA,EAAIoc,EAASlc,OAAQF,IAErCub,EAAOD,IAAKppB,KAAKyuH,YAAavkG,EAAUpc,GAAK0qB,EAAYC,EAAWpb,EAAU0Z,IAMhF,QAAyB12B,IAApBie,EAAKyY,WAIT,IAFA,IAAM24F,EAAmBpxG,EAAKyY,WAEpBjpB,EAAI,EAAGA,EAAI4hH,EAAiB1hH,OAAQF,IAAO,CAEpD,IAAMsO,EAAOszG,EAAkB5hH,GAE/Bub,EAAO0N,WAAWzpB,KAAMypB,EAAY3a,IAMtC,GAAmB,QAAdkC,EAAKrR,KAAiB,MAED5M,IAApBie,EAAKo2D,aAA2BrrD,EAAOqrD,WAAap2D,EAAKo2D,YAI9D,IAFA,IAAMomB,EAASx8E,EAAKw8E,OAEV/sF,EAAI,EAAGA,EAAI+sF,EAAO9sF,OAAQD,IAAO,CAE1C,IAAMmpF,EAAQ4D,EAAQ/sF,GAChB4sB,EAAQtR,EAAO2O,oBAAqB,OAAQk/D,EAAM7tE,aAEzChpB,IAAVs6B,GAEJtR,EAAO0xE,SAAUpgE,EAAOu8D,EAAM5/D,WAQjC,OAAOjO,I,2BAIR,SAAeA,EAAQsP,GAEmB,IAApCroB,OAAO+8B,KAAM1U,GAAY3qB,QAE9Bqb,EAAO4O,UAAU,SAAW0C,GAE3B,IAA6B,IAAxBA,EAAMZ,oBAA6C15B,IAAnBs6B,EAAMT,SAAyB,CAEnE,IAAMA,EAAWvB,EAAWgC,EAAMT,eAEhB75B,IAAb65B,EAEJ9mB,QAAQC,KAAM,mDAAoDsnB,EAAMT,UAIxES,EAAMg1F,KAAMz1F,EAAUS,EAAMV,kB,4BAYhC,SAAgBz6B,GAGf,OADA4T,QAAQC,KAAM,iFACPrT,KAAK4vH,gBAAiBpwH,O,GArgCJioH,IA2gCrB4H,GAAkB,CACvBhrH,UAAWA,GACXC,sBAAuBA,GACvBC,sBAAuBA,GACvBC,iCAAkCA,GAClCC,iCAAkCA,GAClCC,wBAAyBA,GACzBC,wBAAyBA,IAGpB2qH,GAAmB,CACxB1qH,eAAgBA,GAChBC,oBAAqBA,GACrBC,uBAAwBA,IAGnByqH,GAAiB,CACtBxqH,cAAeA,GACfC,2BAA4BA,GAC5BE,0BAA2BA,GAC3BE,aAAcA,GACdC,0BAA2BA,GAC3BE,yBAA0BA,IAGrBsqH,G,kDAEL,WAAanI,GAAU,iCAEtB,cAAOA,GAE2B,qBAAtBoI,mBAEX18G,QAAQC,KAAM,+DAIO,qBAAV08G,OAEX38G,QAAQC,KAAM,mDAIf,EAAK2M,QAAU,CAAEtD,iBAAkB,QAhBb,E,8CAoBvB,SAAYsD,GAIX,OAFAhgB,KAAKggB,QAAUA,EAERhgB,O,kBAIR,SAAM2d,EAAKyoG,EAAQC,EAAYC,QAEjBjmH,IAARsd,IAAoBA,EAAM,SAEZtd,IAAdL,KAAKkhE,OAAqBvjD,EAAM3d,KAAKkhE,KAAOvjD,GAEjDA,EAAM3d,KAAK0nH,QAAQV,WAAYrpG,GAE/B,IAAM0yB,EAAQrwC,KAERk6C,EAAS8rE,GAAMlsE,IAAKn8B,GAE1B,QAAgBtd,IAAX65C,EAYJ,OAVA7J,EAAMq3E,QAAQb,UAAWlpG,GAEzBuqG,YAAY,WAEN9B,GAASA,EAAQlsE,GAEtB7J,EAAMq3E,QAAQZ,QAASnpG,KAErB,GAEIu8B,EAIR,IAAM81E,EAAe,GACrBA,EAAaC,YAAqC,cAArBjwH,KAAK2nH,YAAgC,cAAgB,UAClFqI,EAAaE,QAAUlwH,KAAK8nH,cAE5BiI,MAAOpyG,EAAKqyG,GAAepwH,MAAM,SAAWuwH,GAE3C,OAAOA,EAAIC,UAERxwH,MAAM,SAAWwwH,GAEpB,OAAON,kBAAmBM,EAAM9/G,OAAOm9B,OAAQ4C,EAAMrwB,QAAS,CAAEqwG,qBAAsB,aAEnFzwH,MAAM,SAAW0wH,GAEpBtK,GAAM58F,IAAKzL,EAAK2yG,GAEXlK,GAASA,EAAQkK,GAEtBjgF,EAAMq3E,QAAQZ,QAASnpG,MAEpB4yG,OAAO,SAAWx8G,GAEhBuyG,GAAUA,EAASvyG,GAExBs8B,EAAMq3E,QAAQX,UAAWppG,GACzB0yB,EAAMq3E,QAAQZ,QAASnpG,MAIxB0yB,EAAMq3E,QAAQb,UAAWlpG,O,GAvFK8pG,IA6FhCoI,GAAkBv6G,UAAUk7G,qBAAsB,EAIlD,IAAMC,GAAe,CAEpBv1G,WAAY,WAQX,YANkB7a,IAAbgtF,KAEJA,GAAW,IAAM+I,OAAOq6B,cAAgBr6B,OAAOs6B,qBAIzCrjC,IAIR9zC,WAAY,SAAW/5C,GAEtB6tF,GAAW7tF,IAMPmxH,G,kDAEL,WAAajJ,GAAU,uCAEfA,G,wCAIR,SAAM/pG,EAAKyoG,EAAQC,EAAYC,GAE9B,IAAMj2E,EAAQrwC,KAERonH,EAAS,IAAIa,GAAYjoH,KAAK0nH,SACpCN,EAAOwC,gBAAiB,eACxBxC,EAAOoC,QAASxpH,KAAKkhE,MACrBkmD,EAAOiC,iBAAkBrpH,KAAK8nH,eAC9BV,EAAOqC,mBAAoBzpH,KAAK4nH,iBAChCR,EAAOW,KAAMpqG,GAAK,SAAWtD,GAE5B,IAIC,IAAMu2G,EAAav2G,EAAOxM,MAAO,GAEjB4iH,GAAav1G,aACrB21G,gBAAiBD,GAAY,SAAWE,GAE/C1K,EAAQ0K,MAIR,MAAQ/8G,GAEJuyG,EAEJA,EAASvyG,GAITX,QAAQ3T,MAAOsU,GAIhBs8B,EAAMq3E,QAAQX,UAAWppG,MAIxB0oG,EAAYC,O,GAhDSmB,IAsDpBsJ,G,kDAEL,WAAaxqE,EAAUC,GAA6B,MAAhBwpB,EAAgB,uDAAJ,EAAI,oBAEnD,mBAAO3vE,EAAW2vE,GAElB,IAAM9pC,GAAS,IAAI3B,IAAQpxB,IAAKozC,GAC1BpgB,GAAS,IAAI5B,IAAQpxB,IAAKqzC,GAE1BwqE,EAAM,IAAIrrG,GAASugB,EAAOvtB,EAAGutB,EAAOnuB,EAAGmuB,EAAO5zB,GAC9C2+G,EAAS,IAAItrG,GAASwgB,EAAOxtB,EAAGwtB,EAAOpuB,EAAGouB,EAAO7zB,GAGjDq0F,EAAKv4F,KAAKiG,KAAMjG,KAAKC,IACrByT,EAAK6kF,EAAKv4F,KAAKiG,KAAM,KAZwB,OAcnD,EAAK87D,GAAGC,aAAc,GAAInzD,KAAM+zG,GAAM5nG,IAAK6nG,GAASn9G,eAAgB6yF,GACpE,EAAKx2B,GAAGC,aAAc,GAAInzD,KAAM+zG,GAAMrpG,IAAKspG,GAASn9G,eAAgBgO,GAfjB,E,UAFlB4qG,IAuBnCqE,GAAqBz7G,UAAU47G,wBAAyB,E,IAElDC,G,kDAEL,WAAalxF,GAAuB,MAAhB+vC,EAAgB,uDAAJ,EAAI,oBAEnC,mBAAO3vE,EAAW2vE,GAElB,IAAM9pC,GAAS,IAAI3B,IAAQpxB,IAAK8sB,GAJG,OAOnC,EAAKkwC,GAAGC,aAAc,GAAIj9D,IAAK+yB,EAAOvtB,EAAGutB,EAAOnuB,EAAGmuB,EAAO5zB,GAAIwB,eAAgB,EAAI1F,KAAKiG,KAAMjG,KAAKC,KAP/D,E,UAFLq+G,IAehCyE,GAAkB77G,UAAU87G,qBAAsB,EAElD,IAAMC,GAA0B,IAAIthG,GAC9BuhG,GAAyB,IAAIvhG,GAE7BwhG,G,WAEL,aAAc,oBAEbvxH,KAAKiN,KAAO,eAEZjN,KAAKizC,OAAS,EAEdjzC,KAAKwxH,OAAS,KAEdxxH,KAAK6lF,QAAU,IAAI9yC,GACnB/yC,KAAK6lF,QAAQ5wD,OAAOwhD,OAAQ,GAC5Bz2E,KAAK6lF,QAAQrpE,kBAAmB,EAEhCxc,KAAK8lF,QAAU,IAAI/yC,GACnB/yC,KAAK8lF,QAAQ7wD,OAAOwhD,OAAQ,GAC5Bz2E,KAAK8lF,QAAQtpE,kBAAmB,EAEhCxc,KAAKyxH,OAAS,CACbt+E,MAAO,KACPH,IAAK,KACLC,OAAQ,KACRhf,KAAM,KACNC,IAAK,KACLgf,KAAM,KACNs+E,OAAQ,M,0CAKV,SAAQ/qG,GAEP,IAAM8T,EAAQv6B,KAAKyxH,OAMnB,GAJoBl3F,EAAM4Y,QAAU1sB,EAAO0sB,OAAS5Y,EAAMyY,MAAQvsB,EAAOusB,KACxEzY,EAAM0Y,SAAWxsB,EAAOwsB,OAASjzC,KAAKizC,QAAU1Y,EAAMtG,OAASxN,EAAOwN,MACtEsG,EAAMrG,MAAQzN,EAAOyN,KAAOqG,EAAM2Y,OAASzsB,EAAOysB,MAAQ3Y,EAAMi3F,SAAWxxH,KAAKwxH,OAE9D,CAElBj3F,EAAM4Y,MAAQ1sB,EAAO0sB,MACrB5Y,EAAMyY,IAAMvsB,EAAOusB,IACnBzY,EAAM0Y,OAASxsB,EAAOwsB,OAASjzC,KAAKizC,OACpC1Y,EAAMtG,KAAOxN,EAAOwN,KACpBsG,EAAMrG,IAAMzN,EAAOyN,IACnBqG,EAAM2Y,KAAOzsB,EAAOysB,KACpB3Y,EAAMi3F,OAASxxH,KAAKwxH,OAKpB,IAIIE,EAAMC,EAJJ/qG,EAAmBH,EAAOG,iBAAiBlG,QAC3CkxG,EAAar3F,EAAMi3F,OAAS,EAC5BK,EAAqBD,EAAar3F,EAAMtG,KAAOsG,EAAM4Y,MACrD2+E,EAASv3F,EAAMtG,KAAO7lB,KAAKwlC,IAAKzlC,GAAUosB,EAAMyY,IAAM,IAAUzY,EAAM2Y,KAK5Eo+E,GAASt9G,SAAU,KAAS49G,EAC5BP,GAAUr9G,SAAU,IAAO49G,EAI3BF,GAASI,EAAOv3F,EAAM0Y,OAAS4+E,EAC/BF,EAAOG,EAAOv3F,EAAM0Y,OAAS4+E,EAE7BjrG,EAAiB5S,SAAU,GAAM,EAAIumB,EAAMtG,MAAS09F,EAAOD,GAC3D9qG,EAAiB5S,SAAU,IAAQ29G,EAAOD,IAAWC,EAAOD,GAE5D1xH,KAAK6lF,QAAQj/D,iBAAiB3J,KAAM2J,GAIpC8qG,GAASI,EAAOv3F,EAAM0Y,OAAS4+E,EAC/BF,EAAOG,EAAOv3F,EAAM0Y,OAAS4+E,EAE7BjrG,EAAiB5S,SAAU,GAAM,EAAIumB,EAAMtG,MAAS09F,EAAOD,GAC3D9qG,EAAiB5S,SAAU,IAAQ29G,EAAOD,IAAWC,EAAOD,GAE5D1xH,KAAK8lF,QAAQl/D,iBAAiB3J,KAAM2J,GAIrC5mB,KAAK6lF,QAAQ/+D,YAAY7J,KAAMwJ,EAAOK,aAAcsQ,SAAUk6F,IAC9DtxH,KAAK8lF,QAAQh/D,YAAY7J,KAAMwJ,EAAOK,aAAcsQ,SAAUi6F,Q,KAM1DU,G,WAEL,aAAgC,IAAnBC,IAAmB,6EAE/BhyH,KAAKgyH,UAAYA,EAEjBhyH,KAAKuiH,UAAY,EACjBviH,KAAKiyH,QAAU,EACfjyH,KAAKkyH,YAAc,EAEnBlyH,KAAKmyH,SAAU,E,yCAIhB,WAECnyH,KAAKuiH,UAAY6P,KAEjBpyH,KAAKiyH,QAAUjyH,KAAKuiH,UACpBviH,KAAKkyH,YAAc,EACnBlyH,KAAKmyH,SAAU,I,kBAIhB,WAECnyH,KAAKqyH,iBACLryH,KAAKmyH,SAAU,EACfnyH,KAAKgyH,WAAY,I,4BAIlB,WAGC,OADAhyH,KAAKsyH,WACEtyH,KAAKkyH,c,sBAIb,WAEC,IAAInoB,EAAO,EAEX,GAAK/pG,KAAKgyH,YAAehyH,KAAKmyH,QAG7B,OADAnyH,KAAKkpC,QACE,EAIR,GAAKlpC,KAAKmyH,QAAU,CAEnB,IAAMI,EAAUH,KAEhBroB,GAASwoB,EAAUvyH,KAAKiyH,SAAY,IACpCjyH,KAAKiyH,QAAUM,EAEfvyH,KAAKkyH,aAAenoB,EAIrB,OAAOA,M,KAMT,SAASqoB,KAER,OAAgC,qBAAhBI,YAA8BC,KAAOD,aAAcJ,MAIpE,IAAMM,GAA4B,IAAI/sG,GAChCgtG,GAA8B,IAAIxxG,GAClCyxG,GAAyB,IAAIjtG,GAC7BktG,GAA+B,IAAIltG,GAEnCmtG,G,kDAEL,aAAc,kCAEb,gBAEK7lH,KAAO,gBAEZ,EAAKgO,QAAUw1G,GAAav1G,aAE5B,EAAK63G,KAAO,EAAK93G,QAAQ+3G,aACzB,EAAKD,KAAKE,QAAS,EAAKh4G,QAAQi4G,aAEhC,EAAKxsD,OAAS,KAEd,EAAKysD,UAAY,EAIjB,EAAKC,OAAS,IAAIrB,GAjBL,E,4CAqBd,WAEC,OAAO/xH,KAAK+yH,O,0BAIb,WAWC,OATqB,OAAhB/yH,KAAK0mE,SAET1mE,KAAK+yH,KAAKzsC,WAAYtmF,KAAK0mE,QAC3B1mE,KAAK0mE,OAAO4f,WAAYtmF,KAAKib,QAAQi4G,aACrClzH,KAAK+yH,KAAKE,QAASjzH,KAAKib,QAAQi4G,aAChClzH,KAAK0mE,OAAS,MAIR1mE,O,uBAIR,WAEC,OAAOA,KAAK0mE,S,uBAIb,SAAWlnE,GAiBV,OAfqB,OAAhBQ,KAAK0mE,QAET1mE,KAAK+yH,KAAKzsC,WAAYtmF,KAAK0mE,QAC3B1mE,KAAK0mE,OAAO4f,WAAYtmF,KAAKib,QAAQi4G,cAIrClzH,KAAK+yH,KAAKzsC,WAAYtmF,KAAKib,QAAQi4G,aAIpClzH,KAAK0mE,OAASlnE,EACdQ,KAAK+yH,KAAKE,QAASjzH,KAAK0mE,QACxB1mE,KAAK0mE,OAAOusD,QAASjzH,KAAKib,QAAQi4G,aAE3BlzH,O,6BAIR,WAEC,OAAOA,KAAK+yH,KAAKA,KAAKvzH,Q,6BAIvB,SAAiBA,GAIhB,OAFAQ,KAAK+yH,KAAKA,KAAKM,gBAAiB7zH,EAAOQ,KAAKib,QAAQq4G,YAAa,KAE1DtzH,O,+BAIR,SAAmBo4B,GAElB,yEAAyBA,GAEzB,IAAMlrB,EAAWlN,KAAKib,QAAQ/N,SACxBukB,EAAKzxB,KAAKyxB,GAQhB,GANAzxB,KAAKmzH,UAAYnzH,KAAKozH,OAAOd,WAE7BtyH,KAAK8mB,YAAYqQ,UAAWu7F,GAAaC,GAAeC,IAExDC,GAAe1/G,IAAK,EAAG,GAAK,GAAI0S,gBAAiB8sG,IAE5CzlH,EAASqmH,UAAY,CAIzB,IAAM/Q,EAAUxiH,KAAKib,QAAQq4G,YAActzH,KAAKmzH,UAEhDjmH,EAASqmH,UAAUC,wBAAyBd,GAAYhjH,EAAG8yG,GAC3Dt1G,EAASumH,UAAUD,wBAAyBd,GAAY/iH,EAAG6yG,GAC3Dt1G,EAASwmH,UAAUF,wBAAyBd,GAAYj0G,EAAG+jG,GAC3Dt1G,EAASymH,SAASH,wBAAyBX,GAAenjH,EAAG8yG,GAC7Dt1G,EAAS0mH,SAASJ,wBAAyBX,GAAeljH,EAAG6yG,GAC7Dt1G,EAAS2mH,SAASL,wBAAyBX,GAAep0G,EAAG+jG,GAC7Dt1G,EAAS4mH,IAAIN,wBAAyB/hG,EAAG/hB,EAAG8yG,GAC5Ct1G,EAAS6mH,IAAIP,wBAAyB/hG,EAAG9hB,EAAG6yG,GAC5Ct1G,EAAS8mH,IAAIR,wBAAyB/hG,EAAGhT,EAAG+jG,QAI5Ct1G,EAAS+mH,YAAavB,GAAYhjH,EAAGgjH,GAAY/iH,EAAG+iH,GAAYj0G,GAChEvR,EAASgnH,eAAgBrB,GAAenjH,EAAGmjH,GAAeljH,EAAGkjH,GAAep0G,EAAGgT,EAAG/hB,EAAG+hB,EAAG9hB,EAAG8hB,EAAGhT,O,GArHrEsX,IA6HtBo+F,G,kDAEL,WAAajnH,GAAW,kCAEvB,gBAEKD,KAAO,QAEZ,EAAKC,SAAWA,EAChB,EAAK+N,QAAU/N,EAAS+N,QAExB,EAAK83G,KAAO,EAAK93G,QAAQ+3G,aACzB,EAAKD,KAAKE,QAAS/lH,EAASknH,YAE5B,EAAKC,UAAW,EAEhB,EAAKh6G,OAAS,KACd,EAAKi6G,OAAS,EACd,EAAKC,MAAO,EACZ,EAAKC,UAAY,EACjB,EAAKC,QAAU,EACf,EAAK1/G,OAAS,EACd,EAAKivG,cAAW3jH,EAChB,EAAKq0H,aAAe,EACpB,EAAKC,WAAY,EACjB,EAAKC,oBAAqB,EAC1B,EAAK13G,OAAS,KACd,EAAK23G,WAAa,QAElB,EAAKC,WAAa,EAClB,EAAKC,UAAY,EACjB,EAAKC,YAAa,EAElB,EAAKC,QAAU,GA/BQ,E,6CAmCxB,WAEC,OAAOj1H,KAAK+yH,O,2BAIb,SAAemC,GAOd,OALAl1H,KAAK40H,oBAAqB,EAC1B50H,KAAK60H,WAAa,YAClB70H,KAAKkd,OAASg4G,EACdl1H,KAAKizH,UAEEjzH,O,mCAIR,SAAuBm1H,GAOtB,OALAn1H,KAAK40H,oBAAqB,EAC1B50H,KAAK60H,WAAa,YAClB70H,KAAKkd,OAASld,KAAKib,QAAQm6G,yBAA0BD,GACrDn1H,KAAKizH,UAEEjzH,O,kCAIR,SAAsBq1H,GAOrB,OALAr1H,KAAK40H,oBAAqB,EAC1B50H,KAAK60H,WAAa,kBAClB70H,KAAKkd,OAASld,KAAKib,QAAQq6G,wBAAyBD,GACpDr1H,KAAKizH,UAEEjzH,O,uBAIR,SAAW8wH,GAOV,OALA9wH,KAAKqa,OAASy2G,EACd9wH,KAAK60H,WAAa,SAEb70H,KAAKq0H,UAAWr0H,KAAKu1H,OAEnBv1H,O,kBAIR,WAAkB,IAAZw1H,EAAY,uDAAJ,EAEb,IAAwB,IAAnBx1H,KAAK20H,UAAV,CAOA,IAAiC,IAA5B30H,KAAK40H,mBAAV,CAOA50H,KAAK80H,WAAa90H,KAAKib,QAAQq4G,YAAckC,EAE7C,IAAMt4G,EAASld,KAAKib,QAAQw6G,qBAe5B,OAdAv4G,EAAO7C,OAASra,KAAKqa,OACrB6C,EAAOq3G,KAAOv0H,KAAKu0H,KACnBr3G,EAAOs3G,UAAYx0H,KAAKw0H,UACxBt3G,EAAOu3G,QAAUz0H,KAAKy0H,QACtBv3G,EAAOw4G,QAAU11H,KAAK21H,QAAQhG,KAAM3vH,MACpCkd,EAAOgsB,MAAOlpC,KAAK80H,WAAY90H,KAAK+0H,UAAY/0H,KAAK+U,OAAQ/U,KAAKgkH,UAElEhkH,KAAK20H,WAAY,EAEjB30H,KAAKkd,OAASA,EAEdld,KAAK41H,UAAW51H,KAAKs0H,QACrBt0H,KAAK61H,gBAAiB71H,KAAK00H,cAEpB10H,KAAKizH,UAtBX7/G,QAAQC,KAAM,yDAPdD,QAAQC,KAAM,4C,mBAiChB,WAEC,IAAiC,IAA5BrT,KAAK40H,mBA4BV,OArBwB,IAAnB50H,KAAK20H,YAIT30H,KAAK+0H,WAAa3mH,KAAKiB,IAAKrP,KAAKib,QAAQq4G,YAActzH,KAAK80H,WAAY,GAAM90H,KAAK00H,cAEhE,IAAd10H,KAAKu0H,OAITv0H,KAAK+0H,UAAY/0H,KAAK+0H,WAAc/0H,KAAKgkH,UAAYhkH,KAAKqa,OAAO2pG,WAIlEhkH,KAAKkd,OAAOk8B,OACZp5C,KAAKkd,OAAOw4G,QAAU,KAEtB11H,KAAK20H,WAAY,GAIX30H,KA1BNoT,QAAQC,KAAM,sD,kBA8BhB,WAEC,IAAiC,IAA5BrT,KAAK40H,mBAaV,OANA50H,KAAK+0H,UAAY,EAEjB/0H,KAAKkd,OAAOk8B,OACZp5C,KAAKkd,OAAOw4G,QAAU,KACtB11H,KAAK20H,WAAY,EAEV30H,KAXNoT,QAAQC,KAAM,sD,qBAehB,WAEC,GAAKrT,KAAKi1H,QAAQjnH,OAAS,EAAI,CAE9BhO,KAAKkd,OAAO+1G,QAASjzH,KAAKi1H,QAAS,IAEnC,IAAM,IAAInnH,EAAI,EAAGC,EAAI/N,KAAKi1H,QAAQjnH,OAAQF,EAAIC,EAAGD,IAEhD9N,KAAKi1H,QAASnnH,EAAI,GAAImlH,QAASjzH,KAAKi1H,QAASnnH,IAI9C9N,KAAKi1H,QAASj1H,KAAKi1H,QAAQjnH,OAAS,GAAIilH,QAASjzH,KAAK81H,kBAItD91H,KAAKkd,OAAO+1G,QAASjzH,KAAK81H,aAM3B,OAFA91H,KAAKg1H,YAAa,EAEXh1H,O,wBAIR,WAEC,GAAKA,KAAKi1H,QAAQjnH,OAAS,EAAI,CAE9BhO,KAAKkd,OAAOopE,WAAYtmF,KAAKi1H,QAAS,IAEtC,IAAM,IAAInnH,EAAI,EAAGC,EAAI/N,KAAKi1H,QAAQjnH,OAAQF,EAAIC,EAAGD,IAEhD9N,KAAKi1H,QAASnnH,EAAI,GAAIw4E,WAAYtmF,KAAKi1H,QAASnnH,IAIjD9N,KAAKi1H,QAASj1H,KAAKi1H,QAAQjnH,OAAS,GAAIs4E,WAAYtmF,KAAK81H,kBAIzD91H,KAAKkd,OAAOopE,WAAYtmF,KAAK81H,aAM9B,OAFA91H,KAAKg1H,YAAa,EAEXh1H,O,wBAIR,WAEC,OAAOA,KAAKi1H,U,wBAIb,SAAYz1H,GAgBX,OAdOA,IAAQA,EAAQ,KAEE,IAApBQ,KAAKg1H,YAETh1H,KAAKsmF,aACLtmF,KAAKi1H,QAAUz1H,EAAMqO,QACrB7N,KAAKizH,WAILjzH,KAAKi1H,QAAUz1H,EAAMqO,QAIf7N,O,uBAIR,SAAWR,GAIV,GAFAQ,KAAKs0H,OAAS90H,OAEca,IAAvBL,KAAKkd,OAAOo3G,OAQjB,OANwB,IAAnBt0H,KAAK20H,WAET30H,KAAKkd,OAAOo3G,OAAOjB,gBAAiBrzH,KAAKs0H,OAAQt0H,KAAKib,QAAQq4G,YAAa,KAIrEtzH,O,uBAIR,WAEC,OAAOA,KAAKs0H,S,uBAIb,WAEC,OAAOt0H,KAAK+1H,aAAc,K,uBAI3B,SAAWrvD,GAEV,OAAO1mE,KAAKg2H,WAAYtvD,EAAS,CAAEA,GAAW,M,6BAI/C,SAAiBlnE,GAEhB,IAAiC,IAA5BQ,KAAK40H,mBAeV,OARA50H,KAAK00H,aAAel1H,GAEI,IAAnBQ,KAAK20H,WAET30H,KAAKkd,OAAOw3G,aAAarB,gBAAiBrzH,KAAK00H,aAAc10H,KAAKib,QAAQq4G,YAAa,KAIjFtzH,KAbNoT,QAAQC,KAAM,sD,6BAiBhB,WAEC,OAAOrT,KAAK00H,e,qBAIb,WAEC10H,KAAK20H,WAAY,I,qBAIlB,WAEC,OAAiC,IAA5B30H,KAAK40H,oBAETxhH,QAAQC,KAAM,qDACP,GAIDrT,KAAKu0H,O,qBAIb,SAAS/0H,GAER,IAAiC,IAA5BQ,KAAK40H,mBAeV,OARA50H,KAAKu0H,KAAO/0H,GAEY,IAAnBQ,KAAK20H,YAET30H,KAAKkd,OAAOq3G,KAAOv0H,KAAKu0H,MAIlBv0H,KAbNoT,QAAQC,KAAM,sD,0BAiBhB,SAAc7T,GAIb,OAFAQ,KAAKw0H,UAAYh1H,EAEVQ,O,wBAIR,SAAYR,GAIX,OAFAQ,KAAKy0H,QAAUj1H,EAERQ,O,uBAIR,WAEC,OAAOA,KAAK+yH,KAAKA,KAAKvzH,Q,uBAIvB,SAAWA,GAIV,OAFAQ,KAAK+yH,KAAKA,KAAKM,gBAAiB7zH,EAAOQ,KAAKib,QAAQq4G,YAAa,KAE1DtzH,S,GA9XW+1B,IAoYdkgG,GAA0B,IAAItwG,GAC9BuwG,GAA4B,IAAI/0G,GAChCg1G,GAAuB,IAAIxwG,GAC3BywG,GAA6B,IAAIzwG,GAEjC0wG,G,kDAEL,WAAanpH,GAAW,kCAEvB,cAAOA,IAEFopH,OAAS,EAAKr7G,QAAQs7G,eAC3B,EAAKD,OAAOE,aAAe,OAC3B,EAAKF,OAAOrD,QAAS,EAAKF,MANH,E,6CAUxB,WAEC,OAAO/yH,KAAKs2H,S,4BAIb,WAEC,OAAOt2H,KAAKs2H,OAAOG,c,4BAIpB,SAAgBj3H,GAIf,OAFAQ,KAAKs2H,OAAOG,YAAcj3H,EAEnBQ,O,8BAIR,WAEC,OAAOA,KAAKs2H,OAAOI,gB,8BAIpB,SAAkBl3H,GAIjB,OAFAQ,KAAKs2H,OAAOI,cAAgBl3H,EAErBQ,O,8BAIR,WAEC,OAAOA,KAAKs2H,OAAOK,gB,8BAIpB,SAAkBn3H,GAIjB,OAFAQ,KAAKs2H,OAAOK,cAAgBn3H,EAErBQ,O,4BAIR,WAEC,OAAOA,KAAKs2H,OAAOM,c,4BAIpB,SAAgBp3H,GAIf,OAFAQ,KAAKs2H,OAAOM,YAAcp3H,EAEnBQ,O,gCAIR,SAAoB62H,EAAgBC,EAAgBC,GAMnD,OAJA/2H,KAAKs2H,OAAOO,eAAiBA,EAC7B72H,KAAKs2H,OAAOQ,eAAiBA,EAC7B92H,KAAKs2H,OAAOS,cAAgBA,EAErB/2H,O,+BAIR,SAAmBo4B,GAIlB,GAFA,yEAAyBA,IAEQ,IAA5Bp4B,KAAK40H,qBAAkD,IAAnB50H,KAAK20H,UAA9C,CAEA30H,KAAK8mB,YAAYqQ,UAAW8+F,GAAWC,GAAaC,IAEpDC,GAAajjH,IAAK,EAAG,EAAG,GAAI0S,gBAAiBqwG,IAE7C,IAAMI,EAASt2H,KAAKs2H,OAEpB,GAAKA,EAAO/C,UAAY,CAIvB,IAAM/Q,EAAUxiH,KAAKib,QAAQq4G,YAActzH,KAAKkN,SAASimH,UAEzDmD,EAAO/C,UAAUC,wBAAyByC,GAAUvmH,EAAG8yG,GACvD8T,EAAO7C,UAAUD,wBAAyByC,GAAUtmH,EAAG6yG,GACvD8T,EAAO5C,UAAUF,wBAAyByC,GAAUx3G,EAAG+jG,GACvD8T,EAAOU,aAAaxD,wBAAyB4C,GAAa1mH,EAAG8yG,GAC7D8T,EAAOW,aAAazD,wBAAyB4C,GAAazmH,EAAG6yG,GAC7D8T,EAAOY,aAAa1D,wBAAyB4C,GAAa33G,EAAG+jG,QAI7D8T,EAAOrC,YAAagC,GAAUvmH,EAAGumH,GAAUtmH,EAAGsmH,GAAUx3G,GACxD63G,EAAOpC,eAAgBkC,GAAa1mH,EAAG0mH,GAAazmH,EAAGymH,GAAa33G,Q,GAhHzC01G,IAwHxBgD,G,WAEL,WAAaC,GAAwB,IAAjBC,EAAiB,uDAAP,KAAO,oBAEpCr3H,KAAKs3H,SAAWF,EAAMn8G,QAAQs8G,iBAC9Bv3H,KAAKs3H,SAASD,QAAUA,EAExBr3H,KAAKse,KAAO,IAAI1E,WAAY5Z,KAAKs3H,SAASE,mBAE1CJ,EAAMtB,YAAY7C,QAASjzH,KAAKs3H,U,oDAKjC,WAIC,OAFAt3H,KAAKs3H,SAASG,qBAAsBz3H,KAAKse,MAElCte,KAAKse,O,iCAIb,WAKC,IAHA,IAAI9e,EAAQ,EACN8e,EAAOte,KAAK03H,mBAER5pH,EAAI,EAAGA,EAAIwQ,EAAKtQ,OAAQF,IAEjCtO,GAAS8e,EAAMxQ,GAIhB,OAAOtO,EAAQ8e,EAAKtQ,W,KAMhB2pH,G,WAEL,WAAaC,EAAS9R,EAAUlJ,GAK/B,IAAIib,EACHC,EACAC,EAkBD,OAzB2C,oBAE3C/3H,KAAK43H,QAAUA,EACf53H,KAAK48G,UAAYA,EAsBRkJ,GAER,IAAK,aACJ+R,EAAc73H,KAAKg4H,OACnBF,EAAsB93H,KAAKi4H,eAC3BF,EAAc/3H,KAAKk4H,+BAEnBl4H,KAAKqa,OAAS,IAAIF,aAA0B,EAAZyiG,GAChC58G,KAAKm4H,WAAa,EAClB,MAED,IAAK,SACL,IAAK,OACJN,EAAc73H,KAAKo4H,QAInBN,EAAsB93H,KAAKo4H,QAE3BL,EAAc/3H,KAAKq4H,0BAEnBr4H,KAAKqa,OAAS,IAAIuD,MAAmB,EAAZg/F,GACzB,MAED,QACCib,EAAc73H,KAAKs4H,MACnBR,EAAsB93H,KAAKu4H,cAC3BR,EAAc/3H,KAAKw4H,4BAEnBx4H,KAAKqa,OAAS,IAAIF,aAA0B,EAAZyiG,GAIlC58G,KAAKy4H,iBAAmBZ,EACxB73H,KAAK04H,yBAA2BZ,EAChC93H,KAAK24H,aAAeZ,EACpB/3H,KAAK44H,WAAa,EAClB54H,KAAK64H,UAAY,EAEjB74H,KAAK84H,iBAAmB,EACxB94H,KAAK+4H,yBAA2B,EAEhC/4H,KAAKg5H,SAAW,EAChBh5H,KAAKi5H,eAAiB,E,8CAKvB,SAAYC,EAAW1iE,GAKtB,IAAMn8C,EAASra,KAAKqa,OACnB2yB,EAAShtC,KAAK48G,UACd7nG,EAASmkH,EAAYlsF,EAASA,EAE3BmsF,EAAgBn5H,KAAK84H,iBAEzB,GAAuB,IAAlBK,EAAsB,CAI1B,IAAM,IAAIrrH,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAEjCuM,EAAQtF,EAASjH,GAAMuM,EAAQvM,GAIhCqrH,EAAgB3iE,MAEV,CAKN,IAAM4iE,EAAM5iE,GADZ2iE,GAAiB3iE,GAEjBx2D,KAAKy4H,iBAAkBp+G,EAAQtF,EAAQ,EAAGqkH,EAAKpsF,GAIhDhtC,KAAK84H,iBAAmBK,I,gCAKzB,SAAoB3iE,GAEnB,IAAMn8C,EAASra,KAAKqa,OACnB2yB,EAAShtC,KAAK48G,UACd7nG,EAASi4B,EAAShtC,KAAK64H,UAEe,IAAlC74H,KAAK+4H,0BAIT/4H,KAAK24H,eAMN34H,KAAK04H,yBAA0Br+G,EAAQtF,EAAQ,EAAGyhD,EAAQxpB,GAC1DhtC,KAAK+4H,0BAA4BviE,I,mBAKlC,SAAO0iE,GAEN,IAAMlsF,EAAShtC,KAAK48G,UACnBviG,EAASra,KAAKqa,OACdtF,EAASmkH,EAAYlsF,EAASA,EAE9BwpB,EAASx2D,KAAK84H,iBACdO,EAAiBr5H,KAAK+4H,yBAEtBnB,EAAU53H,KAAK43H,QAKhB,GAHA53H,KAAK84H,iBAAmB,EACxB94H,KAAK+4H,yBAA2B,EAE3BviE,EAAS,EAAI,CAIjB,IAAM8iE,EAAsBtsF,EAAShtC,KAAK44H,WAE1C54H,KAAKy4H,iBACJp+G,EAAQtF,EAAQukH,EAAqB,EAAI9iE,EAAQxpB,GAI9CqsF,EAAiB,GAIrBr5H,KAAK04H,yBAA0Br+G,EAAQtF,EAAQ/U,KAAK64H,UAAY7rF,EAAQ,EAAGA,GAI5E,IAAM,IAAIl/B,EAAIk/B,EAAQj5B,EAAIi5B,EAASA,EAAQl/B,IAAMiG,IAAMjG,EAEtD,GAAKuM,EAAQvM,KAAQuM,EAAQvM,EAAIk/B,GAAW,CAI3C4qF,EAAQt9D,SAAUjgD,EAAQtF,GAC1B,S,+BASH,WAEC,IAAM6iH,EAAU53H,KAAK43H,QAEfv9G,EAASra,KAAKqa,OACnB2yB,EAAShtC,KAAK48G,UAEd0c,EAAsBtsF,EAAShtC,KAAK44H,WAErChB,EAAQ2B,SAAUl/G,EAAQi/G,GAG1B,IAAM,IAAIxrH,EAAIk/B,EAAQj5B,EAAIulH,EAAqBxrH,IAAMiG,IAAMjG,EAE1DuM,EAAQvM,GAAMuM,EAAQi/G,EAAwBxrH,EAAIk/B,GAKnDhtC,KAAK24H,eAEL34H,KAAK84H,iBAAmB,EACxB94H,KAAK+4H,yBAA2B,I,kCAKjC,WAEC,IAAMO,EAAuC,EAAjBt5H,KAAK48G,UACjC58G,KAAK43H,QAAQt9D,SAAUt6D,KAAKqa,OAAQi/G,K,yCAIrC,WAKC,IAHA,IAAMpb,EAAal+G,KAAK64H,UAAY74H,KAAK48G,UACnCuB,EAAWD,EAAal+G,KAAK48G,UAEzB9uG,EAAIowG,EAAYpwG,EAAIqwG,EAAUrwG,IAEvC9N,KAAKqa,OAAQvM,GAAM,I,4CAMrB,WAEC9N,KAAKw4H,8BACLx4H,KAAKqa,OAAQra,KAAK64H,UAAY74H,KAAK48G,UAAY,GAAM,I,uCAItD,WAKC,IAHA,IAAMsB,EAAal+G,KAAK44H,WAAa54H,KAAK48G,UACpC4c,EAAcx5H,KAAK64H,UAAY74H,KAAK48G,UAEhC9uG,EAAI,EAAGA,EAAI9N,KAAK48G,UAAW9uG,IAEpC9N,KAAKqa,OAAQm/G,EAAc1rH,GAAM9N,KAAKqa,OAAQ6jG,EAAapwG,K,qBAS7D,SAASuM,EAAQoK,EAAWu3F,EAAWpsG,EAAGo9B,GAEzC,GAAKp9B,GAAK,GAET,IAAM,IAAI9B,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAEjCuM,EAAQoK,EAAY3W,GAAMuM,EAAQ2hG,EAAYluG,K,oBAQjD,SAAQuM,EAAQoK,EAAWu3F,EAAWpsG,GAErCuR,GAAWwiG,UAAWtpG,EAAQoK,EAAWpK,EAAQoK,EAAWpK,EAAQ2hG,EAAWpsG,K,4BAIhF,SAAgByK,EAAQoK,EAAWu3F,EAAWpsG,EAAGo9B,GAEhD,IAAMysF,EAAaz5H,KAAKm4H,WAAanrF,EAGrC7rB,GAAWs9F,wBAAyBpkG,EAAQo/G,EAAYp/G,EAAQoK,EAAWpK,EAAQ2hG,GAGnF76F,GAAWwiG,UAAWtpG,EAAQoK,EAAWpK,EAAQoK,EAAWpK,EAAQo/G,EAAY7pH,K,mBAIjF,SAAOyK,EAAQoK,EAAWu3F,EAAWpsG,EAAGo9B,GAIvC,IAFA,IAAMl7B,EAAI,EAAIlC,EAEJ9B,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAAI,CAErC,IAAM8d,EAAInH,EAAY3W,EAEtBuM,EAAQuR,GAAMvR,EAAQuR,GAAM9Z,EAAIuI,EAAQ2hG,EAAYluG,GAAM8B,K,2BAM5D,SAAeyK,EAAQoK,EAAWu3F,EAAWpsG,EAAGo9B,GAE/C,IAAM,IAAIl/B,EAAI,EAAGA,IAAMk/B,IAAWl/B,EAAI,CAErC,IAAM8d,EAAInH,EAAY3W,EAEtBuM,EAAQuR,GAAMvR,EAAQuR,GAAMvR,EAAQ2hG,EAAYluG,GAAM8B,O,KASnD8pH,GAAqB,gBACrBC,GAAc,IAAIC,OAAQ,kBAAgC,KAK1DC,GAAY,mBACZC,GAAiB,KAAOJ,GAAmBl2D,QAAS,MAAO,IAAO,IAIlEu2D,GAAe,kBAAkB78G,OAAOsmD,QAAS,KAAMq2D,IAGvDG,GAAU,WAAW98G,OAAOsmD,QAAS,OAAQs2D,IAI7CG,GAAY,4BAA4B/8G,OAAOsmD,QAAS,KAAMq2D,IAI9DK,GAAc,uBAAuBh9G,OAAOsmD,QAAS,KAAMq2D,IAE3DM,GAAW,IAAIP,OAClB,IACAG,GACAC,GACAC,GACAC,GACA,KAGGE,GAAwB,CAAE,WAAY,YAAa,SAEnDC,G,WAEL,WAAaC,EAAap5D,EAAMq5D,GAAqB,oBAEpD,IAAMC,EAAaD,GAAsBE,GAAgBC,eAAgBx5D,GAEzElhE,KAAK26H,aAAeL,EACpBt6H,KAAK46H,UAAYN,EAAYO,WAAY35D,EAAMs5D,G,4CAIhD,SAAU5sH,EAAOmH,GAEhB/U,KAAK2vH,OAEL,IAAMmL,EAAkB96H,KAAK26H,aAAaI,gBACzCnD,EAAU53H,KAAK46H,UAAWE,QAGVz6H,IAAZu3H,GAAwBA,EAAQ2B,SAAU3rH,EAAOmH,K,sBAIvD,SAAUnH,EAAOmH,GAIhB,IAFA,IAAMimH,EAAWh7H,KAAK46H,UAEZ9sH,EAAI9N,KAAK26H,aAAaI,gBAAiBxrH,EAAIyrH,EAAShtH,OAAQF,IAAMyB,IAAMzB,EAEjFktH,EAAUltH,GAAIwsD,SAAU1sD,EAAOmH,K,kBAMjC,WAIC,IAFA,IAAMimH,EAAWh7H,KAAK46H,UAEZ9sH,EAAI9N,KAAK26H,aAAaI,gBAAiBxrH,EAAIyrH,EAAShtH,OAAQF,IAAMyB,IAAMzB,EAEjFktH,EAAUltH,GAAI6hH,S,oBAMhB,WAIC,IAFA,IAAMqL,EAAWh7H,KAAK46H,UAEZ9sH,EAAI9N,KAAK26H,aAAaI,gBAAiBxrH,EAAIyrH,EAAShtH,OAAQF,IAAMyB,IAAMzB,EAEjFktH,EAAUltH,GAAImtH,a,KAaXR,G,WAEL,WAAaS,EAAUh6D,EAAMs5D,GAAa,oBAEzCx6H,KAAKkhE,KAAOA,EACZlhE,KAAKw6H,WAAaA,GAAcC,EAAgBC,eAAgBx5D,GAEhElhE,KAAKm7H,KAAOV,EAAgBW,SAAUF,EAAUl7H,KAAKw6H,WAAWa,WAAcH,EAE9El7H,KAAKk7H,SAAWA,EAGhBl7H,KAAKu5H,SAAWv5H,KAAKs7H,kBACrBt7H,KAAKs6D,SAAWt6D,KAAKu7H,kB,yDA6ItB,c,mCACA,c,8BAIA,SAAkBlhH,EAAQtF,GAEzBsF,EAAQtF,GAAW/U,KAAKw7H,aAAcx7H,KAAKqlH,gB,6BAI5C,SAAiBhrG,EAAQtF,GAIxB,IAFA,IAAMmI,EAASld,KAAKy7H,iBAEV3tH,EAAI,EAAGyB,EAAI2N,EAAOlP,OAAQF,IAAMyB,IAAMzB,EAE/CuM,EAAQtF,KAAcmI,EAAQpP,K,oCAMhC,SAAwBuM,EAAQtF,GAE/BsF,EAAQtF,GAAW/U,KAAKy7H,iBAAkBz7H,KAAK07H,iB,+BAIhD,SAAmBrhH,EAAQtF,GAE1B/U,KAAKy7H,iBAAiBviG,QAAS7e,EAAQtF,K,8BAMxC,SAAkBsF,EAAQtF,GAEzB/U,KAAKw7H,aAAcx7H,KAAKqlH,cAAiBhrG,EAAQtF,K,6CAIlD,SAAiCsF,EAAQtF,GAExC/U,KAAKw7H,aAAcx7H,KAAKqlH,cAAiBhrG,EAAQtF,GACjD/U,KAAKw7H,aAAapyF,aAAc,I,wDAIjC,SAA4C/uB,EAAQtF,GAEnD/U,KAAKw7H,aAAcx7H,KAAKqlH,cAAiBhrG,EAAQtF,GACjD/U,KAAKw7H,aAAa/kG,wBAAyB,I,6BAM5C,SAAiBpc,EAAQtF,GAIxB,IAFA,IAAM4mH,EAAO37H,KAAKy7H,iBAER3tH,EAAI,EAAGyB,EAAIosH,EAAK3tH,OAAQF,IAAMyB,IAAMzB,EAE7C6tH,EAAM7tH,GAAMuM,EAAQtF,O,4CAMtB,SAAgCsF,EAAQtF,GAIvC,IAFA,IAAM4mH,EAAO37H,KAAKy7H,iBAER3tH,EAAI,EAAGyB,EAAIosH,EAAK3tH,OAAQF,IAAMyB,IAAMzB,EAE7C6tH,EAAM7tH,GAAMuM,EAAQtF,KAIrB/U,KAAKw7H,aAAapyF,aAAc,I,uDAIjC,SAA2C/uB,EAAQtF,GAIlD,IAFA,IAAM4mH,EAAO37H,KAAKy7H,iBAER3tH,EAAI,EAAGyB,EAAIosH,EAAK3tH,OAAQF,IAAMyB,IAAMzB,EAE7C6tH,EAAM7tH,GAAMuM,EAAQtF,KAIrB/U,KAAKw7H,aAAa/kG,wBAAyB,I,oCAM5C,SAAwBpc,EAAQtF,GAE/B/U,KAAKy7H,iBAAkBz7H,KAAK07H,eAAkBrhH,EAAQtF,K,mDAIvD,SAAuCsF,EAAQtF,GAE9C/U,KAAKy7H,iBAAkBz7H,KAAK07H,eAAkBrhH,EAAQtF,GACtD/U,KAAKw7H,aAAapyF,aAAc,I,8DAIjC,SAAkD/uB,EAAQtF,GAEzD/U,KAAKy7H,iBAAkBz7H,KAAK07H,eAAkBrhH,EAAQtF,GACtD/U,KAAKw7H,aAAa/kG,wBAAyB,I,iCAM5C,SAAqBpc,EAAQtF,GAE5B/U,KAAKy7H,iBAAiBpiH,UAAWgB,EAAQtF,K,gDAI1C,SAAoCsF,EAAQtF,GAE3C/U,KAAKy7H,iBAAiBpiH,UAAWgB,EAAQtF,GACzC/U,KAAKw7H,aAAapyF,aAAc,I,2DAIjC,SAA+C/uB,EAAQtF,GAEtD/U,KAAKy7H,iBAAiBpiH,UAAWgB,EAAQtF,GACzC/U,KAAKw7H,aAAa/kG,wBAAyB,I,+BAI5C,SAAmBmlG,EAAa7mH,GAE/B/U,KAAK2vH,OACL3vH,KAAKu5H,SAAUqC,EAAa7mH,K,+BAI7B,SAAmB8mH,EAAa9mH,GAE/B/U,KAAK2vH,OACL3vH,KAAKs6D,SAAUuhE,EAAa9mH,K,kBAK7B,WAEC,IAAIymH,EAAex7H,KAAKm7H,KAClBX,EAAax6H,KAAKw6H,WAElBsB,EAAatB,EAAWsB,WACxBzW,EAAemV,EAAWnV,aAC5BqW,EAAgBlB,EAAWkB,cAe/B,GAbOF,IAENA,EAAef,EAAgBW,SAAUp7H,KAAKk7H,SAAUV,EAAWa,WAAcr7H,KAAKk7H,SAEtFl7H,KAAKm7H,KAAOK,GAKbx7H,KAAKu5H,SAAWv5H,KAAK+7H,sBACrB/7H,KAAKs6D,SAAWt6D,KAAKg8H,sBAGdR,EAAP,CAOA,GAAKM,EAAa,CAEjB,IAAIG,EAAczB,EAAWyB,YAG7B,OAASH,GAER,IAAK,YAEJ,IAAON,EAAarhG,SAGnB,YADA/mB,QAAQ3T,MAAO,oFAAqFO,MAKrG,IAAOw7H,EAAarhG,SAAS1B,UAG5B,YADArlB,QAAQ3T,MAAO,8GAA+GO,MAK/Hw7H,EAAeA,EAAarhG,SAAS1B,UAErC,MAED,IAAK,QAEJ,IAAO+iG,EAAathG,SAGnB,YADA9mB,QAAQ3T,MAAO,iFAAkFO,MAQlGw7H,EAAeA,EAAathG,SAAS0xC,MAGrC,IAAM,IAAI99D,EAAI,EAAGA,EAAI0tH,EAAaxtH,OAAQF,IAEzC,GAAK0tH,EAAc1tH,GAAIyM,OAAS0hH,EAAc,CAE7CA,EAAcnuH,EACd,MAMF,MAED,QAEC,QAAoCzN,IAA/Bm7H,EAAcM,GAGlB,YADA1oH,QAAQ3T,MAAO,uEAAwEO,MAKxFw7H,EAAeA,EAAcM,GAK/B,QAAqBz7H,IAAhB47H,EAA4B,CAEhC,QAAqC57H,IAAhCm7H,EAAcS,GAGlB,YADA7oH,QAAQ3T,MAAO,wFAAyFO,KAAMw7H,GAK/GA,EAAeA,EAAcS,IAO/B,IAAMC,EAAeV,EAAcnW,GAEnC,QAAsBhlH,IAAjB67H,EAAL,CAWA,IAAIC,EAAan8H,KAAKo8H,WAAWC,KAEjCr8H,KAAKw7H,aAAeA,OAEcn7H,IAA7Bm7H,EAAapyF,YAEjB+yF,EAAan8H,KAAKo8H,WAAWE,iBAEsBj8H,IAAxCm7H,EAAa/kG,yBAExB0lG,EAAan8H,KAAKo8H,WAAWG,wBAK9B,IAAIC,EAAcx8H,KAAKy8H,YAAYC,OAEnC,QAAuBr8H,IAAlBq7H,EAA8B,CAIlC,GAAsB,0BAAjBrW,EAA2C,CAK/C,IAAOmW,EAAa3xG,SAGnB,YADAzW,QAAQ3T,MAAO,sGAAuGO,MAKvH,IAAKw7H,EAAa3xG,SAAS2iB,iBAmB1B,YADAp5B,QAAQ3T,MAAO,oHAAqHO,MAhBpI,IAAOw7H,EAAa3xG,SAASgf,gBAG5B,YADAz1B,QAAQ3T,MAAO,sHAAuHO,WAK1EK,IAAxDm7H,EAAa1sF,sBAAuB4sF,KAExCA,EAAgBF,EAAa1sF,sBAAuB4sF,IAcvDc,EAAcx8H,KAAKy8H,YAAYE,aAE/B38H,KAAKy7H,iBAAmBS,EACxBl8H,KAAK07H,cAAgBA,YAEiBr7H,IAA3B67H,EAAa7iH,gBAAoDhZ,IAAzB67H,EAAahjG,SAIhEsjG,EAAcx8H,KAAKy8H,YAAYG,eAE/B58H,KAAKy7H,iBAAmBS,GAEbt+G,MAAMC,QAASq+G,IAE1BM,EAAcx8H,KAAKy8H,YAAYI,YAE/B78H,KAAKy7H,iBAAmBS,GAIxBl8H,KAAKqlH,aAAeA,EAKrBrlH,KAAKu5H,SAAWv5H,KAAK88H,oBAAqBN,GAC1Cx8H,KAAKs6D,SAAWt6D,KAAK+8H,iCAAkCP,GAAeL,OAhGtE,CAEC,IAAMd,EAAWb,EAAWa,SAE5BjoH,QAAQ3T,MAAO,+DAAiE47H,EAC/E,IAAMhW,EAAe,wBAA0BmW,SAjGhDpoH,QAAQ3T,MAAO,2DAA6DO,KAAKkhE,KAAO,2B,oBAgM1F,WAEClhE,KAAKm7H,KAAO,KAIZn7H,KAAKu5H,SAAWv5H,KAAKs7H,kBACrBt7H,KAAKs6D,SAAWt6D,KAAKu7H,qB,qBArgBtB,SAAeyB,EAAM97D,EAAMs5D,GAE1B,OAASwC,GAAQA,EAAKC,uBAMd,IAAIxC,EAAgBJ,UAAW2C,EAAM97D,EAAMs5D,GAJ3C,IAAIC,EAAiBuC,EAAM97D,EAAMs5D,K,8BAiB1C,SAAyBjgH,GAExB,OAAOA,EAAKipD,QAAS,MAAO,KAAMA,QAASm2D,GAAa,M,4BAIzD,SAAuBxU,GAEtB,IAAM+X,EAAU/C,GAASn1F,KAAMmgF,GAE/B,IAAO+X,EAEN,MAAM,IAAI1pH,MAAO,4CAA8C2xG,GAIhE,IAAMgY,EAAU,CAEf9B,SAAU6B,EAAS,GACnBpB,WAAYoB,EAAS,GACrBjB,YAAaiB,EAAS,GACtB7X,aAAc6X,EAAS,GACvBxB,cAAewB,EAAS,IAGnBE,EAAUD,EAAQ9B,UAAY8B,EAAQ9B,SAASlO,YAAa,KAElE,QAAiB9sH,IAAZ+8H,IAAuC,IAAdA,EAAkB,CAE/C,IAAMtB,EAAaqB,EAAQ9B,SAASgC,UAAWD,EAAU,IAMF,IAAlDhD,GAAsB/sH,QAASyuH,KAEnCqB,EAAQ9B,SAAW8B,EAAQ9B,SAASgC,UAAW,EAAGD,GAClDD,EAAQrB,WAAaA,GAMvB,GAA8B,OAAzBqB,EAAQ9X,cAAyD,IAAhC8X,EAAQ9X,aAAar3G,OAE1D,MAAM,IAAIwF,MAAO,+DAAiE2xG,GAInF,OAAOgY,I,sBAIR,SAAiBH,EAAM3B,GAEtB,IAAOA,GAAyB,KAAbA,GAAgC,MAAbA,IAAmC,IAAfA,GAAoBA,IAAa2B,EAAKziH,MAAQ8gH,IAAa2B,EAAK5gH,KAEzH,OAAO4gH,EAKR,GAAKA,EAAK9iG,SAAW,CAEpB,IAAMuiE,EAAOugC,EAAK9iG,SAASojG,cAAejC,GAE1C,QAAch7H,IAATo8F,EAEJ,OAAOA,EAOT,GAAKugC,EAAK9yG,SAAW,CAEpB,IAsBMqzG,EAtBoB,SAApBC,EAA+BtzG,GAEpC,IAAM,IAAIpc,EAAI,EAAGA,EAAIoc,EAASlc,OAAQF,IAAO,CAE5C,IAAM2vH,EAAYvzG,EAAUpc,GAE5B,GAAK2vH,EAAUljH,OAAS8gH,GAAYoC,EAAUrhH,OAASi/G,EAEtD,OAAOoC,EAIR,IAAM7pD,EAAS4pD,EAAmBC,EAAUvzG,UAE5C,GAAK0pD,EAAS,OAAOA,EAItB,OAAO,KAIY4pD,CAAmBR,EAAK9yG,UAE5C,GAAKqzG,EAEJ,OAAOA,EAMT,OAAO,S,KAwYT9C,GAAgBJ,UAAYA,GAE5BI,GAAgBnlH,UAAUmnH,YAAc,CACvCC,OAAQ,EACRG,YAAa,EACbF,aAAc,EACdC,eAAgB,GAGjBnC,GAAgBnlH,UAAU8mH,WAAa,CACtCC,KAAM,EACNC,YAAa,EACbC,uBAAwB,GAGzB9B,GAAgBnlH,UAAUwnH,oBAAsB,CAE/CrC,GAAgBnlH,UAAUooH,iBAC1BjD,GAAgBnlH,UAAUqoH,gBAC1BlD,GAAgBnlH,UAAUsoH,uBAC1BnD,GAAgBnlH,UAAUuoH,mBAI3BpD,GAAgBnlH,UAAUynH,iCAAmC,CAE5D,CAECtC,GAAgBnlH,UAAUwoH,iBAC1BrD,GAAgBnlH,UAAUyoH,gCAC1BtD,GAAgBnlH,UAAU0oH,4CAExB,CAIFvD,GAAgBnlH,UAAU2oH,gBAC1BxD,GAAgBnlH,UAAU4oH,+BAC1BzD,GAAgBnlH,UAAU6oH,2CAExB,CAGF1D,GAAgBnlH,UAAU8oH,uBAC1B3D,GAAgBnlH,UAAU+oH,sCAC1B5D,GAAgBnlH,UAAUgpH,kDAExB,CAGF7D,GAAgBnlH,UAAUipH,oBAC1B9D,GAAgBnlH,UAAUkpH,mCAC1B/D,GAAgBnlH,UAAUmpH,gD,IAmCtBC,G,WAEL,aAAc,oBAEb1+H,KAAKoc,KAAOzN,KAGZ3O,KAAKmyE,SAAWv0D,MAAMtI,UAAUzH,MAAMI,KAAM/N,WAE5CF,KAAK+6H,gBAAkB,EAGvB,IAAMzwF,EAAU,GAChBtqC,KAAK2+H,eAAiBr0F,EAEtB,IAAM,IAAIx8B,EAAI,EAAGyB,EAAIrP,UAAU8N,OAAQF,IAAMyB,IAAMzB,EAElDw8B,EAASpqC,UAAW4N,GAAIsO,MAAStO,EAIlC9N,KAAK4+H,OAAS,GACd5+H,KAAK6+H,aAAe,GACpB7+H,KAAK46H,UAAY,GACjB56H,KAAK8+H,uBAAyB,GAE9B,IAAMzuF,EAAQrwC,KAEdA,KAAK++H,MAAQ,CAEZh3E,QAAS,CACR,YAEC,OAAO1X,EAAM8hC,SAASnkE,QAGvB,YAEC,OAAOhO,KAAKg/H,MAAQ3uF,EAAM0qF,kBAI5B,wBAEC,OAAO1qF,EAAMuqF,UAAU5sH,S,uCAQ1B,WAaC,IAXA,IAAM+5C,EAAU/nD,KAAKmyE,SACpB8sD,EAAgBj/H,KAAK2+H,eACrBO,EAAQl/H,KAAK4+H,OACbO,EAAcn/H,KAAK6+H,aACnB7D,EAAWh7H,KAAK46H,UAChBwE,EAAYpE,EAAShtH,OAElBqxH,OAAch/H,EACjBi/H,EAAWv3E,EAAQ/5C,OACnBuxH,EAAiBv/H,KAAK+6H,gBAEbjtH,EAAI,EAAGyB,EAAIrP,UAAU8N,OAAQF,IAAMyB,IAAMzB,EAAI,CAEtD,IAAMub,EAASnpB,UAAW4N,GACzBsO,EAAOiN,EAAOjN,KACX5O,EAAQyxH,EAAe7iH,GAE3B,QAAe/b,IAAVmN,EAAsB,CAI1BA,EAAQ8xH,IACRL,EAAe7iH,GAAS5O,EACxBu6C,EAAQz6C,KAAM+b,GAId,IAAM,IAAIuC,EAAI,EAAGpc,EAAI4vH,EAAWxzG,IAAMpc,IAAMoc,EAE3CovG,EAAUpvG,GAAIte,KAAM,IAAImtH,GAAiBpxG,EAAQ61G,EAAOtzG,GAAKuzG,EAAavzG,UAIrE,GAAKpe,EAAQ+xH,EAAiB,CAEpCF,EAAct3E,EAASv6C,GAIvB,IAAMgyH,IAAsBD,EAC3BE,EAAmB13E,EAASy3E,GAE7BP,EAAeQ,EAAiBrjH,MAAS5O,EACzCu6C,EAASv6C,GAAUiyH,EAEnBR,EAAe7iH,GAASojH,EACxBz3E,EAASy3E,GAAqBn2G,EAI9B,IAAM,IAAIuC,EAAI,EAAGpc,EAAI4vH,EAAWxzG,IAAMpc,IAAMoc,EAAI,CAE/C,IAAM8zG,EAAkB1E,EAAUpvG,GACjC+zG,EAAaD,EAAiBF,GAE3B5H,EAAU8H,EAAiBlyH,GAE/BkyH,EAAiBlyH,GAAUmyH,OAEVt/H,IAAZu3H,IAMJA,EAAU,IAAI6C,GAAiBpxG,EAAQ61G,EAAOtzG,GAAKuzG,EAAavzG,KAIjE8zG,EAAiBF,GAAqB5H,QAI5B7vE,EAASv6C,KAAY6xH,GAEhCjsH,QAAQ3T,MAAO,sJAOjBO,KAAK+6H,gBAAkBwE,I,oBAIxB,WASC,IAPA,IAAMx3E,EAAU/nD,KAAKmyE,SACpB8sD,EAAgBj/H,KAAK2+H,eACrB3D,EAAWh7H,KAAK46H,UAChBwE,EAAYpE,EAAShtH,OAElBuxH,EAAiBv/H,KAAK+6H,gBAEhBjtH,EAAI,EAAGyB,EAAIrP,UAAU8N,OAAQF,IAAMyB,IAAMzB,EAAI,CAEtD,IAAMub,EAASnpB,UAAW4N,GACzBsO,EAAOiN,EAAOjN,KACd5O,EAAQyxH,EAAe7iH,GAExB,QAAe/b,IAAVmN,GAAuBA,GAAS+xH,EAAiB,CAIrD,IAAMK,EAAkBL,IACvBM,EAAoB93E,EAAS63E,GAE9BX,EAAeY,EAAkBzjH,MAAS5O,EAC1Cu6C,EAASv6C,GAAUqyH,EAEnBZ,EAAe7iH,GAASwjH,EACxB73E,EAAS63E,GAAoBv2G,EAI7B,IAAM,IAAIuC,EAAI,EAAGpc,EAAI4vH,EAAWxzG,IAAMpc,IAAMoc,EAAI,CAE/C,IAAM8zG,EAAkB1E,EAAUpvG,GACjCk0G,EAAcJ,EAAiBE,GAC/BhI,EAAU8H,EAAiBlyH,GAE5BkyH,EAAiBlyH,GAAUsyH,EAC3BJ,EAAiBE,GAAoBhI,IAQxC53H,KAAK+6H,gBAAkBwE,I,qBAKxB,WAUC,IARA,IAAMx3E,EAAU/nD,KAAKmyE,SACpB8sD,EAAgBj/H,KAAK2+H,eACrB3D,EAAWh7H,KAAK46H,UAChBwE,EAAYpE,EAAShtH,OAElBuxH,EAAiBv/H,KAAK+6H,gBACzBuE,EAAWv3E,EAAQ/5C,OAEVF,EAAI,EAAGyB,EAAIrP,UAAU8N,OAAQF,IAAMyB,IAAMzB,EAAI,CAEtD,IAAMub,EAASnpB,UAAW4N,GACzBsO,EAAOiN,EAAOjN,KACd5O,EAAQyxH,EAAe7iH,GAExB,QAAe/b,IAAVmN,EAIJ,UAFOyxH,EAAe7iH,GAEjB5O,EAAQ+xH,EAAiB,CAI7B,IAAMC,IAAsBD,EAC3BE,EAAmB13E,EAASy3E,GAC5Bp+D,IAAek+D,EACfS,EAAah4E,EAASqZ,GAGvB69D,EAAeQ,EAAiBrjH,MAAS5O,EACzCu6C,EAASv6C,GAAUiyH,EAGnBR,EAAec,EAAW3jH,MAASojH,EACnCz3E,EAASy3E,GAAqBO,EAC9Bh4E,EAAQ+kB,MAIR,IAAM,IAAIlhD,EAAI,EAAGpc,EAAI4vH,EAAWxzG,IAAMpc,IAAMoc,EAAI,CAE/C,IAAM8zG,EAAkB1E,EAAUpvG,GACjC+zG,EAAaD,EAAiBF,GAC9B96B,EAAOg7B,EAAiBt+D,GAEzBs+D,EAAiBlyH,GAAUmyH,EAC3BD,EAAiBF,GAAqB96B,EACtCg7B,EAAgB5yD,WAIX,CAIN,IAAM1L,IAAek+D,EACpBS,EAAah4E,EAASqZ,GAElBA,EAAY,IAEhB69D,EAAec,EAAW3jH,MAAS5O,GAIpCu6C,EAASv6C,GAAUuyH,EACnBh4E,EAAQ+kB,MAIR,IAAM,IAAIlhD,EAAI,EAAGpc,EAAI4vH,EAAWxzG,IAAMpc,IAAMoc,EAAI,CAE/C,IAAM8zG,EAAkB1E,EAAUpvG,GAElC8zG,EAAiBlyH,GAAUkyH,EAAiBt+D,GAC5Cs+D,EAAgB5yD,QAUpB9sE,KAAK+6H,gBAAkBwE,I,wBAMxB,SAAYr+D,EAAMs5D,GAKjB,IAAMwF,EAAgBhgI,KAAK8+H,uBACvBtxH,EAAQwyH,EAAe9+D,GACrB85D,EAAWh7H,KAAK46H,UAEtB,QAAev6H,IAAVmN,EAAsB,OAAOwtH,EAAUxtH,GAE5C,IAAM0xH,EAAQl/H,KAAK4+H,OAClBO,EAAcn/H,KAAK6+H,aACnB92E,EAAU/nD,KAAKmyE,SACfmtD,EAAWv3E,EAAQ/5C,OACnBuxH,EAAiBv/H,KAAK+6H,gBACtB2E,EAAkB,IAAI9hH,MAAO0hH,GAE9B9xH,EAAQwtH,EAAShtH,OAEjBgyH,EAAe9+D,GAAS1zD,EAExB0xH,EAAM5xH,KAAM4zD,GACZi+D,EAAY7xH,KAAMktH,GAClBQ,EAAS1tH,KAAMoyH,GAEf,IAAM,IAAI5xH,EAAIyxH,EAAgBhwH,EAAIw4C,EAAQ/5C,OAAQF,IAAMyB,IAAMzB,EAAI,CAEjE,IAAMub,EAAS0+B,EAASj6C,GACxB4xH,EAAiB5xH,GAAM,IAAI2sH,GAAiBpxG,EAAQ63C,EAAMs5D,GAI3D,OAAOkF,I,0BAIR,SAAcx+D,GAKb,IAAM8+D,EAAgBhgI,KAAK8+H,uBAC1BtxH,EAAQwyH,EAAe9+D,GAExB,QAAe7gE,IAAVmN,EAAsB,CAE1B,IAAM0xH,EAAQl/H,KAAK4+H,OAClBO,EAAcn/H,KAAK6+H,aACnB7D,EAAWh7H,KAAK46H,UAChBqF,EAAoBjF,EAAShtH,OAAS,EACtCkyH,EAAelF,EAAUiF,GAG1BD,EAFoB9+D,EAAM++D,IAEUzyH,EAEpCwtH,EAAUxtH,GAAU0yH,EACpBlF,EAASluD,MAETqyD,EAAa3xH,GAAU2xH,EAAac,GACpCd,EAAYryD,MAEZoyD,EAAO1xH,GAAU0xH,EAAOe,GACxBf,EAAMpyD,W,KAQT4xD,GAAqBppH,UAAU2nH,wBAAyB,E,IAElDkD,G,WAEL,WAAaC,EAAO3jB,GAAqD,IAA/C4jB,EAA+C,uDAAnC,KAAM1hB,EAA6B,uDAAjBlC,EAAKkC,UAAY,oBAExE3+G,KAAKsgI,OAASF,EACdpgI,KAAKugI,MAAQ9jB,EACbz8G,KAAKwgI,WAAaH,EAClBrgI,KAAK2+G,UAAYA,EAWjB,IATA,IAAMjC,EAASD,EAAKC,OACnB+jB,EAAU/jB,EAAO1uG,OACjB0yH,EAAe,IAAI9iH,MAAO6iH,GAErBE,EAAsB,CAC3BtgB,YAAap2G,GACbq2G,UAAWr2G,IAGF6D,EAAI,EAAGA,IAAM2yH,IAAY3yH,EAAI,CAEtC,IAAMswG,EAAc1B,EAAQ5uG,GAAI+vG,kBAAmB,MACnD6iB,EAAc5yH,GAAMswG,EACpBA,EAAYa,SAAW0hB,EAIxB3gI,KAAK4gI,qBAAuBD,EAE5B3gI,KAAK6gI,cAAgBH,EAGrB1gI,KAAK8gI,kBAAoB,IAAIljH,MAAO6iH,GAEpCzgI,KAAK+gI,YAAc,KACnB/gI,KAAKghI,kBAAoB,KAEzBhhI,KAAKihI,sBAAwB,KAC7BjhI,KAAKkhI,mBAAqB,KAE1BlhI,KAAKu0H,KAAO3qH,GACZ5J,KAAKmhI,YAAe,EAIpBnhI,KAAKohI,WAAa,KAIlBphI,KAAKi5C,KAAO,EAEZj5C,KAAKsiH,UAAY,EACjBtiH,KAAKqhI,oBAAsB,EAE3BrhI,KAAKw2D,OAAS,EACdx2D,KAAKshI,iBAAmB,EAExBthI,KAAKuhI,YAAchoH,IAEnBvZ,KAAKwhI,QAAS,EACdxhI,KAAK+zC,SAAU,EAEf/zC,KAAKyhI,mBAAoB,EAEzBzhI,KAAK0hI,kBAAmB,EACxB1hI,KAAK2hI,gBAAiB,E,wCAMvB,WAIC,OAFA3hI,KAAKsgI,OAAOsB,gBAAiB5hI,MAEtBA,O,kBAIR,WAIC,OAFAA,KAAKsgI,OAAOuB,kBAAmB7hI,MAExBA,KAAKurD,U,mBAIb,WASC,OAPAvrD,KAAKwhI,QAAS,EACdxhI,KAAK+zC,SAAU,EAEf/zC,KAAKi5C,KAAO,EACZj5C,KAAKmhI,YAAe,EACpBnhI,KAAKohI,WAAa,KAEXphI,KAAK8hI,aAAaC,gB,uBAI1B,WAEC,OAAO/hI,KAAK+zC,UAAa/zC,KAAKwhI,QAA6B,IAAnBxhI,KAAKsiH,WACxB,OAApBtiH,KAAKohI,YAAuBphI,KAAKsgI,OAAO0B,gBAAiBhiI,Q,yBAK3D,WAEC,OAAOA,KAAKsgI,OAAO0B,gBAAiBhiI,Q,qBAIrC,SAASi5C,GAIR,OAFAj5C,KAAKohI,WAAanoF,EAEXj5C,O,qBAIR,SAAS0tD,EAAM6zE,GAKd,OAHAvhI,KAAKu0H,KAAO7mE,EACZ1tD,KAAKuhI,YAAcA,EAEZvhI,O,gCASR,SAAoBw2D,GAOnB,OALAx2D,KAAKw2D,OAASA,EAGdx2D,KAAKshI,iBAAmBthI,KAAK+zC,QAAUyiB,EAAS,EAEzCx2D,KAAK8hI,e,gCAKb,WAEC,OAAO9hI,KAAKshI,mB,oBAIb,SAAQtd,GAEP,OAAOhkH,KAAKiiI,gBAAiBje,EAAU,EAAG,K,qBAI3C,SAASA,GAER,OAAOhkH,KAAKiiI,gBAAiBje,EAAU,EAAG,K,2BAI3C,SAAeke,EAAele,EAAUme,GAKvC,GAHAD,EAAcE,QAASpe,GACvBhkH,KAAKqiI,OAAQre,GAERme,EAAO,CAEX,IAAMG,EAAiBtiI,KAAKugI,MAAMvc,SACjCue,EAAkBL,EAAc3B,MAAMvc,SAEtCwe,EAAgBD,EAAkBD,EAClCG,EAAgBH,EAAiBC,EAElCL,EAAcC,KAAM,EAAKK,EAAexe,GACxChkH,KAAKmiI,KAAMM,EAAe,EAAKze,GAIhC,OAAOhkH,O,yBAIR,SAAa0iI,EAAc1e,EAAUme,GAEpC,OAAOO,EAAaC,cAAe3iI,KAAMgkH,EAAUme,K,wBAIpD,WAEC,IAAMS,EAAoB5iI,KAAKkhI,mBAS/B,OAP2B,OAAtB0B,IAEJ5iI,KAAKkhI,mBAAqB,KAC1BlhI,KAAKsgI,OAAOuC,4BAA6BD,IAInC5iI,O,mCASR,SAAuBsiH,GAKtB,OAHAtiH,KAAKsiH,UAAYA,EACjBtiH,KAAKqhI,oBAAsBrhI,KAAKwhI,OAAS,EAAIlf,EAEtCtiH,KAAK+hI,gB,mCAKb,WAEC,OAAO/hI,KAAKqhI,sB,yBAIb,SAAard,GAIZ,OAFAhkH,KAAKsiH,UAAYtiH,KAAKugI,MAAMvc,SAAWA,EAEhChkH,KAAK+hI,gB,sBAIb,SAAUe,GAKT,OAHA9iI,KAAKi5C,KAAO6pF,EAAO7pF,KACnBj5C,KAAKsiH,UAAYwgB,EAAOxgB,UAEjBtiH,KAAK+hI,gB,kBAIb,SAAM/d,GAEL,OAAOhkH,KAAKmiI,KAAMniI,KAAKqhI,oBAAqB,EAAGrd,K,kBAIhD,SAAM+e,EAAgBC,EAAchf,GAEnC,IAAMoc,EAAQpgI,KAAKsgI,OAClBlO,EAAMgO,EAAMnnF,KACZqpE,EAAYtiH,KAAKsiH,UAEdlE,EAAcp+G,KAAKihI,sBAEF,OAAhB7iB,IAEJA,EAAcgiB,EAAM6C,0BACpBjjI,KAAKihI,sBAAwB7iB,GAI9B,IAAMvC,EAAQuC,EAAYS,mBACzBrkF,EAAS4jF,EAAYU,aAQtB,OANAjD,EAAO,GAAMuW,EACbvW,EAAO,GAAMuW,EAAMpO,EAEnBxpF,EAAQ,GAAMuoG,EAAiBzgB,EAC/B9nF,EAAQ,GAAMwoG,EAAe1gB,EAEtBtiH,O,yBAIR,WAEC,IAAMkjI,EAAuBljI,KAAKihI,sBASlC,OAP8B,OAAzBiC,IAEJljI,KAAKihI,sBAAwB,KAC7BjhI,KAAKsgI,OAAOuC,4BAA6BK,IAInCljI,O,sBAMR,WAEC,OAAOA,KAAKsgI,S,qBAIb,WAEC,OAAOtgI,KAAKugI,Q,qBAIb,WAEC,OAAOvgI,KAAKwgI,YAAcxgI,KAAKsgI,OAAO6C,Q,qBAMvC,SAASlqF,EAAMmqF,EAAWC,EAAenK,GAIxC,GAAOl5H,KAAK+zC,QAAZ,CASA,IAAMwuE,EAAYviH,KAAKohI,WAEvB,GAAmB,OAAd7e,EAAqB,CAIzB,IAAM+gB,GAAgBrqF,EAAOspE,GAAc8gB,EAC3C,GAAKC,EAAc,GAAuB,IAAlBD,EAEvB,OAMDrjI,KAAKohI,WAAa,KAClBgC,EAAYC,EAAgBC,EAM7BF,GAAapjI,KAAKujI,iBAAkBtqF,GACpC,IAAMuqF,EAAWxjI,KAAKyjI,YAAaL,GAK7B5sE,EAASx2D,KAAK0jI,cAAezqF,GAEnC,GAAKud,EAAS,EAAI,CAEjB,IAAMkqE,EAAe1gI,KAAK6gI,cACpB8C,EAAiB3jI,KAAK8gI,kBAE5B,OAAS9gI,KAAK2+G,WAEb,KAAKt0G,GAEJ,IAAM,IAAIuhB,EAAI,EAAGpc,EAAIkxH,EAAa1yH,OAAQ4d,IAAMpc,IAAMoc,EAErD80G,EAAc90G,GAAIyyF,SAAUmlB,GAC5BG,EAAgB/3G,GAAIg4G,mBAAoBptE,GAIzC,MAED,KAAKpsD,GACL,QAEC,IAAM,IAAIwhB,EAAI,EAAGpc,EAAIkxH,EAAa1yH,OAAQ4d,IAAMpc,IAAMoc,EAErD80G,EAAc90G,GAAIyyF,SAAUmlB,GAC5BG,EAAgB/3G,GAAIi4G,WAAY3K,EAAW1iE,UA3D9Cx2D,KAAK0jI,cAAezqF,K,2BAqEtB,SAAeA,GAEd,IAAIud,EAAS,EAEb,GAAKx2D,KAAK+zC,QAAU,CAEnByiB,EAASx2D,KAAKw2D,OACd,IAAM4nD,EAAcp+G,KAAKkhI,mBAEzB,GAAqB,OAAhB9iB,EAAuB,CAE3B,IAAM0lB,EAAmB1lB,EAAYC,SAAUplE,GAAQ,GAEvDud,GAAUstE,EAEL7qF,EAAOmlE,EAAYS,mBAAoB,KAE3C7+G,KAAK8hI,aAEqB,IAArBgC,IAGJ9jI,KAAK+zC,SAAU,KAWnB,OADA/zC,KAAKshI,iBAAmB9qE,EACjBA,I,8BAIR,SAAkBvd,GAEjB,IAAIqpE,EAAY,EAEhB,IAAOtiH,KAAKwhI,OAAS,CAEpBlf,EAAYtiH,KAAKsiH,UAEjB,IAAMlE,EAAcp+G,KAAKihI,sBAEzB,GAAqB,OAAhB7iB,EAIJkE,GAFyBlE,EAAYC,SAAUplE,GAAQ,GAIlDA,EAAOmlE,EAAYS,mBAAoB,KAE3C7+G,KAAK+hI,cAEc,IAAdzf,EAGJtiH,KAAKwhI,QAAS,EAKdxhI,KAAKsiH,UAAYA,GAWrB,OADAtiH,KAAKqhI,oBAAsB/e,EACpBA,I,yBAIR,SAAa8gB,GAEZ,IAAMpf,EAAWhkH,KAAKugI,MAAMvc,SACtBuQ,EAAOv0H,KAAKu0H,KAEdt7E,EAAOj5C,KAAKi5C,KAAOmqF,EACnBW,EAAY/jI,KAAKmhI,WAEf6C,EAAazP,IAAS1qH,GAE5B,GAAmB,IAAdu5H,EAEJ,OAAqB,IAAhBW,EAA2B9qF,EAEvB+qF,GAAkC,KAAR,EAAZD,GAA0B/f,EAAW/qE,EAAOA,EAIpE,GAAKs7E,IAAS5qH,GAAW,EAEH,IAAhBo6H,IAIJ/jI,KAAKmhI,WAAa,EAClBnhI,KAAKikI,aAAa,GAAM,GAAM,IAI/BC,EAAa,CAEZ,GAAKjrF,GAAQ+qE,EAEZ/qE,EAAO+qE,MAED,MAAK/qE,EAAO,GAIZ,CAENj5C,KAAKi5C,KAAOA,EAEZ,MAAMirF,EANNjrF,EAAO,EAUHj5C,KAAKyhI,kBAAoBzhI,KAAKwhI,QAAS,EACvCxhI,KAAK+zC,SAAU,EAEpB/zC,KAAKi5C,KAAOA,EAEZj5C,KAAKsgI,OAAOtiH,cAAe,CAC1B/Q,KAAM,WAAY61H,OAAQ9iI,KAC1BwtB,UAAW41G,EAAY,GAAM,EAAI,SAK7B,CAwBN,IAtBqB,IAAhBW,IAICX,GAAa,GAEjBW,EAAY,EAEZ/jI,KAAKikI,aAAa,EAA2B,IAArBjkI,KAAKuhI,YAAmByC,IAQhDhkI,KAAKikI,YAAkC,IAArBjkI,KAAKuhI,aAAmB,EAAMyC,IAM7C/qF,GAAQ+qE,GAAY/qE,EAAO,EAAI,CAInC,IAAMkrF,EAAY/1H,KAAKgC,MAAO6oC,EAAO+qE,GACrC/qE,GAAQ+qE,EAAWmgB,EAEnBJ,GAAa31H,KAAKgD,IAAK+yH,GAEvB,IAAMC,EAAUpkI,KAAKuhI,YAAcwC,EAEnC,GAAKK,GAAW,EAIVpkI,KAAKyhI,kBAAoBzhI,KAAKwhI,QAAS,EACvCxhI,KAAK+zC,SAAU,EAEpBkF,EAAOmqF,EAAY,EAAIpf,EAAW,EAElChkH,KAAKi5C,KAAOA,EAEZj5C,KAAKsgI,OAAOtiH,cAAe,CAC1B/Q,KAAM,WAAY61H,OAAQ9iI,KAC1BwtB,UAAW41G,EAAY,EAAI,GAAM,QAG5B,CAIN,GAAiB,IAAZgB,EAAgB,CAIpB,IAAMC,EAAUjB,EAAY,EAC5BpjI,KAAKikI,YAAaI,GAAWA,EAASL,QAItChkI,KAAKikI,aAAa,GAAO,EAAOD,GAIjChkI,KAAKmhI,WAAa4C,EAElB/jI,KAAKi5C,KAAOA,EAEZj5C,KAAKsgI,OAAOtiH,cAAe,CAC1B/Q,KAAM,OAAQ61H,OAAQ9iI,KAAMmkI,UAAWA,UAOzCnkI,KAAKi5C,KAAOA,EAIb,GAAK+qF,GAAkC,KAAR,EAAZD,GAIlB,OAAO/f,EAAW/qE,EAMpB,OAAOA,I,yBAIR,SAAaorF,EAASC,EAAON,GAE5B,IAAM/kB,EAAWj/G,KAAK4gI,qBAEjBoD,GAEJ/kB,EAASoB,YAAcn2G,GACvB+0G,EAASqB,UAAYp2G,KAQpB+0G,EAASoB,YAFLgkB,EAEmBrkI,KAAK0hI,iBAAmBx3H,GAAkBD,GAI1CE,GAMvB80G,EAASqB,UAFLgkB,EAEiBtkI,KAAK2hI,eAAiBz3H,GAAkBD,GAItCE,M,6BAQ1B,SAAiB65G,EAAUugB,EAAWC,GAErC,IAAMpE,EAAQpgI,KAAKsgI,OAAQlO,EAAMgO,EAAMnnF,KACnCmlE,EAAcp+G,KAAKkhI,mBAEF,OAAhB9iB,IAEJA,EAAcgiB,EAAM6C,0BACpBjjI,KAAKkhI,mBAAqB9iB,GAI3B,IAAMvC,EAAQuC,EAAYS,mBACzBrkF,EAAS4jF,EAAYU,aAOtB,OALAjD,EAAO,GAAMuW,EACb53F,EAAQ,GAAM+pG,EACd1oB,EAAO,GAAMuW,EAAMpO,EACnBxpF,EAAQ,GAAMgqG,EAEPxkI,S,KAMHykI,G,kDAEL,WAAazH,GAAO,kCAEnB,gBAEKmG,MAAQnG,EACb,EAAK0H,qBACL,EAAKC,WAAa,EAClB,EAAK1rF,KAAO,EACZ,EAAKqpE,UAAY,EARE,E,+CAYpB,SAAawgB,EAAQ8B,GAEpB,IAAM5H,EAAO8F,EAAOtC,YAAcxgI,KAAKmjI,MACtCzmB,EAASomB,EAAOvC,MAAM7jB,OACtB+jB,EAAU/jB,EAAO1uG,OACjBgtH,EAAW8H,EAAOhC,kBAClBJ,EAAeoC,EAAOjC,cACtBgE,EAAW7H,EAAK5gH,KAChB0oH,EAAiB9kI,KAAK+kI,uBAEnBC,EAAiBF,EAAgBD,QAEbxkI,IAAnB2kI,IAEJA,EAAiB,GACjBF,EAAgBD,GAAaG,GAI9B,IAAM,IAAIl3H,EAAI,EAAGA,IAAM2yH,IAAY3yH,EAAI,CAEtC,IAAM6uG,EAAQD,EAAQ5uG,GACrBq3G,EAAYxI,EAAMpiG,KAEfq9G,EAAUoN,EAAgB7f,GAE9B,QAAiB9kH,IAAZu3H,EAEJoD,EAAUltH,GAAM8pH,MAEV,CAIN,QAAiBv3H,KAFjBu3H,EAAUoD,EAAUltH,IAES,CAIC,OAAxB8pH,EAAQmJ,gBAETnJ,EAAQqB,eACXj5H,KAAKilI,oBAAqBrN,EAASiN,EAAU1f,IAI9C,SAID,IAAMjkD,EAAO0jE,GAAmBA,EAC/B9D,kBAAmBhzH,GAAI8pH,QAAQ4C,cAEhC5C,EAAU,IAAID,GACb8C,GAAgByK,OAAQlI,EAAM7X,EAAWjkD,GACzCy7C,EAAMa,cAAeb,EAAME,iBAEjBoc,eACXj5H,KAAKilI,oBAAqBrN,EAASiN,EAAU1f,GAE7C6V,EAAUltH,GAAM8pH,EAIjB8I,EAAc5yH,GAAIwwG,aAAesZ,EAAQv9G,U,6BAM3C,SAAiByoH,GAEhB,IAAO9iI,KAAKgiI,gBAAiBc,GAAW,CAEvC,GAA4B,OAAvBA,EAAO/B,YAAuB,CAKlC,IAAM8D,GAAa/B,EAAOtC,YAAcxgI,KAAKmjI,OAAQ/mH,KACpD+oH,EAAWrC,EAAOvC,MAAMnkH,KACxBgpH,EAAiBplI,KAAKqlI,eAAgBF,GAEvCnlI,KAAKslI,YAAaxC,EACjBsC,GAAkBA,EAAeG,aAAc,IAEhDvlI,KAAKwlI,mBAAoB1C,EAAQqC,EAAUN,GAO5C,IAHA,IAAM7J,EAAW8H,EAAOhC,kBAGdhzH,EAAI,EAAGyB,EAAIyrH,EAAShtH,OAAQF,IAAMyB,IAAMzB,EAAI,CAErD,IAAM8pH,EAAUoD,EAAUltH,GAEG,IAAxB8pH,EAAQoB,aAEZh5H,KAAKylI,aAAc7N,GACnBA,EAAQ8N,qBAMV1lI,KAAK2lI,YAAa7C,M,+BAMpB,SAAmBA,GAElB,GAAK9iI,KAAKgiI,gBAAiBc,GAAW,CAKrC,IAHA,IAAM9H,EAAW8H,EAAOhC,kBAGdhzH,EAAI,EAAGyB,EAAIyrH,EAAShtH,OAAQF,IAAMyB,IAAMzB,EAAI,CAErD,IAAM8pH,EAAUoD,EAAUltH,GAEG,MAArB8pH,EAAQoB,WAEfpB,EAAQgO,uBACR5lI,KAAK6lI,iBAAkBjO,IAMzB53H,KAAK8lI,gBAAiBhD,M,gCAQxB,WAEC9iI,KAAK+lI,SAAW,GAChB/lI,KAAKgmI,gBAAkB,EAEvBhmI,KAAKqlI,eAAiB,GAQtBrlI,KAAK46H,UAAY,GACjB56H,KAAKimI,iBAAmB,EAExBjmI,KAAK+kI,uBAAyB,GAG9B/kI,KAAKkmI,qBAAuB,GAC5BlmI,KAAKmmI,4BAA8B,EAEnC,IAAM91F,EAAQrwC,KAEdA,KAAK++H,MAAQ,CAEZqH,QAAS,CACR,YAEC,OAAO/1F,EAAM01F,SAAS/3H,QAGvB,YAEC,OAAOqiC,EAAM21F,kBAIfhL,SAAU,CACT,YAEC,OAAO3qF,EAAMuqF,UAAU5sH,QAGxB,YAEC,OAAOqiC,EAAM41F,mBAIfI,oBAAqB,CACpB,YAEC,OAAOh2F,EAAM61F,qBAAqBl4H,QAGnC,YAEC,OAAOqiC,EAAM81F,iC,6BAWjB,SAAiBrD,GAEhB,IAAMt1H,EAAQs1H,EAAO/B,YACrB,OAAiB,OAAVvzH,GAAkBA,EAAQxN,KAAKgmI,kB,gCAIvC,SAAoBlD,EAAQqC,EAAUN,GAErC,IAAMuB,EAAUpmI,KAAK+lI,SACpBO,EAAgBtmI,KAAKqlI,eAElBD,EAAiBkB,EAAenB,GAEpC,QAAwB9kI,IAAnB+kI,EAEJA,EAAiB,CAEhBG,aAAc,CAAEzC,GAChByD,aAAc,IAIfzD,EAAO9B,kBAAoB,EAE3BsF,EAAenB,GAAaC,MAEtB,CAEN,IAAMG,EAAeH,EAAeG,aAEpCzC,EAAO9B,kBAAoBuE,EAAav3H,OACxCu3H,EAAaj4H,KAAMw1H,GAIpBA,EAAO/B,YAAcqF,EAAQp4H,OAC7Bo4H,EAAQ94H,KAAMw1H,GAEdsC,EAAemB,aAAc1B,GAAa/B,I,mCAI3C,SAAuBA,GAEtB,IAAMsD,EAAUpmI,KAAK+lI,SACpBS,EAAqBJ,EAASA,EAAQp4H,OAAS,GAC/Cy4H,EAAa3D,EAAO/B,YAErByF,EAAmBzF,YAAc0F,EACjCL,EAASK,GAAeD,EACxBJ,EAAQt5D,MAERg2D,EAAO/B,YAAc,KAGrB,IAAMoE,EAAWrC,EAAOvC,MAAMnkH,KAC7BkqH,EAAgBtmI,KAAKqlI,eACrBD,EAAiBkB,EAAenB,GAChCuB,EAAsBtB,EAAeG,aAErCoB,EACCD,EAAqBA,EAAoB14H,OAAS,GAEnD44H,EAAmB9D,EAAO9B,kBAE3B2F,EAAgB3F,kBAAoB4F,EACpCF,EAAqBE,GAAqBD,EAC1CD,EAAoB55D,MAEpBg2D,EAAO9B,kBAAoB,YAGNoE,EAAemB,cACtBzD,EAAOtC,YAAcxgI,KAAKmjI,OAAQ/mH,MAIZ,IAA/BsqH,EAAoB14H,eAEjBs4H,EAAenB,GAIvBnlI,KAAK6mI,iCAAkC/D,K,8CAIxC,SAAkCA,GAIjC,IAFA,IAAM9H,EAAW8H,EAAOhC,kBAEdhzH,EAAI,EAAGyB,EAAIyrH,EAAShtH,OAAQF,IAAMyB,IAAMzB,EAAI,CAErD,IAAM8pH,EAAUoD,EAAUltH,GAES,MAA3B8pH,EAAQqB,gBAEfj5H,KAAK8mI,uBAAwBlP,M,yBAQhC,SAAakL,GAQZ,IAAMsD,EAAUpmI,KAAK+lI,SACpBgB,EAAYjE,EAAO/B,YAEnBiG,EAAkBhnI,KAAKgmI,kBAEvBiB,EAAsBb,EAASY,GAEhClE,EAAO/B,YAAciG,EACrBZ,EAASY,GAAoBlE,EAE7BmE,EAAoBlG,YAAcgG,EAClCX,EAASW,GAAcE,I,6BAIxB,SAAiBnE,GAQhB,IAAMsD,EAAUpmI,KAAK+lI,SACpBgB,EAAYjE,EAAO/B,YAEnBmG,IAAwBlnI,KAAKgmI,gBAE7BmB,EAAmBf,EAASc,GAE7BpE,EAAO/B,YAAcmG,EACrBd,EAASc,GAAuBpE,EAEhCqE,EAAiBpG,YAAcgG,EAC/BX,EAASW,GAAcI,I,iCAMxB,SAAqBvP,EAASiN,EAAU1f,GAEvC,IAAM2f,EAAiB9kI,KAAK+kI,uBAC3B/J,EAAWh7H,KAAK46H,UAEbwM,EAAgBtC,EAAgBD,QAEbxkI,IAAlB+mI,IAEJA,EAAgB,GAChBtC,EAAgBD,GAAauC,GAI9BA,EAAejiB,GAAcyS,EAE7BA,EAAQmJ,YAAc/F,EAAShtH,OAC/BgtH,EAAS1tH,KAAMsqH,K,oCAIhB,SAAwBA,GAEvB,IAAMoD,EAAWh7H,KAAK46H,UACrByM,EAAczP,EAAQA,QACtBiN,EAAWwC,EAAYnM,SAAS9+G,KAChC+oG,EAAYkiB,EAAYnmE,KACxB4jE,EAAiB9kI,KAAK+kI,uBACtBqC,EAAgBtC,EAAgBD,GAEhCyC,EAAsBtM,EAAUA,EAAShtH,OAAS,GAClDy4H,EAAa7O,EAAQmJ,YAEtBuG,EAAoBvG,YAAc0F,EAClCzL,EAAUyL,GAAea,EACzBtM,EAASluD,aAEFs6D,EAAejiB,GAEuB,IAAxC70G,OAAO+8B,KAAM+5F,GAAgBp5H,eAE1B82H,EAAgBD,K,0BAMzB,SAAcjN,GAEb,IAAMoD,EAAWh7H,KAAK46H,UACrBmM,EAAYnP,EAAQmJ,YAEpBiG,EAAkBhnI,KAAKimI,mBAEvBsB,EAAuBvM,EAAUgM,GAElCpP,EAAQmJ,YAAciG,EACtBhM,EAAUgM,GAAoBpP,EAE9B2P,EAAqBxG,YAAcgG,EACnC/L,EAAU+L,GAAcQ,I,8BAIzB,SAAkB3P,GAEjB,IAAMoD,EAAWh7H,KAAK46H,UACrBmM,EAAYnP,EAAQmJ,YAEpBmG,IAAwBlnI,KAAKimI,iBAE7BuB,EAAoBxM,EAAUkM,GAE/BtP,EAAQmJ,YAAcmG,EACtBlM,EAAUkM,GAAuBtP,EAEjC4P,EAAkBzG,YAAcgG,EAChC/L,EAAU+L,GAAcS,I,qCAOzB,WAEC,IAAM9G,EAAe1gI,KAAKkmI,qBACzBc,EAAkBhnI,KAAKmmI,8BAEpB/nB,EAAcsiB,EAAcsG,GAahC,YAXqB3mI,IAAhB+9G,KAEJA,EAAc,IAAIiD,GACjB,IAAInnG,aAAc,GAAK,IAAIA,aAAc,GACzC,EAAGla,KAAKynI,mCAEGC,aAAeV,EAC3BtG,EAAcsG,GAAoB5oB,GAI5BA,I,yCAIR,SAA6BA,GAE5B,IAAMsiB,EAAe1gI,KAAKkmI,qBACzBa,EAAY3oB,EAAYspB,aAExBR,IAAwBlnI,KAAKmmI,4BAE7BwB,EAAwBjH,EAAcwG,GAEvC9oB,EAAYspB,aAAeR,EAC3BxG,EAAcwG,GAAuB9oB,EAErCupB,EAAsBD,aAAeX,EACrCrG,EAAcqG,GAAcY,I,wBAO7B,SAAYlrB,EAAMmrB,EAAcjpB,GAE/B,IAAMqe,EAAO4K,GAAgB5nI,KAAKmjI,MACjC0B,EAAW7H,EAAK5gH,KAEbyrH,EAA6B,kBAATprB,EAAoBsH,GAAc+jB,WAAY9K,EAAMvgB,GAASA,EAE/E0oB,EAA0B,OAAf0C,EAAsBA,EAAWzrH,KAAOqgG,EAEnD2oB,EAAiBplI,KAAKqlI,eAAgBF,GACxCP,EAAkB,KAgBtB,QAdmBvkI,IAAds+G,IAIHA,EAFmB,OAAfkpB,EAEQA,EAAWlpB,UAIXv0G,SAMU/J,IAAnB+kI,EAA+B,CAEnC,IAAM2C,EAAiB3C,EAAemB,aAAc1B,GAEpD,QAAwBxkI,IAAnB0nI,GAAgCA,EAAeppB,YAAcA,EAEjE,OAAOopB,EAMRnD,EAAkBQ,EAAeG,aAAc,GAG3B,OAAfsC,IACJA,EAAajD,EAAgBrE,OAK/B,GAAoB,OAAfsH,EAAsB,OAAO,KAGlC,IAAMG,EAAY,IAAI7H,GAAiBngI,KAAM6nI,EAAYD,EAAcjpB,GAOvE,OALA3+G,KAAKslI,YAAa0C,EAAWpD,GAG7B5kI,KAAKwlI,mBAAoBwC,EAAW7C,EAAUN,GAEvCmD,I,4BAKR,SAAgBvrB,EAAMmrB,GAErB,IAAM5K,EAAO4K,GAAgB5nI,KAAKmjI,MACjC0B,EAAW7H,EAAK5gH,KAEhByrH,EAA6B,kBAATprB,EACnBsH,GAAc+jB,WAAY9K,EAAMvgB,GAASA,EAE1C0oB,EAAW0C,EAAaA,EAAWzrH,KAAOqgG,EAE1C2oB,EAAiBplI,KAAKqlI,eAAgBF,GAEvC,YAAwB9kI,IAAnB+kI,GAEGA,EAAemB,aAAc1B,IAI9B,O,2BAKR,WAKC,IAHA,IAAMuB,EAAUpmI,KAAK+lI,SAGXj4H,EAFE9N,KAAKgmI,gBAEQ,EAAGl4H,GAAK,IAAMA,EAEtCs4H,EAASt4H,GAAIsrC,OAId,OAAOp5C,O,oBAKR,SAAQojI,GAEPA,GAAapjI,KAAKsiH,UAYlB,IAVA,IAAM8jB,EAAUpmI,KAAK+lI,SACpBkC,EAAWjoI,KAAKgmI,gBAEhB/sF,EAAOj5C,KAAKi5C,MAAQmqF,EACpBC,EAAgBj1H,KAAKohB,KAAM4zG,GAE3BlK,EAAYl5H,KAAK2kI,YAAc,EAItB72H,EAAI,EAAGA,IAAMm6H,IAAan6H,EAAI,CAExBs4H,EAASt4H,GAEjBo6H,QAASjvF,EAAMmqF,EAAWC,EAAenK,GASjD,IAHA,IAAM8B,EAAWh7H,KAAK46H,UACrBwE,EAAYp/H,KAAKimI,iBAERn4H,EAAI,EAAGA,IAAMsxH,IAActxH,EAEpCktH,EAAUltH,GAAI3N,MAAO+4H,GAItB,OAAOl5H,O,qBAKR,SAASmoI,GAERnoI,KAAKi5C,KAAO,EACZ,IAAM,IAAInrC,EAAI,EAAGA,EAAI9N,KAAK+lI,SAAS/3H,OAAQF,IAE1C9N,KAAK+lI,SAAUj4H,GAAImrC,KAAO,EAI3B,OAAOj5C,KAAK2hB,OAAQwmH,K,qBAKrB,WAEC,OAAOnoI,KAAKmjI,Q,yBAKb,SAAa1mB,GAEZ,IAAM2pB,EAAUpmI,KAAK+lI,SACpBZ,EAAW1oB,EAAKrgG,KAChBkqH,EAAgBtmI,KAAKqlI,eACrBD,EAAiBkB,EAAenB,GAEjC,QAAwB9kI,IAAnB+kI,EAA+B,CAQnC,IAFA,IAAMgD,EAAkBhD,EAAeG,aAE7Bz3H,EAAI,EAAGyB,EAAI64H,EAAgBp6H,OAAQF,IAAMyB,IAAMzB,EAAI,CAE5D,IAAMg1H,EAASsF,EAAiBt6H,GAEhC9N,KAAK6hI,kBAAmBiB,GAExB,IAAM2D,EAAa3D,EAAO/B,YACzByF,EAAqBJ,EAASA,EAAQp4H,OAAS,GAEhD80H,EAAO/B,YAAc,KACrB+B,EAAO9B,kBAAoB,KAE3BwF,EAAmBzF,YAAc0F,EACjCL,EAASK,GAAeD,EACxBJ,EAAQt5D,MAER9sE,KAAK6mI,iCAAkC/D,UAIjCwD,EAAenB,M,yBAOxB,SAAanI,GAEZ,IAAM6H,EAAW7H,EAAK5gH,KACrBkqH,EAAgBtmI,KAAKqlI,eAEtB,IAAM,IAAMF,KAAYmB,EAAgB,CAEvC,IACCxD,EADoBwD,EAAenB,GAAWoB,aACvB1B,QAERxkI,IAAXyiI,IAEJ9iI,KAAK6hI,kBAAmBiB,GACxB9iI,KAAKqoI,sBAAuBvF,IAM9B,IACCsE,EADsBpnI,KAAK+kI,uBACKF,GAEjC,QAAuBxkI,IAAlB+mI,EAEJ,IAAM,IAAMjiB,KAAaiiB,EAAgB,CAExC,IAAMxP,EAAUwP,EAAejiB,GAC/ByS,EAAQgO,uBACR5lI,KAAK8mI,uBAAwBlP,M,2BAShC,SAAenb,EAAMmrB,GAEpB,IAAM9E,EAAS9iI,KAAK+nI,eAAgBtrB,EAAMmrB,GAE1B,OAAX9E,IAEJ9iI,KAAK6hI,kBAAmBiB,GACxB9iI,KAAKqoI,sBAAuBvF,Q,GA5uBF91H,IAovB7By3H,GAAenvH,UAAUmyH,iCAAmC,IAAIvtH,aAAc,G,IAExEouH,G,WAEL,WAAa9oI,GAAQ,oBAEE,kBAAVA,IAEX4T,QAAQC,KAAM,sDACd7T,EAAQU,UAAW,IAIpBF,KAAKR,MAAQA,E,yCAId,WAEC,OAAO,IAAI8oI,OAA8BjoI,IAArBL,KAAKR,MAAMkhB,MAAsB1gB,KAAKR,MAAQQ,KAAKR,MAAMkhB,a,KAMzE6nH,G,kDAEL,WAAa36H,EAAOo/B,GAA+B,MAAvBie,EAAuB,uDAAJ,EAAI,4BAElD,cAAOr9C,EAAOo/B,IAETie,iBAAmBA,EAJ0B,E,wCAQnD,SAAM/tC,GAML,OAJA,4DAAYA,GAEZld,KAAKirD,iBAAmB/tC,EAAO+tC,iBAExBjrD,O,mBAIR,SAAOse,GAEN,IAAMy6E,EAAK,6DAAaz6E,GAIxB,OAFAy6E,EAAG9tC,iBAAmBjrD,KAAKirD,iBAEpB8tC,I,oBAIR,SAAQz6E,GAEP,IAAMo+E,EAAO,8DAAcp+E,GAK3B,OAHAo+E,EAAK9vC,8BAA+B,EACpC8vC,EAAKzxC,iBAAmBjrD,KAAKirD,iBAEtByxC,M,GArCgC9D,IA2CzC2vC,GAA2BjzH,UAAUs3C,8BAA+B,E,IAE9D47E,G,WAEL,WAAanuH,EAAQpN,EAAM25B,EAAUwT,EAAav5B,GAAQ,oBAEzD7gB,KAAKqa,OAASA,EACdra,KAAKiN,KAAOA,EACZjN,KAAK4mC,SAAWA,EAChB5mC,KAAKo6C,YAAcA,EACnBp6C,KAAK6gB,MAAQA,EAEb7gB,KAAK6c,QAAU,E,6CAIhB,SAAiBrd,IAED,IAAVA,GAAiBQ,KAAK6c,Y,uBAI5B,SAAWxC,GAIV,OAFAra,KAAKqa,OAASA,EAEPra,O,qBAIR,SAASiN,EAAMmtC,GAKd,OAHAp6C,KAAKiN,KAAOA,EACZjN,KAAKo6C,YAAcA,EAEZp6C,O,yBAIR,SAAa4mC,GAIZ,OAFA5mC,KAAK4mC,SAAWA,EAET5mC,O,sBAIR,SAAU6gB,GAIT,OAFA7gB,KAAK6gB,MAAQA,EAEN7gB,S,KAMTwoI,GAAkBlzH,UAAU20B,qBAAsB,E,IAE5Cw+F,G,WAEL,WAAal7G,EAAQC,GAAsC,IAA3ByG,EAA2B,uDAApB,EAAGC,EAAiB,uDAAX3a,IAAW,oBAE1DvZ,KAAKytB,IAAM,IAAIH,GAAKC,EAAQC,GAG5BxtB,KAAKi0B,KAAOA,EACZj0B,KAAKk0B,IAAMA,EACXl0B,KAAKymB,OAAS,KACdzmB,KAAKi1B,OAAS,IAAIH,GAElB90B,KAAK20D,OAAS,CACbhmB,KAAM,GACNivD,KAAM,CAAEE,UAAW,GACnBlD,IAAK,GACLkE,OAAQ,CAAEhB,UAAW,GACrB3D,OAAQ,I,uCAKV,SAAK5sE,EAAQC,GAIZxtB,KAAKytB,IAAIta,IAAKoa,EAAQC,K,2BAIvB,SAAek7G,EAAQjiH,GAEjBA,GAAUA,EAAO4tB,qBAErBr0C,KAAKytB,IAAIF,OAAOiK,sBAAuB/Q,EAAOK,aAC9C9mB,KAAKytB,IAAID,UAAUra,IAAKu1H,EAAOh5H,EAAGg5H,EAAO/4H,EAAG,IAAMg5H,UAAWliH,GAASkB,IAAK3nB,KAAKytB,IAAIF,QAAS5Y,YAC7F3U,KAAKymB,OAASA,GAEHA,GAAUA,EAAOurC,sBAE5BhyD,KAAKytB,IAAIF,OAAOpa,IAAKu1H,EAAOh5H,EAAGg5H,EAAO/4H,GAAK8W,EAAOwN,KAAOxN,EAAOyN,MAAUzN,EAAOwN,KAAOxN,EAAOyN,MAAQy0G,UAAWliH,GAClHzmB,KAAKytB,IAAID,UAAUra,IAAK,EAAG,GAAK,GAAI2c,mBAAoBrJ,EAAOK,aAC/D9mB,KAAKymB,OAASA,GAIdrT,QAAQ3T,MAAO,6CAA+CgnB,EAAOxZ,Q,6BAMvE,SAAiBoc,GAA4C,IAApCoR,IAAoC,yDAAlB0U,EAAkB,uDAAL,GAMvD,OAJAy5F,GAAiBv/G,EAAQrpB,KAAMmvC,EAAY1U,GAE3C0U,EAAWqrB,KAAMquE,IAEV15F,I,8BAIR,SAAkB4Y,GAEjB,IAF8D,IAApCttB,IAAoC,yDAAlB0U,EAAkB,uDAAL,GAE/CrhC,EAAI,EAAGC,EAAIg6C,EAAQ/5C,OAAQF,EAAIC,EAAGD,IAE3C86H,GAAiB7gF,EAASj6C,GAAK9N,KAAMmvC,EAAY1U,GAMlD,OAFA0U,EAAWqrB,KAAMquE,IAEV15F,M,KAMT,SAAS05F,GAASx2H,EAAGC,GAEpB,OAAOD,EAAEilB,SAAWhlB,EAAEglB,SAIvB,SAASsxG,GAAiBv/G,EAAQ6lB,EAAWC,EAAY1U,GAQxD,GANKpR,EAAO4L,OAAOta,KAAMu0B,EAAUja,SAElC5L,EAAO4xE,QAAS/rD,EAAWC,IAIT,IAAd1U,EAIJ,IAFA,IAAMvQ,EAAWb,EAAOa,SAEdpc,EAAI,EAAGC,EAAImc,EAASlc,OAAQF,EAAIC,EAAGD,IAE5C86H,GAAiB1+G,EAAUpc,GAAKohC,EAAWC,GAAY,G,IAepD25F,G,WAEL,aAA8C,IAAjC/gH,EAAiC,uDAAxB,EAAGC,EAAqB,uDAAf,EAAG7O,EAAY,uDAAJ,EAMzC,OAN6C,oBAE7CnZ,KAAK+nB,OAASA,EACd/nB,KAAKgoB,IAAMA,EACXhoB,KAAKmZ,MAAQA,EAENnZ,K,uCAIR,SAAK+nB,EAAQC,EAAK7O,GAMjB,OAJAnZ,KAAK+nB,OAASA,EACd/nB,KAAKgoB,IAAMA,EACXhoB,KAAKmZ,MAAQA,EAENnZ,O,kBAIR,SAAM+oI,GAML,OAJA/oI,KAAK+nB,OAASghH,EAAMhhH,OACpB/nB,KAAKgoB,IAAM+gH,EAAM/gH,IACjBhoB,KAAKmZ,MAAQ4vH,EAAM5vH,MAEZnZ,O,sBAKR,WAEC,IAAMgpI,EAAM,KAGZ,OAFAhpI,KAAKgoB,IAAM5Z,KAAKiB,IAAK25H,EAAK56H,KAAKgB,IAAKhB,KAAKC,GAAK26H,EAAKhpI,KAAKgoB,MAEjDhoB,O,4BAIR,SAAgB0T,GAEf,OAAO1T,KAAKipI,uBAAwBv1H,EAAEhE,EAAGgE,EAAE/D,EAAG+D,EAAE+K,K,oCAIjD,SAAwB/O,EAAGC,EAAG8O,GAgB7B,OAdAze,KAAK+nB,OAAS3Z,KAAKiG,KAAM3E,EAAIA,EAAIC,EAAIA,EAAI8O,EAAIA,GAExB,IAAhBze,KAAK+nB,QAET/nB,KAAKmZ,MAAQ,EACbnZ,KAAKgoB,IAAM,IAIXhoB,KAAKmZ,MAAQ/K,KAAKmG,MAAO7E,EAAG+O,GAC5Bze,KAAKgoB,IAAM5Z,KAAKsQ,KAAMvP,GAAOQ,EAAI3P,KAAK+nB,QAAU,EAAG,KAI7C/nB,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,aAAcwJ,KAAMjd,U,KAUhCkpI,G,WAEL,aAA4C,IAA/BnhH,EAA+B,uDAAtB,EAAG5O,EAAmB,uDAAX,EAAGxJ,EAAQ,uDAAJ,EAMvC,OAN2C,oBAE3C3P,KAAK+nB,OAASA,EACd/nB,KAAKmZ,MAAQA,EACbnZ,KAAK2P,EAAIA,EAEF3P,K,uCAIR,SAAK+nB,EAAQ5O,EAAOxJ,GAMnB,OAJA3P,KAAK+nB,OAASA,EACd/nB,KAAKmZ,MAAQA,EACbnZ,KAAK2P,EAAIA,EAEF3P,O,kBAIR,SAAM+oI,GAML,OAJA/oI,KAAK+nB,OAASghH,EAAMhhH,OACpB/nB,KAAKmZ,MAAQ4vH,EAAM5vH,MACnBnZ,KAAK2P,EAAIo5H,EAAMp5H,EAER3P,O,4BAIR,SAAgB0T,GAEf,OAAO1T,KAAKipI,uBAAwBv1H,EAAEhE,EAAGgE,EAAE/D,EAAG+D,EAAE+K,K,oCAIjD,SAAwB/O,EAAGC,EAAG8O,GAM7B,OAJAze,KAAK+nB,OAAS3Z,KAAKiG,KAAM3E,EAAIA,EAAI+O,EAAIA,GACrCze,KAAKmZ,MAAQ/K,KAAKmG,MAAO7E,EAAG+O,GAC5Bze,KAAK2P,EAAIA,EAEF3P,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,aAAcwJ,KAAMjd,U,KAMhCmpI,GAA0B,IAAI71H,GAE9B81H,G,WAEL,aAAwG,IAA3Fh6H,EAA2F,uDAArF,IAAIkE,GAAWiG,IAAYA,KAAYlK,EAA8C,uDAAxC,IAAIiE,IAAWiG,KAAYA,KAAa,oBAEvGvZ,KAAKoP,IAAMA,EACXpP,KAAKqP,IAAMA,E,uCAIZ,SAAKD,EAAKC,GAKT,OAHArP,KAAKoP,IAAI6N,KAAM7N,GACfpP,KAAKqP,IAAI4N,KAAM5N,GAERrP,O,2BAIR,SAAe8oB,GAEd9oB,KAAK+oB,YAEL,IAAM,IAAIjb,EAAI,EAAGgT,EAAKgI,EAAO9a,OAAQF,EAAIgT,EAAIhT,IAE5C9N,KAAKgpB,cAAeF,EAAQhb,IAI7B,OAAO9N,O,kCAIR,SAAsBmV,EAAQ8T,GAE7B,IAAMC,EAAWigH,GAAUlsH,KAAMgM,GAAOnV,eAAgB,IAIxD,OAHA9T,KAAKoP,IAAI6N,KAAM9H,GAASwS,IAAKuB,GAC7BlpB,KAAKqP,IAAI4N,KAAM9H,GAASiU,IAAKF,GAEtBlpB,O,mBAIR,WAEC,OAAO,IAAIA,KAAKyT,aAAcwJ,KAAMjd,Q,kBAIrC,SAAMupB,GAKL,OAHAvpB,KAAKoP,IAAI6N,KAAMsM,EAAIna,KACnBpP,KAAKqP,IAAI4N,KAAMsM,EAAIla,KAEZrP,O,uBAIR,WAKC,OAHAA,KAAKoP,IAAIM,EAAI1P,KAAKoP,IAAIO,EAAM4J,IAC5BvZ,KAAKqP,IAAIK,EAAI1P,KAAKqP,IAAIM,GAAM4J,IAErBvZ,O,qBAIR,WAIC,OAASA,KAAKqP,IAAIK,EAAI1P,KAAKoP,IAAIM,GAAS1P,KAAKqP,IAAIM,EAAI3P,KAAKoP,IAAIO,I,uBAI/D,SAAWhC,GAEV,OAAO3N,KAAKwpB,UAAY7b,EAAOwF,IAAK,EAAG,GAAMxF,EAAOiG,WAAY5T,KAAKoP,IAAKpP,KAAKqP,KAAMyE,eAAgB,M,qBAItG,SAASnG,GAER,OAAO3N,KAAKwpB,UAAY7b,EAAOwF,IAAK,EAAG,GAAMxF,EAAOkG,WAAY7T,KAAKqP,IAAKrP,KAAKoP,O,2BAIhF,SAAeqa,GAKd,OAHAzpB,KAAKoP,IAAIA,IAAKqa,GACdzpB,KAAKqP,IAAIA,IAAKoa,GAEPzpB,O,4BAIR,SAAgB0pB,GAKf,OAHA1pB,KAAKoP,IAAIuY,IAAK+B,GACd1pB,KAAKqP,IAAI+Z,IAAKM,GAEP1pB,O,4BAIR,SAAgBuT,GAKf,OAHAvT,KAAKoP,IAAIua,WAAapW,GACtBvT,KAAKqP,IAAIsa,UAAWpW,GAEbvT,O,2BAIR,SAAeypB,GAEd,QAAOA,EAAM/Z,EAAI1P,KAAKoP,IAAIM,GAAK+Z,EAAM/Z,EAAI1P,KAAKqP,IAAIK,GACjD+Z,EAAM9Z,EAAI3P,KAAKoP,IAAIO,GAAK8Z,EAAM9Z,EAAI3P,KAAKqP,IAAIM,K,yBAI7C,SAAa4Z,GAEZ,OAAOvpB,KAAKoP,IAAIM,GAAK6Z,EAAIna,IAAIM,GAAK6Z,EAAIla,IAAIK,GAAK1P,KAAKqP,IAAIK,GACvD1P,KAAKoP,IAAIO,GAAK4Z,EAAIna,IAAIO,GAAK4Z,EAAIla,IAAIM,GAAK3P,KAAKqP,IAAIM,I,0BAInD,SAAc8Z,EAAO9b,GAKpB,OAAOA,EAAOwF,KACXsW,EAAM/Z,EAAI1P,KAAKoP,IAAIM,IAAQ1P,KAAKqP,IAAIK,EAAI1P,KAAKoP,IAAIM,IACjD+Z,EAAM9Z,EAAI3P,KAAKoP,IAAIO,IAAQ3P,KAAKqP,IAAIM,EAAI3P,KAAKoP,IAAIO,M,2BAKrD,SAAe4Z,GAId,QAAOA,EAAIla,IAAIK,EAAI1P,KAAKoP,IAAIM,GAAK6Z,EAAIna,IAAIM,EAAI1P,KAAKqP,IAAIK,GACrD6Z,EAAIla,IAAIM,EAAI3P,KAAKoP,IAAIO,GAAK4Z,EAAIna,IAAIO,EAAI3P,KAAKqP,IAAIM,K,wBAIjD,SAAY8Z,EAAO9b,GAElB,OAAOA,EAAOsP,KAAMwM,GAAQta,MAAOnP,KAAKoP,IAAKpP,KAAKqP,O,6BAInD,SAAiBoa,GAGhB,OADqB0/G,GAAUlsH,KAAMwM,GAAQta,MAAOnP,KAAKoP,IAAKpP,KAAKqP,KAC/CsY,IAAK8B,GAAQzb,W,uBAIlC,SAAWub,GAKV,OAHAvpB,KAAKoP,IAAIC,IAAKka,EAAIna,KAClBpP,KAAKqP,IAAID,IAAKma,EAAIla,KAEXrP,O,mBAIR,SAAOupB,GAKN,OAHAvpB,KAAKoP,IAAIA,IAAKma,EAAIna,KAClBpP,KAAKqP,IAAIA,IAAKka,EAAIla,KAEXrP,O,uBAIR,SAAW+U,GAKV,OAHA/U,KAAKoP,IAAIga,IAAKrU,GACd/U,KAAKqP,IAAI+Z,IAAKrU,GAEP/U,O,oBAIR,SAAQupB,GAEP,OAAOA,EAAIna,IAAImc,OAAQvrB,KAAKoP,MAASma,EAAIla,IAAIkc,OAAQvrB,KAAKqP,S,KAM5D+5H,GAAK9zH,UAAU+zH,QAAS,EAExB,IAAMC,GAAwB,IAAI3jH,GAC5B4jH,GAA0B,IAAI5jH,GAE9B6jH,G,WAEL,aAA0D,IAA7CtgG,EAA6C,uDAArC,IAAIvjB,GAAWixB,EAAsB,uDAAhB,IAAIjxB,GAAY,oBAEzD3lB,KAAKkpC,MAAQA,EACblpC,KAAK42C,IAAMA,E,uCAIZ,SAAK1N,EAAO0N,GAKX,OAHA52C,KAAKkpC,MAAMjsB,KAAMisB,GACjBlpC,KAAK42C,IAAI35B,KAAM25B,GAER52C,O,kBAIR,SAAMy2C,GAKL,OAHAz2C,KAAKkpC,MAAMjsB,KAAMw5B,EAAKvN,OACtBlpC,KAAK42C,IAAI35B,KAAMw5B,EAAKG,KAEb52C,O,uBAIR,SAAW2N,GAEV,OAAOA,EAAOiG,WAAY5T,KAAKkpC,MAAOlpC,KAAK42C,KAAM9iC,eAAgB,M,mBAIlE,SAAOnG,GAEN,OAAOA,EAAOkG,WAAY7T,KAAK42C,IAAK52C,KAAKkpC,S,wBAI1C,WAEC,OAAOlpC,KAAKkpC,MAAM10B,kBAAmBxU,KAAK42C,O,sBAI3C,WAEC,OAAO52C,KAAKkpC,MAAM3c,WAAYvsB,KAAK42C,O,gBAIpC,SAAIhnC,EAAGjC,GAEN,OAAO3N,KAAKgmC,MAAOr4B,GAASmG,eAAgBlE,GAAIwZ,IAAKppB,KAAKkpC,S,0CAI3D,SAA8Bzf,EAAOggH,GAEpCH,GAAQz1H,WAAY4V,EAAOzpB,KAAKkpC,OAChCqgG,GAAU11H,WAAY7T,KAAK42C,IAAK52C,KAAKkpC,OAErC,IAAMwgG,EAAYH,GAAUhnH,IAAKgnH,IAG7B35H,EAFoB25H,GAAUhnH,IAAK+mH,IAEbI,EAQ1B,OANKD,IAEJ75H,EAAIT,GAAOS,EAAG,EAAG,IAIXA,I,iCAIR,SAAqB6Z,EAAOggH,EAAa97H,GAExC,IAAMiC,EAAI5P,KAAK2pI,6BAA8BlgH,EAAOggH,GAEpD,OAAOzpI,KAAKgmC,MAAOr4B,GAASmG,eAAgBlE,GAAIwZ,IAAKppB,KAAKkpC,S,0BAI3D,SAAc9vB,GAKb,OAHApZ,KAAKkpC,MAAMxiB,aAActN,GACzBpZ,KAAK42C,IAAIlwB,aAActN,GAEhBpZ,O,oBAIR,SAAQy2C,GAEP,OAAOA,EAAKvN,MAAM3d,OAAQvrB,KAAKkpC,QAAWuN,EAAKG,IAAIrrB,OAAQvrB,KAAK42C,O,mBAIjE,WAEC,OAAO,IAAI52C,KAAKyT,aAAcwJ,KAAMjd,U,KAMhC4pI,G,kDAEL,WAAazvG,GAAW,kCAEvB,gBAEKA,SAAWA,EAChB,EAAKmb,OAAS,aAEd,EAAKy9C,cAAe,EACpB,EAAKC,YAAa,EAClB,EAAKE,WAAY,EACjB,EAAKD,QAAS,EAEd,EAAKE,cAAgB,KACrB,EAAKC,YAAc,KACnB,EAAKE,WAAa,KAClB,EAAKD,QAAU,KAEf,EAAKxyE,MAAQ,EAjBU,E,UAFWkV,IAyBpC6zG,GAAsBt0H,UAAUg/E,yBAA0B,EAE1D,IAAMu1C,GAA0B,IAAIlkH,GAE9BmkH,G,kDAEL,WAAa37D,EAAOluC,GAAQ,2BAE3B,gBACKkuC,MAAQA,EACb,EAAKA,MAAM91C,oBAEX,EAAKjf,OAAS+0D,EAAMrnD,YACpB,EAAKtK,kBAAmB,EAExB,EAAKyjB,MAAQA,EAYb,IAVA,IAAMpW,EAAW,IAAI8e,GAEf4B,EAAY,CACjB,EAAG,EAAG,EAAI,EAAG,EAAG,EAChB,EAAG,EAAG,EAAI,EAAG,EAAG,EAChB,EAAG,EAAG,GAAK,EAAG,EAAG,EACjB,EAAG,EAAG,EAAI,EAAG,EAAG,EAChB,EAAG,EAAG,EAAI,GAAK,EAAG,GAGTz8B,EAAI,EAAG8d,EAAI,EAAW9d,EAAJ,GAAWA,IAAM8d,IAAO,CAEnD,IAAME,EAAOhe,EAFc,GAEJM,KAAKC,GAAK,EAC3B0d,EAAOH,EAHc,GAGJxd,KAAKC,GAAK,EAEjCk8B,EAAUj9B,KACTc,KAAKqE,IAAKqZ,GAAM1d,KAAKsE,IAAKoZ,GAAM,EAChC1d,KAAKqE,IAAKsZ,GAAM3d,KAAKsE,IAAKqZ,GAAM,GAKlClC,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBqC,EAAW,IAE1E,IAAMpQ,EAAW,IAAI+wC,GAAmB,CAAE3tC,KAAK,EAAOmC,YAAY,IAnCvC,OAqC3B,EAAKqqG,KAAO,IAAIvrC,GAAc30E,EAAUsQ,GACxC,EAAK/Q,IAAK,EAAK2gH,MAEf,EAAKpoH,SAxCsB,E,2CA4C5B,WAEC3hB,KAAK+pI,KAAKlgH,SAASpJ,UACnBzgB,KAAK+pI,KAAK5vG,SAAS1Z,Y,oBAIpB,WAECzgB,KAAKmuE,MAAM91C,oBAEX,IAAM2xG,EAAahqI,KAAKmuE,MAAM72C,SAAWt3B,KAAKmuE,MAAM72C,SAAW,IACzD2yG,EAAYD,EAAa57H,KAAKwlC,IAAK5zC,KAAKmuE,MAAM75D,OAEpDtU,KAAK+pI,KAAK/2G,MAAM7f,IAAK82H,EAAWA,EAAWD,GAE3CH,GAAUryG,sBAAuBx3B,KAAKmuE,MAAMxgE,OAAOmZ,aAEnD9mB,KAAK+pI,KAAKpyG,OAAQkyG,SAEExpI,IAAfL,KAAKigC,MAETjgC,KAAK+pI,KAAK5vG,SAAS8F,MAAM9sB,IAAKnT,KAAKigC,OAInCjgC,KAAK+pI,KAAK5vG,SAAS8F,MAAMhjB,KAAMjd,KAAKmuE,MAAMluC,W,GAxEflK,IAgFxBm0G,GAA0B,IAAIvkH,GAC9BwkH,GAA4B,IAAIp6G,GAChCq6G,GAAgC,IAAIr6G,GAGpCs6G,G,kDAEL,WAAahhH,GAAS,0BAYrB,IAVA,IAAMuiD,EAAQ0+D,GAAajhH,GAErBQ,EAAW,IAAI8e,GAEf2H,EAAW,GACXpJ,EAAS,GAEThB,EAAS,IAAI3B,GAAO,EAAG,EAAG,GAC1B4B,EAAS,IAAI5B,GAAO,EAAG,EAAG,GAEtBz2B,EAAI,EAAGA,EAAI89D,EAAM59D,OAAQF,IAAO,CAEzC,IAAM2uF,EAAO7wB,EAAO99D,GAEf2uF,EAAKzmE,QAAUymE,EAAKzmE,OAAOkmE,SAE/B5rD,EAAShjC,KAAM,EAAG,EAAG,GACrBgjC,EAAShjC,KAAM,EAAG,EAAG,GACrB45B,EAAO55B,KAAM44B,EAAOvtB,EAAGutB,EAAOnuB,EAAGmuB,EAAO5zB,GACxC40B,EAAO55B,KAAM64B,EAAOxtB,EAAGwtB,EAAOpuB,EAAGouB,EAAO7zB,IAM1CuX,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACzEzmB,EAASkgB,aAAc,QAAS,IAAI7B,GAAwBhB,EAAQ,IAEpE,IAAM/M,EAAW,IAAI+wC,GAAmB,CAAExtC,cAAc,EAAMU,WAAW,EAAOC,YAAY,EAAOqB,YAAY,EAAO9B,aAAa,IA9B9G,OAgCrB,cAAO/T,EAAUsQ,IAEZltB,KAAO,iBACZ,EAAKs9H,kBAAmB,EAExB,EAAKvN,KAAO3zG,EACZ,EAAKuiD,MAAQA,EAEb,EAAKxyD,OAASiQ,EAAOvC,YACrB,EAAKtK,kBAAmB,EAzCH,E,qDA6CtB,SAAmB4b,GAElB,IAAMwzC,EAAQ5rE,KAAK4rE,MAEb/hD,EAAW7pB,KAAK6pB,SAChBkJ,EAAWlJ,EAASgiB,aAAc,YAExCu+F,GAAgBntH,KAAMjd,KAAKg9H,KAAKl2G,aAAcrO,SAE9C,IAAM,IAAI3K,EAAI,EAAG8d,EAAI,EAAG9d,EAAI89D,EAAM59D,OAAQF,IAAO,CAEhD,IAAM2uF,EAAO7wB,EAAO99D,GAEf2uF,EAAKzmE,QAAUymE,EAAKzmE,OAAOkmE,SAE/BiuC,GAAY3zH,iBAAkB4zH,GAAiB3tC,EAAK31E,aACpDojH,GAAU1yG,sBAAuB2yG,IACjCp3G,EAASsU,OAAQzb,EAAGs+G,GAAUx6H,EAAGw6H,GAAUv6H,EAAGu6H,GAAUzrH,GAExD0rH,GAAY3zH,iBAAkB4zH,GAAiB3tC,EAAKzmE,OAAOlP,aAC3DojH,GAAU1yG,sBAAuB2yG,IACjCp3G,EAASsU,OAAQzb,EAAI,EAAGs+G,GAAUx6H,EAAGw6H,GAAUv6H,EAAGu6H,GAAUzrH,GAE5DmN,GAAK,GAMP/B,EAASgiB,aAAc,YAAazC,aAAc,EAElD,yEAAyBhR,O,GA9EEomE,IAqF7B,SAAS8rC,GAAajhH,GAErB,IAAMmhH,EAAW,GAEZnhH,GAAUA,EAAO6yE,QAErBsuC,EAASl9H,KAAM+b,GAIhB,IAAM,IAAIvb,EAAI,EAAGA,EAAIub,EAAOa,SAASlc,OAAQF,IAE5C08H,EAASl9H,KAAKnN,MAAOqqI,EAAUF,GAAajhH,EAAOa,SAAUpc,KAI9D,OAAO08H,E,IAIFC,G,kDAEL,WAAat8D,EAAOu8D,EAAYzqG,GAAQ,0BAEvC,IAAMpW,EAAW,IAAI2tF,GAAgBkzB,EAAY,EAAG,GAC9CvwG,EAAW,IAAImM,GAAmB,CAAE5C,WAAW,EAAMnG,KAAK,EAAOmC,YAAY,IAH5C,OAKvC,cAAO7V,EAAUsQ,IAEZg0C,MAAQA,EACb,EAAKA,MAAM91C,oBAEX,EAAK4H,MAAQA,EAEb,EAAKhzB,KAAO,mBAEZ,EAAKmM,OAAS,EAAK+0D,MAAMrnD,YACzB,EAAKtK,kBAAmB,EAExB,EAAKmF,SAjBkC,E,2CA6CxC,WAEC3hB,KAAK6pB,SAASpJ,UACdzgB,KAAKm6B,SAAS1Z,Y,oBAIf,gBAEqBpgB,IAAfL,KAAKigC,MAETjgC,KAAKm6B,SAAS8F,MAAM9sB,IAAKnT,KAAKigC,OAI9BjgC,KAAKm6B,SAAS8F,MAAMhjB,KAAMjd,KAAKmuE,MAAMluC,W,GA9DT0O,IAqFzBg8F,GAA0B,IAAIhlH,GAC9BilH,GAAwB,IAAIrmG,GAC5BsmG,GAAwB,IAAItmG,GAE5BumG,G,kDAEL,WAAa38D,EAAOllD,EAAMgX,GAAQ,2BAEjC,gBACKkuC,MAAQA,EACb,EAAKA,MAAM91C,oBAEX,EAAKjf,OAAS+0D,EAAMrnD,YACpB,EAAKtK,kBAAmB,EAExB,EAAKyjB,MAAQA,EAEb,IAAMpW,EAAW,IAAI8sF,GAAoB1tF,GACzCY,EAASkhH,QAAmB,GAAV38H,KAAKC,IAEvB,EAAK8rB,SAAW,IAAImM,GAAmB,CAAE5C,WAAW,EAAMnG,KAAK,EAAOmC,YAAY,SAC9Dr/B,IAAf,EAAK4/B,QAAsB,EAAK9F,SAASuD,cAAe,GAE7D,IAAM3K,EAAWlJ,EAASgiB,aAAc,YAClC3E,EAAS,IAAIhtB,aAA+B,EAAjB6Y,EAASlS,OAlBT,OAoBjCgJ,EAASkgB,aAAc,QAAS,IAAIpD,GAAiBO,EAAQ,IAE7D,EAAK9d,IAAK,IAAIulB,GAAM9kB,EAAU,EAAKsQ,WAEnC,EAAKxY,SAxB4B,E,2CA4BlC,WAEC3hB,KAAKkqB,SAAU,GAAIL,SAASpJ,UAC5BzgB,KAAKkqB,SAAU,GAAIiQ,SAAS1Z,Y,oBAI7B,WAEC,IAAMs1B,EAAO/1C,KAAKkqB,SAAU,GAE5B,QAAoB7pB,IAAfL,KAAKigC,MAETjgC,KAAKm6B,SAAS8F,MAAM9sB,IAAKnT,KAAKigC,WAExB,CAEN,IAAMiH,EAAS6O,EAAKlsB,SAASgiB,aAAc,SAE3C++F,GAAQ3tH,KAAMjd,KAAKmuE,MAAMluC,OACzB4qG,GAAQ5tH,KAAMjd,KAAKmuE,MAAM3nB,aAEzB,IAAM,IAAI14C,EAAI,EAAGC,EAAIm5B,EAAOrmB,MAAO/S,EAAIC,EAAGD,IAAO,CAEhD,IAAMmyB,EAAUnyB,EAAMC,EAAI,EAAQ68H,GAAUC,GAE5C3jG,EAAOG,OAAQv5B,EAAGmyB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,GAI3C40B,EAAOkC,aAAc,EAItB2M,EAAKpe,OAAQgzG,GAAUnzG,sBAAuBx3B,KAAKmuE,MAAMrnD,aAAc+iB,c,GAhErC9T,IAsE9Bi1G,G,kDAEL,aAA+E,MAAlE/hH,EAAkE,uDAA3D,GAAIm7E,EAAuD,uDAA3C,GAAIl+D,EAAuC,uDAA9B,QAAUC,EAAoB,uDAAX,QAAW,oBAE9ED,EAAS,IAAI3B,GAAO2B,GACpBC,EAAS,IAAI5B,GAAO4B,GAQpB,IANA,IAAMhxB,EAASivF,EAAY,EACrB1hF,EAAOuG,EAAOm7E,EACdl7E,EAAWD,EAAO,EAElBqnB,EAAW,GAAIpJ,EAAS,GAEpBp5B,EAAI,EAAG8d,EAAI,EAAG2oD,GAAMrrD,EAAUpb,GAAKs2F,EAAWt2F,IAAMymE,GAAK7xD,EAAO,CAEzE4tB,EAAShjC,MAAQ4b,EAAU,EAAGqrD,EAAGrrD,EAAU,EAAGqrD,GAC9CjkC,EAAShjC,KAAMinE,EAAG,GAAKrrD,EAAUqrD,EAAG,EAAGrrD,GAEvC,IAAM+W,EAAQnyB,IAAMqH,EAAS+wB,EAASC,EAEtClG,EAAM/G,QAASgO,EAAQtb,GAAKA,GAAK,EACjCqU,EAAM/G,QAASgO,EAAQtb,GAAKA,GAAK,EACjCqU,EAAM/G,QAASgO,EAAQtb,GAAKA,GAAK,EACjCqU,EAAM/G,QAASgO,EAAQtb,GAAKA,GAAK,EAIlC,IAAM/B,EAAW,IAAI8e,GACrB9e,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACzEzmB,EAASkgB,aAAc,QAAS,IAAI7B,GAAwBhB,EAAQ,IAEpE,IAAM/M,EAAW,IAAI+wC,GAAmB,CAAExtC,cAAc,EAAMgC,YAAY,IA7BI,OA+B9E,cAAO7V,EAAUsQ,IAEZltB,KAAO,aAjCkE,E,UAFvDuxF,IAyCnBysC,G,kDAEL,aAA4G,MAA/FljH,EAA+F,uDAAtF,GAAImjH,EAAkF,uDAAxE,GAAIC,EAAoE,uDAA1D,EAAG/mC,EAAuD,uDAA3C,GAAIl+D,EAAuC,uDAA9B,QAAUC,EAAoB,uDAAX,QAAW,oBAE3GD,EAAS,IAAI3B,GAAO2B,GACpBC,EAAS,IAAI5B,GAAO4B,GAOpB,IALA,IAAMmK,EAAW,GACXpJ,EAAS,GAILp5B,EAAI,EAAGA,GAAKo9H,EAASp9H,IAAO,CAErC,IAAM4F,EAAM5F,EAAIo9H,GAAwB,EAAV98H,KAAKC,IAE7BqB,EAAItB,KAAKsE,IAAKgB,GAAMqU,EACpBtJ,EAAIrQ,KAAKqE,IAAKiB,GAAMqU,EAE1BuoB,EAAShjC,KAAM,EAAG,EAAG,GACrBgjC,EAAShjC,KAAMoC,EAAG,EAAG+O,GAErB,IAAMwhB,EAAc,EAAJnyB,EAAUo4B,EAASC,EAEnCe,EAAO55B,KAAM2yB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,GACrC40B,EAAO55B,KAAM2yB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,GAMtC,IAAM,IAAIxE,EAAI,EAAGA,GAAKq9H,EAASr9H,IAM9B,IAJA,IAAMmyB,EAAc,EAAJnyB,EAAUo4B,EAASC,EAE7BxtB,EAAIoP,EAAWA,EAASojH,EAAUr9H,EAE9B8d,EAAI,EAAGA,EAAIw4E,EAAWx4E,IAAO,CAItC,IAAIlY,EAAMkY,EAAIw4E,GAA0B,EAAVh2F,KAAKC,IAE/BqB,EAAItB,KAAKsE,IAAKgB,GAAMiF,EACpB8F,EAAIrQ,KAAKqE,IAAKiB,GAAMiF,EAExB23B,EAAShjC,KAAMoC,EAAG,EAAG+O,GACrByoB,EAAO55B,KAAM2yB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,GAIrCoB,GAAQkY,EAAI,GAAMw4E,GAA0B,EAAVh2F,KAAKC,IAEvCqB,EAAItB,KAAKsE,IAAKgB,GAAMiF,EACpB8F,EAAIrQ,KAAKqE,IAAKiB,GAAMiF,EAEpB23B,EAAShjC,KAAMoC,EAAG,EAAG+O,GACrByoB,EAAO55B,KAAM2yB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,GAMvC,IAAMuX,EAAW,IAAI8e,GACrB9e,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACzEzmB,EAASkgB,aAAc,QAAS,IAAI7B,GAAwBhB,EAAQ,IAEpE,IAAM/M,EAAW,IAAI+wC,GAAmB,CAAExtC,cAAc,EAAMgC,YAAY,IAjEiC,OAmE3G,cAAO7V,EAAUsQ,IAEZltB,KAAO,kBArE+F,E,UAF/EuxF,IA6ExB4sC,GAAoB,IAAIzlH,GACxB0lH,GAAoB,IAAI1lH,GACxB2lH,GAAoB,IAAI3lH,GAExB4lH,G,kDAEL,WAAap9D,EAAOllD,EAAMgX,GAAQ,2BAEjC,gBACKkuC,MAAQA,EACb,EAAKA,MAAM91C,oBAEX,EAAKjf,OAAS+0D,EAAMrnD,YACpB,EAAKtK,kBAAmB,EAExB,EAAKyjB,MAAQA,OAEC5/B,IAAT4oB,IAAqBA,EAAO,GAEjC,IAAIY,EAAW,IAAI8e,GACnB9e,EAASkgB,aAAc,WAAY,IAAI7B,GAAwB,EAC5Djf,EAAMA,EAAM,EACdA,EAAMA,EAAM,EACZA,GAAQA,EAAM,GACZA,GAAQA,EAAM,GACdA,EAAMA,EAAM,GACZ,IAEH,IAAMkR,EAAW,IAAI+wC,GAAmB,CAAE3tC,KAAK,EAAOmC,YAAY,IAtBjC,OAwBjC,EAAK8rG,WAAa,IAAI5tC,GAAM/zE,EAAUsQ,GACtC,EAAK/Q,IAAK,EAAKoiH,aAEf3hH,EAAW,IAAI8e,IACNoB,aAAc,WAAY,IAAI7B,GAAwB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAK,IAErF,EAAKujG,WAAa,IAAI7tC,GAAM/zE,EAAUsQ,GACtC,EAAK/Q,IAAK,EAAKqiH,YAEf,EAAK9pH,SAjC4B,E,2CAqClC,WAEC3hB,KAAKwrI,WAAW3hH,SAASpJ,UACzBzgB,KAAKwrI,WAAWrxG,SAAS1Z,UACzBzgB,KAAKyrI,WAAW5hH,SAASpJ,UACzBzgB,KAAKyrI,WAAWtxG,SAAS1Z,Y,oBAI1B,WAEC2qH,GAAI5zG,sBAAuBx3B,KAAKmuE,MAAMrnD,aACtCukH,GAAI7zG,sBAAuBx3B,KAAKmuE,MAAMxgE,OAAOmZ,aAC7CwkH,GAAIz3H,WAAYw3H,GAAKD,IAErBprI,KAAKwrI,WAAW7zG,OAAQ0zG,SAEJhrI,IAAfL,KAAKigC,OAETjgC,KAAKwrI,WAAWrxG,SAAS8F,MAAM9sB,IAAKnT,KAAKigC,OACzCjgC,KAAKyrI,WAAWtxG,SAAS8F,MAAM9sB,IAAKnT,KAAKigC,SAIzCjgC,KAAKwrI,WAAWrxG,SAAS8F,MAAMhjB,KAAMjd,KAAKmuE,MAAMluC,OAChDjgC,KAAKyrI,WAAWtxG,SAAS8F,MAAMhjB,KAAMjd,KAAKmuE,MAAMluC,QAIjDjgC,KAAKyrI,WAAW9zG,OAAQ0zG,IACxBrrI,KAAKyrI,WAAWz4G,MAAMvU,EAAI6sH,GAAIt9H,a,GArEK+nB,IA2E/B21G,GAAwB,IAAI/lH,GAC5BgmH,GAAwB,IAAI74F,GAS5B84F,G,kDAEL,WAAanlH,GAAS,0BAErB,IAAMoD,EAAW,IAAI8e,GACfxO,EAAW,IAAI+wC,GAAmB,CAAEjrC,MAAO,SAAUvC,cAAc,EAAMgC,YAAY,IAErF4Q,EAAW,GACXpJ,EAAS,GAET2kG,EAAW,GAIXC,EAAe,IAAIvnG,GAAO,UAC1BwnG,EAAY,IAAIxnG,GAAO,UACvBynG,EAAU,IAAIznG,GAAO,OACrB0nG,EAAc,IAAI1nG,GAAO,UACzB2nG,EAAa,IAAI3nG,GAAO,SAiD9B,SAAS4nG,EAAS95H,EAAGC,EAAG2tB,GAEvBmsG,EAAU/5H,EAAG4tB,GACbmsG,EAAU95H,EAAG2tB,GAId,SAASmsG,EAAUr0G,EAAIkI,GAEtBqQ,EAAShjC,KAAM,EAAG,EAAG,GACrB45B,EAAO55B,KAAM2yB,EAAMtnB,EAAGsnB,EAAMloB,EAAGkoB,EAAM3tB,QAEbjS,IAAnBwrI,EAAU9zG,KAEd8zG,EAAU9zG,GAAO,IAIlB8zG,EAAU9zG,GAAKzqB,KAAQgjC,EAAStiC,OAAS,EAAM,GAnF3B,OAoBrBm+H,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GAIrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GAIrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GAIrBK,EAAS,IAAK,KAAMJ,GACpBI,EAAS,IAAK,KAAMJ,GACpBI,EAAS,IAAK,KAAMJ,GACpBI,EAAS,IAAK,KAAMJ,GAIpBI,EAAS,KAAM,KAAMH,GACrBG,EAAS,KAAM,KAAMH,GACrBG,EAAS,KAAM,KAAMH,GAIrBG,EAAS,IAAK,IAAKF,GACnBE,EAAS,IAAK,IAAKD,GAInBC,EAAS,MAAO,MAAOD,GACvBC,EAAS,MAAO,MAAOD,GAEvBC,EAAS,MAAO,MAAOD,GACvBC,EAAS,MAAO,MAAOD,GAwBvBriH,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACzEzmB,EAASkgB,aAAc,QAAS,IAAI7B,GAAwBhB,EAAQ,KAEpE,cAAOrd,EAAUsQ,IAEZltB,KAAO,eAEZ,EAAKwZ,OAASA,EACT,EAAKA,OAAO8sB,wBAAyB,EAAK9sB,OAAO8sB,yBAEtD,EAAKn6B,OAASqN,EAAOK,YACrB,EAAKtK,kBAAmB,EAExB,EAAKqvH,SAAWA,EAEhB,EAAKlqH,SAtGgB,E,0CA0GtB,WAEC,IAAMkI,EAAW7pB,KAAK6pB,SAChBgiH,EAAW7rI,KAAK6rI,SAOtBF,GAAQ9kH,wBAAwB5J,KAAMjd,KAAKymB,OAAOI,yBAIlDwlH,GAAU,IAAKR,EAAUhiH,EAAU8hH,GAAS,EAAG,GAAK,GACpDU,GAAU,IAAKR,EAAUhiH,EAAU8hH,GAAS,EAAG,EAAG,GAIlDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,IAd1B,GAAO,GAcwC,GACzDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,GAf1B,GAAO,GAesC,GACvDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,IAhB1B,EAAO,GAgBsC,GACvDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,GAjB1B,EAAO,GAiBoC,GAIrDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,IArB1B,GAAO,EAqBsC,GACvDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,GAtB1B,GAAO,EAsBoC,GACrDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,IAvB1B,EAAO,EAuBoC,GACrDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,GAxB1B,EAAO,EAwBkC,GAInDU,GAAU,KAAMR,EAAUhiH,EAAU8hH,GAASh4H,GAASqE,KAAW,GACjEq0H,GAAU,KAAMR,EAAUhiH,EAAU8hH,IAAS,GAAW3zH,KAAW,GACnEq0H,GAAU,KAAMR,EAAUhiH,EAAU8hH,GAAS,EAAG3zH,GAAS,GAIzDq0H,GAAU,MAAOR,EAAUhiH,EAAU8hH,IAlC3B,EAkCyC,EAAG,GACtDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,GAnC3B,EAmCuC,EAAG,GACpDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,GAAS,GApC7B,EAoCqC,GACtDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,GAAS,EArC7B,EAqCmC,GAEpDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,IAvC3B,EAuCyC,GAAK,GACxDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,GAxC3B,EAwCuC,GAAK,GACtDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,GAAS,GAzC7B,GAyCuC,GACxDU,GAAU,MAAOR,EAAUhiH,EAAU8hH,GAAS,EA1C7B,GA0CqC,GAEtD9hH,EAASgiB,aAAc,YAAazC,aAAc,I,qBAInD,WAECppC,KAAK6pB,SAASpJ,UACdzgB,KAAKm6B,SAAS1Z,c,GApKW+9E,IA2K3B,SAAS6tC,GAAU5iH,EAAOoiH,EAAUhiH,EAAUpD,EAAQ/W,EAAGC,EAAG8O,GAE3DitH,GAAQv4H,IAAKzD,EAAGC,EAAG8O,GAAIkqH,UAAWliH,GAElC,IAAMqC,EAAS+iH,EAAUpiH,GAEzB,QAAgBppB,IAAXyoB,EAIJ,IAFA,IAAMiK,EAAWlJ,EAASgiB,aAAc,YAE9B/9B,EAAI,EAAGC,EAAI+a,EAAO9a,OAAQF,EAAIC,EAAGD,IAE1CilB,EAASsU,OAAQve,EAAQhb,GAAK49H,GAAQh8H,EAAGg8H,GAAQ/7H,EAAG+7H,GAAQjtH,GAQ/D,IA8LI6tH,GAAeC,GA9LbC,GAAqB,IAAIjkH,GAEzBkkH,G,kDAEL,WAAapjH,GAA2B,MAAnB4W,EAAmB,uDAAX,SAAW,oBAEvC,IAAMqK,EAAU,IAAIvwB,YAAa,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAClGwwB,EAAY,IAAIrwB,aAAc,IAE9B2P,EAAW,IAAI8e,GALkB,OAMvC9e,EAAS2jB,SAAU,IAAI7G,GAAiB2D,EAAS,IACjDzgB,EAASkgB,aAAc,WAAY,IAAIpD,GAAiB4D,EAAW,KAEnE,cAAO1gB,EAAU,IAAIqhD,GAAmB,CAAEjrC,MAAOA,EAAOP,YAAY,MAE/DrW,OAASA,EACd,EAAKpc,KAAO,YAEZ,EAAKuP,kBAAmB,EAExB,EAAKmF,SAhBkC,E,0CAoBxC,SAAQ0H,GAcP,QAZgBhpB,IAAXgpB,GAEJjW,QAAQC,KAAM,4DAIMhT,IAAhBL,KAAKqpB,QAETmjH,GAAKE,cAAe1sI,KAAKqpB,SAIrBmjH,GAAKhjH,UAAV,CAEA,IAAMpa,EAAMo9H,GAAKp9H,IACXC,EAAMm9H,GAAKn9H,IAkBX0jB,EAAW/yB,KAAK6pB,SAAS+e,WAAW7V,SACpCnlB,EAAQmlB,EAASnlB,MAEvBA,EAAO,GAAMyB,EAAIK,EAAG9B,EAAO,GAAMyB,EAAIM,EAAG/B,EAAO,GAAMyB,EAAIoP,EACzD7Q,EAAO,GAAMwB,EAAIM,EAAG9B,EAAO,GAAMyB,EAAIM,EAAG/B,EAAO,GAAMyB,EAAIoP,EACzD7Q,EAAO,GAAMwB,EAAIM,EAAG9B,EAAO,GAAMwB,EAAIO,EAAG/B,EAAO,GAAMyB,EAAIoP,EACzD7Q,EAAO,GAAMyB,EAAIK,EAAG9B,EAAO,IAAOwB,EAAIO,EAAG/B,EAAO,IAAOyB,EAAIoP,EAC3D7Q,EAAO,IAAOyB,EAAIK,EAAG9B,EAAO,IAAOyB,EAAIM,EAAG/B,EAAO,IAAOwB,EAAIqP,EAC5D7Q,EAAO,IAAOwB,EAAIM,EAAG9B,EAAO,IAAOyB,EAAIM,EAAG/B,EAAO,IAAOwB,EAAIqP,EAC5D7Q,EAAO,IAAOwB,EAAIM,EAAG9B,EAAO,IAAOwB,EAAIO,EAAG/B,EAAO,IAAOwB,EAAIqP,EAC5D7Q,EAAO,IAAOyB,EAAIK,EAAG9B,EAAO,IAAOwB,EAAIO,EAAG/B,EAAO,IAAOwB,EAAIqP,EAE5DsU,EAASqW,aAAc,EAEvBppC,KAAK6pB,SAAS0f,2B,2BAKf,SAAelgB,GAKd,OAHArpB,KAAKqpB,OAASA,EACdrpB,KAAK2hB,SAEE3hB,O,kBAIR,SAAMkd,GAML,OAJAshF,GAAalpF,UAAU2H,KAAKhP,KAAMjO,KAAMkd,GAExCld,KAAKqpB,OAASnM,EAAOmM,OAEdrpB,S,GA3Few+F,IAiGlBmuC,G,kDAEL,WAAapjH,GAAwB,MAAnB0W,EAAmB,uDAAX,SAAW,oBAEpC,IAAMqK,EAAU,IAAIvwB,YAAa,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAElGwwB,EAAY,CAAE,EAAG,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,GAAK,EAAG,EAAG,EAAG,GAAK,GAAK,EAAG,GAAK,GAAK,GAAK,GAAK,EAAG,GAAK,GAAK,GAE3G1gB,EAAW,IAAI8e,GANe,OAQpC9e,EAAS2jB,SAAU,IAAI7G,GAAiB2D,EAAS,IAEjDzgB,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBqC,EAAW,KAE1E,cAAO1gB,EAAU,IAAIqhD,GAAmB,CAAEjrC,MAAOA,EAAOP,YAAY,MAE/DnW,IAAMA,EAEX,EAAKtc,KAAO,aAEZ,EAAK4c,SAAS0f,wBAlBsB,E,qDAsBrC,SAAmBnR,GAElB,IAAM7O,EAAMvpB,KAAKupB,IAEZA,EAAIC,YAETD,EAAIiB,UAAWxqB,KAAK+yB,UAEpBxJ,EAAI6B,QAASprB,KAAKgzB,OAElBhzB,KAAKgzB,MAAMlf,eAAgB,IAE3B,yEAAyBskB,Q,GApCFomE,IA0CnBouC,G,kDAEL,WAAaviH,GAAkC,MAA3BpB,EAA2B,uDAApB,EAAG0b,EAAiB,uDAAX,SAAW,oBAE9C,IAAM1E,EAAQ0E,EAER4F,EAAY,CAAE,GAAK,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,EAAG,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAErH1gB,EAAW,IAAI8e,GACrB9e,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBqC,EAAW,IAC1E1gB,EAAS0f,yBAET,cAAO1f,EAAU,IAAIqhD,GAAmB,CAAEjrC,MAAOA,EAAOP,YAAY,MAE/DzyB,KAAO,cAEZ,EAAKod,MAAQA,EAEb,EAAKpB,KAAOA,EAEZ,IAAM4jH,EAAa,CAAE,EAAG,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,GAAK,EAAG,GAE9E5/F,EAAY,IAAItE,GApBwB,OAqB9CsE,EAAUlD,aAAc,WAAY,IAAI7B,GAAwB2kG,EAAY,IAC5E5/F,EAAU1D,wBAEV,EAAKngB,IAAK,IAAIulB,GAAM1B,EAAW,IAAI3G,GAAmB,CAAErG,MAAOA,EAAOtC,QAAS,GAAKC,aAAa,EAAMS,YAAY,EAAOqB,YAAY,MAxBxF,E,qDA4B/C,SAAmBtH,GAElB,IAAIpF,GAAUhzB,KAAKqqB,MAAMC,SAEpBlc,KAAKgD,IAAK4hB,GAAU,OAAOA,EAAQ,MAExChzB,KAAKgzB,MAAM7f,IAAK,GAAMnT,KAAKipB,KAAM,GAAMjpB,KAAKipB,KAAM+J,GAElDhzB,KAAKkqB,SAAU,GAAIiQ,SAASsD,KAASzK,EAAQ,EAAMtxB,EAAWD,EAE9DzB,KAAK23B,OAAQ33B,KAAKqqB,MAAMzC,QAExB,yEAAyBwQ,O,GA1CDwlE,IAgDpBkvC,GAAsB,IAAInnH,GAG1BonH,G,kDAIL,aAAoK,MAAvJznH,EAAuJ,uDAAjJ,IAAIK,GAAS,EAAG,EAAG,GAAK4H,EAAyH,uDAAhH,IAAI5H,GAAS,EAAG,EAAG,GAAK3X,EAAwF,uDAA/E,EAAGiyB,EAA4E,uDAApE,SAAU+sG,EAA0D,uDAApC,GAATh/H,EAAci/H,EAA+B,uDAAN,GAAbD,EAAmB,4BAEnK,gBAEK//H,KAAO,mBAEW5M,IAAlBisI,MAEJA,GAAgB,IAAI3jG,IACNoB,aAAc,WAAY,IAAI7B,GAAwB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAK,KAE1FqkG,GAAgB,IAAInsC,GAAkB,EAAG,GAAK,EAAG,EAAG,IACtCt2D,UAAW,GAAK,GAAK,IAIpC,EAAK/W,SAAS9V,KAAMsQ,GAEpB,EAAKkpB,KAAO,IAAImnD,GAAM0uC,GAAe,IAAIphE,GAAmB,CAAEjrC,MAAOA,EAAOP,YAAY,KACxF,EAAK+W,KAAKj6B,kBAAmB,EAC7B,EAAK4M,IAAK,EAAKqtB,MAEf,EAAKszF,KAAO,IAAIp7F,GAAM49F,GAAe,IAAIjmG,GAAmB,CAAErG,MAAOA,EAAOP,YAAY,KACxF,EAAKqqG,KAAKvtH,kBAAmB,EAC7B,EAAK4M,IAAK,EAAK2gH,MAEf,EAAKmD,aAAc5nH,GACnB,EAAK6nH,UAAWn/H,EAAQg/H,EAAYC,GA3B+H,E,gDA+BpK,SAAc3nH,GAIb,GAAKA,EAAI3V,EAAI,OAEZ3P,KAAKyhB,WAAWtO,IAAK,EAAG,EAAG,EAAG,QAExB,GAAKmS,EAAI3V,GAAM,OAErB3P,KAAKyhB,WAAWtO,IAAK,EAAG,EAAG,EAAG,OAExB,CAEN25H,GAAM35H,IAAKmS,EAAI7G,EAAG,GAAK6G,EAAI5V,GAAIiF,YAE/B,IAAMzC,EAAU9D,KAAKsQ,KAAM4G,EAAI3V,GAE/B3P,KAAKyhB,WAAWuE,iBAAkB8mH,GAAO56H,M,uBAM3C,SAAWlE,GAAkE,IAA1Dg/H,EAA0D,uDAApC,GAATh/H,EAAci/H,EAA+B,uDAAN,GAAbD,EAEzDhtI,KAAKy2C,KAAKzjB,MAAM7f,IAAK,EAAG/E,KAAKiB,IAAK,KAAQrB,EAASg/H,GAAc,GACjEhtI,KAAKy2C,KAAKxf,eAEVj3B,KAAK+pI,KAAK/2G,MAAM7f,IAAK85H,EAAWD,EAAYC,GAC5CjtI,KAAK+pI,KAAKh3G,SAASpjB,EAAI3B,EACvBhO,KAAK+pI,KAAK9yG,iB,sBAIX,SAAUgJ,GAETjgC,KAAKy2C,KAAKtc,SAAS8F,MAAM9sB,IAAK8sB,GAC9BjgC,KAAK+pI,KAAK5vG,SAAS8F,MAAM9sB,IAAK8sB,K,kBAI/B,SAAM/iB,GAOL,OALA,4DAAYA,GAAQ,GAEpBld,KAAKy2C,KAAKx5B,KAAMC,EAAOu5B,MACvBz2C,KAAK+pI,KAAK9sH,KAAMC,EAAO6sH,MAEhB/pI,S,GApFiB+1B,IA0FpBq3G,G,kDAEL,aAAwB,MAAXnkH,EAAW,uDAAJ,EAAI,oBAEvB,IAAMqnB,EAAW,CAChB,EAAG,EAAG,EAAGrnB,EAAM,EAAG,EAClB,EAAG,EAAG,EAAG,EAAGA,EAAM,EAClB,EAAG,EAAG,EAAG,EAAG,EAAGA,GAGVie,EAAS,CACd,EAAG,EAAG,EAAG,EAAG,GAAK,EACjB,EAAG,EAAG,EAAG,GAAK,EAAG,EACjB,EAAG,EAAG,EAAG,EAAG,GAAK,GAGZrd,EAAW,IAAI8e,GACrB9e,EAASkgB,aAAc,WAAY,IAAI7B,GAAwBoI,EAAU,IACzEzmB,EAASkgB,aAAc,QAAS,IAAI7B,GAAwBhB,EAAQ,IAEpE,IAAM/M,EAAW,IAAI+wC,GAAmB,CAAExtC,cAAc,EAAMgC,YAAY,IAlBnD,OAoBvB,cAAO7V,EAAUsQ,IAEZltB,KAAO,aAtBW,E,6CA0BxB,SAAWogI,EAAYC,EAAYC,GAElC,IAAMttG,EAAQ,IAAIsE,GACZ32B,EAAQ5N,KAAK6pB,SAAS+e,WAAW3I,MAAMryB,MAgB7C,OAdAqyB,EAAM9sB,IAAKk6H,GACXptG,EAAM/G,QAAStrB,EAAO,GACtBqyB,EAAM/G,QAAStrB,EAAO,GAEtBqyB,EAAM9sB,IAAKm6H,GACXrtG,EAAM/G,QAAStrB,EAAO,GACtBqyB,EAAM/G,QAAStrB,EAAO,GAEtBqyB,EAAM9sB,IAAKo6H,GACXttG,EAAM/G,QAAStrB,EAAO,IACtBqyB,EAAM/G,QAAStrB,EAAO,IAEtB5N,KAAK6pB,SAAS+e,WAAW3I,MAAMmJ,aAAc,EAEtCppC,O,qBAIR,WAECA,KAAK6pB,SAASpJ,UACdzgB,KAAKm6B,SAAS1Z,c,GAtDS+9E,IA4DnBgvC,G,WAEL,aAAc,oBAEbxtI,KAAKiN,KAAO,YAEZjN,KAAKigC,MAAQ,IAAIsE,GAEjBvkC,KAAKytI,SAAW,GAChBztI,KAAK0tI,YAAc,K,0CAIpB,SAAQh+H,EAAGC,GAMV,OAJA3P,KAAK0tI,YAAc,IAAInjC,GACvBvqG,KAAKytI,SAASngI,KAAMtN,KAAK0tI,aACzB1tI,KAAK0tI,YAAYjjC,OAAQ/6F,EAAGC,GAErB3P,O,oBAIR,SAAQ0P,EAAGC,GAIV,OAFA3P,KAAK0tI,YAAYhjC,OAAQh7F,EAAGC,GAErB3P,O,8BAIR,SAAkB2qG,EAAMC,EAAMhF,EAAIC,GAIjC,OAFA7lG,KAAK0tI,YAAYC,iBAAkBhjC,EAAMC,EAAMhF,EAAIC,GAE5C7lG,O,2BAIR,SAAe6qG,EAAOC,EAAOC,EAAOC,EAAOpF,EAAIC,GAI9C,OAFA7lG,KAAK0tI,YAAYE,cAAe/iC,EAAOC,EAAOC,EAAOC,EAAOpF,EAAIC,GAEzD7lG,O,wBAIR,SAAYoqG,GAIX,OAFApqG,KAAK0tI,YAAYG,WAAYzjC,GAEtBpqG,O,sBAIR,SAAU8tI,EAAOC,GAEhB,SAASC,EAAiBC,GAIzB,IAFA,IAAMv1G,EAAS,GAEL5qB,EAAI,EAAGC,EAAIkgI,EAAWjgI,OAAQF,EAAIC,EAAGD,IAAO,CAErD,IAAMogI,EAAUD,EAAYngI,GAEtBqgI,EAAW,IAAI5iC,GACrB4iC,EAAS5kC,OAAS2kC,EAAQ3kC,OAE1B7wE,EAAOprB,KAAM6gI,GAId,OAAOz1G,EAIR,SAAS01G,EAAsB17B,EAAM27B,GASpC,IAPA,IAAMC,EAAUD,EAAUrgI,OAMtBohG,GAAS,EACHtsF,EAAIwrH,EAAU,EAAGl8H,EAAI,EAAGA,EAAIk8H,EAASxrH,EAAI1Q,IAAO,CAEzD,IAAIm8H,EAAYF,EAAWvrH,GACvB0rH,EAAaH,EAAWj8H,GAExBq8H,EAASD,EAAW9+H,EAAI6+H,EAAU7+H,EAClCg/H,EAASF,EAAW7+H,EAAI4+H,EAAU5+H,EAEtC,GAAKvB,KAAKgD,IAAKs9H,GAAWlsH,OAAOC,QAAU,CAU1C,GAPKisH,EAAS,IAEbH,EAAYF,EAAWj8H,GAAKq8H,GAAWA,EACvCD,EAAaH,EAAWvrH,GAAK4rH,GAAWA,GAIlCh8B,EAAK/iG,EAAI4+H,EAAU5+H,GAAS+iG,EAAK/iG,EAAI6+H,EAAW7+H,EAAQ,SAE/D,GAAK+iG,EAAK/iG,IAAM4+H,EAAU5+H,GAEzB,GAAK+iG,EAAKhjG,IAAM6+H,EAAU7+H,EAAK,OAAO,MAGhC,CAEN,IAAMi/H,EAAWD,GAAWh8B,EAAKhjG,EAAI6+H,EAAU7+H,GAAM++H,GAAW/7B,EAAK/iG,EAAI4+H,EAAU5+H,GACnF,GAAkB,IAAbg/H,EAAoB,OAAO,EAChC,GAAKA,EAAW,EAAQ,SACxBv/B,GAAWA,OAIN,CAGN,GAAKsD,EAAK/iG,IAAM4+H,EAAU5+H,EAAM,SAEhC,GAAS6+H,EAAW9+H,GAAKgjG,EAAKhjG,GAASgjG,EAAKhjG,GAAK6+H,EAAU7+H,GACrD6+H,EAAU7+H,GAAKgjG,EAAKhjG,GAASgjG,EAAKhjG,GAAK8+H,EAAW9+H,EAAS,OAAO,GAO1E,OAAO0/F,EAIR,IAQIw/B,EAAOV,EAASC,EARdn8B,EAAc/B,GAAW+B,YAEzBy7B,EAAWztI,KAAKytI,SACtB,GAAyB,IAApBA,EAASz/H,OAAe,MAAO,GAEpC,IAAiB,IAAZ+/H,EAAmB,OAAOC,EAAiBP,GAIhD,IAAM/0G,EAAS,GAEf,GAAyB,IAApB+0G,EAASz/H,OAMb,OAJAkgI,EAAUT,EAAU,IACpBU,EAAW,IAAI5iC,IACNhC,OAAS2kC,EAAQ3kC,OAC1B7wE,EAAOprB,KAAM6gI,GACNz1G,EAIR,IAAIm2G,GAAe78B,EAAay7B,EAAU,GAAIpjC,aAC9CwkC,EAAaf,GAAUe,EAAaA,EAIpC,IAIIC,EAkGAC,EAtGEC,EAAmB,GACnBC,EAAY,GACdC,EAAgB,GAChBC,EAAU,EAGdF,EAAWE,QAAY9uI,EACvB6uI,EAAeC,GAAY,GAE3B,IAAM,IAAIrhI,EAAI,EAAGC,EAAI0/H,EAASz/H,OAAQF,EAAIC,EAAGD,IAI5C8gI,EAAQ58B,EADR88B,GADAZ,EAAUT,EAAU3/H,IACAu8F,cAEpBukC,EAAQd,GAAUc,EAAQA,KAIhBC,GAAkBI,EAAWE,IAAcA,IAEpDF,EAAWE,GAAY,CAAEr9H,EAAG,IAAIy5F,GAASzoF,EAAGgsH,GAC5CG,EAAWE,GAAUr9H,EAAEy3F,OAAS2kC,EAAQ3kC,OAEnCslC,GAAaM,IAClBD,EAAeC,GAAY,IAM3BD,EAAeC,GAAU7hI,KAAM,CAAE0K,EAAGk2H,EAASprH,EAAGgsH,EAAW,KAS7D,IAAOG,EAAW,GAAM,OAAOjB,EAAiBP,GAGhD,GAAKwB,EAAUjhI,OAAS,EAAI,CAK3B,IAHA,IAAIohI,GAAY,EACVC,EAAW,GAEPC,EAAO,EAAGC,EAAON,EAAUjhI,OAAQshI,EAAOC,EAAMD,IAEzDN,EAAkBM,GAAS,GAI5B,IAAM,IAAIA,EAAO,EAAGC,EAAON,EAAUjhI,OAAQshI,EAAOC,EAAMD,IAIzD,IAFA,IAAME,EAAMN,EAAeI,GAEjBG,EAAO,EAAGA,EAAOD,EAAIxhI,OAAQyhI,IAAU,CAKhD,IAHA,IAAMC,EAAKF,EAAKC,GACZE,GAAkB,EAEZC,EAAQ,EAAGA,EAAQX,EAAUjhI,OAAQ4hI,IAEzCxB,EAAsBsB,EAAG5sH,EAAGmsH,EAAWW,GAAQ9sH,KAE9CwsH,IAASM,GAAQP,EAAS/hI,KAAM,CAAEuiI,MAAOP,EAAMQ,IAAKF,EAAOjkC,KAAM8jC,IACjEE,GAEJA,GAAkB,EAClBX,EAAkBY,GAAQtiI,KAAMoiI,IAIhCN,GAAY,GAQVO,GAEJX,EAAkBM,GAAOhiI,KAAMoiI,GAS7BL,EAASrhI,OAAS,IAGfohI,IAAYF,EAAgBF,IAQrC,IAAM,IAAIlhI,EAAI,EAAGgT,EAAKmuH,EAAUjhI,OAAQF,EAAIgT,EAAIhT,IAAO,CAEtDqgI,EAAWc,EAAWnhI,GAAIgE,EAC1B4mB,EAAOprB,KAAM6gI,GAGb,IAAM,IAAIviH,EAAI,EAAGye,GAFjB0kG,EAAWG,EAAephI,IAEKE,OAAQ4d,EAAIye,EAAIze,IAE9CuiH,EAAS3iC,MAAMl+F,KAAMyhI,EAAUnjH,GAAI5T,GAQrC,OAAO0gB,M,KAMHq3G,GAAa,IAAI71H,aAAc,GAC/B81H,GAAa,IAAIh2H,WAAY+1H,GAAW11H,QAExC41H,G,gGAIL,SAAoBC,GAEdA,EAAM,QAEV98H,QAAQC,KAAM,uDAEd68H,EAAM,OAUPH,GAAY,GAAMG,EAClB,IAAMxgI,EAAIsgI,GAAY,GAElBp9C,EAASljF,GAAK,GAAO,MACrBF,EAAME,GAAK,GAAO,KAChBqE,EAAMrE,GAAK,GAAO,IAIxB,OAAKqE,EAAI,IAAa6+E,EAGjB7+E,EAAI,KAER6+E,GAAQ,MAGRA,IAAiB,KAAL7+E,EAAa,EAAI,IAAa,QAAJrE,GAMlCqE,EAAI,IAKR6+E,KAHApjF,GAAK,OAGY,IAAMuE,IAAYvE,GAAO,IAAMuE,EAAQ,IAKzD6+E,GAAY7+E,EAAI,KAAS,GAASvE,GAAK,EAGvCojF,GAAY,EAAJpjF,O,KAOJ2gI,GAAY,EACZC,GAAa,EACbC,GAAW,EACXC,GAAa,EACbC,GAAe,EAErB,SAASC,GAAkB/3G,GAG1B,OADArlB,QAAQC,KAAM,kEACPolB,EAIR,SAASg4G,KAAgC,IAAjBh4G,EAAiB,uDAAL,GAWnC,OATArlB,QAAQC,KAAM,+DACdolB,EAAUi4G,iBAAkB,EAC5Bj4G,EAAUA,UAAYA,EACtBA,EAAU/X,MAAQ,WAEjB,OAAO+X,EAAU5qB,SAIX4qB,EAIR,SAASk4G,GAAY9mH,EAAUsQ,GAG9B,OADA/mB,QAAQC,KAAM,sDACP,IAAIyrF,GAAQj1E,EAAUsQ,GAI9B,SAASy2G,GAAUz2G,GAGlB,OADA/mB,QAAQC,KAAM,oDACP,IAAI8mF,GAAQhgE,GAIpB,SAAS02G,GAAgBhnH,EAAUsQ,GAGlC,OADA/mB,QAAQC,KAAM,0DACP,IAAIyrF,GAAQj1E,EAAUsQ,GAI9B,SAAS22G,GAAoBj3G,GAG5B,OADAzmB,QAAQC,KAAM,sEACP,IAAI+3D,GAAgBvxC,GAI5B,SAASk3G,GAAuBl3G,GAG/B,OADAzmB,QAAQC,KAAM,yEACP,IAAI+3D,GAAgBvxC,GAI5B,SAASm3G,GAAwBn3G,GAGhC,OADAzmB,QAAQC,KAAM,0EACP,IAAI+3D,GAAgBvxC,GAI5B,SAASo3G,GAAQvhI,EAAGC,EAAG8O,GAGtB,OADArL,QAAQC,KAAM,6DACP,IAAIsS,GAASjW,EAAGC,EAAG8O,GAM3B,SAASyyH,GAAwBtjI,EAAOg5B,GAGvC,OADAxzB,QAAQC,KAAM,8HACP,IAAIszB,GAAiB/4B,EAAOg5B,GAAWoyD,SAAU1sF,IAIzD,SAAS6kI,GAAevjI,EAAOg5B,GAG9B,OADAxzB,QAAQC,KAAM,sFACP,IAAIo0B,GAAqB75B,EAAOg5B,GAIxC,SAASwqG,GAAgBxjI,EAAOg5B,GAG/B,OADAxzB,QAAQC,KAAM,wFACP,IAAIq0B,GAAsB95B,EAAOg5B,GAIzC,SAASyqG,GAAuBzjI,EAAOg5B,GAGtC,OADAxzB,QAAQC,KAAM,sGACP,IAAIs0B,GAA6B/5B,EAAOg5B,GAIhD,SAAS0qG,GAAgB1jI,EAAOg5B,GAG/B,OADAxzB,QAAQC,KAAM,wFACP,IAAIu0B,GAAsBh6B,EAAOg5B,GAIzC,SAAS2qG,GAAiB3jI,EAAOg5B,GAGhC,OADAxzB,QAAQC,KAAM,0FACP,IAAIw0B,GAAuBj6B,EAAOg5B,GAI1C,SAAS4qG,GAAgB5jI,EAAOg5B,GAG/B,OADAxzB,QAAQC,KAAM,wFACP,IAAIy0B,GAAsBl6B,EAAOg5B,GAIzC,SAAS6qG,GAAiB7jI,EAAOg5B,GAGhC,OADAxzB,QAAQC,KAAM,0FACP,IAAI00B,GAAuBn6B,EAAOg5B,GAI1C,SAAS8qG,GAAkB9jI,EAAOg5B,GAGjC,OADAxzB,QAAQC,KAAM,4FACP,IAAI60B,GAAwBt6B,EAAOg5B,GAI3C,SAAS+qG,GAAkB/jI,EAAOg5B,GAGjC,OADAxzB,QAAQC,KAAM,4FACP,IAAI80B,GAAwBv6B,EAAOg5B,GA6B3C,SAASgrG,GAAY3oH,GAGpB,OADA7V,QAAQC,KAAM,0DACP,IAAI+5H,GAAYnkH,GAIxB,SAAS4oH,GAAmBxoH,EAAQ4W,GAGnC,OADA7sB,QAAQC,KAAM,oFACP,IAAIo5H,GAAWpjH,EAAQ4W,GAI/B,SAAS6xG,GAAazoH,EAAQsb,GAG7B,OADAvxB,QAAQC,KAAM,wEACP,IAAImrF,GAAc,IAAIsE,GAAez5E,EAAOQ,UAAY,IAAIqhD,GAAmB,CAAEjrC,WAAe5/B,IAARskC,EAAoBA,EAAM,YAgB1H,SAASotG,GAAiB1oH,EAAQsb,GAGjC,OADAvxB,QAAQC,KAAM,gFACP,IAAImrF,GAAc,IAAI2a,GAAmB9vF,EAAOQ,UAAY,IAAIqhD,GAAmB,CAAEjrC,WAAe5/B,IAARskC,EAAoBA,EAAM,YA6B9H,SAASqtG,GAAWtqB,GAGnB,OADAt0G,QAAQC,KAAM,yDACP,IAAI40G,GAAYP,GAIxB,SAASuqB,GAAqBvqB,GAG7B,OADAt0G,QAAQC,KAAM,0EACP,IAAIo3G,GAAmB/C,GAoyC/B,SAASwqB,GAAuBn3H,EAAOC,EAAQgF,GAG9C,OADA5M,QAAQC,KAAM,wGACP,IAAIoiC,GAAuB16B,EAAOiF,GA6O1C,SAASmyH,KAER/+H,QAAQ3T,MAAO,yCAMhB,SAAS2yI,KAERh/H,QAAQ3T,MAAO,sCAhoDhBskG,GAAMmhC,OAAS,SAAWmN,EAAWluC,GAQpC,OANA/wF,QAAQnD,IAAK,4CAEboiI,EAAU/8H,UAAYhF,OAAO40H,OAAQnhC,GAAMzuF,WAC3C+8H,EAAU/8H,UAAU7B,YAAc4+H,EAClCA,EAAU/8H,UAAU6uF,SAAWA,EAExBkuC,GAMR9nC,GAAKj1F,UAAUg9H,WAAa,SAAWxpH,GAGtC,OADA1V,QAAQC,KAAM,mEACPrT,KAAKsrB,cAAexC,IA2B5BkiH,GAAW11H,UAAUi9H,UAAY,WAEhCn/H,QAAQ3T,MAAO,6FAIhB4qI,GAAe/0H,UAAUqM,OAAS,WAEjCvO,QAAQ3T,MAAO,iEAahBgoH,GAAOnyG,UAAU04G,eAAiB,SAAWrwG,GAG5C,OADAvK,QAAQC,KAAM,wGACPy5G,GAAYkB,eAAgBrwG,IAIpC8pG,GAAO+qB,SAAW,CAEjBppH,IAAK,WAEJhW,QAAQ3T,MAAO,4FAIhBq6C,IAAK,WAEJ1mC,QAAQ3T,MAAO,6FAsBjB2pI,GAAK9zH,UAAUH,OAAS,SAAW8uF,GAGlC,OADA7wF,QAAQC,KAAM,2DACPrT,KAAKwqB,UAAWy5E,IAIxBmlC,GAAK9zH,UAAUm9H,MAAQ,WAGtB,OADAr/H,QAAQC,KAAM,wDACPrT,KAAKwpB,WAIb4/G,GAAK9zH,UAAUo9H,kBAAoB,SAAWnpH,GAG7C,OADAnW,QAAQC,KAAM,0EACPrT,KAAKqvC,cAAe9lB,IAI5B6/G,GAAK9zH,UAAU2T,KAAO,SAAWg7E,GAGhC,OADA7wF,QAAQC,KAAM,uDACPrT,KAAKorB,QAAS64E,IAMtB17E,GAAKjT,UAAUH,OAAS,SAAW8uF,GAGlC,OADA7wF,QAAQC,KAAM,2DACPrT,KAAKwqB,UAAWy5E,IAIxB17E,GAAKjT,UAAUm9H,MAAQ,WAGtB,OADAr/H,QAAQC,KAAM,wDACPrT,KAAKwpB,WAIbjB,GAAKjT,UAAUo9H,kBAAoB,SAAWnpH,GAG7C,OADAnW,QAAQC,KAAM,0EACPrT,KAAKqvC,cAAe9lB,IAI5BhB,GAAKjT,UAAUq9H,qBAAuB,SAAWxoH,GAGhD,OADA/W,QAAQC,KAAM,gFACPrT,KAAKysB,iBAAkBtC,IAI/B5B,GAAKjT,UAAU2T,KAAO,SAAWg7E,GAGhC,OADA7wF,QAAQC,KAAM,uDACPrT,KAAKorB,QAAS64E,IAMtB73E,GAAO9W,UAAUm9H,MAAQ,WAGxB,OADAr/H,QAAQC,KAAM,0DACPrT,KAAKwpB,WAMb4tB,GAAQ9hC,UAAUs9H,cAAgB,SAAWpjI,GAG5C,OADA4D,QAAQC,KAAM,mFACPrT,KAAKq2F,wBAAyB7mF,IAMtCg6H,GAAMl0H,UAAUH,OAAS,SAAW8uF,GAGnC,OADA7wF,QAAQC,KAAM,4DACPrT,KAAKwqB,UAAWy5E,IAMxBzuF,GAAQF,UAAUu9H,qBAAuB,SAAWjlI,EAAOmH,GAG1D,OADA3B,QAAQC,KAAM,uFACPrT,KAAKk5B,QAAStrB,EAAOmH,IAI7BS,GAAQF,UAAUw9H,gBAAkB,SAAWppH,GAG9C,OADAtW,QAAQC,KAAM,kGACPqW,EAAOxL,aAAcle,OAI7BwV,GAAQF,UAAUy9H,qBAAuB,WAExC3/H,QAAQ3T,MAAO,6DAIhB+V,GAAQF,UAAU09H,uBAAyB,SAAWh+H,GAGrD,OADA5B,QAAQC,KAAM,4GACP2B,EAAUkJ,aAAcle,OAIhCwV,GAAQF,UAAU29H,oBAAsB,WAEvC7/H,QAAQ3T,MAAO,4DAIhB+V,GAAQF,UAAU49H,WAAa,SAAW95H,GAGzC,OADAhG,QAAQC,KAAM,kGACPrT,KAAKid,KAAM7D,GAASX,UAM5BsX,GAAQza,UAAU69H,gBAAkB,SAAW3jI,GAG9C,OADA4D,QAAQC,KAAM,0EACPrT,KAAKupD,aAAc/5C,IAI3BugB,GAAQza,UAAUu9H,qBAAuB,SAAWjlI,EAAOmH,GAG1D,OADA3B,QAAQC,KAAM,uFACPrT,KAAKk5B,QAAStrB,EAAOmH,IAI7Bgb,GAAQza,UAAU89H,YAAc,WAG/B,OADAhgI,QAAQC,KAAM,yGACP,IAAIsS,IAAUwC,oBAAqBnoB,KAAM,IAIjD+vB,GAAQza,UAAU+9H,0BAA4B,SAAWjhI,GAGxD,OADAgB,QAAQC,KAAM,kGACPrT,KAAKy0B,2BAA4BriB,IAIzC2d,GAAQza,UAAUg+H,gBAAkB,WAEnClgI,QAAQC,KAAM,wDAIf0c,GAAQza,UAAUw9H,gBAAkB,SAAWppH,GAG9C,OADAtW,QAAQC,KAAM,kGACPqW,EAAOhD,aAAc1mB,OAI7B+vB,GAAQza,UAAUi+H,gBAAkB,SAAW7pH,GAG9C,OADAtW,QAAQC,KAAM,kGACPqW,EAAOhD,aAAc1mB,OAI7B+vB,GAAQza,UAAUy9H,qBAAuB,WAExC3/H,QAAQ3T,MAAO,6DAIhBswB,GAAQza,UAAUk+H,WAAa,SAAW9/H,GAEzCN,QAAQC,KAAM,oGACdK,EAAEoc,mBAAoB9vB,OAIvB+vB,GAAQza,UAAUm+H,YAAc,SAAW/pH,GAG1C,OADAtW,QAAQC,KAAM,8FACPqW,EAAOhD,aAAc1mB,OAI7B+vB,GAAQza,UAAUw0B,UAAY,WAE7B12B,QAAQ3T,MAAO,kDAIhBswB,GAAQza,UAAUo+H,QAAU,WAE3BtgI,QAAQ3T,MAAO,gDAIhBswB,GAAQza,UAAUy1H,QAAU,WAE3B33H,QAAQ3T,MAAO,gDAIhBswB,GAAQza,UAAUq+H,QAAU,WAE3BvgI,QAAQ3T,MAAO,gDAIhBswB,GAAQza,UAAUs+H,aAAe,WAEhCxgI,QAAQ3T,MAAO,qDAIhBswB,GAAQza,UAAU09H,uBAAyB,SAAWh+H,GAGrD,OADA5B,QAAQC,KAAM,4GACP2B,EAAU0R,aAAc1mB,OAIhC+vB,GAAQza,UAAU29H,oBAAsB,WAEvC7/H,QAAQ3T,MAAO,4DAIhBswB,GAAQza,UAAUu+H,YAAc,SAAWhgH,EAAMC,EAAOE,EAAQD,EAAKE,EAAMC,GAG1E,OADA9gB,QAAQC,KAAM,wHACPrT,KAAKo0C,gBAAiBvgB,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,IAI9DnE,GAAQza,UAAU49H,WAAa,SAAW95H,GAGzC,OADAhG,QAAQC,KAAM,kGACPrT,KAAKid,KAAM7D,GAASX,UAM5B69B,GAAMhhC,UAAUw+H,mBAAqB,SAAWr9F,GAG/C,OADArjC,QAAQC,KAAM,6EACPrT,KAAK+zI,eAAgBt9F,IAM7Bt1B,GAAW7L,UAAUw9H,gBAAkB,SAAWppH,GAGjD,OADAtW,QAAQC,KAAM,mHACPqW,EAAO7D,gBAAiB7lB,OAIhCmhB,GAAW7L,UAAUknF,QAAU,WAG9B,OADAppF,QAAQC,KAAM,8DACPrT,KAAKyY,UAMb6U,GAAIhY,UAAUo9H,kBAAoB,SAAWnpH,GAG5C,OADAnW,QAAQC,KAAM,yEACPrT,KAAKqvC,cAAe9lB,IAI5B+D,GAAIhY,UAAU0+H,oBAAsB,SAAW3pH,GAG9C,OADAjX,QAAQC,KAAM,6EACPrT,KAAK62C,gBAAiBxsB,IAI9BiD,GAAIhY,UAAUq9H,qBAAuB,SAAWxoH,GAG/C,OADA/W,QAAQC,KAAM,+EACPrT,KAAKysB,iBAAkBtC,IAM/BmR,GAAShmB,UAAUw3F,KAAO,WAGzB,OADA15F,QAAQC,KAAM,2DACPrT,KAAKi0I,WAIb34G,GAAShmB,UAAU4+H,mBAAqB,SAAWzqH,EAAO9b,GAGzD,OADAyF,QAAQC,KAAM,8EACPrT,KAAK67B,aAAcpS,EAAO9b,IAIlC2tB,GAAShmB,UAAU6+H,SAAW,SAAWxmI,GAGxC,OADAyF,QAAQC,KAAM,mEACPrT,KAAKo0I,YAAazmI,IAI1B2tB,GAAS+4G,gBAAkB,SAAW1mI,GAGrC,OADAyF,QAAQC,KAAM,+DACPrT,KAAK27B,UAAWhuB,IAIxB2tB,GAAShmB,UAAU+U,MAAQ,SAAW1c,GAGrC,OADAyF,QAAQC,KAAM,6DACPrT,KAAKs0I,SAAU3mI,IAIvB2tB,GAAS44G,mBAAqB,SAAWzqH,EAAOpX,EAAGC,EAAGC,EAAG5E,GAGxD,OADAyF,QAAQC,KAAM,8EACPioB,GAASO,aAAcpS,EAAOpX,EAAGC,EAAGC,EAAG5E,IAI/C2tB,GAAS1T,OAAS,SAAWvV,EAAGC,EAAGC,EAAG5E,GAGrC,OADAyF,QAAQC,KAAM,+DACPioB,GAASK,UAAWtpB,EAAGC,EAAGC,EAAG5E,IAMrC49F,GAAMj2F,UAAUi/H,iBAAmB,SAAWnwC,GAG7C,OADAhxF,QAAQC,KAAM,oFACPrT,KAAK+xG,cAAe3N,IAI5BmH,GAAMj2F,UAAUk/H,QAAU,SAAWx0H,GAGpC,OADA5M,QAAQC,KAAM,4EACP,IAAIk9F,GAAiBvwG,KAAMggB,IAInCurF,GAAMj2F,UAAUm/H,aAAe,SAAWz0H,GAGzC,OADA5M,QAAQC,KAAM,+EACP,IAAI8jG,GAAen3G,KAAMggB,IAMjC1M,GAAQgC,UAAUo/H,cAAgB,SAAW1/H,EAAWxH,EAAOuH,GAG9D,OADA3B,QAAQC,KAAM,+EACPrT,KAAK07B,oBAAqB1mB,EAAWxH,EAAOuH,IAIpDzB,GAAQgC,UAAUq/H,oBAAsB,SAAWjhI,GAGlD,OADAN,QAAQC,KAAM,qFACPrT,KAAK40I,oBAAqBlhI,IAIlCJ,GAAQgC,UAAUu/H,gBAAkB,WAGnC,OADAzhI,QAAQC,KAAM,6EACPrT,KAAK27F,mBAMbh2E,GAAQrQ,UAAUw/H,2BAA6B,WAE9C1hI,QAAQ3T,MAAO,8GAIhBkmB,GAAQrQ,UAAUy/H,uBAAyB,WAE1C3hI,QAAQ3T,MAAO,sGAIhBkmB,GAAQrQ,UAAU0/H,sBAAwB,SAAWxlI,GAGpD,OADA4D,QAAQC,KAAM,yFACPrT,KAAKw3B,sBAAuBhoB,IAIpCmW,GAAQrQ,UAAU2/H,mBAAqB,SAAWzlI,GAGjD,OADA4D,QAAQC,KAAM,mFACPrT,KAAKq6F,mBAAoB7qF,IAIjCmW,GAAQrQ,UAAU4/H,oBAAsB,SAAW1nI,EAAO4L,GAGzD,OADAhG,QAAQC,KAAM,qFACPrT,KAAKmoB,oBAAqB/O,EAAQ5L,IAI1CmY,GAAQrQ,UAAU6/H,gBAAkB,SAAW3lI,GAG9C,OADA4D,QAAQC,KAAM,uFACPrT,KAAK0mB,aAAclX,IAI3BmW,GAAQrQ,UAAUo/H,cAAgB,SAAW1/H,EAAWxH,EAAOuH,GAG9D,OADA3B,QAAQC,KAAM,+EACPrT,KAAK07B,oBAAqB1mB,EAAWxH,EAAOuH,IAIpD4Q,GAAQrQ,UAAUq/H,oBAAsB,SAAWjhI,GAGlD,OADAN,QAAQC,KAAM,qFACPrT,KAAK40I,oBAAqBlhI,IAIlCiS,GAAQrQ,UAAUu/H,gBAAkB,WAGnC,OADAzhI,QAAQC,KAAM,6EACPrT,KAAK27F,mBAMbn9E,GAAQlJ,UAAUo/H,cAAgB,SAAW1/H,EAAWxH,EAAOuH,GAG9D,OADA3B,QAAQC,KAAM,+EACPrT,KAAK07B,oBAAqB1mB,EAAWxH,EAAOuH,IAIpDyJ,GAAQlJ,UAAUu/H,gBAAkB,WAGnC,OADAzhI,QAAQC,KAAM,6EACPrT,KAAK27F,mBAMb5lE,GAASzgB,UAAU8/H,eAAiB,SAAW76H,GAG9C,OADAnH,QAAQC,KAAM,6EACPrT,KAAKq1I,gBAAiB96H,IAI9Bwb,GAASzgB,UAAUggI,YAAc,WAEhCliI,QAAQC,KAAM,8EAIf0iB,GAASzgB,UAAUw0B,UAAY,SAAWxS,EAAUpV,GAGnD,OADA9O,QAAQC,KAAM,kGACPrT,KAAKu3B,gBAAiBrV,EAAMoV,IAIpCvB,GAASzgB,UAAUigI,iBAAmB,WAErCniI,QAAQ3T,MAAO,mHAIhBs2B,GAASzgB,UAAUkgI,YAAc,SAAWp8H,GAG3C,OADAhG,QAAQC,KAAM,uEACPrT,KAAK0mB,aAActN,IAI3B9I,OAAO6lB,iBAAkBJ,GAASzgB,UAAW,CAE5CmgI,WAAY,CACX37F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,uDACPrT,KAAKgZ,SAASxG,OAGtBW,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,uDACdrT,KAAKgZ,SAASxG,MAAQhT,IAIxBk2I,cAAe,CACd57F,IAAK,WAEJ1mC,QAAQC,KAAM,kGAGfF,IAAK,WAEJC,QAAQC,KAAM,qGAOjBs7B,GAAKr5B,UAAUqgI,YAAc,WAE5BviI,QAAQ3T,MAAO,8LAIhB6Q,OAAO6lB,iBAAkBwY,GAAKr5B,UAAW,CAExCsgI,SAAU,CACT97F,IAAK,WAGJ,OADA1mC,QAAQ3T,MAAO,oGACR6K,IAGR6I,IAAK,WAEJC,QAAQ3T,MAAO,4LAOlB87F,GAAYjmF,UAAUugI,UAAY,WAEjCziI,QAAQ3T,MAAO,qDAMhBszC,GAAkBz9B,UAAUwgI,QAAU,SAAWtiG,EAAaH,GAE7DjgC,QAAQC,KAAM,oHAGKhT,IAAdgzC,IAA0BrzC,KAAKqzC,UAAYA,GAChDrzC,KAAK+1I,eAAgBviG,IAMtBljC,OAAO6lB,iBAAkBy0F,GAAMt1G,UAAW,CACzC0gI,WAAY,CACX7iI,IAAK,WAEJC,QAAQC,KAAM,gDAIhB4iI,gBAAiB,CAChB9iI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,4DACdrT,KAAK2nD,OAAOlhC,OAAOusB,IAAMxzC,IAI3B02I,iBAAkB,CACjB/iI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,8DACdrT,KAAK2nD,OAAOlhC,OAAOoN,KAAOr0B,IAI5B22I,kBAAmB,CAClBhjI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,gEACdrT,KAAK2nD,OAAOlhC,OAAOqN,MAAQt0B,IAI7B42I,gBAAiB,CAChBjjI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,4DACdrT,KAAK2nD,OAAOlhC,OAAOsN,IAAMv0B,IAI3B62I,mBAAoB,CACnBljI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,kEACdrT,KAAK2nD,OAAOlhC,OAAOuN,OAASx0B,IAI9B0mD,iBAAkB,CACjB/yC,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,8DACdrT,KAAK2nD,OAAOlhC,OAAOwN,KAAOz0B,IAI5B2mD,gBAAiB,CAChBhzC,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,4DACdrT,KAAK2nD,OAAOlhC,OAAOyN,IAAM10B,IAI3B82I,oBAAqB,CACpBnjI,IAAK,WAEJC,QAAQC,KAAM,oHAIhB8xC,WAAY,CACXhyC,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,iDACdrT,KAAK2nD,OAAO4oB,KAAO/wE,IAIrB+2I,eAAgB,CACfpjI,IAAK,WAEJC,QAAQC,KAAM,oDAIhBmjI,eAAgB,CACfrjI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,8DACdrT,KAAK2nD,OAAO8oB,QAAQ11D,MAAQvb,IAI9Bi3I,gBAAiB,CAChBtjI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,gEACdrT,KAAK2nD,OAAO8oB,QAAQz1D,OAASxb,MAQhC8Q,OAAO6lB,iBAAkBwQ,GAAgBrxB,UAAW,CAEnDtH,OAAQ,CACP8rC,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,2EACPrT,KAAK4N,MAAMI,SAIpB0oI,QAAS,CACR58F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,4EACPrT,KAAK8mC,QAAUx6B,IAGvB6G,IAAK,WAEJC,QAAQC,KAAM,4EACdrT,KAAKg5F,SAAU1sF,QAOlBq6B,GAAgBrxB,UAAUqhI,WAAa,SAAWn3I,GAIjD,OAFA4T,QAAQC,KAAM,sFACdrT,KAAKg5F,UAAoB,IAAVx5F,EAAiB8M,GAAmBD,IAC5CrM,MAIR2mC,GAAgBrxB,UAAUshI,iBAAmB,WAE5CxjI,QAAQ3T,MAAO,iEAIhBknC,GAAgBrxB,UAAUuhI,SAAW,WAEpCzjI,QAAQ3T,MAAO,4HAMhBkpC,GAAerzB,UAAUwhI,SAAW,SAAWtpI,GAE9C4F,QAAQC,KAAM,sEACdrT,KAAKwtC,SAAUhgC,IAIhBm7B,GAAerzB,UAAUyhI,aAAe,SAAWx8H,EAAMvF,GAIxD,OAFA5B,QAAQC,KAAM,8EAEL2B,GAAaA,EAAUwyB,mBAA2BxyB,GAAaA,EAAU+3B,6BAQpE,UAATxyB,GAEJnH,QAAQC,KAAM,2EACdrT,KAAKwtC,SAAUx4B,GAERhV,MAIDA,KAAK+pC,aAAcxvB,EAAMvF,IAf/B5B,QAAQC,KAAM,0EAEPrT,KAAK+pC,aAAcxvB,EAAM,IAAIosB,GAAiBzmC,UAAW,GAAKA,UAAW,OAiBlFyoC,GAAerzB,UAAU0hI,YAAc,SAAW9tG,EAAOroB,EAAOu2F,QAE1C/2G,IAAhB+2G,GAEJhkG,QAAQC,KAAM,wEAIfD,QAAQC,KAAM,4DACdrT,KAAKotC,SAAUlE,EAAOroB,IAIvB8nB,GAAerzB,UAAU2hI,eAAiB,WAEzC7jI,QAAQC,KAAM,kEACdrT,KAAKk3I,eAINvuG,GAAerzB,UAAU6hI,eAAiB,WAEzC/jI,QAAQC,KAAM,8DAIfs1B,GAAerzB,UAAU8hI,gBAAkB,SAAW78H,GAIrD,OAFAnH,QAAQC,KAAM,oFAEPrT,KAAKqpD,gBAAiB9uC,IAI9BouB,GAAerzB,UAAUkgI,YAAc,SAAWp8H,GAGjD,OADAhG,QAAQC,KAAM,6EACPrT,KAAK0mB,aAActN,IAI3B9I,OAAO6lB,iBAAkBwS,GAAerzB,UAAW,CAElDu4G,UAAW,CACV/zE,IAAK,WAGJ,OADA1mC,QAAQ3T,MAAO,iEACRO,KAAK+oC,SAId+kF,QAAS,CACRh0E,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,+DACPrT,KAAK+oC,WAOf6vD,GAAkBtjF,UAAUqhI,WAAa,SAAWn3I,GAInD,OAFA4T,QAAQC,KAAM,wFACdrT,KAAKg5F,UAAoB,IAAVx5F,EAAiB8M,GAAmBD,IAC5CrM,MAIR44F,GAAkBtjF,UAAUuhI,SAAW,WAEtCzjI,QAAQ3T,MAAO,8HAMhB8wG,GAAgBj7F,UAAU+hI,UAAY,WAErCjkI,QAAQ3T,MAAO,0DAIhB8wG,GAAgBj7F,UAAUgiI,aAAe,WAExClkI,QAAQ3T,MAAO,6DAIhB8wG,GAAgBj7F,UAAUm7F,SAAW,WAEpCr9F,QAAQ3T,MAAO,yDAMhBk5F,GAAMrjF,UAAUmL,QAAU,WAEzBrN,QAAQ3T,MAAO,8CAMhB6oI,GAAQhzH,UAAUwH,SAAW,WAG5B,OADA1J,QAAQC,KAAM,qFACPrT,MAMRsQ,OAAO6lB,iBAAkBmH,GAAShoB,UAAW,CAE5CiiI,WAAY,CACXz9F,IAAK,WAEJ1mC,QAAQC,KAAM,kDAGfF,IAAK,WAEJC,QAAQC,KAAM,mDAKhBmkI,SAAU,CACT19F,IAAK,WAEJ1mC,QAAQC,KAAM,gDAGfF,IAAK,WAEJC,QAAQC,KAAM,iDAKhBokI,QAAS,CACR39F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,8CACP,IAAIkxB,KAKbsoF,QAAS,CACR/yE,IAAK,WAEJ1mC,QAAQ3T,MAAO,SAAWO,KAAKiN,KAAO,uEAGvCkG,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,sEACrCjN,KAAK+/B,YAAgBvgC,IAAUoC,IAKjC21E,YAAa,CACZz9B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,kEAC9BjN,KAAKy+B,iBAGbtrB,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,kEACrCjN,KAAKy+B,gBAAkBj/B,IAKzBioE,eAAgB,CACf3tB,IAAK,WAEJ1mC,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,wCAGtCkG,IAAK,WAEJC,QAAQC,KAAM,SAAWrT,KAAKiN,KAAO,2CAOxCqD,OAAO6lB,iBAAkB2b,GAAex8B,UAAW,CAElD+8B,YAAa,CACZyH,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,iFACPrT,KAAKoyC,WAAWC,aAGxBl/B,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,kFACdrT,KAAKoyC,WAAWC,YAAc7yC,MASjC4tF,GAAc93E,UAAUoiI,YAAc,SAAWnjG,EAActU,EAAOhgB,EAAOg2B,GAE5E7iC,QAAQC,KAAM,yGACdrT,KAAKq1C,gBAAiBd,GACtBv0C,KAAKk2C,MAAOjW,EAAOhgB,EAAOg2B,IAI3Bm3C,GAAc93E,UAAUqiI,QAAU,SAAWtzH,GAE5CjR,QAAQC,KAAM,+DACdrT,KAAKs5C,iBAAkBj1B,IAIxB+oE,GAAc93E,UAAUsiI,uBAAyB,WAGhD,OADAxkI,QAAQC,KAAM,6EACPrT,KAAKo1C,mBAIbg4C,GAAc93E,UAAU65C,iBAAmB,WAG1C,OADA/7C,QAAQC,KAAM,qFACPrT,KAAK05C,aAAayV,oBAI1Bi+B,GAAc93E,UAAUuiI,aAAe,WAGtC,OADAzkI,QAAQC,KAAM,wEACPrT,KAAK05C,aAAava,WAI1BiuD,GAAc93E,UAAUwiI,aAAe,WAGtC,OADA1kI,QAAQC,KAAM,+DACPrT,KAAK8nD,MAAMyD,SAInB6hC,GAAc93E,UAAUyiI,sBAAwB,WAG/C,OADA3kI,QAAQC,KAAM,gGACPrT,KAAKoyC,WAAW0H,IAAK,sBAI7BszC,GAAc93E,UAAU0iI,0BAA4B,WAGnD,OADA5kI,QAAQC,KAAM,yGACPrT,KAAKoyC,WAAW0H,IAAK,2BAI7BszC,GAAc93E,UAAU2iI,4BAA8B,WAGrD,OADA7kI,QAAQC,KAAM,6GACPrT,KAAKoyC,WAAW0H,IAAK,6BAI7BszC,GAAc93E,UAAU4iI,8BAAgC,WAGvD,OADA9kI,QAAQC,KAAM,oHACPrT,KAAKoyC,WAAW0H,IAAK,kCAI7BszC,GAAc93E,UAAU6iI,+BAAiC,WAGxD,OADA/kI,QAAQC,KAAM,sHACPrT,KAAKoyC,WAAW0H,IAAK,mCAI7BszC,GAAc93E,UAAU8iI,oBAAsB,WAG7C,OADAhlI,QAAQC,KAAM,6FACPrT,KAAKoyC,WAAW0H,IAAK,qBAI7BszC,GAAc93E,UAAU8xD,uBAAyB,WAGhD,OADAh0D,QAAQC,KAAM,uFACPrT,KAAK05C,aAAauV,gBAI1Bm+B,GAAc93E,UAAU+iI,wBAA0B,WAGjD,OADAjlI,QAAQC,KAAM,uGACPrT,KAAKoyC,WAAW0H,IAAK,2BAI7BszC,GAAc93E,UAAUgjI,kBAAoB,SAAW9lD,GAEtDp/E,QAAQC,KAAM,uEACdrT,KAAKk1E,eAAgBsd,IAItBpF,GAAc93E,UAAUijI,aAAe,WAEtCnlI,QAAQC,KAAM,2DAIf+5E,GAAc93E,UAAUkjI,aAAe,WAEtCplI,QAAQC,KAAM,2DAIf+5E,GAAc93E,UAAUmjI,cAAgB,WAEvCrlI,QAAQC,KAAM,4DAIf+5E,GAAc93E,UAAUojI,gBAAkB,WAEzCtlI,QAAQC,KAAM,8DAIf+5E,GAAc93E,UAAUqjI,eAAiB,WAExCvlI,QAAQC,KAAM,6DAIf+5E,GAAc93E,UAAUsjI,iBAAmB,WAE1CxlI,QAAQC,KAAM,+DAIf+5E,GAAc93E,UAAUujI,WAAa,WAEpCzlI,QAAQC,KAAM,yDAIf+5E,GAAc93E,UAAUyoE,aAAe,WAEtC3qE,QAAQC,KAAM,2DAIf+5E,GAAc93E,UAAU+oE,eAAiB,WAExCjrE,QAAQC,KAAM,6DAIf+5E,GAAc93E,UAAUwjI,qBAAuB,WAG9C,OADA1lI,QAAQC,KAAM,gFACPrT,KAAK80E,wBAIbxkE,OAAO6lB,iBAAkBi3D,GAAc93E,UAAW,CAEjD4yD,iBAAkB,CACjBpuB,IAAK,WAEJ,OAAO95C,KAAKusE,UAAUx4B,SAGvB5gC,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,qEACdrT,KAAKusE,UAAUx4B,QAAUv0C,IAI3B6lE,cAAe,CACdvrB,IAAK,WAEJ,OAAO95C,KAAKusE,UAAUt/D,MAGvBkG,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,+DACdrT,KAAKusE,UAAUt/D,KAAOzN,IAIxBu5I,kBAAmB,CAClBj/F,IAAK,WAEJ1mC,QAAQC,KAAM,+FAIfF,IAAK,WAEJC,QAAQC,KAAM,gGAIhB4H,QAAS,CACR6+B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,8EACPrT,KAAKkb,eAId89H,GAAI,CACHl/F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,oDACPrT,KAAKk1C,KAId+jG,WAAY,CACXn/F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,mHACP,GAGRF,IAAK,WAEJC,QAAQC,KAAM,oHAIhB6lI,YAAa,CACZp/F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,kGACP,GAGRF,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,iGACdrT,KAAKo1D,gBAA6B,IAAV51D,EAAmBkL,GAAeD,KAI5D0uI,sBAAuB,CACtBr/F,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,iEACP,GAGRF,IAAK,WAEJC,QAAQC,KAAM,qEAOjB/C,OAAO6lB,iBAAkB+7C,GAAe58D,UAAW,CAElD8kE,SAAU,CACTtgC,IAAK,WAEJ1mC,QAAQC,KAAM,gGAIfF,IAAK,WAEJC,QAAQC,KAAM,iGAIhB+lI,mBAAoB,CACnBt/F,IAAK,WAEJ1mC,QAAQC,KAAM,0GAIfF,IAAK,WAEJC,QAAQC,KAAM,2GAIhBgmI,kBAAmB,CAClBv/F,IAAK,WAEJ1mC,QAAQC,KAAM,yGAIfF,IAAK,WAEJC,QAAQC,KAAM,4GAgBjB/C,OAAO6lB,iBAAkBpW,GAAkBzK,UAAW,CAErDsG,MAAO,CACNk+B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,0DACPrT,KAAKqgB,QAAQzE,OAGrBzI,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,0DACdrT,KAAKqgB,QAAQzE,MAAQpc,IAIvBqc,MAAO,CACNi+B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,0DACPrT,KAAKqgB,QAAQxE,OAGrB1I,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,0DACdrT,KAAKqgB,QAAQxE,MAAQrc,IAIvBsc,UAAW,CACVg+B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,kEACPrT,KAAKqgB,QAAQvE,WAGrB3I,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,kEACdrT,KAAKqgB,QAAQvE,UAAYtc,IAI3Buc,UAAW,CACV+9B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,kEACPrT,KAAKqgB,QAAQtE,WAGrB5I,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,kEACdrT,KAAKqgB,QAAQtE,UAAYvc,IAI3Byc,WAAY,CACX69B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,oEACPrT,KAAKqgB,QAAQpE,YAGrB9I,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,oEACdrT,KAAKqgB,QAAQpE,WAAazc,IAI5BuV,OAAQ,CACP+kC,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,4DACPrT,KAAKqgB,QAAQtL,QAGrB5B,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,4DACdrT,KAAKqgB,QAAQtL,OAASvV,IAIxB+c,OAAQ,CACPu9B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,4DACPrT,KAAKqgB,QAAQ9D,QAGrBpJ,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,4DACdrT,KAAKqgB,QAAQ9D,OAAS/c,IAIxBwc,OAAQ,CACP89B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,4DACPrT,KAAKqgB,QAAQrE,QAGrB7I,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,4DACdrT,KAAKqgB,QAAQrE,OAASxc,IAIxByN,KAAM,CACL6sC,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,wDACPrT,KAAKqgB,QAAQpT,MAGrBkG,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,wDACdrT,KAAKqgB,QAAQpT,KAAOzN,IAItBid,gBAAiB,CAChBq9B,IAAK,WAGJ,OADA1mC,QAAQC,KAAM,8EACPrT,KAAKqgB,QAAQ5D,iBAGrBtJ,IAAK,SAAW3T,GAEf4T,QAAQC,KAAM,8EACdrT,KAAKqgB,QAAQ5D,gBAAkBjd,MASlC20H,GAAM7+G,UAAUyyG,KAAO,SAAW7B,GAEjC9yG,QAAQC,KAAM,0EACd,IAAMg9B,EAAQrwC,KAOd,OANoB,IAAI2wH,IACZ5I,KAAM7B,GAAM,SAAW7rG,GAElCg2B,EAAMipG,UAAWj/H,MAGXra,MAKRm3H,GAAc7hH,UAAUikI,QAAU,WAGjC,OADAnmI,QAAQC,KAAM,+DACPrT,KAAK03H,oBAMbpjF,GAAWh/B,UAAUkkI,cAAgB,SAAWzkG,EAAUC,GAGzD,OADA5hC,QAAQC,KAAM,wDACPrT,KAAK2hB,OAAQozB,EAAUC,IAI/BV,GAAWh/B,UAAU4gC,MAAQ,SAAWnB,EAAU9U,EAAOhgB,EAAOg2B,GAG/D,OADA7iC,QAAQC,KAAM,4DACPrT,KAAKu0C,aAAa2B,MAAOnB,EAAU9U,EAAOhgB,EAAOg2B,IAIzDx7B,GAAWktG,iBAActnH,EAEzBoa,GAAWqvG,YAAc,SAAWnsG,EAAKjC,EAAS0qG,EAAQE,GAEzDlzG,QAAQC,KAAM,wFAEd,IAAM+zG,EAAS,IAAIuD,GACnBvD,EAAOoD,eAAgBxqH,KAAK2nH,aAE5B,IAAMtnG,EAAU+mG,EAAOW,KAAMpqG,EAAKyoG,OAAQ/lH,EAAWimH,GAIrD,OAFK5qG,IAAU2E,EAAQ3E,QAAUA,GAE1B2E,GAIR5F,GAAWg/H,gBAAkB,SAAWlvB,EAAM7uG,EAAS0qG,EAAQE,GAE9DlzG,QAAQC,KAAM,gGAEd,IAAM+zG,EAAS,IAAIkD,GACnBlD,EAAOoD,eAAgBxqH,KAAK2nH,aAE5B,IAAMtnG,EAAU+mG,EAAOW,KAAMwC,EAAMnE,OAAQ/lH,EAAWimH,GAItD,OAFK5qG,IAAU2E,EAAQ3E,QAAUA,GAE1B2E,GAIR5F,GAAWi/H,sBAAwB,WAElCtmI,QAAQ3T,MAAO,0FAIhBgb,GAAWk/H,0BAA4B,WAEtCvmI,QAAQ3T,MAAO,8FAsBhB,IAAMm6I,GAAa,CAElBC,0BAA2B,WAE1BzmI,QAAQ3T,MAAO,yEAIhBq6I,OAAQ,WAEP1mI,QAAQ3T,MAAO,yEAIhBs6I,OAAQ,WAEP3mI,QAAQ3T,MAAO,0EAQjB,SAASu6I,KAER5mI,QAAQ3T,MAAO,wEAMhB,SAASw6I,KAGR,OADA7mI,QAAQ3T,MAAO,6FACR,IAAIkpC,GAIZ,SAASuxG,KAGR,OADA9mI,QAAQ3T,MAAO,iFACR,IAAIkpC,GAIZ,SAASwxG,KAER/mI,QAAQ3T,MAAO,0EAIhB,SAAS26I,KAERhnI,QAAQ3T,MAAO,oEAImB,qBAAvB44F,oBAGXA,mBAAmBr6E,cAAe,IAAIs6E,YAAa,WAAY,CAAEC,OAAQ,CACxE8hD,SAAU/5I,MAMW,qBAAX81F,SAENA,OAAOkkD,UAEXlnI,QAAQC,KAAM,2DAId+iF,OAAOkkD,UAAYh6I,I,6BChnhDN,SAASi6I,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAI5zG,UAAU,qCAFxB,mC,6BCAA,SAAS6zG,EAAkB/sI,EAAQgtI,GACjC,IAAK,IAAI7sI,EAAI,EAAGA,EAAI6sI,EAAM3sI,OAAQF,IAAK,CACrC,IAAI8sI,EAAaD,EAAM7sI,GACvB8sI,EAAWvkH,WAAaukH,EAAWvkH,aAAc,EACjDukH,EAAWxkH,cAAe,EACtB,UAAWwkH,IAAYA,EAAWC,UAAW,GACjDvqI,OAAO6L,eAAexO,EAAQitI,EAAWv7I,IAAKu7I,IAInC,SAASE,EAAaL,EAAaM,EAAYC,GAG5D,OAFID,GAAYL,EAAkBD,EAAYnlI,UAAWylI,GACrDC,GAAaN,EAAkBD,EAAaO,GACzCP,EAbT,mC,6BCAA,8CACe,SAASQ,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIt0G,UAAU,sDAGtBq0G,EAAS5lI,UAAYhF,OAAO40H,OAAOiW,GAAcA,EAAW7lI,UAAW,CACrE7B,YAAa,CACXjU,MAAO07I,EACPL,UAAU,EACVzkH,cAAc,KAGd+kH,GAAY,YAAeD,EAAUC,K,6BCb3C,6DAGe,SAASC,EAAaC,GACnC,IAAIC,EAA4B,cAChC,OAAO,WACL,IACI1nE,EADA2nE,EAAQ,YAAeF,GAG3B,GAAIC,EAA2B,CAC7B,IAAIE,EAAY,YAAex7I,MAAMyT,YACrCmgE,EAAS6nE,QAAQpJ,UAAUkJ,EAAOr7I,UAAWs7I,QAE7C5nE,EAAS2nE,EAAMp7I,MAAMH,KAAME,WAG7B,OAAO,YAA0BF,KAAM4zE,M,6BCbzC8nE,EAAOC,QAAUC,EAAQ,K,6BCAzBF,EAAOC,QAAUC,EAAQ,K,6BCHZ,SAASC,EAAgBviC,GAItC,OAHAuiC,EAAkBvrI,OAAOwrI,eAAiBxrI,OAAOyrI,eAAiB,SAAyBziC,GACzF,OAAOA,EAAE9oG,WAAaF,OAAOyrI,eAAeziC,KAEvBA,GAJzB,mC,6BCAA,8CACe,SAAS0iC,EAAKruI,EAAQ6jC,EAAUyqG,GAiB7C,OAfED,EADqB,qBAAZP,SAA2BA,QAAQ3hG,IACrC2hG,QAAQ3hG,IAER,SAAcnsC,EAAQ6jC,EAAUyqG,GACrC,IAAIxlC,EAAO,YAAc9oG,EAAQ6jC,GACjC,GAAKilE,EAAL,CACA,IAAIylC,EAAO5rI,OAAO6rI,yBAAyB1lC,EAAMjlE,GAEjD,OAAI0qG,EAAKpiG,IACAoiG,EAAKpiG,IAAI7rC,KAAKguI,GAGhBC,EAAK18I,SAIJmO,EAAQ6jC,EAAUyqG,GAAYtuI,K,+FCd7B,SAASyuI,EAAeC,EAAKvuI,GAC1C,OAAO,OAAAwuI,EAAA,GAAeD,ICLT,SAA+BA,EAAKvuI,GACjD,GAAsB,qBAAXsH,QAA4BA,OAAOC,YAAY/E,OAAO+rI,GAAjE,CACA,IAAIE,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKr8I,EAET,IACE,IAAK,IAAiCs8I,EAA7BC,EAAKP,EAAIjnI,OAAOC,cAAmBmnI,GAAMG,EAAKC,EAAGn7E,QAAQ/hE,QAChE68I,EAAKjvI,KAAKqvI,EAAGn9I,QAETsO,GAAKyuI,EAAKvuI,SAAWF,GAH8C0uI,GAAK,IAK9E,MAAOp8I,GACPq8I,GAAK,EACLC,EAAKt8I,EACL,QACA,IACOo8I,GAAsB,MAAhBI,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIH,EAAI,MAAMC,GAIlB,OAAOH,GDnBuB,CAAqBF,EAAKvuI,IAAM,OAAA+uI,EAAA,GAA2BR,EAAKvuI,IAAM,OAAAgvI,EAAA,O,6BELvF,SAASC,EAAuBh9I,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIi9I,eAAe,6DAG3B,OAAOj9I,EALT,mC,6BCAA,8CAEA,SAASk9I,EAAQ5zH,EAAQ6zH,GACvB,IAAI7vG,EAAO/8B,OAAO+8B,KAAKhkB,GAEvB,GAAI/Y,OAAO6sI,sBAAuB,CAChC,IAAIC,EAAU9sI,OAAO6sI,sBAAsB9zH,GACvC6zH,IAAgBE,EAAUA,EAAQ12E,QAAO,SAAU22E,GACrD,OAAO/sI,OAAO6rI,yBAAyB9yH,EAAQg0H,GAAKhnH,eAEtDgX,EAAK//B,KAAKnN,MAAMktC,EAAM+vG,GAGxB,OAAO/vG,EAGM,SAASiwG,EAAe3vI,GACrC,IAAK,IAAIG,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAAK,CACzC,IAAIoP,EAAyB,MAAhBhd,UAAU4N,GAAa5N,UAAU4N,GAAK,GAE/CA,EAAI,EACNmvI,EAAQ3sI,OAAO4M,IAAS,GAAMmpE,SAAQ,SAAUhnF,GAC9C,YAAesO,EAAQtO,EAAK6d,EAAO7d,OAE5BiR,OAAOitI,0BAChBjtI,OAAO6lB,iBAAiBxoB,EAAQ2C,OAAOitI,0BAA0BrgI,IAEjE+/H,EAAQ3sI,OAAO4M,IAASmpE,SAAQ,SAAUhnF,GACxCiR,OAAO6L,eAAexO,EAAQtO,EAAKiR,OAAO6rI,yBAAyBj/H,EAAQ7d,OAKjF,OAAOsO,I,qeC0FT,SAAS6vI,EAAkBC,GACzBC,qBAAU,WACR,IAAMrxG,EAAKoxG,EAEX,OADArnD,OAAO5kC,iBAAiB,SAAUnlB,GAC3B,WAAW+pD,OAAO/kC,oBAAoB,SAAUhlB,MACtD,CAACoxG,IAGN,SAASE,EAAkBC,EAAU7pG,GACnC2pG,qBAAU,WACR,GAAI3pG,EAAS,CACX,IAAM1H,EAAKuxG,EAKX,OAJAxnD,OAAO5kC,iBAAiB,SAAUnlB,EAAI,CACpCwxG,SAAS,EACTC,SAAS,IAEJ,WAAW1nD,OAAO/kC,oBAAoB,SAAUhlB,GAAI,OAE5D,CAACuxG,EAAU7pG,IAIhB,SAASgqG,EAAqBjlH,GAC5B,IAAM86C,EAAS,GACf,IAAK96C,GAAWA,IAAYte,SAASwjI,KAAM,OAAOpqE,EAClD,MAIIwiB,OAAO6nD,iBAAiBnlH,GAE5B,MADI,CALJ,EACEolH,SADF,EAEEC,UAFF,EAGEC,WAEmCC,MAAK,SAAAC,GAAI,MAAa,SAATA,GAA4B,WAATA,MAAoB1qE,EAAOtmE,KAAKwrB,GACrG,UAAW86C,EAAX,YAAsBmqE,EAAqBjlH,EAAQylH,iBAIrD,IAAMlxG,EAAO,CAAC,IAAK,IAAK,MAAO,SAAU,OAAQ,QAAS,QAAS,UAE7DmxG,EAAiB,SAACnsI,EAAGC,GAAJ,OAAU+6B,EAAKoxG,OAAM,SAAAp/I,GAAG,OAAIgT,EAAEhT,KAASiT,EAAEjT,OAEjDq/I,EA/Jf,WAOG,6DAHC,CACFC,SAAU,EACVC,QAAQ,GALEC,EAMT,EANDF,SACAC,EAKC,EALDA,OACAE,EAIC,EAJDA,SAKMC,EAAiBD,IAA+B,qBAAX1oD,OAAP,kCAA0DA,OAAO2oD,gBAErG,IAAKA,EACH,MAAM,IAAIvrI,MAAM,kJAGlB,MAAsBwrI,mBAAS,CAC7BnrH,KAAM,EACNE,IAAK,EACLhZ,MAAO,EACPC,OAAQ,EACRgZ,OAAQ,EACRF,MAAO,EACPpkB,EAAG,EACHC,EAAG,IARL,mBAAOsvI,EAAP,KAAe9rI,EAAf,KAWM20C,EAAQo3F,iBAAO,CACnBpmH,QAAS,KACTqmH,iBAAkB,KAClBC,eAAgB,KAChBC,WAAYJ,IAGRK,EAAiBT,EAAmC,kBAAfA,EAA0BA,EAAaA,EAAWD,OAAS,KAChGW,EAAiBV,EAAmC,kBAAfA,EAA0BA,EAAaA,EAAWW,OAAS,KAEhGC,EAAUP,kBAAO,GACvBxB,qBAAU,WAER,OADA+B,EAAQh7C,SAAU,EACX,WAAYg7C,EAAQh7C,SAAU,MAGvC,MAAmDi7C,mBAAQ,WACzD,IAAMr7H,EAAW,WACf,GAAKyjC,EAAM28C,QAAQ3rE,QAAnB,CACA,MASIgvB,EAAM28C,QAAQ3rE,QAAQ6mH,wBACpB12H,EAAO,CACX4K,KAXF,EACEA,KAWAE,IAZF,EAEEA,IAWAhZ,MAbF,EAGEA,MAWAC,OAdF,EAIEA,OAWAgZ,OAfF,EAKEA,OAWAF,MAhBF,EAMEA,MAWApkB,EAjBF,EAOEA,EAWAC,EAlBF,EAQEA,GAYFW,OAAOC,OAAO0Y,GACVw2H,EAAQh7C,UAAY+5C,EAAe12F,EAAM28C,QAAQ46C,WAAYp2H,IAAO9V,EAAI20C,EAAM28C,QAAQ46C,WAAap2H,KAGzG,MAAO,CAAC5E,EAAUk7H,EAAiBZ,mBAASt6H,EAAUk7H,GAAkBl7H,EAAUi7H,EAAiBX,mBAASt6H,EAAUi7H,GAAkBj7H,KACvI,CAAClR,EAAKmsI,EAAgBC,IA5BzB,mBAAOK,EAAP,KAAqBC,EAArB,KAAmCC,EAAnC,KA8BA,SAASC,IACHj4F,EAAM28C,QAAQ06C,mBAChBr3F,EAAM28C,QAAQ06C,iBAAiB94D,SAAQ,SAAAvtD,GAAO,OAAIA,EAAQu4B,oBAAoB,SAAUyuF,GAAc,MACtGh4F,EAAM28C,QAAQ06C,iBAAmB,MAG/Br3F,EAAM28C,QAAQ26C,iBAChBt3F,EAAM28C,QAAQ26C,eAAe94D,aAC7Bx+B,EAAM28C,QAAQ26C,eAAiB,MAKnC,SAASY,IACFl4F,EAAM28C,QAAQ3rE,UACnBgvB,EAAM28C,QAAQ26C,eAAiB,IAAIL,EAAee,GAClDh4F,EAAM28C,QAAQ26C,eAAea,QAAQn4F,EAAM28C,QAAQ3rE,SAE/C8lH,GAAU92F,EAAM28C,QAAQ06C,kBAC1Br3F,EAAM28C,QAAQ06C,iBAAiB94D,SAAQ,SAAA65D,GAAe,OAAIA,EAAgB1uF,iBAAiB,SAAUsuF,EAAc,CACjHjC,SAAS,EACTC,SAAS,QAMf,IAAMqC,EAAM,SAAAhlB,GACLA,GAAQA,IAASrzE,EAAM28C,QAAQ3rE,UACpCinH,IACAj4F,EAAM28C,QAAQ3rE,QAAUqiG,EACxBrzE,EAAM28C,QAAQ06C,iBAAmBpB,EAAqB5iB,GACtD6kB,MAaF,OATArC,EAAkBmC,EAAcM,QAAQxB,IACxCpB,EAAkBqC,GAElBnC,qBAAU,WACRqC,IACAC,MACC,CAACpB,EAAQkB,EAAcD,IAE1BnC,qBAAU,kBAAMqC,IAAiB,IAC1B,CAACI,EAAKlB,EAAQW,I,sPCzGjBS,EAAK,CACTC,IAAK,SAAAjuI,GAAC,OAAIA,IAAM/B,OAAO+B,KAAOguI,EAAGhE,IAAIhqI,IAAmB,oBAANA,GAClDkuI,IAAK,SAAAluI,GAAC,MAAiB,oBAANA,GACjBmuI,IAAK,SAAAnuI,GAAC,MAAiB,kBAANA,GACjBw9F,IAAK,SAAAx9F,GAAC,MAAiB,kBAANA,GACjBouI,IAAK,SAAApuI,GAAC,YAAU,IAANA,GACVgqI,IAAK,SAAAhqI,GAAC,OAAIuL,MAAMC,QAAQxL,IAExBquI,IARS,SAQLruI,EAAGC,GAEL,UAAWD,WAAaC,KAAOD,MAAQC,EAAG,OAAO,EAEjD,GAAI+tI,EAAGG,IAAInuI,IAAMguI,EAAGxwC,IAAIx9F,IAAMguI,EAAGC,IAAIjuI,GAAI,OAAOA,IAAMC,EAEtD,GAAI+tI,EAAGhE,IAAIhqI,IAAMA,GAAKC,EAAG,OAAO,EAEhC,IAAIxE,EAEJ,IAAKA,KAAKuE,EAAG,KAAMvE,KAAKwE,GAAI,OAAO,EAEnC,IAAKxE,KAAKwE,EAAG,GAAID,EAAEvE,KAAOwE,EAAExE,GAAI,OAAO,EAEvC,OAAOuyI,EAAGI,IAAI3yI,IAAKuE,IAAMC,IAK7B,SAASquI,EAAOjzI,GACd,OAAQA,EAAMkzI,aAAelzI,EAAM2b,QAAQjN,KAAO,IAAM1O,EAAMF,MAAQE,EAAMyvF,WAgB9E,SAAS0jD,EAAaC,GACpB,IAAMC,EAAO,IAAIC,UAwCjB,SAASC,EAAoBl5F,GAC3B,OAAOA,EAAQ2e,QAAO,SAAA45E,GAAG,MAAI,CAAC,OAAQ,OAAQ,QAAS,MAAO,SAASjC,MAAK,SAAA9jI,GAC1E,IAAI2mI,EAEJ,OAA6B,OAArBA,EAAOZ,EAAIa,YAAiB,EAASD,EAAKv6B,SAAS,YAAcpsG,SAkK7E,SAAS6mI,EAAcC,GACrB,IACEC,EACER,EAAMS,WADRD,SAEF1jI,MAAMw9F,KAAKkmC,EAASE,QAAQhnH,UAAU6rD,SAAQ,SAAAo7D,GAG5C,IAAKJ,EAAKrzI,SAAWqzI,EAAK3jC,MAAK,SAAAgkC,GAAG,OAAIA,EAAIr4H,SAAWo4H,EAAWp4H,QAAUq4H,EAAIl0I,QAAUi0I,EAAWj0I,OAASk0I,EAAIvkD,aAAeskD,EAAWtkD,cAAa,CACrJ,IACMq9C,EADciH,EAAWb,YACFO,MACvBx6B,EAAuB,MAAZ6zB,OAAmB,EAASA,EAAS7zB,SAGtD,GAFA26B,EAASE,QAAQxnG,OAAO2mG,EAAOc,IAEf,MAAZjH,GAAoBA,EAASmH,WAAY,CAE3C,IAAMrjI,EAAO,2BAAKmjI,GAAR,IACRG,cAAeP,GAAQ,KAEA,MAAzB16B,EAASk7B,cAAgCl7B,EAASk7B,aAAavjI,GACpC,MAA3BqoG,EAASm7B,gBAAkCn7B,EAASm7B,eAAexjI,QAsG3E,SAASyjI,EAAcr0I,EAAOq6C,GAC5BA,EAAQs+B,SAAQ,SAAAh9D,GACd,IAAI24H,EAEJ,OAAiC,OAAzBA,EAAQ34H,EAAO83H,QAA4D,MAAlCa,EAAMr7B,SAASs7B,qBAAxB,EAA2DD,EAAMr7B,SAASs7B,gBAAgBv0I,MAItI,MAAO,CACLw0I,cAzGoB,SAAA3nI,GAEpB,OAAQA,GACN,IAAK,iBACL,IAAK,kBACH,OAAO,kBAAM6mI,EAAc,KAE7B,IAAK,uBACH,OAAO,SAAA1zI,GACD,cAAeA,GAIjBozI,EAAMS,WAAWD,SAASa,YAAYnoG,OAAOtsC,EAAM00I,WAGrDhB,EAAc,KAKpB,OAAO,SAAA1zI,GACL,MAGIozI,EAAMS,WAFRU,EADF,EACEA,gBACAX,EAFF,EAEEA,UA5PN,SAAoB5zI,GAClB,IAAI20I,EAEEv6F,EAAQg5F,EAAMS,WAElBryG,EAIE4Y,EAJF5Y,UACAozG,EAGEx6F,EAHFw6F,MACA77H,EAEEqhC,EAFFrhC,OACAwC,EACE6+B,EADF7+B,KAIF,EAGoH,OAA/Go5H,EAAoD,MAA5BnzG,EAAUioG,oBAAyB,EAASjoG,EAAUioG,eAAezpI,EAAOo6C,IAAkBu6F,EAAwB30I,EAFjJsmC,EADF,EACEA,QACAC,EAFF,EAEEA,QAGAl5B,EAEEkO,EAFFlO,MACAC,EACEiO,EADFjO,OAEFsnI,EAAMnvI,IAAI6gC,EAAUj5B,EAAQ,EAAI,GAAKk5B,EAAUj5B,EAAU,EAAI,GAC7Dk0B,EAAUqzG,cAAcD,EAAO77H,GAyO7B+7H,CAAW90I,GAEX,IAAM+0I,EAAyB,kBAATloI,EAChBmoI,EAAwB,YAATnoI,GAA+B,kBAATA,GAAqC,kBAATA,EAEjE8mI,EA7KV,SAAyBO,EAAel0I,GACtC,IACE4zI,EACER,EAAMS,WADRD,SAQF,MAJI,cAAe5zI,GAAS4zI,EAASa,YAAY5zF,IAAI7gD,EAAM00I,YACzDR,EAAct0I,KAAd,MAAAs0I,EAAa,YAASN,EAASa,YAAYroG,IAAIpsC,EAAM00I,WAAW5nH,WAG3DonH,EAmKQe,CAtNjB,SAAmBj8E,GACjB,IAAM5e,EAAQg5F,EAAMS,WAElBryG,EAEE4Y,EAFF5Y,UACAoyG,EACEx5F,EADFw5F,SAGF,IAAKpyG,EAAU6E,QAAS,MAAO,GAC/B,IAAM6uG,EAAO,IAAIvpC,IACXuoC,EAAgB,GAEhBiB,EAAgBn8E,EAASA,EAAO46E,EAASwB,aAAexB,EAASwB,YAEnE3zG,EAAaD,EAAU6zG,iBAAiBF,GAAe,GAAMn8E,QAAO,SAAAs8E,GACtE,IAAMjrH,EAAK4oH,EAAOqC,GAClB,OAAIJ,EAAKr0F,IAAIx2B,KACb6qH,EAAKx5H,IAAI2O,IACF,MAILmX,EAAUw3B,SAAQv3B,EAAaD,EAAUw3B,OAAOv3B,EAAY2Y,IArBvC,oBAuBD3Y,GAvBC,IAuBzB,2BAGE,IAHkC,IAAzBorD,EAAyB,QAC9BqmD,EAAcrmD,EAAUlxE,OAErBu3H,GAAa,CAClB,IAAIqC,EAE+B,OAA9BA,EAAQrC,EAAYO,QAAkB8B,EAAMtB,YAAYC,EAAct0I,KAAd,2BAAwBitF,GAAxB,IAC3DqmD,iBAEFA,EAAcA,EAAY5qH,QAhCL,8BAoCzB,OAAO4rH,EAkLwBrnD,CADdkoD,EAAgBxB,OAAsB5gJ,GACLqN,GAC1Cs4B,EAAQ08G,EA1OlB,SAA2Bh1I,GACzB,IACE4zI,EACER,EAAMS,WADRD,SAEI7sI,EAAK/G,EAAMsmC,QAAUstG,EAAS4B,aAAa,GAC3CxuI,EAAKhH,EAAMumC,QAAUqtG,EAAS4B,aAAa,GACjD,OAAO90I,KAAKgG,MAAMhG,KAAKiG,KAAKI,EAAKA,EAAKC,EAAKA,IAoOZyuI,CAAkBz1I,GAAS,EAE3C,kBAAT6M,IACF+mI,EAAS4B,aAAe,CAACx1I,EAAMsmC,QAAStmC,EAAMumC,SAC9CqtG,EAAS8B,YAAc/B,EAAKjgH,KAAI,SAAAsgH,GAAG,OAAIA,EAAId,gBAKzC8B,IAAiBrB,EAAKrzI,QACpBg4B,GAAS,IACX+7G,EAAcr0I,EAAO4zI,EAASwB,aAC1Bb,GAAiBA,EAAgBv0I,IAKrC+0I,GAAerB,EAAcC,GAhLrC,SAA0BO,EAAel0I,EAAOs4B,EAAO3hB,GACrD,MAKIy8H,EAAMS,WAJRryG,EADF,EACEA,UACAozG,EAFF,EAEEA,MACA77H,EAHF,EAGEA,OACA66H,EAJF,EAIEA,SAGEM,EAAc5zI,QAAQ,WACxB,IADwB,EAClBq1I,EAAmBtC,EAAK5tI,IAAImvI,EAAM5yI,EAAG4yI,EAAM3yI,EAAG,GAAGg5H,UAAUliH,GAE3D68H,EAAwB,SAAAvrH,GAAE,OAAIrqB,EAAMC,OAAO21I,sBAAsBvrH,IAEjEwrH,EAAa,CACjBC,SAAS,GANa,cASN5B,GATM,yBASbF,EATa,QAUhB+B,EAAoB,SAAA1rH,GACxB,IAAI2rH,EAAuBC,EAE3B,OAA2J,OAAnJD,EAAmF,OAA1DC,EAAyBrC,EAASa,YAAYroG,IAAI/hB,SAAe,EAAS4rH,EAAuBp1F,IAAImzF,EAAId,eAAwB8C,GAG9JE,EAAoB,SAAA7rH,GACpBupH,EAASa,YAAY5zF,IAAIx2B,GAG3BupH,EAASa,YAAYroG,IAAI/hB,GAAI5kB,IAAIuuI,EAAId,YAAac,GAKlDJ,EAASa,YAAYhvI,IAAI4kB,EAAI,IAAI6tD,IAAI,CAAC,CAAC87D,EAAId,YAAac,MAE1Dh0I,EAAMC,OAAOi2I,kBAAkB7rH,IAI7B8rH,EAAoB,GAExB,IAAK,IAAIvF,KAAQhuI,OAAOyrI,eAAeruI,GAAQ,CAC7C,IAAI8jC,EAAW9jC,EAAM4wI,GAGG,oBAAb9sG,IAAyBqyG,EAAkBvF,GAAQ9sG,GAGhE,IAAIsyG,EAAe,uCAAKpC,GACnBmC,GADW,IAEdE,OAAQzB,EAAM5yI,EACds0I,OAAQ1B,EAAM3yI,EACdiyI,gBACA4B,QAASD,EAAWC,QACpBx9G,QACAq9G,mBACA51H,IAAKyhB,EAAUzhB,IACfhH,OAAQA,EAERw9H,gBAAiB,WAGf,IAAMC,EAAqB,cAAex2I,GAAS4zI,EAASa,YAAYroG,IAAIpsC,EAAM00I,WAElF,KACC8B,GACDA,EAAmB31F,IAAImzF,EAAId,gBACzBkD,EAAaN,QAAUD,EAAWC,SAAU,EAGxClC,EAASE,QAAQv4H,MAAQrL,MAAMw9F,KAAKkmC,EAASE,QAAQhnH,UAAUkjF,MAAK,SAAA5vG,GAAC,OAAIA,EAAE8yI,cAAgBc,EAAId,gBAAc,CAE/G,IAAMuD,EAASvC,EAAc/zI,MAAM,EAAG+zI,EAAcv0I,QAAQq0I,IAC5DN,EAAc,GAAD,mBAAK+C,GAAL,CAAazC,OAKhC/zI,OAAQ,CACN81I,oBACAG,oBACAN,yBAEFc,cAAe,CACbX,oBACAG,oBACAN,yBAEFe,YAAa32I,EAEb42I,YAAa52I,IAKf,GAFA2W,EAASy/H,IAEkB,IAAvBP,EAAWC,QAAkB,eA9EnC,2BAAiC,iBATT,kCAyKxBe,CAAiBlD,EAAM3zI,EAAOs4B,GAAO,SAAA1nB,GACnC,IAAMsiI,EAActiI,EAAKsiI,YACnBpG,EAAWoG,EAAYO,MACvBx6B,EAAuB,MAAZ6zB,OAAmB,EAASA,EAAS7zB,SAEtD,GAAkB,MAAZ6zB,GAAoBA,EAASmH,WAEnC,GAAIc,EAAe,CAEjB,GAAI97B,EAAS69B,eAAiB79B,EAAS89B,gBAAkB99B,EAASk7B,cAAgBl7B,EAASm7B,eAAgB,CAEzG,IAAM/pH,EAAK4oH,EAAOriI,GACZomI,EAAcpD,EAASE,QAAQ1nG,IAAI/hB,GAEpC2sH,EAKMA,EAAYlB,SAErBllI,EAAK2lI,mBALL3C,EAASE,QAAQruI,IAAI4kB,EAAIzZ,GACC,MAA1BqoG,EAAS69B,eAAiC79B,EAAS69B,cAAclmI,GACtC,MAA3BqoG,EAAS89B,gBAAkC99B,EAAS89B,eAAenmI,IAQ7C,MAA1BqoG,EAASg+B,eAAiCh+B,EAASg+B,cAAcrmI,OAC5D,CAEL,IAAMsmI,EAAUj+B,EAASpsG,GAErBqqI,IAGW,YAATrqI,GAA+B,kBAATA,GAAqC,kBAATA,GAA4B+mI,EAAS8B,YAAYyB,SAASjE,MAE9GmB,EAAcr0I,EAAO4zI,EAASwB,YAAYp8E,QAAO,SAAAr9C,GAAM,OAAKi4H,EAAS8B,YAAYyB,SAASx7H,OAE1Fu7H,EAAQtmI,WAqBtB,IAGMwmI,EAAU,SAAAC,GAAG,OAAIA,KAASA,EAAIxD,UAE9ByD,EAAe,SAACjkF,EAAWpmC,GAC/B,IAAIsqH,EAAuBC,EAE3B,MAAO,CAKLloB,KAAM8nB,EAAQ/jF,GAAaA,EAAuH,OAA1GkkF,EAAgE,OAAvCC,EAAmBnkF,EAAUogF,YAAiB,EAAS+D,EAAiBloB,MAAgBioB,EAAwBtqH,EAAMwmH,MAAMnkB,KAE7Lj8D,UAAW+jF,EAAQ/jF,GAAaA,EAAUwgF,WAAWvsG,MAAQ+rB,IAI3DokF,EAAU,YACVC,EAAQ,GACVC,EAAY,GAOhB,SAASC,EAAajzI,EAAGC,GACvB,SAAI+tI,EAAGhE,IAAIhqI,KAAMguI,EAAGK,IAAIruI,EAAGC,KACvBD,IAAMC,EAKZ,SAASizI,EAAQl8H,EAAQy+B,GACvB,IAAM0yF,EAAWnxH,EAcjB,OAZa,MAATy+B,GAAiBA,EAAM09F,YAAchL,EAAS2G,SAChD3G,EAAS2G,MAAT,aACEnkB,KAAM,KACNyoB,cAAe,GACf9D,WAAY,EACZh7B,SAAU,GACV5+D,QAAS,GACT/xB,OAAQ,MACL8xB,IAIAz+B,EAmiBT,IACM2oC,EAAuB,SAAA+yF,GAAG,OAAIA,GAAOA,EAAI/yF,sBAC/C,SAAS0zF,GAAaC,GACpB,OAAO/nI,MAAMC,QAAQ8nI,GAAOv3I,KAAKgB,IAAIhB,KAAKiB,IAAIs2I,EAAI,GAAIvvD,OAAOwvD,kBAAmBD,EAAI,IAAMA,EAE5F,IAsQI73I,GAtQEmN,GAAuB4qI,gBAAoB,MAE3CC,GAAc,SAACC,EAAYC,EAAYC,EAAStL,GACpD,IACElhG,EAcEkhG,EAdFlhG,GACAxwB,EAaE0xH,EAbF1xH,KAFF,EAeI0xH,EAZFjvE,eAHF,WAeIivE,EAXFuL,cAJF,WAeIvL,EAVFwL,YALF,WAeIxL,EATF3B,UANF,WAeI2B,EARFyL,oBAPF,WAeIzL,EAPF0L,iBARF,MAQc,SARd,IAeI1L,EANFgL,WATF,MASQ,EATR,EAUEnzB,EAKEmoB,EALFnoB,YAVF,EAeImoB,EAJF2L,aAXF,MAWU,IAAItF,QAXd,EAYauF,EAGT5L,EAHFzrG,UACQs3G,EAEN7L,EAFFl0H,OACAw7H,EACEtH,EADFsH,gBAGEv2E,IACFjyB,EAAG8yB,UAAUx4B,SAAU,EACA,kBAAZ23B,EAAsBp7D,OAAOm9B,OAAOgM,EAAG8yB,UAAWb,GAAcjyB,EAAG8yB,UAAUt/D,KAAO+zI,oBAI5FkF,IAAQzsG,EAAG2b,eAAiB4rF,gBAC5BmF,IAAM1sG,EAAG+P,YAAcw3F,yBAEV,UAAdqF,IACFC,EAAMltG,OACNktG,EAAMp0B,YAAc,GAGtB,IAAMu0B,EAAYvhB,aAAO,SAAC/xH,EAAK2mC,GAE7B,IAAM5K,EAAY,IAAI8xG,YACtB,EAGIuF,GAAkB,GAFpB5xF,EADF,EACEA,OACG30C,EAFL,iBAIA+lI,EAAW72G,EAAD,YAAC,aACT6E,SAAS,GACN/zB,GAFK,IAGR20C,OAAQ,2BAAKzlB,EAAUylB,QAClBA,MAIP,IAAMl9B,EAAW+uH,aAAyBxF,SACpCv6H,EAASgR,EAAW+uH,EAAgBJ,EAAe,IAAIpF,qBAAyB,EAAG,EAAG,EAAG,EAAG,GAAK,KAAQ,IAAIA,oBAAwB,GAAI,EAAG,GAAK,KAElJvpH,IACHhR,EAAOsM,SAAStU,EAAI,EAChB+nI,GAAeT,EAAWt/H,EAAQ+/H,GAEf,MAAjBA,GAAyBA,EAAcxtI,UAAWyN,EAAOkR,OAAO,EAAG,EAAG,IAG9E,IAAM+uH,EAAahB,GAAaC,GAC1B5yH,EAAW,IAAIiuH,UACf2F,EAAgB,IAAI3F,UACpB4F,EAAa,IAAI5F,UAEvB,SAAS5uD,IAAqF,IAAlE3rE,EAAkE,uDAAzDqzB,IAAMrzB,OAAQ9Y,EAA2C,uDAAlCg5I,EAAe19H,EAAmB,uDAAZ6wB,IAAM7wB,KAEpFlO,EAEEkO,EAFFlO,MACAC,EACEiO,EADFjO,OAEIi4B,EAASl4B,EAAQC,EACnBrN,aAAkBqzI,UAAe4F,EAAW3pI,KAAKtP,GAAai5I,EAAWzzI,IAAX,MAAAyzI,EAAU,YAAQj5I,IACpF,IAAM2pB,EAAW7Q,EAAOogI,iBAAiB9zH,GAAUxG,WAAWq6H,GAE9D,GAAI50F,EAAqBvrC,GACvB,MAAO,CACL1L,MAAOA,EAAQ0L,EAAOysB,KACtBl4B,OAAQA,EAASyL,EAAOysB,KACxBonC,OAAQ,EACRhjD,WACA2b,UAGF,IAAMD,EAAMvsB,EAAOusB,IAAM5kC,KAAKC,GAAK,IAE7B2J,EAAI,EAAI5J,KAAKwlC,IAAIZ,EAAM,GAAK1b,EAE5B3jB,EAAIqE,GAAK+C,EAAQC,GACvB,MAAO,CACLD,MAAOpH,EACPqH,OAAQhD,EACRsiE,OAAQv/D,EAAQpH,EAChB2jB,WACA2b,UAKN,IAAI6zG,OAAqBzmJ,EAEnB0mJ,EAAwB,SAAAtiD,GAAO,OAAItxF,GAAI,SAAA20C,GAAK,MAAK,CACrD0qE,YAAa,2BAAK1qE,EAAM0qE,aAAb,IACT/tB,iBAIJ,MAAO,CACLhrD,KACAtmC,MACA2mC,MACAksG,WAAY,kBAAMA,EAAWlsG,MAC7BmsG,QAAS,SAACe,EAAWC,GAAZ,OAAiChB,EAAQe,EAAWC,EAAkBntG,MAC/EosG,SACAC,OACAnxG,MAAOuwG,EAAQ,IAAIvE,SACnBv6H,SACAygI,SAAU,KACVh4G,YACAo3G,QACAhE,MAAO,IAAItB,UACXhI,KACAqN,YACApE,kBACAzvB,YAAa,yBACX/tB,QAAS,EACTr1F,IAAK,GACLC,IAAK,EACLsvI,SAAU,KACPnsB,GALM,IAMT20B,QAAS,WACP,IAAMr/F,EAAQhO,IAEVgtG,GAAoBM,aAAaN,GAEjCh/F,EAAM0qE,YAAY/tB,UAAY38C,EAAM0qE,YAAYpjH,KAAK23I,EAAsBj/F,EAAM0qE,YAAYpjH,KAEjG03I,EAAqB5+B,YAAW,kBAAM6+B,EAAsBjtG,IAAM04E,YAAYnjH,OAAMy4C,EAAM0qE,YAAYmsB,aAG1G11H,KAAM,CACJlO,MAAO,EACPC,OAAQ,GAEVoF,SAAU,CACRsmI,aACAf,IAAKe,EACL3rI,MAAO,EACPC,OAAQ,EACRi4B,OAAQ,EACR3b,SAAU,EACVgjD,OAAQ,EACR8X,sBAEFL,QAAS,SAACh3E,EAAOC,GACf,IAAMiO,EAAO,CACXlO,QACAC,UAEF7H,GAAI,SAAA20C,GAAK,MAAK,CACZ7+B,OACA7I,SAAU,2BAAK0nC,EAAM1nC,UAChBgyE,EAAmB3rE,EAAQkgI,EAAe19H,SAInDo+H,OAAQ,SAAA1B,GAAG,OAAIxyI,GAAI,SAAA20C,GAAK,MAAK,CAC3B1nC,SAAU,2BAAK0nC,EAAM1nC,UAAb,IACNulI,IAAKD,GAAaC,UAGtB2B,OAAQ,CACNC,WAAW,GAEbjG,SAAU,CACRkG,QAAQ,EACRC,SAAU,EACV3uC,OAAQ,EACR4uC,UAAW/M,EACXmI,YAAa,GACbtB,QAAS,IAAI57D,IACb+hE,YAAa,GACbzE,aAAc,CAAC,EAAG,GAClBE,YAAa,GACbjB,YAAa,IAAIv8D,IACjBgiE,UAAW,SAACzH,GAAsB,IAAjBsH,EAAiB,uDAAN,EAkB1B,OAjBAt0I,GAAI,gBACFmuI,EADE,EACFA,SADE,MAEG,CACLA,SAAU,2BAAKA,GAAP,IAKNmG,SAAUnG,EAASmG,UAAYA,EAAW,EAAI,EAAI,GAGlDE,YAAa,sBAAIrG,EAASqG,aAAb,CAA0B,CACrCxH,MACAsH,cACCjtF,MAAK,SAACnoD,EAAGC,GAAJ,OAAUD,EAAEo1I,SAAWn1I,EAAEm1I,kBAG9B,WACLt0I,GAAI,gBACFmuI,EADE,EACFA,SADE,MAEG,CACLA,SAAU,2BAAKA,GAAP,IAENmG,SAAUnG,EAASmG,UAAYA,EAAW,EAAI,EAAI,GAElDE,YAAarG,EAASqG,YAAYjhF,QAAO,SAAA50D,GAAC,OAAIA,EAAEquI,MAAQA,kBAStEsG,EAAUmB,WAAU,WAClB,MAKInB,EAAUlF,WAJZ96H,EADF,EACEA,OACAwC,EAFF,EAEEA,KACA7I,EAHF,EAGEA,SAHF,EAIEkhI,SAIaoG,UAAUjhI,kBAAkBu6H,WACrChvF,EAAqBvrC,IACvBA,EAAOoN,KAAO5K,EAAKlO,OAAS,EAC5B0L,EAAOqN,MAAQ7K,EAAKlO,MAAQ,EAC5B0L,EAAOsN,IAAM9K,EAAKjO,OAAS,EAC3ByL,EAAOuN,OAAS/K,EAAKjO,QAAU,GAE/ByL,EAAOwsB,OAAShqB,EAAKlO,MAAQkO,EAAKjO,OAGpCyL,EAAO8sB,yBAGP9sB,EAAO4R,qBAITohB,EAAGq4C,cAAc1xE,EAASulI,KAC1BlsG,EAAGs4C,QAAQ9oE,EAAKlO,MAAOkO,EAAKjO,WAC3B,SAAA8sC,GAAK,MAAI,CAACA,EAAM1nC,SAASulI,IAAK79F,EAAM7+B,QAAO4+H,KAC9C,IAAM//F,EAAQ2+F,EAAUlF,WAMxB,OAJIt4H,GAAM6+B,EAAMiqC,QAAQ9oE,EAAKlO,MAAOkO,EAAKjO,QAEzCyrI,EAAUmB,WAAU,SAAA9/F,GAAK,OAAIk+F,EAAWl+F,MAEjC2+F,GAGT,SAASqB,GAAWzjI,EAAU0jI,GAC5B,IAAMv6I,EAAQu6I,EAAK/5I,OAEnB,OADA+5I,EAAKz6I,KAAK+W,GACH,WAAW0jI,EAAKt6I,OAAOD,EAAO,IAIvC,IAAIw6I,GAAgB,GAChBC,GAAqB,GACrBC,GAAoB,GAClBC,GAAY,SAAA9jI,GAAQ,OAAIyjI,GAAWzjI,EAAU2jI,KAC7CI,GAAiB,SAAA/jI,GAAQ,OAAIyjI,GAAWzjI,EAAU4jI,KAGxD,SAASI,GAAIC,EAAStB,GACpB,IAAKl5I,GAAI,EAAGA,GAAIw6I,EAAQt6I,OAAQF,KAAKw6I,EAAQx6I,IAAGk5I,GAGlD,SAASuB,GAASvB,EAAWl/F,GAE3B,IAAI9hB,EAAQ8hB,EAAMw+F,MAAMh0B,WASxB,IAPwB,UAApBxqE,EAAMu+F,WAA8C,kBAAdW,IACxChhH,EAAQghH,EAAYl/F,EAAMw+F,MAAMp0B,YAChCpqE,EAAMw+F,MAAMr0B,QAAUnqE,EAAMw+F,MAAMp0B,YAClCpqE,EAAMw+F,MAAMp0B,YAAc80B,GAIvBl5I,GAAI,EAAGA,GAAIg6C,EAAMw5F,SAASqG,YAAY35I,OAAQF,KAAKg6C,EAAMw5F,SAASqG,YAAY75I,IAAGqyI,IAAI17C,QAAQ38C,EAAO9hB,GAMzG,OAHK8hB,EAAMw5F,SAASmG,UAAY3/F,EAAMrO,GAAGnE,QAAQwS,EAAMrO,GAAGnE,OAAOwS,EAAM9S,MAAO8S,EAAMrhC,QAEpFqhC,EAAMw5F,SAASxoC,OAAS1qG,KAAKiB,IAAI,EAAGy4C,EAAMw5F,SAASxoC,OAAS,GACjC,WAApBhxD,EAAMu+F,UAAyB,EAAIv+F,EAAMw5F,SAASxoC,OAoD3D,SAAS0vC,GAAoB1H,GAC3B,IACEoB,EACErB,EAAaC,GADfoB,cAEIuG,EAAQ,CACZC,QAAS,CAAC,SAAS,GACnBC,cAAe,CAAC,eAAe,GAC/BC,cAAe,CAAC,YAAY,GAC5BC,QAAS,CAAC,SAAS,GACnBC,cAAe,CAAC,eAAe,GAC/BC,YAAa,CAAC,aAAa,GAC3BjH,eAAgB,CAAC,gBAAgB,GACjC6C,cAAe,CAAC,eAAe,GAC/BqE,gBAAiB,CAAC,iBAAiB,GACnCC,qBAAsB,CAAC,sBAAsB,IAE/C,MAAO,CACL1B,WAAW,EACX5gC,SAAUr2G,OAAO+8B,KAAKo7G,GAAOS,QAAO,SAACC,EAAK9pJ,GAAN,mBAAC,eAAmB8pJ,GAApB,kBACjC9pJ,EAAM6iJ,EAAc7iJ,OACnB,IACJ4zH,QAAS,SAAAtlH,GACP,IAAIy7I,EAEJ,EAGItI,EAAMS,WAFRpuI,EADF,EACEA,IACAm0I,EAFF,EAEEA,OAEmB,MAArBA,EAAOhhE,YAA8BghE,EAAOhhE,aAC5CnzE,GAAI,SAAA20C,GAAK,MAAK,CACZw/F,OAAQ,2BAAKx/F,EAAMw/F,QAAb,IACJC,UAAW55I,QAGf2C,OAAO+4I,QAA0E,OAAjED,EAA6B,MAAV9B,OAAiB,EAASA,EAAO3gC,UAAoByiC,EAAmB,IAAI/iE,SAAQ,YAAmB,uBAAjB9rE,EAAiB,KAAX7M,EAAW,KACxI,cAA6B+6I,EAAMluI,GAAnC,GAAO+uI,EAAP,KAAkBxL,EAAlB,KACAnwI,EAAO6jD,iBAAiB83F,EAAW57I,EAAO,CACxCowI,gBAINx3D,WAAY,WACV,IAMMijE,EANN,EAGIzI,EAAMS,WAFRpuI,EADF,EACEA,IACAm0I,EAFF,EAEEA,OAGEA,EAAOC,YAGTj3I,OAAO+4I,QAAiD,OAAxCE,EAAoBjC,EAAO3gC,UAAoB4iC,EAAoB,IAAIljE,SAAQ,YAAmB,uBAAjB9rE,EAAiB,KAAX7M,EAAW,KAChH,GAAI45I,GAAUA,EAAOC,qBAAqBiC,YAAa,CACrD,IAAOF,EAAP,YAAoBb,EAAMluI,GAA1B,MACA+sI,EAAOC,UAAUl2F,oBAAoBi4F,EAAW57I,OAGpDyF,GAAI,SAAA20C,GAAK,MAAK,CACZw/F,OAAQ,2BAAKx/F,EAAMw/F,QAAb,IACJC,WAAW,WAWvB,IAAMkC,GAA8C,qBAAXrzD,OAAyByvD,kBAAwBA,YAE1F,SAAS6D,GAAT,GAEG,IADDv2I,EACC,EADDA,IAMA,OAJAs2I,IAA0B,WAExB,OADAt2I,EAAI,IAAIxT,SAAQ,kBAAM,SACf,kBAAMwT,GAAI,MAChB,IACI,K,IAGHw2I,G,kDACJ,aAAqB,qDAAN1pJ,EAAM,yBAANA,EAAM,uBACnB,+BAASA,KACJ6nD,MAAQ,CACXroD,OAAO,GAHU,E,qDAOrB,SAAkBA,GAChBO,KAAK26I,MAAMxnI,IAAI1T,K,oBAGjB,WACE,OAAOO,KAAK8nD,MAAMroD,MAAQ,KAAOO,KAAK26I,MAAMzwH,a,GAbpB27H,aAkB5B8D,GAAcC,yBAA2B,iBAAO,CAC9CnqJ,OAAO,IAGT,IAAMoqJ,GAAsBhE,cAAiB,WAU1CiE,GAAc,IATf5/H,EASe,EATfA,SACA6/H,EAQe,EARfA,SACAC,EAOe,EAPfA,SACAxK,EAMe,EANfA,OACAznH,EAKe,EALfA,GACA6M,EAIe,EAJfA,MACAqlH,EAGe,EAHfA,UACA3C,EAEe,EAFfA,OACG3M,EACY,iBACf,EAGK+D,EAAW,aACdE,QAAQ,EACRD,SAAU,CACRC,OAAQ,GACRY,OAAQ,IAEPA,IATL,mBAAO0K,EAAP,YACEnvI,EADF,EACEA,MACAC,EAFF,EAEEA,OASImvI,EAAYtE,SAAa,MAC/B,EAA0BA,YAAe,GAAzC,mBAAOuE,EAAP,KAAcC,EAAd,KACA,EAA0BxE,YAAe,GAAzC,mBAAOpmJ,EAAP,KAAc6qJ,EAAd,KAEA,GAAIF,EAAO,MAAMA,EAEjB,GAAI3qJ,EAAO,MAAMA,EAuBjB,OArBAgqJ,IAA0B,WACpB1uI,EAAQ,GAAKC,EAAS,GA2I9B,SAAgB8d,EAAShe,GAOjB,IACFyvI,EAIEC,EAAuBC,EAAwBC,EAAwBC,EALvE,yDAAJ,GANFlxG,EAMM,EANNA,GACAxwB,EAKM,EALNA,KAKM,IAJNykC,YAIM,MAJCk9F,GAAM,GAIP,EAHNtD,EAGM,EAHNA,OACAuD,EAEM,EAFNA,UACGlQ,EACG,iBAID1xH,IAGHA,EAAO,CACLlO,MAA0I,OAAlIyvI,EAA2E,OAAlDC,EAAyB3vI,EAAOyjI,oBAAyB,EAASkM,EAAuBK,aAAuBN,EAAwB,EACzKxvI,OAA6I,OAApI0vI,EAA4E,OAAlDC,EAAyB7vI,EAAOyjI,oBAAyB,EAASoM,EAAuBI,cAAwBL,EAAyB,IAIjL,IAAI1tB,EAAOguB,GAAMlxG,IAAIh/B,GACjBmwI,EAAgB,MAARjuB,OAAe,EAASA,EAAKiuB,MACrCnK,EAAgB,MAAR9jB,OAAe,EAASA,EAAK8jB,MACrCh5F,EAA4B,OAAnByiG,EAASzJ,QAAiB,EAASyJ,EAAOhJ,WAEvD,GAAI0J,GAASnjG,EAAO,MAGAznD,IAAds6I,EAAMgL,KAAsBtF,EAAGK,IAAI54F,EAAM1nC,SAASulI,IAAKD,GAAa/K,EAAMgL,OAAO79F,EAAMu/F,OAAO1M,EAAMgL,KAEpG79F,EAAM7+B,KAAKlO,QAAUkO,EAAKlO,OAAS+sC,EAAM7+B,KAAKjO,SAAWiO,EAAKjO,QAAQ8sC,EAAMiqC,QAAQ9oE,EAAKlO,MAAOkO,EAAKjO,QAGnF2/H,EAAMuL,SAAWp+F,EAAMw5F,SAASoG,UAAUxB,SAG9DgF,GAAuBpwI,GACvBmwI,OAAQ5qJ,GAIZ,IAAK4qJ,EAAO,CAGV,IAAME,EAAaC,GAAuB3xG,EAAI3+B,GAE1C6/H,EAAM3B,KACRmS,EAAWj2G,GAAGnB,SAAU,EACxBo3G,EAAW7xG,kBAAiB,SAAA0tG,GAAS,OAAIf,GAAQe,GAAW,OAS9D,IAAMl/F,GALNg5F,EAAQgF,GAAYC,GAAYC,GAAYC,GAAzB,aACjBxsG,GAAI0xG,EACJliI,QACG0xH,KAEe4G,WAEpB0J,EAAQI,GAAWC,gBAAgBxK,EAAO8J,GAAMv9I,QAAQqgD,IAAO,EAAO,MAEtEs9F,GAAM73I,IAAI2H,EAAQ,CAChBmwI,QACAnK,UAGEwG,GAAQx/F,EAAM30C,IAAI,CACpBm0I,OAAQA,EAAOxG,KAInB,GAAIA,GAASmK,EAOX,OANAI,GAAWE,gBAA8B1F,gBAAoB2F,GAAU,CACrE1K,MAAOA,EACPhoH,QAASA,EACT+xH,UAAWA,EACXl9I,OAAQmN,IACNmwI,EAAO,MAAM,eACVnK,EAEP,KAAM,uBA1NJxrG,CAAqBuwG,gBAAoB8D,GAAe,CACtDx2I,IAAKm3I,GACSzE,gBAAoBA,WAAgB,CAClDkE,SAAuBlE,gBAAoB6D,GAAO,CAChDv2I,IAAKk3I,KAENngI,IAAYigI,EAAU1lD,QANnB,YAAC,eAMgCk2C,GANjC,IAOJ1xH,KAAM,CACJlO,QACAC,UAEFssI,OAAQA,GAAUkB,QAGrB,CAACztI,EAAOC,EAAQkP,IACnBu/H,IAA0B,WACxB,IAAM1oF,EAAYopF,EAAU1lD,QAC5B,OAAO,kBAAMymD,GAAuBnqF,MACnC,IACiB8kF,gBAAoB,MAAO,CAC7C1F,IAAK+J,EACLnyH,GAAIA,EACJkyH,UAAWA,EACXD,SAAUA,EACVplH,MAAO,aACL7R,SAAU,WACVhY,MAAO,OACPC,OAAQ,OACRkjI,SAAU,UACPt5G,IAESihH,gBAAoB,SAAU,CAC5C1F,IAAKsL,YAAU,CAACtB,EAAWL,IAC3BllH,MAAO,CACLuoD,QAAS,UAEV48D,OAGL,SAAS2B,KACP,IAAM5K,EAAQ+E,aAAiB5qI,IAC/B,IAAK6lI,EAAO,KAAM,0DAClB,OAAOA,EAET,SAAS6K,KAAgD,IAAvCC,EAAuC,uDAA5B,SAAA9jG,GAAK,OAAIA,GAAO+jG,EAAY,uCACvD,OAAOH,KAAWE,EAAUC,GAE9B,SAASC,GAASznI,GAA8B,IAApB0nI,EAAoB,uDAAH,EACrCnE,EAAY8D,KAAWnK,WAAWD,SAASsG,UAE3CzH,EAAM0F,SAAaxhI,GAIzB,OAHAwhI,mBAAsB,WAAY1F,EAAI17C,QAAUpgF,IAAW,CAACA,IAE5DwhI,mBAAsB,kBAAM+B,EAAUzH,EAAK4L,KAAiB,CAACA,EAAgBnE,IACtE,KAGT,SAASoE,GAAW3iI,GAClB,IAAM/K,EAAO,CACX2tI,MAAO,GACPxzH,UAAW,IAeb,OAZIpP,GACFA,EAAO4O,UAAS,SAAAqoH,GACVA,EAAI/lI,OACN+D,EAAK2tI,MAAM3L,EAAI/lI,MAAQ+lI,GAGrBA,EAAInmH,WAAa7b,EAAKma,UAAU6nH,EAAInmH,SAAS5f,QAC/C+D,EAAKma,UAAU6nH,EAAInmH,SAAS5f,MAAQ+lI,EAAInmH,aAKvC7b,EAOT,SAAS4tI,GAAU95G,EAAYi0E,GAC7B,OAAO,SAAU8lC,GAEf,IAAM/kC,EAAS,IAAI+kC,EACf/5G,GAAYA,EAAWg1E,GAHK,2BAAPglC,EAAO,iCAAPA,EAAO,kBAKhC,OAAOzsJ,QAAQ0sJ,IAAID,EAAMhrH,KAAI,SAAAgrH,GAAK,OAAI,IAAIzsJ,SAAQ,SAACwwH,EAAKjxH,GAAN,OAAiBkoH,EAAOW,KAAKqkC,GAAO,SAAA9tI,GAChFA,EAAK02B,OAAO1kC,OAAOm9B,OAAOnvB,EAAM0tI,GAAW1tI,EAAK02B,QACpDm7E,EAAI7xG,KACH+nG,GAAY,SAAA5mH,GAAK,OAAIP,EAAO,kBAAD,OAAmBktJ,EAAnB,aAA6B3sJ,EAAMqxF,qBAIrE,SAASw7D,GAAUH,EAAOC,EAAOh6G,EAAYi0E,GAE3C,IAAMh5E,EAAOzvB,MAAMC,QAAQuuI,GAASA,EAAQ,CAACA,GACvCjvB,EAAUovB,IAAQ,WAAR,GAASL,GAAU95G,EAAYi0E,GAAa8lC,GAA5C,mBAAsD9+G,KAEtE,OAAOzvB,MAAMC,QAAQuuI,GAASjvB,EAAUA,EAAQ,GAGlDmvB,GAAUE,QAAU,SAAUL,EAAOC,EAAOh6G,GAC1C,IAAM/E,EAAOzvB,MAAMC,QAAQuuI,GAASA,EAAQ,CAACA,GAC7C,OAAOG,IAASC,QAAT,MAAAD,IAAQ,CAASL,GAAU95G,GAAa+5G,GAAhC,mBAA0C9+G,MAG3Di/G,GAAUp2G,MAAQ,SAAUi2G,EAAOC,GACjC,IAAM/+G,EAAOzvB,MAAMC,QAAQuuI,GAASA,EAAQ,CAACA,GAC7C,OAAOG,IAASr2G,MAAT,MAAAq2G,IAAQ,CAAOJ,GAAP,mBAAiB9+G,MAGlC,IAAM29G,GAAQ,IAAIplE,IACZglE,GAAQ,CAAC,SAAU,WAAY,cACrC,GA3SA,SAAoBI,GAClB,IACIzuI,EADA41G,GAAU,EAGd,SAASoC,EAAKyyB,GAcZ,GAbA70B,GAAU,EACV51G,EAAS,EAET8rI,GAAIL,GAAehB,GAEnBgE,EAAM3kE,SAAQ,SAAA22C,GACZ,IAAMl1E,EAAQk1E,EAAK8jB,MAAMS,WAErBz5F,EAAMw5F,SAASkG,SAA+B,WAApB1/F,EAAMu+F,WAA0Bv+F,EAAMw5F,SAASxoC,OAAS,KAAIv8F,GAAUgsI,GAASvB,EAAWl/F,OAG1HugG,GAAIJ,GAAoBjB,GAEpBzqI,EAAS,EAAG,OAAO48B,sBAAsBo7E,GACxC8zB,GAAIH,GAAmBlB,GAE5B70B,GAAU,EAqBZ,MAAO,CACLoC,OACAyxB,WApBF,SAASA,EAAWl+F,GAClB,IAAKA,EAAO,OAAOkjG,EAAM3kE,SAAQ,SAAA22C,GAAI,OAAIgpB,EAAWhpB,EAAK8jB,MAAMS,gBAC3Dz5F,EAAMkxF,IAAOlxF,EAAMw5F,SAASkG,QAA8B,UAApB1/F,EAAMu+F,YAEhDv+F,EAAMw5F,SAASxoC,OAAS1qG,KAAKgB,IAAI,GAAI04C,EAAMw5F,SAASxoC,OAAS,GAExDqZ,IACHA,GAAU,EACVh5E,sBAAsBo7E,MAaxB0xB,QATF,SAAiBe,GAA2C,IAAhCC,IAAgC,yDAAPn/F,EAAO,uCACtDm/F,GAAkBoB,GAAIL,GAAehB,GACpCl/F,EAA8EygG,GAASvB,EAAWl/F,GAA3FkjG,EAAM3kE,SAAQ,SAAA22C,GAAI,OAAIurB,GAASvB,EAAWhqB,EAAK8jB,MAAMS,eAC7D0F,GAAkBoB,GAAIJ,GAAoBjB,KAuQ9CyF,CAAWzB,IAFbhF,GADF,GACEA,WACAC,GAFF,GAEEA,QAEF,GA1nCA,SAAwB+E,GAEtB,SAAS0B,EAAUlS,EAAnB,GAU8B,EAT5BtwH,SAS4B,EAR5B7qB,IAQ4B,EAP5B8gJ,IAO4B,IACxBwM,EAPDhS,EAMyB,0EAA1B,GADCiS,GACyB,EAJ5B1iI,SAI4B,EAH5B7qB,IAG4B,EAF5B8gJ,IAE4B,kBAAtB0M,EAAsB,wDAGtBtJ,EAA+E,OAAjEoJ,EAA8B,MAAZnS,OAAmB,EAASA,EAAS2G,OAAiBwL,EAAkB,GACxGtD,EAAU/4I,OAAO+4I,QAAQ1O,GACzBmS,EAAU,GAEhB,GAAID,EAGF,IAFA,IAAME,EAAez8I,OAAO+8B,KAAKu/G,GAExB9+I,EAAI,EAAGA,EAAIi/I,EAAa/+I,OAAQF,IAAU6sI,EAAMqS,eAAeD,EAAaj/I,KAAKu7I,EAAQ5/F,QAAQ,CAACsjG,EAAaj/I,GAAIq3I,EAAU,WAGxIkE,EAAQhjE,SAAQ,YAAkB,IAC5B4mE,EAD4B,mBAAhB5tJ,EAAgB,KAAXG,EAAW,KAIhC,IAA2C,OAAtCytJ,EAAmBzS,EAAS2G,SAAkB8L,EAAiBzH,WAAqB,WAARnmJ,KAE7EimJ,EAAa9lJ,EAAOotJ,EAASvtJ,IAAjC,CAEA,GAAI,mDAAmDsb,KAAKtb,GAAM,OAAOytJ,EAAQx/I,KAAK,CAACjO,EAAKG,GAAO,EAAM,KAEzG,IAAI6pJ,EAAU,GACVhqJ,EAAIwlJ,SAAS,OAAMwE,EAAUhqJ,EAAIwjE,MAAM,MAC3CiqF,EAAQx/I,KAAK,CAACjO,EAAKG,GAAO,EAAO6pJ,QAEnC,IAAM6D,EAAW,eAAKvS,GAItB,OAFI4I,EAAWkC,eAAiBlC,EAAWkC,cAAcxlJ,OAAMitJ,EAASjtJ,KAAOsjJ,EAAWkC,cAAcxlJ,MACpGsjJ,EAAWkC,eAAiBlC,EAAWkC,cAAc1L,SAAQmT,EAASnT,OAASwJ,EAAWkC,cAAc1L,QACrG,CACL8S,eACAK,WACAJ,WAIJ,SAAS/G,EAAWvL,EAAUl8H,GAC5B,IAAI6uI,EAAkBC,EAAgBC,EAxGxBtI,EA2GRxB,EAAgF,OAAlE4J,EAA+B,MAAZ3S,OAAmB,EAASA,EAAS2G,OAAiBgM,EAAmB,GAC1GnwB,EAAOumB,EAAWvmB,KAClBypB,EAA2G,OAA9F2G,EAAyB,MAARpwB,GAAyC,MAAjBA,EAAKukB,cAAd,EAA0CvkB,EAAKukB,YAAsB6L,EAAiB,GACzI,GA9GcrI,EAiHAzmI,IAjHgBymI,EAAImI,UAAcnI,EAAI+H,QAiH9BxuI,EAAOouI,EAAUlS,EAAUl8H,GAF/C4uI,EADF,EACEA,SACAJ,EAFF,EAEEA,QAEIQ,EAAe/J,EAAW5B,WAqEhC,GAnEInH,EAAS2G,QAAO3G,EAAS2G,MAAMsE,cAAgByH,GACnDJ,EAAQzmE,SAAQ,YAAiC,IChgBpBg2D,EDggBoB,mBAA/Bh9I,EAA+B,KAA1BG,EAA0B,KAAnB+tJ,EAAmB,KAAVlgH,EAAU,KAC3CmgH,EAAkBhT,EAClBiT,EAAaD,EAAgBnuJ,GAEjC,GAAIguC,EAAKr/B,WACPy/I,EAAapgH,EAAK67G,QAAO,SAACC,EAAK9pJ,GAAN,OAAc8pJ,EAAI9pJ,KAAMm7I,MAE7BiT,EAAWt6I,KAAM,CACnC,MAAkCk6B,EAAK4kE,UAAvC,GCxgBuBoqC,EDwgBvB,ECvgBD,OAAAC,EAAA,GAAeD,IAAQ,OAAAqR,EAAA,GAAgBrR,IAAQ,OAAAQ,EAAA,GAA2BR,IAAQ,OAAAS,EAAA,MDugB1EviI,EAAP,KACAizI,EADA,WACiCv7C,UAAUi3C,QAAO,SAACC,EAAK9pJ,GAAN,OAAc8pJ,EAAI9pJ,KAAMm7I,GAC1En7I,EAAMkb,EASV,GAAI/a,IAAU2lJ,EAAU,SACtB,GAAIsI,GAAcA,EAAWh6I,YAE3BjU,EAAQ,IAAIiuJ,EAAWh6I,YAAYy5I,EAASjtJ,WACvC,GAAIutJ,EAAgB/5I,YAAa,CAGtC,IAAMk6I,EAAmB,IAAIH,EAAgB/5I,YAAY+5I,EAAgBrM,MAAMsE,cAAcxlJ,MAC7FT,EAAQmuJ,EAAiBF,GAErBE,EAAiBltI,SAASktI,EAAiBltI,eAC1CjhB,EAAQ,EAIjB,GAAI+tJ,EACE/tJ,EAAO+jJ,EAAW58B,SAAStnH,GAAOG,SAAkB+jJ,EAAW58B,SAAStnH,GAC5EkkJ,EAAW5B,WAAarxI,OAAO+8B,KAAKk2G,EAAW58B,UAAU34G,YAEtD,GAAIy/I,GAAcA,EAAWt6I,MAAQs6I,EAAWxwI,MAAQwwI,aAAsBzM,UAAe,CAEpE,MAA1B,GAAIpjI,MAAMC,QAAQre,GACZiuJ,EAAWp0I,UAAWo0I,EAAWp0I,UAAU7Z,IAAY,EAAAiuJ,GAAWt6I,IAAX,oBAAkB3T,SAE1E,GAAIiuJ,EAAWxwI,MAAQzd,GAASA,EAAMiU,aAAeg6I,EAAWh6I,YAAY8G,OAAS/a,EAAMiU,YAAY8G,KAAMkzI,EAAWxwI,KAAKzd,QAE3H,QAAca,IAAVb,EAAqB,CAC1B,IAAMg6B,EAAUi0H,aAAsBzM,SAEjCxnH,GAAWi0H,EAAWG,UAAWH,EAAWG,UAAUpuJ,GAClDiuJ,aAAsBzM,UAAgBxhJ,aAAiBwhJ,SAAcyM,EAAW14H,KAAOv1B,EAAMu1B,KAC/F04H,EAAWt6I,IAAI3T,IAGjBinJ,EAAUP,QAAU1sH,GAASi0H,EAAWI,4BAInDL,EAAgBnuJ,GAAOG,GAGlBinJ,EAAUP,QAAUsH,EAAgBnuJ,aAAgB2hJ,YAAewM,EAAgBnuJ,GAAK6c,SAAW8kI,gBAG5G8M,EAAmBtT,MAGjBiM,EAAUnF,UAAY9G,EAASv/C,SAAWqyD,IAAiB/J,EAAW5B,WAAY,CAEpF,IAAMn0I,EAAQi5I,EAAUnF,SAASwB,YAAYz1I,QAAQmtI,GACjDhtI,GAAS,GAAGi5I,EAAUnF,SAASwB,YAAYr1I,OAAOD,EAAO,GAEzD+1I,EAAW5B,YAAY8E,EAAUnF,SAASwB,YAAYx1I,KAAKktI,GAKjE,OADIsS,EAAQ9+I,QAAiD,OAAtCq/I,EAAmB7S,EAAS2G,QAAkBkM,EAAiBr3H,QAAQ+3H,EAAevT,GACtGA,EAGT,SAASsT,EAAmBtT,GAC1B,IAAIwT,EAAkBC,EAEhBnmG,EAA+C,OAAtCkmG,EAAmBxT,EAAS2G,QAA6E,OAAlD8M,EAAwBD,EAAiBhxB,OAA2D,MAAlCixB,EAAsB1M,cAAlG,EAA8H0M,EAAsB1M,WAC5Mz5F,GAAmC,IAA1BA,EAAMw5F,SAASxoC,QAAchxD,EAAMk+F,aAGlD,SAAS+H,EAAevT,GACD,MAArBA,EAAS19H,UAA4B09H,EAAS19H,SAAS09H,GAGzD,SAAS0T,EAAejhJ,EAAxB,EAGG+vH,EAAMmxB,EAAaC,GAAwB,IAExC5T,EAFwC,IAF5Cv6I,YAE4C,MAFrC,GAEqC,EADzC06I,EACyC,iBACxCpgI,EAAO,GAAH,OAAMtN,EAAK,GAAG4B,eAAd,OAA8B5B,EAAKY,MAAM,IAKjD,IAAKi3I,EAAQ9nB,IAASoxB,EAAwB,CAK5CpxB,EAJW,SAALl9H,EAAKq7H,GACT,OAAKA,EAAKkzB,OAA0EvuJ,EAAGq7H,EAAKkzB,QAAnElzB,EAAKmzB,WAAanzB,EAAKmzB,UAAUC,cAGrDzuJ,CAAGsuJ,GAIZ,IAAKpxB,IAAS8nB,EAAQ9nB,GAAO,KAAM,qBAAN,OAA2BziH,EAA3B,KAE7B,GAAa,cAATtN,EAAsB,CACxB,QAAqB5M,IAAjBs6I,EAAMtxH,OAAsB,KAAM,2CAEtCmxH,EAAW+K,EADI5K,EAAMtxH,OACM,CACzB2zG,OACAwoB,WAAW,QAER,CACL,IAAM73I,EAAS03I,EAAU9qI,IAASymI,EAAMzmI,GACxC,IAAK5M,EAAQ,KAAM,GAAN,OAAS4M,EAAT,qLAGbigI,EAAW+K,EAAQ,YAAI53I,EAAL,YAAe1N,IAAO,CACtC+8H,OACAyoB,cAAe,CACbxlJ,KAAsB,IAAhBA,EAAK+N,OAAe,KAAO/N,KAwBvC,MAlBM,cAAe06I,IACfpgI,EAAKi0I,SAAS,YAChB7T,EAAQ,aACNZ,OAAQ,YACLY,GAEIpgI,EAAKi0I,SAAS,cACvB7T,EAAQ,aACNZ,OAAQ,YACLY,KAQToL,EAAWvL,EAAUG,GACdH,EAGT,SAASiU,EAAYC,EAAgB/zH,GACnC,IAAIg0H,GAAe,EAEnB,GAAIh0H,EAAO,CAET,GAAIA,EAAMi0H,YACHvO,EAAGhE,IAAIqS,EAAe/zH,EAAMi0H,gBAAeF,EAAe/zH,EAAMi0H,aAAe,IACpFF,EAAe/zH,EAAMi0H,aAAathJ,KAAKqtB,QAClC,GAAIA,EAAMk0H,aACVxO,EAAGC,IAAIoO,EAAe/zH,EAAMk0H,aAAa,OAAMH,EAAe/zH,EAAMk0H,aAAa,IAAM,IAC5FH,EAAe/zH,EAAMk0H,aAAa,IAAIl0H,EAAMk0H,aAAa,IAAMl0H,OAC1D,GAAIA,EAAMo/G,SAAWsG,EAAGE,IAAI5lH,EAAMo/G,QACvC2U,EAAe/zH,EAAMo/G,QAAUp/G,OAC1B,GAAI0lH,EAAGhE,IAAI1hH,EAAMm0H,WAAY,CAClC,IAAOC,EAAP,YAAmBp0H,EAAMm0H,UAAzB,MAEIzO,EAAGG,IAAIuO,IAAa1O,EAAGE,IAAImO,EAAeK,IAC5CL,EAAeK,GAAUp0H,GAChB0lH,EAAGE,IAAIwO,IAChBA,EAASp0H,EAAO+zH,QAET/zH,EAAM9C,YAAc62H,EAAe72H,aAE5C62H,EAAetlI,IAAIuR,GACnBg0H,GAAe,GAGZA,GAGHD,EAAevN,MAAMp5F,QAAQz6C,KAAKqtB,GAG/BA,EAAMwmH,OACToE,EAAQ5qH,EAAO,IAGjBA,EAAMwmH,MAAMnrH,OAAS04H,EACrBX,EAAepzH,GACfmzH,EAAmBnzH,IAIvB,SAASq0H,EAAaN,EAAgB/zH,EAAOs0H,GAC3C,IAAItoE,GAAQ,EAEZ,GAAIhsD,EAAO,CACT,GAAIA,EAAMi0H,YAAa,CACrB,IAAMhhJ,EAAQ8gJ,EAAe/zH,EAAMi0H,aAC9BvO,EAAGhE,IAAIzuI,KAAQ8gJ,EAAe/zH,EAAMi0H,aAAe,IACxDhhJ,EAAMH,OAAOG,EAAMP,QAAQ4hJ,GAAc,EAAGt0H,OACvC,IAAIA,EAAMk0H,cAAgBl0H,EAAMo/G,SAAWsG,EAAGE,IAAI5lH,EAAMo/G,QAE7D,OAAO0U,EAAYC,EAAgB/zH,GAC9B,GAAIA,EAAM9C,YAAc62H,EAAe72H,WAAY,CACxD8C,EAAM3E,OAAS04H,EACf/zH,EAAM3c,cAAc,CAClB/Q,KAAM,UAER,IAAMiiJ,EAAeR,EAAexkI,SAASw8C,QAAO,SAAAyoF,GAAO,OAAIA,IAAYx0H,KACrEntB,EAAQ0hJ,EAAa7hJ,QAAQ4hJ,GACnCP,EAAexkI,SAAf,sBAA8BglI,EAAarhJ,MAAM,EAAGL,IAApD,CAA4DmtB,GAA5D,YAAsEu0H,EAAarhJ,MAAML,KACzFm5E,GAAQ,GAGLA,GACH+nE,EAAevN,MAAMp5F,QAAQz6C,KAAKqtB,GAG/BA,EAAMwmH,OACToE,EAAQ5qH,EAAO,IAGjBA,EAAMwmH,MAAMnrH,OAAS04H,EACrBX,EAAepzH,GACfmzH,EAAmBnzH,IAIvB,SAASy0H,EAAgBxhJ,EAAOooB,GAAyB,IAAjBvV,EAAiB,wDACnD7S,GAAO,YAAIA,GAAOy4E,SAAQ,SAAA1rD,GAAK,OAAI00H,EAAYr5H,EAAQ2E,EAAOla,MAGpE,SAAS4uI,EAAYX,EAAgB/zH,EAAOla,GAC1C,GAAIka,EAAO,CACT,IAAI20H,EAAuBC,EAW3B,GATI50H,EAAMwmH,QACRxmH,EAAMwmH,MAAMnrH,OAAS,MAG+B,OAAjDs5H,EAAwBZ,EAAevN,QAAkBmO,EAAsBvnG,UAClF2mG,EAAevN,MAAMp5F,QAAU2mG,EAAevN,MAAMp5F,QAAQ2e,QAAO,SAAAh3D,GAAC,OAAIA,IAAMirB,MAI5EA,EAAMi0H,YACRF,EAAe/zH,EAAMi0H,aAAeF,EAAe/zH,EAAMi0H,aAAaloF,QAAO,SAAAh3D,GAAC,OAAIA,IAAMirB,UACnF,GAAIA,EAAMk0H,oBACRH,EAAe/zH,EAAMk0H,aAAa,IAAIl0H,EAAMk0H,aAAa,SAC3D,GAAIl0H,EAAMo/G,SAAWsG,EAAGE,IAAI5lH,EAAMo/G,QACvC2U,EAAe/zH,EAAMo/G,QAAU,UAC1B,GAAIsG,EAAGhE,IAAI1hH,EAAMm0H,WAAY,CAClC,IAASU,EAAT,YAAqB70H,EAAMm0H,UAA3B,MAEIzO,EAAGG,IAAIgP,IAAanP,EAAGE,IAAImO,EAAec,IAC5Cd,EAAec,GAAU70H,GAChB0lH,EAAGE,IAAIiP,IAChBA,EAAS70H,EAAO+zH,QAEb,GAAI/zH,EAAM9C,WAAY,CAC3B,IAAI43H,EAEJf,EAAe52H,OAAO6C,GAEc,OAA/B80H,EAAe90H,EAAMwmH,QAAkBsO,EAAazyB,MAluBjE,SAA6B8jB,EAAOz3H,GAClC,IACEi4H,EACER,EAAMS,WADRD,SAGFA,EAASwB,YAAcxB,EAASwB,YAAYp8E,QAAO,SAAA4yC,GAAC,OAAIA,IAAMjwF,KAC9Di4H,EAAS8B,YAAc9B,EAAS8B,YAAY18E,QAAO,SAAA4yC,GAAC,OAAIA,IAAMjwF,KAC9Di4H,EAASE,QAAQn7D,SAAQ,SAAC7mF,EAAOH,GAC3BG,EAAMohJ,cAAgBv3H,GAAU7pB,EAAM6pB,SAAWA,GACnDi4H,EAASE,QAAQxnG,OAAO36C,MA0tBpBqwJ,CAAoB/0H,EAAMwmH,MAAMnkB,KAAMriG,GAa1C,IAKMg1H,EALAC,EAA+C,OAAhCL,EAAgB50H,EAAMwmH,YAAiB,EAASoO,EAAc/J,UAC7EqK,OAA4BxvJ,IAAZogB,EAA0C,OAAlBka,EAAMla,UAAqBmvI,EAAcnvI,EAGvF,IAAKmvI,EAGHR,EAAiD,OAAhCO,EAAgBh1H,EAAMwmH,YAAiB,EAASwO,EAAc5nG,QAASptB,EAAOk1H,GAC/FT,EAAgBz0H,EAAMzQ,SAAUyQ,EAAOk1H,GAIrCl1H,EAAMwmH,eACDxmH,EAAMwmH,MAAMnkB,YACZriG,EAAMwmH,MAAMp5F,eACZptB,EAAMwmH,MAAMx6B,gBACZhsF,EAAMwmH,MAAMsE,cACdmK,UAAoBj1H,EAAMwmH,OAI7B0O,GAAiBl1H,EAAMla,SAA0B,UAAfka,EAAM1tB,MAC1C6iJ,mCAAyBC,yBAAuB,WAC9C,IACEp1H,EAAMla,UACN,MAAO1M,QAMb+5I,EAAmBY,IAkKvB,MAAO,CACLrD,WA7HiB2E,IAAW,CAC5B59B,IAAK69B,eACL/B,iBACAmB,cACAZ,cACAyB,mBAAoBzB,EACpBO,eACAmB,kBAAkB,EAClBC,kBAAkB,EAClBC,mBAAmB,EAEnBC,gBAAiBjQ,EAAGE,IAAIr4B,YAAcA,gBAAa7nH,EAEnDkwJ,cAAelQ,EAAGE,IAAI6G,cAAgBA,kBAAe/mJ,EAErD6nH,WAAYm4B,EAAGE,IAAIr4B,YAAcA,gBAAa7nH,EAE9C+mJ,aAAc/G,EAAGE,IAAI6G,cAAgBA,kBAAe/mJ,EACpDmwJ,WAAY,EACZC,uBAAwB,SAAC/B,EAAgB/zH,GACvC,MAGIqqH,EAAa0J,EAAgB/zH,GAF/BomC,EADF,EACEA,UACAi8D,EAFF,EAEEA,KAGFj8D,EAAUogF,MAAMnkB,KAAOA,EACvByxB,EAAY1tF,EAAWpmC,IAEzB+1H,yBAA0B,SAAChC,EAAgB/zH,GAAjB,OAA2B00H,EAAYrK,EAAa0J,EAAgB/zH,GAAOomC,UAAWpmC,IAChHg2H,wBAAyB,SAACjC,EAAgB/zH,EAAOs0H,GAAxB,OAAwCD,EAAahK,EAAa0J,EAAgB/zH,GAAOomC,UAAWpmC,EAAOs0H,IAEpI2B,cA/B4B,SA+BdpW,EAAUvtI,EAAM4jJ,EAAUC,GACtC,GAAItW,EAAS2G,MAAMqE,WAAasL,EAASznI,QAAUynI,EAASznI,SAAWmxH,EAAU,MAAO,EAAC,GAEvF,MAIIsW,EAHF7wJ,KAAM8wJ,OADR,MACkB,GADlB,EAGKC,GACDF,EAFF5mI,SAFF,YAII4mI,EAJJ,IAKA,EAIID,EAHF5wJ,KAAMgxJ,OADR,MACkB,GADlB,EAGKC,GACDL,EAFF3mI,SAFF,YAII2mI,EAJJ,IAMA,GAAIE,EAAQ1S,MAAK,SAAC7+I,EAAOgO,GAAR,OAAkBhO,IAAUyxJ,EAAQzjJ,MAAS,MAAO,EAAC,GAEtE,IAAMu8F,EAAO2iD,EAAUlS,EAAUwW,EAASE,GAAS,GACnD,OAAInnD,EAAK+iD,QAAQ9+I,OAAe,EAAC,EAAO+7F,GAEjC,MAIXonD,aAtD4B,SAsDf3W,EAtDe,EAsDgBvtI,EAAM4jJ,EAAUC,EAAU7F,GAAO,uBAArDmG,EAAqD,KAAxCrnD,EAAwC,KAEvEqnD,EA1FR,SAAwB5W,EAAUvtI,EAAM6jJ,EAAU7F,GAChD,IAAIoG,EAEEr7H,EAAgD,OAAtCq7H,EAAmB7W,EAAS2G,YAAiB,EAASkQ,EAAiBr7H,OACvF,GAAKA,EAAL,CACA,IAAMs7H,EAAcpD,EAAejhJ,EAAM6jJ,EAAUtW,EAAS2G,MAAMnkB,MAKrD,cAAT/vH,GAAwButI,EAAStwH,WACnCswH,EAAStwH,SAASm8D,SAAQ,SAAA1rD,GAAK,OAAI8zH,EAAY6C,EAAa32H,MAC5D6/G,EAAStwH,SAAW,IAGtBswH,EAAS2G,MAAMp5F,QAAQs+B,SAAQ,SAAA1rD,GAAK,OAAI8zH,EAAY6C,EAAa32H,MAEjE6/G,EAAS2G,MAAMp5F,QAAU,GACzBsnG,EAAYr5H,EAAQwkH,GACpBiU,EAAYz4H,EAAQs7H,GAIpB,CAACrG,EAAOA,EAAMsG,WAAWlrE,SAAQ,SAAA4kE,GACjB,OAAVA,IACFA,EAAMqD,UAAYgD,EAEdrG,EAAM9K,MACiB,oBAAd8K,EAAM9K,IAAoB8K,EAAM9K,IAAImR,GAAkBrG,EAAM9K,IAAI17C,QAAU6sD,QA8DxEE,CAAehX,EAAUvtI,EAAM6jJ,EAAU7F,GACrDlF,EAAWvL,EAAUzwC,IAG5B0nD,aA5D4B,SA4DfjX,GACPA,EAAS3iH,aACX2iH,EAAS9jH,SAAU,EACnBo3H,EAAmBtT,KAIvBkX,eAnE4B,SAmEblX,EAAUG,IACnBH,EAAS3iH,YAA+B,MAAjB8iH,EAAMjkH,SAAmBikH,EAAMjkH,WACxD8jH,EAAS9jH,SAAU,EACnBo3H,EAAmBtT,KAIvBmX,iBA1E4B,WA2E1B,MAAM,IAAIn+I,MAAM,yCAGlBo+I,kBA9E4B,SA8EVpX,GAEhB,OAAOA,GAGTqX,mBAnF4B,SAmFTC,GACjB,OAAO1M,GAGT2M,oBAvF4B,SAuFRC,GAClB,OAAOA,GAGTC,mBA3F4B,aA6F5BC,wBA7F4B,WA8F1B,OAAO,GAGTC,YAjG4B,aAoG5BC,0BApG4B,WAqG1B,OAAO,GAGTC,iBAxG4B,WAyG1B,OAAO,MAGTC,mBA5G4B,SA4GT/D,GACjBhJ,EAAQgJ,IAGVgE,iBAhH4B,aAmH5BC,qBAnH4B,WAoH1B,OAAO,GAGTC,eAvH4B,WAwH1B,OAAO,KAMT1M,cAimBA2M,GAFFrH,GADF,GACEA,WACAtF,GAFF,GAEEA,WAGIqF,GAAyB,SAAC3xG,EAAI3+B,GAClC,IAhmBiBiqI,EAgmBX4N,EAA+B,oBAAPl5G,EAAoBA,EAAG3+B,GAAU2+B,EAC/D,GAjmBkC,OAAjBsrG,EAimBF4N,IAjmB2B5N,EAAIzvG,OAimBd,OAAOq9G,EACvC,IAAM59G,EAAW,IAAIisG,gBAAJ,aACflzD,gBAAiB,mBACjBhzE,OAAQA,EACRgtE,WAAW,EACXlzE,OAAO,GACJ6kC,IAGL,OADIA,GAAIssG,GAAWhxG,EAAU0E,GACtB1E,GAuFT,SAASy2G,GAAT,GAKG,IAJD1K,EAIC,EAJDA,MACAhoH,EAGC,EAHDA,QACA+xH,EAEC,EAFDA,UACAl9I,EACC,EADDA,OAeA,OAbAk4I,aAAgB,WACd,IAAM/9F,EAAQg5F,EAAMS,WAEpBz5F,EAAM30C,KAAI,SAAA20C,GAAK,MAAK,CAClBw5F,SAAU,2BAAKx5F,EAAMw5F,UAAb,IACNkG,QAAQ,QAIY,MAAxB1/F,EAAMw/F,OAAOr0B,SAA2BnrE,EAAMw/F,OAAOr0B,QAAQtlH,GAEzDk9I,GAAWA,EAAU/iG,KACxB,IACiB+9F,gBAAoB5qI,GAAQuwI,SAAU,CACxDhsJ,MAAOshJ,GACNhoH,GAGL,SAASoyH,GAAuBpwI,EAAQuJ,GACtC,IAAM24G,EAAOguB,GAAMlxG,IAAIh/B,GACjBmwI,EAAgB,MAARjuB,OAAe,EAASA,EAAKiuB,MAE3C,GAAIA,EAAO,CACT,IAAMnjG,EAAgB,MAARk1E,OAAe,EAASA,EAAK8jB,MAAMS,WAC7Cz5F,IAAOA,EAAMw5F,SAASkG,QAAS,GACnC6D,GAAWE,gBAAgB,KAAMN,EAAO,MAAM,WACxCnjG,GACFogE,YAAW,WACT,IAAI0qC,EAAWC,EAAuBC,EAEX,MAA3BhrG,EAAMw/F,OAAOhhE,YAA8Bx+B,EAAMw/F,OAAOhhE,aAC9B,OAAzBssE,EAAY9qG,EAAMrO,KAA0E,OAAlDo5G,EAAwBD,EAAUziE,cAAiE,MAAjC0iE,EAAsBpyI,SAA2BoyI,EAAsBpyI,UACzJ,OAA1BqyI,EAAahrG,EAAMrO,KAAsD,MAA/Bq5G,EAAWrhE,kBAAoCqhE,EAAWrhE,mBAU/G,SAAiB6uD,GACXA,EAAI7/H,SAAwB,UAAb6/H,EAAIrzI,MAAkBqzI,EAAI7/H,UAE7C,IAAK,IAAMqC,KAAKw9H,EAAK,CACnB,IAAIyS,EAAUC,EACqB,OAAlCD,GAAYC,EAAOlwI,GAAGrC,UAA4BsyI,EAAS9kJ,KAAK+kJ,UAC1D1S,EAAIx9H,IAfLrC,CAAQqnC,GACRkjG,GAAMhxG,OAAOl/B,GACTuJ,GAAUA,EAASvJ,KACtB,SAgBCuwI,GAAW4H,IAEvB,SAASC,GAAahpI,EAAU62C,GAC9B,OAAOsqF,GAAW6H,aAAahpI,EAAU62C,EAAW,KAAM,MAG5DsqF,GAAW8H,mBAAmB,CAC5BC,WAAoD,EACpDC,oBAAqB,qBACrBx2I,QAAS,Y,6BExuDI,SAASy2I,EAAgBhT,EAAKjhJ,EAAKG,GAYhD,OAXIH,KAAOihJ,EACThwI,OAAO6L,eAAemkI,EAAKjhJ,EAAK,CAC9BG,MAAOA,EACP62B,YAAY,EACZD,cAAc,EACdykH,UAAU,IAGZyF,EAAIjhJ,GAAOG,EAGN8gJ,EAZT,mC,+FCIe,SAASiT,EAAmBlX,GACzC,OCJa,SAA4BA,GACzC,GAAIz+H,MAAMC,QAAQw+H,GAAM,OAAO,OAAAmX,EAAA,GAAiBnX,GDGzC,CAAkBA,IAAQ,OAAAqR,EAAA,GAAgBrR,IAAQ,OAAAQ,EAAA,GAA2BR,IELvE,WACb,MAAM,IAAIx1G,UAAU,wIFIwE,K,6BGL9F,8CACe,SAAS4sH,EAA2Bn6C,EAAGo6C,GACpD,IAAIC,EAEJ,GAAsB,qBAAXv+I,QAAgD,MAAtBkkG,EAAElkG,OAAOC,UAAmB,CAC/D,GAAIuI,MAAMC,QAAQy7F,KAAOq6C,EAAK,YAA2Br6C,KAAOo6C,GAAkBp6C,GAAyB,kBAAbA,EAAEtrG,OAAqB,CAC/G2lJ,IAAIr6C,EAAIq6C,GACZ,IAAI7lJ,EAAI,EAEJ8lJ,EAAI,aAER,MAAO,CACL9hJ,EAAG8hJ,EACHrkJ,EAAG,WACD,OAAIzB,GAAKwrG,EAAEtrG,OAAe,CACxBtO,MAAM,GAED,CACLA,MAAM,EACNF,MAAO85G,EAAExrG,OAGbiG,EAAG,SAAW2oI,GACZ,MAAMA,GAER5kI,EAAG87I,GAIP,MAAM,IAAI/sH,UAAU,yIAGtB,IAEIzmC,EAFAyzJ,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLhiJ,EAAG,WACD6hJ,EAAKr6C,EAAElkG,OAAOC,aAEhB9F,EAAG,WACD,IAAImT,EAAOixI,EAAGlyF,OAEd,OADAoyF,EAAmBnxI,EAAKhjB,KACjBgjB,GAET3O,EAAG,SAAWggJ,GACZD,GAAS,EACT1zJ,EAAM2zJ,GAERj8I,EAAG,WACD,IACO+7I,GAAoC,MAAhBF,EAAW,QAAWA,EAAW,SAC1D,QACA,GAAIG,EAAQ,MAAM1zJ,O,6BCpDX,SAAS4zJ,IAetB,OAdAA,EAAW1jJ,OAAOm9B,QAAU,SAAU9/B,GACpC,IAAK,IAAIG,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAAK,CACzC,IAAIoP,EAAShd,UAAU4N,GAEvB,IAAK,IAAIzO,KAAO6d,EACV5M,OAAOgF,UAAU03I,eAAe/+I,KAAKiP,EAAQ7d,KAC/CsO,EAAOtO,GAAO6d,EAAO7d,IAK3B,OAAOsO,IAGOxN,MAAMH,KAAME,WAf9B,mC,6BCAe,SAAS+zJ,EAAuBC,EAASC,GAKtD,OAJKA,IACHA,EAAMD,EAAQrmJ,MAAM,IAGfyC,OAAOC,OAAOD,OAAO6lB,iBAAiB+9H,EAAS,CACpDC,IAAK,CACH30J,MAAO8Q,OAAOC,OAAO4jJ,OAP3B,mC,0wBCGgC,2tKCmFNlI,2BDnFM,GCmFNA,kFAgBxBmI,2NAhBwBnI,GAgBxBmI,sJC3DQ3L,yxBAmC8B1wH,iOAkBVA,kdDM5Bq8H,GCN4Br8H,wUC3FuB,u+FCcHA,sPDdG,GCcHA,yvHC2PiB/X,mqECrP/C67C,kCAEV9jC,oODmPyD/X,ICnPzD+X,+eCsCE8tH,iTDtCF9tH,GCsCE8tH,S,gWC/DNwO,G,MCCqB,SAAA95I,G,IACnBU,EAAUq5I,c,OAChBr5I,gBAEA,EDLmCs5I,CAArC,mBEQMt5I,EAPqB,SAAAV,G,IACnBU,EAAUq5I,c,OAChBr5I,gBAEA,EAG4Bs5I,CAA9B,UCAMC,E,uBAKJ,G,2BACE,UAEA,MAAa,CACX7nG,SAAUguF,UAAchuF,U,EAQ1B,c,EACA,sBAEKguF,EAAL,gB,EACE,SAAgBA,EAAA,gBAAqB,SAAAhuF,GAC/B,EAAJ,W,EACE,SAAc,CAAEA,a,EAEhB,uB,qBAxBD8nG,iBAAP,Y,MACS,CAAEvzF,KAAF,IAAavjD,IAAb,IAAuBg3C,OAAvB,GAAmC+/F,QAAsB,MAAbC,I,2BA6BrDC,6B,KACE,cAEI50J,KAAJ,kB,KACE,SAAc,CAAE2sD,SAAU3sD,KAAK60J,oB,EAInCC,gCACM90J,KAAJ,UAAmBA,KAAK+0J,Y,EAG1Bz/G,kB,OAEI,kBAAC0/G,EAAD,UACEx1J,MAAO,CACLy1J,QAASj1J,KAAK26I,MADT,QAELhuF,SAAU3sD,KAAK8nD,MAFV,SAGLuZ,MAAOmzF,mBAAwBx0J,KAAK8nD,MAAM6E,SAHrC,UAILuoG,cAAel1J,KAAK26I,MAAMua,gBAG5B,kBAACC,EAAD,UACEjrI,SAAUlqB,KAAK26I,MAAMzwH,UADvB,KAEE1qB,MAAOQ,KAAK26I,MAAMsa,Y,GAvDPpP,IAAMuP,WCAAvP,IAAMuP,U,ICR3BC,E,0GACJT,6BACM50J,KAAK26I,MAAT,SAAwB36I,KAAK26I,MAAM2a,QAAQrnJ,KAAKjO,KAAMA,O,EAGxDu1J,+BACMv1J,KAAK26I,MAAT,UAAyB36I,KAAK26I,MAAM79H,SAAS7O,KAAKjO,KAAMA,KAAMw1J,I,EAGhEV,gCACM90J,KAAK26I,MAAT,WAA0B36I,KAAK26I,MAAM8a,UAAUxnJ,KAAKjO,KAAMA,O,EAG5Ds1C,kB,OACE,M,GAdoBuwG,IAAMuP,WCA9B,IAAM76H,EAAN,GAEIm7H,EAAJ,EAkBA,SAASC,EAAaz0F,EAAtB,G,YAA+C,IAAzBA,MAAO,UAAkB,IAAbvM,MAAS,IAClCuM,UAjBT,SAAqBA,G,GACf3mC,EAAJ,GAAiB,OAAOA,EAAP,G,IAEX/c,EAAYo4I,YAAlB,G,OAEIF,EARN,MASIn7H,OACAm7H,KAGF,EAO6BG,CAAA,EAAAA,CAAA,EAA0B,CAAEC,QAAQ,ICXnE,SAASC,EAAS,G,IAAEC,EAAmC,EAAnCA,cAAe36C,EAAoB,EAApBA,G,IAAI/tG,YAAgB,S,OAEnD,kBAAC0nJ,EAAD,eACG,SAAA/5I,GACC,mB,IAEQg6I,EAA2Bh6I,EAHzB,QAGOi6I,EAAkBj6I,EAHzB,cAKJy3E,EAASplF,EAAO2nJ,EAAH,KAAkBA,EAArC,QACMtoG,EAAWspG,YACfD,EACkB,kBAAP36C,EACLs6C,EAAat6C,EAAI26C,EADnB,0BAIIrB,SAAUgB,EAAat6C,EAAD,SAAc26C,EAAd,UAZtB,G,OAmBV,GACEtjE,KACA,MAIA,qBACE4iE,QAAS,WACP5iE,MAEF51E,SAAU,c,IACFo5I,EAAeD,YAAeT,EAApC,IAEGW,YAAkBD,EAAc,OAAf,IAAe,CAAf,MAEhB72J,IAAK62J,EAAa72J,QAGpBqzF,MAGJ2oB,GAAIA,OCrDhB,IAAM9gF,EAAN,GAEIm7H,EAAJ,EAuBA,SAASU,EAAUzB,EAAU30I,QAAc,IAAdA,MAAU,KACd,kBAAZA,GAAwBpC,cAAnC,MACEoC,EAAU,CAAEkhD,KAAMlhD,I,MAFqB,EAKjCkhD,EALiC,O,IAAA,MAK3Bm1F,OAL2B,S,IAAA,OAKZC,OALY,S,IAAA,UAKIC,OALJ,S,MAO3B,GAAGrrD,OAAjB,GAEO,QAAa,c,IACbhqC,GAAL,KAAaA,EAAa,OAAO,K,GACjC,EAAa,OAAOs1F,E,MAhCxB,c,IACQvxF,EAAW,GAAGjlD,EAAN,IAAoBA,EAApB,OAAqCA,EAAnD,UACMy2I,EAAYl8H,OAAoBA,KAAtC,I,GAEIk8H,EAAJ,GAAqB,OAAOA,EAAP,G,IAEfppH,EAAN,GAEMumC,EAAS,CAAE8iF,OADFd,IAAa10F,EAAM7zB,EAAlC,GACyBA,Q,OAErBqoH,EAbN,MAcIe,OACAf,KAGF,EAmB2BG,CAAY30F,EAAM,CACzCtqB,IADyC,EAEzC0/G,OAFyC,EAGzCC,cAHMG,EAJ6B,SAIrBrpH,EAJqB,OAS/Bg0B,EAAQq1F,OAAd,G,IAEA,EAAY,OAAO,K,IAEZ/4I,EAAkB0jD,EAbY,GAatB7mC,EAAU6mC,EAbY,SAc/BqzF,EAAUC,IAAhB,E,OAEI0B,IAAJ,EAA8B,KAEvB,CACLn1F,KADK,EAELvjD,IAAKujD,cAAgBvjD,EAAhBujD,IAFA,EAGLwzF,QAHK,EAIL//F,OAAQtnB,EAAA,QAAY,gB,OAClBspH,EAAKt3J,EAALs3J,MAAiBn8H,EAAjBm8H,GACA,IAFM,OAtBZ,M,ICPIC,E,kGACJthH,kB,kBAEI,kBAAC0/G,EAAD,eACG,YACC,mB,IAEMroG,EAAW,kBAAuB1xC,EAAxC,SACMomD,EAAQ,sBACV,QADU,cAEV,aACA+0F,EAAUzpG,EAAD,SAAoB,EAD7B,OAEA1xC,EAJJ,MAMM0/H,EAAQ,OAAH,IAAG,CAAH,MAAiBhuF,SAAjB,EAA2B0U,U,EAEA,EAZ5B,MAYJn3C,EAZI,WAYM2sI,EAZN,YAYiBvhH,EAZjB,S,OAgBN13B,kBAAJ,IAA+BsM,WAC7BA,QAIA,kBAAC8qI,EAAD,UAAwBx1J,MAAOm7I,GAC5BA,QACGzwH,EACsB,oBAAbA,EAGHA,EAHJ,GADM,EAMN2sI,EACAhR,oBADS,GAETvwG,EACAA,EADM,GATXqlG,KAYuB,oBAAbzwH,EAGLA,EAHF,GAdR,U,GAxBU27H,IAAMuP,WCrB1B,SAAS0B,EAAgB51F,G,MAChBA,oBAAgC,IAAvC,EAYF,SAAS61F,EAAcC,EAAUrqG,G,IAC/B,EAAe,OAAOA,E,IAEhB8pD,EAAOqgD,EAAb,G,OAEA,IAAInqG,sBAA8CA,E,eAElD,GAEEgoG,SAAUhoG,kBAAyB8pD,EAAzB9pD,UAId,SAASsqG,EAAUtqG,G,MACU,kBAAbA,EAAwBA,EAAWuqG,YAAjD,GAGF,SAASC,EAAcppG,G,OACd,WACLqpG,iBAIJ,SAASC,KAQkBxR,IAAMuP,UCzCZvP,IAAMuP,UCJ3B,IAAMkC,EAAazR,IAAnB,WAwBO,SAAS0R,I,IAQRl2F,EAAQi2F,KAAd,M,OACOj2F,EAAQA,EAAH,OAAZ,K,6BCvCa,SAASm2F,EAAyBt6I,EAAQu6I,GACvD,GAAc,MAAVv6I,EAAgB,MAAO,GAC3B,IACI7d,EAAKyO,EADLH,ECHS,SAAuCuP,EAAQu6I,GAC5D,GAAc,MAAVv6I,EAAgB,MAAO,GAC3B,IAEI7d,EAAKyO,EAFLH,EAAS,GACT+pJ,EAAapnJ,OAAO+8B,KAAKnwB,GAG7B,IAAKpP,EAAI,EAAGA,EAAI4pJ,EAAW1pJ,OAAQF,IACjCzO,EAAMq4J,EAAW5pJ,GACb2pJ,EAASpqJ,QAAQhO,IAAQ,IAC7BsO,EAAOtO,GAAO6d,EAAO7d,IAGvB,OAAOsO,EDTM,CAA6BuP,EAAQu6I,GAGlD,GAAInnJ,OAAO6sI,sBAAuB,CAChC,IAAIwa,EAAmBrnJ,OAAO6sI,sBAAsBjgI,GAEpD,IAAKpP,EAAI,EAAGA,EAAI6pJ,EAAiB3pJ,OAAQF,IACvCzO,EAAMs4J,EAAiB7pJ,GACnB2pJ,EAASpqJ,QAAQhO,IAAQ,GACxBiR,OAAOgF,UAAUsiJ,qBAAqB3pJ,KAAKiP,EAAQ7d,KACxDsO,EAAOtO,GAAO6d,EAAO7d,IAIzB,OAAOsO,E,mDEjBT+tI,EAAOC,QAAU,EAAQ,K,6BCAzB,IACI7xE,EAAS,mBAWEstF,IAVf,SAAmBS,EAAW/mE,GAC1B,IAAI+mE,EAIA,MAAM,IAAIrkJ,MAAMs2D,K,6BCPT,SAASguF,EAAgBx+C,EAAGx2F,GAMzC,OALAg1I,EAAkBxnJ,OAAOwrI,gBAAkB,SAAyBxiC,EAAGx2F,GAErE,OADAw2F,EAAE9oG,UAAYsS,EACPw2F,IAGcA,EAAGx2F,GCLb,SAASi1I,EAAe7c,EAAUC,GAC/CD,EAAS5lI,UAAYhF,OAAO40H,OAAOiW,EAAW7lI,WAC9C4lI,EAAS5lI,UAAU7B,YAAcynI,EACjC,EAAeA,EAAUC,G,mGCF3B,SAAS6c,EAASC,GAChB,IAAInwG,EACE16C,EAAY,IAAIisG,IAChBzoD,EAAW,SAACsnG,EAAS10F,GACzB,IAAM20F,EAA+B,oBAAZD,EAAyBA,EAAQpwG,GAASowG,EACnE,GAAIC,IAAcrwG,EAAO,CACvB,IAAMswG,EAAgBtwG,EACtBA,EAAQ0b,EAAU20F,EAAY7nJ,OAAOm9B,OAAO,GAAIqa,EAAOqwG,GACvD/qJ,EAAUi5E,SAAQ,SAACn5E,GAAD,OAAcA,EAAS46C,EAAOswG,QAG9C7W,EAAW,kBAAMz5F,GAqBjBuwG,EAAM,CAACznG,WAAU2wF,WAAUqG,UARf,SAAC16I,EAAU0+I,EAAUC,GACrC,OAAID,GAAYC,EAbY,SAAC3+I,GAA0D,IAAhD0+I,EAAgD,uDAArCrK,EAAUsK,EAA2B,uDAAdv7I,OAAO+vI,GAC5EiY,EAAe1M,EAAS9jG,GAC5B,SAASywG,IACP,IAAMC,EAAY5M,EAAS9jG,GAC3B,IAAK+jG,EAAWyM,EAAcE,GAAY,CACxC,IAAMC,EAAgBH,EACtBprJ,EAASorJ,EAAeE,EAAWC,IAIvC,OADArrJ,EAAUgc,IAAImvI,GACP,kBAAMnrJ,EAAU4sC,OAAOu+G,IAIrBG,CAAsBxrJ,EAAU0+I,EAAUC,IAEnDz+I,EAAUgc,IAAIlc,GACP,kBAAME,EAAU4sC,OAAO9sC,MAGYi9D,QAD5B,kBAAM/8D,EAAU8oC,UAGhC,OADA4R,EAAQmwG,EAAYrnG,EAAU2wF,EAAU8W,GACjCA,EAGT,IACM5O,EAD0B,qBAAXrzD,SAA2BA,OAAOuiE,WAAa,8BAA8Bh+I,KAAKy7E,OAAOuiE,UAAUC,WAC9Elb,YAAYmb,kBA8DvC3zB,IA7Df,SAAgB+yB,GACd,IAAMI,EAA6B,oBAAhBJ,EAA6BD,EAASC,GAAeA,EAClEvM,EAAW,WAAqD,IAWhEoN,EAXYlN,EAAoD,uDAAzCyM,EAAI9W,SAAUsK,EAA2B,uDAAdv7I,OAAO+vI,GAC7D,EAAwB0Y,sBAAW,SAACxmJ,GAAD,OAAOA,EAAI,IAAG,GAAjD,mBAASymJ,EAAT,KACMlxG,EAAQuwG,EAAI9W,WACZ0X,EAAW/Z,iBAAOp3F,GAClBoxG,EAAcha,iBAAO0M,GACrBuN,EAAgBja,iBAAO2M,GACvBuN,EAAala,kBAAO,GACpBma,EAAkBna,wBACQ,IAA5Bma,EAAgB50D,UAClB40D,EAAgB50D,QAAUmnD,EAAS9jG,IAGrC,IAAIwxG,GAAmB,GACnBL,EAASx0D,UAAY38C,GAASoxG,EAAYz0D,UAAYmnD,GAAYuN,EAAc10D,UAAYonD,GAAcuN,EAAW30D,WACvHq0D,EAAgBlN,EAAS9jG,GACzBwxG,GAAoBzN,EAAWwN,EAAgB50D,QAASq0D,IAE1DrP,GAA0B,WACpB6P,IACFD,EAAgB50D,QAAUq0D,GAE5BG,EAASx0D,QAAU38C,EACnBoxG,EAAYz0D,QAAUmnD,EACtBuN,EAAc10D,QAAUonD,EACxBuN,EAAW30D,SAAU,KAEvB,IAAM80D,EAA6Bra,iBAAOp3F,GAsB1C,OArBA2hG,GAA0B,WACxB,IAAMv8I,EAAW,WACf,IACE,IAAMirJ,EAAYE,EAAI9W,WAChBiY,EAAiBN,EAAYz0D,QAAQ0zD,GACtCgB,EAAc10D,QAAQ40D,EAAgB50D,QAAS+0D,KAClDP,EAASx0D,QAAU0zD,EACnBkB,EAAgB50D,QAAU+0D,EAC1BR,KAEF,MAAOv5J,GACP25J,EAAW30D,SAAU,EACrBu0D,MAGES,EAAcpB,EAAIzQ,UAAU16I,GAIlC,OAHImrJ,EAAI9W,aAAegY,EAA2B90D,SAChDv3F,IAEKusJ,IACN,IACIH,EAAmBR,EAAgBO,EAAgB50D,SAQ5D,OANAn0F,OAAOm9B,OAAOi+G,EAAU2M,GACxB3M,EAASt2I,OAAOC,UAAhB,UAA4B,8EAE1B,OADAjC,QAAQC,KAAK,sEADa,SAEpBq4I,EAFoB,OAG1B,OAH0B,SAGpB2M,EAHoB,0CAKrB3M,I,qPCnGT,SAASgO,EAAW/E,GAClB,MAA8B,MAAvBA,EAASvvH,OAAO,GAIzB,SAASu0H,EAAU1rF,EAAMzgE,GACvB,IAAK,IAAIM,EAAIN,EAAO+mE,EAAIzmE,EAAI,EAAGyB,EAAI0+D,EAAKjgE,OAAQumE,EAAIhlE,EAAGzB,GAAK,EAAGymE,GAAK,EAClEtG,EAAKngE,GAAKmgE,EAAKsG,GAGjBtG,EAAKnB,MAgEQ8sF,MA5Df,SAAyBv+C,EAAID,QACd/6G,IAAT+6G,IAAoBA,EAAO,IAE/B,IAkBIy+C,EAlBAC,EAAWz+C,GAAMA,EAAGx4C,MAAM,MAAS,GACnCk3F,EAAa3+C,GAAQA,EAAKv4C,MAAM,MAAS,GAEzCm3F,EAAU3+C,GAAMq+C,EAAWr+C,GAC3B4+C,EAAY7+C,GAAQs+C,EAAWt+C,GAC/B8+C,EAAaF,GAAWC,EAW5B,GATI5+C,GAAMq+C,EAAWr+C,GAEnB0+C,EAAYD,EACHA,EAAQ9rJ,SAEjB+rJ,EAAUjtF,MACVitF,EAAYA,EAAU7uD,OAAO4uD,KAG1BC,EAAU/rJ,OAAQ,MAAO,IAG9B,GAAI+rJ,EAAU/rJ,OAAQ,CACpB,IAAI02F,EAAOq1D,EAAUA,EAAU/rJ,OAAS,GACxC6rJ,EAA4B,MAATn1D,GAAyB,OAATA,GAA0B,KAATA,OAEpDm1D,GAAmB,EAIrB,IADA,IAAIpoI,EAAK,EACA3jB,EAAIisJ,EAAU/rJ,OAAQF,GAAK,EAAGA,IAAK,CAC1C,IAAIqsJ,EAAOJ,EAAUjsJ,GAER,MAATqsJ,EACFR,EAAUI,EAAWjsJ,GACH,OAATqsJ,GACTR,EAAUI,EAAWjsJ,GACrB2jB,KACSA,IACTkoI,EAAUI,EAAWjsJ,GACrB2jB,KAIJ,IAAKyoI,EAAY,KAAOzoI,IAAMA,EAAIsoI,EAAUtwG,QAAQ,OAGlDywG,GACiB,KAAjBH,EAAU,IACRA,EAAU,IAAOL,EAAWK,EAAU,KAExCA,EAAUtwG,QAAQ,IAEpB,IAAImqB,EAASmmF,EAAUj3F,KAAK,KAI5B,OAFI+2F,GAA0C,MAAtBjmF,EAAOy2C,QAAQ,KAAYz2C,GAAU,KAEtDA,GCvET,SAASwmF,EAAQ9Z,GACf,OAAOA,EAAI8Z,QAAU9Z,EAAI8Z,UAAY9pJ,OAAOgF,UAAU8kJ,QAAQnsJ,KAAKqyI,GAkCtD+Z,MA/Bf,SAASA,EAAWhoJ,EAAGC,GAErB,GAAID,IAAMC,EAAG,OAAO,EAGpB,GAAS,MAALD,GAAkB,MAALC,EAAW,OAAO,EAEnC,GAAIsL,MAAMC,QAAQxL,GAChB,OACEuL,MAAMC,QAAQvL,IACdD,EAAErE,SAAWsE,EAAEtE,QACfqE,EAAEosI,OAAM,SAASuE,EAAMx1I,GACrB,OAAO6sJ,EAAWrX,EAAM1wI,EAAE9E,OAKhC,GAAiB,kBAAN6E,GAA+B,kBAANC,EAAgB,CAClD,IAAIgoJ,EAASF,EAAQ/nJ,GACjBkoJ,EAASH,EAAQ9nJ,GAErB,OAAIgoJ,IAAWjoJ,GAAKkoJ,IAAWjoJ,EAAU+nJ,EAAWC,EAAQC,GAErDjqJ,OAAO+8B,KAAK/8B,OAAOm9B,OAAO,GAAIp7B,EAAGC,IAAImsI,OAAM,SAASp/I,GACzD,OAAOg7J,EAAWhoJ,EAAEhT,GAAMiT,EAAEjT,OAIhC,OAAO,G,QC1BT,SAASy3J,EAAgB51F,GACvB,MAA0B,MAAnBA,EAAK97B,OAAO,GAAa87B,EAAO,IAAMA,EAE/C,SAASs5F,EAAkBt5F,GACzB,MAA0B,MAAnBA,EAAK97B,OAAO,GAAa87B,EAAKmpD,OAAO,GAAKnpD,EAKnD,SAAS61F,EAAc71F,EAAM4I,GAC3B,OAJF,SAAqB5I,EAAM4I,GACzB,OAA4D,IAArD5I,EAAK57B,cAAcj4B,QAAQy8D,EAAOxkC,iBAAuE,IAA/C,MAAMj4B,QAAQ6zD,EAAK97B,OAAO0kC,EAAO97D,SAG3FysJ,CAAYv5F,EAAM4I,GAAU5I,EAAKmpD,OAAOvgD,EAAO97D,QAAUkzD,EAElE,SAASw5F,EAAmBx5F,GAC1B,MAAwC,MAAjCA,EAAK97B,OAAO87B,EAAKlzD,OAAS,GAAakzD,EAAKrzD,MAAM,GAAI,GAAKqzD,EA0BpE,SAASg2F,EAAWvqG,GAClB,IAAIgoG,EAAWhoG,EAASgoG,SACpBgG,EAAShuG,EAASguG,OAClB9rF,EAAOliB,EAASkiB,KAChB3N,EAAOyzF,GAAY,IAGvB,OAFIgG,GAAqB,MAAXA,IAAgBz5F,GAA6B,MAArBy5F,EAAOv1H,OAAO,GAAau1H,EAAS,IAAMA,GAC5E9rF,GAAiB,MAATA,IAAc3N,GAA2B,MAAnB2N,EAAKzpC,OAAO,GAAaypC,EAAO,IAAMA,GACjE3N,EAGT,SAAS+0F,EAAe/0F,EAAMpZ,EAAOzoD,EAAKu7J,GACxC,IAAIjuG,EAEgB,kBAATuU,GAETvU,EAvCJ,SAAmBuU,GACjB,IAAIyzF,EAAWzzF,GAAQ,IACnBy5F,EAAS,GACT9rF,EAAO,GACPgsF,EAAYlG,EAAStnJ,QAAQ,MAEd,IAAfwtJ,IACFhsF,EAAO8lF,EAAStqC,OAAOwwC,GACvBlG,EAAWA,EAAStqC,OAAO,EAAGwwC,IAGhC,IAAIC,EAAcnG,EAAStnJ,QAAQ,KAOnC,OALqB,IAAjBytJ,IACFH,EAAShG,EAAStqC,OAAOywC,GACzBnG,EAAWA,EAAStqC,OAAO,EAAGywC,IAGzB,CACLnG,SAAUA,EACVgG,OAAmB,MAAXA,EAAiB,GAAKA,EAC9B9rF,KAAe,MAATA,EAAe,GAAKA,GAkBfksF,CAAU75F,IACZpZ,MAAQA,QAISznD,KAD1BssD,EAAWqnG,YAAS,GAAI9yF,IACXyzF,WAAwBhoG,EAASgoG,SAAW,IAErDhoG,EAASguG,OACuB,MAA9BhuG,EAASguG,OAAOv1H,OAAO,KAAYunB,EAASguG,OAAS,IAAMhuG,EAASguG,QAExEhuG,EAASguG,OAAS,GAGhBhuG,EAASkiB,KACqB,MAA5BliB,EAASkiB,KAAKzpC,OAAO,KAAYunB,EAASkiB,KAAO,IAAMliB,EAASkiB,MAEpEliB,EAASkiB,KAAO,QAGJxuE,IAAVynD,QAA0CznD,IAAnBssD,EAAS7E,QAAqB6E,EAAS7E,MAAQA,IAG5E,IACE6E,EAASgoG,SAAWqG,UAAUruG,EAASgoG,UACvC,MAAO5gJ,GACP,MAAIA,aAAaknJ,SACT,IAAIA,SAAS,aAAetuG,EAASgoG,SAAxB,iFAEb5gJ,EAoBV,OAhBI1U,IAAKstD,EAASttD,IAAMA,GAEpBu7J,EAEGjuG,EAASgoG,SAE6B,MAAhChoG,EAASgoG,SAASvvH,OAAO,KAClCunB,EAASgoG,SAAWiF,EAAgBjtG,EAASgoG,SAAUiG,EAAgBjG,WAFvEhoG,EAASgoG,SAAWiG,EAAgBjG,SAMjChoG,EAASgoG,WACZhoG,EAASgoG,SAAW,KAIjBhoG,EAET,SAASwpG,EAAkB9jJ,EAAGC,GAC5B,OAAOD,EAAEsiJ,WAAariJ,EAAEqiJ,UAAYtiJ,EAAEsoJ,SAAWroJ,EAAEqoJ,QAAUtoJ,EAAEw8D,OAASv8D,EAAEu8D,MAAQx8D,EAAEhT,MAAQiT,EAAEjT,KAAOg7J,EAAWhoJ,EAAEy1C,MAAOx1C,EAAEw1C,OAG7H,SAASozG,IACP,IAAIC,EAAS,KAiCb,IAAI/tJ,EAAY,GA4BhB,MAAO,CACLguJ,UA5DF,SAAmBC,GAGjB,OADAF,EAASE,EACF,WACDF,IAAWE,IAAYF,EAAS,QAyDtCG,oBArDF,SAA6B3uG,EAAUm2E,EAAQy4B,EAAqBl3I,GAIlE,GAAc,MAAV82I,EAAgB,CAClB,IAAIvnF,EAA2B,oBAAXunF,EAAwBA,EAAOxuG,EAAUm2E,GAAUq4B,EAEjD,kBAAXvnF,EAC0B,oBAAxB2nF,EACTA,EAAoB3nF,EAAQvvD,GAG5BA,GAAS,GAIXA,GAAoB,IAAXuvD,QAGXvvD,GAAS,IAmCXm3I,eA7BF,SAAwB17J,GACtB,IAAI27J,GAAW,EAEf,SAASvuJ,IACHuuJ,GAAU37J,EAAGK,WAAM,EAAQD,WAIjC,OADAkN,EAAUE,KAAKJ,GACR,WACLuuJ,GAAW,EACXruJ,EAAYA,EAAUs5D,QAAO,SAAUs8E,GACrC,OAAOA,IAAS91I,OAmBpBwuJ,gBAdF,WACE,IAAK,IAAIC,EAAOz7J,UAAU8N,OAAQ/N,EAAO,IAAI2d,MAAM+9I,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E37J,EAAK27J,GAAQ17J,UAAU07J,GAGzBxuJ,EAAUi5E,SAAQ,SAAUn5E,GAC1B,OAAOA,EAAS/M,WAAM,EAAQF,QAYpC,IAAI47J,IAAiC,qBAAXzlE,SAA0BA,OAAO57E,WAAY47E,OAAO57E,SAASshJ,eACvF,SAASC,EAAgBjrE,EAASzsE,GAChCA,EAAS+xE,OAAO4lE,QAAQlrE,IAwC1B,IAAImrE,EAAgB,WAChBC,EAAkB,aAEtB,SAASC,IACP,IACE,OAAO/lE,OAAO6+D,QAAQntG,OAAS,GAC/B,MAAO/zC,GAGP,MAAO,IASX,SAASqoJ,EAAqBzhB,QACd,IAAVA,IACFA,EAAQ,IAGTkhB,GAAsGzE,aAAU,GACjH,IAAIiF,EAAgBjmE,OAAO6+D,QACvBqH,EAvDN,WACE,IAAIC,EAAKnmE,OAAOuiE,UAAUC,UAC1B,QAAmC,IAA9B2D,EAAGlvJ,QAAQ,gBAAuD,IAA/BkvJ,EAAGlvJ,QAAQ,iBAA2D,IAAjCkvJ,EAAGlvJ,QAAQ,mBAAqD,IAA1BkvJ,EAAGlvJ,QAAQ,YAAqD,IAAjCkvJ,EAAGlvJ,QAAQ,mBACtJ+oF,OAAO6+D,SAAW,cAAe7+D,OAAO6+D,QAoD3BuH,GAChBC,KA7CsD,IAAnDrmE,OAAOuiE,UAAUC,UAAUvrJ,QAAQ,YA8CtCqvJ,EAAS/hB,EACTgiB,EAAsBD,EAAO9c,aAC7BA,OAAuC,IAAxB+c,GAAyCA,EACxDC,EAAwBF,EAAOnB,oBAC/BA,OAAgD,IAA1BqB,EAAmCb,EAAkBa,EAC3EC,EAAmBH,EAAOI,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9C7F,EAAWrc,EAAMqc,SAAW0D,EAAmB5D,EAAgBnc,EAAMqc,WAAa,GAEtF,SAAS+F,EAAeC,GACtB,IAAIhK,EAAOgK,GAAgB,GACvB39J,EAAM2zJ,EAAK3zJ,IACXyoD,EAAQkrG,EAAKlrG,MAEbm1G,EAAmB7mE,OAAOzpC,SAI1BuU,EAHW+7F,EAAiBtI,SACnBsI,EAAiBtC,OACnBsC,EAAiBpuF,KAI5B,OADImoF,IAAU91F,EAAO61F,EAAc71F,EAAM81F,IAClCf,EAAe/0F,EAAMpZ,EAAOzoD,GAGrC,SAAS69J,IACP,OAAO9uJ,KAAKW,SAASP,SAAS,IAAI67G,OAAO,EAAGyyC,GAG9C,IAAIK,EAAoBjC,IAExB,SAAStqG,EAASunG,GAChBnE,YAASiB,EAASkD,GAElBlD,EAAQjnJ,OAASquJ,EAAcruJ,OAC/BmvJ,EAAkBzB,gBAAgBzG,EAAQtoG,SAAUsoG,EAAQnyB,QAG9D,SAASs6B,EAAe1vJ,IApE1B,SAAmCA,GACjC,YAAuBrN,IAAhBqN,EAAMo6C,QAAiE,IAA1C6wG,UAAUC,UAAUvrJ,QAAQ,UAqE1DgwJ,CAA0B3vJ,IAC9B4vJ,EAAUP,EAAervJ,EAAMo6C,QAGjC,SAASy1G,IACPD,EAAUP,EAAeZ,MAG3B,IAAIqB,GAAe,EAEnB,SAASF,EAAU3wG,GACjB,GAAI6wG,EACFA,GAAe,EACf5sG,QACK,CAELusG,EAAkB7B,oBAAoB3uG,EADzB,MAC2C4uG,GAAqB,SAAUkC,GACjFA,EACF7sG,EAAS,CACPkyE,OAJO,MAKPn2E,SAAUA,IASpB,SAAmB+wG,GACjB,IAAIC,EAAa1I,EAAQtoG,SAIrBixG,EAAUC,EAAQxwJ,QAAQswJ,EAAWt+J,MACxB,IAAbu+J,IAAgBA,EAAU,GAC9B,IAAIE,EAAYD,EAAQxwJ,QAAQqwJ,EAAar+J,MAC1B,IAAfy+J,IAAkBA,EAAY,GAClC,IAAI93H,EAAQ43H,EAAUE,EAElB93H,IACFw3H,GAAe,EACfO,EAAG/3H,IAnBCg4H,CAAUrxG,OAuBlB,IAAIsxG,EAAkBlB,EAAeZ,KACjC0B,EAAU,CAACI,EAAgB5+J,KAE/B,SAAS6+J,EAAWvxG,GAClB,OAAOqqG,EAAWE,EAAWvqG,GAuE/B,SAASoxG,EAAGxuJ,GACV8sJ,EAAc0B,GAAGxuJ,GAWnB,IAAI4uJ,EAAgB,EAEpB,SAASC,EAAkBp4H,GAGH,KAFtBm4H,GAAiBn4H,IAEoB,IAAVA,GACzBowD,OAAO5kC,iBAAiByqG,EAAemB,GACnCX,GAAyBrmE,OAAO5kC,iBAAiB0qG,EAAiBqB,IAC3C,IAAlBY,IACT/nE,OAAO/kC,oBAAoB4qG,EAAemB,GACtCX,GAAyBrmE,OAAO/kC,oBAAoB6qG,EAAiBqB,IAI7E,IAAIc,GAAY,EAiChB,IAAIpJ,EAAU,CACZjnJ,OAAQquJ,EAAcruJ,OACtB80H,OAAQ,MACRn2E,SAAUsxG,EACVC,WAAYA,EACZ5wJ,KApIF,SAAc4zD,EAAMpZ,GAElB,IAAIg7E,EAAS,OACTn2E,EAAWspG,EAAe/0F,EAAMpZ,EAAOo1G,IAAajI,EAAQtoG,UAChEwwG,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GACrF,GAAKA,EAAL,CACA,IAAIa,EAAOJ,EAAWvxG,GAClBttD,EAAMstD,EAASttD,IACfyoD,EAAQ6E,EAAS7E,MAErB,GAAIw0G,EAMF,GALAD,EAAckC,UAAU,CACtBl/J,IAAKA,EACLyoD,MAAOA,GACN,KAAMw2G,GAEL1e,EACFxpD,OAAOzpC,SAAS2xG,KAAOA,MAClB,CACL,IAAIv3B,EAAY82B,EAAQxwJ,QAAQ4nJ,EAAQtoG,SAASttD,KAC7Cm/J,EAAWX,EAAQhwJ,MAAM,EAAGk5H,EAAY,GAC5Cy3B,EAASlxJ,KAAKq/C,EAASttD,KACvBw+J,EAAUW,EACV5tG,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,SAKdypC,OAAOzpC,SAAS2xG,KAAOA,OAuG3B96F,QAlGF,SAAiBtC,EAAMpZ,GAErB,IAAIg7E,EAAS,UACTn2E,EAAWspG,EAAe/0F,EAAMpZ,EAAOo1G,IAAajI,EAAQtoG,UAChEwwG,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GACrF,GAAKA,EAAL,CACA,IAAIa,EAAOJ,EAAWvxG,GAClBttD,EAAMstD,EAASttD,IACfyoD,EAAQ6E,EAAS7E,MAErB,GAAIw0G,EAMF,GALAD,EAAcoC,aAAa,CACzBp/J,IAAKA,EACLyoD,MAAOA,GACN,KAAMw2G,GAEL1e,EACFxpD,OAAOzpC,SAAS6W,QAAQ86F,OACnB,CACL,IAAIv3B,EAAY82B,EAAQxwJ,QAAQ4nJ,EAAQtoG,SAASttD,MAC9B,IAAf0nI,IAAkB82B,EAAQ92B,GAAap6E,EAASttD,KACpDuxD,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,SAKdypC,OAAOzpC,SAAS6W,QAAQ86F,QAuE5BP,GAAIA,EACJW,OA/DF,WACEX,GAAI,IA+DJY,UA5DF,WACEZ,EAAG,IA4DH3T,MAzCF,SAAe+Q,QACE,IAAXA,IACFA,GAAS,GAGX,IAAIyD,EAAUzB,EAAkB/B,UAAUD,GAO1C,OALKkD,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdQ,MAwBTC,OApBF,SAAgB3xJ,GACd,IAAI6nJ,EAAWoI,EAAkB3B,eAAetuJ,GAEhD,OADAkxJ,EAAkB,GACX,WACLA,GAAmB,GACnBrJ,OAiBJ,OAAOE,EAGT,IAAI6J,EAAoB,aACpBC,EAAiB,CACnBC,SAAU,CACRC,WAAY,SAAoB/9F,GAC9B,MAA0B,MAAnBA,EAAK97B,OAAO,GAAa87B,EAAO,KAAOs5F,EAAkBt5F,IAElEg+F,WAAY,SAAoBh+F,GAC9B,MAA0B,MAAnBA,EAAK97B,OAAO,GAAa87B,EAAKmpD,OAAO,GAAKnpD,IAGrDi+F,QAAS,CACPF,WAAYzE,EACZ0E,WAAYpI,GAEdsI,MAAO,CACLH,WAAYnI,EACZoI,WAAYpI,IAIhB,SAASuI,EAAU1hJ,GACjB,IAAIk9I,EAAYl9I,EAAItQ,QAAQ,KAC5B,OAAsB,IAAfwtJ,EAAmBl9I,EAAMA,EAAI9P,MAAM,EAAGgtJ,GAG/C,SAASyE,IAGP,IAAIhB,EAAOloE,OAAOzpC,SAAS2xG,KACvBzD,EAAYyD,EAAKjxJ,QAAQ,KAC7B,OAAsB,IAAfwtJ,EAAmB,GAAKyD,EAAKjhC,UAAUw9B,EAAY,GAO5D,SAAS0E,EAAgBr+F,GACvBk1B,OAAOzpC,SAAS6W,QAAQ67F,EAAUjpE,OAAOzpC,SAAS2xG,MAAQ,IAAMp9F,GAGlE,SAASs+F,EAAkB7kB,QACX,IAAVA,IACFA,EAAQ,IAGTkhB,GAAmGzE,aAAU,GAC9G,IAAIiF,EAAgBjmE,OAAO6+D,QAEvByH,GAnUGtmE,OAAOuiE,UAAUC,UAAUvrJ,QAAQ,WAmU7BstI,GACTiiB,EAAwBF,EAAOnB,oBAC/BA,OAAgD,IAA1BqB,EAAmCb,EAAkBa,EAC3E6C,EAAkB/C,EAAOgD,SACzBA,OAA+B,IAApBD,EAA6B,QAAUA,EAClDzI,EAAWrc,EAAMqc,SAAW0D,EAAmB5D,EAAgBnc,EAAMqc,WAAa,GAClF2I,EAAwBZ,EAAeW,GACvCT,EAAaU,EAAsBV,WACnCC,EAAaS,EAAsBT,WAEvC,SAASnC,IACP,IAAI77F,EAAOg+F,EAAWI,KAGtB,OADItI,IAAU91F,EAAO61F,EAAc71F,EAAM81F,IAClCf,EAAe/0F,GAGxB,IAAIi8F,EAAoBjC,IAExB,SAAStqG,EAASunG,GAChBnE,YAASiB,EAASkD,GAElBlD,EAAQjnJ,OAASquJ,EAAcruJ,OAC/BmvJ,EAAkBzB,gBAAgBzG,EAAQtoG,SAAUsoG,EAAQnyB,QAG9D,IAAI06B,GAAe,EACfoC,EAAa,KAMjB,SAASrC,IACP,IAL4BlrJ,EAAGC,EAK3B4uD,EAAOo+F,IACPO,EAAcZ,EAAW/9F,GAE7B,GAAIA,IAAS2+F,EAEXN,EAAgBM,OACX,CACL,IAAIlzG,EAAWowG,IACX7G,EAAejB,EAAQtoG,SAC3B,IAAK6wG,IAdwBlrJ,EAc2Bq6C,GAd9Bt6C,EAcgB6jJ,GAbnCvB,WAAariJ,EAAEqiJ,UAAYtiJ,EAAEsoJ,SAAWroJ,EAAEqoJ,QAAUtoJ,EAAEw8D,OAASv8D,EAAEu8D,MAaL,OAEnE,GAAI+wF,IAAe1I,EAAWvqG,GAAW,OAEzCizG,EAAa,KAKjB,SAAmBjzG,GACjB,GAAI6wG,EACFA,GAAe,EACf5sG,QACK,CACL,IAAIkyE,EAAS,MACbq6B,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GACjFA,EACF7sG,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,IASpB,SAAmB+wG,GACjB,IAAIC,EAAa1I,EAAQtoG,SAIrBixG,EAAUkC,EAAS3yC,YAAY+pC,EAAWyG,KAC7B,IAAbC,IAAgBA,EAAU,GAC9B,IAAIE,EAAYgC,EAAS3yC,YAAY+pC,EAAWwG,KAC7B,IAAfI,IAAkBA,EAAY,GAClC,IAAI93H,EAAQ43H,EAAUE,EAElB93H,IACFw3H,GAAe,EACfO,EAAG/3H,IAnBCg4H,CAAUrxG,OAjBd2wG,CAAU3wG,IAyCd,IAAIuU,EAAOo+F,IACPO,EAAcZ,EAAW/9F,GACzBA,IAAS2+F,GAAaN,EAAgBM,GAC1C,IAAI5B,EAAkBlB,IAClB+C,EAAW,CAAC5I,EAAW+G,IAuE3B,SAASF,EAAGxuJ,GAEV8sJ,EAAc0B,GAAGxuJ,GAWnB,IAAI4uJ,EAAgB,EAEpB,SAASC,EAAkBp4H,GAGH,KAFtBm4H,GAAiBn4H,IAEoB,IAAVA,EACzBowD,OAAO5kC,iBAAiBstG,EAAmBvB,GAChB,IAAlBY,GACT/nE,OAAO/kC,oBAAoBytG,EAAmBvB,GAIlD,IAAIc,GAAY,EAiChB,IAAIpJ,EAAU,CACZjnJ,OAAQquJ,EAAcruJ,OACtB80H,OAAQ,MACRn2E,SAAUsxG,EACVC,WAnIF,SAAoBvxG,GAClB,IAAIozG,EAAUvlJ,SAASwlJ,cAAc,QACjC1B,EAAO,GAMX,OAJIyB,GAAWA,EAAQl0H,aAAa,UAClCyyH,EAAOe,EAAUjpE,OAAOzpC,SAAS2xG,OAG5BA,EAAO,IAAMW,EAAWjI,EAAWE,EAAWvqG,KA4HrDr/C,KAzHF,SAAc4zD,EAAMpZ,GAElB,IAAIg7E,EAAS,OACTn2E,EAAWspG,EAAe/0F,OAAM7gE,OAAWA,EAAW40J,EAAQtoG,UAClEwwG,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GACrF,GAAKA,EAAL,CACA,IAAIv8F,EAAOg2F,EAAWvqG,GAClBkzG,EAAcZ,EAAWjI,EAAW91F,GAGxC,GAFkBo+F,MAAkBO,EAEnB,CAIfD,EAAa1+F,EAxIrB,SAAsBA,GACpBk1B,OAAOzpC,SAASkiB,KAAO3N,EAwIjB++F,CAAaJ,GACb,IAAI94B,EAAY+4B,EAAS3yC,YAAY+pC,EAAWjC,EAAQtoG,WACpDuzG,EAAYJ,EAASjyJ,MAAM,EAAGk5H,EAAY,GAC9Cm5B,EAAU5yJ,KAAK4zD,GACf4+F,EAAWI,EACXtvG,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,SAIZiE,SAgGJ4S,QA3FF,SAAiBtC,EAAMpZ,GAErB,IAAIg7E,EAAS,UACTn2E,EAAWspG,EAAe/0F,OAAM7gE,OAAWA,EAAW40J,EAAQtoG,UAClEwwG,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GACrF,GAAKA,EAAL,CACA,IAAIv8F,EAAOg2F,EAAWvqG,GAClBkzG,EAAcZ,EAAWjI,EAAW91F,GACtBo+F,MAAkBO,IAMlCD,EAAa1+F,EACbq+F,EAAgBM,IAGlB,IAAI94B,EAAY+4B,EAASzyJ,QAAQ6pJ,EAAWjC,EAAQtoG,YACjC,IAAfo6E,IAAkB+4B,EAAS/4B,GAAa7lE,GAC5CtQ,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,SAsEdoxG,GAAIA,EACJW,OA7DF,WACEX,GAAI,IA6DJY,UA1DF,WACEZ,EAAG,IA0DH3T,MAzCF,SAAe+Q,QACE,IAAXA,IACFA,GAAS,GAGX,IAAIyD,EAAUzB,EAAkB/B,UAAUD,GAO1C,OALKkD,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdQ,MAwBTC,OApBF,SAAgB3xJ,GACd,IAAI6nJ,EAAWoI,EAAkB3B,eAAetuJ,GAEhD,OADAkxJ,EAAkB,GACX,WACLA,GAAmB,GACnBrJ,OAiBJ,OAAOE,EAGT,SAAS9lJ,EAAMI,EAAG4wJ,EAAYC,GAC5B,OAAOhyJ,KAAKgB,IAAIhB,KAAKiB,IAAIE,EAAG4wJ,GAAaC,GAO3C,SAASC,EAAoB1lB,QACb,IAAVA,IACFA,EAAQ,IAGV,IAAI+hB,EAAS/hB,EACT4gB,EAAsBmB,EAAOnB,oBAC7B+E,EAAwB5D,EAAO6D,eAC/BA,OAA2C,IAA1BD,EAAmC,CAAC,KAAOA,EAC5DE,EAAsB9D,EAAO+D,aAC7BA,OAAuC,IAAxBD,EAAiC,EAAIA,EACpD3D,EAAmBH,EAAOI,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CM,EAAoBjC,IAExB,SAAStqG,EAASunG,GAChBnE,YAASiB,EAASkD,GAElBlD,EAAQjnJ,OAASinJ,EAAQ5L,QAAQr7I,OACjCmvJ,EAAkBzB,gBAAgBzG,EAAQtoG,SAAUsoG,EAAQnyB,QAG9D,SAASo6B,IACP,OAAO9uJ,KAAKW,SAASP,SAAS,IAAI67G,OAAO,EAAGyyC,GAG9C,IAAItvJ,EAAQ2B,EAAMsxJ,EAAc,EAAGF,EAAevyJ,OAAS,GACvDq7I,EAAUkX,EAAen/H,KAAI,SAAUw4B,GACzC,OAAmCq8F,EAAer8F,OAAOv5D,EAAjC,kBAAVu5D,EAAsDsjG,IAAgDtjG,EAAMv6D,KAAO69J,QAG/HgB,EAAahH,EAyCjB,SAAS6G,EAAGxuJ,GACV,IAAIolG,EAAYxlG,EAAM8lJ,EAAQznJ,MAAQ+B,EAAG,EAAG0lJ,EAAQ5L,QAAQr7I,OAAS,GAEjE2+C,EAAWsoG,EAAQ5L,QAAQ10C,GAC/BwoD,EAAkB7B,oBAAoB3uG,EAFzB,MAE2C4uG,GAAqB,SAAUkC,GACjFA,EACF7sG,EAAS,CACPkyE,OALO,MAMPn2E,SAAUA,EACVn/C,MAAOmnG,IAKT/jD,OA8BN,IAAIqkG,EAAU,CACZjnJ,OAAQq7I,EAAQr7I,OAChB80H,OAAQ,MACRn2E,SAAU08F,EAAQ77I,GAClBA,MAAOA,EACP67I,QAASA,EACT6U,WAAYA,EACZ5wJ,KA1FF,SAAc4zD,EAAMpZ,GAElB,IAAIg7E,EAAS,OACTn2E,EAAWspG,EAAe/0F,EAAMpZ,EAAOo1G,IAAajI,EAAQtoG,UAChEwwG,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GACrF,GAAKA,EAAL,CACA,IACI9oD,EADYsgD,EAAQznJ,MACI,EACxBkzJ,EAAczL,EAAQ5L,QAAQx7I,MAAM,GAEpC6yJ,EAAY1yJ,OAAS2mG,EACvB+rD,EAAYjzJ,OAAOknG,EAAW+rD,EAAY1yJ,OAAS2mG,EAAWhoD,GAE9D+zG,EAAYpzJ,KAAKq/C,GAGnBiE,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,EACVn/C,MAAOmnG,EACP00C,QAASqX,SAuEbl9F,QAlEF,SAAiBtC,EAAMpZ,GAErB,IAAIg7E,EAAS,UACTn2E,EAAWspG,EAAe/0F,EAAMpZ,EAAOo1G,IAAajI,EAAQtoG,UAChEwwG,EAAkB7B,oBAAoB3uG,EAAUm2E,EAAQy4B,GAAqB,SAAUkC,GAChFA,IACLxI,EAAQ5L,QAAQ4L,EAAQznJ,OAASm/C,EACjCiE,EAAS,CACPkyE,OAAQA,EACRn2E,SAAUA,SA0DdoxG,GAAIA,EACJW,OAnCF,WACEX,GAAI,IAmCJY,UAhCF,WACEZ,EAAG,IAgCH4C,MA7BF,SAAepxJ,GACb,IAAIolG,EAAYsgD,EAAQznJ,MAAQ+B,EAChC,OAAOolG,GAAa,GAAKA,EAAYsgD,EAAQ5L,QAAQr7I,QA4BrDo8I,MAzBF,SAAe+Q,GAKb,YAJe,IAAXA,IACFA,GAAS,GAGJgC,EAAkB/B,UAAUD,IAqBnC0D,OAlBF,SAAgB3xJ,GACd,OAAOiwJ,EAAkB3B,eAAetuJ,KAmB1C,OAAO+nJ,I,oGCj5BH2L,EAAc,GAEpB,SAASC,EAAY/gK,EAAIy6B,EAAOt6B,GAAqC,MAA/B6gK,EAA+B,uDAApB,EAAGtU,EAAiB,sEAC/CjyH,GAD+C,IACnE,2BAA2B,KAAhBq/B,EAAgB,QAEzB,GAAImnG,IAAU9gK,EAAM25D,EAAM35D,MAAO,CAE/B,GAAIusJ,EAAS,OAEb,GAAI5yF,EAAMn6D,MAAO,MAAMm6D,EAAMn6D,MAE7B,GAAIm6D,EAAM6uD,SAAU,OAAO7uD,EAAM6uD,SAEjC,MAAM7uD,EAAMonG,UAXmD,8BAgBnE,IAAMpnG,EAAQ,CACZ35D,OACA+gK,QACAlhK,EAAE,WAAF,cAAMG,IAELL,MAAK,SAAA6oH,GAAQ,OAAI7uD,EAAM6uD,SAAuB,MAAZA,GAAmBA,KAAiB8H,OAAM,SAAAx8G,GAAC,OAAI6lD,EAAMn6D,MAAa,MAALsU,EAAYA,EAAI,mBAAiBnU,MAAK,WAChIkhK,EAAW,GACb54C,YAAW,WACT,IAAM16G,EAAQ+sB,EAAMltB,QAAQusD,IACb,IAAXpsD,GAAc+sB,EAAM9sB,OAAOD,EAAO,KACrCszJ,OAKT,GADAvmI,EAAMjtB,KAAKssD,IACN4yF,EAAS,MAAM5yF,EAAMonG,QAG5B,SAAS9qH,EAAM3b,GAAgB,2BAANt6B,EAAM,iCAANA,EAAM,kBAC7B,QAAaI,IAATJ,GAAsC,IAAhBA,EAAK+N,OAAcusB,EAAM9sB,OAAO,EAAG8sB,EAAMvsB,YAAa,CAC9E,IAAM4rD,EAAQr/B,EAAMmjF,MAAK,SAAA9jD,GAAK,OAAImnG,IAAU9gK,EAAM25D,EAAM35D,SAExD,GAAI25D,EAAO,CACT,IAAMpsD,EAAQ+sB,EAAMltB,QAAQusD,IACb,IAAXpsD,GAAc+sB,EAAM9sB,OAAOD,EAAO,KAuB5C,SAAS++I,EAASzsJ,GAAa,2BAANG,EAAM,iCAANA,EAAM,kBAC7B,OAAO4gK,EAAY/gK,EAAI8gK,EAAa3gK,EAAMssJ,EAASuU,UAGrDvU,EAASuU,SAAW,EAEpBvU,EAASr2G,MAAQ,sCAAIj2C,EAAJ,yBAAIA,EAAJ,uBAAai2C,EAAK,WAAL,GAAM0qH,GAAN,OAAsB3gK,KAEpDssJ,EAASC,QAAU,SAAC1sJ,GAAD,2BAAQG,EAAR,iCAAQA,EAAR,kBAAsB4gK,EAAY/gK,EAAI8gK,EAAa3gK,EAAMssJ,EAASuU,UAAU,IAE/FvU,EAAS0U,KAAO,WAAa,2BAAThhK,EAAS,yBAATA,EAAS,gBAC3B,IAAIihK,EAEJ,OAAuF,OAA/EA,EAAoBN,EAAYljD,MAAK,SAAA9jD,GAAK,OAAImnG,IAAU9gK,EAAM25D,EAAM35D,eAAkB,EAASihK,EAAkBz4C,W,gBC/DzHizB,EAAOC,QAAUC,EAAQ,GAARA,I,6BCjBnB,8CACe,SAASulB,EAA4B7nD,EAAG8nD,GACrD,GAAK9nD,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,YAAiBA,EAAG8nD,GACtD,IAAI7xJ,EAAIe,OAAOgF,UAAU9G,SAASP,KAAKqrG,GAAGzrG,MAAM,GAAI,GAEpD,MADU,WAAN0B,GAAkB+pG,EAAE7lG,cAAalE,EAAI+pG,EAAE7lG,YAAY8G,MAC7C,QAANhL,GAAqB,QAANA,EAAoBqO,MAAMw9F,KAAK9B,GACxC,cAAN/pG,GAAqB,2CAA2CoL,KAAKpL,GAAW,YAAiB+pG,EAAG8nD,QAAxG,K,6BCPa,SAASC,EAA8BnkJ,EAAQu6I,GAC5D,GAAc,MAAVv6I,EAAgB,MAAO,GAC3B,IAEI7d,EAAKyO,EAFLH,EAAS,GACT+pJ,EAAapnJ,OAAO+8B,KAAKnwB,GAG7B,IAAKpP,EAAI,EAAGA,EAAI4pJ,EAAW1pJ,OAAQF,IACjCzO,EAAMq4J,EAAW5pJ,GACb2pJ,EAASpqJ,QAAQhO,IAAQ,IAC7BsO,EAAOtO,GAAO6d,EAAO7d,IAGvB,OAAOsO,EAZT,mC,6BCGE+tI,EAAOC,QAAUC,EAAQ,K,6BCHZ,SAASkc,EAAgBx+C,EAAGx2F,GAMzC,OALAg1I,EAAkBxnJ,OAAOwrI,gBAAkB,SAAyBxiC,EAAGx2F,GAErE,OADAw2F,EAAE9oG,UAAYsS,EACPw2F,IAGcA,EAAGx2F,GAN5B,mC,8BCEA,SAASw+I,IAEP,GAC4C,qBAAnCC,gCAC4C,oBAA5CA,+BAA+BD,SAcxC,IAEEC,+BAA+BD,SAASA,GACxC,MAAOlhK,GAGPgT,QAAQ3T,MAAMW,IAOhBkhK,GACA5lB,EAAOC,QAAUC,EAAQ,K,6BC/BzBF,EAAOC,QAAUC,EAAQ,K,6BCHZ,SAAS4lB,EAAkBnlB,EAAK72H,IAClC,MAAPA,GAAeA,EAAM62H,EAAIruI,UAAQwX,EAAM62H,EAAIruI,QAE/C,IAAK,IAAIF,EAAI,EAAG2zJ,EAAO,IAAI7jJ,MAAM4H,GAAM1X,EAAI0X,EAAK1X,IAC9C2zJ,EAAK3zJ,GAAKuuI,EAAIvuI,GAGhB,OAAO2zJ,EAPT,mC,6BCEA,IAAIC,EAAU9lB,EAAQ,IAMlB+lB,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBrY,0BAA0B,EAC1BsY,0BAA0B,EAC1BC,QAAQ,EACRC,WAAW,EACXn1J,MAAM,GAEJo1J,EAAgB,CAClB9nJ,MAAM,EACNvM,QAAQ,EACRsH,WAAW,EACXgtJ,QAAQ,EACRC,QAAQ,EACRriK,WAAW,EACXsiK,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTX,cAAc,EACdC,aAAa,EACbI,WAAW,EACXn1J,MAAM,GAEJ01J,EAAe,GAInB,SAASC,EAAW/L,GAElB,OAAI6K,EAAQmB,OAAOhM,GACV4L,EAIFE,EAAa9L,EAAS,WAAiB8K,EAVhDgB,EAAajB,EAAQoB,YAhBK,CACxB,UAAY,EACZxtH,QAAQ,EACRysH,cAAc,EACdC,aAAa,EACbI,WAAW,GAYbO,EAAajB,EAAQqB,MAAQN,EAY7B,IAAItmJ,EAAiB7L,OAAO6L,eACxB6mJ,EAAsB1yJ,OAAO0yJ,oBAC7B7lB,EAAwB7sI,OAAO6sI,sBAC/BhB,EAA2B7rI,OAAO6rI,yBAClCJ,EAAiBzrI,OAAOyrI,eACxBknB,EAAkB3yJ,OAAOgF,UAsC7BomI,EAAOC,QArCP,SAASunB,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBvnB,EAAeqnB,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,GAI9D,IAAIh2H,EAAO21H,EAAoBI,GAE3BjmB,IACF9vG,EAAOA,EAAK69D,OAAOiyC,EAAsBimB,KAM3C,IAHA,IAAIG,EAAgBX,EAAWO,GAC3BK,EAAgBZ,EAAWQ,GAEtBt1J,EAAI,EAAGA,EAAIu/B,EAAKr/B,SAAUF,EAAG,CACpC,IAAIzO,EAAMguC,EAAKv/B,GAEf,IAAKu0J,EAAchjK,MAAUgkK,IAAaA,EAAUhkK,OAAWmkK,IAAiBA,EAAcnkK,OAAWkkK,IAAiBA,EAAclkK,IAAO,CAC7I,IAAIu7I,EAAauB,EAAyBinB,EAAiB/jK,GAE3D,IAEE8c,EAAegnJ,EAAiB9jK,EAAKu7I,GACrC,MAAO7mI,OAKf,OAAOovJ,I,6BC7FTznB,EAAOC,QAAU,SAAS8nB,EAAMpxJ,EAAGC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEoB,cAAgBnB,EAAEmB,YAAa,OAAO,EAE5C,IAAIzF,EAAQF,EAAGu/B,EACf,GAAIzvB,MAAMC,QAAQxL,GAAI,CAEpB,IADArE,EAASqE,EAAErE,SACGsE,EAAEtE,OAAQ,OAAO,EAC/B,IAAKF,EAAIE,EAAgB,IAARF,KACf,IAAK21J,EAAMpxJ,EAAEvE,GAAIwE,EAAExE,IAAK,OAAO,EACjC,OAAO,EAKT,GAAIuE,EAAEoB,cAAgBmmH,OAAQ,OAAOvnH,EAAE6K,SAAW5K,EAAE4K,QAAU7K,EAAEqxJ,QAAUpxJ,EAAEoxJ,MAC5E,GAAIrxJ,EAAE+nJ,UAAY9pJ,OAAOgF,UAAU8kJ,QAAS,OAAO/nJ,EAAE+nJ,YAAc9nJ,EAAE8nJ,UACrE,GAAI/nJ,EAAE7D,WAAa8B,OAAOgF,UAAU9G,SAAU,OAAO6D,EAAE7D,aAAe8D,EAAE9D,WAIxE,IADAR,GADAq/B,EAAO/8B,OAAO+8B,KAAKh7B,IACLrE,UACCsC,OAAO+8B,KAAK/6B,GAAGtE,OAAQ,OAAO,EAE7C,IAAKF,EAAIE,EAAgB,IAARF,KACf,IAAKwC,OAAOgF,UAAU03I,eAAe/+I,KAAKqE,EAAG+6B,EAAKv/B,IAAK,OAAO,EAEhE,IAAKA,EAAIE,EAAgB,IAARF,KAAY,CAC3B,IAAIzO,EAAMguC,EAAKv/B,GAEf,IAAK21J,EAAMpxJ,EAAEhT,GAAMiT,EAAEjT,IAAO,OAAO,EAGrC,OAAO,EAIT,OAAOgT,IAAIA,GAAKC,IAAIA,I,6BCpCtB,IAAI6qI,EAAwB7sI,OAAO6sI,sBAC/B6P,EAAiB18I,OAAOgF,UAAU03I,eAClC2W,EAAmBrzJ,OAAOgF,UAAUsiJ,qBAExC,SAASgM,EAAS1zB,GACjB,GAAY,OAARA,QAAwB7vI,IAAR6vI,EACnB,MAAM,IAAIrpG,UAAU,yDAGrB,OAAOv2B,OAAO4/H,GA+CfwL,EAAOC,QA5CP,WACC,IACC,IAAKrrI,OAAOm9B,OACX,OAAO,EAMR,IAAIo2H,EAAQ,IAAI70H,OAAO,OAEvB,GADA60H,EAAM,GAAK,KACkC,MAAzCvzJ,OAAO0yJ,oBAAoBa,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHh2J,EAAI,EAAGA,EAAI,GAAIA,IACvBg2J,EAAM,IAAM90H,OAAOi+E,aAAan/G,IAAMA,EAKvC,GAAwB,eAHXwC,OAAO0yJ,oBAAoBc,GAAO1iI,KAAI,SAAU7xB,GAC5D,OAAOu0J,EAAMv0J,MAEHuzD,KAAK,IACf,OAAO,EAIR,IAAIihG,EAAQ,GAIZ,MAHA,uBAAuBlhG,MAAM,IAAIwjB,SAAQ,SAAU29E,GAClDD,EAAMC,GAAUA,KAGf,yBADE1zJ,OAAO+8B,KAAK/8B,OAAOm9B,OAAO,GAAIs2H,IAAQjhG,KAAK,IAM9C,MAAO1iE,GAER,OAAO,GAIQ6jK,GAAoB3zJ,OAAOm9B,OAAS,SAAU9/B,EAAQuP,GAKtE,IAJA,IAAIk+F,EAEAgiC,EADA/hC,EAAKuoD,EAASj2J,GAGTmE,EAAI,EAAGA,EAAI5R,UAAU8N,OAAQ8D,IAAK,CAG1C,IAAK,IAAIzS,KAFT+7G,EAAO9qG,OAAOpQ,UAAU4R,IAGnBk7I,EAAe/+I,KAAKmtG,EAAM/7G,KAC7Bg8G,EAAGh8G,GAAO+7G,EAAK/7G,IAIjB,GAAI89I,EAAuB,CAC1BC,EAAUD,EAAsB/hC,GAChC,IAAK,IAAIttG,EAAI,EAAGA,EAAIsvI,EAAQpvI,OAAQF,IAC/B61J,EAAiB11J,KAAKmtG,EAAMgiC,EAAQtvI,MACvCutG,EAAG+hC,EAAQtvI,IAAMstG,EAAKgiC,EAAQtvI,MAMlC,OAAOutG,I,6BCxFO,SAAS6oD,EAAgB7nB,GACtC,GAAIz+H,MAAMC,QAAQw+H,GAAM,OAAOA,EADjC,mC,6BCAe,SAAS8nB,IACtB,MAAM,IAAIt9H,UAAU,6IADtB,mC,6BCAe,SAASu9H,EAAiBC,GACvC,GAAsB,qBAAXjvJ,QAA0BA,OAAOC,YAAY/E,OAAO+zJ,GAAO,OAAOzmJ,MAAMw9F,KAAKipD,GAD1F,mC,6BCAA,6CACe,SAASC,EAAej7I,EAAQmoB,GAC7C,MAAQlhC,OAAOgF,UAAU03I,eAAe/+I,KAAKob,EAAQmoB,IAEpC,QADfnoB,EAAS,YAAeA,MAI1B,OAAOA,I,6BCPM,SAASk7I,IACtB,GAAuB,qBAAZ9oB,UAA4BA,QAAQpJ,UAAW,OAAO,EACjE,GAAIoJ,QAAQpJ,UAAUmyB,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAhyC,KAAKn9G,UAAU9G,SAASP,KAAKwtI,QAAQpJ,UAAU5f,KAAM,IAAI,iBAClD,EACP,MAAO1+G,GACP,OAAO,GATX,mC,6BCAA,sDAEe,SAAS2wJ,EAAWC,EAAQ1kK,EAAM2kK,GAc/C,OAZEF,EADE,cACWjpB,QAAQpJ,UAER,SAAoBsyB,EAAQ1kK,EAAM2kK,GAC7C,IAAIvyJ,EAAI,CAAC,MACTA,EAAE/E,KAAKnN,MAAMkS,EAAGpS,GAChB,IACIu6I,EAAW,IADGqqB,SAASl1C,KAAKxvH,MAAMwkK,EAAQtyJ,IAG9C,OADIuyJ,GAAO,YAAepqB,EAAUoqB,EAAMtvJ,WACnCklI,IAIOr6I,MAAM,KAAMD,a,0CCb9B4kK,GAEA,OAAO,YACLA,WAAa,YACX,oBAAW3kB,EACTA,KACK,MAAIA,IACRA,mB,6BCVM,SAAS4kB,EAAQzkB,GAa9B,OATEykB,EADoB,oBAAX3vJ,QAAoD,kBAApBA,OAAOC,SACtC,SAAiBirI,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlrI,QAAyBkrI,EAAI7sI,cAAgB2B,QAAUkrI,IAAQlrI,OAAOE,UAAY,gBAAkBgrI,IAI9GA,G,8CCXF,SAAS0kB,EAA2BjlK,EAAMkO,GACvD,OAAIA,GAA2B,WAAlB82J,EAAQ92J,IAAsC,oBAATA,EAI3C,OAAAg3J,EAAA,GAAsBllK,GAHpBkO,I,4ICKLi3J,E,oJACJjQ,QAAUkQ,YAAc,EAAD,O,sCAEvB7vH,kB,OACS,uBAAQ2/G,QAASj1J,KAAjB,QAA+BkqB,SAAUlqB,KAAK26I,MAAMzwH,Y,GAJnC27H,IAAMuP,WCATvP,IAAMuP,UCPxB,IAAMgQ,EAAoB,SAAC/pD,EAAIu/C,G,MACtB,oBAAPv/C,EAAoBA,EAA3B,GAD+B,GAGpBgqD,EAAsB,SAAChqD,EAAIu/C,G,MACjB,kBAAPv/C,EACV46C,YAAe56C,EAAI,KAAM,KADtB,GAAP,GCIIiqD,EAAiB,SAAAC,G,OAAC,GAClBC,EAAe3f,IAAf2f,WACN,qBAAWA,IACTA,KAOF,IAAMC,EAAaD,GACjB,c,IAEIE,EAMC,EANDA,SACAC,EAKC,EALDA,SACAjd,EAIC,EAJDA,QACGkd,EAGF,iDACKj4J,EAAWi4J,EADhB,OAGCjrB,EAAQ,OAAH,IAAG,CAAH,MAEP+N,QAAS,SAAAh7I,G,IAEL,GAAag7I,KACb,MAAOmd,G,MACPn4J,mBACA,EAICA,EAAD,sBACAA,UACC,GAFD,UAEYC,GA7BtB,SAAyBD,G,SACbA,WAAiBA,EAAjBA,QAAiCA,EAAjCA,SAAkDA,EAA5D,UA6BSo4J,CAJH,KAMEp4J,mBACAi4J,Q,OAOJhrB,MADE2qB,IAAJ,GACcxb,GAEZnP,EAIK,sBAAP,MAWJ,IAAMorB,EAAOP,GACX,c,QAEI3O,iBAOC,MAPW4O,EAOX,EANDjiG,EAMC,EANDA,QACA63C,EAKC,EALDA,GACAqqD,EAIC,EAJDA,SACGE,EAGF,uD,OAED,kBAAC5Q,IAAD,eACG,SAAA/5I,GACC,mB,IAEQg6I,EAAYh6I,EAHV,QAKJ0xC,EAAW04G,EACfD,EAAkB/pD,EAAIpgG,EADY,UAElCA,EAFF,UAKMqjJ,EAAO3xG,EAAWsoG,aAAH,GAArB,GACMta,EAAQ,OAAH,IAAG,CAAH,MAET2jB,KAFS,EAGTqH,SAHS,W,IAIDh5G,EAAWy4G,EAAkB/pD,EAAIpgG,EAAvC,WACeuoD,EAAUyxF,EAAH,QAAqBA,EAA3C,MAEAviE,M,OAKA4yE,IAAJ,EACE3qB,MAAYmP,GAAZnP,EAEAA,aAGKkL,oBAAP,SCxGJyf,EAAiB,SAAAC,G,OAAC,GAClBC,EAAe3f,IAAf2f,WACN,qBAAW,IACTA,KAUcA,GACd,c,QAEI,gBAAgBQ,OAef,MAf6B,OAe7B,E,IAdDC,uBAcC,MAdiB,SAcjB,EAbDC,EAaC,EAbDA,YACWC,EAYV,EAZDlc,UACAoM,EAWC,EAXDA,MACU+P,EAUT,EAVD3K,SACU4K,EAST,EATD15G,SACA4pG,EAQC,EARDA,UACAD,EAOC,EAPDA,OACOgQ,EAMN,EAND1hI,MACAy2E,EAKC,EALDA,GACAqqD,EAIC,EAJDA,SACGE,EAGF,uJ,OAED,kBAAC5Q,IAAD,eACG,SAAA/5I,GACC,mB,IAEM2/I,EAAkByL,GAAgBprJ,EAAxC,SACM0iJ,EAAa0H,EACjBD,EAAkB/pD,EADkB,GAAtC,GAIkBn6C,EAASy8F,EARjB,SAUJ4I,EACJrlG,GAAQA,sCADV,QAGMG,EAAQklG,EACVnQ,YAAUwE,EAAD,SAA2B,CAClC15F,KADkC,EAElCm1F,MAFkC,EAGlCE,UAHkC,EAIlCD,WALN,KAQMmF,KAAc2K,EAChBA,EAAa/kG,EADe,GAAhC,GAIM4oF,EAAYwR,EArD5B,W,2BAA2B+K,EAAY,yBAAZA,EAAY,gB,OAC9BA,EAAA,QAAkB,SAAA14J,G,OAAC,KAAnB,KAAP,KAqDY24J,CAAeN,EADO,GAA1B,EAGMvhI,EAAQ62H,EAAW,OAAH,IAAG,CAAH,WAAtB,EAEM9gB,EAAQ,OAAH,IAAG,CAAH,C,eACQ8gB,GAAD,GADP,KAETxR,UAFS,EAGTrlH,MAHS,EAITy2E,GAAIsiD,GAlCI,G,OAuCN2H,IAAJ,EACE3qB,MAAYmP,GAAZnP,EAEAA,aAGK,oBAAP,U,cC5EV,SAASgE,EAAS+nB,EAAMC,EAAMC,GAC5B,IAAIC,EAAS5mK,EAAMgb,EAAS+rI,EAAWpzE,EAGvC,SAASkzF,IACP,IAAIpiE,EAAO+tB,KAAKL,MAAQ40B,EAEpBtiD,EAAOiiE,GAAQjiE,GAAQ,EACzBmiE,EAAU3+C,WAAW4+C,EAAOH,EAAOjiE,IAEnCmiE,EAAU,KACLD,IACHhzF,EAAS8yF,EAAKvmK,MAAM8a,EAAShb,GAC7Bgb,EAAUhb,EAAO,OAXnB,MAAQ0mK,IAAMA,EAAO,KAgBzB,IAAII,EAAY,WACd9rJ,EAAUjb,KACVC,EAAOC,UACP8mJ,EAAYv0B,KAAKL,MACjB,IAAI40C,EAAUJ,IAAcC,EAO5B,OANKA,IAASA,EAAU3+C,WAAW4+C,EAAOH,IACtCK,IACFpzF,EAAS8yF,EAAKvmK,MAAM8a,EAAShb,GAC7Bgb,EAAUhb,EAAO,MAGZ2zE,GAoBT,OAjBAmzF,EAAU7wH,MAAQ,WACZ2wH,IACFzf,aAAayf,GACbA,EAAU,OAIdE,EAAUE,MAAQ,WACZJ,IACFjzF,EAAS8yF,EAAKvmK,MAAM8a,EAAShb,GAC7Bgb,EAAUhb,EAAO,KAEjBmnJ,aAAayf,GACbA,EAAU,OAIPE,EAITpoB,EAASA,SAAWA,EAEpBjD,EAAOC,QAAUgD,G,6BCrEjB,sCAAMuoB,EAAa,CACjBC,OAAQ,uBACRC,KAAM,sBACNC,MAAO,yBACPC,UAAW,4BACXC,OAAQ,sBACRC,UAAW,iBACXC,OAAQ,yBACRC,KAAM,yBACNC,KAAM,sBACNC,MAAO,8B,8BCVT,yDAKIC,EAAwB,WACxBC,EAAuC,qBAAfC,WAA6BA,WAA+B,qBAAX3xE,OAAyBA,OAA2B,qBAAXmxB,EAAyBA,EAAS,GAexJ,SAASygD,EAAmBxoK,GAC1B,IAAImnH,EAAW,GACf,MAAO,CACLshD,GAAI,SAAYrjB,GACdj+B,EAASr5G,KAAKs3I,IAEhBsjB,IAAK,SAAatjB,GAChBj+B,EAAWA,EAASjgD,QAAO,SAAU1uD,GACnC,OAAOA,IAAM4sI,MAGjB9qG,IAAK,WACH,OAAOt6C,GAET2T,IAAK,SAAa0sB,EAAUsoI,GAC1B3oK,EAAQqgC,EACR8mF,EAAStgC,SAAQ,SAAUu+D,GACzB,OAAOA,EAAQplJ,EAAO2oK,QAuI9B,IAAI36J,EAAQq4I,IAAMyO,eA7HlB,SAA4B8T,EAAcC,GACxC,IAAIC,EAAuBC,EAEvBC,EAAc,0BA3CpB,WACE,IAAInpK,EAAM,uBACV,OAAOyoK,EAAezoK,IAAQyoK,EAAezoK,IAAQ,GAAK,EAyCZopK,GAAgB,KAE1Djd,EAAwB,SAAUkd,GAGpC,SAASld,IACP,IAAIh9D,EAIJ,OAFAA,EAAQk6E,EAAWvoK,MAAMH,KAAME,YAAcF,MACvC2oK,QAAUX,EAAmBx5E,EAAMmsD,MAAMn7I,OACxCgvF,EAPTupE,YAAevM,EAAUkd,GAUzB,IAAIE,EAASpd,EAASl2I,UAoCtB,OAlCAszJ,EAAOC,gBAAkB,WACvB,IAAI7V,EAEJ,OAAOA,EAAO,IAASwV,GAAexoK,KAAK2oK,QAAS3V,GAGtD4V,EAAOE,0BAA4B,SAAmCC,GACpE,GAAI/oK,KAAK26I,MAAMn7I,QAAUupK,EAAUvpK,MAAO,CACxC,IAEI2oK,EAFAa,EAAWhpK,KAAK26I,MAAMn7I,MACtBqgC,EAAWkpI,EAAUvpK,QA9DfkQ,EAiEGs5J,MAjEAr5J,EAiEUkwB,GA/Dd,IAANnwB,GAAW,EAAIA,IAAM,EAAIC,EAEzBD,IAAMA,GAAKC,IAAMA,GA8DlBw4J,EAAc,GAEdA,EAA8C,oBAAzBE,EAAsCA,EAAqBW,EAAUnpI,GAAYgoI,EAQlF,KAFpBM,GAAe,IAGbnoK,KAAK2oK,QAAQx1J,IAAI41J,EAAUvpK,MAAO2oK,IA7E9C,IAAkBz4J,EAAGC,GAmFjBi5J,EAAOtzH,OAAS,WACd,OAAOt1C,KAAK26I,MAAMzwH,UAGbshI,EA/CmB,CAgD1B4J,aAEF5J,EAASoW,oBAAqB0G,EAAwB,IAA0BE,GAAeS,IAAU5/I,OAAO6/I,WAAYZ,GAE5H,IAAIa,EAAwB,SAAUC,GAGpC,SAASD,IACP,IAAIE,EAiBJ,OAfAA,EAASD,EAAYjpK,MAAMH,KAAME,YAAcF,MACxC8nD,MAAQ,CACbtoD,MAAO6pK,EAAO9vC,YAGhB8vC,EAAOvsJ,SAAW,SAAU+iB,EAAUsoI,GAGC,MAFI,EAAtBkB,EAAOC,cAENnB,IAClBkB,EAAOz4G,SAAS,CACdpxD,MAAO6pK,EAAO9vC,cAKb8vC,EApBTtR,YAAeoR,EAAUC,GAuBzB,IAAIG,EAAUJ,EAAS7zJ,UAkCvB,OAhCAi0J,EAAQT,0BAA4B,SAAmCC,GACrE,IAAIO,EAAeP,EAAUO,aAC7BtpK,KAAKspK,kBAAgCjpK,IAAjBipK,GAA+C,OAAjBA,EAAwBzB,EAAwByB,GAGpGC,EAAQ3U,kBAAoB,WACtB50J,KAAKib,QAAQutJ,IACfxoK,KAAKib,QAAQutJ,GAAaP,GAAGjoK,KAAK8c,UAGpC,IAAIwsJ,EAAetpK,KAAK26I,MAAM2uB,aAC9BtpK,KAAKspK,kBAAgCjpK,IAAjBipK,GAA+C,OAAjBA,EAAwBzB,EAAwByB,GAGpGC,EAAQzU,qBAAuB,WACzB90J,KAAKib,QAAQutJ,IACfxoK,KAAKib,QAAQutJ,GAAaN,IAAIloK,KAAK8c,WAIvCysJ,EAAQhwC,SAAW,WACjB,OAAIv5H,KAAKib,QAAQutJ,GACRxoK,KAAKib,QAAQutJ,GAAa1uH,MAE1BsuH,GAIXmB,EAAQj0H,OAAS,WACf,OApHaprB,EAoHIlqB,KAAK26I,MAAMzwH,SAnHzBtM,MAAMC,QAAQqM,GAAYA,EAAS,GAAKA,GAmHLlqB,KAAK8nD,MAAMtoD,OApHvD,IAAmB0qB,GAuHRi/I,EA1DmB,CA2D1B/T,aAGF,OADA+T,EAASrH,eAAgByG,EAAwB,IAA0BC,GAAeS,IAAU5/I,OAAQk/I,GACrG,CACL/c,SAAUA,EACV2d,SAAUA,IAMC37J,Q,kCC/Kf,IAAIg8J,EAAU5tB,EAAQ,IAKtBF,EAAOC,QAAUia,EACjBla,EAAOC,QAAQjhH,MAAQA,EACvBghH,EAAOC,QAAQ5mF,QAsGf,SAAkByrF,EAAKxgI,GACrB,OAAOypJ,EAAiB/uI,EAAM8lH,EAAKxgI,GAAUA,IAtG/C07H,EAAOC,QAAQ8tB,iBAAmBA,EAClC/tB,EAAOC,QAAQ+tB,eAAiBA,EAOhC,IAAIC,EAAc,IAAI/vC,OAAO,CAG3B,UAOA,0GACA92D,KAAK,KAAM,KASb,SAASpoC,EAAO8lH,EAAKxgI,GAQnB,IAPA,IAKImwG,EALAy5C,EAAS,GACTvqK,EAAM,EACNmO,EAAQ,EACR0zD,EAAO,GACP2oG,EAAmB7pJ,GAAWA,EAAQ8pJ,WAAa,IAGf,OAAhC35C,EAAMw5C,EAAY3kI,KAAKw7G,KAAe,CAC5C,IAAIhxI,EAAI2gH,EAAI,GACR45C,EAAU55C,EAAI,GACdp7G,EAASo7G,EAAI3iH,MAKjB,GAJA0zD,GAAQs/E,EAAI3yI,MAAML,EAAOuH,GACzBvH,EAAQuH,EAASvF,EAAExB,OAGf+7J,EACF7oG,GAAQ6oG,EAAQ,OADlB,CAKA,IAAItoG,EAAO++E,EAAIhzI,GACXs8D,EAASqmD,EAAI,GACb51G,EAAO41G,EAAI,GACX0tB,EAAU1tB,EAAI,GACd7kF,EAAQ6kF,EAAI,GACZ65C,EAAW75C,EAAI,GACf85C,EAAW95C,EAAI,GAGfjvD,IACF0oG,EAAOt8J,KAAK4zD,GACZA,EAAO,IAGT,IAAIg3F,EAAoB,MAAVpuF,GAA0B,MAARrI,GAAgBA,IAASqI,EACrDvtD,EAAsB,MAAbytJ,GAAiC,MAAbA,EAC7BE,EAAwB,MAAbF,GAAiC,MAAbA,EAC/BF,EAAY35C,EAAI,IAAM05C,EACtBhlD,EAAUg5B,GAAWvyG,EAEzBs+H,EAAOt8J,KAAK,CACViN,KAAMA,GAAQlb,IACdyqE,OAAQA,GAAU,GAClBggG,UAAWA,EACXI,SAAUA,EACV3tJ,OAAQA,EACR27I,QAASA,EACT+R,WAAYA,EACZplD,QAASA,EAAUslD,EAAYtlD,GAAYolD,EAAW,KAAO,KAAOG,EAAaN,GAAa,SAclG,OATIt8J,EAAQgzI,EAAIxyI,SACdkzD,GAAQs/E,EAAIn2B,OAAO78G,IAIjB0zD,GACF0oG,EAAOt8J,KAAK4zD,GAGP0oG,EAoBT,SAASS,EAA0B7pB,GACjC,OAAO8pB,UAAU9pB,GAAKh9E,QAAQ,WAAW,SAAUjxD,GACjD,MAAO,IAAMA,EAAEo2G,WAAW,GAAGn6G,SAAS,IAAIK,iBAmB9C,SAAS46J,EAAkBG,EAAQ5pJ,GAKjC,IAHA,IAAIk9G,EAAU,IAAIt/G,MAAMgsJ,EAAO57J,QAGtBF,EAAI,EAAGA,EAAI87J,EAAO57J,OAAQF,IACR,kBAAd87J,EAAO97J,KAChBovH,EAAQpvH,GAAK,IAAI8rH,OAAO,OAASgwC,EAAO97J,GAAG+2G,QAAU,KAAM6+C,EAAM1jJ,KAIrE,OAAO,SAAUsgI,EAAKiqB,GAMpB,IALA,IAAIrpG,EAAO,GACP5iD,EAAOgiI,GAAO,GAEdkqB,GADUD,GAAQ,IACDzU,OAASuU,EAA2BI,mBAEhD38J,EAAI,EAAGA,EAAI87J,EAAO57J,OAAQF,IAAK,CACtC,IAAI48J,EAAQd,EAAO97J,GAEnB,GAAqB,kBAAV48J,EAAX,CAMA,IACIvqE,EADA3gG,EAAQ8e,EAAKosJ,EAAMnwJ,MAGvB,GAAa,MAAT/a,EAAe,CACjB,GAAIkrK,EAAMR,SAAU,CAEdQ,EAAMxS,UACRh3F,GAAQwpG,EAAM5gG,QAGhB,SAEA,MAAM,IAAIjjC,UAAU,aAAe6jI,EAAMnwJ,KAAO,mBAIpD,GAAIivJ,EAAQhqK,GAAZ,CACE,IAAKkrK,EAAMnuJ,OACT,MAAM,IAAIsqB,UAAU,aAAe6jI,EAAMnwJ,KAAO,kCAAoCye,KAAKC,UAAUz5B,GAAS,KAG9G,GAAqB,IAAjBA,EAAMwO,OAAc,CACtB,GAAI08J,EAAMR,SACR,SAEA,MAAM,IAAIrjI,UAAU,aAAe6jI,EAAMnwJ,KAAO,qBAIpD,IAAK,IAAIqR,EAAI,EAAGA,EAAIpsB,EAAMwO,OAAQ4d,IAAK,CAGrC,GAFAu0E,EAAUqqE,EAAOhrK,EAAMosB,KAElBsxG,EAAQpvH,GAAG6M,KAAKwlF,GACnB,MAAM,IAAIt5D,UAAU,iBAAmB6jI,EAAMnwJ,KAAO,eAAiBmwJ,EAAM7lD,QAAU,oBAAsB7rF,KAAKC,UAAUknE,GAAW,KAGvIj/B,IAAe,IAANt1C,EAAU8+I,EAAM5gG,OAAS4gG,EAAMZ,WAAa3pE,OApBzD,CA4BA,GAFAA,EAAUuqE,EAAMT,SA5EbK,UA4EuC9qK,GA5ExBgkE,QAAQ,SAAS,SAAUjxD,GAC/C,MAAO,IAAMA,EAAEo2G,WAAW,GAAGn6G,SAAS,IAAIK,iBA2EW27J,EAAOhrK,IAErD09H,EAAQpvH,GAAG6M,KAAKwlF,GACnB,MAAM,IAAIt5D,UAAU,aAAe6jI,EAAMnwJ,KAAO,eAAiBmwJ,EAAM7lD,QAAU,oBAAsB1kB,EAAU,KAGnHj/B,GAAQwpG,EAAM5gG,OAASq2B,QArDrBj/B,GAAQwpG,EAwDZ,OAAOxpG,GAUX,SAASkpG,EAAc5pB,GACrB,OAAOA,EAAIh9E,QAAQ,6BAA8B,QASnD,SAAS2mG,EAAa7+H,GACpB,OAAOA,EAAMk4B,QAAQ,gBAAiB,QAUxC,SAASmnG,EAAYC,EAAIv9H,GAEvB,OADAu9H,EAAGv9H,KAAOA,EACHu9H,EAST,SAASlH,EAAO1jJ,GACd,OAAOA,GAAWA,EAAQu2I,UAAY,GAAK,IAwE7C,SAASmT,EAAgBE,EAAQv8H,EAAMrtB,GAChCwpJ,EAAQn8H,KACXrtB,EAAkCqtB,GAAQrtB,EAC1CqtB,EAAO,IAUT,IALA,IAAIipH,GAFJt2I,EAAUA,GAAW,IAEAs2I,OACjB1/G,GAAsB,IAAhB52B,EAAQ42B,IACdi0H,EAAQ,GAGH/8J,EAAI,EAAGA,EAAI87J,EAAO57J,OAAQF,IAAK,CACtC,IAAI48J,EAAQd,EAAO97J,GAEnB,GAAqB,kBAAV48J,EACTG,GAAST,EAAaM,OACjB,CACL,IAAI5gG,EAASsgG,EAAaM,EAAM5gG,QAC5B+zE,EAAU,MAAQ6sB,EAAM7lD,QAAU,IAEtCx3E,EAAK//B,KAAKo9J,GAENA,EAAMnuJ,SACRshI,GAAW,MAAQ/zE,EAAS+zE,EAAU,MAaxCgtB,GANIhtB,EAJA6sB,EAAMR,SACHQ,EAAMxS,QAGCpuF,EAAS,IAAM+zE,EAAU,KAFzB,MAAQ/zE,EAAS,IAAM+zE,EAAU,MAKnC/zE,EAAS,IAAM+zE,EAAU,KAOzC,IAAIisB,EAAYM,EAAapqJ,EAAQ8pJ,WAAa,KAC9CgB,EAAoBD,EAAMh9J,OAAOi8J,EAAU97J,UAAY87J,EAkB3D,OAZKxT,IACHuU,GAASC,EAAoBD,EAAMh9J,MAAM,GAAIi8J,EAAU97J,QAAU68J,GAAS,MAAQf,EAAY,WAI9Fe,GADEj0H,EACO,IAIA0/G,GAAUwU,EAAoB,GAAK,MAAQhB,EAAY,MAG3Da,EAAW,IAAI/wC,OAAO,IAAMixC,EAAOnH,EAAM1jJ,IAAWqtB,GAe7D,SAASuoH,EAAc10F,EAAM7zB,EAAMrtB,GAQjC,OAPKwpJ,EAAQn8H,KACXrtB,EAAkCqtB,GAAQrtB,EAC1CqtB,EAAO,IAGTrtB,EAAUA,GAAW,GAEjBkhD,aAAgB04D,OAlJtB,SAAyB14D,EAAM7zB,GAE7B,IAAItE,EAASm4B,EAAKhkD,OAAOmkD,MAAM,aAE/B,GAAIt4B,EACF,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAO/6B,OAAQF,IACjCu/B,EAAK//B,KAAK,CACRiN,KAAMzM,EACNg8D,OAAQ,KACRggG,UAAW,KACXI,UAAU,EACV3tJ,QAAQ,EACR27I,SAAS,EACT+R,UAAU,EACVplD,QAAS,OAKf,OAAO8lD,EAAWzpG,EAAM7zB,GAgIf09H,CAAe7pG,EAA6B7zB,GAGjDm8H,EAAQtoG,GAxHd,SAAwBA,EAAM7zB,EAAMrtB,GAGlC,IAFA,IAAI8kG,EAAQ,GAEHh3G,EAAI,EAAGA,EAAIozD,EAAKlzD,OAAQF,IAC/Bg3G,EAAMx3G,KAAKsoJ,EAAa10F,EAAKpzD,GAAIu/B,EAAMrtB,GAAS9C,QAKlD,OAAOytJ,EAFM,IAAI/wC,OAAO,MAAQ9U,EAAMhiD,KAAK,KAAO,IAAK4gG,EAAM1jJ,IAEnCqtB,GAgHjB29H,CAAqC9pG,EAA8B7zB,EAAOrtB,GArGrF,SAAyBkhD,EAAM7zB,EAAMrtB,GACnC,OAAO0pJ,EAAehvI,EAAMwmC,EAAMlhD,GAAUqtB,EAAMrtB,GAuG3CirJ,CAAsC/pG,EAA8B7zB,EAAOrtB,K,6BCharEkrJ,ICNXC,EAAkB,45HAElB39J,EDJJ,SAAiB1N,GACf,IAAIy6B,EAAQ,GACZ,OAAO,SAAUj7B,GAEf,YADmBe,IAAfk6B,EAAMj7B,KAAoBi7B,EAAMj7B,GAAOQ,EAAGR,IACvCi7B,EAAMj7B,ICAL4rK,EAAQ,SAAU5sB,GAC5B,OAAO6sB,EAAgBxwJ,KAAK2jI,IAAgC,MAAvBA,EAAK31B,WAAW,IAE3B,MAAvB21B,EAAK31B,WAAW,IAEhB21B,EAAK31B,WAAW,GAAK,MAKXn7G,O,gBCdfkuI,EAAOC,QAAU,CAChByvB,YAAe,EACfC,eAAkB,EAClBC,eAAkB,EAClBC,WAAc,I,cCJf7vB,EAAOC,QAAU,CAChB6vB,EAAI,EACJC,EAAI,EACJC,EAAI,EACJC,EAAI,I,gBCJL,IAAIC,EAAOhwB,EAAQ,IAEnB,SAASiwB,EAAah8D,EAAKhf,GAE1B,QAAkBxwF,GAAdwvG,EAAI7hG,OACP,MAAM,IAAIwF,MAAMq8F,EAAI7hG,OAAS,IAAM6iF,GAKpC,IAFA,IAAI97E,EAAS,EAENA,EAAS86F,EAAI7hG,QAAyB,GAAf6hG,EAAI96F,IACjCA,IAGD/U,KAAK6vG,IAAM,IAAIjyF,MAAMiyF,EAAI7hG,OAAS+G,EAAS87E,GAC3C,IAAK,IAAI/iF,EAAI,EAAGA,EAAI+hG,EAAI7hG,OAAS+G,EAAQjH,IACxC9N,KAAK6vG,IAAI/hG,GAAK+hG,EAAI/hG,EAAIiH,GAIxB82J,EAAav2J,UAAY,CAExBwkC,IAAM,SAAStsC,GACd,OAAOxN,KAAK6vG,IAAIriG,IAGjBo8F,UAAY,WACX,OAAO5pG,KAAK6vG,IAAI7hG,QAGjBopB,SAAW,SAASrjB,GAInB,IAFA,IAAI87F,EAAM,IAAIjyF,MAAM5d,KAAK4pG,YAAc71F,EAAE61F,YAAc,GAE9C97F,EAAI,EAAGA,EAAI9N,KAAK4pG,YAAa97F,IACrC,IAAK,IAAI8d,EAAI,EAAGA,EAAI7X,EAAE61F,YAAah+E,IAClCikF,EAAI/hG,EAAI8d,IAAMggJ,EAAKE,KAAKF,EAAKG,KAAK/rK,KAAK85C,IAAIhsC,IAAO89J,EAAKG,KAAKh4J,EAAE+lC,IAAIluB,KAIpE,OAAO,IAAIigJ,EAAah8D,EAAK,IAG9Bm8D,IAAM,SAASj4J,GAEd,GAAI/T,KAAK4pG,YAAc71F,EAAE61F,YAAc,EACtC,OAAO5pG,KAOR,IAJA,IAAIisK,EAAQL,EAAKG,KAAK/rK,KAAK85C,IAAI,IAAO8xH,EAAKG,KAAKh4J,EAAE+lC,IAAI,IAElD+1D,EAAM,IAAIjyF,MAAM5d,KAAK4pG,aAEhB97F,EAAI,EAAGA,EAAI9N,KAAK4pG,YAAa97F,IACrC+hG,EAAI/hG,GAAK9N,KAAK85C,IAAIhsC,GAGnB,IAASA,EAAI,EAAGA,EAAIiG,EAAE61F,YAAa97F,IAClC+hG,EAAI/hG,IAAM89J,EAAKE,KAAKF,EAAKG,KAAKh4J,EAAE+lC,IAAIhsC,IAAOm+J,GAI5C,OAAO,IAAIJ,EAAah8D,EAAK,GAAGm8D,IAAIj4J,KAItC2nI,EAAOC,QAAUkwB,G,cCpCjB,IA9BA,IAAIK,EAAS,CAEZH,KAAO,SAASx8J,GAEf,GAAIA,EAAI,EACP,MAAM,IAAIiE,MAAM,QAAUjE,EAAI,KAG/B,OAAO28J,EAAOC,UAAU58J,IAGzBu8J,KAAO,SAASv8J,GAEf,KAAOA,EAAI,GACVA,GAAK,IAGN,KAAOA,GAAK,KACXA,GAAK,IAGN,OAAO28J,EAAOE,UAAU78J,IAGzB68J,UAAY,IAAIxuJ,MAAM,KAEtBuuJ,UAAY,IAAIvuJ,MAAM,MAId9P,EAAI,EAAGA,EAAI,EAAGA,IACtBo+J,EAAOE,UAAUt+J,GAAK,GAAKA,EAE5B,IAASA,EAAI,EAAGA,EAAI,IAAKA,IACxBo+J,EAAOE,UAAUt+J,GAAKo+J,EAAOE,UAAUt+J,EAAI,GACxCo+J,EAAOE,UAAUt+J,EAAI,GACrBo+J,EAAOE,UAAUt+J,EAAI,GACrBo+J,EAAOE,UAAUt+J,EAAI,GAEzB,IAASA,EAAI,EAAGA,EAAI,IAAKA,IACxBo+J,EAAOC,UAAUD,EAAOE,UAAUt+J,IAAOA,EAG1C4tI,EAAOC,QAAUuwB,G,6CC3CjBxwB,OAAOC,QAAQ,SAAS5nI,GAAG,IAAInE,EAAE,GAAG,SAAS+I,EAAE2gG,GAAG,GAAG1pG,EAAE0pG,GAAG,OAAO1pG,EAAE0pG,GAAGqiC,QAAQ,IAAIpsI,EAAEK,EAAE0pG,GAAG,CAACxrG,EAAEwrG,EAAEvrG,GAAE,EAAG4tI,QAAQ,IAAI,OAAO5nI,EAAEulG,GAAGrrG,KAAKsB,EAAEosI,QAAQpsI,EAAEA,EAAEosI,QAAQhjI,GAAGpJ,EAAExB,GAAE,EAAGwB,EAAEosI,QAAQ,OAAOhjI,EAAEnJ,EAAEuE,EAAE4E,EAAEpG,EAAE3C,EAAE+I,EAAEd,EAAE,SAAS9D,EAAEnE,EAAE0pG,GAAG3gG,EAAE2gG,EAAEvlG,EAAEnE,IAAIU,OAAO6L,eAAepI,EAAEnE,EAAE,CAACymB,YAAW,EAAGyjB,IAAIw/D,KAAK3gG,EAAEA,EAAE,SAAS5E,GAAG,oBAAoBqB,QAAQA,OAAOi3J,aAAa/7J,OAAO6L,eAAepI,EAAEqB,OAAOi3J,YAAY,CAAC7sK,MAAM,WAAW8Q,OAAO6L,eAAepI,EAAE,aAAa,CAACvU,OAAM,KAAMmZ,EAAE/I,EAAE,SAASmE,EAAEnE,GAAG,GAAG,EAAEA,IAAImE,EAAE4E,EAAE5E,IAAI,EAAEnE,EAAE,OAAOmE,EAAE,GAAG,EAAEnE,GAAG,iBAAiBmE,GAAGA,GAAGA,EAAEu4J,WAAW,OAAOv4J,EAAE,IAAIulG,EAAEhpG,OAAO40H,OAAO,MAAM,GAAGvsH,EAAEA,EAAE2gG,GAAGhpG,OAAO6L,eAAem9F,EAAE,UAAU,CAACjjF,YAAW,EAAG72B,MAAMuU,IAAI,EAAEnE,GAAG,iBAAiBmE,EAAE,IAAI,IAAIxE,KAAKwE,EAAE4E,EAAEd,EAAEyhG,EAAE/pG,EAAE,SAASK,GAAG,OAAOmE,EAAEnE,IAAI+/G,KAAK,KAAKpgH,IAAI,OAAO+pG,GAAG3gG,EAAEpJ,EAAE,SAASwE,GAAG,IAAInE,EAAEmE,GAAGA,EAAEu4J,WAAW,WAAW,OAAOv4J,EAAEw4J,SAAS,WAAW,OAAOx4J,GAAG,OAAO4E,EAAEd,EAAEjI,EAAE,IAAIA,GAAGA,GAAG+I,EAAE2gG,EAAE,SAASvlG,EAAEnE,GAAG,OAAOU,OAAOgF,UAAU03I,eAAe/+I,KAAK8F,EAAEnE,IAAI+I,EAAEmK,EAAE,GAAGnK,EAAEA,EAAE7G,EAAE,GAAj5B,CAAq5B,CAAC,SAASiC,EAAEnE,GAAGmE,EAAE4nI,QAAQC,oBAAQ,KAAe,SAAS7nI,EAAEnE,GAAGmE,EAAE4nI,QAAQC,oBAAQ,IAAU,SAASF,OAAO8wB,oBAAoBC,qBAAqB,aAAaA,oBAAoB9zJ,EAAE6zJ,qBAAqB,SAAS9wB,QAAQ,IAAIgxB,mCAAmCD,oBAAoB,GAAGE,2CAA2CF,oBAAoBl9J,EAAEm9J,oCAAoCE,wCAAwCH,oBAAoB,GAAGI,gDAAgDJ,oBAAoBl9J,EAAEq9J,yCAAyCE,YAAY,SAAS/H,QAAQhxJ,GAAG,OAAOgxJ,QAAQ,mBAAmB3vJ,QAAQ,iBAAiBA,OAAOC,SAAS,SAAStB,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBqB,QAAQrB,EAAEN,cAAc2B,QAAQrB,IAAIqB,OAAOE,UAAU,gBAAgBvB,IAAIA,GAAG,SAASigJ,WAAW,OAAOA,SAAS1jJ,OAAOm9B,QAAQ,SAAS15B,GAAG,IAAI,IAAInE,EAAE,EAAEA,EAAE1P,UAAU8N,OAAO4B,IAAI,CAAC,IAAI+I,EAAEzY,UAAU0P,GAAG,IAAI,IAAI0pG,KAAK3gG,EAAErI,OAAOgF,UAAU03I,eAAe/+I,KAAK0K,EAAE2gG,KAAKvlG,EAAEulG,GAAG3gG,EAAE2gG,IAAI,OAAOvlG,IAAI5T,MAAMH,KAAKE,WAAW,SAASq6I,gBAAgBxmI,EAAEnE,GAAG,KAAKmE,aAAanE,GAAG,MAAM,IAAIi3B,UAAU,qCAAqC,SAAS6zG,kBAAkB3mI,EAAEnE,GAAG,IAAI,IAAI+I,EAAE,EAAEA,EAAE/I,EAAE5B,OAAO2K,IAAI,CAAC,IAAI2gG,EAAE1pG,EAAE+I,GAAG2gG,EAAEjjF,WAAWijF,EAAEjjF,aAAY,EAAGijF,EAAEljF,cAAa,EAAG,UAAUkjF,IAAIA,EAAEuhC,UAAS,GAAIvqI,OAAO6L,eAAepI,EAAEulG,EAAEj6G,IAAIi6G,IAAI,SAASwhC,aAAa/mI,EAAEnE,EAAE+I,GAAG,OAAO/I,GAAG8qI,kBAAkB3mI,EAAEuB,UAAU1F,GAAG+I,GAAG+hI,kBAAkB3mI,EAAE4E,GAAG5E,EAAE,SAASknI,UAAUlnI,EAAEnE,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIi3B,UAAU,sDAAsD9yB,EAAEuB,UAAUhF,OAAO40H,OAAOt1H,GAAGA,EAAE0F,UAAU,CAAC7B,YAAY,CAACjU,MAAMuU,EAAE8mI,UAAS,EAAGzkH,cAAa,KAAMxmB,GAAGkoJ,gBAAgB/jJ,EAAEnE,GAAG,SAASkoJ,gBAAgB/jJ,EAAEnE,GAAG,OAAOkoJ,gBAAgBxnJ,OAAOwrI,gBAAgB,SAAS/nI,EAAEnE,GAAG,OAAOmE,EAAEvD,UAAUZ,EAAEmE,IAAIA,EAAEnE,GAAG,SAASwrI,aAAarnI,GAAG,OAAO,WAAW,IAAInE,EAAE+I,EAAEkjI,gBAAgB9nI,GAAG,GAAGwwJ,4BAA4B,CAAC,IAAIjrD,EAAEuiC,gBAAgB77I,MAAMyT,YAAY7D,EAAE6rI,QAAQpJ,UAAU15H,EAAEzY,UAAUo5G,QAAQ1pG,EAAE+I,EAAExY,MAAMH,KAAKE,WAAW,OAAO8kK,2BAA2BhlK,KAAK4P,IAAI,SAASo1J,2BAA2BjxJ,EAAEnE,GAAG,OAAOA,GAAG,WAAWm1J,QAAQn1J,IAAI,mBAAmBA,EAAEmtI,uBAAuBhpI,GAAGnE,EAAE,SAASmtI,uBAAuBhpI,GAAG,QAAG,IAASA,EAAE,MAAM,IAAIipI,eAAe,6DAA6D,OAAOjpI,EAAE,SAASwwJ,4BAA4B,GAAG,oBAAoB9oB,UAAUA,QAAQpJ,UAAU,OAAM,EAAG,GAAGoJ,QAAQpJ,UAAUmyB,KAAK,OAAM,EAAG,GAAG,mBAAmBC,MAAM,OAAM,EAAG,IAAI,OAAOhyC,KAAKn9G,UAAU9G,SAASP,KAAKwtI,QAAQpJ,UAAU5f,KAAK,IAAI,iBAAgB,EAAG,MAAM1+G,GAAG,OAAM,GAAI,SAAS8nI,gBAAgB9nI,GAAG,OAAO8nI,gBAAgBvrI,OAAOwrI,eAAexrI,OAAOyrI,eAAe,SAAShoI,GAAG,OAAOA,EAAEvD,WAAWF,OAAOyrI,eAAehoI,KAAKA,GAAG,SAASu/I,gBAAgBv/I,EAAEnE,EAAE+I,GAAG,OAAO/I,KAAKmE,EAAEzD,OAAO6L,eAAepI,EAAEnE,EAAE,CAACpQ,MAAMmZ,EAAE0d,YAAW,EAAGD,cAAa,EAAGykH,UAAS,IAAK9mI,EAAEnE,GAAG+I,EAAE5E,EAAE+4J,YAAY,oBAAoBC,qBAAqBA,qBAAqBD,iBAAY,EAAOA,aAAaA,YAAYpxB,QAAQ,IAAIsxB,cAAc,oBAAoBD,qBAAqBA,qBAAqBR,QAAQU,UAAU,SAASl5J,GAAG,OAAOA,GAAGm5J,iBAAiB,SAASxE,YAAYztB,UAAUiyB,iBAAiBxE,YAAY,IAAIyE,OAAO/xB,aAAa8xB,kBAAkB,SAASA,mBAAmB,IAAIn5J,EAAEwmI,gBAAgBv6I,KAAKktK,kBAAkB,IAAI,IAAIt9J,EAAE1P,UAAU8N,OAAO2K,EAAE,IAAIiF,MAAMhO,GAAG0pG,EAAE,EAAEA,EAAE1pG,EAAE0pG,IAAI3gG,EAAE2gG,GAAGp5G,UAAUo5G,GAAG,OAAOg6C,gBAAgBvW,uBAAuBhpI,EAAEo5J,OAAOl/J,KAAK9N,MAAMgtK,OAAO,CAACntK,MAAMkrG,OAAOvyF,KAAK,UAAUg0J,2CAA2Ct6J,EAAE+6J,aAAa9Z,gBAAgBvW,uBAAuBhpI,GAAG,qBAAgB,GAAQu/I,gBAAgBvW,uBAAuBhpI,GAAG,WAAW,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAE,OAAO,QAAQ3gG,GAAG2gG,EAAEvlG,EAAE4mI,OAAOr0B,eAAU,IAAS3tG,OAAE,EAAOA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,aAAa,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAE,OAAO,QAAQ3gG,GAAG2gG,EAAEvlG,EAAE4mI,OAAO0yB,iBAAY,IAAS10J,OAAE,EAAOA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,oBAAoB,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAE,OAAO,QAAQ3gG,GAAG2gG,EAAEvlG,EAAE4mI,OAAO2yB,wBAAmB,IAAS30J,OAAE,EAAOA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,UAAU,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAEvlG,EAAEw5J,iBAAiB,QAAQ50J,GAAG2gG,EAAEvlG,EAAE4mI,OAAO6yB,cAAS,IAAS70J,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,WAAW,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAEvlG,EAAE05J,mBAAmB,QAAQ90J,GAAG2gG,EAAEvlG,EAAE4mI,OAAO+yB,eAAU,IAAS/0J,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,WAAW,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAEvlG,EAAE05J,mBAAmB,QAAQ90J,GAAG2gG,EAAEvlG,EAAE4mI,OAAOhlB,eAAU,IAASh9G,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,WAAW,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAEvlG,EAAE05J,mBAAmB,QAAQ90J,GAAG2gG,EAAEvlG,EAAE4mI,OAAOgzB,eAAU,IAASh1J,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,YAAY,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAE,QAAQ3gG,GAAG2gG,EAAEvlG,EAAE4mI,OAAOizB,gBAAW,IAASj1J,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,oBAAoB,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAE,QAAQ3gG,GAAG2gG,EAAEvlG,EAAE4mI,OAAOkzB,wBAAmB,IAASl1J,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAM0jJ,gBAAgBvW,uBAAuBhpI,GAAG,mBAAmB,SAASnE,GAAG,IAAI+I,EAAE2gG,EAAE,QAAQ3gG,GAAG2gG,EAAEvlG,EAAE4mI,OAAOmzB,uBAAkB,IAASn1J,GAAGA,EAAE1K,KAAKqrG,EAAE1pG,MAAMmE,EAAE,OAAO+mI,aAAaoyB,iBAAiB,CAAC,CAAC7tK,IAAI,oBAAoBG,MAAM,WAAW,IAAIuU,EAAE/T,KAAK+tK,QAAQtpE,QAAQ1wF,IAAI/T,KAAKguK,aAAahuK,KAAK26I,MAAMszB,QAAQl6J,EAAEy9C,iBAAiB,QAAQxxD,KAAKsmH,SAASvyG,EAAEy9C,iBAAiB,UAAUxxD,KAAKqtK,WAAWt5J,EAAEy9C,iBAAiB,iBAAiBxxD,KAAKstK,kBAAkBv5J,EAAEy9C,iBAAiB,OAAOxxD,KAAKwtK,QAAQz5J,EAAEy9C,iBAAiB,QAAQxxD,KAAK0tK,SAAS35J,EAAEy9C,iBAAiB,QAAQxxD,KAAK21H,SAAS5hH,EAAEy9C,iBAAiB,QAAQxxD,KAAK2tK,SAAS55J,EAAEy9C,iBAAiB,SAASxxD,KAAK4tK,UAAU75J,EAAEy9C,iBAAiB,iBAAiBxxD,KAAK6tK,kBAAkB95J,EAAEy9C,iBAAiB,eAAexxD,KAAK8tK,oBAAoB,CAACzuK,IAAI,uBAAuBG,MAAM,WAAW,IAAIuU,EAAE/T,KAAK+tK,QAAQtpE,QAAQ1wF,IAAIA,EAAEs9C,oBAAoB,QAAQrxD,KAAKsmH,SAASvyG,EAAEs9C,oBAAoB,UAAUrxD,KAAKqtK,WAAWt5J,EAAEs9C,oBAAoB,iBAAiBrxD,KAAKstK,kBAAkBv5J,EAAEs9C,oBAAoB,OAAOrxD,KAAKwtK,QAAQz5J,EAAEs9C,oBAAoB,QAAQrxD,KAAK0tK,SAAS35J,EAAEs9C,oBAAoB,QAAQrxD,KAAK21H,SAAS5hH,EAAEs9C,oBAAoB,QAAQrxD,KAAK2tK,SAAS55J,EAAEs9C,oBAAoB,SAASrxD,KAAK4tK,UAAU75J,EAAEs9C,oBAAoB,iBAAiBrxD,KAAK6tK,kBAAkB95J,EAAEs9C,oBAAoB,eAAerxD,KAAK8tK,oBAAoB,CAACzuK,IAAI,qBAAqBG,MAAM,SAASuU,GAAG/T,KAAKguK,aAAahuK,KAAK26I,MAAMszB,UAAU,CAAC5uK,IAAI,iBAAiBG,MAAM,WAAW,IAAIuU,EAAE/T,KAAK,IAAIA,KAAKkuK,cAAc,CAAC,IAAIt+J,EAAE5P,KAAK26I,MAAMwzB,eAAenuK,KAAKkuK,cAAc93E,OAAOg4E,aAAa,WAAW,IAAIx+J,EAAE+I,EAAE5E,EAAEg6J,QAAQtpE,UAAU,QAAQ70F,GAAG+I,EAAE5E,EAAE4mI,OAAO0zB,gBAAW,IAASz+J,GAAGA,EAAE3B,KAAK0K,EAAE5E,EAAEg6J,QAAQtpE,QAAQ6uB,gBAAgB1jH,MAAM,CAACvQ,IAAI,eAAeG,MAAM,SAASuU,GAAG,IAAInE,EAAE5P,KAAK+tK,QAAQtpE,QAAQ,OAAO70F,GAAG,iBAAiBmE,GAAGA,KAAK,MAAMnE,OAAE,EAAOA,EAAEq+J,UAAUr+J,EAAEq+J,OAAOl6J,KAAK,CAAC1U,IAAI,mBAAmBG,MAAM,WAAWQ,KAAKkuK,gBAAgBI,cAActuK,KAAKkuK,sBAAsBluK,KAAKkuK,iBAAiB,CAAC7uK,IAAI,SAASG,MAAM,WAAW,IAAIuU,EAAE/T,KAAK26I,MAAMzwH,UAAUyiJ,2CAA2Ct6J,EAAEypJ,cAAc,IAAI,KAAK,qCAAqC6Q,2CAA2Ct6J,EAAEypJ,cAAc,OAAO,KAAK,SAAS,aAAalsJ,KAAI,IAAK5P,KAAK26I,MAAMuM,UAAUvuI,EAAE3Y,KAAK26I,MAAM4zB,MAAMvuK,KAAK26I,MAAM4zB,MAAMvuK,KAAK26I,MAAM//H,IAAI0+F,EAAE,GAAG,OAAOt5G,KAAK26I,MAAM6zB,eAAel1D,EAAEk1D,aAAaxuK,KAAK26I,MAAM6zB,cAAc7B,2CAA2Ct6J,EAAEypJ,cAAc,QAAQ9H,SAAS,CAACya,SAASzuK,KAAK26I,MAAM8zB,SAASxkB,UAAU,sBAAsB/+C,OAAOlrG,KAAK26I,MAAMsP,WAAW/C,SAASt3I,EAAE+3G,YAAY3nH,KAAK26I,MAAMhzB,YAAY5vF,GAAG/3B,KAAK26I,MAAM5iH,GAAGw8F,KAAKv0H,KAAK26I,MAAMpmB,KAAKm6C,MAAM1uK,KAAK26I,MAAM+zB,MAAMliB,QAAQxsJ,KAAK26I,MAAM6R,QAAQrM,IAAIngJ,KAAK+tK,QAAQnzJ,IAAI5a,KAAK26I,MAAM//H,IAAIgqB,MAAM5kC,KAAK26I,MAAM/1G,MAAM2pI,MAAM51J,GAAG2gG,GAAGvlG,KAAK,CAAC1U,IAAI,mCAAmCG,MAAM,SAASmvK,iCAAiCtvK,IAAIuvK,MAAM5uK,KAAKX,KAAKwvK,KAAKD,UAAU1B,iBAAhmJ,CAAknJR,mCAAmCtX,WAAW9B,gBAAgB4Z,iBAAiB,iBAAY,GAAQ5Z,gBAAgB4Z,iBAAiB,oBAAe,GAAQA,iBAAiBnL,aAAa,CAAC0M,UAAS,EAAGvkJ,SAAS,KAAK+/H,UAAU,GAAG/C,UAAS,EAAGsnB,aAAa,GAAGz2I,GAAG,GAAGo2I,eAAe,IAAI55C,MAAK,EAAGm6C,OAAM,EAAGhB,QAAQ,aAAaL,UAAU,aAAaC,iBAAiB,aAAa33C,QAAQ,aAAarP,QAAQ,aAAa+nD,SAAS,aAAaV,QAAQ,aAAaH,OAAO,aAAaI,SAAS,aAAaE,gBAAgB,aAAaD,iBAAiB,aAAarhB,QAAQ,WAAW5nH,MAAM,GAAG2pI,MAAM,GAAGN,OAAO,GAAGf,iBAAiB9K,UAAU,CAACqM,SAAS5B,gDAAgDx6J,EAAEy8J,KAAK5kJ,SAAS2iJ,gDAAgDx6J,EAAEymB,QAAQmxH,UAAU4iB,gDAAgDx6J,EAAEyyB,OAAOoiH,SAAS2lB,gDAAgDx6J,EAAEy8J,KAAKN,aAAa3B,gDAAgDx6J,EAAEyyB,OAAO6iF,YAAYklD,gDAAgDx6J,EAAEyyB,OAAO/M,GAAG80I,gDAAgDx6J,EAAEyyB,OAAOqpI,eAAetB,gDAAgDx6J,EAAE08J,OAAOx6C,KAAKs4C,gDAAgDx6J,EAAEy8J,KAAKJ,MAAM7B,gDAAgDx6J,EAAEy8J,KAAKpB,QAAQb,gDAAgDx6J,EAAEq0J,KAAK2G,UAAUR,gDAAgDx6J,EAAEq0J,KAAK4G,iBAAiBT,gDAAgDx6J,EAAEq0J,KAAK/wC,QAAQk3C,gDAAgDx6J,EAAEq0J,KAAKpgD,QAAQumD,gDAAgDx6J,EAAEq0J,KAAK2H,SAASxB,gDAAgDx6J,EAAEq0J,KAAKmH,iBAAiBhB,gDAAgDx6J,EAAEq0J,KAAKiH,QAAQd,gDAAgDx6J,EAAEq0J,KAAK8G,OAAOX,gDAAgDx6J,EAAEq0J,KAAKkH,SAASf,gDAAgDx6J,EAAEq0J,KAAKoH,gBAAgBjB,gDAAgDx6J,EAAEq0J,KAAKla,QAAQqgB,gDAAgDx6J,EAAE28J,MAAM,CAAC,GAAG,OAAO,WAAW,SAASp0J,IAAIiyJ,gDAAgDx6J,EAAEyyB,OAAOF,MAAMioI,gDAAgDx6J,EAAE48J,SAASpC,gDAAgDx6J,EAAEyyB,QAAQypI,MAAM1B,gDAAgDx6J,EAAEyyB,OAAOmpI,OAAOpB,gDAAgDx6J,EAAE08J,QAAQ,IAAIG,SAAShC,iBAAiBiC,eAAeC,YAAY5C,oBAAoBD,QAAQ2C,SAASC,eAAe,oBAAoBpC,qBAAqBA,qBAAqBR,aAAQ,EAAO4C,iBAAiBA,eAAeE,SAASnC,iBAAiB,mBAAmB,0DAA0DiC,eAAeE,SAASH,SAAS,UAAU,2DAA2DE,YAAY,oBAAoBrC,qBAAqBA,qBAAqBqC,iBAAY,EAAOA,aAAaA,YAAY1zB,SAASztI,KAAKjO,KAAKysK,oBAAoB,EAApBA,CAAuB/wB,UAAU,SAAS3nI,EAAEnE,GAAGmE,EAAE4nI,QAAQ,SAAS5nI,GAAG,IAAIA,EAAEu7J,gBAAgB,CAAC,IAAI1/J,EAAEU,OAAO40H,OAAOnxH,GAAGnE,EAAEsa,WAAWta,EAAEsa,SAAS,IAAI5Z,OAAO6L,eAAevM,EAAE,SAAS,CAACymB,YAAW,EAAGyjB,IAAI,WAAW,OAAOlqC,EAAE7B,KAAKuC,OAAO6L,eAAevM,EAAE,KAAK,CAACymB,YAAW,EAAGyjB,IAAI,WAAW,OAAOlqC,EAAE9B,KAAKwC,OAAO6L,eAAevM,EAAE,UAAU,CAACymB,YAAW,IAAKzmB,EAAE0/J,gBAAgB,EAAE,OAAO1/J,O,cCEv2X8rI,EAAOC,QAAU,SAAsB4zB,EAAMC,EAAM9M,EAAS+M,GAC1D,IAAIC,EAAMhN,EAAUA,EAAQz0J,KAAKwhK,EAAgBF,EAAMC,QAAQ,EAE/D,QAAY,IAARE,EACF,QAASA,EAGX,GAAIH,IAASC,EACX,OAAO,EAGT,GAAoB,kBAATD,IAAsBA,GAAwB,kBAATC,IAAsBA,EACpE,OAAO,EAGT,IAAIG,EAAQr/J,OAAO+8B,KAAKkiI,GACpBK,EAAQt/J,OAAO+8B,KAAKmiI,GAExB,GAAIG,EAAM3hK,SAAW4hK,EAAM5hK,OACzB,OAAO,EAMT,IAHA,IAAI6hK,EAAkBv/J,OAAOgF,UAAU03I,eAAer9B,KAAK6/C,GAGlDM,EAAM,EAAGA,EAAMH,EAAM3hK,OAAQ8hK,IAAO,CAC3C,IAAIzwK,EAAMswK,EAAMG,GAEhB,IAAKD,EAAgBxwK,GACnB,OAAO,EAGT,IAAI0wK,EAASR,EAAKlwK,GACd2wK,EAASR,EAAKnwK,GAIlB,IAAY,KAFZqwK,EAAMhN,EAAUA,EAAQz0J,KAAKwhK,EAAgBM,EAAQC,EAAQ3wK,QAAO,SAEtC,IAARqwK,GAAkBK,IAAWC,EACjD,OAAO,EAIX,OAAO,I,6BC0jBMC,IAtmBf,SAAqBC,GACnB,SAASzE,EAAE5zJ,EAAGtF,EAAGwB,EAAGiE,EAAG3F,GACrB,IAAK,IAAgCD,EAAG2F,EAAiBw8D,EAAuE5kE,EAAmC41J,EAA1J/1J,EAAI,EAAG8C,EAAI,EAAGoB,EAAI,EAAGnE,EAAI,EAASG,EAAI,EAAGygK,EAAI,EAAM9nJ,EAAIksD,EAAIniE,EAAI,EAAGrE,EAAI,EAAG4K,EAAI,EAAGy3J,EAAI,EAAGxgK,EAAI,EAAGyoG,EAAItkG,EAAE/F,OAAQqiK,EAAIh4D,EAAI,EAAMvgG,EAAI,GAAIgL,EAAI,GAAI8wI,EAAI,GAAI0c,EAAI,GAAOviK,EAAIsqG,GAAI,CAI5K,GAHAtgG,EAAIhE,EAAE40G,WAAW56G,GACjBA,IAAMsiK,GAAK,IAAM/9J,EAAI/C,EAAImE,EAAIlE,IAAM,IAAM8C,IAAMyF,EAAI,KAAOzF,EAAI,GAAK,IAAK/C,EAAImE,EAAIlE,EAAI,EAAG6oG,IAAKg4D,KAExF,IAAM/9J,EAAI/C,EAAImE,EAAIlE,EAAG,CACvB,GAAIzB,IAAMsiK,IAAM,EAAI13J,IAAMb,EAAIA,EAAE0rD,QAAQ+0C,EAAG,KAAM,EAAIzgG,EAAE8qD,OAAO50D,QAAS,CACrE,OAAQ+J,GACN,KAAK,GACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,MAEF,QACED,GAAK/D,EAAEqxB,OAAOr3B,GAGlBgK,EAAI,GAGN,OAAQA,GACN,KAAK,IAKH,IAHA3F,GADA0F,EAAIA,EAAE8qD,QACA+lD,WAAW,GACjBp0C,EAAI,EAEC3kE,IAAM7B,EAAGA,EAAIsqG,GAAI,CACpB,OAAQtgG,EAAIhE,EAAE40G,WAAW56G,IACvB,KAAK,IACHwmE,IACA,MAEF,KAAK,IACHA,IACA,MAEF,KAAK,GACH,OAAQx8D,EAAIhE,EAAE40G,WAAW56G,EAAI,IAC3B,KAAK,GACL,KAAK,GACHsE,EAAG,CACD,IAAKgW,EAAIta,EAAI,EAAGsa,EAAIgoJ,IAAKhoJ,EACvB,OAAQtU,EAAE40G,WAAWtgG,IACnB,KAAK,GACH,GAAI,KAAOtQ,GAAK,KAAOhE,EAAE40G,WAAWtgG,EAAI,IAAMta,EAAI,IAAMsa,EAAG,CACzDta,EAAIsa,EAAI,EACR,MAAMhW,EAGR,MAEF,KAAK,GACH,GAAI,KAAO0F,EAAG,CACZhK,EAAIsa,EAAI,EACR,MAAMhW,GAMdtE,EAAIsa,GAKV,MAEF,KAAK,GACHtQ,IAEF,KAAK,GACHA,IAEF,KAAK,GACL,KAAK,GACH,KAAOhK,IAAMsiK,GAAKt8J,EAAE40G,WAAW56G,KAAOgK,KAK1C,GAAI,IAAMw8D,EAAG,MACbxmE,IAMF,OAHAwmE,EAAIxgE,EAAEspH,UAAUztH,EAAG7B,GACnB,IAAMqE,IAAMA,GAAK0F,EAAIA,EAAE0rD,QAAQ+sG,EAAI,IAAI3tG,QAAQ+lD,WAAW,IAElDv2G,GACN,KAAK,GAIH,OAHA,EAAIuG,IAAMb,EAAIA,EAAE0rD,QAAQ+0C,EAAG,KAC3BxgG,EAAID,EAAE6wG,WAAW,IAGf,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACHhwG,EAAIpG,EACJ,MAEF,QACEoG,EAAI63J,EAMR,GAFA5gK,GADA2kE,EAAIk3F,EAAEl5J,EAAGoG,EAAG47D,EAAGx8D,EAAG1F,EAAI,IAChBrE,OACN,EAAIyiK,IAAsBlL,EAAIoG,EAAE,EAAGp3F,EAAzB57D,EAAI+3J,EAAEF,EAAG14J,EAAGs4J,GAAmB79J,EAAGo+J,EAAGlyJ,EAAG7O,EAAGmI,EAAG1F,EAAG2F,GAAIF,EAAIa,EAAEmqD,KAAK,SAAK,IAAWyiG,GAAK,KAAO31J,GAAK2kE,EAAIgxF,EAAE3iG,QAAQ50D,UAAY+J,EAAI,EAAGw8D,EAAI,KAC5I,EAAI3kE,EAAG,OAAQmI,GACjB,KAAK,IACHD,EAAIA,EAAE0rD,QAAQotG,EAAIC,GAEpB,KAAK,IACL,KAAK,IACL,KAAK,GACHt8F,EAAIz8D,EAAI,IAAMy8D,EAAI,IAClB,MAEF,KAAK,IAEHA,GADAz8D,EAAIA,EAAE0rD,QAAQstG,EAAI,UACV,IAAMv8F,EAAI,IAClBA,EAAI,IAAM5gE,GAAK,IAAMA,GAAK63J,EAAE,IAAMj3F,EAAG,GAAK,YAAcA,EAAI,IAAMA,EAAI,IAAMA,EAC5E,MAEF,QACEA,EAAIz8D,EAAIy8D,EAAG,MAAQv8D,IAAW8K,GAAKyxD,EAAVA,EAAa,SACnCA,EAAI,GACX,MAEF,QACEA,EAAIk3F,EAAEl5J,EAAGm+J,EAAEn+J,EAAGuF,EAAGs4J,GAAI77F,EAAGv8D,EAAG3F,EAAI,GAGnCuhJ,GAAKr/E,EACLA,EAAI67F,EAAIz3J,EAAI0P,EAAIjW,EAAI,EACpB0F,EAAI,GACJC,EAAIhE,EAAE40G,aAAa56G,GACnB,MAEF,KAAK,IACL,KAAK,GAEH,GAAI,GAAK6B,GADTkI,GAAK,EAAIa,EAAIb,EAAE0rD,QAAQ+0C,EAAG,IAAMzgG,GAAG8qD,QACpB50D,QAAS,OAAQ,IAAMqa,IAAMjW,EAAI0F,EAAE6wG,WAAW,GAAI,KAAOv2G,GAAK,GAAKA,GAAK,IAAMA,KAAOxC,GAAKkI,EAAIA,EAAE0rD,QAAQ,IAAK,MAAMx1D,QAAS,EAAIyiK,QAAK,KAAYlL,EAAIoG,EAAE,EAAG7zJ,EAAGvF,EAAGsF,EAAG84J,EAAGlyJ,EAAGqE,EAAE9U,OAAQgK,EAAG3F,EAAG2F,KAAO,KAAOpI,GAAKkI,EAAIytJ,EAAE3iG,QAAQ50D,UAAY8J,EAAI,QAAa1F,EAAI0F,EAAE6wG,WAAW,GAAI5wG,EAAID,EAAE6wG,WAAW,GAAIv2G,GAC9S,KAAK,EACH,MAEF,KAAK,GACH,GAAI,MAAQ2F,GAAK,KAAOA,EAAG,CACzBu4J,GAAKx4J,EAAI/D,EAAEqxB,OAAOr3B,GAClB,MAGJ,QACE,KAAO+J,EAAE6wG,WAAW/4G,EAAI,KAAOkT,GAAKi2F,EAAEjhG,EAAG1F,EAAG2F,EAAGD,EAAE6wG,WAAW,KAEhEynD,EAAIz3J,EAAI0P,EAAIjW,EAAI,EAChB0F,EAAI,GACJC,EAAIhE,EAAE40G,aAAa56G,IAIzB,OAAQgK,GACN,KAAK,GACL,KAAK,GACH,KAAOzF,EAAIA,EAAI,EAAI,IAAM,EAAIF,GAAK,MAAQ4F,GAAK,EAAIF,EAAE9J,SAAW2K,EAAI,EAAGb,GAAK,MAC5E,EAAI24J,EAAIM,GAAKpF,EAAE,EAAG7zJ,EAAGvF,EAAGsF,EAAG84J,EAAGlyJ,EAAGqE,EAAE9U,OAAQgK,EAAG3F,EAAG2F,GACjDyG,EAAI,EACJkyJ,IACA,MAEF,KAAK,GACL,KAAK,IACH,GAAI,IAAMr+J,EAAI/C,EAAImE,EAAIlE,EAAG,CACvBiP,IACA,MAGJ,QAIE,OAHAA,IACA9O,EAAIoE,EAAEqxB,OAAOr3B,GAELgK,GACN,KAAK,EACL,KAAK,GACH,GAAI,IAAMxI,EAAIC,EAAI8C,EAAG,OAAQ5C,GAC3B,KAAK,GACL,KAAK,GACL,KAAK,EACL,KAAK,GACHC,EAAI,GACJ,MAEF,QACE,KAAOoI,IAAMpI,EAAI,KAErB,MAEF,KAAK,EACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACH,IAAMJ,EAAI+C,EAAI9C,IAAMmJ,EAAIy3J,EAAI,EAAGzgK,EAAI,KAAOA,GAC1C,MAEF,KAAK,IACH,GAAI,IAAMJ,EAAI+C,EAAI9C,EAAIwhK,GAAK,EAAI3oJ,EAAG,OAAQta,EAAIsa,GAC5C,KAAK,EACH,MAAQ3Y,GAAK,KAAOqE,EAAE40G,WAAW56G,EAAI,KAAOijK,EAAIthK,GAElD,KAAK,EACH,MAAQygK,IAAMa,EAAIb,GAEtB,MAEF,KAAK,GACH,IAAM5gK,EAAI+C,EAAI9C,IAAM6Y,EAAIta,GACxB,MAEF,KAAK,GACH,IAAMuE,EAAIoB,EAAInE,EAAIC,IAAMmJ,EAAI,EAAGhJ,GAAK,MACpC,MAEF,KAAK,GACL,KAAK,GACH,IAAM2C,IAAM/C,EAAIA,IAAMwI,EAAI,EAAI,IAAMxI,EAAIwI,EAAIxI,GAC5C,MAEF,KAAK,GACH,IAAMA,EAAI+C,EAAIoB,GAAKlE,IACnB,MAEF,KAAK,GACH,IAAMD,EAAI+C,EAAIoB,GAAKlE,IACnB,MAEF,KAAK,GACH,IAAMD,EAAI+C,EAAI9C,GAAKkE,IACnB,MAEF,KAAK,GACH,GAAI,IAAMnE,EAAI+C,EAAI9C,EAAG,CACnB,GAAI,IAAM4C,EAAG,OAAQ,EAAI1C,EAAI,EAAIygK,GAC/B,KAAK,IACH,MAEF,QACE/9J,EAAI,EAERsB,IAGF,MAEF,KAAK,GACH,IAAMpB,EAAIoB,EAAInE,EAAIC,EAAI6Y,EAAIksD,IAAMA,EAAI,GACpC,MAEF,KAAK,GACL,KAAK,GACH,KAAM,EAAIhlE,EAAIC,EAAIkE,GAAI,OAAQpB,GAC5B,KAAK,EACH,OAAQ,EAAIyF,EAAI,EAAIhE,EAAE40G,WAAW56G,EAAI,IACnC,KAAK,IACHuE,EAAI,GACJ,MAEF,KAAK,IACH1C,EAAI7B,EAAGuE,EAAI,GAGf,MAEF,KAAK,GACH,KAAOyF,GAAK,KAAOrI,GAAKE,EAAI,IAAM7B,IAAM,KAAOgG,EAAE40G,WAAW/4G,EAAI,KAAOkT,GAAK/O,EAAEspH,UAAUztH,EAAG7B,EAAI,IAAK4B,EAAI,GAAI2C,EAAI,IAIxH,IAAMA,IAAMwF,GAAKnI,GAGrBwgK,EAAIzgK,EACJA,EAAIqI,EACJhK,IAKF,GAAI,GAFJ6B,EAAIkT,EAAE9U,QAEK,CAET,GADA2K,EAAIpG,EACA,EAAIk+J,SAA2C,KAArClL,EAAIoG,EAAE,EAAG7oJ,EAAGnK,EAAGd,EAAG84J,EAAGlyJ,EAAG7O,EAAGoI,EAAG3F,EAAG2F,KAAoB,KAAO8K,EAAIyiJ,GAAGv3J,QAAS,OAAOsiK,EAAIxtJ,EAAI8wI,EAGzG,GAFA9wI,EAAInK,EAAEmqD,KAAK,KAAO,IAAMhgD,EAAI,IAExB,IAAMnP,EAAIq9J,EAAG,CAGf,OAFA,IAAMr9J,GAAK63J,EAAE1oJ,EAAG,KAAOkuJ,EAAI,GAEnBA,GACN,KAAK,IACHluJ,EAAIA,EAAE0gD,QAAQytG,EAAI,YAAcnuJ,EAChC,MAEF,KAAK,IACHA,EAAIA,EAAE0gD,QAAQkoG,EAAG,sBAAwB5oJ,EAAE0gD,QAAQkoG,EAAG,aAAe5oJ,EAAE0gD,QAAQkoG,EAAG,iBAAmB5oJ,EAGzGkuJ,EAAI,GAIR,OAAOV,EAAIxtJ,EAAI8wI,EAGjB,SAAS8c,EAAE74J,EAAGtF,EAAGwB,GACf,IAAIiE,EAAIzF,EAAEqwD,OAAOC,MAAMquG,GACvB3+J,EAAIyF,EACJ,IAAI3F,EAAI2F,EAAEhK,OACNwB,EAAIqI,EAAE7J,OAEV,OAAQwB,GACN,KAAK,EACL,KAAK,EACH,IAAI8C,EAAI,EAER,IAAKuF,EAAI,IAAMrI,EAAI,GAAKqI,EAAE,GAAK,IAAKvF,EAAID,IAAKC,EAC3CC,EAAED,GAAK6+J,EAAEt5J,EAAGtF,EAAED,GAAIyB,GAAG6uD,OAGvB,MAEF,QACE,IAAIlvD,EAAIpB,EAAI,EAEZ,IAAKC,EAAI,GAAID,EAAID,IAAKC,EACpB,IAAK,IAAI/C,EAAI,EAAGA,EAAIC,IAAKD,EACvBgD,EAAEmB,KAAOy9J,EAAEt5J,EAAEtI,GAAK,IAAKyI,EAAE1F,GAAIyB,GAAG6uD,OAMxC,OAAOrwD,EAGT,SAAS4+J,EAAEt5J,EAAGtF,EAAGwB,GACf,IAAIiE,EAAIzF,EAAEo2G,WAAW,GAGrB,OAFA,GAAK3wG,IAAMA,GAAKzF,EAAIA,EAAEqwD,QAAQ+lD,WAAW,IAEjC3wG,GACN,KAAK,GACH,OAAOzF,EAAEixD,QAAQowF,EAAG,KAAO/7I,EAAE+qD,QAE/B,KAAK,GACH,OAAO/qD,EAAE+qD,OAASrwD,EAAEixD,QAAQowF,EAAG,KAAO/7I,EAAE+qD,QAE1C,QACE,GAAI,EAAI,EAAI7uD,GAAK,EAAIxB,EAAElF,QAAQ,MAAO,OAAOkF,EAAEixD,QAAQowF,GAAI,KAAO/7I,EAAE8wG,WAAW,GAAK,GAAK,MAAQ9wG,EAAE+qD,QAGvG,OAAO/qD,EAAItF,EAGb,SAASwmG,EAAElhG,EAAGtF,EAAGwB,EAAGiE,GAClB,IAAI3F,EAAIwF,EAAI,IACRrI,EAAI,EAAI+C,EAAI,EAAIwB,EAAI,EAAIiE,EAE5B,GAAI,MAAQxI,EAAG,CACbqI,EAAIxF,EAAEhF,QAAQ,IAAK,GAAK,EACxB,IAAIiF,EAAID,EAAEgrH,UAAUxlH,EAAGxF,EAAErE,OAAS,GAAG40D,OAErC,OADAtwD,EAAID,EAAEgrH,UAAU,EAAGxlH,GAAG+qD,OAAStwD,EAAI,IAC5B,IAAMqB,GAAK,IAAMA,GAAK63J,EAAEl5J,EAAG,GAAK,WAAaA,EAAIA,EAAIA,EAG9D,GAAI,IAAMqB,GAAK,IAAMA,IAAM63J,EAAEn5J,EAAG,GAAI,OAAOA,EAE3C,OAAQ7C,GACN,KAAK,KACH,OAAO,KAAO6C,EAAEs2G,WAAW,IAAM,WAAat2G,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAEs2G,WAAW,GAAK,WAAat2G,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAEs2G,WAAW,GAAK,WAAat2G,EAAIA,EAAIA,EAExD,KAAK,KACH,GAAI,MAAQA,EAAEs2G,WAAW,GAAI,MAE/B,KAAK,IACL,KAAK,IACH,MAAO,WAAat2G,EAAIA,EAE1B,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAIA,EAExC,KAAK,KACL,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAI,OAASA,EAAIA,EAErD,KAAK,IACH,GAAI,KAAOA,EAAEs2G,WAAW,GAAI,MAAO,WAAat2G,EAAIA,EACpD,GAAI,EAAIA,EAAEhF,QAAQ,aAAc,IAAK,OAAOgF,EAAEmxD,QAAQ4tG,EAAI,gBAAkB/+J,EAC5E,MAEF,KAAK,IACH,GAAI,KAAOA,EAAEs2G,WAAW,GAAI,OAAQt2G,EAAEs2G,WAAW,IAC/C,KAAK,IACH,MAAO,eAAiBt2G,EAAEmxD,QAAQ,QAAS,IAAM,WAAanxD,EAAI,OAASA,EAAEmxD,QAAQ,OAAQ,YAAcnxD,EAE7G,KAAK,IACH,MAAO,WAAaA,EAAI,OAASA,EAAEmxD,QAAQ,SAAU,YAAcnxD,EAErE,KAAK,GACH,MAAO,WAAaA,EAAI,OAASA,EAAEmxD,QAAQ,QAAS,kBAAoBnxD,EAE5E,MAAO,WAAaA,EAAI,OAASA,EAAIA,EAEvC,KAAK,IACH,MAAO,WAAaA,EAAI,YAAcA,EAAIA,EAE5C,KAAK,KACH,GAAI,KAAOA,EAAEs2G,WAAW,GAAI,MAE5B,MAAO,oBADPr2G,EAAID,EAAEgrH,UAAUhrH,EAAEhF,QAAQ,IAAK,KAAKm2D,QAAQ,QAAS,IAAIA,QAAQ,gBAAiB,YAClD,WAAanxD,EAAI,gBAAkBC,EAAID,EAEzE,KAAK,KACH,OAAOg/J,EAAG12J,KAAKtI,GAAKA,EAAEmxD,QAAQ8tG,EAAI,aAAej/J,EAAEmxD,QAAQ8tG,EAAI,UAAYj/J,EAAIA,EAEjF,KAAK,IAIH,OAFAE,GADAD,EAAID,EAAEgrH,UAAU,IAAIz6D,QACdv1D,QAAQ,KAAO,EAEbiF,EAAEq2G,WAAW,GAAKr2G,EAAEq2G,WAAWp2G,IACrC,KAAK,IACHD,EAAID,EAAEmxD,QAAQ8sG,EAAG,MACjB,MAEF,KAAK,IACHh+J,EAAID,EAAEmxD,QAAQ8sG,EAAG,SACjB,MAEF,KAAK,IACHh+J,EAAID,EAAEmxD,QAAQ8sG,EAAG,MACjB,MAEF,QACE,OAAOj+J,EAGX,MAAO,WAAaA,EAAI,OAASC,EAAID,EAEvC,KAAK,KACH,IAAK,IAAMA,EAAEhF,QAAQ,SAAU,GAAI,MAErC,KAAK,IAIH,OAHAkF,GAAKF,EAAIwF,GAAG7J,OAAS,GAGbwB,GAFR8C,GAAK,KAAOD,EAAEs2G,WAAWp2G,GAAKF,EAAEgrH,UAAU,EAAG9qH,GAAKF,GAAGgrH,UAAUxlH,EAAExK,QAAQ,IAAK,GAAK,GAAGu1D,QAExE+lD,WAAW,IAAwB,EAAlBr2G,EAAEq2G,WAAW,KAC1C,KAAK,IACH,GAAI,IAAMr2G,EAAEq2G,WAAW,GAAI,MAE7B,KAAK,IACHt2G,EAAIA,EAAEmxD,QAAQlxD,EAAG,WAAaA,GAAK,IAAMD,EACzC,MAEF,KAAK,IACL,KAAK,IACHA,EAAIA,EAAEmxD,QAAQlxD,EAAG,YAAc,IAAM9C,EAAI,UAAY,IAAM,OAAS,IAAM6C,EAAEmxD,QAAQlxD,EAAG,WAAaA,GAAK,IAAMD,EAAEmxD,QAAQlxD,EAAG,OAASA,EAAI,OAAS,IAAMD,EAG5J,OAAOA,EAAI,IAEb,KAAK,IACH,GAAI,KAAOA,EAAEs2G,WAAW,GAAI,OAAQt2G,EAAEs2G,WAAW,IAC/C,KAAK,IACH,OAAOr2G,EAAID,EAAEmxD,QAAQ,SAAU,IAAK,WAAanxD,EAAI,eAAiBC,EAAI,YAAcA,EAAID,EAE9F,KAAK,IACH,MAAO,WAAaA,EAAI,iBAAmBA,EAAEmxD,QAAQ+tG,EAAI,IAAMl/J,EAEjE,QACE,MAAO,WAAaA,EAAI,qBAAuBA,EAAEmxD,QAAQ,gBAAiB,IAAIA,QAAQ+tG,EAAI,IAAMl/J,EAEpG,MAEF,KAAK,IACL,KAAK,IACH,GAAI,KAAOA,EAAEs2G,WAAW,IAAM,MAAQt2G,EAAEs2G,WAAW,GAAI,MAEzD,KAAK,IACL,KAAK,IACH,IAAI,IAAO6oD,EAAG72J,KAAK9C,GAAI,OAAO,OAASvF,EAAIuF,EAAEwlH,UAAUxlH,EAAExK,QAAQ,KAAO,IAAIs7G,WAAW,GAAK5P,EAAElhG,EAAE2rD,QAAQ,UAAW,kBAAmBjxD,EAAGwB,EAAGiE,GAAGwrD,QAAQ,kBAAmB,YAAcnxD,EAAEmxD,QAAQlxD,EAAG,WAAaA,GAAKD,EAAEmxD,QAAQlxD,EAAG,QAAUA,EAAEkxD,QAAQ,QAAS,KAAOnxD,EACxQ,MAEF,KAAK,IACH,GAAIA,EAAI,WAAaA,GAAK,MAAQA,EAAEs2G,WAAW,GAAK,OAASt2G,EAAI,IAAMA,EAAG,MAAQ0B,EAAIiE,GAAK,MAAQ3F,EAAEs2G,WAAW,KAAO,EAAIt2G,EAAEhF,QAAQ,YAAa,IAAK,OAAOgF,EAAEgrH,UAAU,EAAGhrH,EAAEhF,QAAQ,IAAK,IAAM,GAAGm2D,QAAQiuG,EAAI,gBAAkBp/J,EAGvO,OAAOA,EAGT,SAASm5J,EAAE3zJ,EAAGtF,GACZ,IAAIwB,EAAI8D,EAAExK,QAAQ,IAAMkF,EAAI,IAAM,KAC9ByF,EAAIH,EAAEwlH,UAAU,EAAG,IAAM9qH,EAAIwB,EAAI,IAErC,OADAA,EAAI8D,EAAEwlH,UAAUtpH,EAAI,EAAG8D,EAAE7J,OAAS,GAC3B0jK,EAAE,IAAMn/J,EAAIyF,EAAIA,EAAEwrD,QAAQmuG,EAAI,MAAO59J,EAAGxB,GAGjD,SAASs+J,EAAGh5J,EAAGtF,GACb,IAAIwB,EAAIglG,EAAExmG,EAAGA,EAAEo2G,WAAW,GAAIp2G,EAAEo2G,WAAW,GAAIp2G,EAAEo2G,WAAW,IAC5D,OAAO50G,IAAMxB,EAAI,IAAMwB,EAAEyvD,QAAQouG,EAAI,YAAYv0C,UAAU,GAAK,IAAM9qH,EAAI,IAG5E,SAASo5J,EAAE9zJ,EAAGtF,EAAGwB,EAAGiE,EAAG3F,EAAG7C,EAAG8C,EAAGoB,EAAGnE,EAAG6C,GACpC,IAAK,IAAkBuB,EAAdoE,EAAI,EAAGrI,EAAI6C,EAAMwF,EAAI04J,IAAK14J,EACjC,OAAQpE,EAAIk+J,EAAE95J,GAAG9J,KAAKoqG,EAAGxgG,EAAGnI,EAAGqE,EAAGiE,EAAG3F,EAAG7C,EAAG8C,EAAGoB,EAAGnE,EAAG6C,IAClD,UAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,KACH,MAEF,QACE1C,EAAIiE,EAIV,GAAIjE,IAAM6C,EAAG,OAAO7C,EAmBtB,SAASoiK,EAAEj6J,GAGT,YADA,KADAA,EAAIA,EAAEiyD,UACW4nG,EAAI,KAAM75J,EAAI,oBAAsBA,EAAIlE,EAAI,GAAKA,EAAI,EAAG+9J,EAAI75J,GAAKlE,EAAI,GAC/Em+J,EAGT,SAASz5D,EAAExgG,EAAGtF,GACZ,IAAIwB,EAAI8D,EAKR,GAJA,GAAK9D,EAAE40G,WAAW,KAAO50G,EAAIA,EAAE6uD,QAE/B7uD,EAAI,CADAA,GAGA,EAAI08J,EAAG,CACT,IAAIz4J,EAAI2zJ,GAAG,EAAGp5J,EAAGwB,EAAGA,EAAG48J,EAAGlyJ,EAAG,EAAG,EAAG,EAAG,QACtC,IAAWzG,GAAK,kBAAoBA,IAAMzF,EAAIyF,GAGhD,IAAI3F,EAAIo5J,EAAE+E,EAAGz8J,EAAGxB,EAAG,EAAG,GAKtB,OAJA,EAAIk+J,SAAmD,KAA7Cz4J,EAAI2zJ,GAAG,EAAGt5J,EAAG0B,EAAGA,EAAG48J,EAAGlyJ,EAAGpM,EAAErE,OAAQ,EAAG,EAAG,MAAqBqE,EAAI2F,IACxE,GACJg5J,EAAI,EACJvyJ,EAAIkyJ,EAAI,EACDt+J,EAGT,IAAIk+J,EAAK,QACLh4D,EAAI,YACJ+4D,EAAK,OACLD,EAAK,UACLI,EAAK,sBACLP,EAAK,SACLtd,EAAI,oBACJkd,EAAK,qBACLpF,EAAI,aACJuF,EAAK,gBACLX,EAAI,qBACJM,EAAK,kBACLgB,EAAK,eACLL,EAAK,eACLI,EAAK,8BACLH,EAAK,mCACLJ,EAAK,sBACL3yJ,EAAI,EACJkyJ,EAAI,EACJK,EAAI,EACJr9J,EAAI,EACJ68J,EAAI,GACJqB,EAAI,GACJpB,EAAI,EACJiB,EAAI,KACJX,EAAI,EAKR,OAHA14D,EAAE05D,IApEF,SAASz5D,EAAEzgG,GACT,OAAQA,GACN,UAAK,EACL,KAAK,KACH44J,EAAIoB,EAAE7jK,OAAS,EACf,MAEF,QACE,GAAI,oBAAsB6J,EAAGg6J,EAAEpB,KAAO54J,OAAO,GAAI,kBAAoBA,EAAG,IAAK,IAAItF,EAAI,EAAGwB,EAAI8D,EAAE7J,OAAQuE,EAAIwB,IAAKxB,EAC7G+lG,EAAEzgG,EAAEtF,SACCw+J,EAAU,IAAJl5J,EAGjB,OAAOygG,GAwDTD,EAAEllG,IAAM2+J,OACR,IAAW5B,GAAK4B,EAAE5B,GACX73D,I,6BCljBM25D,IAjDI,CACjBC,wBAAyB,EACzBC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbC,QAAS,EACTC,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZl2I,QAAS,EACTnrB,MAAO,EACPshK,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACR/gI,KAAM,EACNghI,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,I,6BC3Cbh5B,EAAOC,QAAUC,EAAQ,K,6BCD3BtrI,OAAO6L,eAAew/H,EAAS,aAAc,CAAEn8I,OAAO,IA0BtDm8I,EAAQ4wB,QAxBR,SAAiBgD,EAAMC,GACrB,GAAIl/J,OAAO+vI,GAAGkvB,EAAMC,GAClB,OAAO,EAGT,GAAoB,kBAATD,GAA8B,OAATA,GAAiC,kBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,IAAIG,EAAQr/J,OAAO+8B,KAAKkiI,GAExB,GAAII,EAAM3hK,SAAWsC,OAAO+8B,KAAKmiI,GAAMxhK,OACrC,OAAO,EAGT,IAAK,IAAIF,EAAI,EAAGA,EAAI6hK,EAAM3hK,OAAQF,IAChC,IAAKwC,OAAOgF,UAAU03I,eAAe/+I,KAAKuhK,EAAMG,EAAM7hK,MAAQwC,OAAO+vI,GAAGkvB,EAAKI,EAAM7hK,IAAK0hK,EAAKG,EAAM7hK,KACjG,OAAO,EAIX,OAAO,I,gBCxBT,IAAI6mK,EAAM,SAANA,IAAiB,SAAS38J,EAAE3F,GAAwB,OAArBE,EAAEk8I,YAAYp8I,EAAEuiK,KAAYviK,EAAE,SAASkiE,EAAEliE,GAAG,IAAI,IAAIwF,EAAE,EAAEA,EAAEtF,EAAE2X,SAASlc,OAAO6J,IAAItF,EAAE2X,SAASrS,GAAG+sB,MAAMuoD,QAAQt1E,IAAIxF,EAAE,QAAQ,OAAOtE,EAAEsE,EAAE,IAAItE,EAAE,EAAEwE,EAAEiI,SAASshJ,cAAc,OAAOvpJ,EAAEqyB,MAAMiwI,QAAQ,uEAAuEtiK,EAAEi/C,iBAAiB,SAAQ,SAASn/C,GAAGA,EAAE2+E,iBAAiBzc,IAAIxmE,EAAEwE,EAAE2X,SAASlc,WAAS,GAAI,IAAI+J,GAAGy6G,aAAaC,MAAML,MAAMr+G,EAAEgE,EAAE1F,EAAE,EAAEsG,EAAEX,EAAE,IAAI28J,EAAMG,MAAM,MAAM,OAAO,SAASh9J,EAAEE,EAAE,IAAI28J,EAAMG,MAAM,KAAK,OAAO,SACjf,GAAG/0K,KAAKyyH,aAAazyH,KAAKyyH,YAAYx6D,OAAO,IAAIpoD,EAAEoI,EAAE,IAAI28J,EAAMG,MAAM,KAAK,OAAO,SAAc,OAALvgG,EAAE,GAAS,CAACj0E,SAAS,GAAGs0K,IAAIriK,EAAEwiK,SAAS/8J,EAAEg9J,UAAUzgG,EAAE0gG,MAAM,WAAWl9J,GAAGy6G,aAAaC,MAAML,OAAOx7E,IAAI,WAAWvkC,IAAI,IAAIE,GAAGigH,aAAaC,MAAML,MAAwB,GAAlBt6G,EAAE6J,OAAOpP,EAAEwF,EAAE,KAAQxF,EAAEwB,EAAE,MAAM4E,EAAEgJ,OAAO,IAAItP,GAAGE,EAAEwB,GAAG,KAAKA,EAAExB,EAAEF,EAAE,EAAEzC,GAAG,CAAC,IAAIiI,EAAE26G,YAAYx6D,OAAOpoD,EAAE+R,OAAO9J,EAAEq9J,eAAe,QAAQr9J,EAAEs9J,gBAAgB,SAAS,OAAO5iK,GAAGoP,OAAO,WAAW5J,EAAE/X,KAAK42C,OAAOy3C,WAAW97E,EAAEo7C,QAAQ4mB,IAC1cogG,EAAMG,MAAM,SAAS98J,EAAEu8D,EAAExmE,GAAG,IAAIwE,EAAEgH,IAASxB,EAAE,EAAEhE,EAAE3F,KAAKgG,MAAM/B,EAAE0B,EAAEqiF,OAAOwvD,kBAAkB,GAAGjtI,EAAE,GAAGtG,EAAEyF,EAAE,GAAGzF,EAAEzC,EAAE,EAAEyC,EAAEgW,EAAE,EAAEhW,EAAEwF,EAAE,EAAExF,EAAE7C,EAAE,GAAG6C,EAAE9C,EAAE,GAAG8C,EAAEyQ,EAAE,GAAGzQ,EAAED,EAAEoI,SAASshJ,cAAc,UAAU1pJ,EAAE2I,MAAMpC,EAAEvG,EAAE4I,OAAOlD,EAAE1F,EAAEwyB,MAAMiwI,QAAQ,yBAAyB,IAAIviK,EAAEF,EAAE8I,WAAW,MAAuN,OAAjN5I,EAAE8iK,KAAK,QAAQ,EAAE/iK,EAAE,gCAAgCC,EAAE+iK,aAAa,MAAM/iK,EAAEgjK,UAAUvnK,EAAEuE,EAAEijK,SAAS,EAAE,EAAE58J,EAAEb,GAAGxF,EAAEgjK,UAAU/gG,EAAEjiE,EAAEkjK,SAASx9J,EAAEpI,EAAEyY,GAAG/V,EAAEijK,SAAS19J,EAAErI,EAAED,EAAEuT,GAAGxQ,EAAEgjK,UAAUvnK,EAAEuE,EAAEmjK,YAAY,GAAGnjK,EAAEijK,SAAS19J,EAAErI,EAAED,EAAEuT,GAAS,CAAC8xJ,IAAIxiK,EAAEuP,OAAO,SAAS7J,EACzfpE,GAAGnB,EAAEnE,KAAKgB,IAAImD,EAAEuF,GAAGC,EAAE3J,KAAKiB,IAAI0I,EAAED,GAAGxF,EAAEgjK,UAAUvnK,EAAEuE,EAAEmjK,YAAY,EAAEnjK,EAAEijK,SAAS,EAAE,EAAE58J,EAAEnJ,GAAG8C,EAAEgjK,UAAU/gG,EAAEjiE,EAAEkjK,SAASzhK,EAAE+D,GAAG,IAAIE,EAAE,KAAKjE,EAAExB,GAAG,IAAIwB,EAAEgE,GAAG,IAAInI,EAAEyY,GAAG/V,EAAE+I,UAAUjJ,EAAEyF,EAAExF,EAAE7C,EAAED,EAAE8C,EAAEyQ,EAAEjL,EAAErI,EAAED,EAAE8C,EAAEyQ,GAAGxQ,EAAEijK,SAAS19J,EAAEtI,EAAE8C,EAAE7C,EAAE6C,EAAEyQ,GAAGxQ,EAAEgjK,UAAUvnK,EAAEuE,EAAEmjK,YAAY,GAAGnjK,EAAEijK,SAAS19J,EAAEtI,EAAE8C,EAAE7C,EAAE6C,EAAE0B,GAAG,EAAE+D,EAAEpE,GAAGoP,OAAkC44H,EAAOC,QAAQg5B,G,6BCFjUrkK,OAAO6L,eAAew/H,EAAS,aAAc,CAC3Cn8I,OAAO,IAGT,IAAIw0J,EAAW1jJ,OAAOm9B,QAAU,SAAU9/B,GAAU,IAAK,IAAIG,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAAK,CAAE,IAAIoP,EAAShd,UAAU4N,GAAI,IAAK,IAAIzO,KAAO6d,EAAc5M,OAAOgF,UAAU03I,eAAe/+I,KAAKiP,EAAQ7d,KAAQsO,EAAOtO,GAAO6d,EAAO7d,IAAY,OAAOsO,GAInP+nK,EAAWC,EAFD/5B,EAAQ,KAMlBg6B,EAAsBD,EAFD/5B,EAAQ,KAM7Bi6B,EAAcF,EAFD/5B,EAAQ,KAIrBk6B,EAASl6B,EAAQ,GAEjBm6B,EAAUJ,EAAuBG,GAIjCE,EAAeL,EAFD/5B,EAAQ,KAMtBq6B,EAAkBN,EAFD/5B,EAAQ,KAI7B,SAAS+5B,EAAuBr1B,GAAO,OAAOA,GAAOA,EAAIgsB,WAAahsB,EAAM,CAAEisB,QAASjsB,GAKvF,IAAI8hB,EAAY,CACd8T,QAASL,EAAYtJ,QAAQznI,OAC7BqxI,QAASN,EAAYtJ,QAAQznI,OAC7BoyD,MAAO2+E,EAAYtJ,QAAQyC,MAAM,CAAC,IAAK,IAAK,IAAK,MACjD/lJ,KAAM4sJ,EAAYtJ,QAAQwC,OAC1BvvK,MAAOq2K,EAAYtJ,QAAQznI,OAAOokI,YAUhCkN,EAAS,SAAgBpjB,GAC3B,IAAIkjB,EAAUljB,EAAKkjB,QACfC,EAAUnjB,EAAKmjB,QACfj/E,EAAQ87D,EAAK97D,MACbjuE,EAAO+pI,EAAK/pI,KACZzpB,EAAQwzJ,EAAKxzJ,MACbm7I,EAxBN,SAAkC2F,EAAKjzG,GAAQ,IAAI1/B,EAAS,GAAI,IAAK,IAAIG,KAAKwyI,EAAWjzG,EAAKhgC,QAAQS,IAAM,GAAkBwC,OAAOgF,UAAU03I,eAAe/+I,KAAKqyI,EAAKxyI,KAAcH,EAAOG,GAAKwyI,EAAIxyI,IAAM,OAAOH,EAwBrM6pJ,CAAyBxE,EAAM,CAAC,UAAW,UAAW,QAAS,OAAQ,UAG/EqjB,EAAS,IAAIX,EAASnJ,SAAS,EAAGqJ,EAAoBrJ,QAAQr1E,IAClEm/E,EAAOC,QAAQ92K,GACf62K,EAAOE,OACP,IAAIC,EAAQH,EAAOI,QACfC,EAAWztJ,EAAOutJ,EAAMxoK,OAC5B,OAAO+nK,EAAQxJ,QAAQzQ,cACrBma,EAAgB1J,QAChBvY,EAAS,GAAIrZ,EAAO,CAAE1xH,KAAMA,IAC5ButJ,EAAMp1I,KAAI,SAAUu1I,EAAKC,GACvB,OAAOD,EAAIv1I,KAAI,SAAUy1I,EAAMC,GAC7B,IAAI7/G,EAAO4/G,EAAOV,EAAUD,EACxBa,EAAa3oK,KAAKgG,MAAM0iK,EAAYJ,GACpCM,EAAa5oK,KAAKgG,MAAMwiK,EAAWF,GACnCO,EAAc7oK,KAAKgG,OAAO0iK,EAAY,GAAKJ,GAAYK,EACvDG,EAAe9oK,KAAKgG,OAAOwiK,EAAW,GAAKF,GAAYM,EACvDn/J,EAAI,WAAao/J,EAAc,QAAUA,EAAc,IAAMC,EAAe,QAAUA,EAAe,KACzG,OAAOnB,EAAQxJ,QAAQzQ,cAAcka,EAAazJ,QAEhD,CAAEltK,IAAK,aAAeu3K,EAAW,IAAME,EAErCj/J,EAAGA,EACLo/C,KAAMA,EACN8/G,WAAYA,EACZC,WAAYA,YAOtBZ,EAAOhU,UAAYA,EACnBgU,EAAOrU,aA/CY,CACjBmU,QAAS,UACTC,QAAS,UACTj/E,MAAO,IACPjuE,KAAM,KA6CR0yH,EAAQ4wB,SAAU,EAAIuJ,EAAOnf,MAAMyf,I,+DC9FnC,ICAIe,EDAAC,EAAkB,GEAlBC,EAAM,iEDCV,SAAWF,GACPA,EAAwB,WAAiB,aACzCA,EAAwB,YAAkB,cAC1CA,EAAwB,yBAA+B,2BAH3D,CAIGA,IAA6BA,EAA2B,KELpD,ICAHG,EDAO/mK,EAAS,SAAU+vI,GAAO,OAAOhwI,OAAOC,OAAO+vI,IECtDi3B,EACA,SAA4BC,EAAYz7G,GACpC/7D,KAAKw3K,WAAaA,EAClBx3K,KAAK+7D,UAAYA,EACjBxrD,EAAOvQ,OCJXy3K,EAAmB,WACnB,SAASA,EAAgB/nK,EAAGC,EAAGoL,EAAOC,GASlC,OARAhb,KAAK0P,EAAIA,EACT1P,KAAK2P,EAAIA,EACT3P,KAAK+a,MAAQA,EACb/a,KAAKgb,OAASA,EACdhb,KAAK+zB,IAAM/zB,KAAK2P,EAChB3P,KAAK6zB,KAAO7zB,KAAK0P,EACjB1P,KAAKg0B,OAASh0B,KAAK+zB,IAAM/zB,KAAKgb,OAC9Bhb,KAAK8zB,MAAQ9zB,KAAK6zB,KAAO7zB,KAAK+a,MACvBxK,EAAOvQ,MASlB,OAPAy3K,EAAgBniK,UAAUyjB,OAAS,WAC/B,IAAI2+I,EAAK13K,KACT,MAAO,CAAE0P,EADUgoK,EAAGhoK,EACPC,EADc+nK,EAAG/nK,EACXokB,IADoB2jJ,EAAG3jJ,IACbD,MAD0B4jJ,EAAG5jJ,MACfE,OAD+B0jJ,EAAG1jJ,OAClBH,KADiC6jJ,EAAG7jJ,KACxB9Y,MADsC28J,EAAG38J,MAC3BC,OAD2C08J,EAAG18J,SAGzIy8J,EAAgBE,SAAW,SAAUC,GACjC,OAAO,IAAIH,EAAgBG,EAAUloK,EAAGkoK,EAAUjoK,EAAGioK,EAAU78J,MAAO68J,EAAU58J,SAE7Ey8J,EAnBY,GCDnBI,EAAQ,SAAUlqK,GAAU,OAAOA,aAAkBmqK,YAAc,YAAanqK,GAChFoqK,EAAW,SAAUpqK,GACrB,GAAIkqK,EAAMlqK,GAAS,CACf,IAAI+pK,EAAK/pK,EAAOqqK,UAAWj9J,EAAQ28J,EAAG38J,MAAOC,EAAS08J,EAAG18J,OACzD,OAAQD,IAAUC,EAEtB,IAAIi9J,EAAKtqK,EAAQuqK,EAAcD,EAAGC,YAAaC,EAAeF,EAAGE,aACjE,QAASD,GAAeC,GAAgBxqK,EAAOyqK,iBAAiBpqK,SAEhEqqK,EAAY,SAAU/3B,GACtB,IAAIo3B,EAAIO,EACR,GAAI33B,aAAeg4B,QACf,OAAO,EAEX,IAAIjoI,EAAoF,QAA3E4nI,EAAoB,QAAdP,EAAKp3B,SAAwB,IAAPo3B,OAAgB,EAASA,EAAGa,qBAAkC,IAAPN,OAAgB,EAASA,EAAGO,YAC5H,SAAUnoI,GAASiwG,aAAejwG,EAAMioI,UCfjC/wD,EAA2B,qBAAXnxB,OAAyBA,OAAS,GCMzD77D,EAAQ,IAAIsf,QACZ4+H,EAAe,cACfC,EAAiB,eACjBC,EAAM,gBAAiBh+J,KAAK4sG,EAAOoxC,WAAapxC,EAAOoxC,UAAUC,WACjEggB,EAAiB,SAAUC,GAAS,OAAO9zI,WAAW8zI,GAAS,MAC/D5vJ,EAAO,SAAUuuJ,EAAYz7G,EAAW+8G,GAIxC,YAHmB,IAAftB,IAAyBA,EAAa,QACxB,IAAdz7G,IAAwBA,EAAY,QACpB,IAAhB+8G,IAA0BA,GAAc,GACrC,IAAIvB,GAAoBuB,EAAc/8G,EAAYy7G,IAAe,GAAIsB,EAActB,EAAaz7G,IAAc,IAErHg9G,EAAYxoK,EAAO,CACnByoK,0BAA2B/vJ,IAC3BgwJ,cAAehwJ,IACfiwJ,eAAgBjwJ,IAChBkwJ,YAAa,IAAI1B,EAAgB,EAAG,EAAG,EAAG,KAE1C2B,EAAoB,SAAUzrK,EAAQ0rK,GAEtC,QAD2B,IAAvBA,IAAiCA,GAAqB,GACtD9+I,EAAMg0B,IAAI5gD,KAAY0rK,EACtB,OAAO9+I,EAAMuf,IAAInsC,GAErB,GAAIoqK,EAASpqK,GAET,OADA4sB,EAAMpnB,IAAIxF,EAAQorK,GACXA,EAEX,IAAIngE,EAAKqlC,iBAAiBtwI,GACtB2rK,EAAMzB,EAAMlqK,IAAWA,EAAO4rK,iBAAmB5rK,EAAOqqK,UACxDwB,GAAiBb,GAAuB,eAAjB//D,EAAG6gE,UAC1BX,EAAcJ,EAAe/9J,KAAKi+F,EAAG8gE,aAAe,IACpDC,GAAuBL,GAAOb,EAAa99J,KAAKi+F,EAAGwlC,WAAa,IAChEw7B,GAAyBN,GAAOb,EAAa99J,KAAKi+F,EAAGulC,WAAa,IAClE07B,EAAaP,EAAM,EAAIV,EAAehgE,EAAGihE,YACzCC,EAAeR,EAAM,EAAIV,EAAehgE,EAAGkhE,cAC3CC,EAAgBT,EAAM,EAAIV,EAAehgE,EAAGmhE,eAC5CC,EAAcV,EAAM,EAAIV,EAAehgE,EAAGohE,aAC1CC,EAAYX,EAAM,EAAIV,EAAehgE,EAAGshE,gBACxCC,EAAcb,EAAM,EAAIV,EAAehgE,EAAGwhE,kBAC1CC,EAAef,EAAM,EAAIV,EAAehgE,EAAG0hE,mBAE3CC,EAAoBP,EAAcF,EAClCU,EAAkBX,EAAaE,EAC/BU,GAHanB,EAAM,EAAIV,EAAehgE,EAAG8hE,kBAGLP,EACpCQ,EAAqBV,EAAYI,EACjCO,EAAgChB,EAA4BjsK,EAAOwqK,aAAewC,EAAqBhtK,EAAOo9I,aAAtD,EACxD8vB,EAA8BlB,EAA0BhsK,EAAOuqK,YAAcuC,EAAuB9sK,EAAOm9I,YAAvD,EACpDgwB,EAAiBtB,EAAgBe,EAAoBE,EAAuB,EAC5EM,EAAkBvB,EAAgBgB,EAAkBG,EAAqB,EACzEK,EAAe1B,EAAMA,EAAIv+J,MAAQ69J,EAAehgE,EAAG79F,OAAS+/J,EAAiBD,EAC7EI,EAAgB3B,EAAMA,EAAIt+J,OAAS49J,EAAehgE,EAAG59F,QAAU+/J,EAAkBH,EACjFM,EAAiBF,EAAeT,EAAoBM,EAA6BJ,EACjFU,EAAkBF,EAAgBT,EAAkBI,EAA+BD,EACnFS,EAAQ7qK,EAAO,CACfyoK,0BAA2B/vJ,EAAK7a,KAAKgG,MAAM4mK,EAAep1B,kBAAmBx3I,KAAKgG,MAAM6mK,EAAgBr1B,kBAAmBkzB,GAC3HG,cAAehwJ,EAAKiyJ,EAAgBC,EAAiBrC,GACrDI,eAAgBjwJ,EAAK+xJ,EAAcC,EAAenC,GAClDK,YAAa,IAAI1B,EAAgBuC,EAAaH,EAAYmB,EAAcC,KAG5E,OADA1gJ,EAAMpnB,IAAIxF,EAAQytK,GACXA,GAEPC,EAAmB,SAAU1tK,EAAQ2tK,EAAajC,GAClD,IAAI3B,EAAK0B,EAAkBzrK,EAAQ0rK,GAAqBJ,EAAgBvB,EAAGuB,cAAeC,EAAiBxB,EAAGwB,eAAgBF,EAA4BtB,EAAGsB,0BAC7J,OAAQsC,GACJ,KAAKnE,EAAyBoE,yBAC1B,OAAOvC,EACX,KAAK7B,EAAyBqE,WAC1B,OAAOvC,EACX,QACI,OAAOC,ICzEfuC,EACA,SAA6B9tK,GACzB,IAAIytK,EAAQhC,EAAkBzrK,GAC9B3N,KAAK2N,OAASA,EACd3N,KAAKm5K,YAAciC,EAAMjC,YACzBn5K,KAAKi5K,cAAgB1oK,EAAO,CAAC6qK,EAAMnC,gBACnCj5K,KAAKk5K,eAAiB3oK,EAAO,CAAC6qK,EAAMlC,iBACpCl5K,KAAKg5K,0BAA4BzoK,EAAO,CAAC6qK,EAAMpC,6BCRnD0C,EAAwB,SAAUvgD,GAClC,GAAI48C,EAAS58C,GACT,OAAO5hH,IAIX,IAFA,IAAI0G,EAAQ,EACR+V,EAASmlG,EAAKwgD,WACX3lJ,GACH/V,GAAS,EACT+V,EAASA,EAAO2lJ,WAEpB,OAAO17J,GCPP27J,EAA8B,WAC9B,IAAIC,EAAkBtiK,IAClB4vG,EAAY,GAChBiuD,EAAgB/wF,SAAQ,SAAyBy1F,GAC7C,GAAgC,IAA5BA,EAAGC,cAAc/tK,OAArB,CAGA,IAAIq7I,EAAU,GACdyyB,EAAGC,cAAc11F,SAAQ,SAAuB21F,GAC5C,IAAIpiH,EAAQ,IAAI6hH,EAAoBO,EAAGruK,QACnCsuK,EAAcP,EAAsBM,EAAGruK,QAC3C07I,EAAQ/7I,KAAKssD,GACboiH,EAAGE,iBAAmBb,EAAiBW,EAAGruK,OAAQquK,EAAGV,aACjDW,EAAcJ,IACdA,EAAkBI,MAG1B9yD,EAAU77G,MAAK,WACXwuK,EAAGz3J,SAASpW,KAAK6tK,EAAGK,SAAU9yB,EAASyyB,EAAGK,aAE9CL,EAAGC,cAActuK,OAAO,EAAGquK,EAAGC,cAAc/tK,YAEhD,IAAK,IAAI4uI,EAAK,EAAGw/B,EAAcjzD,EAAWyzB,EAAKw/B,EAAYpuK,OAAQ4uI,IAAM,EAErEv4H,EADe+3J,EAAYx/B,MAG/B,OAAOi/B,GC5BPQ,EAAkC,SAAUp8J,GAC5Cm3J,EAAgB/wF,SAAQ,SAAyBy1F,GAC7CA,EAAGC,cAActuK,OAAO,EAAGquK,EAAGC,cAAc/tK,QAC5C8tK,EAAGQ,eAAe7uK,OAAO,EAAGquK,EAAGQ,eAAetuK,QAC9C8tK,EAAGS,mBAAmBl2F,SAAQ,SAAuB21F,GAC7CA,EAAGvgB,aACCigB,EAAsBM,EAAGruK,QAAUsS,EACnC67J,EAAGC,cAAczuK,KAAK0uK,GAGtBF,EAAGQ,eAAehvK,KAAK0uK,WCPvCQ,EAAU,WACV,IAAIv8J,EAAQ,EAEZ,IADAo8J,EAAgCp8J,GCLzBm3J,EAAgB/4B,MAAK,SAAUy9B,GAAM,OAAOA,EAAGC,cAAc/tK,OAAS,MDOzEiS,EAAQ27J,IACRS,EAAgCp8J,GAKpC,OEbOm3J,EAAgB/4B,MAAK,SAAUy9B,GAAM,OAAOA,EAAGQ,eAAetuK,OAAS,MdDrD,WACzB,IAAIN,EACsB,oBAAf+uK,WACP/uK,EAAQ,IAAI+uK,WAAW,QAAS,CAC5B3rF,QAASumF,MAIb3pK,EAAQ8M,SAASkiK,YAAY,UACvBC,UAAU,SAAS,GAAO,GAChCjvK,EAAMojF,QAAUumF,GAEpBjhF,OAAOp4E,cAActQ,GYAjBkvK,GAEG38J,EAAQ,GVdfkpG,EAAY,GAEZ0zD,EAAiB,SAAUx4J,GAC3B,IAAKizJ,EAAS,CACV,IAAIwF,EAAW,EACXC,EAAOviK,SAASwiK,eAAe,IAEnC,IAAIC,kBAAiB,WAAc,OANT9zD,EAAU17G,OAAO,GAAG44E,SAAQ,SAAUh6C,GAAM,OAAOA,UAMtB4zG,QAAQ88B,EADlD,CAAEG,eAAe,IAE9B5F,EAAU,WAAcyF,EAAKI,YAAc,IAAML,EAAWA,IAAaA,MAE7E3zD,EAAU77G,KAAK+W,GACfizJ,KaTA8F,EAAW,EAGXC,EAAiB,CAAEz0I,YAAY,EAAMs0I,eAAe,EAAMI,WAAW,EAAMC,SAAS,GACpFj2B,EAAS,CACT,SACA,OACA,gBACA,eACA,iBACA,qBACA,QACA,UACA,UACA,YACA,YACA,WACA,OACA,SAEAruG,EAAO,SAAU4tH,GAEjB,YADgB,IAAZA,IAAsBA,EAAU,GAC7Bp0C,KAAKL,MAAQy0C,GAEpB2W,GAAY,EAkEZC,EAAY,IAjEC,WACb,SAASC,IACL,IAAIlvF,EAAQxuF,KACZA,KAAKwjJ,SAAU,EACfxjJ,KAAKkN,SAAW,WAAc,OAAOshF,EAAMmvF,YA2D/C,OAzDAD,EAAUpoK,UAAU+yI,IAAM,SAAUwe,GAChC,IAAIr4E,EAAQxuF,KAEZ,QADgB,IAAZ6mK,IAAsBA,EA/Bf,MAgCP2W,EAAJ,CAGAA,GAAY,EACZ,ICxC4BnxI,EDwCxBuxI,EAAQ3kI,EAAK4tH,GCxCWx6H,EDyCR,WAChB,IAAIwxI,GAAsB,EAC1B,IACIA,EAAsBrB,IAD1B,QAMI,GAFAgB,GAAY,EACZ3W,EAAU+W,EAAQ3kI,KA7CMmkI,EA+CpB,OAEAS,EACArvF,EAAM65D,IAAI,KAELwe,EAAU,EACfr4E,EAAM65D,IAAIwe,GAGVr4E,EAAMtlD,UC1DtB2zI,GAAe,WACX1jI,sBAAsB9M,QD8D1BqxI,EAAUpoK,UAAUqoK,SAAW,WAC3B39K,KAAKo5C,OACLp5C,KAAKqoJ,OAETq1B,EAAUpoK,UAAU2qI,QAAU,WAC1B,IAAIzxD,EAAQxuF,KACRqsC,EAAK,WAAc,OAAOmiD,EAAM2tF,UAAY3tF,EAAM2tF,SAASl8B,QAAQzlI,SAASwjI,KAAMq/B,IACtF7iK,SAASwjI,KAAO3xG,IAAOk7E,EAAO/1D,iBAAiB,mBAAoBnlB,IAEvEqxI,EAAUpoK,UAAU4zB,MAAQ,WACxB,IAAIslD,EAAQxuF,KACRA,KAAKwjJ,UACLxjJ,KAAKwjJ,SAAU,EACfxjJ,KAAKm8K,SAAW,IAAIc,iBAAiBj9K,KAAKkN,UAC1ClN,KAAKigJ,UACLqH,EAAOjhE,SAAQ,SAAU9rE,GAAQ,OAAOgtG,EAAO/1D,iBAAiBj3C,EAAMi0E,EAAMthF,UAAU,QAG9FwwK,EAAUpoK,UAAU8jC,KAAO,WACvB,IAAIo1C,EAAQxuF,KACPA,KAAKwjJ,UACNxjJ,KAAKm8K,UAAYn8K,KAAKm8K,SAAS71F,aAC/BghE,EAAOjhE,SAAQ,SAAU9rE,GAAQ,OAAOgtG,EAAOl2D,oBAAoB92C,EAAMi0E,EAAMthF,UAAU,MACzFlN,KAAKwjJ,SAAU,IAGhBk6B,EA/DM,IAkEbI,EAAc,SAAUvuK,IACvB6tK,GAAY7tK,EAAI,GAAKkuK,EAAUv0I,UAChCk0I,GAAY7tK,IACCkuK,EAAUrkI,QEzFvB2kI,EAAqB,WACrB,SAASA,EAAkBpwK,EAAQ2tK,GAC/Bt7K,KAAK2N,OAASA,EACd3N,KAAKs7K,YAAcA,GAAenE,EAAyB6G,YAC3Dh+K,KAAKk8K,iBAAmB,CACpB1E,WAAY,EACZz7G,UAAW,GAcnB,OAXAgiH,EAAkBzoK,UAAUmmJ,SAAW,WACnC,IAf4B9tJ,EAexBsb,EAAOoyJ,EAAiBr7K,KAAK2N,OAAQ3N,KAAKs7K,aAAa,GAI3D,OAnB4B3tK,EAgBJ3N,KAAK2N,OAfzBkqK,EAAMlqK,IZaM,SAAUA,GAC9B,OAAQA,EAAOswK,SACX,IAAK,QACD,GAAoB,UAAhBtwK,EAAOV,KACP,MAER,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,MACD,OAAO,EAEf,OAAO,EY3BCixK,CAAkBvwK,IACkB,WAArCswI,iBAAiBtwI,GAAQw/E,UAcxBntF,KAAKk8K,iBAAmBjzJ,GAExBjpB,KAAKk8K,iBAAiB1E,aAAevuJ,EAAKuuJ,YACvCx3K,KAAKk8K,iBAAiBngH,YAAc9yC,EAAK8yC,WAK7CgiH,EApBc,GCRrBI,EACA,SAA8B/+B,EAAgB/6H,GAC1CrkB,KAAK+7K,cAAgB,GACrB/7K,KAAKs8K,eAAiB,GACtBt8K,KAAKu8K,mBAAqB,GAC1Bv8K,KAAKm8K,SAAW/8B,EAChBp/I,KAAKqkB,SAAWA,GCFpB+5J,EAAc,IAAIvkI,QAClBwkI,EAAsB,SAAU9B,EAAoB5uK,GACpD,IAAK,IAAIG,EAAI,EAAGA,EAAIyuK,EAAmBvuK,OAAQF,GAAK,EAChD,GAAIyuK,EAAmBzuK,GAAGH,SAAWA,EACjC,OAAOG,EAGf,OAAQ,GAERwwK,EAA4B,WAC5B,SAASA,KAgCT,OA9BAA,EAAyBrrD,QAAU,SAAUmsB,EAAgB/6H,GACzD,IAAIk0E,EAAS,IAAI4lF,EAAqB/+B,EAAgB/6H,GACtD+5J,EAAYjrK,IAAIisI,EAAgB7mD,IAEpC+lF,EAAyBr+B,QAAU,SAAUb,EAAgBzxI,EAAQqS,GACjE,IAAIu4E,EAAS6lF,EAAYtkI,IAAIslG,GACzBm/B,EAAwD,IAArChmF,EAAOgkF,mBAAmBvuK,OAC7CqwK,EAAoB9lF,EAAOgkF,mBAAoB5uK,GAAU,IACzD4wK,GAAoBnH,EAAgB9pK,KAAKirF,GACzCA,EAAOgkF,mBAAmBjvK,KAAK,IAAIywK,EAAkBpwK,EAAQqS,GAAWA,EAAQuJ,MAChFu0J,EAAY,GACZL,EAAUE,aAGlBW,EAAyBE,UAAY,SAAUp/B,EAAgBzxI,GAC3D,IAAI4qF,EAAS6lF,EAAYtkI,IAAIslG,GACzB5xI,EAAQ6wK,EAAoB9lF,EAAOgkF,mBAAoB5uK,GACvD8wK,EAAuD,IAArClmF,EAAOgkF,mBAAmBvuK,OAC5CR,GAAS,IACTixK,GAAmBrH,EAAgB3pK,OAAO2pK,EAAgB/pK,QAAQkrF,GAAS,GAC3EA,EAAOgkF,mBAAmB9uK,OAAOD,EAAO,GACxCswK,GAAa,KAGrBQ,EAAyBh4F,WAAa,SAAU84D,GAC5C,IAAI5wD,EAAQxuF,KACRu4F,EAAS6lF,EAAYtkI,IAAIslG,GAC7B7mD,EAAOgkF,mBAAmB1uK,QAAQw4E,SAAQ,SAAU21F,GAAM,OAAOxtF,EAAMgwF,UAAUp/B,EAAgB48B,EAAGruK,WACpG4qF,EAAOwjF,cAActuK,OAAO,EAAG8qF,EAAOwjF,cAAc/tK,SAEjDswK,EAjCqB,GCX5Bv/B,EAAkB,WAClB,SAASA,EAAe16H,GACpB,GAAyB,IAArBnkB,UAAU8N,OACV,MAAM,IAAI64B,UAAU,kFAExB,GAAwB,oBAAbxiB,EACP,MAAM,IAAIwiB,UAAU,iGAExBy3I,EAAyBrrD,QAAQjzH,KAAMqkB,GA0B3C,OAxBA06H,EAAezpI,UAAU2qI,QAAU,SAAUtyI,EAAQqS,GACjD,GAAyB,IAArB9f,UAAU8N,OACV,MAAM,IAAI64B,UAAU,6FAExB,IAAKwxI,EAAU1qK,GACX,MAAM,IAAIk5B,UAAU,wFAExBy3I,EAAyBr+B,QAAQjgJ,KAAM2N,EAAQqS,IAEnD++H,EAAezpI,UAAUkpK,UAAY,SAAU7wK,GAC3C,GAAyB,IAArBzN,UAAU8N,OACV,MAAM,IAAI64B,UAAU,+FAExB,IAAKwxI,EAAU1qK,GACX,MAAM,IAAIk5B,UAAU,0FAExBy3I,EAAyBE,UAAUx+K,KAAM2N,IAE7CoxI,EAAezpI,UAAUgxE,WAAa,WAClCg4F,EAAyBh4F,WAAWtmF,OAExC++I,EAAevwI,SAAW,WACtB,MAAO,kDAEJuwI,EAlCW,I,mGCEP,SAAS,EAAiB6lB,GACvC,IAAInzC,EAAwB,oBAAR7rC,IAAqB,IAAIA,SAAQvlF,EA8BrD,OA5BA,EAAmB,SAA0BukK,GAC3C,GAAc,OAAVA,ICRkC9kK,EDQE8kK,GCPsB,IAAzDC,SAASr2J,SAASP,KAAKnO,GAAIuN,QAAQ,kBDOQ,OAAOu3J,ECR5C,IAA2B9kK,EDUtC,GAAqB,oBAAV8kK,EACT,MAAM,IAAI/9H,UAAU,sDAGtB,GAAsB,qBAAX4qF,EAAwB,CACjC,GAAIA,EAAOljE,IAAIq2G,GAAQ,OAAOnzC,EAAO33E,IAAI8qH,GAEzCnzC,EAAOt+G,IAAIyxJ,EAAO8Z,GAGpB,SAASA,IACP,OAAO,OAAArsC,EAAA,GAAUuyB,EAAO1kK,UAAW,OAAA67I,EAAA,GAAe/7I,MAAMyT,aAW1D,OARAirK,EAAQppK,UAAYhF,OAAO40H,OAAO0/B,EAAMtvJ,UAAW,CACjD7B,YAAa,CACXjU,MAAOk/K,EACProJ,YAAY,EACZwkH,UAAU,EACVzkH,cAAc,KAGX,OAAA0lH,EAAA,GAAe4iC,EAAS9Z,KAGTA,G,0EE5BtB+Z,EACG,EA0CHC,EAAkB,+FAkClBC,GA/B0C/sI,iBA+BxB,qnCAsHlBgtI,GAnH8BC,iBAmEYC,iBAgDxB,8kHAGlBC,EAAkB,ggBAuClBC,GApCmCC,iBAoCjB,8cAGlBC,EAAkB,+aAgClBC,GA7BoCC,iBA6BpB,CAClB,IAAIplK,aAAa,CAAC,EAAG,IACrB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,IAC3B,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,IAC9B,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACpC,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAE3CqlK,EAAa,CACfC,WAAY,EACZC,MAAO,EACPC,OAAQ,EACRC,MAAO,EACPC,WAAY,EACZC,KAAM,GAgCJC,GAtB6BC,iBAsBV,oxBAGnBC,EAAmB,gaAyFnBC,GAtFwCC,iBAyCNC,iBA6ClB,CAClBC,KAAM,EACNC,OAAQ,IA0NNC,GA7M0CC,iBAmDRC,iBAqFIC,iBAqElB,CACtBC,MAAO,EACPC,KAAM,EACNC,MAAO,IAmGLC,GAjF+BC,iBAiFrB,CACZC,cAAe,gBACfC,iBAAkB,mBAClBC,oBAAqB,sBACrBC,YAAa,cACbC,oBAAqB,wBAkDnBC,GAxCgCC,iBAwCb,0nBAwFnBC,GArFkCC,iBAqFf,+6BAwDnBC,GArD6BC,iBAqDd,CACjBC,QAAS,EACTC,SAAU,EACVC,uBAAwB,IAOtBC,EAAmB,8fAGnBC,EAAmB,qTA+BnBC,GA5BgCC,iBA4Bb,ilPAGnBC,EAAmB,qcAGiBC,iBA4FPC,iBAwEf,IAAIrvI,SAmYV,IAAIvO,QAyZI,IAAIrqB,aAAa,CACnC,IAAM,IAAN,SAAY,IAAO,GACnB,IAAM,IAAN,SAAY,IAAO,GACnB,IAAM,IAAM,MAKd,IAuDIkoK,EAAgB,CAClBC,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,OAAQ,EACRC,WAAY,EACZC,UAAW,EACXC,QAAS,EACTnB,SAAU,GACVoB,OAAQ,GACRC,SAAU,GACVC,OAAQ,GACRC,QAAS,GACTC,QAAS,GACTC,OAAQ,GACRC,WAAY,GACZC,SAAU,IA6DRC,EAAiB,IAAI39F,IAAI,CAC3B,CAACw8F,EAAcC,KAAM,MACrB,CAACD,EAAcE,IAxDM,oHAyDrB,CAACF,EAAcG,MAtDM,mPAuDrB,CAACH,EAAcI,QApDM,gHAqDrB,CAACJ,EAAcK,WAlDM,6QAmDrB,CAACL,EAAcM,YAhDM,yQAiDrB,CAACN,EAAcO,OA9CM,gHA+CrB,CAACP,EAAcQ,WA5CM,gHA6CrB,CAACR,EAAcS,UA1CM,oHA2CrB,CAACT,EAAcU,QAxCM,gHAyCrB,CAACV,EAAcT,SAtCM,2GAuCrB,CAACS,EAAcW,OApCM,mQAqCrB,CAACX,EAAcY,SAlCM,yHAmCrB,CAACZ,EAAca,OAhCM,yGAiCrB,CAACb,EAAcc,QA9BM,oRA+BrB,CAACd,EAAce,QA5BM,2QA6BrB,CAACf,EAAcgB,OA1BM,4HA2BrB,CAAChB,EAAciB,WAxBM,8SAyBrB,CAACjB,EAAckB,SAtBM,0HAwBnBE,EAAS,kDACX,WAAYC,GAA4B,MAAb9lJ,EAAa,uDAAH,EAAG,4BACtC,gBACK8lJ,cAAgBA,EACrB,EAAK9lJ,QAAU,IAAI+lJ,UAAU/lJ,GAHS,EAD7B,oDAMX,WACE,OAAO39B,KAAKyjL,gBAPH,8BASX,SAAiBA,GACfzjL,KAAKyjL,cAAgBA,EACrBzjL,KAAKge,cAAc,CAAE/Q,KAAM,aAXlB,2BAaX,WACE,OAAOs2K,EAAezpI,IAAI95C,KAAKyjL,mBAdtB,GAAiBz2K,mBAoF1B22K,GAhEuBC,kBAgEL,CACpBC,KAAM,EACNnD,MAAO,EACPoD,YAAa,IA+tBezqE,IAgkB9B,SAAS0qE,EAAS96J,EAAMjN,EAAQ/O,GAC9B,IAOIqR,EAPE0lK,EAAW,IAAIp+F,IAAI,CACvB,CAACq+F,kBAAkB,GACnB,CAACp9K,YAAW,GACZ,CAACE,WAAU,GACX,CAACm9K,YAAY,GACb,CAACC,aAAa,KAMhB,GAHKH,EAASz1H,IAAIvyC,IAChB5I,QAAQ3T,MAAM,gCAEZwN,IAASm3K,mBAEX,IAAK,IAAIt2K,EAAI,EAAGC,GADhBuQ,EAAO,IAAI1E,WAAWqP,EAAO+6J,EAASlqI,IAAI99B,KACjBhO,OAAQF,EAAIC,IAAKD,EACxCwQ,EAAKxQ,GAAqB,IAAhBM,KAAKW,cAIjB,IAAK,IAAIjB,EAAI,EAAGC,GADhBuQ,EAAO,IAAIpE,aAAa+O,EAAO+6J,EAASlqI,IAAI99B,KACnBhO,OAAQF,EAAIC,IAAKD,EACxCwQ,EAAKxQ,GAAKM,KAAKW,SAGnB,OAAOuP,EAEwB69E,cA8IzB,IAAIx2E,UACJ,IAAI0+J,UAyRZ,SAASxoG,EAAa9gE,EAAOC,EAAQsD,GACnC,IAAMxD,EAASN,SAASF,gBAAgB,+BAAgC,UAClEW,EAAUH,EAAOI,WAAW,MAGlC,GAFAJ,EAAOC,MAAQA,EACfD,EAAOE,OAASA,EACZsD,aAAgBgmK,MAClBrpK,EAAQI,UAAUiD,EAAM,EAAG,OACtB,CACL,IAAMimK,EAAYtpK,EAAQupK,gBAAgBzpK,EAAOC,GACjDupK,EAAUjmK,KAAKnL,IAAImL,GACnBrD,EAAQG,aAAampK,EAAW,EAAG,GAErC,OAAOzpK,EAET,IAAI2pK,EAAY,WACd,aAAgD,IAApC1pK,EAAoC,uDAA5B,EAAGC,EAAyB,uDAAhB,EAAGsD,EAAa,uDAAN,KAAM,oBAC9Cte,KAAK+a,MAAQA,EACb/a,KAAKgb,OAASA,EACdhb,KAAKse,KAAOA,EAJA,4CAMd,WACE,MAA2B,qBAAb9D,SAA2B,KAAOqhE,EAAa77E,KAAK+a,MAAO/a,KAAKgb,OAAQhb,KAAKse,SAP/E,mBASd,SAAY5D,GACV,IACI4D,EADIvD,EAAkBL,EAAlBK,MAAOC,EAAWN,EAAXM,OAEf,GAAIN,aAAiB4pK,MAAO,CAC1B,IAAMxpK,EAAS+gE,EAAa9gE,EAAOC,EAAQN,GAC3C,GAAe,OAAXI,EAEFwD,EADgBxD,EAAOI,WAAW,MACnBwpK,aAAa,EAAG,EAAG3pK,EAAOC,GAAQsD,UAGnDA,EAAO5D,EAAM4D,KAEf,OAAO,IAAImmK,EAAa1pK,EAAOC,EAAQsD,OArB3B,KA0BZqmK,EACQ,cAIRC,EAAiB,yhFAGjBryK,EAAI,IAAIsyK,QACRC,EAAe,kDACjB,WAAYxmK,EAAM2K,GAAM,kCACtB,cAAM3K,EAAM2K,EAAMA,EAAMA,IACnBhc,KAAO83K,YACZ,EAAK/oK,OAASgpK,YACd,EAAK9oK,SAAWzR,iBAChB,EAAKsR,UAAYkpK,eACjB,EAAKnpK,UAAYmpK,eACjB,EAAKrpK,MAAQ/W,sBACb,EAAKgX,MAAQhX,sBACb,EAAKo0D,MAAQp0D,sBACb,EAAK+X,gBAAkB,EACvB,EAAKsoK,UAAY,IAAIC,UAAS,EAAG,EAAG,GACpC,EAAKC,UAAY,IAAID,UAAS,EAAG,EAAG,GAZd,EADP,mDAejB,WACE,OAAO,IAhBQ,qBAkBjB,SAAQl8J,GAA2B,IAE7B+3I,EAF6B,OAArBqkB,IAAqB,yDAC3B3qK,EAAQ1a,KAAK0a,MAEnB,GAAIuO,GAAQvO,EAAMK,MAChBimJ,EAAUrhK,QAAQT,OAAO,IAAIsU,MAAM,8DAC9B,CACL,IAAM8xK,EAAYC,IAAIC,gBAAgB,IAAI58D,KAAK,CAACg8D,GAAiB,CAAE33K,KAAM,qBACnEw4K,EAAS,IAAIC,OAAOJ,GAC1BtkB,EAAU,IAAIrhK,SAAQ,SAACV,EAASC,GAC9BumL,EAAOj0H,iBAAiB,SAAS,SAAC9jD,GAAD,OAAWxO,EAAOwO,EAAMjO,UACzDgmL,EAAOj0H,iBAAiB,WAAW,SAAC9jD,GAClC,IAAMi4K,EAAM,IAAIb,EAAgBp3K,EAAM4Q,KAAM2K,GAC5C08J,EAAIzpK,SAAW,EAAKA,SACpBypK,EAAI14K,KAAO,EAAKA,KAChB04K,EAAIprK,KAAO,EAAKA,KAChBgrK,IAAIK,gBAAgBN,GACpBrmL,EAAQ0mL,MAEV,IAAME,EAAeR,EAAe,CAAC3qK,EAAM4D,KAAKjE,QAAU,GAC1DorK,EAAOK,YAAY,CACjBC,UAAWpB,EACXrmK,KAAM5D,EAAM4D,KACZ2K,QACC48J,MAGP,OAAO7kB,IA5CQ,sBA8CjB,SAAS2kB,GACP,IAAMK,EAAOhmL,KAAK0a,MACZurK,EAAON,EAAIjrK,MACXwrK,EAAQ93K,KAAKgB,IAAI42K,EAAKjrK,MAAOirK,EAAKhrK,OAAQgrK,EAAK/lK,OAErD,GAAIimK,IADU93K,KAAKgB,IAAI62K,EAAKlrK,MAAOkrK,EAAKjrK,OAAQirK,EAAKhmK,OAEnD7M,QAAQ3T,MAAM,sBACT,GAAIkmL,EAAI14K,OAAS83K,aAAc/kL,KAAKiN,OAAS83K,YAClD3xK,QAAQ3T,MAAM,6CACT,GAAIkmL,EAAI3pK,SAAWgpK,aAAehlL,KAAKgc,SAAWgpK,YACvD5xK,QAAQ3T,MAAM,sCACT,CAKL,IAJA,IAAM0mL,EAAQH,EAAK1nK,KACb8nK,EAAQH,EAAK3nK,KACb2K,EAAOi9J,EACPp0K,EAAImX,EAAO,EACRnb,EAAI,EAAGC,EAAI,KAAH,IAAGkb,EAAQ,GAAGnb,EAAIC,IAAKD,EAAG,CACzC,IAAMu4K,EAAS,EAAJv4K,EACL6K,EAAIwtK,EAAME,EAAK,GAAKv0K,EACpBiG,EAAIouK,EAAME,EAAK,GAAKv0K,EACpBQ,EAAI6zK,EAAME,EAAK,GAAKv0K,EACpBw0K,EAAoD,EAA7Cl4K,KAAKgG,MAAMuE,EAAIZ,EAAIkR,EAAO3W,EAAI2W,EAAOA,GAClDk9J,EAAME,EAAK,GAAKD,EAAME,EAAO,GAC7BH,EAAME,EAAK,GAAKD,EAAME,EAAO,GAC7BH,EAAME,EAAK,GAAKD,EAAME,EAAO,GAE/BtmL,KAAKopC,aAAc,EAErB,OAAOppC,OA1EQ,4BA4EjB,WACE,GAAIA,KAAKiN,OAAS83K,YAAY,CAG5B,IAFA,IAAMwB,EAAYvmL,KAAK0a,MAAM4D,KACvBkoK,EAAY,IAAI3sK,kBAAkB0sK,EAAUv4K,QACzCF,EAAI,EAAGC,EAAIw4K,EAAUv4K,OAAQF,EAAIC,IAAKD,EAC7C04K,EAAU14K,GAAoB,IAAfy4K,EAAUz4K,GAE3B9N,KAAK0a,MAAM4D,KAAOkoK,EAClBxmL,KAAKiN,KAAOw5K,mBACZzmL,KAAKopC,aAAc,EAErB,OAAOppC,OAvFQ,4BAyFjB,WACE,GAAIA,KAAKiN,OAASw5K,mBAAoB,CAGpC,IAFA,IAAMD,EAAYxmL,KAAK0a,MAAM4D,KACvBioK,EAAY,IAAIrsK,aAAassK,EAAUx4K,QACpCF,EAAI,EAAGC,EAAIy4K,EAAUx4K,OAAQF,EAAIC,IAAKD,EAC7Cy4K,EAAUz4K,GAAK04K,EAAU14K,GAAK,IAEhC9N,KAAK0a,MAAM4D,KAAOioK,EAClBvmL,KAAKiN,KAAO83K,YACZ/kL,KAAKopC,aAAc,EAErB,OAAOppC,OApGQ,iCAsGjB,WACE,IAAMse,EAAOte,KAAK0a,MAAM4D,KACxB,GAAIte,KAAKiN,OAAS83K,YAAY,CAE5B,IADA,IAAM/3I,EAAShtC,KAAKgc,SAAW0qK,aAAc,EAAI,EACxC54K,EAAI,EAAGC,EAAIuQ,EAAKtQ,OAAQF,EAAIC,EAAGD,GAAKk/B,EAC3Cz6B,EAAE8G,UAAUiF,EAAMxQ,GAAG64K,sBAAsBztJ,QAAQ5a,EAAMxQ,GAE3D9N,KAAKkc,SAAWxR,eAChB1K,KAAKopC,aAAc,OAEnBh2B,QAAQ3T,MAAM,kDAEhB,OAAOO,OAlHQ,iCAoHjB,WACE,IAAMse,EAAOte,KAAK0a,MAAM4D,KACxB,GAAIte,KAAKiN,OAAS83K,YAAY,CAE5B,IADA,IAAM/3I,EAAShtC,KAAKgc,SAAW0qK,aAAc,EAAI,EACxC54K,EAAI,EAAGC,EAAIuQ,EAAKtQ,OAAQF,EAAIC,EAAGD,GAAKk/B,EAC3Cz6B,EAAE8G,UAAUiF,EAAMxQ,GAAG+/I,sBAAsB30H,QAAQ5a,EAAMxQ,GAE3D9N,KAAKkc,SAAWzR,iBAChBzK,KAAKopC,aAAc,OAEnBh2B,QAAQ3T,MAAM,kDAEhB,OAAOO,OAhIQ,2BAkIjB,WACE,GAAIA,KAAKgc,SAAWgpK,YAAa,CAK/B,IAJA,IAAM/7J,EAAOjpB,KAAK0a,MAAMK,MAClB6rK,EAAU5mL,KAAK0a,MAAM4D,KACrBuoK,EAAW,IAAID,EAAQnzK,YAAwB,EAAZ,SAAAwV,EAAQ,IAC3C69J,EAAW9mL,KAAKiN,OAAS83K,YAAa,EAAI,IACvCj3K,EAAI,EAAG8d,EAAI,EAAG7d,EAAI64K,EAAQ54K,OAAQF,EAAIC,EAAGD,GAAK,EAAG8d,GAAK,EAC7Di7J,EAASj7J,EAAI,GAAKg7J,EAAQ94K,EAAI,GAC9B+4K,EAASj7J,EAAI,GAAKg7J,EAAQ94K,EAAI,GAC9B+4K,EAASj7J,EAAI,GAAKg7J,EAAQ94K,EAAI,GAC9B+4K,EAASj7J,EAAI,GAAKk7J,EAEpB9mL,KAAK0a,MAAM4D,KAAOuoK,EAClB7mL,KAAKgc,OAAS0qK,aACd1mL,KAAKopC,aAAc,EAErB,OAAOppC,OAlJQ,2BAoJjB,WACE,IAAM+a,EAAQ/a,KAAK0a,MAAMK,MACnBC,EAAShb,KAAK0a,MAAMM,OAAShb,KAAK0a,MAAMuF,MACxCI,EAAU,IAAI0mK,cAAa/mL,KAAK0a,MAAM4D,KAAMvD,EAAOC,GAUzD,OATAqF,EAAQ9F,KAAOva,KAAKua,KACpB8F,EAAQpT,KAAOjN,KAAKiN,KACpBoT,EAAQrE,OAAShc,KAAKgc,OACtBqE,EAAQnE,SAAWlc,KAAKkc,SACxBmE,EAAQtE,UAAYkpK,eACpB5kK,EAAQvE,UAAYmpK,eACpB5kK,EAAQzE,MAAQ5b,KAAK4b,MACrByE,EAAQxE,MAAQ7b,KAAK6b,MACrBwE,EAAQ5D,iBAAkB,EACnB4D,KAjKQ,mBAmKjB,SAAYA,GACV,IAGI/B,EAHE5D,EAAQ2F,EAAQ3F,MACdK,EAAkBL,EAAlBK,MAAOC,EAAWN,EAAXM,OACTiO,EAAO7a,KAAKgB,IAAI2L,EAAOC,GAE7B,GAAIN,aAAiB4pK,MAAO,CAE1BhmK,EADqBmmK,EAAarpE,KAAK1gG,GACnB4D,KACpB,IAAM0oK,EAAiB,IAAIptK,WAAuB,EAAZ,SAAAqP,EAAQ,IAC9C,GAAIlO,EAAQC,EACV,IAAK,IAAIyD,EAAI,EAAGA,EAAIwK,IAAQxK,EAC1B,IAAK,IAAI9O,EAAI,EAAGA,EAAIsZ,IAAQtZ,EAC1B,IAAK,IAAID,EAAI,EAAGA,EAAIuZ,IAAQvZ,EAAG,CAC7B,IAAM6gD,EAAwC,GAAlC7gD,EAAI+O,EAAIwK,EAAOtZ,EAAIsZ,EAAOA,GAChCo9J,EAAwC,GAAlC32K,EAAIC,EAAIsZ,EAAOxK,EAAIwK,EAAOA,GACtC+9J,EAAeX,EAAK,GAAK/nK,EAAKiyC,EAAK,GACnCy2H,EAAeX,EAAK,GAAK/nK,EAAKiyC,EAAK,GACnCy2H,EAAeX,EAAK,GAAK/nK,EAAKiyC,EAAK,QAKzC,IAAK,IAAIziD,EAAI,EAAGC,EAAI,KAAH,IAAGkb,EAAQ,GAAGnb,EAAIC,IAAKD,EAAG,CACzC,IAAMyiD,EAAS,EAAJziD,EACLu4K,EAAS,EAAJv4K,EACXk5K,EAAeX,EAAK,GAAK/nK,EAAKiyC,EAAK,GACnCy2H,EAAeX,EAAK,GAAK/nK,EAAKiyC,EAAK,GACnCy2H,EAAeX,EAAK,GAAK/nK,EAAKiyC,EAAK,GAGvCjyC,EAAO0oK,OAEP1oK,EAAO5D,EAAM4D,KAAKzQ,QAEpB,IAAM83K,EAAM,IAAIb,EAAgBxmK,EAAM2K,GAItC,OAHA08J,EAAI14K,KAAOoT,EAAQpT,KACnB04K,EAAIzpK,SAAWmE,EAAQnE,SACvBypK,EAAIprK,KAAO8F,EAAQ9F,KACZorK,IAzMQ,2BA2MjB,SAAqB18J,GAGnB,IAFA,IAAM3K,EAAO,IAAIpE,aAAyB,EAAZ,SAAA+O,EAAQ,IAChCnX,EAAI,GAAKmX,EAAO,GACbtQ,EAAI,EAAGA,EAAIsQ,IAAQtQ,EAC1B,IAAK,IAAIZ,EAAI,EAAGA,EAAIkR,IAAQlR,EAC1B,IAAK,IAAIzF,EAAI,EAAGA,EAAI2W,IAAQ3W,EAAG,CAC7B,IAAM+zK,EAAwC,GAAlC1tK,EAAIZ,EAAIkR,EAAO3W,EAAI2W,EAAOA,GACtC3K,EAAK+nK,EAAK,GAAK1tK,EAAI7G,EACnBwM,EAAK+nK,EAAK,GAAKtuK,EAAIjG,EACnBwM,EAAK+nK,EAAK,GAAK/zK,EAAIR,EAIzB,IAAM6zK,EAAM,IAAIb,EAAgBxmK,EAAM2K,GAEtC,OADA08J,EAAIprK,KAAO,UACJorK,MA1NQ,GAAiBzqH,iBA89BhC+rH,GAvLU74K,KAAKC,GACV,IAAI64K,UACJ,IAAIA,UAqLoB,sQAG7BC,EAA2B,6tiEAmoB7B,IAAIjtK,aAAa,GACjB,IAAIA,aAAa,GAGjB,IAAIA,aAAa,GACjB,IAAIA,aAAa,GACjB,IAAIA,aAAa,GACjB,IAAIA,aAAa,GAIf,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IAGxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IAGxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IAGxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IAGxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IAGxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IACxB,IAAIA,aAAa,CAAC,EAAG,EAAG,IAmI1B,IAAIA,aAAa,GACjB,IAAIA,aAAa,GAMgB,IAAIA,aAAa,CAClD,GACC,IACD,KACC,KACD,MACC,KACD,OAGA,IAAIA,aAAa,CAAC,EAAG,IACrB,IAAIA,aAAa,CAAC,KAAO,MACzB,IAAIA,aAAa,EAAE,IAAM,MACzB,IAAIA,aAAa,CAAC,MAAQ,OAC1B,IAAIA,aAAa,EAAE,KAAO,OAG1B,IAAIN,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IAGnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IACnB,IAAIA,WAAW,CAAC,EAAG,IAodT,IAAIgsE,IAAI,CAClB,CAACwhG,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAACktK,EAAS,EAAG,EAAG,EAAG,GAAI,IAAIltK,aAAa,CAAC,EAAG,EAAG,EAAG,OAEpD,SAASmtK,EAAMh1K,EAAGC,EAAGwQ,GACnB,OAAOzQ,GAAKC,EAAID,GAAKyQ,EAEvB,SAASskK,EAASE,EAAIC,EAAIC,EAAIC,GAC5B,IAAMp1K,EAAIg1K,EAAMC,EAAIC,EAAI,KAClBj1K,EAAI+0K,EAAMG,EAAIC,EAAI,KACxB,OAAOJ,EAAMh1K,EAAGC,EAAG,MAwDYm1G,SA8ECigE,SAiFEC,U,6BC/6MvB,IAAI55K,EAAE6tI,EAAQ,IAAiBrsI,EAAE,MAAMuT,EAAE,MAAM64H,EAAQisC,SAAS,MAAMjsC,EAAQksC,WAAW,MAAMlsC,EAAQmsC,SAAS,MAAM,IAAI11K,EAAE,MAAMuG,EAAE,MAAM/I,EAAE,MAAM+rI,EAAQosC,SAAS,MAAM,IAAI1/J,EAAE,MAAM3U,EAAE,MACpM,GAAG,oBAAoB0B,QAAQA,OAAO4yK,IAAI,CAAC,IAAIr0K,EAAEyB,OAAO4yK,IAAIz4K,EAAEoE,EAAE,iBAAiBmP,EAAEnP,EAAE,gBAAgBgoI,EAAQisC,SAASj0K,EAAE,kBAAkBgoI,EAAQksC,WAAWl0K,EAAE,qBAAqBgoI,EAAQmsC,SAASn0K,EAAE,kBAAkBvB,EAAEuB,EAAE,kBAAkBgF,EAAEhF,EAAE,iBAAiB/D,EAAE+D,EAAE,qBAAqBgoI,EAAQosC,SAASp0K,EAAE,kBAAkB0U,EAAE1U,EAAE,cAAcD,EAAEC,EAAE,cAAc,IAAIjE,EAAE,oBAAoB0F,QAAQA,OAAOC,SACtR,SAASoJ,EAAEpM,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAErS,UAAU8N,OAAOuE,IAAID,GAAG,WAAWm4J,mBAAmBvqK,UAAUqS,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,iHACpU,IAAIm+J,EAAE,CAACwX,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAc/vE,EAAE,GAAG,SAASktD,EAAElzJ,EAAEC,EAAEC,GAAGvS,KAAK26I,MAAMtoI,EAAErS,KAAKib,QAAQ3I,EAAEtS,KAAK8kK,KAAKzsD,EAAEr4G,KAAKqoL,QAAQ91K,GAAGk+J,EACpN,SAASE,KAA6B,SAASK,EAAE3+J,EAAEC,EAAEC,GAAGvS,KAAK26I,MAAMtoI,EAAErS,KAAKib,QAAQ3I,EAAEtS,KAAK8kK,KAAKzsD,EAAEr4G,KAAKqoL,QAAQ91K,GAAGk+J,EADsGlL,EAAEjwJ,UAAUgzK,iBAAiB,GAAG/iB,EAAEjwJ,UAAUs7C,SAAS,SAASv+C,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMmB,MAAMiL,EAAE,KAAKze,KAAKqoL,QAAQD,gBAAgBpoL,KAAKqS,EAAEC,EAAE,aAAaizJ,EAAEjwJ,UAAU0jJ,YAAY,SAAS3mJ,GAAGrS,KAAKqoL,QAAQH,mBAAmBloL,KAAKqS,EAAE,gBACnds+J,EAAEr7J,UAAUiwJ,EAAEjwJ,UAAsF,IAAIs+I,EAAEod,EAAE17J,UAAU,IAAIq7J,EAAE/c,EAAEngJ,YAAYu9J,EAAEjjK,EAAE6lJ,EAAE2R,EAAEjwJ,WAAWs+I,EAAE20B,sBAAqB,EAAG,IAAIjY,EAAE,CAAC7rE,QAAQ,MAAMknE,EAAEr7J,OAAOgF,UAAU03I,eAAeojB,EAAE,CAAC/wK,KAAI,EAAG8gJ,KAAI,EAAGqoC,QAAO,EAAGC,UAAS,GAChS,SAASpY,EAAEh+J,EAAEC,EAAEC,GAAG,IAAIwB,EAAE8D,EAAE,GAAG08D,EAAE,KAAKv8D,EAAE,KAAK,GAAG,MAAM1F,EAAE,IAAIyB,UAAK,IAASzB,EAAE6tI,MAAMnoI,EAAE1F,EAAE6tI,UAAK,IAAS7tI,EAAEjT,MAAMk1E,EAAE,GAAGjiE,EAAEjT,KAAKiT,EAAEq5J,EAAE19J,KAAKqE,EAAEyB,KAAKq8J,EAAEpjB,eAAej5I,KAAK8D,EAAE9D,GAAGzB,EAAEyB,IAAI,IAAIgE,EAAE7X,UAAU8N,OAAO,EAAE,GAAG,IAAI+J,EAAEF,EAAEqS,SAAS3X,OAAO,GAAG,EAAEwF,EAAE,CAAC,IAAI,IAAID,EAAE8F,MAAM7F,GAAGvI,EAAE,EAAEA,EAAEuI,EAAEvI,IAAIsI,EAAEtI,GAAGtP,UAAUsP,EAAE,GAAGqI,EAAEqS,SAASpS,EAAE,GAAGzF,GAAGA,EAAE0vJ,aAAa,IAAIhuJ,KAAKgE,EAAE1F,EAAE0vJ,kBAAe,IAASlqJ,EAAE9D,KAAK8D,EAAE9D,GAAGgE,EAAEhE,IAAI,MAAM,CAAC20K,SAASn5K,EAAEtC,KAAKoF,EAAEhT,IAAIk1E,EAAE4rE,IAAInoI,EAAE2iI,MAAM9iI,EAAE8wK,OAAOrY,EAAE7rE,SACxU,SAAS+mE,EAAEn5J,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEq2K,WAAWn5K,EAAqG,IAAIk8J,EAAE,OAAO,SAASlzD,EAAElmG,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAEhT,IAA7K,SAAgBgT,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEmxD,QAAQ,SAAQ,SAASnxD,GAAG,OAAOC,EAAED,MAAmF66G,CAAO,GAAG76G,EAAEhT,KAAKiT,EAAE9D,SAAS,IAC5W,SAASgiK,EAAEn+J,EAAEC,EAAEC,EAAEwB,EAAE8D,GAAG,IAAI08D,SAASliE,EAAK,cAAckiE,GAAG,YAAYA,IAAEliE,EAAE,MAAK,IAAI2F,GAAE,EAAG,GAAG,OAAO3F,EAAE2F,GAAE,OAAQ,OAAOu8D,GAAG,IAAK,SAAS,IAAK,SAASv8D,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO3F,EAAEq2K,UAAU,KAAKn5K,EAAE,KAAKuT,EAAE9K,GAAE,GAAI,GAAGA,EAAE,OAAWH,EAAEA,EAANG,EAAE3F,GAASA,EAAE,KAAK0B,EAAE,IAAIwkG,EAAEvgG,EAAE,GAAGjE,EAAE6J,MAAMC,QAAQhG,IAAItF,EAAE,GAAG,MAAMF,IAAIE,EAAEF,EAAEmxD,QAAQioG,EAAE,OAAO,KAAK+E,EAAE34J,EAAEvF,EAAEC,EAAE,IAAG,SAASF,GAAG,OAAOA,MAAK,MAAMwF,IAAI2zJ,EAAE3zJ,KAAKA,EAD/W,SAAWxF,EAAEC,GAAG,MAAM,CAACo2K,SAASn5K,EAAEtC,KAAKoF,EAAEpF,KAAK5N,IAAIiT,EAAE6tI,IAAI9tI,EAAE8tI,IAAIxF,MAAMtoI,EAAEsoI,MAAMguC,OAAOt2K,EAAEs2K,QAC4RxY,CAAEt4J,EAAEtF,IAAIsF,EAAExY,KAAK2Y,GAAGA,EAAE3Y,MAAMwY,EAAExY,IAAI,IAAI,GAAGwY,EAAExY,KAAKmkE,QAAQioG,EAAE,OAAO,KAAKp5J,IAAIC,EAAEhF,KAAKuK,IAAI,EAAyB,GAAvBG,EAAE,EAAEjE,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO6J,MAAMC,QAAQxL,GAAG,IAAI,IAAI0F,EACzf,EAAEA,EAAE1F,EAAErE,OAAO+J,IAAI,CAAQ,IAAID,EAAE/D,EAAEwkG,EAAfhkC,EAAEliE,EAAE0F,GAAeA,GAAGC,GAAGw4J,EAAEj8F,EAAEjiE,EAAEC,EAAEuF,EAAED,QAAQ,GAAU,oBAAPC,EANhE,SAAWzF,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAE3C,GAAG2C,EAAE3C,IAAI2C,EAAE,eAA0CA,EAAE,KAMlD1C,CAAE0C,IAAyB,IAAIA,EAAEyF,EAAE7J,KAAKoE,GAAG0F,EAAE,IAAIw8D,EAAEliE,EAAEovD,QAAQ/hE,MAA6BsY,GAAGw4J,EAA1Bj8F,EAAEA,EAAE/0E,MAA0B8S,EAAEC,EAAtBuF,EAAE/D,EAAEwkG,EAAEhkC,EAAEx8D,KAAkBF,QAAQ,GAAG,WAAW08D,EAAE,MAAMjiE,EAAE,GAAGD,EAAEmB,MAAMiL,EAAE,GAAG,oBAAoBnM,EAAE,qBAAqBhC,OAAO+8B,KAAKh7B,GAAGywD,KAAK,MAAM,IAAIxwD,IAAI,OAAO0F,EAAE,SAAS+gG,EAAE1mG,EAAEC,EAAEC,GAAG,GAAG,MAAMF,EAAE,OAAOA,EAAE,IAAI0B,EAAE,GAAG8D,EAAE,EAAmD,OAAjD24J,EAAEn+J,EAAE0B,EAAE,GAAG,IAAG,SAAS1B,GAAG,OAAOC,EAAErE,KAAKsE,EAAEF,EAAEwF,QAAc9D,EAC1Z,SAAS23J,EAAEr5J,GAAG,IAAI,IAAIA,EAAEu2K,QAAQ,CAAC,IAAIt2K,EAAED,EAAEw2K,QAAQv2K,EAAEA,IAAID,EAAEu2K,QAAQ,EAAEv2K,EAAEw2K,QAAQv2K,EAAEA,EAAE1S,MAAK,SAAS0S,GAAG,IAAID,EAAEu2K,UAAUt2K,EAAEA,EAAEi6J,QAAQl6J,EAAEu2K,QAAQ,EAAEv2K,EAAEw2K,QAAQv2K,MAAI,SAASA,GAAG,IAAID,EAAEu2K,UAAUv2K,EAAEu2K,QAAQ,EAAEv2K,EAAEw2K,QAAQv2K,MAAK,GAAG,IAAID,EAAEu2K,QAAQ,OAAOv2K,EAAEw2K,QAAQ,MAAMx2K,EAAEw2K,QAAS,IAAInX,EAAE,CAACjtE,QAAQ,MAAM,SAASotE,IAAI,IAAIx/J,EAAEq/J,EAAEjtE,QAAQ,GAAG,OAAOpyF,EAAE,MAAMmB,MAAMiL,EAAE,MAAM,OAAOpM,EAAE,IAAIimG,EAAE,CAACwwE,uBAAuBpX,EAAEqX,wBAAwB,CAACC,WAAW,GAAGC,kBAAkB3Y,EAAE4Y,qBAAqB,CAACzkF,SAAQ,GAAIh3D,OAAO1/B,GACje4tI,EAAQwtC,SAAS,CAAC/nJ,IAAI23E,EAAE1yB,QAAQ,SAASh0E,EAAEC,EAAEC,GAAGwmG,EAAE1mG,GAAE,WAAWC,EAAEnS,MAAMH,KAAKE,aAAYqS,IAAIsO,MAAM,SAASxO,GAAG,IAAIC,EAAE,EAAuB,OAArBymG,EAAE1mG,GAAE,WAAWC,OAAaA,GAAG4mB,QAAQ,SAAS7mB,GAAG,OAAO0mG,EAAE1mG,GAAE,SAASA,GAAG,OAAOA,MAAK,IAAI+2K,KAAK,SAAS/2K,GAAG,IAAIm5J,EAAEn5J,GAAG,MAAMmB,MAAMiL,EAAE,MAAM,OAAOpM,IAAIspI,EAAQyZ,UAAUmQ,EAAE5pB,EAAQ0tC,cAAcrY,EAAEr1B,EAAQ2tC,mDAAmDhxE,EAChXqjC,EAAQ4tC,aAAa,SAASl3K,EAAEC,EAAEC,GAAG,GAAG,OAAOF,QAAG,IAASA,EAAE,MAAMmB,MAAMiL,EAAE,IAAIpM,IAAI,IAAI0B,EAAEhG,EAAE,GAAGsE,EAAEsoI,OAAO9iI,EAAExF,EAAEhT,IAAIk1E,EAAEliE,EAAE8tI,IAAInoI,EAAE3F,EAAEs2K,OAAO,GAAG,MAAMr2K,EAAE,CAAoE,QAAnE,IAASA,EAAE6tI,MAAM5rE,EAAEjiE,EAAE6tI,IAAInoI,EAAEs4J,EAAE7rE,cAAS,IAASnyF,EAAEjT,MAAMwY,EAAE,GAAGvF,EAAEjT,KAAQgT,EAAEpF,MAAMoF,EAAEpF,KAAK80J,aAAa,IAAIhqJ,EAAE1F,EAAEpF,KAAK80J,aAAa,IAAIjqJ,KAAKxF,EAAEq5J,EAAE19J,KAAKqE,EAAEwF,KAAKs4J,EAAEpjB,eAAel1I,KAAK/D,EAAE+D,QAAG,IAASxF,EAAEwF,SAAI,IAASC,EAAEA,EAAED,GAAGxF,EAAEwF,IAAI,IAAIA,EAAE5X,UAAU8N,OAAO,EAAE,GAAG,IAAI8J,EAAE/D,EAAEmW,SAAS3X,OAAO,GAAG,EAAEuF,EAAE,CAACC,EAAE6F,MAAM9F,GAAG,IAAI,IAAItI,EAAE,EAAEA,EAAEsI,EAAEtI,IAAIuI,EAAEvI,GAAGtP,UAAUsP,EAAE,GAAGuE,EAAEmW,SAASnS,EAAE,MAAM,CAAC2wK,SAASn5K,EAAEtC,KAAKoF,EAAEpF,KACxf5N,IAAIwY,EAAEsoI,IAAI5rE,EAAEomE,MAAM5mI,EAAE40K,OAAO3wK,IAAI2jI,EAAQ2Y,cAAc,SAASjiJ,EAAEC,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAACq2K,SAAS/vK,EAAE6wK,sBAAsBl3K,EAAEm3K,cAAcp3K,EAAEq3K,eAAer3K,EAAEs3K,aAAa,EAAEn+B,SAAS,KAAK2d,SAAS,OAAQ3d,SAAS,CAACk9B,SAASt2K,EAAEi7E,SAASh7E,GAAUA,EAAE82J,SAAS92J,GAAGspI,EAAQmgB,cAAcuU,EAAE10B,EAAQiuC,cAAc,SAASv3K,GAAG,IAAIC,EAAE+9J,EAAE1gD,KAAK,KAAKt9G,GAAY,OAATC,EAAErF,KAAKoF,EAASC,GAAGqpI,EAAQyxB,UAAU,WAAW,MAAM,CAAC3oE,QAAQ,OAAOk3C,EAAQ6pB,WAAW,SAASnzJ,GAAG,MAAM,CAACq2K,SAAS94K,EAAE0lC,OAAOjjC,IAAIspI,EAAQkuC,eAAere,EAC3e7vB,EAAQmuC,KAAK,SAASz3K,GAAG,MAAM,CAACq2K,SAASh1K,EAAEq2K,SAAS,CAACnB,SAAS,EAAEC,QAAQx2K,GAAG23K,MAAMte,IAAI/vB,EAAQgb,KAAK,SAAStkJ,EAAEC,GAAG,MAAM,CAACo2K,SAASrgK,EAAEpb,KAAKoF,EAAEqwJ,aAAQ,IAASpwJ,EAAE,KAAKA,IAAIqpI,EAAQsuC,YAAY,SAAS53K,EAAEC,GAAG,OAAOu/J,IAAIoY,YAAY53K,EAAEC,IAAIqpI,EAAQ2b,WAAW,SAASjlJ,EAAEC,GAAG,OAAOu/J,IAAIva,WAAWjlJ,EAAEC,IAAIqpI,EAAQuuC,cAAc,aAAavuC,EAAQ+B,UAAU,SAASrrI,EAAEC,GAAG,OAAOu/J,IAAIn0B,UAAUrrI,EAAEC,IAAIqpI,EAAQwuC,oBAAoB,SAAS93K,EAAEC,EAAEC,GAAG,OAAOs/J,IAAIsY,oBAAoB93K,EAAEC,EAAEC,IAC9copI,EAAQkd,gBAAgB,SAASxmJ,EAAEC,GAAG,OAAOu/J,IAAIhZ,gBAAgBxmJ,EAAEC,IAAIqpI,EAAQ+D,QAAQ,SAASrtI,EAAEC,GAAG,OAAOu/J,IAAInyB,QAAQrtI,EAAEC,IAAIqpI,EAAQod,WAAW,SAAS1mJ,EAAEC,EAAEC,GAAG,OAAOs/J,IAAI9Y,WAAW1mJ,EAAEC,EAAEC,IAAIopI,EAAQuD,OAAO,SAAS7sI,GAAG,OAAOw/J,IAAI3yB,OAAO7sI,IAAIspI,EAAQqD,SAAS,SAAS3sI,GAAG,OAAOw/J,IAAI7yB,SAAS3sI,IAAIspI,EAAQ9+H,QAAQ,U,6BCXxS,IAAIy0J,EAAG11B,EAAQ,GAASpsI,EAAEosI,EAAQ,IAAiBjjI,EAAEijI,EAAQ,IAAa,SAASjsI,EAAE0C,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAErS,UAAU8N,OAAOuE,IAAID,GAAG,WAAWm4J,mBAAmBvqK,UAAUqS,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,iHAAiH,IAAIg/J,EAAG,MAAM99J,MAAM7D,EAAE,MAAM,IAAI4hK,EAAG,IAAIl4D,IAAIk3D,EAAG,GAAG,SAASK,EAAGv+J,EAAEC,GAAGu+J,EAAGx+J,EAAEC,GAAGu+J,EAAGx+J,EAAE,UAAUC,GAC3e,SAASu+J,EAAGx+J,EAAEC,GAAW,IAARi+J,EAAGl+J,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAEtE,OAAOqE,IAAIk/J,EAAGnoJ,IAAI9W,EAAED,IACzD,IAAIy+J,IAAK,qBAAqB16E,QAAQ,qBAAqBA,OAAO57E,UAAU,qBAAqB47E,OAAO57E,SAASshJ,eAAemV,EAAG,8VAA8VC,EAAG5gK,OAAOgF,UAAU03I,eACrfokB,EAAG,GAAGC,EAAG,GAC+M,SAASh5D,EAAEhmG,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,EAAEC,GAAG/X,KAAKoqL,gBAAgB,IAAI93K,GAAG,IAAIA,GAAG,IAAIA,EAAEtS,KAAKqqL,cAAcxyK,EAAE7X,KAAKsqL,mBAAmBv2K,EAAE/T,KAAKuqL,gBAAgBh4K,EAAEvS,KAAKqlH,aAAahzG,EAAErS,KAAKiN,KAAKqF,EAAEtS,KAAKwqL,YAAY1yK,EAAE9X,KAAKyqL,kBAAkB1yK,EAAE,IAAI44J,EAAE,GACnb,uIAAuI9tG,MAAM,KAAKwjB,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeg0E,SAAQ,SAASh0E,GAAG,IAAIC,EAAED,EAAE,GAAGs+J,EAAEr+J,GAAG,IAAI+lG,EAAE/lG,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAASg0E,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAEizB,cAAc,MAAK,GAAG,MACve,CAAC,cAAc,4BAA4B,YAAY,iBAAiB+gD,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,8OAA8OwwD,MAAM,KAAKwjB,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAEizB,cAAc,MAAK,GAAG,MACrb,CAAC,UAAU,WAAW,QAAQ,YAAY+gD,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,UAAU,YAAYg0E,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQg0E,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,UAAU,SAASg0E,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAEizB,cAAc,MAAK,GAAG,MAAM,IAAIssI,EAAG,gBAAgB,SAAS8Y,EAAGr4K,GAAG,OAAOA,EAAE,GAAGxD,cAI3Y,SAASkV,EAAG1R,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE48J,EAAE3jB,eAAe16I,GAAGq+J,EAAEr+J,GAAG,MAAW,OAAOyB,EAAE,IAAIA,EAAE9G,MAAK4K,IAAO,EAAEvF,EAAEtE,SAAS,MAAMsE,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYD,EAAEC,EAAEC,EAAEsF,GAAG,GAAG,OAAOvF,GAAG,qBAAqBA,GADwE,SAAYD,EAAEC,EAAEC,EAAEsF,GAAG,GAAG,OAAOtF,GAAG,IAAIA,EAAEtF,KAAK,OAAM,EAAG,cAAcqF,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGuF,IAAc,OAAOtF,GAASA,EAAE63K,gBAAmD,WAAnC/3K,EAAEA,EAAEizB,cAAcz3B,MAAM,EAAE,KAAsB,UAAUwE,GAAE,QAAQ,OAAM,GAC/To/J,CAAGp/J,EAAEC,EAAEC,EAAEsF,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOtF,EAAE,OAAOA,EAAEtF,MAAM,KAAK,EAAE,OAAOqF,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO83B,MAAM93B,GAAG,KAAK,EAAE,OAAO83B,MAAM93B,IAAI,EAAEA,EAAE,OAAM,EAOrDq/J,CAAGr/J,EAAEC,EAAEwB,EAAE8D,KAAKtF,EAAE,MAAMsF,GAAG,OAAO9D,EARpL,SAAY1B,GAAG,QAAG6+J,EAAGjjK,KAAKojK,EAAGh/J,KAAe6+J,EAAGjjK,KAAKmjK,EAAG/+J,KAAe4+J,EAAGt2J,KAAKtI,GAAUg/J,EAAGh/J,IAAG,GAAG++J,EAAG/+J,IAAG,GAAS,IAQsEm/J,CAAGl/J,KAAK,OAAOC,EAAEF,EAAE+kI,gBAAgB9kI,GAAGD,EAAE03B,aAAaz3B,EAAE,GAAGC,IAAIwB,EAAEw2K,gBAAgBl4K,EAAE0B,EAAEsxG,cAAc,OAAO9yG,EAAE,IAAIwB,EAAE9G,MAAQ,GAAGsF,GAAGD,EAAEyB,EAAEs2K,cAAcxyK,EAAE9D,EAAEu2K,mBAAmB,OAAO/3K,EAAEF,EAAE+kI,gBAAgB9kI,IAAaC,EAAE,KAAXwB,EAAEA,EAAE9G,OAAc,IAAI8G,IAAG,IAAKxB,EAAE,GAAG,GAAGA,EAAEsF,EAAExF,EAAEs4K,eAAe9yK,EAAEvF,EAAEC,GAAGF,EAAE03B,aAAaz3B,EAAEC,MAH5d,0jCAA0jCswD,MAAM,KAAKwjB,SAAQ,SAASh0E,GAAG,IAAIC,EAAED,EAAEmxD,QAAQouG,EACzmC8Y,GAAI/Z,EAAEr+J,GAAG,IAAI+lG,EAAE/lG,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,MAAM,2EAA2EwwD,MAAM,KAAKwjB,SAAQ,SAASh0E,GAAG,IAAIC,EAAED,EAAEmxD,QAAQouG,EAAG8Y,GAAI/Z,EAAEr+J,GAAG,IAAI+lG,EAAE/lG,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,MAAM,CAAC,WAAW,WAAW,aAAag0E,SAAQ,SAASh0E,GAAG,IAAIC,EAAED,EAAEmxD,QAAQouG,EAAG8Y,GAAI/Z,EAAEr+J,GAAG,IAAI+lG,EAAE/lG,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,MAAM,CAAC,WAAW,eAAeg0E,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAEizB,cAAc,MAAK,GAAG,MAC/cqrI,EAAEia,UAAU,IAAIvyE,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAchyB,SAAQ,SAASh0E,GAAGs+J,EAAEt+J,GAAG,IAAIgmG,EAAEhmG,EAAE,GAAE,EAAGA,EAAEizB,cAAc,MAAK,GAAG,MAEzL,IAAIulJ,EAAGvZ,EAAGgY,mDAAmDwB,EAAG,MAAMC,EAAG,MAAMxuB,EAAG,MAAMyuB,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAChN,GAAG,oBAAoBz2K,QAAQA,OAAO4yK,IAAI,CAAC,IAAIhX,EAAE57J,OAAO4yK,IAAI8C,EAAG9Z,EAAE,iBAAiB+Z,EAAG/Z,EAAE,gBAAgBzU,EAAGyU,EAAE,kBAAkBga,EAAGha,EAAE,qBAAqBia,EAAGja,EAAE,kBAAkBka,EAAGla,EAAE,kBAAkBma,EAAGna,EAAE,iBAAiBoa,EAAGpa,EAAE,qBAAqBqa,EAAGra,EAAE,kBAAkBsa,EAAGta,EAAE,uBAAuBua,EAAGva,EAAE,cAAcwa,EAAGxa,EAAE,cAAcya,EAAGza,EAAE,eAAeA,EAAE,eAAe0a,EAAG1a,EAAE,mBAAmB2a,EAAG3a,EAAE,0BAA0B4a,EAAG5a,EAAE,mBAAmB6a,EAAG7a,EAAE,uBACxc,IAAmL8a,EAA/KC,EAAG,oBAAoB32K,QAAQA,OAAOC,SAAS,SAAS22K,EAAG35K,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE05K,GAAI15K,EAAE05K,IAAK15K,EAAE,eAA0CA,EAAE,KAAY,SAAS45K,EAAG55K,GAAG,QAAG,IAASy5K,EAAG,IAAI,MAAMt4K,QAAS,MAAMjB,GAAG,IAAID,EAAEC,EAAE25K,MAAMtpH,OAAOvB,MAAM,gBAAgByqH,EAAGx5K,GAAGA,EAAE,IAAI,GAAG,MAAM,KAAKw5K,EAAGz5K,EAAE,IAAI85K,GAAG,EACjU,SAASC,EAAG/5K,EAAEC,GAAG,IAAID,GAAG85K,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI55K,EAAEiB,MAAM64K,kBAAkB74K,MAAM64K,uBAAkB,EAAO,IAAI,GAAG/5K,EAAE,GAAGA,EAAE,WAAW,MAAMkB,SAAUlD,OAAO6L,eAAe7J,EAAEgD,UAAU,QAAQ,CAACnC,IAAI,WAAW,MAAMK,WAAY,kBAAkBioI,SAASA,QAAQpJ,UAAU,CAAC,IAAIoJ,QAAQpJ,UAAU//H,EAAE,IAAI,MAAMiiE,GAAG,IAAI18D,EAAE08D,EAAEknE,QAAQpJ,UAAUhgI,EAAE,GAAGC,OAAO,CAAC,IAAIA,EAAErE,OAAO,MAAMsmE,GAAG18D,EAAE08D,EAAEliE,EAAEpE,KAAKqE,EAAEgD,eAAe,CAAC,IAAI,MAAM9B,QAAS,MAAM+gE,GAAG18D,EAAE08D,EAAEliE,KAAK,MAAMkiE,GAAG,GAAGA,GAAG18D,GAAG,kBAAkB08D,EAAE23G,MAAM,CAAC,IAAI,IAAIn4K,EAAEwgE,EAAE23G,MAAMrpH,MAAM,MACnf/qD,EAAED,EAAEq0K,MAAMrpH,MAAM,MAAM9qD,EAAEhE,EAAE/F,OAAO,EAAEgK,EAAEF,EAAE9J,OAAO,EAAE,GAAG+J,GAAG,GAAGC,GAAGjE,EAAEgE,KAAKD,EAAEE,IAAIA,IAAI,KAAK,GAAGD,GAAG,GAAGC,EAAED,IAAIC,IAAI,GAAGjE,EAAEgE,KAAKD,EAAEE,GAAG,CAAC,GAAG,IAAID,GAAG,IAAIC,EAAG,GAAG,GAAGD,IAAQ,IAAJC,GAASjE,EAAEgE,KAAKD,EAAEE,GAAG,MAAM,KAAKjE,EAAEgE,GAAGyrD,QAAQ,WAAW,cAAc,GAAGzrD,GAAG,GAAGC,GAAG,QAD3H,QAC2Im0K,GAAG,EAAG34K,MAAM64K,kBAAkB95K,EAAE,OAAOF,EAAEA,EAAEA,EAAE2vJ,aAAa3vJ,EAAEkI,KAAK,IAAI0xK,EAAG55K,GAAG,GAC7T,SAASi6K,EAAGj6K,GAAG,OAAOA,EAAEk6K,KAAK,KAAK,EAAE,OAAON,EAAG55K,EAAEpF,MAAM,KAAK,GAAG,OAAOg/K,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO55K,EAAE+5K,EAAG/5K,EAAEpF,MAAK,GAAM,KAAK,GAAG,OAAOoF,EAAE+5K,EAAG/5K,EAAEpF,KAAKqoC,QAAO,GAAM,KAAK,GAAG,OAAOjjC,EAAE+5K,EAAG/5K,EAAEpF,KAAKu/K,SAAQ,GAAM,KAAK,EAAE,OAAOn6K,EAAE+5K,EAAG/5K,EAAEpF,MAAK,GAAM,QAAQ,MAAM,IAC9T,SAASw/K,EAAGp6K,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE2vJ,aAAa3vJ,EAAEkI,MAAM,KAAK,GAAG,kBAAkBlI,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKkqJ,EAAG,MAAM,WAAW,KAAKwuB,EAAG,MAAM,SAAS,KAAKE,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBj5K,EAAE,OAAOA,EAAEq2K,UAAU,KAAKyC,EAAG,OAAO94K,EAAE2vJ,aAAa,WAAW,YAAY,KAAKkpB,EAAG,OAAO74K,EAAEg7E,SAAS20E,aAAa,WAAW,YAAY,KAAKopB,EAAG,IAAI94K,EAAED,EAAEijC,OACnd,OAD0dhjC,EAAEA,EAAE0vJ,aAAa1vJ,EAAEiI,MAAM,GAC5elI,EAAE2vJ,cAAc,KAAK1vJ,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAKi5K,EAAG,OAAOkB,EAAGp6K,EAAEpF,MAAM,KAAKw+K,EAAG,OAAOgB,EAAGp6K,EAAEm6K,SAAS,KAAKhB,EAAGl5K,EAAED,EAAE03K,SAAS13K,EAAEA,EAAE23K,MAAM,IAAI,OAAOyC,EAAGp6K,EAAEC,IAAI,MAAMC,KAAK,OAAO,KAAK,SAASm6K,EAAGr6K,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAAI,SAASs6K,EAAGt6K,GAAG,IAAIC,EAAED,EAAEpF,KAAK,OAAOoF,EAAEA,EAAEgpH,WAAW,UAAUhpH,EAAEizB,gBAAgB,aAAahzB,GAAG,UAAUA,GAE1Z,SAASs6K,EAAGv6K,GAAGA,EAAEw6K,gBAAgBx6K,EAAEw6K,cADvD,SAAYx6K,GAAG,IAAIC,EAAEq6K,EAAGt6K,GAAG,UAAU,QAAQE,EAAEjC,OAAO6rI,yBAAyB9pI,EAAEoB,YAAY6B,UAAUhD,GAAGuF,EAAE,GAAGxF,EAAEC,GAAG,IAAID,EAAE26I,eAAe16I,IAAI,qBAAqBC,GAAG,oBAAoBA,EAAEunC,KAAK,oBAAoBvnC,EAAEY,IAAI,CAAC,IAAIY,EAAExB,EAAEunC,IAAIhiC,EAAEvF,EAAEY,IAAiL,OAA7K7C,OAAO6L,eAAe9J,EAAEC,EAAE,CAAC8jB,cAAa,EAAG0jB,IAAI,WAAW,OAAO/lC,EAAE9F,KAAKjO,OAAOmT,IAAI,SAASd,GAAGwF,EAAE,GAAGxF,EAAEyF,EAAE7J,KAAKjO,KAAKqS,MAAM/B,OAAO6L,eAAe9J,EAAEC,EAAE,CAAC+jB,WAAW9jB,EAAE8jB,aAAmB,CAACkjG,SAAS,WAAW,OAAO1hH,GAAGyiD,SAAS,SAASjoD,GAAGwF,EAAE,GAAGxF,GAAGy6K,aAAa,WAAWz6K,EAAEw6K,cACxf,YAAYx6K,EAAEC,MAAuDy6K,CAAG16K,IAAI,SAAS26K,EAAG36K,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEw6K,cAAc,IAAIv6K,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEinH,WAAe1hH,EAAE,GAAqD,OAAlDxF,IAAIwF,EAAE80K,EAAGt6K,GAAGA,EAAE46K,QAAQ,OAAO,QAAQ56K,EAAE7S,QAAO6S,EAAEwF,KAAatF,IAAGD,EAAEgoD,SAASjoD,IAAG,GAAO,SAAS66K,EAAG76K,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqBmI,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOnI,EAAE86K,eAAe96K,EAAE2rI,KAAK,MAAM1rI,GAAG,OAAOD,EAAE2rI,MAC/Z,SAASovC,EAAG/6K,EAAEC,GAAG,IAAIC,EAAED,EAAE26K,QAAQ,OAAOz9K,EAAE,GAAG8C,EAAE,CAAC+6K,oBAAe,EAAOjlB,kBAAa,EAAO5oK,WAAM,EAAOytL,QAAQ,MAAM16K,EAAEA,EAAEF,EAAEi7K,cAAcC,iBAAiB,SAASC,GAAGn7K,EAAEC,GAAG,IAAIC,EAAE,MAAMD,EAAE81J,aAAa,GAAG91J,EAAE81J,aAAavwJ,EAAE,MAAMvF,EAAE26K,QAAQ36K,EAAE26K,QAAQ36K,EAAE+6K,eAAe96K,EAAEm6K,EAAG,MAAMp6K,EAAE9S,MAAM8S,EAAE9S,MAAM+S,GAAGF,EAAEi7K,cAAc,CAACC,eAAe11K,EAAE41K,aAAal7K,EAAEm7K,WAAW,aAAap7K,EAAErF,MAAM,UAAUqF,EAAErF,KAAK,MAAMqF,EAAE26K,QAAQ,MAAM36K,EAAE9S,OAAO,SAASmuL,GAAGt7K,EAAEC,GAAe,OAAZA,EAAEA,EAAE26K,UAAiBlpK,EAAG1R,EAAE,UAAUC,GAAE,GAC3d,SAASg6B,GAAGj6B,EAAEC,GAAGq7K,GAAGt7K,EAAEC,GAAG,IAAIC,EAAEm6K,EAAGp6K,EAAE9S,OAAOqY,EAAEvF,EAAErF,KAAK,GAAG,MAAMsF,EAAK,WAAWsF,GAAM,IAAItF,GAAG,KAAKF,EAAE7S,OAAO6S,EAAE7S,OAAO+S,KAAEF,EAAE7S,MAAM,GAAG+S,GAAOF,EAAE7S,QAAQ,GAAG+S,IAAIF,EAAE7S,MAAM,GAAG+S,QAAQ,GAAG,WAAWsF,GAAG,UAAUA,EAA8B,YAA3BxF,EAAE+kI,gBAAgB,SAAgB9kI,EAAE06I,eAAe,SAAS4gC,GAAGv7K,EAAEC,EAAErF,KAAKsF,GAAGD,EAAE06I,eAAe,iBAAiB4gC,GAAGv7K,EAAEC,EAAErF,KAAKy/K,EAAGp6K,EAAE81J,eAAe,MAAM91J,EAAE26K,SAAS,MAAM36K,EAAE+6K,iBAAiBh7K,EAAEg7K,iBAAiB/6K,EAAE+6K,gBACnZ,SAAShhJ,GAAGh6B,EAAEC,EAAEC,GAAG,GAAGD,EAAE06I,eAAe,UAAU16I,EAAE06I,eAAe,gBAAgB,CAAC,IAAIn1I,EAAEvF,EAAErF,KAAK,KAAK,WAAW4K,GAAG,UAAUA,QAAG,IAASvF,EAAE9S,OAAO,OAAO8S,EAAE9S,OAAO,OAAO8S,EAAE,GAAGD,EAAEi7K,cAAcG,aAAal7K,GAAGD,IAAID,EAAE7S,QAAQ6S,EAAE7S,MAAM8S,GAAGD,EAAE+1J,aAAa91J,EAAW,MAATC,EAAEF,EAAEkI,QAAclI,EAAEkI,KAAK,IAAIlI,EAAEg7K,iBAAiBh7K,EAAEi7K,cAAcC,eAAe,KAAKh7K,IAAIF,EAAEkI,KAAKhI,GACvV,SAASq7K,GAAGv7K,EAAEC,EAAEC,GAAM,WAAWD,GAAG46K,EAAG76K,EAAEkmK,iBAAiBlmK,IAAE,MAAME,EAAEF,EAAE+1J,aAAa,GAAG/1J,EAAEi7K,cAAcG,aAAap7K,EAAE+1J,eAAe,GAAG71J,IAAIF,EAAE+1J,aAAa,GAAG71J,IAAwF,SAASs7K,GAAGx7K,EAAEC,GAA6D,OAA1DD,EAAE7C,EAAE,CAAC0a,cAAS,GAAQ5X,IAAMA,EAAlI,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApDg/J,EAAG6X,SAAS9iG,QAAQh0E,GAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,MAAYC,EAAiDw7K,CAAGx7K,EAAE4X,aAAU7X,EAAE6X,SAAS5X,GAASD,EACvU,SAAS07K,GAAG17K,EAAEC,EAAEC,EAAEsF,GAAe,GAAZxF,EAAEA,EAAE2N,QAAW1N,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIyB,EAAE,EAAEA,EAAExB,EAAEvE,OAAO+F,IAAIzB,EAAE,IAAIC,EAAEwB,KAAI,EAAG,IAAIxB,EAAE,EAAEA,EAAEF,EAAErE,OAAOuE,IAAIwB,EAAEzB,EAAE06I,eAAe,IAAI36I,EAAEE,GAAG/S,OAAO6S,EAAEE,GAAGy7K,WAAWj6K,IAAI1B,EAAEE,GAAGy7K,SAASj6K,GAAGA,GAAG8D,IAAIxF,EAAEE,GAAG07K,iBAAgB,OAAQ,CAAmB,IAAlB17K,EAAE,GAAGm6K,EAAGn6K,GAAGD,EAAE,KAASyB,EAAE,EAAEA,EAAE1B,EAAErE,OAAO+F,IAAI,CAAC,GAAG1B,EAAE0B,GAAGvU,QAAQ+S,EAAiD,OAA9CF,EAAE0B,GAAGi6K,UAAS,OAAGn2K,IAAIxF,EAAE0B,GAAGk6K,iBAAgB,IAAW,OAAO37K,GAAGD,EAAE0B,GAAGm6K,WAAW57K,EAAED,EAAE0B,IAAI,OAAOzB,IAAIA,EAAE07K,UAAS,IACpY,SAASG,GAAG97K,EAAEC,GAAG,GAAG,MAAMA,EAAE87K,wBAAwB,MAAM56K,MAAM7D,EAAE,KAAK,OAAOH,EAAE,GAAG8C,EAAE,CAAC9S,WAAM,EAAO4oK,kBAAa,EAAOl+I,SAAS,GAAG7X,EAAEi7K,cAAcG,eAAe,SAASY,GAAGh8K,EAAEC,GAAG,IAAIC,EAAED,EAAE9S,MAAM,GAAG,MAAM+S,EAAE,CAA+B,GAA9BA,EAAED,EAAE4X,SAAS5X,EAAEA,EAAE81J,aAAgB,MAAM71J,EAAE,CAAC,GAAG,MAAMD,EAAE,MAAMkB,MAAM7D,EAAE,KAAK,GAAGiO,MAAMC,QAAQtL,GAAG,CAAC,KAAK,GAAGA,EAAEvE,QAAQ,MAAMwF,MAAM7D,EAAE,KAAK4C,EAAEA,EAAE,GAAGD,EAAEC,EAAE,MAAMD,IAAIA,EAAE,IAAIC,EAAED,EAAED,EAAEi7K,cAAc,CAACG,aAAaf,EAAGn6K,IAC/Y,SAASwmF,GAAG1mF,EAAEC,GAAG,IAAIC,EAAEm6K,EAAGp6K,EAAE9S,OAAOqY,EAAE60K,EAAGp6K,EAAE81J,cAAc,MAAM71J,KAAIA,EAAE,GAAGA,KAAMF,EAAE7S,QAAQ6S,EAAE7S,MAAM+S,GAAG,MAAMD,EAAE81J,cAAc/1J,EAAE+1J,eAAe71J,IAAIF,EAAE+1J,aAAa71J,IAAI,MAAMsF,IAAIxF,EAAE+1J,aAAa,GAAGvwJ,GAAG,SAASy2K,GAAGj8K,GAAG,IAAIC,EAAED,EAAE8qK,YAAY7qK,IAAID,EAAEi7K,cAAcG,cAAc,KAAKn7K,GAAG,OAAOA,IAAID,EAAE7S,MAAM8S,GAAG,IAAIi8K,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAGn8K,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAASo8K,GAAGp8K,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAEm8K,GAAGl8K,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,EAC3U,IAAIq8K,GAAer8K,GAAZs8K,IAAYt8K,GAAsJ,SAASA,EAAEC,GAAG,GAAGD,EAAEu8K,eAAeL,IAAQ,cAAcl8K,EAAEA,EAAEw8K,UAAUv8K,MAAM,CAA2F,KAA1Fo8K,GAAGA,IAAIl0K,SAASshJ,cAAc,QAAU+yB,UAAU,QAAQv8K,EAAE8nJ,UAAU5rJ,WAAW,SAAa8D,EAAEo8K,GAAGI,WAAWz8K,EAAEy8K,YAAYz8K,EAAEg9I,YAAYh9I,EAAEy8K,YAAY,KAAKx8K,EAAEw8K,YAAYz8K,EAAEo8I,YAAYn8I,EAAEw8K,cAArZ,qBAAqBC,OAAOA,MAAMC,wBAAwB,SAAS18K,EAAEC,EAAEsF,EAAE9D,GAAGg7K,MAAMC,yBAAwB,WAAW,OAAO38K,GAAEC,EAAEC,OAAUF,IACtK,SAAS48K,GAAG58K,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEF,EAAEy8K,WAAW,GAAGv8K,GAAGA,IAAIF,EAAE68K,WAAW,IAAI38K,EAAE48K,SAAwB,YAAd58K,EAAE68K,UAAU98K,GAAUD,EAAE8qK,YAAY7qK,EACrH,IAAIkR,GAAG,CAACyuJ,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGsc,UAAS,EAAGrc,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGK,YAAW,EAAG0b,WAAU,EAAGzb,YAAW,EAAGl2I,SAAQ,EAAGnrB,OAAM,EAAGshK,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAG/gI,MAAK,EAAGihI,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAI6a,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGn9K,EAAEC,EAAEC,GAAG,OAAO,MAAMD,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGC,GAAG,kBAAkBD,GAAG,IAAIA,GAAGkR,GAAGwpI,eAAe36I,IAAImR,GAAGnR,IAAI,GAAGC,GAAGswD,OAAOtwD,EAAE,KAC9Z,SAASm9K,GAAGp9K,EAAEC,GAAa,IAAI,IAAIC,KAAlBF,EAAEA,EAAEuyB,MAAmBtyB,EAAE,GAAGA,EAAE06I,eAAez6I,GAAG,CAAC,IAAIsF,EAAE,IAAItF,EAAElF,QAAQ,MAAM0G,EAAEy7K,GAAGj9K,EAAED,EAAEC,GAAGsF,GAAG,UAAUtF,IAAIA,EAAE,YAAYsF,EAAExF,EAAEq9K,YAAYn9K,EAAEwB,GAAG1B,EAAEE,GAAGwB,GADTzD,OAAO+8B,KAAK7pB,IAAI6iE,SAAQ,SAASh0E,GAAGk9K,GAAGlpG,SAAQ,SAAS/zE,GAAGA,EAAEA,EAAED,EAAE+yB,OAAO,GAAGv2B,cAAcwD,EAAEgrH,UAAU,GAAG75G,GAAGlR,GAAGkR,GAAGnR,SACrG,IAAIs9K,GAAGngL,EAAE,CAACogL,UAAS,GAAI,CAAC9iF,MAAK,EAAG2J,MAAK,EAAGo5E,IAAG,EAAGr6H,KAAI,EAAGs6H,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAG5jC,OAAM,EAAG6jC,QAAO,EAAGC,MAAK,EAAG/yK,MAAK,EAAGgzK,OAAM,EAAGjzK,QAAO,EAAGy/F,OAAM,EAAGyzE,KAAI,IAClT,SAAS1zJ,GAAGrqB,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAGq9K,GAAGt9K,KAAK,MAAMC,EAAE4X,UAAU,MAAM5X,EAAE87K,yBAAyB,MAAM56K,MAAM7D,EAAE,IAAI0C,IAAI,GAAG,MAAMC,EAAE87K,wBAAwB,CAAC,GAAG,MAAM97K,EAAE4X,SAAS,MAAM1W,MAAM7D,EAAE,KAAK,GAAK,kBAAkB2C,EAAE87K,2BAAyB,WAAW97K,EAAE87K,yBAAyB,MAAM56K,MAAM7D,EAAE,KAAM,GAAG,MAAM2C,EAAEsyB,OAAO,kBAAkBtyB,EAAEsyB,MAAM,MAAMpxB,MAAM7D,EAAE,MAC5V,SAAS0gL,GAAGh+K,EAAEC,GAAG,IAAI,IAAID,EAAEhF,QAAQ,KAAK,MAAM,kBAAkBiF,EAAE+tI,GAAG,OAAOhuI,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAAI,SAASi+K,GAAGj+K,GAA6F,OAA1FA,EAAEA,EAAE1E,QAAQ0E,EAAEk+K,YAAYn6F,QAASo6F,0BAA0Bn+K,EAAEA,EAAEm+K,yBAAgC,IAAIn+K,EAAE88K,SAAS98K,EAAEspK,WAAWtpK,EAAE,IAAIo+K,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxb,SAASC,GAAGv+K,GAAG,GAAGA,EAAEw+K,GAAGx+K,GAAG,CAAC,GAAG,oBAAoBo+K,GAAG,MAAMj9K,MAAM7D,EAAE,MAAM,IAAI2C,EAAED,EAAEi8I,UAAUh8I,IAAIA,EAAEw+K,GAAGx+K,GAAGm+K,GAAGp+K,EAAEi8I,UAAUj8I,EAAEpF,KAAKqF,KAAK,SAASy+K,GAAG1+K,GAAGq+K,GAAGC,GAAGA,GAAGrjL,KAAK+E,GAAGs+K,GAAG,CAACt+K,GAAGq+K,GAAGr+K,EAAE,SAAS2+K,KAAK,GAAGN,GAAG,CAAC,IAAIr+K,EAAEq+K,GAAGp+K,EAAEq+K,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGv+K,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAEtE,OAAOqE,IAAIu+K,GAAGt+K,EAAED,KAAK,SAAS4+K,GAAG5+K,EAAEC,GAAG,OAAOD,EAAEC,GAAG,SAAS4+K,GAAG7+K,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,OAAO1B,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,SAASo9K,MAAM,IAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAQ,OAAOb,IAAI,OAAOC,KAAGQ,KAAKH,MAE9Z,SAASQ,GAAGn/K,EAAEC,GAAG,IAAIC,EAAEF,EAAEi8I,UAAU,GAAG,OAAO/7I,EAAE,OAAO,KAAK,IAAIsF,EAAEi5K,GAAGv+K,GAAG,GAAG,OAAOsF,EAAE,OAAO,KAAKtF,EAAEsF,EAAEvF,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBuF,GAAGA,EAAEq2K,YAAqBr2K,IAAI,YAAbxF,EAAEA,EAAEpF,OAAuB,UAAUoF,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGwF,EAAE,MAAMxF,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGE,GAAG,oBACleA,EAAE,MAAMiB,MAAM7D,EAAE,IAAI2C,SAASC,IAAI,OAAOA,EAAE,IAAIk/K,IAAG,EAAG,GAAG3gB,EAAG,IAAI,IAAI4gB,GAAG,GAAGphL,OAAO6L,eAAeu1K,GAAG,UAAU,CAAC53I,IAAI,WAAW23I,IAAG,KAAMr7F,OAAO5kC,iBAAiB,OAAOkgI,GAAGA,IAAIt7F,OAAO/kC,oBAAoB,OAAOqgI,GAAGA,IAAI,MAAMr/K,IAAGo/K,IAAG,EAAG,SAASE,GAAGt/K,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,EAAEC,EAAEC,EAAEu8D,GAAG,IAAIxmE,EAAE6P,MAAMtI,UAAUzH,MAAMI,KAAK/N,UAAU,GAAG,IAAIoS,EAAEnS,MAAMoS,EAAExE,GAAG,MAAMwB,GAAGvP,KAAKsmH,QAAQ/2G,IAAI,IAAIqiL,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAAC1rE,QAAQ,SAASj0G,GAAGu/K,IAAG,EAAGC,GAAGx/K,IAAI,SAAS4/K,GAAG5/K,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,EAAEC,EAAEC,EAAEu8D,GAAGq9G,IAAG,EAAGC,GAAG,KAAKF,GAAGxxL,MAAM6xL,GAAG9xL,WACvV,SAASgyL,GAAG7/K,GAAG,IAAIC,EAAED,EAAEE,EAAEF,EAAE,GAAGA,EAAEk/I,UAAU,KAAKj/I,EAAE+7I,QAAQ/7I,EAAEA,EAAE+7I,WAAW,CAACh8I,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAASqxJ,SAAcnxJ,EAAED,EAAE+7I,QAAQh8I,EAAEC,EAAE+7I,aAAah8I,GAAG,OAAO,IAAIC,EAAEi6K,IAAIh6K,EAAE,KAAK,SAAS4/K,GAAG9/K,GAAG,GAAG,KAAKA,EAAEk6K,IAAI,CAAC,IAAIj6K,EAAED,EAAE+/K,cAAsE,GAAxD,OAAO9/K,IAAkB,QAAdD,EAAEA,EAAEk/I,aAAqBj/I,EAAED,EAAE+/K,gBAAmB,OAAO9/K,EAAE,OAAOA,EAAE+/K,WAAW,OAAO,KAAK,SAASphK,GAAG5e,GAAG,GAAG6/K,GAAG7/K,KAAKA,EAAE,MAAMmB,MAAM7D,EAAE,MAEpS,SAAS2iL,GAAGjgL,GAAW,KAARA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAEk/I,UAAU,IAAIj/I,EAAE,CAAS,GAAG,QAAXA,EAAE4/K,GAAG7/K,IAAe,MAAMmB,MAAM7D,EAAE,MAAM,OAAO2C,IAAID,EAAE,KAAKA,EAAE,IAAI,IAAIE,EAAEF,EAAEwF,EAAEvF,IAAI,CAAC,IAAIyB,EAAExB,EAAE87I,OAAO,GAAG,OAAOt6I,EAAE,MAAM,IAAI+D,EAAE/D,EAAEw9I,UAAU,GAAG,OAAOz5I,EAAE,CAAY,GAAG,QAAdD,EAAE9D,EAAEs6I,QAAmB,CAAC97I,EAAEsF,EAAE,SAAS,MAAM,GAAG9D,EAAE4mB,QAAQ7iB,EAAE6iB,MAAM,CAAC,IAAI7iB,EAAE/D,EAAE4mB,MAAM7iB,GAAG,CAAC,GAAGA,IAAIvF,EAAE,OAAO0e,GAAGld,GAAG1B,EAAE,GAAGyF,IAAID,EAAE,OAAOoZ,GAAGld,GAAGzB,EAAEwF,EAAEA,EAAEq3I,QAAQ,MAAM37I,MAAM7D,EAAE,MAAO,GAAG4C,EAAE87I,SAASx2I,EAAEw2I,OAAO97I,EAAEwB,EAAE8D,EAAEC,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGC,EAAEjE,EAAE4mB,MAAM3iB,GAAG,CAAC,GAAGA,IAAIzF,EAAE,CAACwF,GAAE,EAAGxF,EAAEwB,EAAE8D,EAAEC,EAAE,MAAM,GAAGE,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAE9D,EAAExB,EAAEuF,EAAE,MAAME,EAAEA,EAAEm3I,QAAQ,IAAIp3I,EAAE,CAAC,IAAIC,EAAEF,EAAE6iB,MAAM3iB,GAAG,CAAC,GAAGA,IAC5fzF,EAAE,CAACwF,GAAE,EAAGxF,EAAEuF,EAAED,EAAE9D,EAAE,MAAM,GAAGiE,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAEC,EAAEvF,EAAEwB,EAAE,MAAMiE,EAAEA,EAAEm3I,QAAQ,IAAIp3I,EAAE,MAAMvE,MAAM7D,EAAE,OAAQ,GAAG4C,EAAEg/I,YAAY15I,EAAE,MAAMrE,MAAM7D,EAAE,MAAO,GAAG,IAAI4C,EAAEg6K,IAAI,MAAM/4K,MAAM7D,EAAE,MAAM,OAAO4C,EAAE+7I,UAAU7pD,UAAUlyF,EAAEF,EAAEC,EAAmB6e,CAAG9e,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAEi6K,KAAK,IAAIj6K,EAAEi6K,IAAI,OAAOj6K,EAAE,GAAGA,EAAEqoB,MAAMroB,EAAEqoB,MAAM0zH,OAAO/7I,EAAEA,EAAEA,EAAEqoB,UAAU,CAAC,GAAGroB,IAAID,EAAE,MAAM,MAAMC,EAAE68I,SAAS,CAAC,IAAI78I,EAAE+7I,QAAQ/7I,EAAE+7I,SAASh8I,EAAE,OAAO,KAAKC,EAAEA,EAAE+7I,OAAO/7I,EAAE68I,QAAQd,OAAO/7I,EAAE+7I,OAAO/7I,EAAEA,EAAE68I,SAAS,OAAO,KAC5c,SAASojC,GAAGlgL,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAEk/I,UAAU,OAAOj/I,GAAG,CAAC,GAAGA,IAAID,GAAGC,IAAIC,EAAE,OAAM,EAAGD,EAAEA,EAAE+7I,OAAO,OAAM,EAAG,IAAImkC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIrtG,IAAIstG,GAAG,IAAIttG,IAAIutG,GAAG,GAAGC,GAAG,6PAA6PvwH,MAAM,KACrb,SAASwwH,GAAGhhL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,MAAM,CAACu/K,UAAUjhL,EAAEkhL,aAAajhL,EAAEkhL,iBAAmB,GAAFjhL,EAAK+xI,YAAYvwI,EAAE0/K,iBAAiB,CAAC57K,IAAI,SAAS67K,GAAGrhL,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAWygL,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGj5I,OAAO1nC,EAAE8vI,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqB8wC,GAAGl5I,OAAO1nC,EAAE8vI,YAC3Z,SAASuxC,GAAGthL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,OAAG,OAAOzF,GAAGA,EAAEiyI,cAAcxsI,GAASzF,EAAEghL,GAAG/gL,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,OAAOxF,IAAY,QAARA,EAAEu+K,GAAGv+K,KAAamgL,GAAGngL,IAAID,IAAEA,EAAEmhL,kBAAkB37K,EAAEvF,EAAED,EAAEohL,iBAAiB,OAAO1/K,IAAI,IAAIzB,EAAEjF,QAAQ0G,IAAIzB,EAAEhF,KAAKyG,GAAU1B,GAE9M,SAASiqB,GAAGjqB,GAAG,IAAIC,EAAEshL,GAAGvhL,EAAE1E,QAAQ,GAAG,OAAO2E,EAAE,CAAC,IAAIC,EAAE2/K,GAAG5/K,GAAG,GAAG,OAAOC,EAAE,GAAW,MAARD,EAAEC,EAAEg6K,MAAY,GAAW,QAARj6K,EAAE6/K,GAAG5/K,IAAmH,OAAtGF,EAAEihL,UAAUhhL,OAAEqgL,GAAGtgL,EAAEwhL,cAAa,WAAWl7K,EAAEm3I,yBAAyBz9I,EAAEo1I,UAAS,WAAWirC,GAAGngL,cAAoB,GAAG,IAAID,GAAGC,EAAE+7I,UAAUwlC,QAA8D,YAArDzhL,EAAEihL,UAAU,IAAI/gL,EAAEg6K,IAAIh6K,EAAE+7I,UAAUC,cAAc,MAAal8I,EAAEihL,UAAU,KAC1U,SAASS,GAAG1hL,GAAG,GAAG,OAAOA,EAAEihL,UAAU,OAAM,EAAG,IAAI,IAAIhhL,EAAED,EAAEohL,iBAAiB,EAAEnhL,EAAEtE,QAAQ,CAAC,IAAIuE,EAAEyhL,GAAG3hL,EAAEkhL,aAAalhL,EAAEmhL,iBAAiBlhL,EAAE,GAAGD,EAAEiyI,aAAa,GAAG,OAAO/xI,EAAE,OAAe,QAARD,EAAEu+K,GAAGt+K,KAAakgL,GAAGngL,GAAGD,EAAEihL,UAAU/gL,GAAE,EAAGD,EAAEu+E,QAAQ,OAAM,EAAG,SAASojG,GAAG5hL,EAAEC,EAAEC,GAAGwhL,GAAG1hL,IAAIE,EAAEynC,OAAO1nC,GACzQ,SAAS4hL,KAAK,IAAItB,IAAG,EAAG,EAAEC,GAAG7kL,QAAQ,CAAC,IAAIqE,EAAEwgL,GAAG,GAAG,GAAG,OAAOxgL,EAAEihL,UAAU,CAAmB,QAAlBjhL,EAAEw+K,GAAGx+K,EAAEihL,aAAqBd,GAAGngL,GAAG,MAAM,IAAI,IAAIC,EAAED,EAAEohL,iBAAiB,EAAEnhL,EAAEtE,QAAQ,CAAC,IAAIuE,EAAEyhL,GAAG3hL,EAAEkhL,aAAalhL,EAAEmhL,iBAAiBlhL,EAAE,GAAGD,EAAEiyI,aAAa,GAAG,OAAO/xI,EAAE,CAACF,EAAEihL,UAAU/gL,EAAE,MAAMD,EAAEu+E,QAAQ,OAAOx+E,EAAEihL,WAAWT,GAAGhiG,QAAQ,OAAOiiG,IAAIiB,GAAGjB,MAAMA,GAAG,MAAM,OAAOC,IAAIgB,GAAGhB,MAAMA,GAAG,MAAM,OAAOC,IAAIe,GAAGf,MAAMA,GAAG,MAAMC,GAAG5sG,QAAQ4tG,IAAIf,GAAG7sG,QAAQ4tG,IACrZ,SAASE,GAAG9hL,EAAEC,GAAGD,EAAEihL,YAAYhhL,IAAID,EAAEihL,UAAU,KAAKV,KAAKA,IAAG,EAAGj6K,EAAEy7K,0BAA0Bz7K,EAAE07K,wBAAwBH,MACrH,SAASI,GAAGjiL,GAAG,SAASC,EAAEA,GAAG,OAAO6hL,GAAG7hL,EAAED,GAAG,GAAG,EAAEwgL,GAAG7kL,OAAO,CAACmmL,GAAGtB,GAAG,GAAGxgL,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEsgL,GAAG7kL,OAAOuE,IAAI,CAAC,IAAIsF,EAAEg7K,GAAGtgL,GAAGsF,EAAEy7K,YAAYjhL,IAAIwF,EAAEy7K,UAAU,OAA+F,IAAxF,OAAOR,IAAIqB,GAAGrB,GAAGzgL,GAAG,OAAO0gL,IAAIoB,GAAGpB,GAAG1gL,GAAG,OAAO2gL,IAAImB,GAAGnB,GAAG3gL,GAAG4gL,GAAG5sG,QAAQ/zE,GAAG4gL,GAAG7sG,QAAQ/zE,GAAOC,EAAE,EAAEA,EAAE4gL,GAAGnlL,OAAOuE,KAAIsF,EAAEs7K,GAAG5gL,IAAK+gL,YAAYjhL,IAAIwF,EAAEy7K,UAAU,MAAM,KAAK,EAAEH,GAAGnlL,QAAiB,QAARuE,EAAE4gL,GAAG,IAAYG,WAAYh3J,GAAG/pB,GAAG,OAAOA,EAAE+gL,WAAWH,GAAGtiG,QAC/X,SAAS0jG,GAAGliL,EAAEC,GAAG,IAAIC,EAAE,GAAkF,OAA/EA,EAAEF,EAAEizB,eAAehzB,EAAEgzB,cAAc/yB,EAAE,SAASF,GAAG,SAASC,EAAEC,EAAE,MAAMF,GAAG,MAAMC,EAASC,EAAE,IAAIiiL,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,GAAGC,GAAG,GACnF,SAASC,GAAG1iL,GAAG,GAAGwiL,GAAGxiL,GAAG,OAAOwiL,GAAGxiL,GAAG,IAAImiL,GAAGniL,GAAG,OAAOA,EAAE,IAAYE,EAARD,EAAEkiL,GAAGniL,GAAK,IAAIE,KAAKD,EAAE,GAAGA,EAAE06I,eAAez6I,IAAIA,KAAKuiL,GAAG,OAAOD,GAAGxiL,GAAGC,EAAEC,GAAG,OAAOF,EAA9Xy+J,IAAKgkB,GAAGt6K,SAASshJ,cAAc,OAAOl3H,MAAM,mBAAmBwxD,gBAAgBo+F,GAAGC,aAAap6J,iBAAiBm6J,GAAGE,mBAAmBr6J,iBAAiBm6J,GAAGG,eAAet6J,WAAW,oBAAoB+7D,eAAeo+F,GAAGI,cAAc5L,YACxO,IAAIgM,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAIxvG,IAAIyvG,GAAG,IAAIzvG,IAAI0vG,GAAG,CAAC,QAAQ,QAAQN,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAC/e,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASI,GAAGljL,EAAEC,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAErE,OAAOuE,GAAG,EAAE,CAAC,IAAIsF,EAAExF,EAAEE,GAAGwB,EAAE1B,EAAEE,EAAE,GAAGwB,EAAE,MAAMA,EAAE,GAAGlF,cAAckF,EAAElG,MAAM,IAAIwnL,GAAGliL,IAAI0E,EAAEvF,GAAG8iL,GAAGjiL,IAAI0E,EAAE9D,GAAG68J,EAAG78J,EAAE,CAAC8D,MAA2B29K,EAAf78K,EAAEs3I,gBAAkB,IAAI2D,GAAE,EAC/X,SAAS6hC,GAAGpjL,GAAG,GAAG,KAAK,EAAEA,GAAG,OAAOuhJ,GAAE,GAAG,EAAE,GAAG,KAAK,EAAEvhJ,GAAG,OAAOuhJ,GAAE,GAAG,EAAE,GAAG,KAAK,EAAEvhJ,GAAG,OAAOuhJ,GAAE,GAAG,EAAE,IAAIthJ,EAAE,GAAGD,EAAE,OAAG,IAAIC,GAASshJ,GAAE,GAAGthJ,GAAK,KAAO,GAAFD,IAAauhJ,GAAE,GAAG,IAAc,KAAXthJ,EAAE,IAAID,IAAkBuhJ,GAAE,GAAGthJ,GAAK,KAAO,IAAFD,IAAcuhJ,GAAE,EAAE,KAAgB,KAAZthJ,EAAE,KAAKD,IAAkBuhJ,GAAE,EAAEthJ,GAAK,KAAO,KAAFD,IAAeuhJ,GAAE,EAAE,MAAoB,KAAfthJ,EAAE,QAAQD,IAAkBuhJ,GAAE,EAAEthJ,GAAkB,KAAhBA,EAAE,SAASD,IAAkBuhJ,GAAE,EAAEthJ,GAAO,SAAFD,GAAkBuhJ,GAAE,EAAE,UAAY,KAAO,UAAFvhJ,IAAoBuhJ,GAAE,EAAE,WAA2B,KAAjBthJ,EAAE,UAAUD,IAAkBuhJ,GAAE,EAAEthJ,GAAK,KAAK,WAAWD,IAAUuhJ,GAAE,EAAE,aACjfA,GAAE,EAASvhJ,GACX,SAASqjL,GAAGrjL,EAAEC,GAAG,IAAIC,EAAEF,EAAEsjL,aAAa,GAAG,IAAIpjL,EAAE,OAAOqhJ,GAAE,EAAE,IAAI/7I,EAAE,EAAE9D,EAAE,EAAE+D,EAAEzF,EAAEujL,aAAa79K,EAAE1F,EAAEwjL,eAAe79K,EAAE3F,EAAEyjL,YAAY,GAAG,IAAIh+K,EAAED,EAAEC,EAAE/D,EAAE6/I,GAAE,QAAQ,GAAiB,KAAd97I,EAAI,UAAFvF,GAAkB,CAAC,IAAIgiE,EAAEz8D,GAAGC,EAAE,IAAIw8D,GAAG18D,EAAE49K,GAAGlhH,GAAGxgE,EAAE6/I,IAAS,KAAL57I,GAAGF,KAAUD,EAAE49K,GAAGz9K,GAAGjE,EAAE6/I,SAAgB,KAAP97I,EAAEvF,GAAGwF,IAASF,EAAE49K,GAAG39K,GAAG/D,EAAE6/I,IAAG,IAAI57I,IAAIH,EAAE49K,GAAGz9K,GAAGjE,EAAE6/I,IAAG,GAAG,IAAI/7I,EAAE,OAAO,EAAqC,GAAxBA,EAAEtF,IAAI,GAAjBsF,EAAE,GAAGk+K,GAAGl+K,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAIvF,GAAGA,IAAIuF,GAAG,KAAKvF,EAAEyF,GAAG,CAAO,GAAN09K,GAAGnjL,GAAMyB,GAAG6/I,GAAE,OAAOthJ,EAAEshJ,GAAE7/I,EAAqB,GAAG,KAAtBzB,EAAED,EAAE2jL,gBAAwB,IAAI3jL,EAAEA,EAAE4jL,cAAc3jL,GAAGuF,EAAE,EAAEvF,GAAcyB,EAAE,IAAbxB,EAAE,GAAGwjL,GAAGzjL,IAAUuF,GAAGxF,EAAEE,GAAGD,IAAIyB,EAAE,OAAO8D,EAC1e,SAASq+K,GAAG7jL,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEsjL,cAAsCtjL,EAAI,WAAFA,EAAa,WAAW,EAAE,SAAS8jL,GAAG9jL,EAAEC,GAAG,OAAOD,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAE+jL,GAAG,IAAI9jL,IAAS6jL,GAAG,GAAG7jL,GAAGD,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAE+jL,GAAG,KAAK9jL,IAAS6jL,GAAG,EAAE7jL,GAAGD,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAE+jL,GAAG,MAAM9jL,MAA4B,KAAjBD,EAAE+jL,GAAG,SAAS9jL,MAAWD,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBC,EAAE8jL,GAAG,WAAW9jL,MAAWA,EAAE,WAAWA,EAAE,MAAMkB,MAAM7D,EAAE,IAAI0C,IAAK,SAAS+jL,GAAG/jL,GAAG,OAAOA,GAAGA,EAAE,SAASgkL,GAAGhkL,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAE,GAAGA,EAAEA,IAAID,EAAEhF,KAAK+E,GAAG,OAAOC,EACrd,SAASgkL,GAAGjkL,EAAEC,EAAEC,GAAGF,EAAEsjL,cAAcrjL,EAAE,IAAIuF,EAAEvF,EAAE,EAAED,EAAEwjL,gBAAgBh+K,EAAExF,EAAEyjL,aAAaj+K,GAAExF,EAAEA,EAAEkkL,YAAWjkL,EAAE,GAAGyjL,GAAGzjL,IAAQC,EAAE,IAAIwjL,GAAG3nL,KAAKooL,MAAMpoL,KAAKooL,MAAiC,SAAYnkL,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAI+e,GAAG/e,GAAGokL,GAAG,GAAG,GAAvErlK,GAAGhjB,KAAK6B,IAAIwmL,GAAGroL,KAAK8B,IAAqD,IAAIwmL,GAAG/9K,EAAEg+K,8BAA8BC,GAAGj+K,EAAEm3I,yBAAyB+mC,IAAG,EAAG,SAASC,GAAGzkL,EAAEC,EAAEC,EAAEsF,GAAGw5K,IAAIF,KAAK,IAAIp9K,EAAEgjL,GAAGj/K,EAAEu5K,GAAGA,IAAG,EAAG,IAAIH,GAAGn9K,EAAE1B,EAAEC,EAAEC,EAAEsF,GAAf,SAA2Bw5K,GAAGv5K,IAAIy5K,MAAM,SAASx5J,GAAG1lB,EAAEC,EAAEC,EAAEsF,GAAG++K,GAAGF,GAAGK,GAAGpnE,KAAK,KAAKt9G,EAAEC,EAAEC,EAAEsF,IACjb,SAASk/K,GAAG1kL,EAAEC,EAAEC,EAAEsF,GAAU,IAAI9D,EAAX,GAAG8iL,GAAU,IAAI9iL,EAAE,KAAO,EAAFzB,KAAO,EAAEugL,GAAG7kL,SAAS,EAAEolL,GAAG/lL,QAAQgF,GAAGA,EAAEghL,GAAG,KAAKhhL,EAAEC,EAAEC,EAAEsF,GAAGg7K,GAAGvlL,KAAK+E,OAAO,CAAC,IAAIyF,EAAEk8K,GAAG3hL,EAAEC,EAAEC,EAAEsF,GAAG,GAAG,OAAOC,EAAE/D,GAAG2/K,GAAGrhL,EAAEwF,OAAO,CAAC,GAAG9D,EAAE,CAAC,IAAI,EAAEq/K,GAAG/lL,QAAQgF,GAA+B,OAA3BA,EAAEghL,GAAGv7K,EAAEzF,EAAEC,EAAEC,EAAEsF,QAAGg7K,GAAGvlL,KAAK+E,GAAU,GAfhO,SAAYA,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,OAAOzB,GAAG,IAAK,UAAU,OAAOwgL,GAAGa,GAAGb,GAAGzgL,EAAEC,EAAEC,EAAEsF,EAAE9D,IAAG,EAAG,IAAK,YAAY,OAAOg/K,GAAGY,GAAGZ,GAAG1gL,EAAEC,EAAEC,EAAEsF,EAAE9D,IAAG,EAAG,IAAK,YAAY,OAAOi/K,GAAGW,GAAGX,GAAG3gL,EAAEC,EAAEC,EAAEsF,EAAE9D,IAAG,EAAG,IAAK,cAAc,IAAI+D,EAAE/D,EAAEquI,UAAkD,OAAxC6wC,GAAG9/K,IAAI2E,EAAE67K,GAAGV,GAAGn5I,IAAIhiC,IAAI,KAAKzF,EAAEC,EAAEC,EAAEsF,EAAE9D,KAAU,EAAG,IAAK,oBAAoB,OAAO+D,EAAE/D,EAAEquI,UAAU8wC,GAAG//K,IAAI2E,EAAE67K,GAAGT,GAAGp5I,IAAIhiC,IAAI,KAAKzF,EAAEC,EAAEC,EAAEsF,EAAE9D,KAAI,EAAG,OAAM,EAe9HijL,CAAGl/K,EAAEzF,EAAEC,EAAEC,EAAEsF,GAAG,OAAO67K,GAAGrhL,EAAEwF,GAAGo/K,GAAG5kL,EAAEC,EAAEuF,EAAE,KAAKtF,KAC9Q,SAASyhL,GAAG3hL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEu8K,GAAGz4K,GAAW,GAAG,QAAX9D,EAAE6/K,GAAG7/K,IAAe,CAAC,IAAI+D,EAAEo6K,GAAGn+K,GAAG,GAAG,OAAO+D,EAAE/D,EAAE,SAAS,CAAC,IAAIgE,EAAED,EAAEy0K,IAAI,GAAG,KAAKx0K,EAAE,CAAS,GAAG,QAAXhE,EAAEo+K,GAAGr6K,IAAe,OAAO/D,EAAEA,EAAE,UAAU,GAAG,IAAIgE,EAAE,CAAC,GAAGD,EAAEw2I,UAAUwlC,QAAQ,OAAO,IAAIh8K,EAAEy0K,IAAIz0K,EAAEw2I,UAAUC,cAAc,KAAKx6I,EAAE,UAAU+D,IAAI/D,IAAIA,EAAE,OAAqB,OAAdkjL,GAAG5kL,EAAEC,EAAEuF,EAAE9D,EAAExB,GAAU,KAAK,IAAI2kL,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACzT,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI/kL,EAAkBwF,EAAhBvF,EAAE6kL,GAAG5kL,EAAED,EAAEtE,OAAS+F,EAAE,UAAUmjL,GAAGA,GAAG13L,MAAM03L,GAAG/Z,YAAYrlK,EAAE/D,EAAE/F,OAAO,IAAIqE,EAAE,EAAEA,EAAEE,GAAGD,EAAED,KAAK0B,EAAE1B,GAAGA,KAAK,IAAI0F,EAAExF,EAAEF,EAAE,IAAIwF,EAAE,EAAEA,GAAGE,GAAGzF,EAAEC,EAAEsF,KAAK9D,EAAE+D,EAAED,GAAGA,KAAK,OAAOu/K,GAAGrjL,EAAElG,MAAMwE,EAAE,EAAEwF,EAAE,EAAEA,OAAE,GAAQ,SAASy/K,GAAGjlL,GAAG,IAAIC,EAAED,EAAEklL,QAA+E,MAAvE,aAAallL,EAAgB,KAAbA,EAAEA,EAAEmlL,WAAgB,KAAKllL,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EAAE,SAASolL,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EACjY,SAASC,GAAGtlL,GAAG,SAASC,EAAEA,EAAEuF,EAAE9D,EAAE+D,EAAEC,GAA6G,IAAI,IAAIxF,KAAlHvS,KAAK43L,WAAWtlL,EAAEtS,KAAK63L,YAAY9jL,EAAE/T,KAAKiN,KAAK4K,EAAE7X,KAAKskJ,YAAYxsI,EAAE9X,KAAK2N,OAAOoK,EAAE/X,KAAKokJ,cAAc,KAAkB/xI,EAAEA,EAAE26I,eAAez6I,KAAKD,EAAED,EAAEE,GAAGvS,KAAKuS,GAAGD,EAAEA,EAAEwF,GAAGA,EAAEvF,IAAgI,OAA5HvS,KAAK83L,oBAAoB,MAAMhgL,EAAEigL,iBAAiBjgL,EAAEigL,kBAAiB,IAAKjgL,EAAEkgL,aAAaP,GAAGC,GAAG13L,KAAKi4L,qBAAqBP,GAAU13L,KAC1E,OAD+EwP,EAAE8C,EAAEgD,UAAU,CAAC07E,eAAe,WAAWhxF,KAAK+3L,kBAAiB,EAAG,IAAI1lL,EAAErS,KAAKskJ,YAAYjyI,IAAIA,EAAE2+E,eAAe3+E,EAAE2+E,iBAAiB,mBAAmB3+E,EAAE2lL,cAC7e3lL,EAAE2lL,aAAY,GAAIh4L,KAAK83L,mBAAmBL,KAAKxzC,gBAAgB,WAAW,IAAI5xI,EAAErS,KAAKskJ,YAAYjyI,IAAIA,EAAE4xI,gBAAgB5xI,EAAE4xI,kBAAkB,mBAAmB5xI,EAAE6lL,eAAe7lL,EAAE6lL,cAAa,GAAIl4L,KAAKi4L,qBAAqBR,KAAKU,QAAQ,aAAaC,aAAaX,KAAYnlL,EAChR,IAAoL+lL,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAASvmL,GAAG,OAAOA,EAAEumL,WAAWnmE,KAAKL,OAAO2lE,iBAAiB,EAAEc,UAAU,GAAGC,GAAGnB,GAAGa,IAAIO,GAAGvpL,EAAE,GAAGgpL,GAAG,CAACplJ,KAAK,EAAEmlD,OAAO,IAAIygG,GAAGrB,GAAGoB,IAAaE,GAAGzpL,EAAE,GAAGupL,GAAG,CAACG,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAAS3nL,GAAG,YAAO,IAASA,EAAE2nL,cAAc3nL,EAAE4nL,cAAc5nL,EAAEk+K,WAAWl+K,EAAE6nL,UAAU7nL,EAAE4nL,YAAY5nL,EAAE2nL,eAAeG,UAAU,SAAS9nL,GAAG,MAAG,cAC3eA,EAASA,EAAE8nL,WAAU9nL,IAAIkmL,KAAKA,IAAI,cAAclmL,EAAEpF,MAAMorL,GAAGhmL,EAAE6mL,QAAQX,GAAGW,QAAQZ,GAAGjmL,EAAE8mL,QAAQZ,GAAGY,SAASb,GAAGD,GAAG,EAAEE,GAAGlmL,GAAUgmL,KAAI+B,UAAU,SAAS/nL,GAAG,MAAM,cAAcA,EAAEA,EAAE+nL,UAAU9B,MAAM+B,GAAG1C,GAAGsB,IAAiCqB,GAAG3C,GAA7BnoL,EAAE,GAAGypL,GAAG,CAACsB,aAAa,KAA4CC,GAAG7C,GAA9BnoL,EAAE,GAAGupL,GAAG,CAACiB,cAAc,KAA0ES,GAAG9C,GAA5DnoL,EAAE,GAAGgpL,GAAG,CAACkC,cAAc,EAAExoE,YAAY,EAAEyoE,cAAc,KAAsHC,GAAGjD,GAAxGnoL,EAAE,GAAGgpL,GAAG,CAACqC,cAAc,SAASxoL,GAAG,MAAM,kBAAkBA,EAAEA,EAAEwoL,cAAczkG,OAAOykG,kBAAgDC,GAAGnD,GAArBnoL,EAAE,GAAGgpL,GAAG,CAACl6K,KAAK,KAAcy8K,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAACC,EAAE,YAAYC,EAAE,MAAMC,GAAG,QAAQC,GAAG,QAAQC,GAAG,QAAQC,GAAG,UAAUC,GAAG,MAAMC,GAAG,QAAQC,GAAG,WAAWC,GAAG,SAASC,GAAG,IAAIC,GAAG,SAASC,GAAG,WAAWC,GAAG,MAAMC,GAAG,OAAOC,GAAG,YAAYC,GAAG,UAAUC,GAAG,aAAaC,GAAG,YAAYC,GAAG,SAASC,GAAG,SAASC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KACtfC,IAAI,KAAKC,IAAI,KAAKC,IAAI,MAAMC,IAAI,MAAMC,IAAI,MAAMC,IAAI,UAAUC,IAAI,aAAaC,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGjsL,GAAG,IAAIC,EAAEtS,KAAKskJ,YAAY,OAAOhyI,EAAEsnL,iBAAiBtnL,EAAEsnL,iBAAiBvnL,MAAIA,EAAE4rL,GAAG5rL,OAAMC,EAAED,GAAM,SAASwnL,KAAK,OAAOyE,GAC9R,IACiEC,GAAG5G,GAD7DnoL,EAAE,GAAGupL,GAAG,CAAC15L,IAAI,SAASgT,GAAG,GAAGA,EAAEhT,IAAI,CAAC,IAAIiT,EAAEyoL,GAAG1oL,EAAEhT,MAAMgT,EAAEhT,IAAI,GAAG,iBAAiBiT,EAAE,OAAOA,EAAE,MAAM,aAAaD,EAAEpF,KAAc,MAARoF,EAAEilL,GAAGjlL,IAAU,QAAQ28B,OAAOi+E,aAAa56G,GAAI,YAAYA,EAAEpF,MAAM,UAAUoF,EAAEpF,KAAK2uL,GAAGvpL,EAAEklL,UAAU,eAAe,IAAI3oB,KAAK,EAAEjiH,SAAS,EAAE6sI,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEp9K,OAAO,EAAEiiL,OAAO,EAAE5E,iBAAiBC,GAAGrC,SAAS,SAASnlL,GAAG,MAAM,aAAaA,EAAEpF,KAAKqqL,GAAGjlL,GAAG,GAAGklL,QAAQ,SAASllL,GAAG,MAAM,YAAYA,EAAEpF,MAAM,UAAUoF,EAAEpF,KAAKoF,EAAEklL,QAAQ,GAAGkH,MAAM,SAASpsL,GAAG,MAAM,aAC7eA,EAAEpF,KAAKqqL,GAAGjlL,GAAG,YAAYA,EAAEpF,MAAM,UAAUoF,EAAEpF,KAAKoF,EAAEklL,QAAQ,MAA4ImH,GAAG/G,GAA7HnoL,EAAE,GAAGypL,GAAG,CAAC72C,UAAU,EAAErnI,MAAM,EAAEC,OAAO,EAAE2jL,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAGvH,GAArHnoL,EAAE,GAAGupL,GAAG,CAACoG,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAE3F,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0EyF,GAAG3H,GAA3DnoL,EAAE,GAAGgpL,GAAG,CAACnzE,aAAa,EAAE6M,YAAY,EAAEyoE,cAAc,KAC/P4E,GAAG5H,GAD6QnoL,EAAE,GAAGypL,GAAG,CAACuG,OAAO,SAASntL,GAAG,MAAM,WAAWA,EAAEA,EAAEmtL,OAAO,gBAAgBntL,GAAGA,EAAEotL,YAAY,GAClfC,OAAO,SAASrtL,GAAG,MAAM,WAAWA,EAAEA,EAAEqtL,OAAO,gBAAgBrtL,GAAGA,EAAEstL,YAAY,eAAettL,GAAGA,EAAEutL,WAAW,GAAGC,OAAO,EAAEC,UAAU,KAAcC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAItpL,GAAGq6J,GAAI,qBAAqB16E,OAAO1/E,GAAG,KAAKo6J,GAAI,iBAAiBt2J,WAAW9D,GAAG8D,SAASwlL,cAAc,IAAInvK,GAAGigJ,GAAI,cAAc16E,SAAS1/E,GAAGqa,GAAG+/I,KAAMr6J,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIupL,GAAGjxJ,OAAOi+E,aAAa,IAAIizE,IAAG,EAC1W,SAASC,GAAG9tL,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAI0tL,GAAG1yL,QAAQiF,EAAEilL,SAAS,IAAK,UAAU,OAAO,MAAMjlL,EAAEilL,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,GAAI,SAAS6I,GAAG/tL,GAAc,MAAM,kBAAjBA,EAAEA,EAAEkmF,SAAkC,SAASlmF,EAAEA,EAAEiM,KAAK,KAAK,IAAI+hL,IAAG,EAE9Q,IAAIC,GAAG,CAACrgK,OAAM,EAAGsgK,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAG3xB,QAAO,EAAG4xB,UAAS,EAAG/uL,OAAM,EAAG+oJ,QAAO,EAAGimC,KAAI,EAAGl3E,MAAK,EAAGzwE,MAAK,EAAGt7B,KAAI,EAAGkjL,MAAK,GAAI,SAAS1qL,GAAG9D,GAAG,IAAIC,EAAED,GAAGA,EAAEgpH,UAAUhpH,EAAEgpH,SAAS/1F,cAAc,MAAM,UAAUhzB,IAAIguL,GAAGjuL,EAAEpF,MAAM,aAAaqF,EAAQ,SAASwuL,GAAGzuL,EAAEC,EAAEC,EAAEsF,GAAGk5K,GAAGl5K,GAAsB,GAAnBvF,EAAEyuL,GAAGzuL,EAAE,aAAgBtE,SAASuE,EAAE,IAAIumL,GAAG,WAAW,SAAS,KAAKvmL,EAAEsF,GAAGxF,EAAE/E,KAAK,CAACI,MAAM6E,EAAEnF,UAAUkF,KAAK,IAAI0uL,GAAG,KAAKC,GAAG,KAAK,SAASr2B,GAAGv4J,GAAG6uL,GAAG7uL,EAAE,GAAG,SAAS6D,GAAG7D,GAAe,GAAG26K,EAATmU,GAAG9uL,IAAY,OAAOA,EACne,SAAS+uL,GAAG/uL,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,EAAE,IAAI+uL,IAAG,EAAG,GAAGvwB,EAAG,CAAC,IAAIwwB,GAAG,GAAGxwB,EAAG,CAAC,IAAIywB,GAAG,YAAY/mL,SAAS,IAAI+mL,GAAG,CAAC,IAAIC,GAAGhnL,SAASshJ,cAAc,OAAO0lC,GAAGz3J,aAAa,UAAU,WAAWw3J,GAAG,oBAAoBC,GAAGC,QAAQH,GAAGC,QAAQD,IAAG,EAAGD,GAAGC,MAAM9mL,SAASwlL,cAAc,EAAExlL,SAASwlL,cAAc,SAAS0B,KAAKV,KAAKA,GAAGW,YAAY,mBAAmBC,IAAIX,GAAGD,GAAG,MAAM,SAASY,GAAGvvL,GAAG,GAAG,UAAUA,EAAEgzG,cAAcnvG,GAAG+qL,IAAI,CAAC,IAAI3uL,EAAE,GAAyB,GAAtBwuL,GAAGxuL,EAAE2uL,GAAG5uL,EAAEi+K,GAAGj+K,IAAIA,EAAEu4J,GAAMymB,GAAGh/K,EAAEC,OAAO,CAAC++K,IAAG,EAAG,IAAIJ,GAAG5+K,EAAEC,GAAT,QAAoB++K,IAAG,EAAGE,QAC3e,SAASsQ,GAAGxvL,EAAEC,EAAEC,GAAG,YAAYF,GAAGqvL,KAAUT,GAAG1uL,GAARyuL,GAAG1uL,GAAUwvL,YAAY,mBAAmBF,KAAK,aAAavvL,GAAGqvL,KAAK,SAASK,GAAG1vL,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO6D,GAAG+qL,IAAI,SAASe,GAAG3vL,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAO6D,GAAG5D,GAAG,SAAS2vL,GAAG5vL,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAO6D,GAAG5D,GAAmE,IAAI4vL,GAAG,oBAAoB5xL,OAAO+vI,GAAG/vI,OAAO+vI,GAA5G,SAAYhuI,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,GAAoD6vL,GAAG7xL,OAAOgF,UAAU03I,eAC7a,SAASo1C,GAAG/vL,EAAEC,GAAG,GAAG4vL,GAAG7vL,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIC,EAAEjC,OAAO+8B,KAAKh7B,GAAGwF,EAAEvH,OAAO+8B,KAAK/6B,GAAG,GAAGC,EAAEvE,SAAS6J,EAAE7J,OAAO,OAAM,EAAG,IAAI6J,EAAE,EAAEA,EAAEtF,EAAEvE,OAAO6J,IAAI,IAAIsqL,GAAGl0L,KAAKqE,EAAEC,EAAEsF,MAAMqqL,GAAG7vL,EAAEE,EAAEsF,IAAIvF,EAAEC,EAAEsF,KAAK,OAAM,EAAG,OAAM,EAAG,SAASwqL,GAAGhwL,GAAG,KAAKA,GAAGA,EAAEy8K,YAAYz8K,EAAEA,EAAEy8K,WAAW,OAAOz8K,EAClU,SAASiwL,GAAGjwL,EAAEC,GAAG,IAAwBuF,EAApBtF,EAAE8vL,GAAGhwL,GAAO,IAAJA,EAAE,EAAYE,GAAG,CAAC,GAAG,IAAIA,EAAE48K,SAAS,CAA0B,GAAzBt3K,EAAExF,EAAEE,EAAE4qK,YAAYnvK,OAAUqE,GAAGC,GAAGuF,GAAGvF,EAAE,MAAM,CAAC6oH,KAAK5oH,EAAEwC,OAAOzC,EAAED,GAAGA,EAAEwF,EAAExF,EAAE,CAAC,KAAKE,GAAG,CAAC,GAAGA,EAAEgwL,YAAY,CAAChwL,EAAEA,EAAEgwL,YAAY,MAAMlwL,EAAEE,EAAEA,EAAEopK,WAAWppK,OAAE,EAAOA,EAAE8vL,GAAG9vL,IAAI,SAASiwL,GAAGnwL,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE88K,YAAY78K,GAAG,IAAIA,EAAE68K,SAASqT,GAAGnwL,EAAEC,EAAEqpK,YAAY,aAAatpK,EAAEA,EAAEowL,SAASnwL,KAAGD,EAAEqwL,4BAAwD,GAA7BrwL,EAAEqwL,wBAAwBpwL,MAClZ,SAASqwL,KAAK,IAAI,IAAItwL,EAAE+jF,OAAO9jF,EAAE46K,IAAK56K,aAAaD,EAAEuwL,mBAAmB,CAAC,IAAI,IAAIrwL,EAAE,kBAAkBD,EAAEuwL,cAAcl2I,SAAS2xG,KAAK,MAAMzmJ,GAAGtF,GAAE,EAAG,IAAGA,EAAyB,MAAMD,EAAE46K,GAA/B76K,EAAEC,EAAEuwL,eAAgCroL,UAAU,OAAOlI,EAAE,SAASwwL,GAAGzwL,GAAG,IAAIC,EAAED,GAAGA,EAAEgpH,UAAUhpH,EAAEgpH,SAAS/1F,cAAc,OAAOhzB,IAAI,UAAUA,IAAI,SAASD,EAAEpF,MAAM,WAAWoF,EAAEpF,MAAM,QAAQoF,EAAEpF,MAAM,QAAQoF,EAAEpF,MAAM,aAAaoF,EAAEpF,OAAO,aAAaqF,GAAG,SAASD,EAAE0wL,iBACxZ,IAAIC,GAAGlyB,GAAI,iBAAiBt2J,UAAU,IAAIA,SAASwlL,aAAaiD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGhxL,EAAEC,EAAEC,GAAG,IAAIsF,EAAEtF,EAAE6jF,SAAS7jF,EAAEA,EAAEiI,SAAS,IAAIjI,EAAE48K,SAAS58K,EAAEA,EAAEgmK,cAAc6qB,IAAI,MAAMH,IAAIA,KAAK/V,EAAGr1K,KAAU,mBAALA,EAAEorL,KAAyBH,GAAGjrL,GAAGA,EAAE,CAACqxB,MAAMrxB,EAAEyrL,eAAe1sJ,IAAI/+B,EAAE0rL,cAAuF1rL,EAAE,CAAC2rL,YAA3E3rL,GAAGA,EAAE0gK,eAAe1gK,EAAE0gK,cAAcC,aAAapiF,QAAQqtG,gBAA+BD,WAAWE,aAAa7rL,EAAE6rL,aAAaC,UAAU9rL,EAAE8rL,UAAUC,YAAY/rL,EAAE+rL,aAAcT,IAAIf,GAAGe,GAAGtrL,KAAKsrL,GAAGtrL,EAAsB,GAApBA,EAAEkpL,GAAGmC,GAAG,aAAgBl1L,SAASsE,EAAE,IAAIwmL,GAAG,WAAW,SAAS,KAAKxmL,EAAEC,GAAGF,EAAE/E,KAAK,CAACI,MAAM4E,EAAElF,UAAUyK,IAAIvF,EAAE3E,OAAOs1L,MACjf1N,GAAG,mjBAAmjB1yH,MAAM,KAC5jB,GAAG0yH,GAAG,oRAAoR1yH,MAAM,KAAK,GAAG0yH,GAAGD,GAAG,GAAG,IAAI,IAAIuO,GAAG,qFAAqFhhI,MAAM,KAAKihI,GAAG,EAAEA,GAAGD,GAAG71L,OAAO81L,KAAKzO,GAAGliL,IAAI0wL,GAAGC,IAAI,GAAGjzB,EAAG,eAAe,CAAC,WAAW,cACleA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoE/tG,MAAM,MAAM+tG,EAAG,WAAW,uFAAuF/tG,MAAM,MAAM+tG,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2D/tG,MAAM,MAC5f+tG,EAAG,qBAAqB,6DAA6D/tG,MAAM,MAAM+tG,EAAG,sBAAsB,8DAA8D/tG,MAAM,MAAM,IAAIkhI,GAAG,sNAAsNlhI,MAAM,KAAKmhI,GAAG,IAAI3qF,IAAI,0CAA0Cx2C,MAAM,KAAKqoC,OAAO64F,KACnf,SAASE,GAAG5xL,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEpF,MAAM,gBAAgBoF,EAAE+xI,cAAc7xI,EA/CjE,SAAYF,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,EAAEC,EAAEC,EAAEu8D,GAA4B,GAAzB09G,GAAG9xL,MAAMH,KAAKE,WAAc0xL,GAAG,CAAC,IAAGA,GAAgC,MAAMp+K,MAAM7D,EAAE,MAA1C,IAAI5B,EAAE8jL,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGhkL,IA+CjEm2L,CAAGrsL,EAAEvF,OAAE,EAAOD,GAAGA,EAAE+xI,cAAc,KACpG,SAAS88C,GAAG7uL,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAErE,OAAOuE,IAAI,CAAC,IAAIsF,EAAExF,EAAEE,GAAGwB,EAAE8D,EAAEnK,MAAMmK,EAAEA,EAAEzK,UAAUiF,EAAE,CAAC,IAAIyF,OAAE,EAAO,GAAGxF,EAAE,IAAI,IAAIyF,EAAEF,EAAE7J,OAAO,EAAE,GAAG+J,EAAEA,IAAI,CAAC,IAAIC,EAAEH,EAAEE,GAAGw8D,EAAEv8D,EAAEwiI,SAASzsI,EAAEiK,EAAEosI,cAA2B,GAAbpsI,EAAEA,EAAE9K,SAAYqnE,IAAIz8D,GAAG/D,EAAEkkL,uBAAuB,MAAM5lL,EAAE4xL,GAAGlwL,EAAEiE,EAAEjK,GAAG+J,EAAEy8D,OAAO,IAAIx8D,EAAE,EAAEA,EAAEF,EAAE7J,OAAO+J,IAAI,CAAoD,GAA5Cw8D,GAAPv8D,EAAEH,EAAEE,IAAOyiI,SAASzsI,EAAEiK,EAAEosI,cAAcpsI,EAAEA,EAAE9K,SAAYqnE,IAAIz8D,GAAG/D,EAAEkkL,uBAAuB,MAAM5lL,EAAE4xL,GAAGlwL,EAAEiE,EAAEjK,GAAG+J,EAAEy8D,IAAI,GAAGu9G,GAAG,MAAMz/K,EAAE0/K,GAAGD,IAAG,EAAGC,GAAG,KAAK1/K,EAC1a,SAASi+J,GAAEj+J,EAAEC,GAAG,IAAIC,EAAE4xL,GAAG7xL,GAAGuF,EAAExF,EAAE,WAAWE,EAAEg8C,IAAI12C,KAAK8Y,GAAGre,EAAED,EAAE,GAAE,GAAIE,EAAE6W,IAAIvR,IAAI,IAAI+Y,GAAG,kBAAkBxiB,KAAKW,SAASP,SAAS,IAAIX,MAAM,GAAG,SAASijB,GAAGze,GAAGA,EAAEue,MAAMve,EAAEue,KAAI,EAAG2gJ,EAAGlrF,SAAQ,SAAS/zE,GAAG0xL,GAAGz1I,IAAIj8C,IAAI0e,GAAG1e,GAAE,EAAGD,EAAE,MAAM2e,GAAG1e,GAAE,EAAGD,EAAE,UACtO,SAAS2e,GAAG3e,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE,EAAE7T,UAAU8N,aAAQ,IAAS9N,UAAU,GAAGA,UAAU,GAAG,EAAE4X,EAAEvF,EAA6D,GAA3D,oBAAoBF,GAAG,IAAIE,EAAE48K,WAAWr3K,EAAEvF,EAAEgmK,eAAkB,OAAO1gK,IAAIvF,GAAG0xL,GAAGz1I,IAAIl8C,GAAG,CAAC,GAAG,WAAWA,EAAE,OAAO0B,GAAG,EAAE+D,EAAED,EAAE,IAAIE,EAAEosL,GAAGrsL,GAAGE,EAAE3F,EAAE,MAAMC,EAAE,UAAU,UAAUyF,EAAEw2C,IAAIv2C,KAAK1F,IAAIyB,GAAG,GAAG4c,GAAG7Y,EAAEzF,EAAE0B,EAAEzB,GAAGyF,EAAEqR,IAAIpR,IAClS,SAAS2Y,GAAGte,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEshL,GAAGv7I,IAAIxnC,GAAG,YAAO,IAASyB,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAE+iL,GAAG,MAAM,KAAK,EAAE/iL,EAAEgkB,GAAG,MAAM,QAAQhkB,EAAEgjL,GAAGxkL,EAAEwB,EAAE47G,KAAK,KAAKr9G,EAAEC,EAAEF,GAAG0B,OAAE,GAAQ09K,IAAI,eAAen/K,GAAG,cAAcA,GAAG,UAAUA,IAAIyB,GAAE,GAAI8D,OAAE,IAAS9D,EAAE1B,EAAEm/C,iBAAiBl/C,EAAEC,EAAE,CAACsrI,SAAQ,EAAGC,QAAQ/pI,IAAI1B,EAAEm/C,iBAAiBl/C,EAAEC,GAAE,QAAI,IAASwB,EAAE1B,EAAEm/C,iBAAiBl/C,EAAEC,EAAE,CAACurI,QAAQ/pI,IAAI1B,EAAEm/C,iBAAiBl/C,EAAEC,GAAE,GACpW,SAAS0kL,GAAG5kL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAED,EAAE,GAAG,KAAO,EAAFvF,IAAM,KAAO,EAAFA,IAAM,OAAOuF,EAAExF,EAAE,OAAO,CAAC,GAAG,OAAOwF,EAAE,OAAO,IAAIE,EAAEF,EAAE00K,IAAI,GAAG,IAAIx0K,GAAG,IAAIA,EAAE,CAAC,IAAIC,EAAEH,EAAEy2I,UAAUC,cAAc,GAAGv2I,IAAIjE,GAAG,IAAIiE,EAAEm3K,UAAUn3K,EAAE2jK,aAAa5nK,EAAE,MAAM,GAAG,IAAIgE,EAAE,IAAIA,EAAEF,EAAEw2I,OAAO,OAAOt2I,GAAG,CAAC,IAAIw8D,EAAEx8D,EAAEw0K,IAAI,IAAG,IAAIh4G,GAAG,IAAIA,MAAKA,EAAEx8D,EAAEu2I,UAAUC,iBAAkBx6I,GAAG,IAAIwgE,EAAE46G,UAAU56G,EAAEonG,aAAa5nK,GAAE,OAAOgE,EAAEA,EAAEs2I,OAAO,KAAK,OAAOr2I,GAAG,CAAS,GAAG,QAAXD,EAAE67K,GAAG57K,IAAe,OAAe,GAAG,KAAXu8D,EAAEx8D,EAAEw0K,MAAc,IAAIh4G,EAAE,CAAC18D,EAAEC,EAAEC,EAAE,SAAS1F,EAAE2F,EAAEA,EAAE2jK,YAAY9jK,EAAEA,EAAEw2I,QAvD7c,SAAYh8I,EAAEC,EAAEC,GAAG,GAAG++K,GAAG,OAAOj/K,EAAEC,EAAEC,GAAG++K,IAAG,EAAG,IAAWF,GAAG/+K,EAAEC,EAAEC,GAAlB,QAA6B++K,IAAG,EAAGC,MAuDoY6S,EAAG,WAAW,IAAIvsL,EAAEC,EAAE/D,EAAEu8K,GAAG/9K,GAAGwF,EAAE,GACpf1F,EAAE,CAAC,IAAI2F,EAAEo9K,GAAGt7I,IAAIznC,GAAG,QAAG,IAAS2F,EAAE,CAAC,IAAIu8D,EAAEukH,GAAGppL,EAAE2C,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAIilL,GAAG/kL,GAAG,MAAMF,EAAE,IAAK,UAAU,IAAK,QAAQkiE,EAAEgqH,GAAG,MAAM,IAAK,UAAU7uL,EAAE,QAAQ6kE,EAAEimH,GAAG,MAAM,IAAK,WAAW9qL,EAAE,OAAO6kE,EAAEimH,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYjmH,EAAEimH,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIjoL,EAAEunL,OAAO,MAAMznL,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAckiE,EAAE8lH,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO9lH,EAC1iB+lH,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa/lH,EAAE2qH,GAAG,MAAM,KAAKlK,GAAG,KAAKC,GAAG,KAAKC,GAAG3gH,EAAEkmH,GAAG,MAAM,KAAKtF,GAAG5gH,EAAE+qH,GAAG,MAAM,IAAK,SAAS/qH,EAAEykH,GAAG,MAAM,IAAK,QAAQzkH,EAAEgrH,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQhrH,EAAEqmH,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYrmH,EAAEmqH,GAAG,IAAI/qL,EAAE,KAAO,EAAFrB,GAAKmM,GAAG9K,GAAG,WAAWtB,EAAEgW,EAAE1U,EAAE,OAAOqE,EAAEA,EAAE,UAAU,KAAKA,EAAErE,EAAE,GAAG,IAAI,IAAQvB,EAAJxC,EAAEiI,EAAI,OAC/ejI,GAAG,CAAK,IAAI8D,GAARtB,EAAExC,GAAU0+I,UAAsF,GAA5E,IAAIl8I,EAAEm6K,KAAK,OAAO74K,IAAItB,EAAEsB,EAAE,OAAO2U,IAAc,OAAV3U,EAAE89K,GAAG5hL,EAAEyY,KAAY1U,EAAErG,KAAK+2L,GAAGz0L,EAAE8D,EAAEtB,MAASqM,EAAE,MAAM7O,EAAEA,EAAEy+I,OAAO,EAAE16I,EAAE3F,SAASgK,EAAE,IAAIu8D,EAAEv8D,EAAEtI,EAAE,KAAK6C,EAAEwB,GAAGgE,EAAEzK,KAAK,CAACI,MAAMsK,EAAE5K,UAAUuG,MAAM,GAAG,KAAO,EAAFrB,GAAK,CAA4E,GAAnCiiE,EAAE,aAAaliE,GAAG,eAAeA,KAAtE2F,EAAE,cAAc3F,GAAG,gBAAgBA,IAA2C,KAAO,GAAFC,MAAQ5C,EAAE6C,EAAEynL,eAAeznL,EAAE0nL,eAAerG,GAAGlkL,KAAIA,EAAE40L,OAAgB/vH,GAAGv8D,KAAGA,EAAEjE,EAAEqiF,SAASriF,EAAEA,GAAGiE,EAAEjE,EAAEwkK,eAAevgK,EAAEwgK,aAAaxgK,EAAEusL,aAAanuG,OAAU7hB,GAAqCA,EAAE18D,EAAiB,QAAfnI,GAAnCA,EAAE6C,EAAEynL,eAAeznL,EAAE2nL,WAAkBtG,GAAGlkL,GAAG,QACleA,KAAR+O,EAAEyzK,GAAGxiL,KAAU,IAAIA,EAAE68K,KAAK,IAAI78K,EAAE68K,OAAK78K,EAAE,QAAU6kE,EAAE,KAAK7kE,EAAEmI,GAAK08D,IAAI7kE,GAAE,CAAgU,GAA/TiE,EAAE0mL,GAAG3mL,EAAE,eAAe2U,EAAE,eAAezY,EAAE,QAAW,eAAeyC,GAAG,gBAAgBA,IAAEsB,EAAE+qL,GAAGhrL,EAAE,iBAAiB2U,EAAE,iBAAiBzY,EAAE,WAAU6O,EAAE,MAAM81D,EAAEv8D,EAAEmpL,GAAG5sH,GAAGniE,EAAE,MAAM1C,EAAEsI,EAAEmpL,GAAGzxL,IAAGsI,EAAE,IAAIrE,EAAED,EAAE9D,EAAE,QAAQ2kE,EAAEhiE,EAAEwB,IAAKpG,OAAO8Q,EAAEzG,EAAEgiL,cAAc5nL,EAAEsB,EAAE,KAAKkgL,GAAG7/K,KAAK8D,KAAIlE,EAAE,IAAIA,EAAE0U,EAAEzY,EAAE,QAAQF,EAAE6C,EAAEwB,IAAKpG,OAAOyE,EAAEuB,EAAEqmL,cAAcv7K,EAAE/K,EAAEC,GAAG8K,EAAE/K,EAAK6gE,GAAG7kE,EAAE4C,EAAE,CAAa,IAAR+V,EAAE3Y,EAAEE,EAAE,EAAMwC,EAAhBuB,EAAE4gE,EAAkBniE,EAAEA,EAAEoyL,GAAGpyL,GAAGxC,IAAQ,IAAJwC,EAAE,EAAMsB,EAAE2U,EAAE3U,EAAEA,EAAE8wL,GAAG9wL,GAAGtB,IAAI,KAAK,EAAExC,EAAEwC,GAAGuB,EAAE6wL,GAAG7wL,GAAG/D,IAAI,KAAK,EAAEwC,EAAExC,GAAGyY,EACpfm8K,GAAGn8K,GAAGjW,IAAI,KAAKxC,KAAK,CAAC,GAAG+D,IAAI0U,GAAG,OAAOA,GAAG1U,IAAI0U,EAAEkpI,UAAU,MAAMj/I,EAAEqB,EAAE6wL,GAAG7wL,GAAG0U,EAAEm8K,GAAGn8K,GAAG1U,EAAE,UAAUA,EAAE,KAAK,OAAO4gE,GAAGkwH,GAAG1sL,EAAEC,EAAEu8D,EAAE5gE,GAAE,GAAI,OAAOjE,GAAG,OAAO+O,GAAGgmL,GAAG1sL,EAAE0G,EAAE/O,EAAEiE,GAAE,GAAiE,GAAG,YAA1C4gE,GAAjBv8D,EAAEH,EAAEspL,GAAGtpL,GAAGu+E,QAAWilC,UAAUrjH,EAAEqjH,SAAS/1F,gBAA+B,UAAUivC,GAAG,SAASv8D,EAAE/K,KAAK,IAAIojK,EAAE+wB,QAAQ,GAAGjrL,GAAG6B,GAAG,GAAGqpL,GAAGhxB,EAAE4xB,OAAO,CAAC5xB,EAAE0xB,GAAG,IAAI5xB,EAAE0xB,QAAQttH,EAAEv8D,EAAEqjH,WAAW,UAAU9mD,EAAEjvC,gBAAgB,aAAattB,EAAE/K,MAAM,UAAU+K,EAAE/K,QAAQojK,EAAE2xB,IAClV,OADyV3xB,IAAIA,EAAEA,EAAEh+J,EAAEwF,IAAKipL,GAAG/oL,EAAEs4J,EAAE99J,EAAEwB,IAAWo8J,GAAGA,EAAE99J,EAAE2F,EAAEH,GAAG,aAAaxF,IAAI89J,EAAEn4J,EAAEs1K,gBACtend,EAAEud,YAAY,WAAW11K,EAAE/K,MAAM2gL,GAAG51K,EAAE,SAASA,EAAExY,QAAO2wK,EAAEt4J,EAAEspL,GAAGtpL,GAAGu+E,OAAc/jF,GAAG,IAAK,WAAa8D,GAAGg6J,IAAI,SAASA,EAAE4yB,mBAAgBE,GAAG9yB,EAAE+yB,GAAGrrL,EAAEsrL,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGtrL,EAAExF,EAAEwB,GAAG,MAAM,IAAK,kBAAkB,GAAGivL,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGtrL,EAAExF,EAAEwB,GAAG,IAAI23J,EAAE,GAAGj1J,GAAGnE,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIm5J,EAAE,qBAAqB,MAAMl5J,EAAE,IAAK,iBAAiBk5J,EAAE,mBAAmB,MAAMl5J,EACrf,IAAK,oBAAoBk5J,EAAE,sBAAsB,MAAMl5J,EAAEk5J,OAAE,OAAY60B,GAAGF,GAAG9tL,EAAEE,KAAKi5J,EAAE,oBAAoB,YAAYn5J,GAAG,MAAME,EAAEglL,UAAU/rB,EAAE,sBAAsBA,IAAIz6I,IAAI,OAAOxe,EAAEisL,SAAS6B,IAAI,uBAAuB70B,EAAE,qBAAqBA,GAAG60B,KAAK30B,EAAE2rB,OAAYF,GAAG,UAARD,GAAGnjL,GAAkBmjL,GAAG13L,MAAM03L,GAAG/Z,YAAYkjB,IAAG,IAAe,GAAVlwB,EAAE4wB,GAAGlpL,EAAE2zJ,IAAOx9J,SAASw9J,EAAE,IAAIsvB,GAAGtvB,EAAEn5J,EAAE,KAAKE,EAAEwB,GAAGgE,EAAEzK,KAAK,CAACI,MAAM89J,EAAEp+J,UAAU+iK,IAAIzE,EAAEF,EAAEltJ,KAAKotJ,EAAW,QAARA,EAAE00B,GAAG7tL,MAAci5J,EAAEltJ,KAAKotJ,MAASA,EAAE76I,GA1BjK,SAAYxe,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO+tL,GAAG9tL,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEmsL,MAAa,MAAKyB,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO5tL,EAAEC,EAAEgM,QAAS2hL,IAAIC,GAAG,KAAK7tL,EAAE,QAAQ,OAAO,MA0BxBqyL,CAAGryL,EAAEE,GAzB1b,SAAYF,EAAEC,GAAG,GAAG+tL,GAAG,MAAM,mBAAmBhuL,IAAIoE,IAAI0pL,GAAG9tL,EAAEC,IAAID,EAAEglL,KAAKD,GAAGD,GAAGD,GAAG,KAAKmJ,IAAG,EAAGhuL,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAQ,OAAO,KAAK,IAAK,WAAW,KAAKC,EAAEknL,SAASlnL,EAAEonL,QAAQpnL,EAAEqnL,UAAUrnL,EAAEknL,SAASlnL,EAAEonL,OAAO,CAAC,GAAGpnL,EAAEqyL,MAAM,EAAEryL,EAAEqyL,KAAK32L,OAAO,OAAOsE,EAAEqyL,KAAK,GAAGryL,EAAEmsL,MAAM,OAAOzvJ,OAAOi+E,aAAa36G,EAAEmsL,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAO1tK,IAAI,OAAOze,EAAEksL,OAAO,KAAKlsL,EAAEgM,KAAK,QAAQ,OAAO,MAyB2DsmL,CAAGvyL,EAAEE,MAA2B,GAAxBsF,EAAEkpL,GAAGlpL,EAAE,kBAAqB7J,SAAS+F,EAAE,IAAI+mL,GAAG,gBACnf,cAAc,KAAKvoL,EAAEwB,GAAGgE,EAAEzK,KAAK,CAACI,MAAMqG,EAAE3G,UAAUyK,IAAI9D,EAAEuK,KAAKotJ,IAAGw1B,GAAGnpL,EAAEzF,MAAK,SAAS+xL,GAAGhyL,EAAEC,EAAEC,GAAG,MAAM,CAACioI,SAASnoI,EAAEnF,SAASoF,EAAE8xI,cAAc7xI,GAAG,SAASwuL,GAAG1uL,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAE,UAAUuF,EAAE,GAAG,OAAOxF,GAAG,CAAC,IAAI0B,EAAE1B,EAAEyF,EAAE/D,EAAEu6I,UAAU,IAAIv6I,EAAEw4K,KAAK,OAAOz0K,IAAI/D,EAAE+D,EAAY,OAAVA,EAAE05K,GAAGn/K,EAAEE,KAAYsF,EAAE4xC,QAAQ46I,GAAGhyL,EAAEyF,EAAE/D,IAAc,OAAV+D,EAAE05K,GAAGn/K,EAAEC,KAAYuF,EAAEvK,KAAK+2L,GAAGhyL,EAAEyF,EAAE/D,KAAK1B,EAAEA,EAAEg8I,OAAO,OAAOx2I,EAAE,SAAS2sL,GAAGnyL,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEg8I,aAAah8I,GAAG,IAAIA,EAAEk6K,KAAK,OAAOl6K,GAAI,KACxa,SAASoyL,GAAGpyL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI,IAAI+D,EAAExF,EAAEslL,WAAW7/K,EAAE,GAAG,OAAOxF,GAAGA,IAAIsF,GAAG,CAAC,IAAIG,EAAEzF,EAAEgiE,EAAEv8D,EAAEu5I,UAAUxjJ,EAAEiK,EAAEs2I,UAAU,GAAG,OAAO/5E,GAAGA,IAAI18D,EAAE,MAAM,IAAIG,EAAEu0K,KAAK,OAAOx+K,IAAIiK,EAAEjK,EAAEgG,EAAa,OAAVwgE,EAAEi9G,GAAGj/K,EAAEuF,KAAYC,EAAE0xC,QAAQ46I,GAAG9xL,EAAEgiE,EAAEv8D,IAAKjE,GAAc,OAAVwgE,EAAEi9G,GAAGj/K,EAAEuF,KAAYC,EAAEzK,KAAK+2L,GAAG9xL,EAAEgiE,EAAEv8D,KAAMzF,EAAEA,EAAE87I,OAAO,IAAIt2I,EAAE/J,QAAQqE,EAAE/E,KAAK,CAACI,MAAM4E,EAAElF,UAAU2K,IAAI,SAAS8sL,MAAM,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG3yL,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAE2yL,UAAU,OAAM,EAC3b,SAASC,GAAG7yL,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,kBAAkBC,EAAE4X,UAAU,kBAAkB5X,EAAE4X,UAAU,kBAAkB5X,EAAE87K,yBAAyB,OAAO97K,EAAE87K,yBAAyB,MAAM97K,EAAE87K,wBAAwB+W,OAAO,IAAIC,GAAG,oBAAoBl9E,WAAWA,gBAAW,EAAOm9E,GAAG,oBAAoBj+C,aAAaA,kBAAa,EAAO,SAASk+C,GAAGjzL,GAAG,IAAIA,EAAE88K,SAAS98K,EAAE8qK,YAAY,GAAG,IAAI9qK,EAAE88K,WAAoB,OAAT98K,EAAEA,EAAE2rI,QAAe3rI,EAAE8qK,YAAY,KACxc,SAASooB,GAAGlzL,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEkwL,YAAY,CAAC,IAAIjwL,EAAED,EAAE88K,SAAS,GAAG,IAAI78K,GAAG,IAAIA,EAAE,MAAM,OAAOD,EAAE,SAASqhG,GAAGrhG,GAAGA,EAAEA,EAAEmzL,gBAAgB,IAAI,IAAIlzL,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE88K,SAAS,CAAC,IAAI58K,EAAEF,EAAEiM,KAAK,GAAG,MAAM/L,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAID,EAAE,OAAOD,EAAEC,QAAQ,OAAOC,GAAGD,IAAID,EAAEA,EAAEmzL,gBAAgB,OAAO,KAAK,IAAIC,GAAG,EAA0D,IAAIC,GAAGt3L,KAAKW,SAASP,SAAS,IAAIX,MAAM,GAAG83L,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGpB,GAAG,oBAAoBoB,GAAGG,GAAG,iBAAiBH,GAC9d,SAAS9R,GAAGvhL,GAAG,IAAIC,EAAED,EAAEszL,IAAI,GAAGrzL,EAAE,OAAOA,EAAE,IAAI,IAAIC,EAAEF,EAAEspK,WAAWppK,GAAG,CAAC,GAAGD,EAAEC,EAAE+xL,KAAK/xL,EAAEozL,IAAI,CAAe,GAAdpzL,EAAED,EAAEi/I,UAAa,OAAOj/I,EAAEqoB,OAAO,OAAOpoB,GAAG,OAAOA,EAAEooB,MAAM,IAAItoB,EAAEqhG,GAAGrhG,GAAG,OAAOA,GAAG,CAAC,GAAGE,EAAEF,EAAEszL,IAAI,OAAOpzL,EAAEF,EAAEqhG,GAAGrhG,GAAG,OAAOC,EAAMC,GAAJF,EAAEE,GAAMopK,WAAW,OAAO,KAAK,SAASkV,GAAGx+K,GAAkB,QAAfA,EAAEA,EAAEszL,KAAKtzL,EAAEiyL,MAAc,IAAIjyL,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,KAAK,KAAKl6K,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,IAAI,KAAKl6K,EAAE,SAAS8uL,GAAG9uL,GAAG,GAAG,IAAIA,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,IAAI,OAAOl6K,EAAEi8I,UAAU,MAAM96I,MAAM7D,EAAE,KAAM,SAASmhL,GAAGz+K,GAAG,OAAOA,EAAEuzL,KAAK,KAClb,SAASzB,GAAG9xL,GAAG,IAAIC,EAAED,EAAEwzL,IAAkC,YAA9B,IAASvzL,IAAIA,EAAED,EAAEwzL,IAAI,IAAIxsF,KAAY/mG,EAAE,IAAIwzL,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG3zL,GAAG,MAAM,CAACoyF,QAAQpyF,GAAG,SAASs5J,GAAEt5J,GAAG,EAAE0zL,KAAK1zL,EAAEoyF,QAAQqhG,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MAAM,SAAS31B,GAAE/9J,EAAEC,GAAGyzL,KAAKD,GAAGC,IAAI1zL,EAAEoyF,QAAQpyF,EAAEoyF,QAAQnyF,EAAE,IAAI2zL,GAAG,GAAGx6B,GAAEu6B,GAAGC,IAAI1tF,GAAEytF,IAAG,GAAIE,GAAGD,GAC5P,SAASE,GAAG9zL,EAAEC,GAAG,IAAIC,EAAEF,EAAEpF,KAAK60J,aAAa,IAAIvvJ,EAAE,OAAO0zL,GAAG,IAAIpuL,EAAExF,EAAEi8I,UAAU,GAAGz2I,GAAGA,EAAEuuL,8CAA8C9zL,EAAE,OAAOuF,EAAEwuL,0CAA0C,IAASvuL,EAAL/D,EAAE,GAAK,IAAI+D,KAAKvF,EAAEwB,EAAE+D,GAAGxF,EAAEwF,GAAoH,OAAjHD,KAAIxF,EAAEA,EAAEi8I,WAAY83C,4CAA4C9zL,EAAED,EAAEg0L,0CAA0CtyL,GAAUA,EAAE,SAASuyL,GAAGj0L,GAAyB,OAAO,QAA7BA,EAAEA,EAAEuvJ,yBAAmC,IAASvvJ,EAAE,SAASk0L,KAAK56B,GAAEpzD,IAAGozD,GAAEF,IAAG,SAAS+6B,GAAGn0L,EAAEC,EAAEC,GAAG,GAAGk5J,GAAEhnE,UAAUwhG,GAAG,MAAMzyL,MAAM7D,EAAE,MAAMygK,GAAE3E,GAAEn5J,GAAG89J,GAAE73D,GAAEhmG,GAC/e,SAASk0L,GAAGp0L,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEi8I,UAAgC,GAAtBj8I,EAAEC,EAAEsvJ,kBAAqB,oBAAoB/pJ,EAAEgxJ,gBAAgB,OAAOt2J,EAAwB,IAAI,IAAIwB,KAA9B8D,EAAEA,EAAEgxJ,kBAAiC,KAAK90J,KAAK1B,GAAG,MAAMmB,MAAM7D,EAAE,IAAI88K,EAAGn6K,IAAI,UAAUyB,IAAI,OAAOvE,EAAE,GAAG+C,EAAEsF,GAAG,SAAS6uL,GAAGr0L,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEi8I,YAAYj8I,EAAEs0L,2CAA2CV,GAAGC,GAAGz6B,GAAEhnE,QAAQ2rE,GAAE3E,GAAEp5J,GAAG+9J,GAAE73D,GAAEA,GAAE9T,UAAe,EAAG,SAASmiG,GAAGv0L,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEi8I,UAAU,IAAIz2I,EAAE,MAAMrE,MAAM7D,EAAE,MAAM4C,GAAGF,EAAEo0L,GAAGp0L,EAAEC,EAAE4zL,IAAIruL,EAAE8uL,0CAA0Ct0L,EAAEs5J,GAAEpzD,IAAGozD,GAAEF,IAAG2E,GAAE3E,GAAEp5J,IAAIs5J,GAAEpzD,IAAG63D,GAAE73D,GAAEhmG,GAC7e,IAAIs0L,GAAG,KAAKC,GAAG,KAAKC,GAAGpuL,EAAEm3I,yBAAyBk3C,GAAGruL,EAAEy7K,0BAA0B6S,GAAGtuL,EAAEuuL,wBAAwBC,GAAGxuL,EAAEyuL,qBAAqBC,GAAG1uL,EAAE2uL,sBAAsBC,GAAG5uL,EAAEs3I,aAAau3C,GAAG7uL,EAAE8uL,iCAAiCC,GAAG/uL,EAAEgvL,2BAA2BC,GAAGjvL,EAAEg+K,8BAA8BkR,GAAGlvL,EAAE07K,wBAAwByT,GAAGnvL,EAAEovL,qBAAqBC,GAAGrvL,EAAEo3I,sBAAsBk4C,GAAG,GAAGC,QAAG,IAASb,GAAGA,GAAG,aAAac,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGf,KAAK/2B,GAAE,IAAI83B,GAAGf,GAAG,WAAW,OAAOA,KAAKe,IACtd,SAASC,KAAK,OAAOf,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAMx0L,MAAM7D,EAAE,OAAQ,SAAS64L,GAAGn2L,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOq1L,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAMx0L,MAAM7D,EAAE,OAAQ,SAAS84L,GAAGp2L,EAAEC,GAAW,OAARD,EAAEm2L,GAAGn2L,GAAU00L,GAAG10L,EAAEC,GAAG,SAASo2L,GAAGr2L,EAAEC,EAAEC,GAAW,OAARF,EAAEm2L,GAAGn2L,GAAU20L,GAAG30L,EAAEC,EAAEC,GAAG,SAASo2L,KAAK,GAAG,OAAOP,GAAG,CAAC,IAAI/1L,EAAE+1L,GAAGA,GAAG,KAAKnB,GAAG50L,GAAGu2L,KAC3a,SAASA,KAAK,IAAIP,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIh2L,EAAE,EAAE,IAAI,IAAIC,EAAE61L,GAAGM,GAAG,IAAG,WAAW,KAAKp2L,EAAEC,EAAEtE,OAAOqE,IAAI,CAAC,IAAIE,EAAED,EAAED,GAAG,GAAGE,EAAEA,GAAE,SAAU,OAAOA,OAAM41L,GAAG,KAAK,MAAM51L,GAAG,MAAM,OAAO41L,KAAKA,GAAGA,GAAGt6L,MAAMwE,EAAE,IAAI20L,GAAGU,GAAGiB,IAAIp2L,EAA3J,QAAsK81L,IAAG,IAAK,IAAIQ,GAAGhe,EAAG9B,wBAAwB,SAAS+f,GAAGz2L,EAAEC,GAAG,GAAGD,GAAGA,EAAE0vJ,aAAa,CAA4B,IAAI,IAAIxvJ,KAAnCD,EAAE9C,EAAE,GAAG8C,GAAGD,EAAEA,EAAE0vJ,kBAA4B,IAASzvJ,EAAEC,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,EAAE,OAAOA,EAAE,IAAIy2L,GAAG/C,GAAG,MAAMgD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,KAC5b,SAASI,GAAG/2L,GAAG,IAAIC,EAAEy2L,GAAGtkG,QAAQknE,GAAEo9B,IAAI12L,EAAEpF,KAAKogF,SAASo8F,cAAcn3K,EAAE,SAAS+2L,GAAGh3L,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIE,EAAEF,EAAEk/I,UAAU,IAAIl/I,EAAEi3L,WAAWh3L,KAAKA,EAAtB,CAAwB,GAAG,OAAOC,IAAIA,EAAE+2L,WAAWh3L,KAAKA,EAAE,MAAWC,EAAE+2L,YAAYh3L,OAAOD,EAAEi3L,YAAYh3L,EAAE,OAAOC,IAAIA,EAAE+2L,YAAYh3L,GAAGD,EAAEA,EAAEg8I,QAAQ,SAASk7C,GAAGl3L,EAAEC,GAAG02L,GAAG32L,EAAE62L,GAAGD,GAAG,KAAsB,QAAjB52L,EAAEA,EAAEm3L,eAAuB,OAAOn3L,EAAEo3L,eAAe,KAAKp3L,EAAEq3L,MAAMp3L,KAAKq3L,IAAG,GAAIt3L,EAAEo3L,aAAa,MACvY,SAASG,GAAGv3L,EAAEC,GAAG,GAAG42L,KAAK72L,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAE42L,GAAG72L,EAAEC,EAAE,YAAWA,EAAE,CAAC2I,QAAQ5I,EAAEi3J,aAAah3J,EAAEmvD,KAAK,MAAS,OAAOwnI,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMx1L,MAAM7D,EAAE,MAAMs5L,GAAG32L,EAAE02L,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAan3L,EAAEu3L,WAAW,WAAWZ,GAAGA,GAAGxnI,KAAKnvD,EAAE,OAAOD,EAAEo3K,cAAc,IAAIqgB,IAAG,EAAG,SAASC,GAAG13L,GAAGA,EAAE23L,YAAY,CAACC,UAAU53L,EAAE+/K,cAAc8X,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAAChmE,QAAQ,MAAMkkB,QAAQ,MAC1a,SAAS+hD,GAAGh4L,EAAEC,GAAGD,EAAEA,EAAE23L,YAAY13L,EAAE03L,cAAc33L,IAAIC,EAAE03L,YAAY,CAACC,UAAU53L,EAAE43L,UAAUC,gBAAgB73L,EAAE63L,gBAAgBC,eAAe93L,EAAE83L,eAAeC,OAAO/3L,EAAE+3L,OAAO9hD,QAAQj2I,EAAEi2I,UAAU,SAASgiD,GAAGj4L,EAAEC,GAAG,MAAM,CAACi4L,UAAUl4L,EAAEm4L,KAAKl4L,EAAEi6K,IAAI,EAAEke,QAAQ,KAAKpmL,SAAS,KAAKo9C,KAAK,MAAM,SAASipI,GAAGr4L,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAE23L,aAAwB,CAAY,IAAIz3L,GAAfF,EAAEA,EAAE+3L,QAAehmE,QAAQ,OAAO7xH,EAAED,EAAEmvD,KAAKnvD,GAAGA,EAAEmvD,KAAKlvD,EAAEkvD,KAAKlvD,EAAEkvD,KAAKnvD,GAAGD,EAAE+xH,QAAQ9xH,GACrZ,SAASq4L,GAAGt4L,EAAEC,GAAG,IAAIC,EAAEF,EAAE23L,YAAYnyL,EAAExF,EAAEk/I,UAAU,GAAG,OAAO15I,GAAoBtF,KAAhBsF,EAAEA,EAAEmyL,aAAmB,CAAC,IAAIj2L,EAAE,KAAK+D,EAAE,KAAyB,GAAG,QAAvBvF,EAAEA,EAAE23L,iBAA4B,CAAC,EAAE,CAAC,IAAInyL,EAAE,CAACwyL,UAAUh4L,EAAEg4L,UAAUC,KAAKj4L,EAAEi4L,KAAKje,IAAIh6K,EAAEg6K,IAAIke,QAAQl4L,EAAEk4L,QAAQpmL,SAAS9R,EAAE8R,SAASo9C,KAAK,MAAM,OAAO3pD,EAAE/D,EAAE+D,EAAEC,EAAED,EAAEA,EAAE2pD,KAAK1pD,EAAExF,EAAEA,EAAEkvD,WAAW,OAAOlvD,GAAG,OAAOuF,EAAE/D,EAAE+D,EAAExF,EAAEwF,EAAEA,EAAE2pD,KAAKnvD,OAAOyB,EAAE+D,EAAExF,EAAiH,OAA/GC,EAAE,CAAC03L,UAAUpyL,EAAEoyL,UAAUC,gBAAgBn2L,EAAEo2L,eAAeryL,EAAEsyL,OAAOvyL,EAAEuyL,OAAO9hD,QAAQzwI,EAAEywI,cAASj2I,EAAE23L,YAAYz3L,GAA4B,QAAnBF,EAAEE,EAAE43L,gBAAwB53L,EAAE23L,gBAAgB53L,EAAED,EAAEovD,KACnfnvD,EAAEC,EAAE43L,eAAe73L,EACnB,SAASs4L,GAAGv4L,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAE23L,YAAYF,IAAG,EAAG,IAAIhyL,EAAE/D,EAAEm2L,gBAAgBnyL,EAAEhE,EAAEo2L,eAAenyL,EAAEjE,EAAEq2L,OAAOhmE,QAAQ,GAAG,OAAOpsH,EAAE,CAACjE,EAAEq2L,OAAOhmE,QAAQ,KAAK,IAAI7vD,EAAEv8D,EAAEjK,EAAEwmE,EAAE9S,KAAK8S,EAAE9S,KAAK,KAAK,OAAO1pD,EAAED,EAAE/J,EAAEgK,EAAE0pD,KAAK1zD,EAAEgK,EAAEw8D,EAAE,IAAIhlE,EAAE8C,EAAEk/I,UAAU,GAAG,OAAOhiJ,EAAE,CAAiB,IAAIkhK,GAApBlhK,EAAEA,EAAEy6L,aAAoBG,eAAe15B,IAAI14J,IAAI,OAAO04J,EAAElhK,EAAE26L,gBAAgBn8L,EAAE0iK,EAAEhvG,KAAK1zD,EAAEwB,EAAE46L,eAAe51H,IAAI,GAAG,OAAOz8D,EAAE,CAA8B,IAA7B24J,EAAE18J,EAAEk2L,UAAUlyL,EAAE,EAAExI,EAAExB,EAAEwmE,EAAE,OAAO,CAACv8D,EAAEF,EAAE0yL,KAAK,IAAI1nL,EAAEhL,EAAEyyL,UAAU,IAAI1yL,EAAEG,KAAKA,EAAE,CAAC,OAAOzI,IAAIA,EAAEA,EAAEkyD,KAAK,CAAC8oI,UAAUznL,EAAE0nL,KAAK,EAAEje,IAAIz0K,EAAEy0K,IAAIke,QAAQ3yL,EAAE2yL,QAAQpmL,SAASvM,EAAEuM,SACrfo9C,KAAK,OAAOpvD,EAAE,CAAC,IAAIkzJ,EAAElzJ,EAAE3C,EAAEoI,EAAU,OAARE,EAAE1F,EAAEwQ,EAAEvQ,EAAS7C,EAAE68K,KAAK,KAAK,EAAc,GAAG,oBAAfhnB,EAAE71J,EAAE+6L,SAAiC,CAACh6B,EAAElL,EAAEt3J,KAAK6U,EAAE2tJ,EAAEz4J,GAAG,MAAM3F,EAAEo+J,EAAElL,EAAE,MAAMlzJ,EAAE,KAAK,EAAEkzJ,EAAE7B,OAAe,KAAT6B,EAAE7B,MAAY,GAAG,KAAK,EAAsD,GAAG,QAA3C1rJ,EAAE,oBAAdutJ,EAAE71J,EAAE+6L,SAAgCllC,EAAEt3J,KAAK6U,EAAE2tJ,EAAEz4J,GAAGutJ,SAAe,IAASvtJ,EAAE,MAAM3F,EAAEo+J,EAAEjhK,EAAE,GAAGihK,EAAEz4J,GAAG,MAAM3F,EAAE,KAAK,EAAEy3L,IAAG,GAAI,OAAOhyL,EAAEuM,WAAWhS,EAAEqxJ,OAAO,GAAe,QAAZ1rJ,EAAEjE,EAAEu0I,SAAiBv0I,EAAEu0I,QAAQ,CAACxwI,GAAGE,EAAE1K,KAAKwK,SAASgL,EAAE,CAACynL,UAAUznL,EAAE0nL,KAAKxyL,EAAEu0K,IAAIz0K,EAAEy0K,IAAIke,QAAQ3yL,EAAE2yL,QAAQpmL,SAASvM,EAAEuM,SAASo9C,KAAK,MAAM,OAAOlyD,GAAGxB,EAAEwB,EAAEuT,EAAEyxD,EAAEk8F,GAAGlhK,EAAEA,EAAEkyD,KAAK3+C,EAAE/K,GAAGC,EAAW,GAAG,QAAZF,EAAEA,EAAE2pD,MAC1e,IAAsB,QAAnBzpD,EAAEjE,EAAEq2L,OAAOhmE,SAAiB,MAAWtsH,EAAEE,EAAEypD,KAAKzpD,EAAEypD,KAAK,KAAK1tD,EAAEo2L,eAAenyL,EAAEjE,EAAEq2L,OAAOhmE,QAAQ,MAAc,OAAO70H,IAAIglE,EAAEk8F,GAAG18J,EAAEk2L,UAAU11H,EAAExgE,EAAEm2L,gBAAgBn8L,EAAEgG,EAAEo2L,eAAe56L,EAAEs7L,IAAI9yL,EAAE1F,EAAEq3L,MAAM3xL,EAAE1F,EAAE+/K,cAAc3hB,GAAG,SAASq6B,GAAGz4L,EAAEC,EAAEC,GAA8B,GAA3BF,EAAEC,EAAEg2I,QAAQh2I,EAAEg2I,QAAQ,KAAQ,OAAOj2I,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAErE,OAAOsE,IAAI,CAAC,IAAIuF,EAAExF,EAAEC,GAAGyB,EAAE8D,EAAEwM,SAAS,GAAG,OAAOtQ,EAAE,CAAqB,GAApB8D,EAAEwM,SAAS,KAAKxM,EAAEtF,EAAK,oBAAoBwB,EAAE,MAAMP,MAAM7D,EAAE,IAAIoE,IAAIA,EAAE9F,KAAK4J,KAAK,IAAIkzL,IAAI,IAAIz5B,EAAGlc,WAAW0P,KAC3b,SAASkmC,GAAG34L,EAAEC,EAAEC,EAAEsF,GAA8BtF,EAAE,QAAXA,EAAEA,EAAEsF,EAAtBvF,EAAED,EAAE+/K,sBAAmC,IAAS7/K,EAAED,EAAE9C,EAAE,GAAG8C,EAAEC,GAAGF,EAAE+/K,cAAc7/K,EAAE,IAAIF,EAAEq3L,QAAQr3L,EAAE23L,YAAYC,UAAU13L,GAC3I,IAAI04L,GAAG,CAAChjB,UAAU,SAAS51K,GAAG,SAAOA,EAAEA,EAAE64L,kBAAiBhZ,GAAG7/K,KAAKA,GAAM+1K,gBAAgB,SAAS/1K,EAAEC,EAAEC,GAAGF,EAAEA,EAAE64L,gBAAgB,IAAIrzL,EAAEszL,KAAKp3L,EAAEq3L,GAAG/4L,GAAGyF,EAAEwyL,GAAGzyL,EAAE9D,GAAG+D,EAAE2yL,QAAQn4L,OAAE,IAASC,GAAG,OAAOA,IAAIuF,EAAEuM,SAAS9R,GAAGm4L,GAAGr4L,EAAEyF,GAAGuzL,GAAGh5L,EAAE0B,EAAE8D,IAAIswK,oBAAoB,SAAS91K,EAAEC,EAAEC,GAAGF,EAAEA,EAAE64L,gBAAgB,IAAIrzL,EAAEszL,KAAKp3L,EAAEq3L,GAAG/4L,GAAGyF,EAAEwyL,GAAGzyL,EAAE9D,GAAG+D,EAAEy0K,IAAI,EAAEz0K,EAAE2yL,QAAQn4L,OAAE,IAASC,GAAG,OAAOA,IAAIuF,EAAEuM,SAAS9R,GAAGm4L,GAAGr4L,EAAEyF,GAAGuzL,GAAGh5L,EAAE0B,EAAE8D,IAAIqwK,mBAAmB,SAAS71K,EAAEC,GAAGD,EAAEA,EAAE64L,gBAAgB,IAAI34L,EAAE44L,KAAKtzL,EAAEuzL,GAAG/4L,GAAG0B,EAAEu2L,GAAG/3L,EAAEsF,GAAG9D,EAAEw4K,IAAI,OAAE,IAASj6K,GAAG,OAAOA,IAAIyB,EAAEsQ,SACjf/R,GAAGo4L,GAAGr4L,EAAE0B,GAAGs3L,GAAGh5L,EAAEwF,EAAEtF,KAAK,SAAS+4L,GAAGj5L,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,EAAEC,GAAiB,MAAM,oBAApB1F,EAAEA,EAAEi8I,WAAsCi9C,sBAAsBl5L,EAAEk5L,sBAAsB1zL,EAAEC,EAAEC,IAAGzF,EAAEgD,YAAWhD,EAAEgD,UAAUizK,wBAAsB6Z,GAAG7vL,EAAEsF,KAAKuqL,GAAGruL,EAAE+D,IAC/M,SAAS0zL,GAAGn5L,EAAEC,EAAEC,GAAG,IAAIsF,GAAE,EAAG9D,EAAEkyL,GAAOnuL,EAAExF,EAAEuvJ,YAA2W,MAA/V,kBAAkB/pJ,GAAG,OAAOA,EAAEA,EAAE8xL,GAAG9xL,IAAI/D,EAAEuyL,GAAGh0L,GAAG4zL,GAAGz6B,GAAEhnE,QAAyB3sF,GAAGD,EAAE,QAAtBA,EAAEvF,EAAEwvJ,oBAA4B,IAASjqJ,GAAGsuL,GAAG9zL,EAAE0B,GAAGkyL,IAAI3zL,EAAE,IAAIA,EAAEC,EAAEuF,GAAGzF,EAAE+/K,cAAc,OAAO9/K,EAAEw1C,YAAO,IAASx1C,EAAEw1C,MAAMx1C,EAAEw1C,MAAM,KAAKx1C,EAAE+1K,QAAQ4iB,GAAG54L,EAAEi8I,UAAUh8I,EAAEA,EAAE44L,gBAAgB74L,EAAEwF,KAAIxF,EAAEA,EAAEi8I,WAAY83C,4CAA4CryL,EAAE1B,EAAEg0L,0CAA0CvuL,GAAUxF,EAC3Z,SAASm5L,GAAGp5L,EAAEC,EAAEC,EAAEsF,GAAGxF,EAAEC,EAAEw1C,MAAM,oBAAoBx1C,EAAEw2J,2BAA2Bx2J,EAAEw2J,0BAA0Bv2J,EAAEsF,GAAG,oBAAoBvF,EAAEo5L,kCAAkCp5L,EAAEo5L,iCAAiCn5L,EAAEsF,GAAGvF,EAAEw1C,QAAQz1C,GAAG44L,GAAG9iB,oBAAoB71K,EAAEA,EAAEw1C,MAAM,MAC/P,SAAS6jJ,GAAGt5L,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEi8I,UAAUv6I,EAAE4mI,MAAMpoI,EAAEwB,EAAE+zC,MAAMz1C,EAAE+/K,cAAcr+K,EAAE+wJ,KAAKimC,GAAGhB,GAAG13L,GAAG,IAAIyF,EAAExF,EAAEuvJ,YAAY,kBAAkB/pJ,GAAG,OAAOA,EAAE/D,EAAEkH,QAAQ2uL,GAAG9xL,IAAIA,EAAEwuL,GAAGh0L,GAAG4zL,GAAGz6B,GAAEhnE,QAAQ1wF,EAAEkH,QAAQkrL,GAAG9zL,EAAEyF,IAAI8yL,GAAGv4L,EAAEE,EAAEwB,EAAE8D,GAAG9D,EAAE+zC,MAAMz1C,EAAE+/K,cAA2C,oBAA7Bt6K,EAAExF,EAAE4vJ,4BAAiD8oC,GAAG34L,EAAEC,EAAEwF,EAAEvF,GAAGwB,EAAE+zC,MAAMz1C,EAAE+/K,eAAe,oBAAoB9/K,EAAE4vJ,0BAA0B,oBAAoBnuJ,EAAE63L,yBAAyB,oBAAoB73L,EAAE83L,2BAA2B,oBAAoB93L,EAAE+3L,qBACvex5L,EAAEyB,EAAE+zC,MAAM,oBAAoB/zC,EAAE+3L,oBAAoB/3L,EAAE+3L,qBAAqB,oBAAoB/3L,EAAE83L,2BAA2B93L,EAAE83L,4BAA4Bv5L,IAAIyB,EAAE+zC,OAAOmjJ,GAAG9iB,oBAAoBp0K,EAAEA,EAAE+zC,MAAM,MAAM8iJ,GAAGv4L,EAAEE,EAAEwB,EAAE8D,GAAG9D,EAAE+zC,MAAMz1C,EAAE+/K,eAAe,oBAAoBr+K,EAAE6gJ,oBAAoBviJ,EAAEqxJ,OAAO,GAAG,IAAIqoC,GAAGnuL,MAAMC,QACvT,SAASmuL,GAAG35L,EAAEC,EAAEC,GAAW,GAAG,QAAXF,EAAEE,EAAE4tI,MAAiB,oBAAoB9tI,GAAG,kBAAkBA,EAAE,CAAC,GAAGE,EAAEo2K,OAAO,CAAY,GAAXp2K,EAAEA,EAAEo2K,OAAY,CAAC,GAAG,IAAIp2K,EAAEg6K,IAAI,MAAM/4K,MAAM7D,EAAE,MAAM,IAAIkI,EAAEtF,EAAE+7I,UAAU,IAAIz2I,EAAE,MAAMrE,MAAM7D,EAAE,IAAI0C,IAAI,IAAI0B,EAAE,GAAG1B,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE6tI,KAAK,oBAAoB7tI,EAAE6tI,KAAK7tI,EAAE6tI,IAAI8rD,aAAal4L,EAASzB,EAAE6tI,MAAI7tI,EAAE,SAASD,GAAG,IAAIC,EAAEuF,EAAEitJ,KAAKxyJ,IAAIy4L,KAAKz4L,EAAEuF,EAAEitJ,KAAK,IAAI,OAAOzyJ,SAASC,EAAEyB,GAAGzB,EAAEyB,GAAG1B,IAAK45L,WAAWl4L,EAASzB,GAAE,GAAG,kBAAkBD,EAAE,MAAMmB,MAAM7D,EAAE,MAAM,IAAI4C,EAAEo2K,OAAO,MAAMn1K,MAAM7D,EAAE,IAAI0C,IAAK,OAAOA,EAChe,SAAS65L,GAAG75L,EAAEC,GAAG,GAAG,aAAaD,EAAEpF,KAAK,MAAMuG,MAAM7D,EAAE,GAAG,oBAAoBW,OAAOgF,UAAU9G,SAASP,KAAKqE,GAAG,qBAAqBhC,OAAO+8B,KAAK/6B,GAAGwwD,KAAK,MAAM,IAAIxwD,IAClK,SAAS65L,GAAG95L,GAAG,SAASC,EAAEA,EAAEC,GAAG,GAAGF,EAAE,CAAC,IAAIwF,EAAEvF,EAAE85L,WAAW,OAAOv0L,GAAGA,EAAEw0L,WAAW95L,EAAED,EAAE85L,WAAW75L,GAAGD,EAAEg6L,YAAYh6L,EAAE85L,WAAW75L,EAAEA,EAAE85L,WAAW,KAAK95L,EAAEmxJ,MAAM,GAAG,SAASnxJ,EAAEA,EAAEsF,GAAG,IAAIxF,EAAE,OAAO,KAAK,KAAK,OAAOwF,GAAGvF,EAAEC,EAAEsF,GAAGA,EAAEA,EAAEs3I,QAAQ,OAAO,KAAK,SAASt3I,EAAExF,EAAEC,GAAG,IAAID,EAAE,IAAIuzE,IAAI,OAAOtzE,GAAG,OAAOA,EAAEjT,IAAIgT,EAAEc,IAAIb,EAAEjT,IAAIiT,GAAGD,EAAEc,IAAIb,EAAE9E,MAAM8E,GAAGA,EAAEA,EAAE68I,QAAQ,OAAO98I,EAAE,SAAS0B,EAAE1B,EAAEC,GAAsC,OAAnCD,EAAEk6L,GAAGl6L,EAAEC,IAAK9E,MAAM,EAAE6E,EAAE88I,QAAQ,KAAY98I,EAAE,SAASyF,EAAExF,EAAEC,EAAEsF,GAAa,OAAVvF,EAAE9E,MAAMqK,EAAMxF,EAA4B,QAAjBwF,EAAEvF,EAAEi/I,YAA6B15I,EAAEA,EAAErK,OAAQ+E,GAAGD,EAAEoxJ,MAAM,EACpfnxJ,GAAGsF,GAAEvF,EAAEoxJ,MAAM,EAASnxJ,GADoaA,EACla,SAASwF,EAAEzF,GAAsC,OAAnCD,GAAG,OAAOC,EAAEi/I,YAAYj/I,EAAEoxJ,MAAM,GAAUpxJ,EAAE,SAAS0F,EAAE3F,EAAEC,EAAEC,EAAEsF,GAAG,OAAG,OAAOvF,GAAG,IAAIA,EAAEi6K,MAAWj6K,EAAEk6L,GAAGj6L,EAAEF,EAAEq7C,KAAK71C,IAAKw2I,OAAOh8I,EAAEC,KAAEA,EAAEyB,EAAEzB,EAAEC,IAAK87I,OAAOh8I,EAASC,GAAE,SAASiiE,EAAEliE,EAAEC,EAAEC,EAAEsF,GAAG,OAAG,OAAOvF,GAAGA,EAAEm6L,cAAcl6L,EAAEtF,OAAY4K,EAAE9D,EAAEzB,EAAEC,EAAEooI,QAASwF,IAAI6rD,GAAG35L,EAAEC,EAAEC,GAAGsF,EAAEw2I,OAAOh8I,EAAEwF,KAAEA,EAAE60L,GAAGn6L,EAAEtF,KAAKsF,EAAElT,IAAIkT,EAAEooI,MAAM,KAAKtoI,EAAEq7C,KAAK71C,IAAKsoI,IAAI6rD,GAAG35L,EAAEC,EAAEC,GAAGsF,EAAEw2I,OAAOh8I,EAASwF,GAAE,SAAS9J,EAAEsE,EAAEC,EAAEC,EAAEsF,GAAG,OAAG,OAAOvF,GAAG,IAAIA,EAAEi6K,KAAKj6K,EAAEg8I,UAAUC,gBAAgBh8I,EAAEg8I,eAAej8I,EAAEg8I,UAAUq+C,iBAAiBp6L,EAAEo6L,iBAAsBr6L,EACrgBs6L,GAAGr6L,EAAEF,EAAEq7C,KAAK71C,IAAKw2I,OAAOh8I,EAAEC,KAAEA,EAAEyB,EAAEzB,EAAEC,EAAE2X,UAAU,KAAMmkI,OAAOh8I,EAASC,GAAE,SAAS/C,EAAE8C,EAAEC,EAAEC,EAAEsF,EAAEC,GAAG,OAAG,OAAOxF,GAAG,IAAIA,EAAEi6K,MAAWj6K,EAAEu6L,GAAGt6L,EAAEF,EAAEq7C,KAAK71C,EAAEC,IAAKu2I,OAAOh8I,EAAEC,KAAEA,EAAEyB,EAAEzB,EAAEC,IAAK87I,OAAOh8I,EAASC,GAAE,SAASm+J,EAAEp+J,EAAEC,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,kBAAkBA,EAAE,OAAOA,EAAEk6L,GAAG,GAAGl6L,EAAED,EAAEq7C,KAAKn7C,IAAK87I,OAAOh8I,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEo2K,UAAU,KAAKoC,EAAG,OAAOv4K,EAAEm6L,GAAGp6L,EAAErF,KAAKqF,EAAEjT,IAAIiT,EAAEqoI,MAAM,KAAKtoI,EAAEq7C,KAAKn7C,IAAK4tI,IAAI6rD,GAAG35L,EAAE,KAAKC,GAAGC,EAAE87I,OAAOh8I,EAAEE,EAAE,KAAKw4K,EAAG,OAAOz4K,EAAEs6L,GAAGt6L,EAAED,EAAEq7C,KAAKn7C,IAAK87I,OAAOh8I,EAAEC,EAAE,GAAGy5L,GAAGz5L,IAAI05K,EAAG15K,GAAG,OAAOA,EAAEu6L,GAAGv6L,EACnfD,EAAEq7C,KAAKn7C,EAAE,OAAQ87I,OAAOh8I,EAAEC,EAAE45L,GAAG75L,EAAEC,GAAG,OAAO,KAAK,SAASwQ,EAAEzQ,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE,OAAOzB,EAAEA,EAAEjT,IAAI,KAAK,GAAG,kBAAkBkT,GAAG,kBAAkBA,EAAE,OAAO,OAAOwB,EAAE,KAAKiE,EAAE3F,EAAEC,EAAE,GAAGC,EAAEsF,GAAG,GAAG,kBAAkBtF,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEm2K,UAAU,KAAKoC,EAAG,OAAOv4K,EAAElT,MAAM0U,EAAExB,EAAEtF,OAAOsvJ,EAAGhtJ,EAAE8C,EAAEC,EAAEC,EAAEooI,MAAMzwH,SAASrS,EAAE9D,GAAGwgE,EAAEliE,EAAEC,EAAEC,EAAEsF,GAAG,KAAK,KAAKkzK,EAAG,OAAOx4K,EAAElT,MAAM0U,EAAEhG,EAAEsE,EAAEC,EAAEC,EAAEsF,GAAG,KAAK,GAAGk0L,GAAGx5L,IAAIy5K,EAAGz5K,GAAG,OAAO,OAAOwB,EAAE,KAAKxE,EAAE8C,EAAEC,EAAEC,EAAEsF,EAAE,MAAMq0L,GAAG75L,EAAEE,GAAG,OAAO,KAAK,SAASgzJ,EAAElzJ,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,GAAG,kBAAkB8D,GAAG,kBAAkBA,EAAE,OACleG,EAAE1F,EADueD,EAAEA,EAAEynC,IAAIvnC,IACtf,KAAW,GAAGsF,EAAE9D,GAAG,GAAG,kBAAkB8D,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE6wK,UAAU,KAAKoC,EAAG,OAAOz4K,EAAEA,EAAEynC,IAAI,OAAOjiC,EAAExY,IAAIkT,EAAEsF,EAAExY,MAAM,KAAKwY,EAAE5K,OAAOsvJ,EAAGhtJ,EAAE+C,EAAED,EAAEwF,EAAE8iI,MAAMzwH,SAASnW,EAAE8D,EAAExY,KAAKk1E,EAAEjiE,EAAED,EAAEwF,EAAE9D,GAAG,KAAKg3K,EAAG,OAA2Ch9K,EAAEuE,EAAtCD,EAAEA,EAAEynC,IAAI,OAAOjiC,EAAExY,IAAIkT,EAAEsF,EAAExY,MAAM,KAAWwY,EAAE9D,GAAG,GAAGg4L,GAAGl0L,IAAIm0K,EAAGn0K,GAAG,OAAwBtI,EAAE+C,EAAnBD,EAAEA,EAAEynC,IAAIvnC,IAAI,KAAWsF,EAAE9D,EAAE,MAAMm4L,GAAG55L,EAAEuF,GAAG,OAAO,KAAK,SAASnI,EAAEqE,EAAEgE,EAAEC,EAAEu8D,GAAG,IAAI,IAAIxmE,EAAE,KAAK6B,EAAE,KAAKyY,EAAEtQ,EAAE0G,EAAE1G,EAAE,EAAE3F,EAAE,KAAK,OAAOiW,GAAG5J,EAAEzG,EAAEhK,OAAOyQ,IAAI,CAAC4J,EAAE7a,MAAMiR,GAAGrM,EAAEiW,EAAEA,EAAE,MAAMjW,EAAEiW,EAAE8mI,QAAQ,IAAI5/I,EAAEuT,EAAE/O,EAAEsU,EAAErQ,EAAEyG,GAAG81D,GAAG,GAAG,OAAOhlE,EAAE,CAAC,OAAO8Y,IAAIA,EAAEjW,GAAG,MAAMC,GAAGgW,GAAG,OACjf9Y,EAAEgiJ,WAAWj/I,EAAEyB,EAAEsU,GAAGtQ,EAAED,EAAEvI,EAAEwI,EAAE0G,GAAG,OAAO7O,EAAE7B,EAAEwB,EAAEK,EAAEu/I,QAAQ5/I,EAAEK,EAAEL,EAAE8Y,EAAEjW,EAAE,GAAGqM,IAAIzG,EAAEhK,OAAO,OAAOuE,EAAEwB,EAAEsU,GAAGta,EAAE,GAAG,OAAOsa,EAAE,CAAC,KAAK5J,EAAEzG,EAAEhK,OAAOyQ,IAAkB,QAAd4J,EAAEooJ,EAAE18J,EAAEiE,EAAEyG,GAAG81D,MAAcx8D,EAAED,EAAEuQ,EAAEtQ,EAAE0G,GAAG,OAAO7O,EAAE7B,EAAEsa,EAAEzY,EAAEu/I,QAAQ9mI,EAAEzY,EAAEyY,GAAG,OAAOta,EAAE,IAAIsa,EAAExQ,EAAE9D,EAAEsU,GAAG5J,EAAEzG,EAAEhK,OAAOyQ,IAAsB,QAAlBrM,EAAEmzJ,EAAEl9I,EAAEtU,EAAE0K,EAAEzG,EAAEyG,GAAG81D,MAAcliE,GAAG,OAAOD,EAAEm/I,WAAWlpI,EAAE2xB,OAAO,OAAO5nC,EAAE/S,IAAIof,EAAErM,EAAE/S,KAAK0Y,EAAED,EAAE1F,EAAE2F,EAAE0G,GAAG,OAAO7O,EAAE7B,EAAEqE,EAAExC,EAAEu/I,QAAQ/8I,EAAExC,EAAEwC,GAA4C,OAAzCC,GAAGgW,EAAEg+D,SAAQ,SAASh0E,GAAG,OAAOC,EAAEyB,EAAE1B,MAAYtE,EAAE,SAAS4F,EAAEI,EAAEgE,EAAEC,EAAEu8D,GAAG,IAAIxmE,EAAEi+K,EAAGh0K,GAAG,GAAG,oBAAoBjK,EAAE,MAAMyF,MAAM7D,EAAE,MAAkB,GAAG,OAAfqI,EAAEjK,EAAEE,KAAK+J,IAC1e,MAAMxE,MAAM7D,EAAE,MAAM,IAAI,IAAIC,EAAE7B,EAAE,KAAKsa,EAAEtQ,EAAE0G,EAAE1G,EAAE,EAAE3F,EAAE,KAAK7C,EAAEyI,EAAEypD,OAAO,OAAOp5C,IAAI9Y,EAAE7P,KAAK+e,IAAIlP,EAAEyI,EAAEypD,OAAO,CAACp5C,EAAE7a,MAAMiR,GAAGrM,EAAEiW,EAAEA,EAAE,MAAMjW,EAAEiW,EAAE8mI,QAAQ,IAAIx7I,EAAEmP,EAAE/O,EAAEsU,EAAE9Y,EAAE/P,MAAM+0E,GAAG,GAAG,OAAO5gE,EAAE,CAAC,OAAO0U,IAAIA,EAAEjW,GAAG,MAAMC,GAAGgW,GAAG,OAAO1U,EAAE49I,WAAWj/I,EAAEyB,EAAEsU,GAAGtQ,EAAED,EAAEnE,EAAEoE,EAAE0G,GAAG,OAAO7O,EAAE7B,EAAE4F,EAAE/D,EAAEu/I,QAAQx7I,EAAE/D,EAAE+D,EAAE0U,EAAEjW,EAAE,GAAG7C,EAAE7P,KAAK,OAAO6S,EAAEwB,EAAEsU,GAAGta,EAAE,GAAG,OAAOsa,EAAE,CAAC,MAAM9Y,EAAE7P,KAAK+e,IAAIlP,EAAEyI,EAAEypD,OAAwB,QAAjBlyD,EAAEkhK,EAAE18J,EAAExE,EAAE/P,MAAM+0E,MAAcx8D,EAAED,EAAEvI,EAAEwI,EAAE0G,GAAG,OAAO7O,EAAE7B,EAAEwB,EAAEK,EAAEu/I,QAAQ5/I,EAAEK,EAAEL,GAAG,OAAOxB,EAAE,IAAIsa,EAAExQ,EAAE9D,EAAEsU,IAAI9Y,EAAE7P,KAAK+e,IAAIlP,EAAEyI,EAAEypD,OAA4B,QAArBlyD,EAAEg2J,EAAEl9I,EAAEtU,EAAE0K,EAAElP,EAAE/P,MAAM+0E,MAAcliE,GAAG,OAAO9C,EAAEgiJ,WAChflpI,EAAE2xB,OAAO,OAAOzqC,EAAElQ,IAAIof,EAAElP,EAAElQ,KAAK0Y,EAAED,EAAEvI,EAAEwI,EAAE0G,GAAG,OAAO7O,EAAE7B,EAAEwB,EAAEK,EAAEu/I,QAAQ5/I,EAAEK,EAAEL,GAA4C,OAAzC8C,GAAGgW,EAAEg+D,SAAQ,SAASh0E,GAAG,OAAOC,EAAEyB,EAAE1B,MAAYtE,EAAE,OAAO,SAASsE,EAAEwF,EAAEC,EAAEE,GAAG,IAAIu8D,EAAE,kBAAkBz8D,GAAG,OAAOA,GAAGA,EAAE7K,OAAOsvJ,GAAI,OAAOzkJ,EAAEzY,IAAIk1E,IAAIz8D,EAAEA,EAAE6iI,MAAMzwH,UAAU,IAAInc,EAAE,kBAAkB+J,GAAG,OAAOA,EAAE,GAAG/J,EAAE,OAAO+J,EAAE4wK,UAAU,KAAKoC,EAAGz4K,EAAE,CAAS,IAARtE,EAAE+J,EAAEzY,IAAQk1E,EAAE18D,EAAE,OAAO08D,GAAG,CAAC,GAAGA,EAAEl1E,MAAM0O,EAAE,CAAC,OAAOwmE,EAAEg4G,KAAK,KAAK,EAAE,GAAGz0K,EAAE7K,OAAOsvJ,EAAG,CAAChqJ,EAAEF,EAAEkiE,EAAE46E,UAASt3I,EAAE9D,EAAEwgE,EAAEz8D,EAAE6iI,MAAMzwH,WAAYmkI,OAAOh8I,EAAEA,EAAEwF,EAAE,MAAMxF,EAAE,MAAM,QAAQ,GAAGkiE,EAAEk4H,cAAc30L,EAAE7K,KAAK,CAACsF,EAAEF,EAAEkiE,EAAE46E,UAC5et3I,EAAE9D,EAAEwgE,EAAEz8D,EAAE6iI,QAASwF,IAAI6rD,GAAG35L,EAAEkiE,EAAEz8D,GAAGD,EAAEw2I,OAAOh8I,EAAEA,EAAEwF,EAAE,MAAMxF,GAAGE,EAAEF,EAAEkiE,GAAG,MAAWjiE,EAAED,EAAEkiE,GAAGA,EAAEA,EAAE46E,QAAQr3I,EAAE7K,OAAOsvJ,IAAI1kJ,EAAEg1L,GAAG/0L,EAAE6iI,MAAMzwH,SAAS7X,EAAEq7C,KAAK11C,EAAEF,EAAEzY,MAAOgvJ,OAAOh8I,EAAEA,EAAEwF,KAAIG,EAAE00L,GAAG50L,EAAE7K,KAAK6K,EAAEzY,IAAIyY,EAAE6iI,MAAM,KAAKtoI,EAAEq7C,KAAK11C,IAAKmoI,IAAI6rD,GAAG35L,EAAEwF,EAAEC,GAAGE,EAAEq2I,OAAOh8I,EAAEA,EAAE2F,GAAG,OAAOD,EAAE1F,GAAG,KAAK04K,EAAG14K,EAAE,CAAC,IAAIkiE,EAAEz8D,EAAEzY,IAAI,OAAOwY,GAAG,CAAC,GAAGA,EAAExY,MAAMk1E,EAAX,CAAa,GAAG,IAAI18D,EAAE00K,KAAK10K,EAAEy2I,UAAUC,gBAAgBz2I,EAAEy2I,eAAe12I,EAAEy2I,UAAUq+C,iBAAiB70L,EAAE60L,eAAe,CAACp6L,EAAEF,EAAEwF,EAAEs3I,UAASt3I,EAAE9D,EAAE8D,EAAEC,EAAEoS,UAAU,KAAMmkI,OAAOh8I,EAAEA,EAAEwF,EAAE,MAAMxF,EAAOE,EAAEF,EAAEwF,GAAG,MAAWvF,EAAED,EAAEwF,GAAGA,EAAEA,EAAEs3I,SAAQt3I,EACpf+0L,GAAG90L,EAAEzF,EAAEq7C,KAAK11C,IAAKq2I,OAAOh8I,EAAEA,EAAEwF,EAAE,OAAOE,EAAE1F,GAAG,GAAG,kBAAkByF,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOD,GAAG,IAAIA,EAAE00K,KAAKh6K,EAAEF,EAAEwF,EAAEs3I,UAASt3I,EAAE9D,EAAE8D,EAAEC,IAAKu2I,OAAOh8I,EAAEA,EAAEwF,IAAItF,EAAEF,EAAEwF,IAAGA,EAAE20L,GAAG10L,EAAEzF,EAAEq7C,KAAK11C,IAAKq2I,OAAOh8I,EAAEA,EAAEwF,GAAGE,EAAE1F,GAAG,GAAG05L,GAAGj0L,GAAG,OAAOpI,EAAE2C,EAAEwF,EAAEC,EAAEE,GAAG,GAAGg0K,EAAGl0K,GAAG,OAAOnE,EAAEtB,EAAEwF,EAAEC,EAAEE,GAAc,GAAXjK,GAAGm+L,GAAG75L,EAAEyF,GAAM,qBAAqBA,IAAIy8D,EAAE,OAAOliE,EAAEk6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM/4K,MAAM7D,EAAE,IAAI88K,EAAGp6K,EAAEpF,OAAO,cAAe,OAAOsF,EAAEF,EAAEwF,IAAI,IAAIi1L,GAAGX,IAAG,GAAIY,GAAGZ,IAAG,GAAIa,GAAG,GAAGC,GAAGjH,GAAGgH,IAAIE,GAAGlH,GAAGgH,IAAIG,GAAGnH,GAAGgH,IACtd,SAASI,GAAG/6L,GAAG,GAAGA,IAAI26L,GAAG,MAAMx5L,MAAM7D,EAAE,MAAM,OAAO0C,EAAE,SAASg7L,GAAGh7L,EAAEC,GAAyC,OAAtC89J,GAAE+8B,GAAG76L,GAAG89J,GAAE88B,GAAG76L,GAAG+9J,GAAE68B,GAAGD,IAAI36L,EAAEC,EAAE68K,UAAmB,KAAK,EAAE,KAAK,GAAG78K,GAAGA,EAAEA,EAAEg7L,iBAAiBh7L,EAAEs8K,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkEn8K,EAAEm8K,GAArCn8K,GAAvBD,EAAE,IAAIA,EAAEC,EAAEqpK,WAAWrpK,GAAMs8K,cAAc,KAAKv8K,EAAEA,EAAE4rK,SAAkBtS,GAAEshC,IAAI78B,GAAE68B,GAAG36L,GAAG,SAASi7L,KAAK5hC,GAAEshC,IAAIthC,GAAEuhC,IAAIvhC,GAAEwhC,IAAI,SAASK,GAAGn7L,GAAG+6L,GAAGD,GAAG1oG,SAAS,IAAInyF,EAAE86L,GAAGH,GAAGxoG,SAAalyF,EAAEk8K,GAAGn8K,EAAED,EAAEpF,MAAMqF,IAAIC,IAAI69J,GAAE88B,GAAG76L,GAAG+9J,GAAE68B,GAAG16L,IAAI,SAASk7L,GAAGp7L,GAAG66L,GAAGzoG,UAAUpyF,IAAIs5J,GAAEshC,IAAIthC,GAAEuhC,KAAK,IAAIn0F,GAAEitF,GAAG,GAC9c,SAAS0H,GAAGr7L,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEi6K,IAAI,CAAC,IAAIh6K,EAAED,EAAE8/K,cAAc,GAAG,OAAO7/K,IAAmB,QAAfA,EAAEA,EAAE8/K,aAAqB,OAAO9/K,EAAE+L,MAAM,OAAO/L,EAAE+L,MAAM,OAAOhM,OAAO,GAAG,KAAKA,EAAEi6K,UAAK,IAASj6K,EAAEmzI,cAAckoD,aAAa,GAAG,KAAa,GAARr7L,EAAEoxJ,OAAU,OAAOpxJ,OAAO,GAAG,OAAOA,EAAEqoB,MAAM,CAACroB,EAAEqoB,MAAM0zH,OAAO/7I,EAAEA,EAAEA,EAAEqoB,MAAM,SAAS,GAAGroB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE68I,SAAS,CAAC,GAAG,OAAO78I,EAAE+7I,QAAQ/7I,EAAE+7I,SAASh8I,EAAE,OAAO,KAAKC,EAAEA,EAAE+7I,OAAO/7I,EAAE68I,QAAQd,OAAO/7I,EAAE+7I,OAAO/7I,EAAEA,EAAE68I,QAAQ,OAAO,KAAK,IAAIy+C,GAAG,KAAKC,GAAG,KAAKC,IAAG,EACpd,SAASC,GAAG17L,EAAEC,GAAG,IAAIC,EAAEy7L,GAAG,EAAE,KAAK,KAAK,GAAGz7L,EAAEk6L,YAAY,UAAUl6L,EAAEtF,KAAK,UAAUsF,EAAE+7I,UAAUh8I,EAAEC,EAAE87I,OAAOh8I,EAAEE,EAAEmxJ,MAAM,EAAE,OAAOrxJ,EAAE+5L,YAAY/5L,EAAE+5L,WAAWC,WAAW95L,EAAEF,EAAE+5L,WAAW75L,GAAGF,EAAEi6L,YAAYj6L,EAAE+5L,WAAW75L,EAAE,SAAS07L,GAAG57L,EAAEC,GAAG,OAAOD,EAAEk6K,KAAK,KAAK,EAAE,IAAIh6K,EAAEF,EAAEpF,KAAyE,OAAO,QAA3EqF,EAAE,IAAIA,EAAE68K,UAAU58K,EAAE+yB,gBAAgBhzB,EAAE+oH,SAAS/1F,cAAc,KAAKhzB,KAAmBD,EAAEi8I,UAAUh8I,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAE67L,cAAc,IAAI57L,EAAE68K,SAAS,KAAK78K,KAAYD,EAAEi8I,UAAUh8I,GAAE,GAAO,KAAK,GAAY,QAAQ,OAAM,GACve,SAAS67L,GAAG97L,GAAG,GAAGy7L,GAAG,CAAC,IAAIx7L,EAAEu7L,GAAG,GAAGv7L,EAAE,CAAC,IAAIC,EAAED,EAAE,IAAI27L,GAAG57L,EAAEC,GAAG,CAAqB,KAApBA,EAAEizL,GAAGhzL,EAAEgwL,gBAAqB0L,GAAG57L,EAAEC,GAAuC,OAAnCD,EAAEqxJ,OAAe,KAATrxJ,EAAEqxJ,MAAY,EAAEoqC,IAAG,OAAGF,GAAGv7L,GAAS07L,GAAGH,GAAGr7L,GAAGq7L,GAAGv7L,EAAEw7L,GAAGtI,GAAGjzL,EAAEw8K,iBAAiBz8K,EAAEqxJ,OAAe,KAATrxJ,EAAEqxJ,MAAY,EAAEoqC,IAAG,EAAGF,GAAGv7L,GAAG,SAAS+7L,GAAG/7L,GAAG,IAAIA,EAAEA,EAAEg8I,OAAO,OAAOh8I,GAAG,IAAIA,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,KAAK,KAAKl6K,EAAEk6K,KAAKl6K,EAAEA,EAAEg8I,OAAOu/C,GAAGv7L,EAC5S,SAASg8L,GAAGh8L,GAAG,GAAGA,IAAIu7L,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAG/7L,GAAGy7L,IAAG,GAAG,EAAG,IAAIx7L,EAAED,EAAEpF,KAAK,GAAG,IAAIoF,EAAEk6K,KAAK,SAASj6K,GAAG,SAASA,IAAI4yL,GAAG5yL,EAAED,EAAEozI,eAAe,IAAInzI,EAAEu7L,GAAGv7L,GAAGy7L,GAAG17L,EAAEC,GAAGA,EAAEizL,GAAGjzL,EAAEiwL,aAAmB,GAAN6L,GAAG/7L,GAAM,KAAKA,EAAEk6K,IAAI,CAAgD,KAA7Bl6K,EAAE,QAApBA,EAAEA,EAAE+/K,eAAyB//K,EAAEggL,WAAW,MAAW,MAAM7+K,MAAM7D,EAAE,MAAM0C,EAAE,CAAiB,IAAhBA,EAAEA,EAAEkwL,YAAgBjwL,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE88K,SAAS,CAAC,IAAI58K,EAAEF,EAAEiM,KAAK,GAAG,OAAO/L,EAAE,CAAC,GAAG,IAAID,EAAE,CAACu7L,GAAGtI,GAAGlzL,EAAEkwL,aAAa,MAAMlwL,EAAEC,QAAQ,MAAMC,GAAG,OAAOA,GAAG,OAAOA,GAAGD,IAAID,EAAEA,EAAEkwL,YAAYsL,GAAG,WAAWA,GAAGD,GAAGrI,GAAGlzL,EAAEi8I,UAAUi0C,aAAa,KAAK,OAAM,EACtf,SAASpyH,KAAK09H,GAAGD,GAAG,KAAKE,IAAG,EAAG,IAAIQ,GAAG,GAAG,SAASC,KAAK,IAAI,IAAIl8L,EAAE,EAAEA,EAAEi8L,GAAGtgM,OAAOqE,IAAIi8L,GAAGj8L,GAAGm8L,8BAA8B,KAAKF,GAAGtgM,OAAO,EAAE,IAAIygM,GAAG5jB,EAAG/B,uBAAuB4lB,GAAG7jB,EAAG9B,wBAAwB4lB,GAAG,EAAEj9B,GAAE,KAAKG,GAAE,KAAKv5D,GAAE,KAAKs2F,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAK,MAAMt7L,MAAM7D,EAAE,MAAO,SAASo/L,GAAG18L,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEtE,QAAQuE,EAAEF,EAAErE,OAAOuE,IAAI,IAAI2vL,GAAG7vL,EAAEE,GAAGD,EAAEC,IAAI,OAAM,EAAG,OAAM,EAC9X,SAASy8L,GAAG38L,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAyH,GAAtH62L,GAAG72L,EAAE45J,GAAEp/J,EAAEA,EAAE8/K,cAAc,KAAK9/K,EAAE03L,YAAY,KAAK13L,EAAEo3L,MAAM,EAAE+E,GAAGhqG,QAAQ,OAAOpyF,GAAG,OAAOA,EAAE+/K,cAAc6c,GAAGC,GAAG78L,EAAEE,EAAEsF,EAAE9D,GAAM86L,GAAG,CAAC/2L,EAAE,EAAE,EAAE,CAAO,GAAN+2L,IAAG,IAAQ,GAAG/2L,GAAG,MAAMtE,MAAM7D,EAAE,MAAMmI,GAAG,EAAEwgG,GAAEu5D,GAAE,KAAKv/J,EAAE03L,YAAY,KAAKyE,GAAGhqG,QAAQ0qG,GAAG98L,EAAEE,EAAEsF,EAAE9D,SAAS86L,IAAkE,GAA9DJ,GAAGhqG,QAAQ2qG,GAAG98L,EAAE,OAAOu/J,IAAG,OAAOA,GAAEpwG,KAAKktI,GAAG,EAAEr2F,GAAEu5D,GAAEH,GAAE,KAAKk9B,IAAG,EAAMt8L,EAAE,MAAMkB,MAAM7D,EAAE,MAAM,OAAO0C,EAAE,SAASg9L,KAAK,IAAIh9L,EAAE,CAAC+/K,cAAc,KAAK6X,UAAU,KAAKqF,UAAU,KAAK/gG,MAAM,KAAK9sC,KAAK,MAA8C,OAAxC,OAAO62C,GAAEo5D,GAAE0gB,cAAc95E,GAAEjmG,EAAEimG,GAAEA,GAAE72C,KAAKpvD,EAASimG,GAC/e,SAASi3F,KAAK,GAAG,OAAO19B,GAAE,CAAC,IAAIx/J,EAAEq/J,GAAEngB,UAAUl/I,EAAE,OAAOA,EAAEA,EAAE+/K,cAAc,UAAU//K,EAAEw/J,GAAEpwG,KAAK,IAAInvD,EAAE,OAAOgmG,GAAEo5D,GAAE0gB,cAAc95E,GAAE72C,KAAK,GAAG,OAAOnvD,EAAEgmG,GAAEhmG,EAAEu/J,GAAEx/J,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMmB,MAAM7D,EAAE,MAAU0C,EAAE,CAAC+/K,eAAPvgB,GAAEx/J,GAAqB+/K,cAAc6X,UAAUp4B,GAAEo4B,UAAUqF,UAAUz9B,GAAEy9B,UAAU/gG,MAAMsjE,GAAEtjE,MAAM9sC,KAAK,MAAM,OAAO62C,GAAEo5D,GAAE0gB,cAAc95E,GAAEjmG,EAAEimG,GAAEA,GAAE72C,KAAKpvD,EAAE,OAAOimG,GAAE,SAASk3F,GAAGn9L,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,EACvY,SAASm9L,GAAGp9L,GAAG,IAAIC,EAAEi9L,KAAKh9L,EAAED,EAAEi8F,MAAM,GAAG,OAAOh8F,EAAE,MAAMiB,MAAM7D,EAAE,MAAM4C,EAAEm9L,oBAAoBr9L,EAAE,IAAIwF,EAAEg6J,GAAE99J,EAAE8D,EAAEy3L,UAAUx3L,EAAEvF,EAAE6xH,QAAQ,GAAG,OAAOtsH,EAAE,CAAC,GAAG,OAAO/D,EAAE,CAAC,IAAIgE,EAAEhE,EAAE0tD,KAAK1tD,EAAE0tD,KAAK3pD,EAAE2pD,KAAK3pD,EAAE2pD,KAAK1pD,EAAEF,EAAEy3L,UAAUv7L,EAAE+D,EAAEvF,EAAE6xH,QAAQ,KAAK,GAAG,OAAOrwH,EAAE,CAACA,EAAEA,EAAE0tD,KAAK5pD,EAAEA,EAAEoyL,UAAU,IAAIjyL,EAAED,EAAED,EAAE,KAAKy8D,EAAExgE,EAAE,EAAE,CAAC,IAAIhG,EAAEwmE,EAAEi2H,KAAK,IAAImE,GAAG5gM,KAAKA,EAAE,OAAOiK,IAAIA,EAAEA,EAAEypD,KAAK,CAAC+oI,KAAK,EAAE1nE,OAAOvuD,EAAEuuD,OAAO6sE,aAAap7H,EAAEo7H,aAAaC,WAAWr7H,EAAEq7H,WAAWnuI,KAAK,OAAO5pD,EAAE08D,EAAEo7H,eAAet9L,EAAEkiE,EAAEq7H,WAAWv9L,EAAEwF,EAAE08D,EAAEuuD,YAAY,CAAC,IAAIvzH,EAAE,CAACi7L,KAAKz8L,EAAE+0H,OAAOvuD,EAAEuuD,OAAO6sE,aAAap7H,EAAEo7H,aAC9fC,WAAWr7H,EAAEq7H,WAAWnuI,KAAK,MAAM,OAAOzpD,GAAGD,EAAEC,EAAEzI,EAAEuI,EAAED,GAAGG,EAAEA,EAAEypD,KAAKlyD,EAAEmiK,GAAEg4B,OAAO37L,EAAE88L,IAAI98L,EAAEwmE,EAAEA,EAAE9S,WAAW,OAAO8S,GAAGA,IAAIxgE,GAAG,OAAOiE,EAAEF,EAAED,EAAEG,EAAEypD,KAAK1pD,EAAEmqL,GAAGrqL,EAAEvF,EAAE8/K,iBAAiBuX,IAAG,GAAIr3L,EAAE8/K,cAAcv6K,EAAEvF,EAAE23L,UAAUnyL,EAAExF,EAAEg9L,UAAUt3L,EAAEzF,EAAEs9L,kBAAkBh4L,EAAE,MAAM,CAACvF,EAAE8/K,cAAc7/K,EAAEu9L,UACtQ,SAASC,GAAG19L,GAAG,IAAIC,EAAEi9L,KAAKh9L,EAAED,EAAEi8F,MAAM,GAAG,OAAOh8F,EAAE,MAAMiB,MAAM7D,EAAE,MAAM4C,EAAEm9L,oBAAoBr9L,EAAE,IAAIwF,EAAEtF,EAAEu9L,SAAS/7L,EAAExB,EAAE6xH,QAAQtsH,EAAExF,EAAE8/K,cAAc,GAAG,OAAOr+K,EAAE,CAACxB,EAAE6xH,QAAQ,KAAK,IAAIrsH,EAAEhE,EAAEA,EAAE0tD,KAAK,GAAG3pD,EAAEzF,EAAEyF,EAAEC,EAAE+qH,QAAQ/qH,EAAEA,EAAE0pD,WAAW1pD,IAAIhE,GAAGmuL,GAAGpqL,EAAExF,EAAE8/K,iBAAiBuX,IAAG,GAAIr3L,EAAE8/K,cAAct6K,EAAE,OAAOxF,EAAEg9L,YAAYh9L,EAAE23L,UAAUnyL,GAAGvF,EAAEs9L,kBAAkB/3L,EAAE,MAAM,CAACA,EAAED,GACnV,SAASm4L,GAAG39L,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE29L,YAAYp4L,EAAEA,EAAEvF,EAAE49L,SAAS,IAAIn8L,EAAEzB,EAAEk8L,8BAAyI,GAAxG,OAAOz6L,EAAE1B,EAAE0B,IAAI8D,GAAUxF,EAAEA,EAAE89L,kBAAiB99L,GAAGs8L,GAAGt8L,KAAKA,KAAEC,EAAEk8L,8BAA8B32L,EAAEy2L,GAAGhhM,KAAKgF,KAAMD,EAAE,OAAOE,EAAED,EAAE49L,SAAoB,MAAX5B,GAAGhhM,KAAKgF,GAASkB,MAAM7D,EAAE,MACzP,SAASygM,GAAG/9L,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE+9J,GAAE,GAAG,OAAO/9J,EAAE,MAAMP,MAAM7D,EAAE,MAAM,IAAImI,EAAExF,EAAE29L,YAAYl4L,EAAED,EAAExF,EAAE49L,SAASl4L,EAAEy2L,GAAGhqG,QAAQlwB,EAAEv8D,EAAEgnI,UAAS,WAAW,OAAOgxD,GAAGj8L,EAAEzB,EAAEC,MAAKxE,EAAEwmE,EAAE,GAAGhlE,EAAEglE,EAAE,GAAGA,EAAE+jC,GAAE,IAAIm4D,EAAEp+J,EAAE+/K,cAActvK,EAAE2tJ,EAAE3L,KAAKS,EAAEziJ,EAAEutL,YAAY3gM,EAAE+gK,EAAEvzJ,OAAOuzJ,EAAEA,EAAE7oB,UAAU,IAAIj0I,EAAE+9J,GACuO,OADrOr/J,EAAE+/K,cAAc,CAACttB,KAAKhiJ,EAAE5F,OAAO5K,EAAEs1I,UAAU/vI,GAAGG,EAAE0lI,WAAU,WAAW56H,EAAEutL,YAAY99L,EAAEuQ,EAAEwtL,YAAYviM,EAAE,IAAIsE,EAAEyF,EAAExF,EAAE49L,SAAS,IAAIhO,GAAGnqL,EAAE1F,GAAG,CAACA,EAAEE,EAAED,EAAE49L,SAAShO,GAAG3yL,EAAE8C,KAAKtE,EAAEsE,GAAGA,EAAE+4L,GAAGz3L,GAAGI,EAAEo8L,kBAAkB99L,EAAE0B,EAAE4hL,cAActjL,EAAE0B,EAAEo8L,iBAAiBp8L,EAAEiiL,gBAAgB3jL,EAAE,IAAI,IAAIwF,EAC5f9D,EAAEkiL,cAAcj+K,EAAE3F,EAAE,EAAE2F,GAAG,CAAC,IAAIu8D,EAAE,GAAGwhH,GAAG/9K,GAAGtE,EAAE,GAAG6gE,EAAE18D,EAAE08D,IAAIliE,EAAE2F,IAAItE,MAAK,CAACnB,EAAED,EAAEuF,IAAIG,EAAE0lI,WAAU,WAAW,OAAO7lI,EAAEvF,EAAE49L,SAAQ,WAAW,IAAI79L,EAAEyQ,EAAEutL,YAAY99L,EAAEuQ,EAAEwtL,YAAY,IAAI/9L,EAAEF,EAAEC,EAAE49L,UAAU,IAAIr4L,EAAEuzL,GAAGz3L,GAAGI,EAAEo8L,kBAAkBt4L,EAAE9D,EAAE4hL,aAAa,MAAMvjL,GAAGG,GAAE,WAAW,MAAMH,WAAS,CAACE,EAAEuF,IAAIqqL,GAAG38B,EAAEhzJ,IAAI2vL,GAAGxyL,EAAE4C,IAAI4vL,GAAGzxB,EAAE54J,MAAKxF,EAAE,CAAC+xH,QAAQ,KAAK0rE,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkBtgM,IAAKugM,SAAS/hM,EAAEwiM,GAAG5gF,KAAK,KAAK+hD,GAAEr/J,GAAGkiE,EAAEg6B,MAAMl8F,EAAEkiE,EAAE+6H,UAAU,KAAK//L,EAAEygM,GAAGj8L,EAAEzB,EAAEC,GAAGgiE,EAAE69G,cAAc79G,EAAE01H,UAAU16L,GAAUA,EACte,SAASihM,GAAGn+L,EAAEC,EAAEC,GAAc,OAAO69L,GAAZb,KAAiBl9L,EAAEC,EAAEC,GAAG,SAASk+L,GAAGp+L,GAAG,IAAIC,EAAE+8L,KAAmL,MAA9K,oBAAoBh9L,IAAIA,EAAEA,KAAKC,EAAE8/K,cAAc9/K,EAAE23L,UAAU53L,EAAoFA,GAAlFA,EAAEC,EAAEi8F,MAAM,CAAC61B,QAAQ,KAAK0rE,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkBx9L,IAAOy9L,SAASS,GAAG5gF,KAAK,KAAK+hD,GAAEr/J,GAAS,CAACC,EAAE8/K,cAAc//K,GAChR,SAASq+L,GAAGr+L,EAAEC,EAAEC,EAAEsF,GAAkO,OAA/NxF,EAAE,CAACk6K,IAAIl6K,EAAE6yH,OAAO5yH,EAAE63D,QAAQ53D,EAAEo+L,KAAK94L,EAAE4pD,KAAK,MAAsB,QAAhBnvD,EAAEo/J,GAAEs4B,cAAsB13L,EAAE,CAAC85L,WAAW,MAAM16B,GAAEs4B,YAAY13L,EAAEA,EAAE85L,WAAW/5L,EAAEovD,KAAKpvD,GAAmB,QAAfE,EAAED,EAAE85L,YAAoB95L,EAAE85L,WAAW/5L,EAAEovD,KAAKpvD,GAAGwF,EAAEtF,EAAEkvD,KAAKlvD,EAAEkvD,KAAKpvD,EAAEA,EAAEovD,KAAK5pD,EAAEvF,EAAE85L,WAAW/5L,GAAWA,EAAE,SAASu+L,GAAGv+L,GAA4B,OAAdA,EAAE,CAACoyF,QAAQpyF,GAAhBg9L,KAA4Bjd,cAAc//K,EAAE,SAASw+L,KAAK,OAAOtB,KAAKnd,cAAc,SAAS0e,GAAGz+L,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEs7L,KAAK39B,GAAEhO,OAAOrxJ,EAAE0B,EAAEq+K,cAAcse,GAAG,EAAEp+L,EAAEC,OAAE,OAAO,IAASsF,EAAE,KAAKA,GACjc,SAASk5L,GAAG1+L,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEw7L,KAAK13L,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIC,OAAE,EAAO,GAAG,OAAO+5J,GAAE,CAAC,IAAI95J,EAAE85J,GAAEugB,cAA0B,GAAZt6K,EAAEC,EAAEoyD,QAAW,OAAOtyD,GAAGk3L,GAAGl3L,EAAEE,EAAE44L,MAAmB,YAAZD,GAAGp+L,EAAEC,EAAEuF,EAAED,GAAW65J,GAAEhO,OAAOrxJ,EAAE0B,EAAEq+K,cAAcse,GAAG,EAAEp+L,EAAEC,EAAEuF,EAAED,GAAG,SAASm5L,GAAG3+L,EAAEC,GAAG,OAAOw+L,GAAG,IAAI,EAAEz+L,EAAEC,GAAG,SAAS2+L,GAAG5+L,EAAEC,GAAG,OAAOy+L,GAAG,IAAI,EAAE1+L,EAAEC,GAAG,SAAS4+L,GAAG7+L,EAAEC,GAAG,OAAOy+L,GAAG,EAAE,EAAE1+L,EAAEC,GAAG,SAAS6+L,GAAG9+L,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEmyF,QAAQpyF,EAAE,WAAWC,EAAEmyF,QAAQ,YAAtE,EACxY,SAAS2sG,GAAG/+L,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE24F,OAAO,CAAC74F,IAAI,KAAY0+L,GAAG,EAAE,EAAEI,GAAGxhF,KAAK,KAAKr9G,EAAED,GAAGE,GAAG,SAAS8+L,MAAM,SAASC,GAAGj/L,EAAEC,GAAG,IAAIC,EAAEg9L,KAAKj9L,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuF,EAAEtF,EAAE6/K,cAAc,OAAG,OAAOv6K,GAAG,OAAOvF,GAAGy8L,GAAGz8L,EAAEuF,EAAE,IAAWA,EAAE,IAAGtF,EAAE6/K,cAAc,CAAC//K,EAAEC,GAAUD,GAAE,SAASk/L,GAAGl/L,EAAEC,GAAG,IAAIC,EAAEg9L,KAAKj9L,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuF,EAAEtF,EAAE6/K,cAAc,OAAG,OAAOv6K,GAAG,OAAOvF,GAAGy8L,GAAGz8L,EAAEuF,EAAE,IAAWA,EAAE,IAAGxF,EAAEA,IAAIE,EAAE6/K,cAAc,CAAC//K,EAAEC,GAAUD,GACzZ,SAASm/L,GAAGn/L,EAAEC,GAAG,IAAIC,EAAEg2L,KAAKE,GAAG,GAAGl2L,EAAE,GAAGA,GAAE,WAAWF,GAAE,MAAMo2L,GAAG,GAAGl2L,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEm8L,GAAG1lB,WAAW0lB,GAAG1lB,WAAW,EAAE,IAAI32K,GAAE,GAAIC,IAAV,QAAsBo8L,GAAG1lB,WAAWz2K,MAC5J,SAASg+L,GAAGl+L,EAAEC,EAAEC,GAAG,IAAIsF,EAAEszL,KAAKp3L,EAAEq3L,GAAG/4L,GAAGyF,EAAE,CAAC0yL,KAAKz2L,EAAE+uH,OAAOvwH,EAAEo9L,aAAa,KAAKC,WAAW,KAAKnuI,KAAK,MAAM1pD,EAAEzF,EAAE8xH,QAA6E,GAArE,OAAOrsH,EAAED,EAAE2pD,KAAK3pD,GAAGA,EAAE2pD,KAAK1pD,EAAE0pD,KAAK1pD,EAAE0pD,KAAK3pD,GAAGxF,EAAE8xH,QAAQtsH,EAAEC,EAAE1F,EAAEk/I,UAAal/I,IAAIq/J,IAAG,OAAO35J,GAAGA,IAAI25J,GAAEm9B,GAAGD,IAAG,MAAO,CAAC,GAAG,IAAIv8L,EAAEq3L,QAAQ,OAAO3xL,GAAG,IAAIA,EAAE2xL,QAAiC,QAAxB3xL,EAAEzF,EAAEo9L,qBAA8B,IAAI,IAAI13L,EAAE1F,EAAEu9L,kBAAkBt7H,EAAEx8D,EAAEC,EAAEzF,GAAmC,GAAhCuF,EAAE63L,aAAa53L,EAAED,EAAE83L,WAAWr7H,EAAK2tH,GAAG3tH,EAAEv8D,GAAG,OAAO,MAAMjK,IAAas9L,GAAGh5L,EAAE0B,EAAE8D,IAC9Z,IAAIu3L,GAAG,CAACqC,YAAY7H,GAAG3f,YAAY6kB,GAAGx3C,WAAWw3C,GAAGpxD,UAAUoxD,GAAG3kB,oBAAoB2kB,GAAGj2C,gBAAgBi2C,GAAGpvD,QAAQovD,GAAG/1C,WAAW+1C,GAAG5vD,OAAO4vD,GAAG9vD,SAAS8vD,GAAG5kB,cAAc4kB,GAAG4C,iBAAiB5C,GAAG6C,cAAc7C,GAAG8C,iBAAiB9C,GAAG+C,oBAAoB/C,GAAGgD,0BAAyB,GAAI7C,GAAG,CAACwC,YAAY7H,GAAG3f,YAAY,SAAS53K,EAAEC,GAA4C,OAAzC+8L,KAAKjd,cAAc,CAAC//K,OAAE,IAASC,EAAE,KAAKA,GAAUD,GAAGilJ,WAAWsyC,GAAGlsD,UAAUszD,GAAG7mB,oBAAoB,SAAS93K,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE24F,OAAO,CAAC74F,IAAI,KAAYy+L,GAAG,EAAE,EAAEK,GAAGxhF,KAAK,KACvfr9G,EAAED,GAAGE,IAAIsmJ,gBAAgB,SAASxmJ,EAAEC,GAAG,OAAOw+L,GAAG,EAAE,EAAEz+L,EAAEC,IAAIotI,QAAQ,SAASrtI,EAAEC,GAAG,IAAIC,EAAE88L,KAAqD,OAAhD/8L,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIE,EAAE6/K,cAAc,CAAC//K,EAAEC,GAAUD,GAAG0mJ,WAAW,SAAS1mJ,EAAEC,EAAEC,GAAG,IAAIsF,EAAEw3L,KAAuK,OAAlK/8L,OAAE,IAASC,EAAEA,EAAED,GAAGA,EAAEuF,EAAEu6K,cAAcv6K,EAAEoyL,UAAU33L,EAAmFD,GAAjFA,EAAEwF,EAAE02F,MAAM,CAAC61B,QAAQ,KAAK0rE,SAAS,KAAKJ,oBAAoBr9L,EAAEw9L,kBAAkBv9L,IAAOw9L,SAASS,GAAG5gF,KAAK,KAAK+hD,GAAEr/J,GAAS,CAACwF,EAAEu6K,cAAc//K,IAAI6sI,OAAO0xD,GAAG5xD,SAASyxD,GAAGvmB,cAAcmnB,GAAGK,iBAAiB,SAASr/L,GAAG,IAAIC,EAAEm+L,GAAGp+L,GAAGE,EAAED,EAAE,GAAGuF,EAAEvF,EAAE,GAC5Z,OAD+Z0+L,IAAG,WAAW,IAAI1+L,EAAEo8L,GAAG1lB,WAC9e0lB,GAAG1lB,WAAW,EAAE,IAAInxK,EAAExF,GAAN,QAAiBq8L,GAAG1lB,WAAW12K,KAAI,CAACD,IAAWE,GAAGo/L,cAAc,WAAW,IAAIt/L,EAAEo+L,IAAG,GAAIn+L,EAAED,EAAE,GAA8B,OAANu+L,GAArBv+L,EAAEm/L,GAAG7hF,KAAK,KAAKt9G,EAAE,KAAgB,CAACA,EAAEC,IAAIs/L,iBAAiB,SAASv/L,EAAEC,EAAEC,GAAG,IAAIsF,EAAEw3L,KAAkF,OAA7Ex3L,EAAEu6K,cAAc,CAACttB,KAAK,CAACurC,YAAY/9L,EAAEg+L,YAAY,MAAMpzL,OAAO7K,EAAEu1I,UAAUr1I,GAAU69L,GAAGv4L,EAAExF,EAAEC,EAAEC,IAAIs/L,oBAAoB,WAAW,GAAG/D,GAAG,CAAC,IAAIz7L,GAAE,EAAGC,EAzDlD,SAAYD,GAAG,MAAM,CAACq2K,SAASgD,EAAGl9K,SAAS6D,EAAE+nJ,QAAQ/nJ,GAyDD0/L,EAAG,WAAiD,MAAtC1/L,IAAIA,GAAE,EAAGE,EAAE,MAAMkzL,MAAMj3L,SAAS,MAAYgF,MAAM7D,EAAE,SAAS4C,EAAEk+L,GAAGn+L,GAAG,GAC1Z,OAD6Z,KAAY,EAAPo/J,GAAEhkH,QAAUgkH,GAAEhO,OAAO,IAAIgtC,GAAG,GAAE,WAAWn+L,EAAE,MAAMkzL,MAAMj3L,SAAS,YAChf,EAAO,OAAc8D,EAAmC,OAANm+L,GAA3Bn+L,EAAE,MAAMmzL,MAAMj3L,SAAS,KAAiB8D,GAAGw/L,0BAAyB,GAAI5C,GAAG,CAACuC,YAAY7H,GAAG3f,YAAYqnB,GAAGh6C,WAAWsyC,GAAGlsD,UAAUuzD,GAAG9mB,oBAAoBinB,GAAGv4C,gBAAgBq4C,GAAGxxD,QAAQ6xD,GAAGx4C,WAAW02C,GAAGvwD,OAAO2xD,GAAG7xD,SAAS,WAAW,OAAOywD,GAAGD,KAAKtlB,cAAcmnB,GAAGK,iBAAiB,SAASr/L,GAAG,IAAIC,EAAEm9L,GAAGD,IAAIj9L,EAAED,EAAE,GAAGuF,EAAEvF,EAAE,GAA6F,OAA1F2+L,IAAG,WAAW,IAAI3+L,EAAEo8L,GAAG1lB,WAAW0lB,GAAG1lB,WAAW,EAAE,IAAInxK,EAAExF,GAAN,QAAiBq8L,GAAG1lB,WAAW12K,KAAI,CAACD,IAAWE,GAAGo/L,cAAc,WAAW,IAAIt/L,EAAEo9L,GAAGD,IAAI,GAAG,MAAM,CAACqB,KAAKpsG,QAC9epyF,IAAIu/L,iBAAiBpB,GAAGqB,oBAAoB,WAAW,OAAOpC,GAAGD,IAAI,IAAIsC,0BAAyB,GAAI3C,GAAG,CAACsC,YAAY7H,GAAG3f,YAAYqnB,GAAGh6C,WAAWsyC,GAAGlsD,UAAUuzD,GAAG9mB,oBAAoBinB,GAAGv4C,gBAAgBq4C,GAAGxxD,QAAQ6xD,GAAGx4C,WAAWg3C,GAAG7wD,OAAO2xD,GAAG7xD,SAAS,WAAW,OAAO+wD,GAAGP,KAAKtlB,cAAcmnB,GAAGK,iBAAiB,SAASr/L,GAAG,IAAIC,EAAEy9L,GAAGP,IAAIj9L,EAAED,EAAE,GAAGuF,EAAEvF,EAAE,GAA6F,OAA1F2+L,IAAG,WAAW,IAAI3+L,EAAEo8L,GAAG1lB,WAAW0lB,GAAG1lB,WAAW,EAAE,IAAInxK,EAAExF,GAAN,QAAiBq8L,GAAG1lB,WAAW12K,KAAI,CAACD,IAAWE,GAAGo/L,cAAc,WAAW,IAAIt/L,EAAE09L,GAAGP,IAAI,GAAG,MAAM,CAACqB,KAAKpsG,QACrfpyF,IAAIu/L,iBAAiBpB,GAAGqB,oBAAoB,WAAW,OAAO9B,GAAGP,IAAI,IAAIsC,0BAAyB,GAAIE,GAAGnnB,EAAG5B,kBAAkB0gB,IAAG,EAAG,SAASsI,GAAG5/L,EAAEC,EAAEC,EAAEsF,GAAGvF,EAAEqoB,MAAM,OAAOtoB,EAAE06L,GAAGz6L,EAAE,KAAKC,EAAEsF,GAAGi1L,GAAGx6L,EAAED,EAAEsoB,MAAMpoB,EAAEsF,GAAG,SAASq6L,GAAG7/L,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAGxB,EAAEA,EAAE+iC,OAAO,IAAIx9B,EAAExF,EAAE6tI,IAA8B,OAA1BopD,GAAGj3L,EAAEyB,GAAG8D,EAAEm3L,GAAG38L,EAAEC,EAAEC,EAAEsF,EAAEC,EAAE/D,GAAM,OAAO1B,GAAIs3L,IAA0Er3L,EAAEoxJ,OAAO,EAAEuuC,GAAG5/L,EAAEC,EAAEuF,EAAE9D,GAAUzB,EAAEqoB,QAAhGroB,EAAE03L,YAAY33L,EAAE23L,YAAY13L,EAAEoxJ,QAAQ,IAAIrxJ,EAAEq3L,QAAQ31L,EAAEo+L,GAAG9/L,EAAEC,EAAEyB,IACxW,SAASq+L,GAAG//L,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,GAAG,OAAOzF,EAAE,CAAC,IAAI0F,EAAExF,EAAEtF,KAAK,MAAG,oBAAoB8K,GAAIs6L,GAAGt6L,SAAI,IAASA,EAAEgqJ,cAAc,OAAOxvJ,EAAEmwJ,cAAS,IAASnwJ,EAAEwvJ,eAAsD1vJ,EAAEq6L,GAAGn6L,EAAEtF,KAAK,KAAK4K,EAAEvF,EAAEA,EAAEo7C,KAAK51C,IAAKqoI,IAAI7tI,EAAE6tI,IAAI9tI,EAAEg8I,OAAO/7I,EAASA,EAAEqoB,MAAMtoB,IAAvGC,EAAEi6K,IAAI,GAAGj6K,EAAErF,KAAK8K,EAAEu6L,GAAGjgM,EAAEC,EAAEyF,EAAEF,EAAE9D,EAAE+D,IAAoF,OAAVC,EAAE1F,EAAEsoB,MAAS,KAAK5mB,EAAE+D,KAAK/D,EAAEgE,EAAE0tI,eAA0BlzI,EAAE,QAAdA,EAAEA,EAAEmwJ,SAAmBnwJ,EAAE6vL,IAAKruL,EAAE8D,IAAIxF,EAAE8tI,MAAM7tI,EAAE6tI,KAAYgyD,GAAG9/L,EAAEC,EAAEwF,IAAGxF,EAAEoxJ,OAAO,GAAErxJ,EAAEk6L,GAAGx0L,EAAEF,IAAKsoI,IAAI7tI,EAAE6tI,IAAI9tI,EAAEg8I,OAAO/7I,EAASA,EAAEqoB,MAAMtoB,GAClb,SAASigM,GAAGjgM,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,GAAG,OAAOzF,GAAG+vL,GAAG/vL,EAAEozI,cAAc5tI,IAAIxF,EAAE8tI,MAAM7tI,EAAE6tI,IAAI,IAAGwpD,IAAG,EAAG,KAAK7xL,EAAE/D,GAAqC,OAAOzB,EAAEo3L,MAAMr3L,EAAEq3L,MAAMyI,GAAG9/L,EAAEC,EAAEwF,GAAhE,KAAa,MAARzF,EAAEqxJ,SAAeimC,IAAG,GAA0C,OAAO4I,GAAGlgM,EAAEC,EAAEC,EAAEsF,EAAEC,GACnL,SAAS06L,GAAGngM,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE47L,aAAan6L,EAAE8D,EAAEqS,SAASpS,EAAE,OAAOzF,EAAEA,EAAE+/K,cAAc,KAAK,GAAG,WAAWv6K,EAAE61C,MAAM,kCAAkC71C,EAAE61C,KAAK,GAAG,KAAY,EAAPp7C,EAAEo7C,MAAQp7C,EAAE8/K,cAAc,CAACqgB,UAAU,GAAGC,GAAGpgM,EAAEC,OAAQ,IAAG,KAAO,WAAFA,GAA8E,OAAOF,EAAE,OAAOyF,EAAEA,EAAE26L,UAAUlgM,EAAEA,EAAED,EAAEo3L,MAAMp3L,EAAEg3L,WAAW,WAAWh3L,EAAE8/K,cAAc,CAACqgB,UAAUpgM,GAAGqgM,GAAGpgM,EAAED,GAAG,KAAxKC,EAAE8/K,cAAc,CAACqgB,UAAU,GAAGC,GAAGpgM,EAAE,OAAOwF,EAAEA,EAAE26L,UAAUlgM,QAA0H,OAAOuF,GAAGD,EAAEC,EAAE26L,UAAUlgM,EAAED,EAAE8/K,cAAc,MAAMv6K,EAAEtF,EAAEmgM,GAAGpgM,EAAEuF,GAAe,OAAZo6L,GAAG5/L,EAAEC,EAAEyB,EAAExB,GAAUD,EAAEqoB,MAC1e,SAASg4K,GAAGtgM,EAAEC,GAAG,IAAIC,EAAED,EAAE6tI,KAAO,OAAO9tI,GAAG,OAAOE,GAAG,OAAOF,GAAGA,EAAE8tI,MAAM5tI,KAAED,EAAEoxJ,OAAO,KAAI,SAAS6uC,GAAGlgM,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAEwuL,GAAG/zL,GAAG2zL,GAAGz6B,GAAEhnE,QAA4C,OAApC3sF,EAAEquL,GAAG7zL,EAAEwF,GAAGyxL,GAAGj3L,EAAEyB,GAAGxB,EAAEy8L,GAAG38L,EAAEC,EAAEC,EAAEsF,EAAEC,EAAE/D,GAAM,OAAO1B,GAAIs3L,IAA0Er3L,EAAEoxJ,OAAO,EAAEuuC,GAAG5/L,EAAEC,EAAEC,EAAEwB,GAAUzB,EAAEqoB,QAAhGroB,EAAE03L,YAAY33L,EAAE23L,YAAY13L,EAAEoxJ,QAAQ,IAAIrxJ,EAAEq3L,QAAQ31L,EAAEo+L,GAAG9/L,EAAEC,EAAEyB,IAC9P,SAAS6+L,GAAGvgM,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,GAAGuyL,GAAG/zL,GAAG,CAAC,IAAIuF,GAAE,EAAG4uL,GAAGp0L,QAAQwF,GAAE,EAAW,GAARyxL,GAAGj3L,EAAEyB,GAAM,OAAOzB,EAAEg8I,UAAU,OAAOj8I,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAG8nC,GAAGl5L,EAAEC,EAAEsF,GAAG8zL,GAAGr5L,EAAEC,EAAEsF,EAAE9D,GAAG8D,GAAE,OAAQ,GAAG,OAAOxF,EAAE,CAAC,IAAI0F,EAAEzF,EAAEg8I,UAAUt2I,EAAE1F,EAAEmzI,cAAc1tI,EAAE4iI,MAAM3iI,EAAE,IAAIu8D,EAAEx8D,EAAEkD,QAAQlN,EAAEwE,EAAEsvJ,YAAY,kBAAkB9zJ,GAAG,OAAOA,EAAEA,EAAE67L,GAAG77L,GAAyBA,EAAEo4L,GAAG7zL,EAA1BvE,EAAEu4L,GAAG/zL,GAAG2zL,GAAGz6B,GAAEhnE,SAAmB,IAAIl1F,EAAEgD,EAAE2vJ,yBAAyBuO,EAAE,oBAAoBlhK,GAAG,oBAAoBwI,EAAE6zL,wBAAwBn7B,GAAG,oBAAoB14J,EAAE2zL,kCACpd,oBAAoB3zL,EAAE+wJ,4BAA4B9wJ,IAAIH,GAAG08D,IAAIxmE,IAAI09L,GAAGn5L,EAAEyF,EAAEF,EAAE9J,GAAG+7L,IAAG,EAAG,IAAIhnL,EAAExQ,EAAE8/K,cAAcr6K,EAAE+vC,MAAMhlC,EAAE8nL,GAAGt4L,EAAEuF,EAAEE,EAAEhE,GAAGwgE,EAAEjiE,EAAE8/K,cAAcp6K,IAAIH,GAAGiL,IAAIyxD,GAAGgkC,GAAE9T,SAASqlG,IAAI,oBAAoBv6L,IAAIy7L,GAAG14L,EAAEC,EAAEhD,EAAEsI,GAAG08D,EAAEjiE,EAAE8/K,gBAAgBp6K,EAAE8xL,IAAIwB,GAAGh5L,EAAEC,EAAEyF,EAAEH,EAAEiL,EAAEyxD,EAAExmE,KAAK0iK,GAAG,oBAAoB14J,EAAE8zL,2BAA2B,oBAAoB9zL,EAAE+zL,qBAAqB,oBAAoB/zL,EAAE+zL,oBAAoB/zL,EAAE+zL,qBAAqB,oBAAoB/zL,EAAE8zL,2BAA2B9zL,EAAE8zL,6BAA6B,oBACze9zL,EAAE68I,oBAAoBtiJ,EAAEoxJ,OAAO,KAAK,oBAAoB3rJ,EAAE68I,oBAAoBtiJ,EAAEoxJ,OAAO,GAAGpxJ,EAAEmzI,cAAc5tI,EAAEvF,EAAE8/K,cAAc79G,GAAGx8D,EAAE4iI,MAAM9iI,EAAEE,EAAE+vC,MAAMysB,EAAEx8D,EAAEkD,QAAQlN,EAAE8J,EAAEG,IAAI,oBAAoBD,EAAE68I,oBAAoBtiJ,EAAEoxJ,OAAO,GAAG7rJ,GAAE,OAAQ,CAACE,EAAEzF,EAAEg8I,UAAU+7C,GAAGh4L,EAAEC,GAAG0F,EAAE1F,EAAEmzI,cAAc13I,EAAEuE,EAAErF,OAAOqF,EAAEm6L,YAAYz0L,EAAE8wL,GAAGx2L,EAAErF,KAAK+K,GAAGD,EAAE4iI,MAAM5sI,EAAE0iK,EAAEn+J,EAAE47L,aAAaprL,EAAE/K,EAAEkD,QAAwB,kBAAhBs5D,EAAEhiE,EAAEsvJ,cAAiC,OAAOttF,EAAEA,EAAEq1H,GAAGr1H,GAAyBA,EAAE4xH,GAAG7zL,EAA1BiiE,EAAE+xH,GAAG/zL,GAAG2zL,GAAGz6B,GAAEhnE,SAAmB,IAAI8gE,EAAEhzJ,EAAE2vJ,0BAA0B3yJ,EAAE,oBAAoBg2J,GACnf,oBAAoBxtJ,EAAE6zL,0BAA0B,oBAAoB7zL,EAAE2zL,kCAAkC,oBAAoB3zL,EAAE+wJ,4BAA4B9wJ,IAAIy4J,GAAG3tJ,IAAIyxD,IAAIk3H,GAAGn5L,EAAEyF,EAAEF,EAAE08D,GAAGu1H,IAAG,EAAGhnL,EAAExQ,EAAE8/K,cAAcr6K,EAAE+vC,MAAMhlC,EAAE8nL,GAAGt4L,EAAEuF,EAAEE,EAAEhE,GAAG,IAAIrE,EAAE4C,EAAE8/K,cAAcp6K,IAAIy4J,GAAG3tJ,IAAIpT,GAAG6oG,GAAE9T,SAASqlG,IAAI,oBAAoBvkC,IAAIylC,GAAG14L,EAAEC,EAAEgzJ,EAAE1tJ,GAAGnI,EAAE4C,EAAE8/K,gBAAgBrkL,EAAE+7L,IAAIwB,GAAGh5L,EAAEC,EAAExE,EAAE8J,EAAEiL,EAAEpT,EAAE6kE,KAAKhlE,GAAG,oBAAoBwI,EAAE86L,4BAA4B,oBAAoB96L,EAAE+6L,sBAAsB,oBAAoB/6L,EAAE+6L,qBAAqB/6L,EAAE+6L,oBAAoBj7L,EAC1gBnI,EAAE6kE,GAAG,oBAAoBx8D,EAAE86L,4BAA4B96L,EAAE86L,2BAA2Bh7L,EAAEnI,EAAE6kE,IAAI,oBAAoBx8D,EAAEw9I,qBAAqBjjJ,EAAEoxJ,OAAO,GAAG,oBAAoB3rJ,EAAE6zL,0BAA0Bt5L,EAAEoxJ,OAAO,OAAO,oBAAoB3rJ,EAAEw9I,oBAAoBv9I,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,GAAG,oBAAoB3rJ,EAAE6zL,yBAAyB5zL,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,KAAKpxJ,EAAEmzI,cAAc5tI,EAAEvF,EAAE8/K,cAAc1iL,GAAGqI,EAAE4iI,MAAM9iI,EAAEE,EAAE+vC,MAAMp4C,EAAEqI,EAAEkD,QAAQs5D,EAAE18D,EAAE9J,IAAI,oBAAoBgK,EAAEw9I,oBAC7fv9I,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,GAAG,oBAAoB3rJ,EAAE6zL,yBAAyB5zL,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,KAAK7rJ,GAAE,GAAI,OAAOk7L,GAAG1gM,EAAEC,EAAEC,EAAEsF,EAAEC,EAAE/D,GACzL,SAASg/L,GAAG1gM,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG66L,GAAGtgM,EAAEC,GAAG,IAAIyF,EAAE,KAAa,GAARzF,EAAEoxJ,OAAU,IAAI7rJ,IAAIE,EAAE,OAAOhE,GAAG6yL,GAAGt0L,EAAEC,GAAE,GAAI4/L,GAAG9/L,EAAEC,EAAEwF,GAAGD,EAAEvF,EAAEg8I,UAAU0jD,GAAGvtG,QAAQnyF,EAAE,IAAI0F,EAAED,GAAG,oBAAoBxF,EAAEq3I,yBAAyB,KAAK/xI,EAAEy9B,SAAwI,OAA/HhjC,EAAEoxJ,OAAO,EAAE,OAAOrxJ,GAAG0F,GAAGzF,EAAEqoB,MAAMmyK,GAAGx6L,EAAED,EAAEsoB,MAAM,KAAK7iB,GAAGxF,EAAEqoB,MAAMmyK,GAAGx6L,EAAE,KAAK0F,EAAEF,IAAIm6L,GAAG5/L,EAAEC,EAAE0F,EAAEF,GAAGxF,EAAE8/K,cAAcv6K,EAAEiwC,MAAM/zC,GAAG6yL,GAAGt0L,EAAEC,GAAE,GAAWD,EAAEqoB,MAAM,SAASq4K,GAAG3gM,GAAG,IAAIC,EAAED,EAAEi8I,UAAUh8I,EAAE2gM,eAAezM,GAAGn0L,EAAEC,EAAE2gM,eAAe3gM,EAAE2gM,iBAAiB3gM,EAAE2I,SAAS3I,EAAE2I,SAASurL,GAAGn0L,EAAEC,EAAE2I,SAAQ,GAAIoyL,GAAGh7L,EAAEC,EAAEi8I,eAC7d,IAS0V2kD,GAAMC,GAAGC,GAT/VC,GAAG,CAAChhB,WAAW,KAAKihB,UAAU,GAClC,SAASC,GAAGlhM,EAAEC,EAAEC,GAAG,IAAsCwF,EAAlCF,EAAEvF,EAAE47L,aAAan6L,EAAEglG,GAAEtU,QAAQ3sF,GAAE,EAA6M,OAAvMC,EAAE,KAAa,GAARzF,EAAEoxJ,UAAa3rJ,GAAE,OAAO1F,GAAG,OAAOA,EAAE+/K,gBAAiB,KAAO,EAAFr+K,IAAMgE,GAAGD,GAAE,EAAGxF,EAAEoxJ,QAAQ,IAAI,OAAOrxJ,GAAG,OAAOA,EAAE+/K,oBAAe,IAASv6K,EAAEkyI,WAAU,IAAKlyI,EAAE27L,6BAA6Bz/L,GAAG,GAAGq8J,GAAEr3D,GAAI,EAAFhlG,GAAQ,OAAO1B,QAAG,IAASwF,EAAEkyI,UAAUokD,GAAG77L,GAAGD,EAAEwF,EAAEqS,SAASnW,EAAE8D,EAAEkyI,SAAYjyI,GAASzF,EAAEohM,GAAGnhM,EAAED,EAAE0B,EAAExB,GAAGD,EAAEqoB,MAAMy3J,cAAc,CAACqgB,UAAUlgM,GAAGD,EAAE8/K,cAAcihB,GAAGhhM,GAAK,kBAAkBwF,EAAE67L,2BAAiCrhM,EAAEohM,GAAGnhM,EAAED,EAAE0B,EAAExB,GAAGD,EAAEqoB,MAAMy3J,cAAc,CAACqgB,UAAUlgM,GAC/fD,EAAE8/K,cAAcihB,GAAG/gM,EAAEo3L,MAAM,SAASr3L,KAAEE,EAAEohM,GAAG,CAACjmJ,KAAK,UAAUxjC,SAAS7X,GAAGC,EAAEo7C,KAAKn7C,EAAE,OAAQ87I,OAAO/7I,EAASA,EAAEqoB,MAAMpoB,KAAYF,EAAE+/K,cAAkBt6K,GAASD,EAAE+7L,GAAGvhM,EAAEC,EAAEuF,EAAEqS,SAASrS,EAAEkyI,SAASx3I,GAAGuF,EAAExF,EAAEqoB,MAAM5mB,EAAE1B,EAAEsoB,MAAMy3J,cAAct6K,EAAEs6K,cAAc,OAAOr+K,EAAE,CAAC0+L,UAAUlgM,GAAG,CAACkgM,UAAU1+L,EAAE0+L,UAAUlgM,GAAGuF,EAAEwxL,WAAWj3L,EAAEi3L,YAAY/2L,EAAED,EAAE8/K,cAAcihB,GAAGx7L,IAAEtF,EAAEshM,GAAGxhM,EAAEC,EAAEuF,EAAEqS,SAAS3X,GAAGD,EAAE8/K,cAAc,KAAY7/K,IAClQ,SAASkhM,GAAGphM,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEq7C,KAAK51C,EAAEzF,EAAEsoB,MAAuK,OAAjKroB,EAAE,CAACo7C,KAAK,SAASxjC,SAAS5X,GAAG,KAAO,EAAFyB,IAAM,OAAO+D,GAAGA,EAAEwxL,WAAW,EAAExxL,EAAEo2L,aAAa57L,GAAGwF,EAAE67L,GAAGrhM,EAAEyB,EAAE,EAAE,MAAMxB,EAAEs6L,GAAGt6L,EAAEwB,EAAE8D,EAAE,MAAMC,EAAEu2I,OAAOh8I,EAAEE,EAAE87I,OAAOh8I,EAAEyF,EAAEq3I,QAAQ58I,EAAEF,EAAEsoB,MAAM7iB,EAASvF,EACrV,SAASshM,GAAGxhM,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEsoB,MAAiL,OAA3KtoB,EAAE0B,EAAEo7I,QAAQ58I,EAAEg6L,GAAGx4L,EAAE,CAAC25C,KAAK,UAAUxjC,SAAS3X,IAAI,KAAY,EAAPD,EAAEo7C,QAAUn7C,EAAEm3L,MAAM7xL,GAAGtF,EAAE87I,OAAO/7I,EAAEC,EAAE48I,QAAQ,KAAK,OAAO98I,IAAIA,EAAEg6L,WAAW,KAAKh6L,EAAEqxJ,MAAM,EAAEpxJ,EAAEg6L,YAAYh6L,EAAE85L,WAAW/5L,GAAUC,EAAEqoB,MAAMpoB,EAC7N,SAASqhM,GAAGvhM,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAExF,EAAEo7C,KAAK31C,EAAE1F,EAAEsoB,MAAMtoB,EAAE0F,EAAEo3I,QAAQ,IAAIn3I,EAAE,CAAC01C,KAAK,SAASxjC,SAAS3X,GAAoS,OAAjS,KAAO,EAAFuF,IAAMxF,EAAEqoB,QAAQ5iB,IAAGxF,EAAED,EAAEqoB,OAAQ2uK,WAAW,EAAE/2L,EAAE27L,aAAal2L,EAAiB,QAAfD,EAAExF,EAAE65L,aAAqB95L,EAAEg6L,YAAY/5L,EAAE+5L,YAAYh6L,EAAE85L,WAAWr0L,EAAEA,EAAEs0L,WAAW,MAAM/5L,EAAEg6L,YAAYh6L,EAAE85L,WAAW,MAAM75L,EAAEg6L,GAAGx0L,EAAEC,GAAG,OAAO3F,EAAEwF,EAAE00L,GAAGl6L,EAAEwF,IAAIA,EAAEg1L,GAAGh1L,EAAEC,EAAE/D,EAAE,OAAQ2vJ,OAAO,EAAG7rJ,EAAEw2I,OAAO/7I,EAAEC,EAAE87I,OAAO/7I,EAAEC,EAAE48I,QAAQt3I,EAAEvF,EAAEqoB,MAAMpoB,EAASsF,EAAE,SAASi8L,GAAGzhM,EAAEC,GAAGD,EAAEq3L,OAAOp3L,EAAE,IAAIC,EAAEF,EAAEk/I,UAAU,OAAOh/I,IAAIA,EAAEm3L,OAAOp3L,GAAG+2L,GAAGh3L,EAAEg8I,OAAO/7I,GACtd,SAASyhM,GAAG1hM,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,IAAIC,EAAE1F,EAAE+/K,cAAc,OAAOr6K,EAAE1F,EAAE+/K,cAAc,CAAC4hB,YAAY1hM,EAAE2hM,UAAU,KAAKC,mBAAmB,EAAExvG,KAAK7sF,EAAEu1F,KAAK76F,EAAE4hM,SAASpgM,EAAEq4L,WAAWt0L,IAAIC,EAAEi8L,YAAY1hM,EAAEyF,EAAEk8L,UAAU,KAAKl8L,EAAEm8L,mBAAmB,EAAEn8L,EAAE2sF,KAAK7sF,EAAEE,EAAEq1F,KAAK76F,EAAEwF,EAAEo8L,SAASpgM,EAAEgE,EAAEq0L,WAAWt0L,GACvQ,SAASs8L,GAAG/hM,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE47L,aAAan6L,EAAE8D,EAAE81L,YAAY71L,EAAED,EAAEu1F,KAAsC,GAAjC6kG,GAAG5/L,EAAEC,EAAEuF,EAAEqS,SAAS3X,GAAkB,KAAO,GAAtBsF,EAAEkhG,GAAEtU,UAAqB5sF,EAAI,EAAFA,EAAI,EAAEvF,EAAEoxJ,OAAO,OAAO,CAAC,GAAG,OAAOrxJ,GAAG,KAAa,GAARA,EAAEqxJ,OAAUrxJ,EAAE,IAAIA,EAAEC,EAAEqoB,MAAM,OAAOtoB,GAAG,CAAC,GAAG,KAAKA,EAAEk6K,IAAI,OAAOl6K,EAAE+/K,eAAe0hB,GAAGzhM,EAAEE,QAAQ,GAAG,KAAKF,EAAEk6K,IAAIunB,GAAGzhM,EAAEE,QAAQ,GAAG,OAAOF,EAAEsoB,MAAM,CAACtoB,EAAEsoB,MAAM0zH,OAAOh8I,EAAEA,EAAEA,EAAEsoB,MAAM,SAAS,GAAGtoB,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAE88I,SAAS,CAAC,GAAG,OAAO98I,EAAEg8I,QAAQh8I,EAAEg8I,SAAS/7I,EAAE,MAAMD,EAAEA,EAAEA,EAAEg8I,OAAOh8I,EAAE88I,QAAQd,OAAOh8I,EAAEg8I,OAAOh8I,EAAEA,EAAE88I,QAAQt3I,GAAG,EAAS,GAAPu4J,GAAEr3D,GAAElhG,GAAM,KAAY,EAAPvF,EAAEo7C,MAAQp7C,EAAE8/K,cACze,UAAU,OAAOr+K,GAAG,IAAK,WAAqB,IAAVxB,EAAED,EAAEqoB,MAAU5mB,EAAE,KAAK,OAAOxB,GAAiB,QAAdF,EAAEE,EAAEg/I,YAAoB,OAAOm8C,GAAGr7L,KAAK0B,EAAExB,GAAGA,EAAEA,EAAE48I,QAAY,QAAJ58I,EAAEwB,IAAYA,EAAEzB,EAAEqoB,MAAMroB,EAAEqoB,MAAM,OAAO5mB,EAAExB,EAAE48I,QAAQ58I,EAAE48I,QAAQ,MAAM4kD,GAAGzhM,GAAE,EAAGyB,EAAExB,EAAEuF,EAAExF,EAAE85L,YAAY,MAAM,IAAK,YAA6B,IAAjB75L,EAAE,KAAKwB,EAAEzB,EAAEqoB,MAAUroB,EAAEqoB,MAAM,KAAK,OAAO5mB,GAAG,CAAe,GAAG,QAAjB1B,EAAE0B,EAAEw9I,YAAuB,OAAOm8C,GAAGr7L,GAAG,CAACC,EAAEqoB,MAAM5mB,EAAE,MAAM1B,EAAE0B,EAAEo7I,QAAQp7I,EAAEo7I,QAAQ58I,EAAEA,EAAEwB,EAAEA,EAAE1B,EAAE0hM,GAAGzhM,GAAE,EAAGC,EAAE,KAAKuF,EAAExF,EAAE85L,YAAY,MAAM,IAAK,WAAW2H,GAAGzhM,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAE85L,YAAY,MAAM,QAAQ95L,EAAE8/K,cAAc,KAAK,OAAO9/K,EAAEqoB,MAC/f,SAASw3K,GAAG9/L,EAAEC,EAAEC,GAAyD,GAAtD,OAAOF,IAAIC,EAAEk3L,aAAan3L,EAAEm3L,cAAcqB,IAAIv4L,EAAEo3L,MAAS,KAAKn3L,EAAED,EAAEg3L,YAAY,CAAC,GAAG,OAAOj3L,GAAGC,EAAEqoB,QAAQtoB,EAAEsoB,MAAM,MAAMnnB,MAAM7D,EAAE,MAAM,GAAG,OAAO2C,EAAEqoB,MAAM,CAA4C,IAAjCpoB,EAAEg6L,GAAZl6L,EAAEC,EAAEqoB,MAAatoB,EAAE67L,cAAc57L,EAAEqoB,MAAMpoB,EAAMA,EAAE87I,OAAO/7I,EAAE,OAAOD,EAAE88I,SAAS98I,EAAEA,EAAE88I,SAAQ58I,EAAEA,EAAE48I,QAAQo9C,GAAGl6L,EAAEA,EAAE67L,eAAgB7/C,OAAO/7I,EAAEC,EAAE48I,QAAQ,KAAK,OAAO78I,EAAEqoB,MAAM,OAAO,KAK5P,SAAS05K,GAAGhiM,EAAEC,GAAG,IAAIw7L,GAAG,OAAOz7L,EAAE8hM,UAAU,IAAK,SAAS7hM,EAAED,EAAE+6F,KAAK,IAAI,IAAI76F,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAEi/I,YAAYh/I,EAAED,GAAGA,EAAEA,EAAE68I,QAAQ,OAAO58I,EAAEF,EAAE+6F,KAAK,KAAK76F,EAAE48I,QAAQ,KAAK,MAAM,IAAK,YAAY58I,EAAEF,EAAE+6F,KAAK,IAAI,IAAIv1F,EAAE,KAAK,OAAOtF,GAAG,OAAOA,EAAEg/I,YAAY15I,EAAEtF,GAAGA,EAAEA,EAAE48I,QAAQ,OAAOt3I,EAAEvF,GAAG,OAAOD,EAAE+6F,KAAK/6F,EAAE+6F,KAAK,KAAK/6F,EAAE+6F,KAAK+hD,QAAQ,KAAKt3I,EAAEs3I,QAAQ,MAC7Z,SAASmlD,GAAGjiM,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE47L,aAAa,OAAO57L,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAAE,OAAO+Z,GAAGh0L,EAAErF,OAAOs5L,KAAK,KAAK,KAAK,EAAsL,OAApLgH,KAAK5hC,GAAEpzD,IAAGozD,GAAEF,IAAG8iC,MAAK12L,EAAEvF,EAAEg8I,WAAY2kD,iBAAiBp7L,EAAEoD,QAAQpD,EAAEo7L,eAAep7L,EAAEo7L,eAAe,MAAS,OAAO5gM,GAAG,OAAOA,EAAEsoB,QAAM0zK,GAAG/7L,GAAGA,EAAEoxJ,OAAO,EAAE7rJ,EAAEi8K,UAAUxhL,EAAEoxJ,OAAO,MAAkB,KAAK,KAAK,EAAE+pC,GAAGn7L,GAAG,IAAIyB,EAAEq5L,GAAGD,GAAG1oG,SAAkB,GAATlyF,EAAED,EAAErF,KAAQ,OAAOoF,GAAG,MAAMC,EAAEg8I,UAAU6kD,GAAG9gM,EAAEC,EAAEC,EAAEsF,GAAKxF,EAAE8tI,MAAM7tI,EAAE6tI,MAAM7tI,EAAEoxJ,OAAO,SAAS,CAAC,IAAI7rJ,EAAE,CAAC,GAAG,OAC7fvF,EAAEg8I,UAAU,MAAM96I,MAAM7D,EAAE,MAAM,OAAO,KAAsB,GAAjB0C,EAAE+6L,GAAGH,GAAGxoG,SAAY4pG,GAAG/7L,GAAG,CAACuF,EAAEvF,EAAEg8I,UAAU/7I,EAAED,EAAErF,KAAK,IAAI6K,EAAExF,EAAEmzI,cAA8B,OAAhB5tI,EAAE8tL,IAAIrzL,EAAEuF,EAAE+tL,IAAI9tL,EAASvF,GAAG,IAAK,SAAS+9J,GAAE,SAASz4J,GAAGy4J,GAAE,QAAQz4J,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQy4J,GAAE,OAAOz4J,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIxF,EAAE,EAAEA,EAAE0xL,GAAG/1L,OAAOqE,IAAIi+J,GAAEyzB,GAAG1xL,GAAGwF,GAAG,MAAM,IAAK,SAASy4J,GAAE,QAAQz4J,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOy4J,GAAE,QAAQz4J,GAAGy4J,GAAE,OAAOz4J,GAAG,MAAM,IAAK,UAAUy4J,GAAE,SAASz4J,GAAG,MAAM,IAAK,QAAQ21K,GAAG31K,EAAEC,GAAGw4J,GAAE,UAAUz4J,GAAG,MAAM,IAAK,SAASA,EAAEy1K,cAC5f,CAACinB,cAAcz8L,EAAE08L,UAAUlkC,GAAE,UAAUz4J,GAAG,MAAM,IAAK,WAAWw2K,GAAGx2K,EAAEC,GAAGw4J,GAAE,UAAUz4J,GAAkB,IAAI,IAAIE,KAAvB2kB,GAAGnqB,EAAEuF,GAAGzF,EAAE,KAAkByF,EAAEA,EAAEk1I,eAAej1I,KAAKhE,EAAE+D,EAAEC,GAAG,aAAaA,EAAE,kBAAkBhE,EAAE8D,EAAEslK,cAAcppK,IAAI1B,EAAE,CAAC,WAAW0B,IAAI,kBAAkBA,GAAG8D,EAAEslK,cAAc,GAAGppK,IAAI1B,EAAE,CAAC,WAAW,GAAG0B,IAAIw8J,EAAGvjB,eAAej1I,IAAI,MAAMhE,GAAG,aAAagE,GAAGu4J,GAAE,SAASz4J,IAAI,OAAOtF,GAAG,IAAK,QAAQq6K,EAAG/0K,GAAGw0B,GAAGx0B,EAAEC,GAAE,GAAI,MAAM,IAAK,WAAW80K,EAAG/0K,GAAGy2K,GAAGz2K,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBC,EAAE4wI,UAAU7wI,EAAE48L,QACtf5P,IAAIhtL,EAAExF,EAAEC,EAAE03L,YAAYnyL,EAAE,OAAOA,IAAIvF,EAAEoxJ,OAAO,OAAO,CAAiZ,OAAhZ3rJ,EAAE,IAAIhE,EAAEo7K,SAASp7K,EAAEA,EAAEwkK,cAAclmK,IAAIk8K,KAAUl8K,EAAEm8K,GAAGj8K,IAAIF,IAAIk8K,GAAQ,WAAWh8K,IAAGF,EAAE0F,EAAE+jJ,cAAc,QAAS+yB,UAAU,qBAAuBx8K,EAAEA,EAAEg9I,YAAYh9I,EAAEy8K,aAAa,kBAAkBj3K,EAAEwoI,GAAGhuI,EAAE0F,EAAE+jJ,cAAcvpJ,EAAE,CAAC8tI,GAAGxoI,EAAEwoI,MAAMhuI,EAAE0F,EAAE+jJ,cAAcvpJ,GAAG,WAAWA,IAAIwF,EAAE1F,EAAEwF,EAAE28L,SAASz8L,EAAEy8L,UAAS,EAAG38L,EAAEoR,OAAOlR,EAAEkR,KAAKpR,EAAEoR,QAAQ5W,EAAE0F,EAAEuC,gBAAgBjI,EAAEE,GAAGF,EAAEszL,IAAIrzL,EAAED,EAAEuzL,IAAI/tL,EAAEq7L,GAAG7gM,EAAEC,GAASA,EAAEg8I,UAAUj8I,EAAE0F,EAAEs4K,GAAG99K,EAAEsF,GAAUtF,GAAG,IAAK,SAAS+9J,GAAE,SAASj+J,GAAGi+J,GAAE,QAAQj+J,GACpf0B,EAAE8D,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQy4J,GAAE,OAAOj+J,GAAG0B,EAAE8D,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI9D,EAAE,EAAEA,EAAEgwL,GAAG/1L,OAAO+F,IAAIu8J,GAAEyzB,GAAGhwL,GAAG1B,GAAG0B,EAAE8D,EAAE,MAAM,IAAK,SAASy4J,GAAE,QAAQj+J,GAAG0B,EAAE8D,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOy4J,GAAE,QAAQj+J,GAAGi+J,GAAE,OAAOj+J,GAAG0B,EAAE8D,EAAE,MAAM,IAAK,UAAUy4J,GAAE,SAASj+J,GAAG0B,EAAE8D,EAAE,MAAM,IAAK,QAAQ21K,GAAGn7K,EAAEwF,GAAG9D,EAAEq5K,EAAG/6K,EAAEwF,GAAGy4J,GAAE,UAAUj+J,GAAG,MAAM,IAAK,SAAS0B,EAAE85K,GAAGx7K,EAAEwF,GAAG,MAAM,IAAK,SAASxF,EAAEi7K,cAAc,CAACinB,cAAc18L,EAAE28L,UAAUzgM,EAAEvE,EAAE,GAAGqI,EAAE,CAACrY,WAAM,IAAS8wK,GAAE,UAAUj+J,GAAG,MAAM,IAAK,WAAWg8K,GAAGh8K,EAAEwF,GAAG9D,EACpfo6K,GAAG97K,EAAEwF,GAAGy4J,GAAE,UAAUj+J,GAAG,MAAM,QAAQ0B,EAAE8D,EAAE6kB,GAAGnqB,EAAEwB,GAAG,IAAIiE,EAAEjE,EAAE,IAAI+D,KAAKE,EAAE,GAAGA,EAAEg1I,eAAel1I,GAAG,CAAC,IAAIy8D,EAAEv8D,EAAEF,GAAG,UAAUA,EAAE23K,GAAGp9K,EAAEkiE,GAAG,4BAA4Bz8D,EAAuB,OAApBy8D,EAAEA,EAAEA,EAAE4wH,YAAO,IAAgBxW,GAAGt8K,EAAEkiE,GAAI,aAAaz8D,EAAE,kBAAkBy8D,GAAG,aAAahiE,GAAG,KAAKgiE,IAAI06G,GAAG58K,EAAEkiE,GAAG,kBAAkBA,GAAG06G,GAAG58K,EAAE,GAAGkiE,GAAG,mCAAmCz8D,GAAG,6BAA6BA,GAAG,cAAcA,IAAIy4J,EAAGvjB,eAAel1I,GAAG,MAAMy8D,GAAG,aAAaz8D,GAAGw4J,GAAE,SAASj+J,GAAG,MAAMkiE,GAAGxwD,EAAG1R,EAAEyF,EAAEy8D,EAAEx8D,IAAI,OAAOxF,GAAG,IAAK,QAAQq6K,EAAGv6K,GAAGg6B,GAAGh6B,EAAEwF,GAAE,GACnf,MAAM,IAAK,WAAW+0K,EAAGv6K,GAAGi8K,GAAGj8K,GAAG,MAAM,IAAK,SAAS,MAAMwF,EAAErY,OAAO6S,EAAE03B,aAAa,QAAQ,GAAG2iJ,EAAG70K,EAAErY,QAAQ,MAAM,IAAK,SAAS6S,EAAEmiM,WAAW38L,EAAE28L,SAAmB,OAAV18L,EAAED,EAAErY,OAAcuuL,GAAG17K,IAAIwF,EAAE28L,SAAS18L,GAAE,GAAI,MAAMD,EAAEuwJ,cAAc2lB,GAAG17K,IAAIwF,EAAE28L,SAAS38L,EAAEuwJ,cAAa,GAAI,MAAM,QAAQ,oBAAoBr0J,EAAE20I,UAAUr2I,EAAEoiM,QAAQ5P,IAAIG,GAAGzyL,EAAEsF,KAAKvF,EAAEoxJ,OAAO,GAAG,OAAOpxJ,EAAE6tI,MAAM7tI,EAAEoxJ,OAAO,KAAK,OAAO,KAAK,KAAK,EAAE,GAAGrxJ,GAAG,MAAMC,EAAEg8I,UAAU8kD,GAAG/gM,EAAEC,EAAED,EAAEozI,cAAc5tI,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOvF,EAAEg8I,UAAU,MAAM96I,MAAM7D,EAAE,MAC/e4C,EAAE66L,GAAGD,GAAG1oG,SAAS2oG,GAAGH,GAAGxoG,SAAS4pG,GAAG/7L,IAAIuF,EAAEvF,EAAEg8I,UAAU/7I,EAAED,EAAEmzI,cAAc5tI,EAAE8tL,IAAIrzL,EAAEuF,EAAEu3K,YAAY78K,IAAID,EAAEoxJ,OAAO,MAAK7rJ,GAAG,IAAItF,EAAE48K,SAAS58K,EAAEA,EAAEgmK,eAAeyE,eAAenlK,IAAK8tL,IAAIrzL,EAAEA,EAAEg8I,UAAUz2I,GAAG,OAAO,KAAK,KAAK,GAA0B,OAAvB8zJ,GAAE5yD,IAAGlhG,EAAEvF,EAAE8/K,cAAiB,KAAa,GAAR9/K,EAAEoxJ,QAAiBpxJ,EAAEo3L,MAAMn3L,EAAED,IAAEuF,EAAE,OAAOA,EAAEtF,GAAE,EAAG,OAAOF,OAAE,IAASC,EAAEmzI,cAAcsE,UAAUskD,GAAG/7L,GAAGC,EAAE,OAAOF,EAAE+/K,cAAiBv6K,IAAItF,GAAG,KAAY,EAAPD,EAAEo7C,QAAW,OAAOr7C,IAAG,IAAKC,EAAEmzI,cAAc+tD,4BAA4B,KAAe,EAAVz6F,GAAEtU,SAAW,IAAIiwG,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GACrf,GAAE,OAAO5iC,IAAG,KAAQ,UAAH+4B,KAAe,KAAQ,UAAH8J,KAAeC,GAAG9iC,GAAE5B,OAAMr4J,GAAGtF,KAAED,EAAEoxJ,OAAO,GAAS,MAAK,KAAK,EAAE,OAAO6pC,KAAW,OAAOl7L,GAAGye,GAAGxe,EAAEg8I,UAAUC,eAAe,KAAK,KAAK,GAAG,OAAO66C,GAAG92L,GAAG,KAAK,KAAK,GAAG,OAAOg0L,GAAGh0L,EAAErF,OAAOs5L,KAAK,KAAK,KAAK,GAA0B,GAAvB56B,GAAE5yD,IAAwB,QAArBlhG,EAAEvF,EAAE8/K,eAA0B,OAAO,KAAsC,GAAjCt6K,EAAE,KAAa,GAARxF,EAAEoxJ,OAA2B,QAAjB3rJ,EAAEF,EAAEo8L,WAAsB,GAAGn8L,EAAEu8L,GAAGx8L,GAAE,OAAQ,CAAC,GAAG,IAAI68L,IAAG,OAAOriM,GAAG,KAAa,GAARA,EAAEqxJ,OAAU,IAAIrxJ,EAAEC,EAAEqoB,MAAM,OAAOtoB,GAAG,CAAS,GAAG,QAAX0F,EAAE21L,GAAGr7L,IAAe,CACjW,IADkWC,EAAEoxJ,OAAO,GAAG2wC,GAAGx8L,GAAE,GAAoB,QAAhBC,EAAEC,EAAEiyL,eAAuB13L,EAAE03L,YAAYlyL,EAAExF,EAAEoxJ,OAAO,GACnf,OAAO7rJ,EAAEu0L,aAAa95L,EAAEg6L,YAAY,MAAMh6L,EAAE85L,WAAWv0L,EAAEu0L,WAAWv0L,EAAEtF,EAAMA,EAAED,EAAEqoB,MAAM,OAAOpoB,GAAOF,EAAEwF,GAANC,EAAEvF,GAAQmxJ,OAAO,EAAE5rJ,EAAEu0L,WAAW,KAAKv0L,EAAEw0L,YAAY,KAAKx0L,EAAEs0L,WAAW,KAAmB,QAAdr0L,EAAED,EAAEy5I,YAAoBz5I,EAAEwxL,WAAW,EAAExxL,EAAE4xL,MAAMr3L,EAAEyF,EAAE6iB,MAAM,KAAK7iB,EAAE2tI,cAAc,KAAK3tI,EAAEs6K,cAAc,KAAKt6K,EAAEkyL,YAAY,KAAKlyL,EAAE0xL,aAAa,KAAK1xL,EAAEw2I,UAAU,OAAOx2I,EAAEwxL,WAAWvxL,EAAEuxL,WAAWxxL,EAAE4xL,MAAM3xL,EAAE2xL,MAAM5xL,EAAE6iB,MAAM5iB,EAAE4iB,MAAM7iB,EAAE2tI,cAAc1tI,EAAE0tI,cAAc3tI,EAAEs6K,cAAcr6K,EAAEq6K,cAAct6K,EAAEkyL,YAAYjyL,EAAEiyL,YAAYlyL,EAAE7K,KAAK8K,EAAE9K,KAAKoF,EAAE0F,EAAEyxL,aACpf1xL,EAAE0xL,aAAa,OAAOn3L,EAAE,KAAK,CAACq3L,MAAMr3L,EAAEq3L,MAAMD,aAAap3L,EAAEo3L,eAAel3L,EAAEA,EAAE48I,QAA2B,OAAnBihB,GAAEr3D,GAAY,EAAVA,GAAEtU,QAAU,GAAUnyF,EAAEqoB,MAAMtoB,EAAEA,EAAE88I,QAAQ,OAAOt3I,EAAEu1F,MAAMojE,KAAIqkC,KAAKviM,EAAEoxJ,OAAO,GAAG5rJ,GAAE,EAAGu8L,GAAGx8L,GAAE,GAAIvF,EAAEo3L,MAAM,cAAc,CAAC,IAAI5xL,EAAE,GAAW,QAARzF,EAAEq7L,GAAG31L,KAAa,GAAGzF,EAAEoxJ,OAAO,GAAG5rJ,GAAE,EAAmB,QAAhBvF,EAAEF,EAAE23L,eAAuB13L,EAAE03L,YAAYz3L,EAAED,EAAEoxJ,OAAO,GAAG2wC,GAAGx8L,GAAE,GAAI,OAAOA,EAAEu1F,MAAM,WAAWv1F,EAAEs8L,WAAWp8L,EAAEw5I,YAAYu8C,GAAG,OAAmC,QAA5Bx7L,EAAEA,EAAE85L,WAAWv0L,EAAEu0L,cAAsB95L,EAAE+5L,WAAW,MAAM,UAAU,EAAE77B,KAAI34J,EAAEq8L,mBAAmBW,IAAI,aAAatiM,IAAID,EAAEoxJ,OACjf,GAAG5rJ,GAAE,EAAGu8L,GAAGx8L,GAAE,GAAIvF,EAAEo3L,MAAM,UAAU7xL,EAAEm8L,aAAaj8L,EAAEo3I,QAAQ78I,EAAEqoB,MAAMroB,EAAEqoB,MAAM5iB,IAAa,QAATxF,EAAEsF,EAAE6sF,MAAcnyF,EAAE48I,QAAQp3I,EAAEzF,EAAEqoB,MAAM5iB,EAAEF,EAAE6sF,KAAK3sF,GAAG,OAAO,OAAOF,EAAEu1F,MAAM76F,EAAEsF,EAAEu1F,KAAKv1F,EAAEo8L,UAAU1hM,EAAEsF,EAAEu1F,KAAK76F,EAAE48I,QAAQt3I,EAAEu0L,WAAW95L,EAAE85L,WAAWv0L,EAAEq8L,mBAAmB1jC,KAAIj+J,EAAE48I,QAAQ,KAAK78I,EAAEymG,GAAEtU,QAAQ2rE,GAAEr3D,GAAEjhG,EAAI,EAAFxF,EAAI,EAAI,EAAFA,GAAKC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOuiM,KAAK,OAAOziM,GAAG,OAAOA,EAAE+/K,iBAAiB,OAAO9/K,EAAE8/K,gBAAgB,kCAAkCv6K,EAAE61C,OAAOp7C,EAAEoxJ,OAAO,GAAG,KAAK,MAAMlwJ,MAAM7D,EAAE,IAAI2C,EAAEi6K,MAChd,SAASwoB,GAAG1iM,GAAG,OAAOA,EAAEk6K,KAAK,KAAK,EAAE+Z,GAAGj0L,EAAEpF,OAAOs5L,KAAK,IAAIj0L,EAAED,EAAEqxJ,MAAM,OAAS,KAAFpxJ,GAAQD,EAAEqxJ,OAAS,KAAHpxJ,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAAgC,GAA9Bk7L,KAAK5hC,GAAEpzD,IAAGozD,GAAEF,IAAG8iC,KAAkB,KAAO,IAApBj8L,EAAED,EAAEqxJ,QAAoB,MAAMlwJ,MAAM7D,EAAE,MAAyB,OAAnB0C,EAAEqxJ,OAAS,KAAHpxJ,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAOo7L,GAAGp7L,GAAG,KAAK,KAAK,GAAG,OAAOs5J,GAAE5yD,IAAe,MAAZzmG,EAAED,EAAEqxJ,QAAcrxJ,EAAEqxJ,OAAS,KAAHpxJ,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAOs5J,GAAE5yD,IAAG,KAAK,KAAK,EAAE,OAAOw0F,KAAK,KAAK,KAAK,GAAG,OAAOnE,GAAG/2L,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOyiM,KAAK,KAAK,QAAQ,OAAO,MACra,SAASE,GAAG3iM,EAAEC,GAAG,IAAI,IAAIC,EAAE,GAAGsF,EAAEvF,EAAE,GAAGC,GAAG+5K,EAAGz0K,GAAGA,EAAEA,EAAEw2I,aAAax2I,GAAG,IAAI9D,EAAExB,EAAE,MAAMuF,GAAG/D,EAAE,6BAA6B+D,EAAEg5E,QAAQ,KAAKh5E,EAAEo0K,MAAM,MAAM,CAAC1sL,MAAM6S,EAAE6K,OAAO5K,EAAE45K,MAAMn4K,GAAG,SAASkhM,GAAG5iM,EAAEC,GAAG,IAAIc,QAAQ3T,MAAM6S,EAAE9S,OAAO,MAAM+S,GAAG21G,YAAW,WAAW,MAAM31G,MAlB3P2gM,GAAG,SAAS7gM,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAEqoB,MAAM,OAAOpoB,GAAG,CAAC,GAAG,IAAIA,EAAEg6K,KAAK,IAAIh6K,EAAEg6K,IAAIl6K,EAAEo8I,YAAYl8I,EAAE+7I,gBAAgB,GAAG,IAAI/7I,EAAEg6K,KAAK,OAAOh6K,EAAEooB,MAAM,CAACpoB,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,SAAS,GAAGpoB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAAS/7I,EAAE,OAAOC,EAAEA,EAAE87I,OAAO97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,UAChSgkD,GAAG,SAAS9gM,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEozI,cAAc,GAAG1xI,IAAI8D,EAAE,CAACxF,EAAEC,EAAEg8I,UAAU8+C,GAAGH,GAAGxoG,SAAS,IAAyU1sF,EAArUD,EAAE,KAAK,OAAOvF,GAAG,IAAK,QAAQwB,EAAEq5K,EAAG/6K,EAAE0B,GAAG8D,EAAEu1K,EAAG/6K,EAAEwF,GAAGC,EAAE,GAAG,MAAM,IAAK,SAAS/D,EAAE85K,GAAGx7K,EAAE0B,GAAG8D,EAAEg2K,GAAGx7K,EAAEwF,GAAGC,EAAE,GAAG,MAAM,IAAK,SAAS/D,EAAEvE,EAAE,GAAGuE,EAAE,CAACvU,WAAM,IAASqY,EAAErI,EAAE,GAAGqI,EAAE,CAACrY,WAAM,IAASsY,EAAE,GAAG,MAAM,IAAK,WAAW/D,EAAEo6K,GAAG97K,EAAE0B,GAAG8D,EAAEs2K,GAAG97K,EAAEwF,GAAGC,EAAE,GAAG,MAAM,QAAQ,oBAAoB/D,EAAE20I,SAAS,oBAAoB7wI,EAAE6wI,UAAUr2I,EAAEoiM,QAAQ5P,IAAyB,IAAI92L,KAAzB2uB,GAAGnqB,EAAEsF,GAAStF,EAAE,KAAcwB,EAAE,IAAI8D,EAAEm1I,eAAej/I,IAAIgG,EAAEi5I,eAAej/I,IAAI,MAAMgG,EAAEhG,GAAG,GAAG,UAC3eA,EAAE,CAAC,IAAIiK,EAAEjE,EAAEhG,GAAG,IAAIgK,KAAKC,EAAEA,EAAEg1I,eAAej1I,KAAKxF,IAAIA,EAAE,IAAIA,EAAEwF,GAAG,QAAQ,4BAA4BhK,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIwiK,EAAGvjB,eAAej/I,GAAG+J,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIxK,KAAKS,EAAE,OAAO,IAAIA,KAAK8J,EAAE,CAAC,IAAI08D,EAAE18D,EAAE9J,GAAyB,GAAtBiK,EAAE,MAAMjE,EAAEA,EAAEhG,QAAG,EAAU8J,EAAEm1I,eAAej/I,IAAIwmE,IAAIv8D,IAAI,MAAMu8D,GAAG,MAAMv8D,GAAG,GAAG,UAAUjK,EAAE,GAAGiK,EAAE,CAAC,IAAID,KAAKC,GAAGA,EAAEg1I,eAAej1I,IAAIw8D,GAAGA,EAAEy4E,eAAej1I,KAAKxF,IAAIA,EAAE,IAAIA,EAAEwF,GAAG,IAAI,IAAIA,KAAKw8D,EAAEA,EAAEy4E,eAAej1I,IAAIC,EAAED,KAAKw8D,EAAEx8D,KAAKxF,IAClfA,EAAE,IAAIA,EAAEwF,GAAGw8D,EAAEx8D,SAASxF,IAAIuF,IAAIA,EAAE,IAAIA,EAAExK,KAAKS,EAAEwE,IAAIA,EAAEgiE,MAAM,4BAA4BxmE,GAAGwmE,EAAEA,EAAEA,EAAE4wH,YAAO,EAAOntL,EAAEA,EAAEA,EAAEmtL,YAAO,EAAO,MAAM5wH,GAAGv8D,IAAIu8D,IAAIz8D,EAAEA,GAAG,IAAIxK,KAAKS,EAAEwmE,IAAI,aAAaxmE,EAAE,kBAAkBwmE,GAAG,kBAAkBA,IAAIz8D,EAAEA,GAAG,IAAIxK,KAAKS,EAAE,GAAGwmE,GAAG,mCAAmCxmE,GAAG,6BAA6BA,IAAIwiK,EAAGvjB,eAAej/I,IAAI,MAAMwmE,GAAG,aAAaxmE,GAAGuiK,GAAE,SAASj+J,GAAGyF,GAAGE,IAAIu8D,IAAIz8D,EAAE,KAAK,kBAAkBy8D,GAAG,OAAOA,GAAGA,EAAEm0G,WAAWgD,EAAGn3G,EAAE/lE,YAAYsJ,EAAEA,GAAG,IAAIxK,KAAKS,EAAEwmE,IAAIhiE,IAAIuF,EAAEA,GAAG,IAAIxK,KAAK,QAC/eiF,GAAG,IAAIxE,EAAE+J,GAAKxF,EAAE03L,YAAYj8L,KAAEuE,EAAEoxJ,OAAO,KAAI0vC,GAAG,SAAS/gM,EAAEC,EAAEC,EAAEsF,GAAGtF,IAAIsF,IAAIvF,EAAEoxJ,OAAO,IAcgL,IAAIwxC,GAAG,oBAAoBr7J,QAAQA,QAAQ+rC,IAAI,SAASuvH,GAAG9iM,EAAEC,EAAEC,IAAGA,EAAE+3L,IAAI,EAAE/3L,IAAKg6K,IAAI,EAAEh6K,EAAEk4L,QAAQ,CAAC3xK,QAAQ,MAAM,IAAIjhB,EAAEvF,EAAE9S,MAAsD,OAAhD+S,EAAE8R,SAAS,WAAW+wL,KAAKA,IAAG,EAAGC,GAAGx9L,GAAGo9L,GAAG5iM,EAAEC,IAAWC,EACpb,SAAS+iM,GAAGjjM,EAAEC,EAAEC,IAAGA,EAAE+3L,IAAI,EAAE/3L,IAAKg6K,IAAI,EAAE,IAAI10K,EAAExF,EAAEpF,KAAK28I,yBAAyB,GAAG,oBAAoB/xI,EAAE,CAAC,IAAI9D,EAAEzB,EAAE9S,MAAM+S,EAAEk4L,QAAQ,WAAmB,OAARwK,GAAG5iM,EAAEC,GAAUuF,EAAE9D,IAAI,IAAI+D,EAAEzF,EAAEi8I,UAA8O,OAApO,OAAOx2I,GAAG,oBAAoBA,EAAEy9L,oBAAoBhjM,EAAE8R,SAAS,WAAW,oBAAoBxM,IAAI,OAAO29L,GAAGA,GAAG,IAAIn8F,IAAI,CAACr5G,OAAOw1M,GAAGpsL,IAAIppB,MAAMi1M,GAAG5iM,EAAEC,IAAI,IAAIC,EAAED,EAAE45K,MAAMlsL,KAAKu1M,kBAAkBjjM,EAAE9S,MAAM,CAACi2M,eAAe,OAAOljM,EAAEA,EAAE,OAAcA,EAAE,IAAImjM,GAAG,oBAAoBC,QAAQA,QAAQt8F,IACxc,SAASu8F,GAAGvjM,GAAG,IAAIC,EAAED,EAAE8tI,IAAI,GAAG,OAAO7tI,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAMC,GAAGsjM,GAAGxjM,EAAEE,QAAQD,EAAEmyF,QAAQ,KAAK,SAASqxG,GAAGzjM,EAAEC,GAAG,OAAOA,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,EAAE,GAAW,IAARj6K,EAAEoxJ,OAAW,OAAOrxJ,EAAE,CAAC,IAAIE,EAAEF,EAAEozI,cAAc5tI,EAAExF,EAAE+/K,cAA4B9/K,GAAdD,EAAEC,EAAEg8I,WAAcs9C,wBAAwBt5L,EAAEm6L,cAAcn6L,EAAErF,KAAKsF,EAAEu2L,GAAGx2L,EAAErF,KAAKsF,GAAGsF,GAAGxF,EAAE0jM,oCAAoCzjM,EAAE,OAAO,KAAK,EAA6C,YAAnC,IAARA,EAAEoxJ,OAAW4hC,GAAGhzL,EAAEg8I,UAAUC,gBAAsB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,MAAM/6I,MAAM7D,EAAE,MAC5e,SAASqmM,GAAG3jM,EAAEC,EAAEC,GAAG,OAAOA,EAAEg6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhCj6K,EAAE,QAAlBA,EAAEC,EAAEy3L,aAAuB13L,EAAE85L,WAAW,MAAiB,CAAC/5L,EAAEC,EAAEA,EAAEmvD,KAAK,EAAE,CAAC,GAAG,KAAW,EAANpvD,EAAEk6K,KAAO,CAAC,IAAI10K,EAAExF,EAAE6yH,OAAO7yH,EAAE83D,QAAQtyD,IAAIxF,EAAEA,EAAEovD,WAAWpvD,IAAIC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEC,EAAEy3L,aAAuB13L,EAAE85L,WAAW,MAAiB,CAAC/5L,EAAEC,EAAEA,EAAEmvD,KAAK,EAAE,CAAC,IAAI1tD,EAAE1B,EAAEwF,EAAE9D,EAAE0tD,KAAa,KAAO,GAAf1tD,EAAEA,EAAEw4K,OAAe,KAAO,EAAFx4K,KAAOkiM,GAAG1jM,EAAEF,GAAG6jM,GAAG3jM,EAAEF,IAAIA,EAAEwF,QAAQxF,IAAIC,GAAG,OAAO,KAAK,EACtR,OADwRD,EAAEE,EAAE+7I,UAAkB,EAAR/7I,EAAEmxJ,QAAU,OAAOpxJ,EAAED,EAAEuiJ,qBAAqB/8I,EAAEtF,EAAEk6L,cAAcl6L,EAAEtF,KAAKqF,EAAEmzI,cAAcqjD,GAAGv2L,EAAEtF,KAAKqF,EAAEmzI,eAAepzI,EAAEkjJ,mBAAmB19I,EACxgBvF,EAAE8/K,cAAc//K,EAAE0jM,4CAAuD,QAAhBzjM,EAAEC,EAAEy3L,cAAsBc,GAAGv4L,EAAED,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAEC,EAAEy3L,aAAwB,CAAQ,GAAP33L,EAAE,KAAQ,OAAOE,EAAEooB,MAAM,OAAOpoB,EAAEooB,MAAM4xJ,KAAK,KAAK,EAAEl6K,EAAEE,EAAEooB,MAAM2zH,UAAU,MAAM,KAAK,EAAEj8I,EAAEE,EAAEooB,MAAM2zH,UAAUw8C,GAAGv4L,EAAED,EAAED,GAAG,OAAO,KAAK,EAA2E,OAAzEA,EAAEE,EAAE+7I,eAAU,OAAOh8I,GAAW,EAARC,EAAEmxJ,OAASshC,GAAGzyL,EAAEtF,KAAKsF,EAAEkzI,gBAAgBpzI,EAAE8gC,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GAAG,OAAO,KAAK,GACzY,YAD4Y,OAAO5gC,EAAE6/K,gBAAgB7/K,EAAEA,EAAEg/I,UAAU,OAAOh/I,IAAIA,EAAEA,EAAE6/K,cAAc,OAAO7/K,IAAIA,EAAEA,EAAE8/K,WAAW,OAAO9/K,GAAG+hL,GAAG/hL,OAChf,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,MAAMiB,MAAM7D,EAAE,MAC5E,SAAS+xF,GAAGrvF,EAAEC,GAAG,IAAI,IAAIC,EAAEF,IAAI,CAAC,GAAG,IAAIE,EAAEg6K,IAAI,CAAC,IAAI10K,EAAEtF,EAAE+7I,UAAU,GAAGh8I,EAAY,oBAAVuF,EAAEA,EAAE+sB,OAA4B8qJ,YAAY73K,EAAE63K,YAAY,UAAU,OAAO,aAAa73K,EAAEs1E,QAAQ,WAAW,CAACt1E,EAAEtF,EAAE+7I,UAAU,IAAIv6I,EAAExB,EAAEkzI,cAAc7gH,MAAM7wB,OAAE,IAASA,GAAG,OAAOA,GAAGA,EAAEi5I,eAAe,WAAWj5I,EAAEo5E,QAAQ,KAAKt1E,EAAE+sB,MAAMuoD,QAAQqiG,GAAG,UAAUz7K,SAAS,GAAG,IAAIxB,EAAEg6K,IAAIh6K,EAAE+7I,UAAU8gC,UAAU98K,EAAE,GAAGC,EAAEkzI,mBAAmB,IAAI,KAAKlzI,EAAEg6K,KAAK,KAAKh6K,EAAEg6K,KAAK,OAAOh6K,EAAE6/K,eAAe7/K,IAAIF,IAAI,OAAOE,EAAEooB,MAAM,CAACpoB,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,SAAS,GAAGpoB,IACtfF,EAAE,MAAM,KAAK,OAAOE,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAASh8I,EAAE,OAAOE,EAAEA,EAAE87I,OAAO97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,SACjH,SAASxtD,GAAGtvF,EAAEC,GAAG,GAAGw0L,IAAI,oBAAoBA,GAAGqP,qBAAqB,IAAIrP,GAAGqP,qBAAqBtP,GAAGv0L,GAAG,MAAMwF,IAAI,OAAOxF,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnBl6K,EAAEC,EAAE03L,cAAyC,QAAf33L,EAAEA,EAAE+5L,YAAqB,CAAC,IAAI75L,EAAEF,EAAEA,EAAEovD,KAAK,EAAE,CAAC,IAAI5pD,EAAEtF,EAAEwB,EAAE8D,EAAEsyD,QAAgB,GAARtyD,EAAEA,EAAE00K,SAAO,IAASx4K,EAAE,GAAG,KAAO,EAAF8D,GAAKo+L,GAAG3jM,EAAEC,OAAO,CAACsF,EAAEvF,EAAE,IAAIyB,IAAI,MAAM+D,GAAG+9L,GAAGh+L,EAAEC,IAAIvF,EAAEA,EAAEkvD,WAAWlvD,IAAIF,GAAG,MAAM,KAAK,EAAsB,GAApBujM,GAAGtjM,GAAoB,oBAAjBD,EAAEC,EAAEg8I,WAAmCwG,qBAAqB,IAAIziJ,EAAEsoI,MAAMroI,EAAEmzI,cAAcpzI,EAAEy1C,MAAMx1C,EAAE8/K,cAAc//K,EAAEyiJ,uBAAuB,MAAMh9I,GAAG+9L,GAAGvjM,EAC/gBwF,GAAG,MAAM,KAAK,EAAE89L,GAAGtjM,GAAG,MAAM,KAAK,EAAE8jM,GAAG/jM,EAAEC,IAAI,SAAS+jM,GAAGhkM,GAAGA,EAAEk/I,UAAU,KAAKl/I,EAAEsoB,MAAM,KAAKtoB,EAAEm3L,aAAa,KAAKn3L,EAAEi6L,YAAY,KAAKj6L,EAAE+5L,WAAW,KAAK/5L,EAAEozI,cAAc,KAAKpzI,EAAE+/K,cAAc,KAAK//K,EAAE67L,aAAa,KAAK77L,EAAEg8I,OAAO,KAAKh8I,EAAE23L,YAAY,KAAK,SAASsM,GAAGjkM,GAAG,OAAO,IAAIA,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,IACnS,SAASgqB,GAAGlkM,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAEg8I,OAAO,OAAO/7I,GAAG,CAAC,GAAGgkM,GAAGhkM,GAAG,MAAMD,EAAEC,EAAEA,EAAE+7I,OAAO,MAAM76I,MAAM7D,EAAE,MAAO,IAAI4C,EAAED,EAAgB,OAAdA,EAAEC,EAAE+7I,UAAiB/7I,EAAEg6K,KAAK,KAAK,EAAE,IAAI10K,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEvF,EAAEA,EAAEi8I,cAAc12I,GAAE,EAAG,MAAM,QAAQ,MAAMrE,MAAM7D,EAAE,MAAe,GAAR4C,EAAEmxJ,QAAWurB,GAAG38K,EAAE,IAAIC,EAAEmxJ,QAAQ,IAAIrxJ,EAAEC,EAAE,IAAIC,EAAEF,IAAI,CAAC,KAAK,OAAOE,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQioD,GAAG/jM,EAAE87I,QAAQ,CAAC97I,EAAE,KAAK,MAAMF,EAAEE,EAAEA,EAAE87I,OAAiC,IAA1B97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAW97I,EAAEA,EAAE48I,QAAQ,IAAI58I,EAAEg6K,KAAK,IAAIh6K,EAAEg6K,KAAK,KAAKh6K,EAAEg6K,KAAK,CAAC,GAAW,EAARh6K,EAAEmxJ,MAAQ,SAASpxJ,EAAE,GAAG,OAC/eC,EAAEooB,OAAO,IAAIpoB,EAAEg6K,IAAI,SAASj6K,EAAOC,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,KAAa,EAARpoB,EAAEmxJ,OAAS,CAACnxJ,EAAEA,EAAE+7I,UAAU,MAAMj8I,GAAGwF,EAAE2+L,GAAGnkM,EAAEE,EAAED,GAAGmkM,GAAGpkM,EAAEE,EAAED,GACzH,SAASkkM,GAAGnkM,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEk6K,IAAIx4K,EAAE,IAAI8D,GAAG,IAAIA,EAAE,GAAG9D,EAAE1B,EAAE0B,EAAE1B,EAAEi8I,UAAUj8I,EAAEi8I,UAAU9T,SAASloI,EAAE,IAAIC,EAAE48K,SAAS58K,EAAEopK,WAAW3sB,aAAa38I,EAAEC,GAAGC,EAAEy8I,aAAa38I,EAAEC,IAAI,IAAIC,EAAE48K,UAAU78K,EAAEC,EAAEopK,YAAa3sB,aAAa38I,EAAEE,IAAKD,EAAEC,GAAIk8I,YAAYp8I,GAA4B,QAAxBE,EAAEA,EAAEmkM,2BAA8B,IAASnkM,GAAG,OAAOD,EAAEmiM,UAAUniM,EAAEmiM,QAAQ5P,UAAU,GAAG,IAAIhtL,GAAc,QAAVxF,EAAEA,EAAEsoB,OAAgB,IAAI67K,GAAGnkM,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAAQ,OAAO98I,GAAGmkM,GAAGnkM,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAC9Y,SAASsnD,GAAGpkM,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEk6K,IAAIx4K,EAAE,IAAI8D,GAAG,IAAIA,EAAE,GAAG9D,EAAE1B,EAAE0B,EAAE1B,EAAEi8I,UAAUj8I,EAAEi8I,UAAU9T,SAASloI,EAAEC,EAAEy8I,aAAa38I,EAAEC,GAAGC,EAAEk8I,YAAYp8I,QAAQ,GAAG,IAAIwF,GAAc,QAAVxF,EAAEA,EAAEsoB,OAAgB,IAAI87K,GAAGpkM,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAAQ,OAAO98I,GAAGokM,GAAGpkM,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QACrN,SAASinD,GAAG/jM,EAAEC,GAAG,IAAI,IAAayB,EAAE+D,EAAXvF,EAAED,EAAEuF,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEtF,EAAE87I,OAAOh8I,EAAE,OAAO,CAAC,GAAG,OAAOwF,EAAE,MAAMrE,MAAM7D,EAAE,MAAoB,OAAdoE,EAAE8D,EAAEy2I,UAAiBz2I,EAAE00K,KAAK,KAAK,EAAEz0K,GAAE,EAAG,MAAMzF,EAAE,KAAK,EAAiC,KAAK,EAAE0B,EAAEA,EAAEw6I,cAAcz2I,GAAE,EAAG,MAAMzF,EAAEwF,EAAEA,EAAEw2I,OAAOx2I,GAAE,EAAG,GAAG,IAAItF,EAAEg6K,KAAK,IAAIh6K,EAAEg6K,IAAI,CAACl6K,EAAE,IAAI,IAAI0F,EAAE1F,EAAE2F,EAAEzF,EAAEgiE,EAAEv8D,IAAI,GAAG2pF,GAAG5pF,EAAEw8D,GAAG,OAAOA,EAAE55C,OAAO,IAAI45C,EAAEg4G,IAAIh4G,EAAE55C,MAAM0zH,OAAO95E,EAAEA,EAAEA,EAAE55C,UAAU,CAAC,GAAG45C,IAAIv8D,EAAE,MAAM3F,EAAE,KAAK,OAAOkiE,EAAE46E,SAAS,CAAC,GAAG,OAAO56E,EAAE85E,QAAQ95E,EAAE85E,SAASr2I,EAAE,MAAM3F,EAAEkiE,EAAEA,EAAE85E,OAAO95E,EAAE46E,QAAQd,OAAO95E,EAAE85E,OAAO95E,EAAEA,EAAE46E,QAAQr3I,GAAGC,EAAEhE,EAAEiE,EAAEzF,EAAE+7I,UACrf,IAAIv2I,EAAEo3K,SAASp3K,EAAE4jK,WAAWtsB,YAAYr3I,GAAGD,EAAEs3I,YAAYr3I,IAAIjE,EAAEs7I,YAAY98I,EAAE+7I,gBAAgB,GAAG,IAAI/7I,EAAEg6K,KAAK,GAAG,OAAOh6K,EAAEooB,MAAM,CAAC5mB,EAAExB,EAAE+7I,UAAUC,cAAcz2I,GAAE,EAAGvF,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,eAAe,GAAGgnE,GAAGtvF,EAAEE,GAAG,OAAOA,EAAEooB,MAAM,CAACpoB,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,SAAS,GAAGpoB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAAS/7I,EAAE,OAAkB,KAAXC,EAAEA,EAAE87I,QAAak+B,MAAM10K,GAAE,GAAItF,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,SAClZ,SAASwnD,GAAGtkM,EAAEC,GAAG,OAAOA,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIh6K,EAAED,EAAE03L,YAAyC,GAAG,QAAhCz3L,EAAE,OAAOA,EAAEA,EAAE65L,WAAW,MAAiB,CAAC,IAAIv0L,EAAEtF,EAAEA,EAAEkvD,KAAK,GAAG,KAAW,EAAN5pD,EAAE00K,OAASl6K,EAAEwF,EAAEsyD,QAAQtyD,EAAEsyD,aAAQ,OAAO,IAAS93D,GAAGA,KAAKwF,EAAEA,EAAE4pD,WAAW5pD,IAAItF,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,EAAgB,GAAG,OAAjBA,EAAED,EAAEg8I,WAAqB,CAACz2I,EAAEvF,EAAEmzI,cAAc,IAAI1xI,EAAE,OAAO1B,EAAEA,EAAEozI,cAAc5tI,EAAExF,EAAEC,EAAErF,KAAK,IAAI6K,EAAExF,EAAE03L,YAA+B,GAAnB13L,EAAE03L,YAAY,KAAQ,OAAOlyL,EAAE,CAAgF,IAA/EvF,EAAEqzL,IAAI/tL,EAAE,UAAUxF,GAAG,UAAUwF,EAAE5K,MAAM,MAAM4K,EAAE0C,MAAMozK,GAAGp7K,EAAEsF,GAAGw4K,GAAGh+K,EAAE0B,GAAGzB,EAAE+9K,GAAGh+K,EAAEwF,GAAO9D,EAAE,EAAEA,EAAE+D,EAAE9J,OAAO+F,GAClf,EAAE,CAAC,IAAIgE,EAAED,EAAE/D,GAAGiE,EAAEF,EAAE/D,EAAE,GAAG,UAAUgE,EAAE03K,GAAGl9K,EAAEyF,GAAG,4BAA4BD,EAAE42K,GAAGp8K,EAAEyF,GAAG,aAAaD,EAAEk3K,GAAG18K,EAAEyF,GAAG+L,EAAGxR,EAAEwF,EAAEC,EAAE1F,GAAG,OAAOD,GAAG,IAAK,QAAQi6B,GAAG/5B,EAAEsF,GAAG,MAAM,IAAK,WAAWkhF,GAAGxmF,EAAEsF,GAAG,MAAM,IAAK,SAASxF,EAAEE,EAAE+6K,cAAcinB,YAAYhiM,EAAE+6K,cAAcinB,cAAc18L,EAAE28L,SAAmB,OAAV18L,EAAED,EAAErY,OAAcuuL,GAAGx7K,IAAIsF,EAAE28L,SAAS18L,GAAE,GAAIzF,MAAMwF,EAAE28L,WAAW,MAAM38L,EAAEuwJ,aAAa2lB,GAAGx7K,IAAIsF,EAAE28L,SAAS38L,EAAEuwJ,cAAa,GAAI2lB,GAAGx7K,IAAIsF,EAAE28L,SAAS38L,EAAE28L,SAAS,GAAG,IAAG,MAAO,OAAO,KAAK,EAAE,GAAG,OAAOliM,EAAEg8I,UAAU,MAAM96I,MAAM7D,EAAE,MAC/c,YADqd2C,EAAEg8I,UAAU8gC,UACjf98K,EAAEmzI,eAAqB,KAAK,EAA8D,aAA5DlzI,EAAED,EAAEg8I,WAAYwlC,UAAUvhL,EAAEuhL,SAAQ,EAAGQ,GAAG/hL,EAAEg8I,iBAAuB,KAAK,GAAG,OAAO,KAAK,GAAyD,OAAtD,OAAOj8I,EAAE8/K,gBAAgBwkB,GAAGpmC,KAAI9uE,GAAGpvF,EAAEqoB,OAAM,SAAKk8K,GAAGvkM,GAAU,KAAK,GAAS,YAANukM,GAAGvkM,GAAU,KAAK,GAAG,OAAO,KAAK,GAAG,KAAK,GAAgC,YAA7BovF,GAAGpvF,EAAE,OAAOA,EAAE8/K,eAAsB,MAAM5+K,MAAM7D,EAAE,MAAO,SAASknM,GAAGxkM,GAAG,IAAIC,EAAED,EAAE23L,YAAY,GAAG,OAAO13L,EAAE,CAACD,EAAE23L,YAAY,KAAK,IAAIz3L,EAAEF,EAAEi8I,UAAU,OAAO/7I,IAAIA,EAAEF,EAAEi8I,UAAU,IAAIonD,IAAIpjM,EAAE+zE,SAAQ,SAAS/zE,GAAG,IAAIuF,EAAEi/L,GAAGnnF,KAAK,KAAKt9G,EAAEC,GAAGC,EAAEg8C,IAAIj8C,KAAKC,EAAE6W,IAAI9W,GAAGA,EAAE1S,KAAKiY,EAAEA,QACne,SAASk/L,GAAG1kM,EAAEC,GAAG,OAAO,OAAOD,IAAsB,QAAlBA,EAAEA,EAAE+/K,gBAAwB,OAAO//K,EAAEggL,cAA+B,QAAlB//K,EAAEA,EAAE8/K,gBAAwB,OAAO9/K,EAAE+/K,YAAe,IAAI2kB,GAAG5oM,KAAK4B,KAAKinM,GAAGpsB,EAAG/B,uBAAuBouB,GAAGrsB,EAAG5B,kBAAkBvY,GAAE,EAAEoB,GAAE,KAAKf,GAAE,KAAKb,GAAE,EAAEinC,GAAG,EAAEC,GAAGpR,GAAG,GAAG0O,GAAE,EAAE2C,GAAG,KAAKC,GAAG,EAAEzM,GAAG,EAAE8J,GAAG,EAAE4C,GAAG,EAAEC,GAAG,KAAKZ,GAAG,EAAE/B,GAAGt7L,IAAS,SAASk+L,KAAK5C,GAAGrkC,KAAI,IAAI,IA8BsFknC,GA9BlFvmC,GAAE,KAAKikC,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKmC,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAG,EAAG,SAASpN,KAAK,OAAO,KAAO,GAAFz6B,IAAMF,MAAK,IAAI2nC,GAAGA,GAAGA,GAAG3nC,KAC3e,SAAS46B,GAAG/4L,GAAY,GAAG,KAAO,GAAnBA,EAAEA,EAAEq7C,OAAkB,OAAO,EAAE,GAAG,KAAO,EAAFr7C,GAAK,OAAO,KAAKk2L,KAAK,EAAE,EAAkB,GAAhB,IAAI6P,KAAKA,GAAGd,IAAO,IAAIzO,GAAG7f,WAAW,CAAC,IAAIqvB,KAAKA,GAAG,OAAOb,GAAGA,GAAG7hB,aAAa,GAAGtjL,EAAE+lM,GAAG,IAAI9lM,EAAE,SAAS+lM,GAAsD,OAA7C,KAAN/lM,IAAIA,KAA8B,KAAPA,GAAbD,EAAE,SAASA,IAAOA,KAAUC,EAAE,OAAcA,EAA4D,OAA1DD,EAAEk2L,KAAK,KAAO,EAAF73B,KAAM,KAAKr+J,EAAEA,EAAE8jL,GAAG,GAAGiiB,IAAa/lM,EAAE8jL,GAAV9jL,EAtK3Q,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,GAsKuJmmM,CAAGnmM,GAAU+lM,IAAY/lM,EACnT,SAASg5L,GAAGh5L,EAAEC,EAAEC,GAAG,GAAG,GAAG0lM,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK1kM,MAAM7D,EAAE,MAAgB,GAAG,QAAb0C,EAAEomM,GAAGpmM,EAAEC,IAAe,OAAO,KAAKgkL,GAAGjkL,EAAEC,EAAEC,GAAGF,IAAIy/J,KAAI6iC,IAAIriM,EAAE,IAAIoiM,IAAGE,GAAGviM,EAAE69J,KAAI,IAAIr4J,EAAE0wL,KAAK,IAAIj2L,EAAE,KAAO,EAAFo+J,KAAM,KAAO,GAAFA,IAAMgoC,GAAGrmM,IAAIsmM,GAAGtmM,EAAEE,GAAG,IAAIm+J,KAAI+mC,KAAK9O,QAAQ,KAAO,EAAFj4B,KAAM,KAAK74J,GAAG,KAAKA,IAAI,OAAOmgM,GAAGA,GAAG,IAAI3+F,IAAI,CAAChnG,IAAI2lM,GAAG5uL,IAAI/W,IAAIsmM,GAAGtmM,EAAEE,IAAIilM,GAAGnlM,EAAE,SAASomM,GAAGpmM,EAAEC,GAAGD,EAAEq3L,OAAOp3L,EAAE,IAAIC,EAAEF,EAAEk/I,UAAqC,IAA3B,OAAOh/I,IAAIA,EAAEm3L,OAAOp3L,GAAGC,EAAEF,EAAMA,EAAEA,EAAEg8I,OAAO,OAAOh8I,GAAGA,EAAEi3L,YAAYh3L,EAAgB,QAAdC,EAAEF,EAAEk/I,aAAqBh/I,EAAE+2L,YAAYh3L,GAAGC,EAAEF,EAAEA,EAAEA,EAAEg8I,OAAO,OAAO,IAAI97I,EAAEg6K,IAAIh6K,EAAE+7I,UAAU,KACze,SAASqqD,GAAGtmM,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAEumM,aAAa/gM,EAAExF,EAAEwjL,eAAe9hL,EAAE1B,EAAEyjL,YAAYh+K,EAAEzF,EAAEwmM,gBAAgB9gM,EAAE1F,EAAEsjL,aAAa,EAAE59K,GAAG,CAAC,IAAIC,EAAE,GAAG+9K,GAAGh+K,GAAGw8D,EAAE,GAAGv8D,EAAEjK,EAAE+J,EAAEE,GAAG,IAAI,IAAIjK,GAAG,GAAG,KAAKwmE,EAAE18D,IAAI,KAAK08D,EAAExgE,GAAG,CAAChG,EAAEuE,EAAEmjL,GAAGlhH,GAAG,IAAIhlE,EAAEqkJ,GAAE97I,EAAEE,GAAG,IAAIzI,EAAExB,EAAE,IAAI,GAAGwB,EAAExB,EAAE,KAAK,QAAQA,GAAGuE,IAAID,EAAEujL,cAAcrhH,GAAGx8D,IAAIw8D,EAAwB,GAAtB18D,EAAE69K,GAAGrjL,EAAEA,IAAIy/J,GAAE5B,GAAE,GAAG59J,EAAEshJ,GAAK,IAAI/7I,EAAE,OAAOtF,IAAIA,IAAI01L,IAAIhB,GAAG10L,GAAGF,EAAEumM,aAAa,KAAKvmM,EAAEymM,iBAAiB,OAAO,CAAC,GAAG,OAAOvmM,EAAE,CAAC,GAAGF,EAAEymM,mBAAmBxmM,EAAE,OAAOC,IAAI01L,IAAIhB,GAAG10L,GAAG,KAAKD,GAAGC,EAAEmmM,GAAG/oF,KAAK,KAAKt9G,GAAG,OAAO81L,IAAIA,GAAG,CAAC51L,GAAG61L,GAAGpB,GAAGU,GAAGkB,KAAKT,GAAG76L,KAAKiF,GACrfA,EAAE01L,IAAI,KAAK31L,EAAEC,EAAEm2L,GAAG,GAAGgQ,GAAG/oF,KAAK,KAAKt9G,IAAaE,EAAEm2L,GAAVn2L,EAzK+F,SAAYF,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAMmB,MAAM7D,EAAE,IAAI0C,KAyKxT0mM,CAAGzmM,GAAU0mM,GAAGrpF,KAAK,KAAKt9G,IAAKA,EAAEymM,iBAAiBxmM,EAAED,EAAEumM,aAAarmM,GAC5G,SAASymM,GAAG3mM,GAAiB,GAAd8lM,IAAI,EAAEE,GAAGD,GAAG,EAAK,KAAO,GAAF1nC,IAAM,MAAMl9J,MAAM7D,EAAE,MAAM,IAAI2C,EAAED,EAAEumM,aAAa,GAAGK,MAAM5mM,EAAEumM,eAAetmM,EAAE,OAAO,KAAK,IAAIC,EAAEmjL,GAAGrjL,EAAEA,IAAIy/J,GAAE5B,GAAE,GAAG,GAAG,IAAI39J,EAAE,OAAO,KAAK,IAAIsF,EAAEtF,EAAMwB,EAAE28J,GAAEA,IAAG,GAAG,IAAI54J,EAAEohM,KAAkC,IAA1BpnC,KAAIz/J,GAAG69J,KAAIr4J,IAAE4/L,KAAK0B,GAAG9mM,EAAEwF,MAAM,IAAIuhM,KAAK,MAAM,MAAMphM,GAAGqhM,GAAGhnM,EAAE2F,GAAgE,GAApDmxL,KAAK8N,GAAGxyG,QAAQ3sF,EAAE44J,GAAE38J,EAAE,OAAOg9J,GAAEl5J,EAAE,GAAGi6J,GAAE,KAAK5B,GAAE,EAAEr4J,EAAE68L,IAAM,KAAK4C,GAAG3C,IAAIwE,GAAG9mM,EAAE,QAAQ,GAAG,IAAIwF,EAAE,CAAyF,GAAxF,IAAIA,IAAI64J,IAAG,GAAGr+J,EAAEyhL,UAAUzhL,EAAEyhL,SAAQ,EAAGwR,GAAGjzL,EAAEk8I,gBAAwB,KAARh8I,EAAE2jL,GAAG7jL,MAAWwF,EAAEyhM,GAAGjnM,EAAEE,KAAQ,IAAIsF,EAAE,MAAMvF,EAAE+kM,GAAG8B,GAAG9mM,EAAE,GAAGuiM,GAAGviM,EAAEE,GAAGomM,GAAGtmM,EAAEm+J,MAAKl+J,EAC3c,OAD6cD,EAAEknM,aACrflnM,EAAEoyF,QAAQ8sD,UAAUl/I,EAAEmnM,cAAcjnM,EAASsF,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMrE,MAAM7D,EAAE,MAAM,KAAK,EAAE8pM,GAAGpnM,GAAG,MAAM,KAAK,EAAU,GAARuiM,GAAGviM,EAAEE,IAAS,SAAFA,KAAcA,GAAiB,IAAbsF,EAAE++L,GAAG,IAAIpmC,MAAU,CAAC,GAAG,IAAIklB,GAAGrjL,EAAE,GAAG,MAAyB,KAAnB0B,EAAE1B,EAAEwjL,gBAAqBtjL,KAAKA,EAAE,CAAC44L,KAAK94L,EAAEyjL,aAAazjL,EAAEwjL,eAAe9hL,EAAE,MAAM1B,EAAEqnM,cAActU,GAAGqU,GAAG9pF,KAAK,KAAKt9G,GAAGwF,GAAG,MAAM4hM,GAAGpnM,GAAG,MAAM,KAAK,EAAU,GAARuiM,GAAGviM,EAAEE,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAfsF,EAAExF,EAAEkkL,WAAexiL,GAAG,EAAE,EAAExB,GAAG,CAAC,IAAIwF,EAAE,GAAGg+K,GAAGxjL,GAAGuF,EAAE,GAAGC,GAAEA,EAAEF,EAAEE,IAAKhE,IAAIA,EAAEgE,GAAGxF,IAAIuF,EACjZ,GADmZvF,EAAEwB,EAClZ,IAD4ZxB,GAAG,KAAXA,EAAEi+J,KAAIj+J,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAClfA,EAAE,KAAK,KAAKykM,GAAGzkM,EAAE,OAAOA,GAAU,CAACF,EAAEqnM,cAActU,GAAGqU,GAAG9pF,KAAK,KAAKt9G,GAAGE,GAAG,MAAMknM,GAAGpnM,GAAG,MAAM,KAAK,EAAEonM,GAAGpnM,GAAG,MAAM,QAAQ,MAAMmB,MAAM7D,EAAE,OAAkB,OAAVgpM,GAAGtmM,EAAEm+J,MAAYn+J,EAAEumM,eAAetmM,EAAE0mM,GAAGrpF,KAAK,KAAKt9G,GAAG,KAAK,SAASuiM,GAAGviM,EAAEC,GAAuD,IAApDA,IAAIilM,GAAGjlM,IAAIqiM,GAAGtiM,EAAEwjL,gBAAgBvjL,EAAED,EAAEyjL,cAAcxjL,EAAMD,EAAEA,EAAEwmM,gBAAgB,EAAEvmM,GAAG,CAAC,IAAIC,EAAE,GAAGwjL,GAAGzjL,GAAGuF,EAAE,GAAGtF,EAAEF,EAAEE,IAAI,EAAED,IAAIuF,GAC1U,SAAS6gM,GAAGrmM,GAAG,GAAG,KAAO,GAAFq+J,IAAM,MAAMl9J,MAAM7D,EAAE,MAAW,GAALspM,KAAQ5mM,IAAIy/J,IAAG,KAAKz/J,EAAEujL,aAAa1lB,IAAG,CAAC,IAAI59J,EAAE49J,GAAM39J,EAAE+mM,GAAGjnM,EAAEC,GAAG,KAAKglM,GAAG3C,MAAgBpiM,EAAE+mM,GAAGjnM,EAAfC,EAAEojL,GAAGrjL,EAAEC,UAA6BC,EAAE+mM,GAAGjnM,EAAfC,EAAEojL,GAAGrjL,EAAE,IAAgH,GAAnG,IAAIA,EAAEk6K,KAAK,IAAIh6K,IAAIm+J,IAAG,GAAGr+J,EAAEyhL,UAAUzhL,EAAEyhL,SAAQ,EAAGwR,GAAGjzL,EAAEk8I,gBAAwB,KAARj8I,EAAE4jL,GAAG7jL,MAAWE,EAAE+mM,GAAGjnM,EAAEC,KAAQ,IAAIC,EAAE,MAAMA,EAAE8kM,GAAG8B,GAAG9mM,EAAE,GAAGuiM,GAAGviM,EAAEC,GAAGqmM,GAAGtmM,EAAEm+J,MAAKj+J,EAAuE,OAArEF,EAAEknM,aAAalnM,EAAEoyF,QAAQ8sD,UAAUl/I,EAAEmnM,cAAclnM,EAAEmnM,GAAGpnM,GAAGsmM,GAAGtmM,EAAEm+J,MAAY,KACnR,SAASmpC,GAAGtnM,EAAEC,GAAG,IAAIC,EAAEm+J,GAAEA,IAAG,EAAE,IAAI,OAAOr+J,EAAEC,GAAb,QAA4B,KAAJo+J,GAAEn+J,KAAUklM,KAAK9O,OAAO,SAASiR,GAAGvnM,EAAEC,GAAG,IAAIC,EAAEm+J,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAOr+J,EAAEC,GAAb,QAA4B,KAAJo+J,GAAEn+J,KAAUklM,KAAK9O,OAAO,SAAS+J,GAAGrgM,EAAEC,GAAG89J,GAAEgnC,GAAGD,IAAIA,IAAI7kM,EAAEglM,IAAIhlM,EAAE,SAASwiM,KAAKqC,GAAGC,GAAG3yG,QAAQknE,GAAEyrC,IAC5V,SAAS+B,GAAG9mM,EAAEC,GAAGD,EAAEknM,aAAa,KAAKlnM,EAAEmnM,cAAc,EAAE,IAAIjnM,EAAEF,EAAEqnM,cAAiD,IAAlC,IAAInnM,IAAIF,EAAEqnM,eAAe,EAAErU,GAAG9yL,IAAO,OAAOw+J,GAAE,IAAIx+J,EAAEw+J,GAAE1iB,OAAO,OAAO97I,GAAG,CAAC,IAAIsF,EAAEtF,EAAE,OAAOsF,EAAE00K,KAAK,KAAK,EAA6B,QAA3B10K,EAAEA,EAAE5K,KAAK20J,yBAA4B,IAAS/pJ,GAAG0uL,KAAK,MAAM,KAAK,EAAEgH,KAAK5hC,GAAEpzD,IAAGozD,GAAEF,IAAG8iC,KAAK,MAAM,KAAK,EAAEd,GAAG51L,GAAG,MAAM,KAAK,EAAE01L,KAAK,MAAM,KAAK,GAAc,KAAK,GAAG5hC,GAAE5yD,IAAG,MAAM,KAAK,GAAGqwF,GAAGvxL,GAAG,MAAM,KAAK,GAAG,KAAK,GAAGi9L,KAAKviM,EAAEA,EAAE87I,OAAOyjB,GAAEz/J,EAAE0+J,GAAEw7B,GAAGl6L,EAAEoyF,QAAQ,MAAMyrE,GAAEinC,GAAGG,GAAGhlM,EAAEoiM,GAAE,EAAE2C,GAAG,KAAKE,GAAG5C,GAAG9J,GAAG,EACvc,SAASwO,GAAGhnM,EAAEC,GAAG,OAAE,CAAC,IAAIC,EAAEw+J,GAAE,IAAuB,GAAnBo4B,KAAKsF,GAAGhqG,QAAQ2qG,GAAMR,GAAG,CAAC,IAAI,IAAI/2L,EAAE65J,GAAE0gB,cAAc,OAAOv6K,GAAG,CAAC,IAAI9D,EAAE8D,EAAE02F,MAAM,OAAOx6F,IAAIA,EAAEqwH,QAAQ,MAAMvsH,EAAEA,EAAE4pD,KAAKmtI,IAAG,EAAyC,GAAtCD,GAAG,EAAEr2F,GAAEu5D,GAAEH,GAAE,KAAKm9B,IAAG,EAAGqI,GAAGzyG,QAAQ,KAAQ,OAAOlyF,GAAG,OAAOA,EAAE87I,OAAO,CAACqmD,GAAE,EAAE2C,GAAG/kM,EAAEy+J,GAAE,KAAK,MAAM1+J,EAAE,CAAC,IAAIyF,EAAEzF,EAAE0F,EAAExF,EAAE87I,OAAOr2I,EAAEzF,EAAEgiE,EAAEjiE,EAAoD,GAAlDA,EAAE49J,GAAEl4J,EAAE0rJ,OAAO,KAAK1rJ,EAAEs0L,YAAYt0L,EAAEo0L,WAAW,KAAQ,OAAO73H,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAE30E,KAAK,CAAC,IAAImO,EAAEwmE,EAAE,GAAG,KAAY,EAAPv8D,EAAE01C,MAAQ,CAAC,IAAIn+C,EAAEyI,EAAEu5I,UAAUhiJ,GAAGyI,EAAEgyL,YAAYz6L,EAAEy6L,YAAYhyL,EAAEo6K,cAAc7iL,EAAE6iL,cAAcp6K,EAAE0xL,MAAMn6L,EAAEm6L,QACpf1xL,EAAEgyL,YAAY,KAAKhyL,EAAEo6K,cAAc,MAAM,IAAI3hB,EAAE,KAAe,EAAV13D,GAAEtU,SAAW3hF,EAAE/K,EAAE,EAAE,CAAC,IAAIwtJ,EAAE,GAAGA,EAAE,KAAKziJ,EAAEypK,IAAI,CAAC,IAAI78K,EAAEoT,EAAEsvK,cAAc,GAAG,OAAO1iL,EAAE61J,EAAE,OAAO71J,EAAE2iL,eAAqB,CAAC,IAAI1+K,EAAEmP,EAAE2iI,cAAc8f,OAAE,IAAS5xJ,EAAEo2I,YAAY,IAAKp2I,EAAE6/L,6BAA8B/iC,IAAS,GAAGlL,EAAE,CAAC,IAAI9mJ,EAAEqE,EAAEknL,YAAY,GAAG,OAAOvrL,EAAE,CAAC,IAAI4J,EAAE,IAAIgxF,IAAIhxF,EAAEe,IAAIrb,GAAG+U,EAAEknL,YAAY3hL,OAAO5J,EAAE2K,IAAIrb,GAAG,GAAG,KAAY,EAAP+U,EAAE4qC,MAAQ,CAA2C,GAA1C5qC,EAAE4gJ,OAAO,GAAG1rJ,EAAE0rJ,OAAO,MAAM1rJ,EAAE0rJ,QAAQ,KAAQ,IAAI1rJ,EAAEu0K,IAAI,GAAG,OAAOv0K,EAAEu5I,UAAUv5I,EAAEu0K,IAAI,OAAO,CAAC,IAAI38K,EAAE06L,IAAI,EAAE,GAAG16L,EAAE28K,IAAI,EAAEme,GAAG1yL,EAAEpI,GAAGoI,EAAE0xL,OAAO,EAAE,MAAMr3L,EAAEkiE,OAC5f,EAAOv8D,EAAE1F,EAAE,IAAIF,EAAE0F,EAAE+hM,UAA+G,GAArG,OAAOznM,GAAGA,EAAE0F,EAAE+hM,UAAU,IAAI3E,GAAG3gI,EAAE,IAAI8kC,IAAIjnG,EAAEe,IAAIpF,EAAEwmE,SAAgB,KAAXA,EAAEniE,EAAE0nC,IAAI/rC,MAAgBwmE,EAAE,IAAI8kC,IAAIjnG,EAAEe,IAAIpF,EAAEwmE,KAASA,EAAEhmB,IAAIv2C,GAAG,CAACu8D,EAAEnrD,IAAIpR,GAAG,IAAItE,EAAEomM,GAAGnqF,KAAK,KAAK73G,EAAE/J,EAAEiK,GAAGjK,EAAEnO,KAAK8T,EAAEA,GAAGoP,EAAE4gJ,OAAO,KAAK5gJ,EAAE4mL,MAAMp3L,EAAE,MAAMD,EAAEyQ,EAAEA,EAAEurI,aAAa,OAAOvrI,GAAGyxD,EAAE/gE,OAAOi5K,EAAGz0K,EAAE/K,OAAO,qBAAqB,yLAAyL,IAAIynM,KAAIA,GAAE,GAAGngI,EAAEygI,GAAGzgI,EAAEv8D,GAAG8K,EACpf/K,EAAE,EAAE,CAAC,OAAO+K,EAAEypK,KAAK,KAAK,EAAEz0K,EAAEy8D,EAAEzxD,EAAE4gJ,OAAO,KAAKpxJ,IAAIA,EAAEwQ,EAAE4mL,OAAOp3L,EAAkBq4L,GAAG7nL,EAAbqyL,GAAGryL,EAAEhL,EAAExF,IAAW,MAAMD,EAAE,KAAK,EAAEyF,EAAEy8D,EAAE,IAAI47F,EAAErtJ,EAAE7V,KAAKy+J,EAAE5oJ,EAAEwrI,UAAU,GAAG,KAAa,GAARxrI,EAAE4gJ,SAAY,oBAAoByM,EAAEvmB,0BAA0B,OAAO8hB,GAAG,oBAAoBA,EAAE6pC,oBAAoB,OAAOC,KAAKA,GAAGjnJ,IAAIm9G,KAAK,CAAC5oJ,EAAE4gJ,OAAO,KAAKpxJ,IAAIA,EAAEwQ,EAAE4mL,OAAOp3L,EAAkBq4L,GAAG7nL,EAAbwyL,GAAGxyL,EAAEhL,EAAExF,IAAW,MAAMD,GAAGyQ,EAAEA,EAAEurI,aAAa,OAAOvrI,GAAGi3L,GAAGxnM,GAAG,MAAMoqB,GAAIrqB,EAAEqqB,EAAGo0I,KAAIx+J,GAAG,OAAOA,IAAIw+J,GAAEx+J,EAAEA,EAAE87I,QAAQ,SAAS,OAC/a,SAAS6qD,KAAK,IAAI7mM,EAAE4kM,GAAGxyG,QAAsB,OAAdwyG,GAAGxyG,QAAQ2qG,GAAU,OAAO/8L,EAAE+8L,GAAG/8L,EAAE,SAASinM,GAAGjnM,EAAEC,GAAG,IAAIC,EAAEm+J,GAAEA,IAAG,GAAG,IAAI74J,EAAEqhM,KAA2B,IAAtBpnC,KAAIz/J,GAAG69J,KAAI59J,GAAG6mM,GAAG9mM,EAAEC,KAAM,IAAI0nM,KAAK,MAAM,MAAMjmM,GAAGslM,GAAGhnM,EAAE0B,GAAkC,GAAtBo1L,KAAKz4B,GAAEn+J,EAAE0kM,GAAGxyG,QAAQ5sF,EAAK,OAAOk5J,GAAE,MAAMv9J,MAAM7D,EAAE,MAAiB,OAAXmiK,GAAE,KAAK5B,GAAE,EAASwkC,GAAE,SAASsF,KAAK,KAAK,OAAOjpC,IAAGkpC,GAAGlpC,IAAG,SAASqoC,KAAK,KAAK,OAAOroC,KAAIo2B,MAAM8S,GAAGlpC,IAAG,SAASkpC,GAAG5nM,GAAG,IAAIC,EAAEolM,GAAGrlM,EAAEk/I,UAAUl/I,EAAE8kM,IAAI9kM,EAAEozI,cAAcpzI,EAAE67L,aAAa,OAAO57L,EAAEynM,GAAG1nM,GAAG0+J,GAAEz+J,EAAE4kM,GAAGzyG,QAAQ,KAC5a,SAASs1G,GAAG1nM,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIE,EAAED,EAAEi/I,UAAqB,GAAXl/I,EAAEC,EAAE+7I,OAAU,KAAa,KAAR/7I,EAAEoxJ,OAAY,CAAc,GAAG,QAAhBnxJ,EAAE+hM,GAAG/hM,EAAED,EAAE6kM,KAAqB,YAAJpmC,GAAEx+J,GAAa,GAAG,MAAPA,EAAED,GAAYi6K,KAAK,KAAKh6K,EAAEg6K,KAAK,OAAOh6K,EAAE6/K,eAAe,KAAQ,WAAH+kB,KAAgB,KAAY,EAAP5kM,EAAEm7C,MAAQ,CAAC,IAAI,IAAI71C,EAAE,EAAE9D,EAAExB,EAAEooB,MAAM,OAAO5mB,GAAG8D,GAAG9D,EAAE21L,MAAM31L,EAAEu1L,WAAWv1L,EAAEA,EAAEo7I,QAAQ58I,EAAE+2L,WAAWzxL,EAAE,OAAOxF,GAAG,KAAa,KAARA,EAAEqxJ,SAAc,OAAOrxJ,EAAEi6L,cAAcj6L,EAAEi6L,YAAYh6L,EAAEg6L,aAAa,OAAOh6L,EAAE85L,aAAa,OAAO/5L,EAAE+5L,aAAa/5L,EAAE+5L,WAAWC,WAAW/5L,EAAEg6L,aAAaj6L,EAAE+5L,WAAW95L,EAAE85L,YAAY,EAAE95L,EAAEoxJ,QAAQ,OAC/erxJ,EAAE+5L,WAAW/5L,EAAE+5L,WAAWC,WAAW/5L,EAAED,EAAEi6L,YAAYh6L,EAAED,EAAE+5L,WAAW95L,QAAQ,CAAS,GAAG,QAAXC,EAAEwiM,GAAGziM,IAAkC,OAAlBC,EAAEmxJ,OAAO,UAAKqN,GAAEx+J,GAAS,OAAOF,IAAIA,EAAEi6L,YAAYj6L,EAAE+5L,WAAW,KAAK/5L,EAAEqxJ,OAAO,MAAkB,GAAG,QAAfpxJ,EAAEA,EAAE68I,SAAyB,YAAJ4hB,GAAEz+J,GAASy+J,GAAEz+J,EAAED,QAAQ,OAAOC,GAAG,IAAIoiM,KAAIA,GAAE,GAAG,SAAS+E,GAAGpnM,GAAG,IAAIC,EAAEi2L,KAA8B,OAAzBE,GAAG,GAAGyR,GAAGvqF,KAAK,KAAKt9G,EAAEC,IAAW,KACtT,SAAS4nM,GAAG7nM,EAAEC,GAAG,GAAG2mM,WAAW,OAAOrB,IAAI,GAAG,KAAO,GAAFlnC,IAAM,MAAMl9J,MAAM7D,EAAE,MAAM,IAAI4C,EAAEF,EAAEknM,aAAa,GAAG,OAAOhnM,EAAE,OAAO,KAA2C,GAAtCF,EAAEknM,aAAa,KAAKlnM,EAAEmnM,cAAc,EAAKjnM,IAAIF,EAAEoyF,QAAQ,MAAMjxF,MAAM7D,EAAE,MAAM0C,EAAEumM,aAAa,KAAK,IAAI/gM,EAAEtF,EAAEm3L,MAAMn3L,EAAE+2L,WAAWv1L,EAAE8D,EAAEC,EAAEzF,EAAEsjL,cAAc5hL,EAAE1B,EAAEsjL,aAAa5hL,EAAE1B,EAAEwjL,eAAe,EAAExjL,EAAEyjL,YAAY,EAAEzjL,EAAEujL,cAAc7hL,EAAE1B,EAAE89L,kBAAkBp8L,EAAE1B,EAAE2jL,gBAAgBjiL,EAAEA,EAAE1B,EAAE4jL,cAAc,IAAI,IAAIl+K,EAAE1F,EAAEkkL,WAAWv+K,EAAE3F,EAAEwmM,gBAAgB,EAAE/gM,GAAG,CAAC,IAAIy8D,EAAE,GAAGwhH,GAAGj+K,GAAG/J,EAAE,GAAGwmE,EAAExgE,EAAEwgE,GAAG,EAAEx8D,EAAEw8D,IAAI,EAAEv8D,EAAEu8D,IAAI,EAAEz8D,IAAI/J,EACnV,GADqV,OACjfiqM,IAAI,KAAO,GAAFngM,IAAOmgM,GAAGzpJ,IAAIl8C,IAAI2lM,GAAGh+J,OAAO3nC,GAAGA,IAAIy/J,KAAIf,GAAEe,GAAE,KAAK5B,GAAE,GAAG,EAAE39J,EAAEmxJ,MAAM,OAAOnxJ,EAAE65L,YAAY75L,EAAE65L,WAAWC,WAAW95L,EAAEsF,EAAEtF,EAAE+5L,aAAaz0L,EAAEtF,EAAEsF,EAAEtF,EAAE+5L,YAAe,OAAOz0L,EAAE,CAAwC,GAAvC9D,EAAE28J,GAAEA,IAAG,GAAGwmC,GAAGzyG,QAAQ,KAAKqgG,GAAGjO,GAAaiM,GAAV/qL,EAAE4qL,MAAc,CAAC,GAAG,mBAAmB5qL,EAAEC,EAAE,CAACkxB,MAAMnxB,EAAEurL,eAAe1sJ,IAAI7+B,EAAEwrL,mBAAmBlxL,EAAE,GAAG2F,GAAGA,EAAED,EAAEwgK,gBAAgBvgK,EAAEwgK,aAAapiF,QAAQroF,EAAEiK,EAAEyrL,cAAczrL,EAAEyrL,iBAAiB,IAAI11L,EAAE4lF,WAAW,CAAC37E,EAAEjK,EAAEy1L,WAAW1rL,EAAE/J,EAAE21L,aAAanvH,EAAExmE,EAAE41L,UAAU51L,EAAEA,EAAE61L,YAAY,IAAI5rL,EAAEm3K,SAAS56G,EAAE46G,SAAS,MAAMxyJ,GAAI3kB,EAAE,KACnf,MAAM3F,EAAE,IAAI9C,EAAE,EAAEkhK,GAAG,EAAE3tJ,GAAG,EAAEyiJ,EAAE,EAAE71J,EAAE,EAAEiE,EAAEoE,EAAE0G,EAAE,KAAKnM,EAAE,OAAO,CAAC,IAAI,IAAI+V,EAAK1U,IAAIqE,GAAG,IAAIF,GAAG,IAAInE,EAAEw7K,WAAW1e,EAAElhK,EAAEuI,GAAGnE,IAAI4gE,GAAG,IAAIxmE,GAAG,IAAI4F,EAAEw7K,WAAWrsK,EAAEvT,EAAExB,GAAG,IAAI4F,EAAEw7K,WAAW5/K,GAAGoE,EAAEy7K,UAAUphL,QAAW,QAAQqa,EAAE1U,EAAEm7K,aAAkBrwK,EAAE9K,EAAEA,EAAE0U,EAAE,OAAO,CAAC,GAAG1U,IAAIoE,EAAE,MAAMzF,EAA8C,GAA5CmM,IAAIzG,KAAKutJ,IAAIztJ,IAAI24J,EAAElhK,GAAGkP,IAAI81D,KAAK7kE,IAAI3B,IAAI+U,EAAEvT,GAAM,QAAQ8Y,EAAE1U,EAAE4uL,aAAa,MAAU9jL,GAAJ9K,EAAE8K,GAAMk9J,WAAWhoK,EAAE0U,EAAErQ,GAAG,IAAIy4J,IAAI,IAAI3tJ,EAAE,KAAK,CAAComB,MAAMunI,EAAE75H,IAAI9zB,QAAQ9K,EAAE,KAAKA,EAAEA,GAAG,CAACkxB,MAAM,EAAE0N,IAAI,QAAQ5+B,EAAE,KAAK+sL,GAAG,CAACoV,YAAYpiM,EAAEqiM,eAAepiM,GAAG6+K,IAAG,EAAGyhB,GAAG,KAAKC,IAAG,EAAGpnC,GAAEt5J,EAAE,GAAG,IAAIwiM,KAAK,MAAM19K,GAAI,GAAG,OACvgBw0I,GAAE,MAAM39J,MAAM7D,EAAE,MAAMkmM,GAAG1kC,GAAEx0I,GAAIw0I,GAAEA,GAAEk7B,kBAAiB,OAAOl7B,IAAGmnC,GAAG,KAAKnnC,GAAEt5J,EAAE,GAAG,IAAI,IAAIE,EAAE1F,EAAE,OAAO8+J,IAAG,CAAC,IAAIvhK,EAAEuhK,GAAEzN,MAA+B,GAAvB,GAAF9zJ,GAAMq/K,GAAG9d,GAAE7iB,UAAU,IAAS,IAAF1+I,EAAM,CAAC,IAAIwC,EAAE++J,GAAE5f,UAAU,GAAG,OAAOn/I,EAAE,CAAC,IAAIsB,EAAEtB,EAAE+tI,IAAI,OAAOzsI,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAE+wF,QAAQ,OAAO,OAAS,KAAF70F,GAAQ,KAAK,EAAE2mM,GAAGplC,IAAGA,GAAEzN,QAAQ,EAAE,MAAM,KAAK,EAAE6yC,GAAGplC,IAAGA,GAAEzN,QAAQ,EAAEizC,GAAGxlC,GAAE5f,UAAU4f,IAAG,MAAM,KAAK,KAAKA,GAAEzN,QAAQ,KAAK,MAAM,KAAK,KAAKyN,GAAEzN,QAAQ,KAAKizC,GAAGxlC,GAAE5f,UAAU4f,IAAG,MAAM,KAAK,EAAEwlC,GAAGxlC,GAAE5f,UAAU4f,IAAG,MAAM,KAAK,EAAMilC,GAAGr+L,EAAPC,EAAEm5J,IAAU,IAAId,EAAEr4J,EAAEu5I,UAAU8kD,GAAGr+L,GAAG,OACnfq4J,GAAGgmC,GAAGhmC,GAAGc,GAAEA,GAAEk7B,YAAY,MAAM1vK,GAAI,GAAG,OAAOw0I,GAAE,MAAM39J,MAAM7D,EAAE,MAAMkmM,GAAG1kC,GAAEx0I,GAAIw0I,GAAEA,GAAEk7B,kBAAiB,OAAOl7B,IAAkD,GAA/Cz9J,EAAEqxL,GAAG3yL,EAAEuwL,KAAK/yL,EAAE8D,EAAEymM,YAAYpiM,EAAErE,EAAE0mM,eAAkBhoM,IAAIxC,GAAGA,GAAGA,EAAE2oK,eAAeiqB,GAAG5yL,EAAE2oK,cAAc+0B,gBAAgB19L,GAAG,CAAC,OAAOmI,GAAG+qL,GAAGlzL,KAAKwC,EAAE2F,EAAEmxB,WAAc,KAARx1B,EAAEqE,EAAE6+B,OAAiBljC,EAAEtB,GAAG,mBAAmBxC,GAAGA,EAAE0zL,eAAelxL,EAAExC,EAAE2zL,aAAan1L,KAAKgB,IAAIsE,EAAE9D,EAAEpQ,MAAMwO,UAAU0F,GAAGtB,EAAExC,EAAE2oK,eAAe/9J,WAAWpI,EAAEomK,aAAapiF,QAASqtG,eAAe/vL,EAAEA,EAAE+vL,eAAezrL,EAAEpI,EAAEutK,YAAYnvK,OAAOqiK,EAAEjiK,KAAKgB,IAAI2I,EAAEmxB,MAAMlxB,GAAGD,OAAE,IACpfA,EAAE6+B,IAAIy5H,EAAEjiK,KAAKgB,IAAI2I,EAAE6+B,IAAI5+B,IAAItE,EAAE4mM,QAAQjqC,EAAEt4J,IAAIC,EAAED,EAAEA,EAAEs4J,EAAEA,EAAEr4J,GAAGA,EAAEsqL,GAAG1yL,EAAEygK,GAAGv4J,EAAEwqL,GAAG1yL,EAAEmI,GAAGC,GAAGF,IAAI,IAAIpE,EAAEigF,YAAYjgF,EAAE8vL,aAAaxrL,EAAEmjH,MAAMznH,EAAEgwL,eAAe1rL,EAAEjD,QAAQrB,EAAEiwL,YAAY7rL,EAAEqjH,MAAMznH,EAAEkwL,cAAc9rL,EAAE/C,WAAU3C,EAAEA,EAAEmoM,eAAgBC,SAASxiM,EAAEmjH,KAAKnjH,EAAEjD,QAAQrB,EAAE+mM,kBAAkBpqC,EAAEt4J,GAAGrE,EAAEgnM,SAAStoM,GAAGsB,EAAE4mM,OAAOxiM,EAAEqjH,KAAKrjH,EAAE/C,UAAU3C,EAAEuoM,OAAO7iM,EAAEqjH,KAAKrjH,EAAE/C,QAAQrB,EAAEgnM,SAAStoM,OAAQA,EAAE,GAAG,IAAIsB,EAAE9D,EAAE8D,EAAEA,EAAEioK,YAAY,IAAIjoK,EAAEy7K,UAAU/8K,EAAE9E,KAAK,CAACwrB,QAAQplB,EAAEmgB,KAAKngB,EAAEknM,WAAW7mL,IAAIrgB,EAAEmnM,YAAmD,IAAvC,oBAAoBjrM,EAAEujC,OAAOvjC,EAAEujC,QAAYvjC,EACrf,EAAEA,EAAEwC,EAAEpE,OAAO4B,KAAI8D,EAAEtB,EAAExC,IAAKkpB,QAAQ8hL,WAAWlnM,EAAEmgB,KAAKngB,EAAEolB,QAAQ+hL,UAAUnnM,EAAEqgB,IAAI8iK,KAAKiO,GAAGC,GAAGD,GAAG,KAAKzyL,EAAEoyF,QAAQlyF,EAAE4+J,GAAEt5J,EAAE,GAAG,IAAI,IAAIjI,EAAEyC,EAAE,OAAO8+J,IAAG,CAAC,IAAIhB,EAAEgB,GAAEzN,MAAgC,GAAxB,GAAFyM,GAAM6lC,GAAGpmM,EAAEuhK,GAAE5f,UAAU4f,IAAQ,IAAFhB,EAAM,CAAC/9J,OAAE,EAAO,IAAIs5J,EAAEyF,GAAEhxB,IAAI,GAAG,OAAOurB,EAAE,CAAC,IAAIF,EAAE2F,GAAE7iB,UAAU,OAAO6iB,GAAEob,KAAK,KAAK,EAAEn6K,EAAEo5J,EAAE,MAAM,QAAQp5J,EAAEo5J,EAAE,oBAAoBE,EAAEA,EAAEt5J,GAAGs5J,EAAEjnE,QAAQryF,GAAG++J,GAAEA,GAAEk7B,YAAY,MAAM1vK,GAAI,GAAG,OAAOw0I,GAAE,MAAM39J,MAAM7D,EAAE,MAAMkmM,GAAG1kC,GAAEx0I,GAAIw0I,GAAEA,GAAEk7B,kBAAiB,OAAOl7B,IAAGA,GAAE,KAAK+2B,KAAKx3B,GAAE38J,OAAO1B,EAAEoyF,QAAQlyF,EAAE,GAAGolM,GAAGA,IAAG,EAAGC,GAAGvlM,EAAEwlM,GAAGvlM,OAAO,IAAI6+J,GAAEt5J,EAAE,OAAOs5J,IAAG7+J,EACpf6+J,GAAEk7B,WAAWl7B,GAAEk7B,WAAW,KAAa,EAARl7B,GAAEzN,SAAUyM,EAAEgB,IAAIhiB,QAAQ,KAAKghB,EAAE7hB,UAAU,MAAM6iB,GAAE7+J,EAAqF,GAAlE,KAAjBuF,EAAExF,EAAEsjL,gBAAqB6f,GAAG,MAAM,IAAI39L,EAAExF,IAAI6lM,GAAGD,MAAMA,GAAG,EAAEC,GAAG7lM,GAAG4lM,GAAG,EAAE1lM,EAAEA,EAAE+7I,UAAaw4C,IAAI,oBAAoBA,GAAGgU,kBAAkB,IAAIhU,GAAGgU,kBAAkBjU,GAAGt0L,OAAE,EAAO,MAAsB,GAAhBA,EAAEkyF,QAAQi/D,QAAW,MAAM/mI,IAAe,GAAVg8K,GAAGtmM,EAAEm+J,MAAQ4kC,GAAG,MAAMA,IAAG,EAAG/iM,EAAEgjM,GAAGA,GAAG,KAAKhjM,EAAE,OAAG,KAAO,EAAFq+J,KAAiBi4B,KAAL,KACjW,SAAS0R,KAAK,KAAK,OAAOlpC,IAAG,CAAC,IAAI9+J,EAAE8+J,GAAE5f,UAAUgnD,IAAI,OAAOD,KAAK,KAAa,EAARnnC,GAAEzN,OAAS6uB,GAAGphB,GAAEmnC,MAAMC,IAAG,GAAI,KAAKpnC,GAAEob,KAAKwqB,GAAG1kM,EAAE8+J,KAAIohB,GAAGphB,GAAEmnC,MAAMC,IAAG,IAAK,IAAIjmM,EAAE6+J,GAAEzN,MAAM,KAAO,IAAFpxJ,IAAQwjM,GAAGzjM,EAAE8+J,IAAG,KAAO,IAAF7+J,IAAQqlM,KAAKA,IAAG,EAAGjP,GAAG,IAAG,WAAgB,OAALuQ,KAAY,SAAQ9nC,GAAEA,GAAEk7B,YAAY,SAAS4M,KAAK,GAAG,KAAKpB,GAAG,CAAC,IAAIxlM,EAAE,GAAGwlM,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUpP,GAAGp2L,EAAE0oM,IAAI,OAAM,EAAG,SAAS7E,GAAG7jM,EAAEC,GAAGwlM,GAAGxqM,KAAKgF,EAAED,GAAGslM,KAAKA,IAAG,EAAGjP,GAAG,IAAG,WAAgB,OAALuQ,KAAY,SAAQ,SAAShD,GAAG5jM,EAAEC,GAAGylM,GAAGzqM,KAAKgF,EAAED,GAAGslM,KAAKA,IAAG,EAAGjP,GAAG,IAAG,WAAgB,OAALuQ,KAAY,SACzd,SAAS8B,KAAK,GAAG,OAAOnD,GAAG,OAAM,EAAG,IAAIvlM,EAAEulM,GAAW,GAARA,GAAG,KAAQ,KAAO,GAAFlnC,IAAM,MAAMl9J,MAAM7D,EAAE,MAAM,IAAI2C,EAAEo+J,GAAEA,IAAG,GAAG,IAAIn+J,EAAEwlM,GAAGA,GAAG,GAAG,IAAI,IAAIlgM,EAAE,EAAEA,EAAEtF,EAAEvE,OAAO6J,GAAG,EAAE,CAAC,IAAI9D,EAAExB,EAAEsF,GAAGC,EAAEvF,EAAEsF,EAAE,GAAGE,EAAEhE,EAAEo2D,QAAyB,GAAjBp2D,EAAEo2D,aAAQ,EAAU,oBAAoBpyD,EAAE,IAAIA,IAAI,MAAMw8D,GAAG,GAAG,OAAOz8D,EAAE,MAAMtE,MAAM7D,EAAE,MAAMkmM,GAAG/9L,EAAEy8D,IAAe,IAAXhiE,EAAEulM,GAAGA,GAAG,GAAOjgM,EAAE,EAAEA,EAAEtF,EAAEvE,OAAO6J,GAAG,EAAE,CAAC9D,EAAExB,EAAEsF,GAAGC,EAAEvF,EAAEsF,EAAE,GAAG,IAAI,IAAIG,EAAEjE,EAAEmxH,OAAOnxH,EAAEo2D,QAAQnyD,IAAI,MAAMu8D,GAAG,GAAG,OAAOz8D,EAAE,MAAMtE,MAAM7D,EAAE,MAAMkmM,GAAG/9L,EAAEy8D,IAAI,IAAIv8D,EAAE3F,EAAEoyF,QAAQ6nG,YAAY,OAAOt0L,GAAG3F,EAAE2F,EAAEq0L,WAAWr0L,EAAEq0L,WAAW,KAAa,EAARr0L,EAAE0rJ,QAAU1rJ,EAAEm3I,QACjf,KAAKn3I,EAAEs2I,UAAU,MAAMt2I,EAAE3F,EAAW,OAATq+J,GAAEp+J,EAAEq2L,MAAW,EAAG,SAASqS,GAAG3oM,EAAEC,EAAEC,GAAyBm4L,GAAGr4L,EAAfC,EAAE6iM,GAAG9iM,EAAfC,EAAE0iM,GAAGziM,EAAED,GAAY,IAAWA,EAAE64L,KAAe,QAAV94L,EAAEomM,GAAGpmM,EAAE,MAAcikL,GAAGjkL,EAAE,EAAEC,GAAGqmM,GAAGtmM,EAAEC,IACzI,SAASujM,GAAGxjM,EAAEC,GAAG,GAAG,IAAID,EAAEk6K,IAAIyuB,GAAG3oM,EAAEA,EAAEC,QAAQ,IAAI,IAAIC,EAAEF,EAAEg8I,OAAO,OAAO97I,GAAG,CAAC,GAAG,IAAIA,EAAEg6K,IAAI,CAACyuB,GAAGzoM,EAAEF,EAAEC,GAAG,MAAW,GAAG,IAAIC,EAAEg6K,IAAI,CAAC,IAAI10K,EAAEtF,EAAE+7I,UAAU,GAAG,oBAAoB/7I,EAAEtF,KAAK28I,0BAA0B,oBAAoB/xI,EAAE09L,oBAAoB,OAAOC,KAAKA,GAAGjnJ,IAAI12C,IAAI,CAAW,IAAI9D,EAAEuhM,GAAG/iM,EAAnBF,EAAE2iM,GAAG1iM,EAAED,GAAgB,GAA4B,GAAzBq4L,GAAGn4L,EAAEwB,GAAGA,EAAEo3L,KAAkB,QAAb54L,EAAEkmM,GAAGlmM,EAAE,IAAe+jL,GAAG/jL,EAAE,EAAEwB,GAAG4kM,GAAGpmM,EAAEwB,QAAQ,GAAG,oBAAoB8D,EAAE09L,oBAAoB,OAAOC,KAAKA,GAAGjnJ,IAAI12C,IAAI,IAAIA,EAAE09L,kBAAkBjjM,EAAED,GAAG,MAAMyF,IAAI,OAAOvF,EAAEA,EAAE87I,QACpd,SAASyrD,GAAGznM,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEwnM,UAAU,OAAOhiM,GAAGA,EAAEmiC,OAAO1nC,GAAGA,EAAE64L,KAAK94L,EAAEyjL,aAAazjL,EAAEwjL,eAAetjL,EAAEu/J,KAAIz/J,IAAI69J,GAAE39J,KAAKA,IAAI,IAAImiM,IAAG,IAAIA,KAAM,SAAFxkC,MAAcA,IAAG,IAAIM,KAAIomC,GAAGuC,GAAG9mM,EAAE,GAAGklM,IAAIhlM,GAAGomM,GAAGtmM,EAAEC,GAAG,SAASwkM,GAAGzkM,EAAEC,GAAG,IAAIC,EAAEF,EAAEi8I,UAAU,OAAO/7I,GAAGA,EAAEynC,OAAO1nC,GAAO,KAAJA,EAAE,KAAmB,KAAO,GAAhBA,EAAED,EAAEq7C,OAAep7C,EAAE,EAAE,KAAO,EAAFA,GAAKA,EAAE,KAAKi2L,KAAK,EAAE,GAAG,IAAI6P,KAAKA,GAAGd,IAAuB,KAAnBhlM,EAAE8jL,GAAG,UAAUgiB,OAAY9lM,EAAE,WAAWC,EAAE44L,KAAe,QAAV94L,EAAEomM,GAAGpmM,EAAEC,MAAcgkL,GAAGjkL,EAAEC,EAAEC,GAAGomM,GAAGtmM,EAAEE,IAUjZ,SAAS0oM,GAAG5oM,EAAEC,EAAEC,EAAEsF,GAAG7X,KAAKusL,IAAIl6K,EAAErS,KAAKX,IAAIkT,EAAEvS,KAAKmvJ,QAAQnvJ,KAAK26B,MAAM36B,KAAKquJ,OAAOruJ,KAAKsuJ,UAAUtuJ,KAAKiN,KAAKjN,KAAKysM,YAAY,KAAKzsM,KAAKwN,MAAM,EAAExN,KAAKmgJ,IAAI,KAAKngJ,KAAKkuM,aAAa57L,EAAEtS,KAAKwpM,aAAaxpM,KAAKoyL,cAAcpyL,KAAKgqM,YAAYhqM,KAAKylJ,cAAc,KAAKzlJ,KAAK0tD,KAAK71C,EAAE7X,KAAK0jK,MAAM,EAAE1jK,KAAKosM,WAAWpsM,KAAKssM,YAAYtsM,KAAKqsM,WAAW,KAAKrsM,KAAKspM,WAAWtpM,KAAK0pM,MAAM,EAAE1pM,KAAKuxJ,UAAU,KAAK,SAASy8C,GAAG37L,EAAEC,EAAEC,EAAEsF,GAAG,OAAO,IAAIojM,GAAG5oM,EAAEC,EAAEC,EAAEsF,GAAG,SAASw6L,GAAGhgM,GAAiB,UAAdA,EAAEA,EAAEiD,aAAuBjD,EAAEi2K,kBAErd,SAASikB,GAAGl6L,EAAEC,GAAG,IAAIC,EAAEF,EAAEk/I,UACuB,OADb,OAAOh/I,IAAGA,EAAEy7L,GAAG37L,EAAEk6K,IAAIj6K,EAAED,EAAEhT,IAAIgT,EAAEq7C,OAAQ++I,YAAYp6L,EAAEo6L,YAAYl6L,EAAEtF,KAAKoF,EAAEpF,KAAKsF,EAAE+7I,UAAUj8I,EAAEi8I,UAAU/7I,EAAEg/I,UAAUl/I,EAAEA,EAAEk/I,UAAUh/I,IAAIA,EAAE27L,aAAa57L,EAAEC,EAAEtF,KAAKoF,EAAEpF,KAAKsF,EAAEmxJ,MAAM,EAAEnxJ,EAAE85L,WAAW,KAAK95L,EAAE+5L,YAAY,KAAK/5L,EAAE65L,WAAW,MAAM75L,EAAE+2L,WAAWj3L,EAAEi3L,WAAW/2L,EAAEm3L,MAAMr3L,EAAEq3L,MAAMn3L,EAAEooB,MAAMtoB,EAAEsoB,MAAMpoB,EAAEkzI,cAAcpzI,EAAEozI,cAAclzI,EAAE6/K,cAAc//K,EAAE+/K,cAAc7/K,EAAEy3L,YAAY33L,EAAE23L,YAAY13L,EAAED,EAAEm3L,aAAaj3L,EAAEi3L,aAAa,OAAOl3L,EAAE,KAAK,CAACo3L,MAAMp3L,EAAEo3L,MAAMD,aAAan3L,EAAEm3L,cAC3el3L,EAAE48I,QAAQ98I,EAAE88I,QAAQ58I,EAAE/E,MAAM6E,EAAE7E,MAAM+E,EAAE4tI,IAAI9tI,EAAE8tI,IAAW5tI,EACvD,SAASm6L,GAAGr6L,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,IAAIC,EAAE,EAAM,GAAJF,EAAExF,EAAK,oBAAoBA,EAAEggM,GAAGhgM,KAAK0F,EAAE,QAAQ,GAAG,kBAAkB1F,EAAE0F,EAAE,OAAO1F,EAAE,OAAOA,GAAG,KAAKkqJ,EAAG,OAAOswC,GAAGt6L,EAAE2X,SAASnW,EAAE+D,EAAExF,GAAG,KAAKq5K,EAAG5zK,EAAE,EAAEhE,GAAG,GAAG,MAAM,KAAKi3K,EAAGjzK,EAAE,EAAEhE,GAAG,EAAE,MAAM,KAAKk3K,EAAG,OAAO54K,EAAE27L,GAAG,GAAGz7L,EAAED,EAAI,EAAFyB,IAAO04L,YAAYxhB,EAAG54K,EAAEpF,KAAKg+K,EAAG54K,EAAEq3L,MAAM5xL,EAAEzF,EAAE,KAAKg5K,EAAG,OAAOh5K,EAAE27L,GAAG,GAAGz7L,EAAED,EAAEyB,IAAK9G,KAAKo+K,EAAGh5K,EAAEo6L,YAAYphB,EAAGh5K,EAAEq3L,MAAM5xL,EAAEzF,EAAE,KAAKi5K,EAAG,OAAOj5K,EAAE27L,GAAG,GAAGz7L,EAAED,EAAEyB,IAAK04L,YAAYnhB,EAAGj5K,EAAEq3L,MAAM5xL,EAAEzF,EAAE,KAAKu5K,EAAG,OAAO+nB,GAAGphM,EAAEwB,EAAE+D,EAAExF,GAAG,KAAKu5K,EAAG,OAAOx5K,EAAE27L,GAAG,GAAGz7L,EAAED,EAAEyB,IAAK04L,YAAY5gB,EAAGx5K,EAAEq3L,MAAM5xL,EAAEzF,EAAE,QAAQ,GAAG,kBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAEq2K,UAAU,KAAKwC,EAAGnzK,EAAE,GAAG,MAAM1F,EAAE,KAAK84K,EAAGpzK,EAAE,EAAE,MAAM1F,EAAE,KAAK+4K,EAAGrzK,EAAE,GAAG,MAAM1F,EAAE,KAAKk5K,EAAGxzK,EAAE,GAAG,MAAM1F,EAAE,KAAKm5K,EAAGzzK,EAAE,GAAGF,EAAE,KAAK,MAAMxF,EAAE,KAAKo5K,EAAG1zK,EAAE,GAAG,MAAM1F,EAAE,MAAMmB,MAAM7D,EAAE,IAAI,MAAM0C,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAE07L,GAAGj2L,EAAExF,EAAED,EAAEyB,IAAK04L,YAAYp6L,EAAEC,EAAErF,KAAK4K,EAAEvF,EAAEo3L,MAAM5xL,EAASxF,EAAE,SAASu6L,GAAGx6L,EAAEC,EAAEC,EAAEsF,GAA2B,OAAxBxF,EAAE27L,GAAG,EAAE37L,EAAEwF,EAAEvF,IAAKo3L,MAAMn3L,EAASF,EAAE,SAASshM,GAAGthM,EAAEC,EAAEC,EAAEsF,GAA6C,OAA1CxF,EAAE27L,GAAG,GAAG37L,EAAEwF,EAAEvF,IAAKm6L,YAAY7gB,EAAGv5K,EAAEq3L,MAAMn3L,EAASF,EAAE,SAASm6L,GAAGn6L,EAAEC,EAAEC,GAA8B,OAA3BF,EAAE27L,GAAG,EAAE37L,EAAE,KAAKC,IAAKo3L,MAAMn3L,EAASF,EAClc,SAASu6L,GAAGv6L,EAAEC,EAAEC,GAA8J,OAA3JD,EAAE07L,GAAG,EAAE,OAAO37L,EAAE6X,SAAS7X,EAAE6X,SAAS,GAAG7X,EAAEhT,IAAIiT,IAAKo3L,MAAMn3L,EAAED,EAAEg8I,UAAU,CAACC,cAAcl8I,EAAEk8I,cAAc2sD,gBAAgB,KAAKvO,eAAet6L,EAAEs6L,gBAAuBr6L,EACrL,SAAS6oM,GAAG9oM,EAAEC,EAAEC,GAAGvS,KAAKusL,IAAIj6K,EAAEtS,KAAKuuJ,cAAcl8I,EAAErS,KAAKu5M,aAAav5M,KAAK65M,UAAU75M,KAAKykG,QAAQzkG,KAAKk7M,gBAAgB,KAAKl7M,KAAK05M,eAAe,EAAE15M,KAAKizM,eAAejzM,KAAKib,QAAQ,KAAKjb,KAAK8zL,QAAQvhL,EAAEvS,KAAK44M,aAAa,KAAK54M,KAAK84M,iBAAiB,EAAE94M,KAAKu2L,WAAWF,GAAG,GAAGr2L,KAAK64M,gBAAgBxiB,IAAI,GAAGr2L,KAAKg2L,eAAeh2L,KAAKw5M,cAAcx5M,KAAKmwM,iBAAiBnwM,KAAK41L,aAAa51L,KAAK81L,YAAY91L,KAAK61L,eAAe71L,KAAK21L,aAAa,EAAE31L,KAAKi2L,cAAcI,GAAG,GAAGr2L,KAAKo7M,gCAAgC,KAC7e,SAASC,GAAGhpM,EAAEC,EAAEC,GAAG,IAAIsF,EAAE,EAAE3X,UAAU8N,aAAQ,IAAS9N,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACwoL,SAASqC,EAAG1rL,IAAI,MAAMwY,EAAE,KAAK,GAAGA,EAAEqS,SAAS7X,EAAEk8I,cAAcj8I,EAAEq6L,eAAep6L,GACxK,SAAS+oM,GAAGjpM,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEzB,EAAEmyF,QAAQ3sF,EAAEqzL,KAAKpzL,EAAEqzL,GAAGr3L,GAAG1B,EAAE,GAAGE,EAAE,CAAqBD,EAAE,CAAC,GAAG4/K,GAA1B3/K,EAAEA,EAAE24L,mBAA8B34L,GAAG,IAAIA,EAAEg6K,IAAI,MAAM/4K,MAAM7D,EAAE,MAAM,IAAIqI,EAAEzF,EAAE,EAAE,CAAC,OAAOyF,EAAEu0K,KAAK,KAAK,EAAEv0K,EAAEA,EAAEs2I,UAAUrzI,QAAQ,MAAM3I,EAAE,KAAK,EAAE,GAAGg0L,GAAGtuL,EAAE/K,MAAM,CAAC+K,EAAEA,EAAEs2I,UAAUq4C,0CAA0C,MAAMr0L,GAAG0F,EAAEA,EAAEq2I,aAAa,OAAOr2I,GAAG,MAAMxE,MAAM7D,EAAE,MAAO,GAAG,IAAI4C,EAAEg6K,IAAI,CAAC,IAAIh4G,EAAEhiE,EAAEtF,KAAK,GAAGq5L,GAAG/xH,GAAG,CAAChiE,EAAEk0L,GAAGl0L,EAAEgiE,EAAEv8D,GAAG,MAAM3F,GAAGE,EAAEyF,OAAOzF,EAAE0zL,GACrW,OADwW,OAAO3zL,EAAE2I,QAAQ3I,EAAE2I,QAAQ1I,EAAED,EAAE2gM,eAAe1gM,GAAED,EAAEg4L,GAAGxyL,EAAEC,IAAK0yL,QAAQ,CAAC3xK,QAAQzmB,GAAuB,QAApBwF,OAAE,IAASA,EAAE,KAAKA,KAC1evF,EAAE+R,SAASxM,GAAG6yL,GAAG32L,EAAEzB,GAAG+4L,GAAGt3L,EAAEgE,EAAED,GAAUC,EAAE,SAASwjM,GAAGlpM,GAAe,KAAZA,EAAEA,EAAEoyF,SAAc9pE,MAAM,OAAO,KAAK,OAAOtoB,EAAEsoB,MAAM4xJ,KAAK,KAAK,EAA2B,QAAQ,OAAOl6K,EAAEsoB,MAAM2zH,WAAW,SAASktD,GAAGnpM,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAE+/K,gBAA2B,OAAO//K,EAAEggL,WAAW,CAAC,IAAI9/K,EAAEF,EAAEihM,UAAUjhM,EAAEihM,UAAU,IAAI/gM,GAAGA,EAAED,EAAEC,EAAED,GAAG,SAASmrJ,GAAGprJ,EAAEC,GAAGkpM,GAAGnpM,EAAEC,IAAID,EAAEA,EAAEk/I,YAAYiqD,GAAGnpM,EAAEC,GACxV,SAASmpM,GAAGppM,EAAEC,EAAEC,GAAG,IAAIsF,EAAE,MAAMtF,GAAG,MAAMA,EAAEmpM,kBAAkBnpM,EAAEmpM,iBAAiBC,gBAAgB,KAAiK,GAA5JppM,EAAE,IAAI4oM,GAAG9oM,EAAEC,EAAE,MAAMC,IAAG,IAAKA,EAAEuhL,SAASxhL,EAAE07L,GAAG,EAAE,KAAK,KAAK,IAAI17L,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGC,EAAEkyF,QAAQnyF,EAAEA,EAAEg8I,UAAU/7I,EAAEw3L,GAAGz3L,GAAGD,EAAEiyL,IAAI/xL,EAAEkyF,QAAQ3zE,GAAG,IAAIze,EAAE88K,SAAS98K,EAAEspK,WAAWtpK,GAAMwF,EAAE,IAAIxF,EAAE,EAAEA,EAAEwF,EAAE7J,OAAOqE,IAAI,CAAQ,IAAI0B,GAAXzB,EAAEuF,EAAExF,IAAW49L,YAAYl8L,EAAEA,EAAEzB,EAAE49L,SAAS,MAAM39L,EAAE6oM,gCAAgC7oM,EAAE6oM,gCAAgC,CAAC9oM,EAAEyB,GAAGxB,EAAE6oM,gCAAgC9tM,KAAKgF,EAAEyB,GAAG/T,KAAK47M,cAAcrpM,EAC/R,SAASspM,GAAGxpM,GAAG,SAASA,GAAG,IAAIA,EAAE88K,UAAU,IAAI98K,EAAE88K,UAAU,KAAK98K,EAAE88K,WAAW,IAAI98K,EAAE88K,UAAU,iCAAiC98K,EAAE+8K,YAEvT,SAAS0sB,GAAGzpM,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAEvF,EAAEmkM,oBAAoB,GAAG5+L,EAAE,CAAC,IAAIC,EAAED,EAAE8jM,cAAc,GAAG,oBAAoB7nM,EAAE,CAAC,IAAIiE,EAAEjE,EAAEA,EAAE,WAAW,IAAI1B,EAAEkpM,GAAGxjM,GAAGC,EAAE/J,KAAKoE,IAAIipM,GAAGhpM,EAAEyF,EAAE1F,EAAE0B,OAAO,CAAmD,GAAlD+D,EAAEvF,EAAEmkM,oBAD1K,SAAYrkM,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAE88K,SAAS98K,EAAEi7L,gBAAgBj7L,EAAEy8K,WAAW,OAAa,IAAIx8K,EAAE68K,WAAW78K,EAAEooD,aAAa,qBAAwBpoD,EAAE,IAAI,IAAIC,EAAEA,EAAEF,EAAE68K,WAAW78K,EAAEg9I,YAAY98I,GAAG,OAAO,IAAIkpM,GAAGppM,EAAE,EAAEC,EAAE,CAACwhL,SAAQ,QAAI,GAC3BioB,CAAGxpM,EAAEsF,GAAGE,EAAED,EAAE8jM,cAAiB,oBAAoB7nM,EAAE,CAAC,IAAIwgE,EAAExgE,EAAEA,EAAE,WAAW,IAAI1B,EAAEkpM,GAAGxjM,GAAGw8D,EAAEtmE,KAAKoE,IAAIunM,IAAG,WAAW0B,GAAGhpM,EAAEyF,EAAE1F,EAAE0B,MAAK,OAAOwnM,GAAGxjM,GAGlG,SAASikM,GAAG3pM,EAAEC,GAAG,IAAIC,EAAE,EAAErS,UAAU8N,aAAQ,IAAS9N,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI27M,GAAGvpM,GAAG,MAAMkB,MAAM7D,EAAE,MAAM,OAAO0rM,GAAGhpM,EAAEC,EAAE,KAAKC,GA1BtWmlM,GAAG,SAASrlM,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAEo3L,MAAM,GAAG,OAAOr3L,EAAE,GAAGA,EAAEozI,gBAAgBnzI,EAAE47L,cAAc31F,GAAE9T,QAAQklG,IAAG,MAAQ,IAAG,KAAKp3L,EAAEsF,GAAoC,CAAO,OAAN8xL,IAAG,EAAUr3L,EAAEi6K,KAAK,KAAK,EAAEymB,GAAG1gM,GAAG69D,KAAK,MAAM,KAAK,EAAEq9H,GAAGl7L,GAAG,MAAM,KAAK,EAAEg0L,GAAGh0L,EAAErF,OAAOy5L,GAAGp0L,GAAG,MAAM,KAAK,EAAE+6L,GAAG/6L,EAAEA,EAAEg8I,UAAUC,eAAe,MAAM,KAAK,GAAG12I,EAAEvF,EAAEmzI,cAAcjmJ,MAAM,IAAIuU,EAAEzB,EAAErF,KAAKogF,SAAS+iF,GAAE24B,GAAGh1L,EAAE01K,eAAe11K,EAAE01K,cAAc5xK,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOvF,EAAE8/K,cAAe,OAAG,KAAK7/K,EAAED,EAAEqoB,MAAM2uK,YAAmBiK,GAAGlhM,EAAEC,EAAEC,IAAG69J,GAAEr3D,GAAY,EAAVA,GAAEtU,SAA8B,QAAnBnyF,EAAE6/L,GAAG9/L,EAAEC,EAAEC,IAC/eD,EAAE68I,QAAQ,MAAKihB,GAAEr3D,GAAY,EAAVA,GAAEtU,SAAW,MAAM,KAAK,GAA0B,GAAvB5sF,EAAE,KAAKtF,EAAED,EAAEg3L,YAAe,KAAa,GAARj3L,EAAEqxJ,OAAU,CAAC,GAAG7rJ,EAAE,OAAOu8L,GAAG/hM,EAAEC,EAAEC,GAAGD,EAAEoxJ,OAAO,GAA+F,GAA1E,QAAlB3vJ,EAAEzB,EAAE8/K,iBAAyBr+K,EAAEkgM,UAAU,KAAKlgM,EAAEq5F,KAAK,KAAKr5F,EAAEq4L,WAAW,MAAMh8B,GAAEr3D,GAAEA,GAAEtU,SAAY5sF,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOvF,EAAEo3L,MAAM,EAAE8I,GAAGngM,EAAEC,EAAEC,GAAG,OAAO4/L,GAAG9/L,EAAEC,EAAEC,GAD3Lo3L,GAAG,KAAa,MAARt3L,EAAEqxJ,YACyLimC,IAAG,EAAa,OAAVr3L,EAAEo3L,MAAM,EAASp3L,EAAEi6K,KAAK,KAAK,EAA+I,GAA7I10K,EAAEvF,EAAErF,KAAK,OAAOoF,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAGrxJ,EAAEC,EAAE47L,aAAan6L,EAAEoyL,GAAG7zL,EAAEm5J,GAAEhnE,SAAS8kG,GAAGj3L,EAAEC,GAAGwB,EAAEi7L,GAAG,KAAK18L,EAAEuF,EAAExF,EAAE0B,EAAExB,GAAGD,EAAEoxJ,OAAO,EAAK,kBACre3vJ,GAAG,OAAOA,GAAG,oBAAoBA,EAAEuhC,aAAQ,IAASvhC,EAAE20K,SAAS,CAAiD,GAAhDp2K,EAAEi6K,IAAI,EAAEj6K,EAAE8/K,cAAc,KAAK9/K,EAAE03L,YAAY,KAAQ1D,GAAGzuL,GAAG,CAAC,IAAIC,GAAE,EAAG4uL,GAAGp0L,QAAQwF,GAAE,EAAGxF,EAAE8/K,cAAc,OAAOr+K,EAAE+zC,YAAO,IAAS/zC,EAAE+zC,MAAM/zC,EAAE+zC,MAAM,KAAKiiJ,GAAGz3L,GAAG,IAAIyF,EAAEF,EAAEqqJ,yBAAyB,oBAAoBnqJ,GAAGizL,GAAG14L,EAAEuF,EAAEE,EAAE1F,GAAG0B,EAAEs0K,QAAQ4iB,GAAG34L,EAAEg8I,UAAUv6I,EAAEA,EAAEm3L,gBAAgB54L,EAAEq5L,GAAGr5L,EAAEuF,EAAExF,EAAEE,GAAGD,EAAEygM,GAAG,KAAKzgM,EAAEuF,GAAE,EAAGC,EAAEvF,QAAQD,EAAEi6K,IAAI,EAAE0lB,GAAG,KAAK3/L,EAAEyB,EAAExB,GAAGD,EAAEA,EAAEqoB,MAAM,OAAOroB,EAAE,KAAK,GAAGyB,EAAEzB,EAAEm6L,YAAYp6L,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GACnfrxJ,EAAEC,EAAE47L,aAAuBn6L,GAAV+D,EAAE/D,EAAEi2K,OAAUj2K,EAAEg2K,UAAUz3K,EAAErF,KAAK8G,EAAE+D,EAAExF,EAAEi6K,IAOxD,SAAYl6K,GAAG,GAAG,oBAAoBA,EAAE,OAAOggM,GAAGhgM,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEq2K,YAAgB0C,EAAG,OAAO,GAAG,GAAG/4K,IAAIk5K,EAAG,OAAO,GAAG,OAAO,EAPlF0wB,CAAGloM,GAAG1B,EAAEy2L,GAAG/0L,EAAE1B,GAAUyF,GAAG,KAAK,EAAExF,EAAEigM,GAAG,KAAKjgM,EAAEyB,EAAE1B,EAAEE,GAAG,MAAMF,EAAE,KAAK,EAAEC,EAAEsgM,GAAG,KAAKtgM,EAAEyB,EAAE1B,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAE4/L,GAAG,KAAK5/L,EAAEyB,EAAE1B,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAE8/L,GAAG,KAAK9/L,EAAEyB,EAAE+0L,GAAG/0L,EAAE9G,KAAKoF,GAAGwF,EAAEtF,GAAG,MAAMF,EAAE,MAAMmB,MAAM7D,EAAE,IAAIoE,EAAE,KAAM,OAAOzB,EAAE,KAAK,EAAE,OAAOuF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAA2CqE,GAAGlgM,EAAEC,EAAEuF,EAArC9D,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAE+0L,GAAGjxL,EAAE9D,GAAcxB,GAAG,KAAK,EAAE,OAAOsF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAA2C0E,GAAGvgM,EAAEC,EAAEuF,EAArC9D,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAE+0L,GAAGjxL,EAAE9D,GAAcxB,GAAG,KAAK,EAAwB,GAAtBygM,GAAG1gM,GAAGuF,EAAEvF,EAAE03L,YAAe,OAAO33L,GAAG,OAAOwF,EAAE,MAAMrE,MAAM7D,EAAE,MAC3Y,GAA9GkI,EAAEvF,EAAE47L,aAA+Bn6L,EAAE,QAApBA,EAAEzB,EAAE8/K,eAAyBr+K,EAAE+kB,QAAQ,KAAKuxK,GAAGh4L,EAAEC,GAAGs4L,GAAGt4L,EAAEuF,EAAE,KAAKtF,IAAGsF,EAAEvF,EAAE8/K,cAAct5J,WAAe/kB,EAAEo8D,KAAK79D,EAAE6/L,GAAG9/L,EAAEC,EAAEC,OAAO,CAAuF,IAArEuF,GAAjB/D,EAAEzB,EAAEg8I,WAAiBwlC,WAAQ+Z,GAAGtI,GAAGjzL,EAAEg8I,UAAUC,cAAcugC,YAAY8e,GAAGt7L,EAAEwF,EAAEg2L,IAAG,GAAMh2L,EAAE,CAAqC,GAAG,OAAvCzF,EAAE0B,EAAEqnM,iCAA2C,IAAIrnM,EAAE,EAAEA,EAAE1B,EAAErE,OAAO+F,GAAG,GAAE+D,EAAEzF,EAAE0B,IAAKy6L,8BAA8Bn8L,EAAE0B,EAAE,GAAGu6L,GAAGhhM,KAAKwK,GAAoB,IAAjBvF,EAAEw6L,GAAGz6L,EAAE,KAAKuF,EAAEtF,GAAOD,EAAEqoB,MAAMpoB,EAAEA,GAAGA,EAAEmxJ,OAAe,EAATnxJ,EAAEmxJ,MAAS,KAAKnxJ,EAAEA,EAAE48I,aAAa8iD,GAAG5/L,EAAEC,EAAEuF,EAAEtF,GAAG49D,KAAK79D,EAAEA,EAAEqoB,MAAM,OAAOroB,EAAE,KAAK,EAAE,OAAOk7L,GAAGl7L,GAAG,OAAOD,GACnf87L,GAAG77L,GAAGuF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAAap2L,EAAE,OAAOzF,EAAEA,EAAEozI,cAAc,KAAK1tI,EAAEhE,EAAEmW,SAASg7K,GAAGrtL,EAAE9D,GAAGgE,EAAE,KAAK,OAAOD,GAAGotL,GAAGrtL,EAAEC,KAAKxF,EAAEoxJ,OAAO,IAAIivC,GAAGtgM,EAAEC,GAAG2/L,GAAG5/L,EAAEC,EAAEyF,EAAExF,GAAGD,EAAEqoB,MAAM,KAAK,EAAE,OAAO,OAAOtoB,GAAG87L,GAAG77L,GAAG,KAAK,KAAK,GAAG,OAAOihM,GAAGlhM,EAAEC,EAAEC,GAAG,KAAK,EAAE,OAAO86L,GAAG/6L,EAAEA,EAAEg8I,UAAUC,eAAe12I,EAAEvF,EAAE47L,aAAa,OAAO77L,EAAEC,EAAEqoB,MAAMmyK,GAAGx6L,EAAE,KAAKuF,EAAEtF,GAAG0/L,GAAG5/L,EAAEC,EAAEuF,EAAEtF,GAAGD,EAAEqoB,MAAM,KAAK,GAAG,OAAO9iB,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAA2CgE,GAAG7/L,EAAEC,EAAEuF,EAArC9D,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAE+0L,GAAGjxL,EAAE9D,GAAcxB,GAAG,KAAK,EAAE,OAAO0/L,GAAG5/L,EAAEC,EAAEA,EAAE47L,aAAa37L,GAAGD,EAAEqoB,MAAM,KAAK,EACtc,KAAK,GAAG,OAAOs3K,GAAG5/L,EAAEC,EAAEA,EAAE47L,aAAahkL,SAAS3X,GAAGD,EAAEqoB,MAAM,KAAK,GAAGtoB,EAAE,CAACwF,EAAEvF,EAAErF,KAAKogF,SAASt5E,EAAEzB,EAAE47L,aAAan2L,EAAEzF,EAAEmzI,cAAc3tI,EAAE/D,EAAEvU,MAAM,IAAIwY,EAAE1F,EAAErF,KAAKogF,SAAiD,GAAxC+iF,GAAE24B,GAAG/wL,EAAEyxK,eAAezxK,EAAEyxK,cAAc3xK,EAAK,OAAOC,EAAE,GAAGC,EAAED,EAAEvY,MAA0G,KAApGsY,EAAEoqL,GAAGlqL,EAAEF,GAAG,EAAwF,GAArF,oBAAoBD,EAAE2xK,sBAAsB3xK,EAAE2xK,sBAAsBxxK,EAAEF,GAAG,cAAqB,GAAGC,EAAEmS,WAAWnW,EAAEmW,WAAWquF,GAAE9T,QAAQ,CAACnyF,EAAE6/L,GAAG9/L,EAAEC,EAAEC,GAAG,MAAMF,QAAQ,IAAc,QAAV2F,EAAE1F,EAAEqoB,SAAiB3iB,EAAEq2I,OAAO/7I,GAAG,OAAO0F,GAAG,CAAC,IAAIu8D,EAAEv8D,EAAEwxL,aAAa,GAAG,OAAOj1H,EAAE,CAACx8D,EAAEC,EAAE2iB,MAAM,IAAI,IAAI5sB,EACtfwmE,EAAEk1H,aAAa,OAAO17L,GAAG,CAAC,GAAGA,EAAEkN,UAAUpD,GAAG,KAAK9J,EAAEu7J,aAAaxxJ,GAAG,CAAC,IAAIE,EAAEu0K,OAAMx+K,EAAEu8L,IAAI,EAAE/3L,GAAGA,IAAKg6K,IAAI,EAAEme,GAAG1yL,EAAEjK,IAAIiK,EAAE0xL,OAAOn3L,EAAgB,QAAdxE,EAAEiK,EAAEu5I,aAAqBxjJ,EAAE27L,OAAOn3L,GAAG82L,GAAGrxL,EAAEq2I,OAAO97I,GAAGgiE,EAAEm1H,OAAOn3L,EAAE,MAAMxE,EAAEA,EAAE0zD,WAAW1pD,EAAE,KAAKC,EAAEu0K,KAAIv0K,EAAE/K,OAAOqF,EAAErF,KAAK,KAAa+K,EAAE2iB,MAAM,GAAG,OAAO5iB,EAAEA,EAAEs2I,OAAOr2I,OAAO,IAAID,EAAEC,EAAE,OAAOD,GAAG,CAAC,GAAGA,IAAIzF,EAAE,CAACyF,EAAE,KAAK,MAAkB,GAAG,QAAfC,EAAED,EAAEo3I,SAAoB,CAACn3I,EAAEq2I,OAAOt2I,EAAEs2I,OAAOt2I,EAAEC,EAAE,MAAMD,EAAEA,EAAEs2I,OAAOr2I,EAAED,EAAEk6L,GAAG5/L,EAAEC,EAAEyB,EAAEmW,SAAS3X,GAAGD,EAAEA,EAAEqoB,MAAM,OAAOroB,EAAE,KAAK,EAAE,OAAOyB,EAAEzB,EAAErF,KAAsB4K,GAAjBC,EAAExF,EAAE47L,cAAiBhkL,SAASq/K,GAAGj3L,EAAEC,GACndsF,EAAEA,EADod9D,EAAE61L,GAAG71L,EACpf+D,EAAEokM,wBAA8B5pM,EAAEoxJ,OAAO,EAAEuuC,GAAG5/L,EAAEC,EAAEuF,EAAEtF,GAAGD,EAAEqoB,MAAM,KAAK,GAAG,OAAgB7iB,EAAEgxL,GAAX/0L,EAAEzB,EAAErF,KAAYqF,EAAE47L,cAA6BkE,GAAG//L,EAAEC,EAAEyB,EAAtB+D,EAAEgxL,GAAG/0L,EAAE9G,KAAK6K,GAAcD,EAAEtF,GAAG,KAAK,GAAG,OAAO+/L,GAAGjgM,EAAEC,EAAEA,EAAErF,KAAKqF,EAAE47L,aAAar2L,EAAEtF,GAAG,KAAK,GAAG,OAAOsF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAAan6L,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAE+0L,GAAGjxL,EAAE9D,GAAG,OAAO1B,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAGpxJ,EAAEi6K,IAAI,EAAE+Z,GAAGzuL,IAAIxF,GAAE,EAAGq0L,GAAGp0L,IAAID,GAAE,EAAGk3L,GAAGj3L,EAAEC,GAAGi5L,GAAGl5L,EAAEuF,EAAE9D,GAAG43L,GAAGr5L,EAAEuF,EAAE9D,EAAExB,GAAGwgM,GAAG,KAAKzgM,EAAEuF,GAAE,EAAGxF,EAAEE,GAAG,KAAK,GAAG,OAAO6hM,GAAG/hM,EAAEC,EAAEC,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAOigM,GAAGngM,EAAEC,EAAEC,GAAG,MAAMiB,MAAM7D,EAAE,IAAI2C,EAAEi6K,OAa/ekvB,GAAGnmM,UAAUggC,OAAO,SAASjjC,GAAGipM,GAAGjpM,EAAErS,KAAK47M,cAAc,KAAK,OAAOH,GAAGnmM,UAAU6mM,QAAQ,WAAW,IAAI9pM,EAAErS,KAAK47M,cAActpM,EAAED,EAAEk8I,cAAc+sD,GAAG,KAAKjpM,EAAE,MAAK,WAAWC,EAAEgyL,IAAI,SAEwJ9R,GAAG,SAASngL,GAAM,KAAKA,EAAEk6K,MAAgB8e,GAAGh5L,EAAE,EAAV84L,MAAe1tC,GAAGprJ,EAAE,KAAKogL,GAAG,SAASpgL,GAAM,KAAKA,EAAEk6K,MAAgB8e,GAAGh5L,EAAE,SAAV84L,MAAsB1tC,GAAGprJ,EAAE,YACncqgL,GAAG,SAASrgL,GAAG,GAAG,KAAKA,EAAEk6K,IAAI,CAAC,IAAIj6K,EAAE64L,KAAK54L,EAAE64L,GAAG/4L,GAAGg5L,GAAGh5L,EAAEE,EAAED,GAAGmrJ,GAAGprJ,EAAEE,KAAKogL,GAAG,SAAStgL,EAAEC,GAAG,OAAOA,KAC7Fm+K,GAAG,SAASp+K,EAAEC,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAyB,GAAjBg6B,GAAGj6B,EAAEE,GAAGD,EAAEC,EAAEgI,KAAQ,UAAUhI,EAAEtF,MAAM,MAAMqF,EAAE,CAAC,IAAIC,EAAEF,EAAEE,EAAEopK,YAAYppK,EAAEA,EAAEopK,WAAsF,IAA3EppK,EAAEA,EAAE6pM,iBAAiB,cAAcpjL,KAAKC,UAAU,GAAG3mB,GAAG,mBAAuBA,EAAE,EAAEA,EAAEC,EAAEvE,OAAOsE,IAAI,CAAC,IAAIuF,EAAEtF,EAAED,GAAG,GAAGuF,IAAIxF,GAAGwF,EAAEwkM,OAAOhqM,EAAEgqM,KAAK,CAAC,IAAItoM,EAAE+8K,GAAGj5K,GAAG,IAAI9D,EAAE,MAAMP,MAAM7D,EAAE,KAAKq9K,EAAGn1K,GAAGy0B,GAAGz0B,EAAE9D,KAAK,MAAM,IAAK,WAAWglF,GAAG1mF,EAAEE,GAAG,MAAM,IAAK,SAAmB,OAAVD,EAAEC,EAAE/S,QAAeuuL,GAAG17K,IAAIE,EAAEiiM,SAASliM,GAAE,KAAM2+K,GAAG0oB,GAC9ZzoB,GAAG,SAAS7+K,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAE44J,GAAEA,IAAG,EAAE,IAAI,OAAO+3B,GAAG,GAAGp2L,EAAEs9G,KAAK,KAAKr9G,EAAEC,EAAEsF,EAAE9D,IAAnC,QAAmD,KAAJ28J,GAAE54J,KAAU2/L,KAAK9O,QAAQxX,GAAG,WAAW,KAAO,GAAFzgB,MAhD/H,WAAc,GAAG,OAAOsnC,GAAG,CAAC,IAAI3lM,EAAE2lM,GAAGA,GAAG,KAAK3lM,EAAEg0E,SAAQ,SAASh0E,GAAGA,EAAEujL,cAAc,GAAGvjL,EAAEsjL,aAAagjB,GAAGtmM,EAAEm+J,SAAOm4B,KAgDsB2T,GAAKrD,OAAO7nB,GAAG,SAAS/+K,EAAEC,GAAG,IAAIC,EAAEm+J,GAAEA,IAAG,EAAE,IAAI,OAAOr+J,EAAEC,GAAb,QAA4B,KAAJo+J,GAAEn+J,KAAUklM,KAAK9O,QAA+I,IAAI4T,GAAG,CAACC,OAAO,CAAC3rB,GAAGsQ,GAAGrQ,GAAGC,GAAGC,GAAGioB,GAAG,CAACx0G,SAAQ,KAAMg4G,GAAG,CAACC,wBAAwB9oB,GAAGxgC,WAAW,EAAEv2I,QAAQ,SAASw2I,oBAAoB,aACvespD,GAAG,CAACvpD,WAAWqpD,GAAGrpD,WAAWv2I,QAAQ4/L,GAAG5/L,QAAQw2I,oBAAoBopD,GAAGppD,oBAAoBupD,eAAeH,GAAGG,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBxyB,EAAG/B,uBAAuBw0B,wBAAwB,SAASjrM,GAAW,OAAO,QAAfA,EAAEigL,GAAGjgL,IAAmB,KAAKA,EAAEi8I,WAAWouD,wBAAwBD,GAAGC,yBAR/I,WAAc,OAAO,MAS7Wa,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAM,GAAG,qBAAqBp8C,+BAA+B,CAAC,IAAIq8C,GAAGr8C,+BAA+B,IAAIq8C,GAAGC,YAAYD,GAAGE,cAAc,IAAIjX,GAAG+W,GAAGG,OAAOpB,IAAI7V,GAAG8W,GAAG,MAAMvrM,MAAKspI,EAAQ2tC,mDAAmDizB,GAAG5gE,EAAQuX,aAAa8oD,GACnXrgE,EAAQqiE,YAAY,SAAS3rM,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE88K,SAAS,OAAO98K,EAAE,IAAIC,EAAED,EAAE64L,gBAAgB,QAAG,IAAS54L,EAAE,CAAC,GAAG,oBAAoBD,EAAEijC,OAAO,MAAM9hC,MAAM7D,EAAE,MAAM,MAAM6D,MAAM7D,EAAE,IAAIW,OAAO+8B,KAAKh7B,KAA0C,OAA5BA,EAAE,QAAVA,EAAEigL,GAAGhgL,IAAc,KAAKD,EAAEi8I,WAAoB3S,EAAQsiE,UAAU,SAAS5rM,EAAEC,GAAG,IAAIC,EAAEm+J,GAAE,GAAG,KAAO,GAAFn+J,GAAM,OAAOF,EAAEC,GAAGo+J,IAAG,EAAE,IAAI,GAAGr+J,EAAE,OAAOo2L,GAAG,GAAGp2L,EAAEs9G,KAAK,KAAKr9G,IAAlC,QAA8Co+J,GAAEn+J,EAAEo2L,OAAOhtD,EAAQm4C,QAAQ,SAASzhL,EAAEC,EAAEC,GAAG,IAAIspM,GAAGvpM,GAAG,MAAMkB,MAAM7D,EAAE,MAAM,OAAOmsM,GAAG,KAAKzpM,EAAEC,GAAE,EAAGC,IACndopI,EAAQrmG,OAAO,SAASjjC,EAAEC,EAAEC,GAAG,IAAIspM,GAAGvpM,GAAG,MAAMkB,MAAM7D,EAAE,MAAM,OAAOmsM,GAAG,KAAKzpM,EAAEC,GAAE,EAAGC,IAAIopI,EAAQuP,uBAAuB,SAAS74I,GAAG,IAAIwpM,GAAGxpM,GAAG,MAAMmB,MAAM7D,EAAE,KAAK,QAAO0C,EAAEqkM,sBAAqBkD,IAAG,WAAWkC,GAAG,KAAK,KAAKzpM,GAAE,GAAG,WAAWA,EAAEqkM,oBAAoB,KAAKrkM,EAAEiyL,IAAI,YAAS,IAAQ3oD,EAAQuiE,wBAAwBvE,GAAGh+D,EAAQwiE,sBAAsB,SAAS9rM,EAAEC,GAAG,OAAO0pM,GAAG3pM,EAAEC,EAAE,EAAEpS,UAAU8N,aAAQ,IAAS9N,UAAU,GAAGA,UAAU,GAAG,OAC9ay7I,EAAQyiE,oCAAoC,SAAS/rM,EAAEC,EAAEC,EAAEsF,GAAG,IAAIgkM,GAAGtpM,GAAG,MAAMiB,MAAM7D,EAAE,MAAM,GAAG,MAAM0C,QAAG,IAASA,EAAE64L,gBAAgB,MAAM13L,MAAM7D,EAAE,KAAK,OAAOmsM,GAAGzpM,EAAEC,EAAEC,GAAE,EAAGsF,IAAI8jI,EAAQ9+H,QAAQ,U,6BChShL,IAAI/E,EAAEC,EAAEC,EAAEu8D,EAAE,GAAG,kBAAkBi+C,aAAa,oBAAoBA,YAAYJ,IAAI,CAAC,IAAIrkH,EAAEykH,YAAYmpB,EAAQsU,aAAa,WAAW,OAAOliJ,EAAEqkH,WAAW,CAAC,IAAItvG,EAAE2vG,KAAKrgH,EAAE0Q,EAAEsvG,MAAMupB,EAAQsU,aAAa,WAAW,OAAOntI,EAAEsvG,MAAMhgH,GAC3O,GAAG,qBAAqBgkF,QAAQ,oBAAoBioH,eAAe,CAAC,IAAIzuM,EAAE,KAAKyY,EAAE,KAAK1U,EAAE,SAAFA,IAAa,GAAG,OAAO/D,EAAE,IAAI,IAAIyC,EAAEspI,EAAQsU,eAAergJ,GAAE,EAAGyC,GAAGzC,EAAE,KAAK,MAAM0C,GAAG,MAAM41G,WAAWv0G,EAAE,GAAGrB,IAAKwF,EAAE,SAASzF,GAAG,OAAOzC,EAAEs4G,WAAWpwG,EAAE,EAAEzF,IAAIzC,EAAEyC,EAAE61G,WAAWv0G,EAAE,KAAKoE,EAAE,SAAS1F,EAAEC,GAAG+V,EAAE6/F,WAAW71G,EAAEC,IAAI0F,EAAE,WAAWovI,aAAa/+H,IAAIszH,EAAQyrD,qBAAqB,WAAW,OAAM,GAAI7yH,EAAEonE,EAAQ2iE,wBAAwB,iBAAiB,CAAC,IAAI5uM,EAAE0mF,OAAO8xB,WAAWv4G,EAAEymF,OAAOgxD,aAAa,GAAG,qBAAqBh0I,QAAQ,CAAC,IAAIqL,EAC7f23E,OAAO/8C,qBAAqB,oBAAoB+8C,OAAOj9C,uBAAuB/lC,QAAQ3T,MAAM,sJAAsJ,oBAAoBgf,GAAGrL,QAAQ3T,MAAM,qJAAqJ,IAAIgxK,GAAE,EAAGp4D,EAAE,KAAKktD,GAAG,EAAEoL,EAAE,EAAEK,EAAE,EAAEr1B,EAAQyrD,qBAAqB,WAAW,OAAOzrD,EAAQsU,gBAChgB+gB,GAAGz8F,EAAE,aAAaonE,EAAQ2iE,wBAAwB,SAASjsM,GAAG,EAAEA,GAAG,IAAIA,EAAEe,QAAQ3T,MAAM,mHAAmHkxK,EAAE,EAAEt+J,EAAEjE,KAAKgC,MAAM,IAAIiC,GAAG,GAAG,IAAIuhJ,EAAE,IAAIyqD,eAAe/tC,EAAE1c,EAAE2qD,MAAM3qD,EAAE4qD,MAAMC,UAAU,WAAW,GAAG,OAAOpmG,EAAE,CAAC,IAAIhmG,EAAEspI,EAAQsU,eAAe+gB,EAAE3+J,EAAEs+J,EAAE,IAAIt4D,GAAE,EAAGhmG,GAAGi+J,EAAEwV,YAAY,OAAOrV,GAAE,EAAGp4D,EAAE,MAAM,MAAM/lG,GAAG,MAAMg+J,EAAEwV,YAAY,MAAMxzK,QAASm+J,GAAE,GAAI34J,EAAE,SAASzF,GAAGgmG,EAAEhmG,EAAEo+J,IAAIA,GAAE,EAAGH,EAAEwV,YAAY,QAAQ/tK,EAAE,SAAS1F,EAAEC,GAAGizJ,EACtf71J,GAAE,WAAW2C,EAAEspI,EAAQsU,kBAAiB39I,IAAI0F,EAAE,WAAWrI,EAAE41J,GAAGA,GAAG,GAAG,SAASoG,EAAEt5J,EAAEC,GAAG,IAAIC,EAAEF,EAAErE,OAAOqE,EAAE/E,KAAKgF,GAAGD,EAAE,OAAO,CAAC,IAAIwF,EAAEtF,EAAE,IAAI,EAAEwB,EAAE1B,EAAEwF,GAAG,UAAG,IAAS9D,GAAG,EAAEq8J,EAAEr8J,EAAEzB,IAA0B,MAAMD,EAA7BA,EAAEwF,GAAGvF,EAAED,EAAEE,GAAGwB,EAAExB,EAAEsF,GAAgB,SAASw4J,EAAEh+J,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAChP,SAAS89J,EAAE99J,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAIC,EAAEF,EAAEy6D,MAAM,GAAGv6D,IAAID,EAAE,CAACD,EAAE,GAAGE,EAAEF,EAAE,IAAI,IAAIwF,EAAE,EAAE9D,EAAE1B,EAAErE,OAAO6J,EAAE9D,GAAG,CAAC,IAAIvE,EAAE,GAAGqI,EAAE,GAAG,EAAEtI,EAAE8C,EAAE7C,GAAGkE,EAAElE,EAAE,EAAEmJ,EAAEtG,EAAEqB,GAAG,QAAG,IAASnE,GAAG,EAAE6gK,EAAE7gK,EAAEgD,QAAG,IAASoG,GAAG,EAAEy3J,EAAEz3J,EAAEpJ,IAAI8C,EAAEwF,GAAGc,EAAEtG,EAAEqB,GAAGnB,EAAEsF,EAAEnE,IAAIrB,EAAEwF,GAAGtI,EAAE8C,EAAE7C,GAAG+C,EAAEsF,EAAErI,OAAQ,WAAG,IAASmJ,GAAG,EAAEy3J,EAAEz3J,EAAEpG,IAA0B,MAAMF,EAA7BA,EAAEwF,GAAGc,EAAEtG,EAAEqB,GAAGnB,EAAEsF,EAAEnE,IAAgB,OAAOpB,EAAE,OAAO,KAAK,SAAS89J,EAAE/9J,EAAEC,GAAG,IAAIC,EAAEF,EAAEqsM,UAAUpsM,EAAEosM,UAAU,OAAO,IAAInsM,EAAEA,EAAEF,EAAE0lB,GAAGzlB,EAAEylB,GAAG,IAAIyzI,EAAE,GAAGC,EAAE,GAAGlzD,EAAE,EAAEi4D,EAAE,KAAKz3D,EAAE,EAAE2yD,GAAE,EAAGgG,GAAE,EAAGG,GAAE,EACja,SAASv5D,EAAEjmG,GAAG,IAAI,IAAIC,EAAE+9J,EAAE5E,GAAG,OAAOn5J,GAAG,CAAC,GAAG,OAAOA,EAAE+R,SAAS8rJ,EAAE1E,OAAQ,MAAGn5J,EAAEiwG,WAAWlwG,GAAgD,MAA9C89J,EAAE1E,GAAGn5J,EAAEosM,UAAUpsM,EAAEqsM,eAAehzC,EAAEH,EAAEl5J,GAAcA,EAAE+9J,EAAE5E,IAAI,SAASqG,EAAEz/J,GAAa,GAAVw/J,GAAE,EAAGv5D,EAAEjmG,IAAOq/J,EAAE,GAAG,OAAOrB,EAAE7E,GAAGkG,GAAE,EAAG55J,EAAE48L,OAAO,CAAC,IAAIpiM,EAAE+9J,EAAE5E,GAAG,OAAOn5J,GAAGyF,EAAE+5J,EAAEx/J,EAAEiwG,UAAUlwG,IACtP,SAASqiM,EAAEriM,EAAEC,GAAGo/J,GAAE,EAAGG,IAAIA,GAAE,EAAG75J,KAAK0zJ,GAAE,EAAG,IAAIn5J,EAAEwmG,EAAE,IAAS,IAALT,EAAEhmG,GAAOk+J,EAAEH,EAAE7E,GAAG,OAAOgF,MAAMA,EAAEmuC,eAAersM,IAAID,IAAIspI,EAAQyrD,yBAAyB,CAAC,IAAIvvL,EAAE24J,EAAEnsJ,SAAS,GAAG,oBAAoBxM,EAAE,CAAC24J,EAAEnsJ,SAAS,KAAK00F,EAAEy3D,EAAEouC,cAAc,IAAI7qM,EAAE8D,EAAE24J,EAAEmuC,gBAAgBrsM,GAAGA,EAAEqpI,EAAQsU,eAAe,oBAAoBl8I,EAAEy8J,EAAEnsJ,SAAStQ,EAAEy8J,IAAIH,EAAE7E,IAAI2E,EAAE3E,GAAGlzD,EAAEhmG,QAAQ69J,EAAE3E,GAAGgF,EAAEH,EAAE7E,GAAG,GAAG,OAAOgF,EAAE,IAAIhhK,GAAE,MAAO,CAAC,IAAID,EAAE8gK,EAAE5E,GAAG,OAAOl8J,GAAGwI,EAAE+5J,EAAEviK,EAAEgzG,UAAUjwG,GAAG9C,GAAE,EAAG,OAAOA,EAArX,QAA+XghK,EAAE,KAAKz3D,EAAExmG,EAAEm5J,GAAE,GAAI,IAAIwE,EAAE37F,EAAEonE,EAAQoU,sBAAsB,EACtepU,EAAQgsD,2BAA2B,EAAEhsD,EAAQosD,qBAAqB,EAAEpsD,EAAQ04C,wBAAwB,EAAE14C,EAAQkjE,mBAAmB,KAAKljE,EAAQg7C,8BAA8B,EAAEh7C,EAAQurD,wBAAwB,SAAS70L,GAAGA,EAAEgS,SAAS,MAAMs3H,EAAQmjE,2BAA2B,WAAWptC,GAAGhG,IAAIgG,GAAE,EAAG55J,EAAE48L,KAAK/4D,EAAQ8rD,iCAAiC,WAAW,OAAO1uF,GAAG4iC,EAAQojE,8BAA8B,WAAW,OAAO1uC,EAAE7E,IACpa7vB,EAAQqjE,cAAc,SAAS3sM,GAAG,OAAO0mG,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIzmG,EAAE,EAAE,MAAM,QAAQA,EAAEymG,EAAE,IAAIxmG,EAAEwmG,EAAEA,EAAEzmG,EAAE,IAAI,OAAOD,IAAX,QAAuB0mG,EAAExmG,IAAIopI,EAAQsjE,wBAAwB,aAAatjE,EAAQ2rD,sBAAsBp3B,EAAEv0B,EAAQmU,yBAAyB,SAASz9I,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIE,EAAEwmG,EAAEA,EAAE1mG,EAAE,IAAI,OAAOC,IAAX,QAAuBymG,EAAExmG,IACpWopI,EAAQy4C,0BAA0B,SAAS/hL,EAAEC,EAAEC,GAAG,IAAIsF,EAAE8jI,EAAQsU,eAA8F,OAA/E,kBAAkB19I,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEijH,QAA6B,EAAEjjH,EAAEsF,EAAEtF,EAAEsF,EAAGtF,EAAEsF,EAASxF,GAAG,KAAK,EAAE,IAAI0B,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAA2M,OAAjM1B,EAAE,CAAC0lB,GAAGwgF,IAAIl0F,SAAS/R,EAAEssM,cAAcvsM,EAAEkwG,UAAUhwG,EAAEosM,eAAvD5qM,EAAExB,EAAEwB,EAAoE2qM,WAAW,GAAGnsM,EAAEsF,GAAGxF,EAAEqsM,UAAUnsM,EAAEo5J,EAAEF,EAAEp5J,GAAG,OAAOg+J,EAAE7E,IAAIn5J,IAAIg+J,EAAE5E,KAAKoG,EAAE75J,IAAI65J,GAAE,EAAG95J,EAAE+5J,EAAEv/J,EAAEsF,MAAMxF,EAAEqsM,UAAU3qM,EAAE43J,EAAEH,EAAEn5J,GAAGq/J,GAAGhG,IAAIgG,GAAE,EAAG55J,EAAE48L,KAAYriM,GAC1dspI,EAAQujE,sBAAsB,SAAS7sM,GAAG,IAAIC,EAAEymG,EAAE,OAAO,WAAW,IAAIxmG,EAAEwmG,EAAEA,EAAEzmG,EAAE,IAAI,OAAOD,EAAElS,MAAMH,KAAKE,WAAxB,QAA2C64G,EAAExmG,M,6BCV7H,IAAI4sM,EAAuBvjE,EAAQ,IAEnC,SAASwjE,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3C1jE,EAAOC,QAAU,WACf,SAAS4jE,EAAK5kE,EAAO6kE,EAAUC,EAAe9yJ,EAAU+yJ,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI/+M,EAAM,IAAIoT,MACZ,mLAKF,MADApT,EAAIma,KAAO,sBACLna,GAGR,SAASw/M,IACP,OAAOL,EAFTA,EAAKr2C,WAAaq2C,EAMlB,IAAIM,EAAiB,CACnBjyM,MAAO2xM,EACPzwC,KAAMywC,EACN74C,KAAM64C,EACNxwC,OAAQwwC,EACRl2L,OAAQk2L,EACRz6K,OAAQy6K,EACRO,OAAQP,EAERQ,IAAKR,EACLS,QAASJ,EACT9mL,QAASymL,EACT9S,YAAa8S,EACbU,WAAYL,EACZzkF,KAAMokF,EACNtwC,SAAU2wC,EACV5wC,MAAO4wC,EACPM,UAAWN,EACX9lL,MAAO8lL,EACPvpD,MAAOupD,EAEPO,eAAgBd,EAChBC,kBAAmBF,GAKrB,OAFAS,EAAe52C,UAAY42C,EAEpBA,I,6BCnDTnkE,EAAOC,QAFoB,gD,6BCDdC,EAAQ,IAAiB,IAAI9jI,EAAE8jI,EAAQ,GAAS7jI,EAAE,MAA6B,GAAvB4jI,EAAQisC,SAAS,MAAS,oBAAoBxyK,QAAQA,OAAO4yK,IAAI,CAAC,IAAIhwK,EAAE5C,OAAO4yK,IAAIjwK,EAAEC,EAAE,iBAAiB2jI,EAAQisC,SAAS5vK,EAAE,kBAAkB,IAAIxI,EAAEsI,EAAEwxK,mDAAmDL,kBAAkB15K,EAAEe,OAAOgF,UAAU03I,eAAelqI,EAAE,CAACzjB,KAAI,EAAG8gJ,KAAI,EAAGqoC,QAAO,EAAGC,UAAS,GACrW,SAASr2K,EAAEG,EAAEF,EAAEkiE,GAAG,IAAIjiE,EAAEuF,EAAE,GAAG9D,EAAE,KAAKhG,EAAE,KAAiF,IAAIuE,UAAhF,IAASiiE,IAAIxgE,EAAE,GAAGwgE,QAAG,IAASliE,EAAEhT,MAAM0U,EAAE,GAAG1B,EAAEhT,UAAK,IAASgT,EAAE8tI,MAAMpyI,EAAEsE,EAAE8tI,KAAc9tI,EAAE9C,EAAEtB,KAAKoE,EAAEC,KAAKwQ,EAAEkqI,eAAe16I,KAAKuF,EAAEvF,GAAGD,EAAEC,IAAI,GAAGC,GAAGA,EAAEwvJ,aAAa,IAAIzvJ,KAAKD,EAAEE,EAAEwvJ,kBAAe,IAASlqJ,EAAEvF,KAAKuF,EAAEvF,GAAGD,EAAEC,IAAI,MAAM,CAACo2K,SAAS3wK,EAAE9K,KAAKsF,EAAElT,IAAI0U,EAAEosI,IAAIpyI,EAAE4sI,MAAM9iI,EAAE8wK,OAAOn5K,EAAEi1F,SAASk3C,EAAQykE,IAAIhuM,EAAEupI,EAAQ0kE,KAAKjuM,G,cCRvV,IAOIkuM,EACAC,EARA/jC,EAAU9gC,EAAOC,QAAU,GAU/B,SAAS6kE,IACL,MAAM,IAAIhtM,MAAM,mCAEpB,SAASitM,IACL,MAAM,IAAIjtM,MAAM,qCAsBpB,SAASktM,EAAWngE,GAChB,GAAI+/D,IAAqBp4F,WAErB,OAAOA,WAAWq4B,EAAK,GAG3B,IAAK+/D,IAAqBE,IAAqBF,IAAqBp4F,WAEhE,OADAo4F,EAAmBp4F,WACZA,WAAWq4B,EAAK,GAE3B,IAEI,OAAO+/D,EAAiB//D,EAAK,GAC/B,MAAMxsI,GACJ,IAEI,OAAOusM,EAAiBryM,KAAK,KAAMsyI,EAAK,GAC1C,MAAMxsI,GAEJ,OAAOusM,EAAiBryM,KAAKjO,KAAMugJ,EAAK,MAvCnD,WACG,IAEQ+/D,EADsB,oBAAfp4F,WACYA,WAEAs4F,EAEzB,MAAOzsM,GACLusM,EAAmBE,EAEvB,IAEQD,EADwB,oBAAjBn5D,aACcA,aAEAq5D,EAE3B,MAAO1sM,GACLwsM,EAAqBE,GAjB5B,GAwED,IAEIE,EAFApyG,EAAQ,GACRqyG,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAa3yM,OACbugG,EAAQoyG,EAAaz1G,OAAOqD,GAE5BsyG,GAAc,EAEdtyG,EAAMvgG,QACN+yM,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAI/5C,EAAU65C,EAAWI,GACzBF,GAAW,EAGX,IADA,IAAIp7L,EAAM+oF,EAAMvgG,OACVwX,GAAK,CAGP,IAFAm7L,EAAepyG,EACfA,EAAQ,KACCsyG,EAAar7L,GACdm7L,GACAA,EAAaE,GAAYx4D,MAGjCw4D,GAAc,EACdr7L,EAAM+oF,EAAMvgG,OAEhB2yM,EAAe,KACfC,GAAW,EAnEf,SAAyBI,GACrB,GAAIT,IAAuBn5D,aAEvB,OAAOA,aAAa45D,GAGxB,IAAKT,IAAuBE,IAAwBF,IAAuBn5D,aAEvE,OADAm5D,EAAqBn5D,aACdA,aAAa45D,GAExB,IAEWT,EAAmBS,GAC5B,MAAOjtM,GACL,IAEI,OAAOwsM,EAAmBtyM,KAAK,KAAM+yM,GACvC,MAAOjtM,GAGL,OAAOwsM,EAAmBtyM,KAAKjO,KAAMghN,KAgD7CC,CAAgBp6C,IAiBpB,SAASq6C,EAAK3gE,EAAK3yI,GACf5N,KAAKugJ,IAAMA,EACXvgJ,KAAK4N,MAAQA,EAYjB,SAASypJ,KA5BTmlB,EAAQ2kC,SAAW,SAAU5gE,GACzB,IAAItgJ,EAAO,IAAI2d,MAAM1d,UAAU8N,OAAS,GACxC,GAAI9N,UAAU8N,OAAS,EACnB,IAAK,IAAIF,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAClC7N,EAAK6N,EAAI,GAAK5N,UAAU4N,GAGhCygG,EAAMjhG,KAAK,IAAI4zM,EAAK3gE,EAAKtgJ,IACJ,IAAjBsuG,EAAMvgG,QAAiB4yM,GACvBF,EAAWK,IASnBG,EAAK5rM,UAAU+yI,IAAM,WACjBroJ,KAAKugJ,IAAIpgJ,MAAM,KAAMH,KAAK4N,QAE9B4uK,EAAQjO,MAAQ,UAChBiO,EAAQ4kC,SAAU,EAClB5kC,EAAQ6kC,IAAM,GACd7kC,EAAQ8kC,KAAO,GACf9kC,EAAQ3/J,QAAU,GAClB2/J,EAAQ+kC,SAAW,GAInB/kC,EAAQvU,GAAK5Q,EACbmlB,EAAQglC,YAAcnqD,EACtBmlB,EAAQilC,KAAOpqD,EACfmlB,EAAQtU,IAAM7Q,EACdmlB,EAAQklC,eAAiBrqD,EACzBmlB,EAAQmlC,mBAAqBtqD,EAC7BmlB,EAAQolC,KAAOvqD,EACfmlB,EAAQqlC,gBAAkBxqD,EAC1BmlB,EAAQslC,oBAAsBzqD,EAE9BmlB,EAAQpvK,UAAY,SAAUmN,GAAQ,MAAO,IAE7CiiK,EAAQ5kD,QAAU,SAAUr9G,GACxB,MAAM,IAAI/G,MAAM,qCAGpBgpK,EAAQulC,IAAM,WAAc,MAAO,KACnCvlC,EAAQwlC,MAAQ,SAAU18L,GACtB,MAAM,IAAI9R,MAAM,mCAEpBgpK,EAAQylC,MAAQ,WAAa,OAAO,I,6BC9KvB,IAAI3vM,EAAE,oBAAoB8C,QAAQA,OAAO4yK,IAAIz1K,EAAED,EAAE8C,OAAO4yK,IAAI,iBAAiB,MAAMnwK,EAAEvF,EAAE8C,OAAO4yK,IAAI,gBAAgB,MAAMj0K,EAAEzB,EAAE8C,OAAO4yK,IAAI,kBAAkB,MAAMlwK,EAAExF,EAAE8C,OAAO4yK,IAAI,qBAAqB,MAAMjwK,EAAEzF,EAAE8C,OAAO4yK,IAAI,kBAAkB,MAAMhwK,EAAE1F,EAAE8C,OAAO4yK,IAAI,kBAAkB,MAAMzzG,EAAEjiE,EAAE8C,OAAO4yK,IAAI,iBAAiB,MAAMj6K,EAAEuE,EAAE8C,OAAO4yK,IAAI,oBAAoB,MAAMx4K,EAAE8C,EAAE8C,OAAO4yK,IAAI,yBAAyB,MAAMz4K,EAAE+C,EAAE8C,OAAO4yK,IAAI,qBAAqB,MAAMllK,EAAExQ,EAAE8C,OAAO4yK,IAAI,kBAAkB,MAAM51K,EAAEE,EACpf8C,OAAO4yK,IAAI,uBAAuB,MAAMrvK,EAAErG,EAAE8C,OAAO4yK,IAAI,cAAc,MAAMp4K,EAAE0C,EAAE8C,OAAO4yK,IAAI,cAAc,MAAMt0K,EAAEpB,EAAE8C,OAAO4yK,IAAI,eAAe,MAAMr0K,EAAErB,EAAE8C,OAAO4yK,IAAI,qBAAqB,MAAMt4K,EAAE4C,EAAE8C,OAAO4yK,IAAI,mBAAmB,MAAMr4K,EAAE2C,EAAE8C,OAAO4yK,IAAI,eAAe,MAClQ,SAASvpK,EAAEpM,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIgW,EAAEhW,EAAEq2K,SAAS,OAAOrgK,GAAG,KAAK9V,EAAE,OAAOF,EAAEA,EAAEpF,MAAQ,KAAKc,EAAE,KAAKyB,EAAE,KAAKuE,EAAE,KAAKgE,EAAE,KAAKD,EAAE,KAAKgL,EAAE,OAAOzQ,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEq2K,UAAY,KAAKn0G,EAAE,KAAKhlE,EAAE,KAAKK,EAAE,KAAK+I,EAAE,KAAKX,EAAE,OAAO3F,EAAE,QAAQ,OAAOgW,GAAG,KAAKxQ,EAAE,OAAOwQ,IAAI,SAASooJ,EAAEp+J,GAAG,OAAOoM,EAAEpM,KAAK7C,EAAEmsI,EAAQumE,UAAUn0M,EAAE4tI,EAAQwmE,eAAe3yM,EAAEmsI,EAAQymE,gBAAgB7tI,EAAEonE,EAAQ0mE,gBAAgBrqM,EAAE2jI,EAAQ28B,QAAQ/lK,EAAEopI,EAAQmnB,WAAWvzJ,EAAEosI,EAAQisC,SAAS7zK,EAAE4nI,EAAQ2mE,KAAK1yM,EAAE+rI,EAAQonB,KAAKpqJ,EAAEgjI,EAAQ4mE,OAAO1qM,EAChf8jI,EAAQmsC,SAAS/vK,EAAE4jI,EAAQksC,WAAW/vK,EAAE6jI,EAAQosC,SAASjlK,EAAE64H,EAAQ6mE,YAAY,SAASnwM,GAAG,OAAOo+J,EAAEp+J,IAAIoM,EAAEpM,KAAKtE,GAAG4tI,EAAQ8mE,iBAAiBhyC,EAAE90B,EAAQ+mE,kBAAkB,SAASrwM,GAAG,OAAOoM,EAAEpM,KAAKkiE,GAAGonE,EAAQgnE,kBAAkB,SAAStwM,GAAG,OAAOoM,EAAEpM,KAAK2F,GAAG2jI,EAAQ08B,UAAU,SAAShmK,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEq2K,WAAWn2K,GAAGopI,EAAQinE,aAAa,SAASvwM,GAAG,OAAOoM,EAAEpM,KAAK9C,GAAGosI,EAAQknE,WAAW,SAASxwM,GAAG,OAAOoM,EAAEpM,KAAK0B,GAAG4nI,EAAQmnE,OAAO,SAASzwM,GAAG,OAAOoM,EAAEpM,KAAKzC,GACzd+rI,EAAQknB,OAAO,SAASxwJ,GAAG,OAAOoM,EAAEpM,KAAKsG,GAAGgjI,EAAQonE,SAAS,SAAS1wM,GAAG,OAAOoM,EAAEpM,KAAKwF,GAAG8jI,EAAQqnE,WAAW,SAAS3wM,GAAG,OAAOoM,EAAEpM,KAAK0F,GAAG4jI,EAAQsnE,aAAa,SAAS5wM,GAAG,OAAOoM,EAAEpM,KAAKyF,GAAG6jI,EAAQunE,WAAW,SAAS7wM,GAAG,OAAOoM,EAAEpM,KAAKyQ,GACzO64H,EAAQwnE,mBAAmB,SAAS9wM,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAI0B,GAAG1B,IAAI7C,GAAG6C,IAAI0F,GAAG1F,IAAIyF,GAAGzF,IAAIyQ,GAAGzQ,IAAID,GAAG,kBAAkBC,GAAG,OAAOA,IAAIA,EAAEq2K,WAAW94K,GAAGyC,EAAEq2K,WAAW/vK,GAAGtG,EAAEq2K,WAAW1wK,GAAG3F,EAAEq2K,WAAWn0G,GAAGliE,EAAEq2K,WAAWn5K,GAAG8C,EAAEq2K,WAAW/0K,GAAGtB,EAAEq2K,WAAWh5K,GAAG2C,EAAEq2K,WAAW/4K,GAAG0C,EAAEq2K,WAAWh1K,IAAIioI,EAAQynE,OAAO3kM,G,gBCPnU,IAAI4kM,EAAW,SAAU1nE,GACvB,aAEA,IAEIt7I,EAFAijN,EAAKhzM,OAAOgF,UACZiuM,EAASD,EAAGt2D,eAEZw2D,EAA4B,oBAAXpuM,OAAwBA,OAAS,GAClDquM,EAAiBD,EAAQnuM,UAAY,aACrCquM,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQn3C,aAAe,gBAE/C,SAASw3C,EAAOvjE,EAAKjhJ,EAAKG,GAOxB,OANA8Q,OAAO6L,eAAemkI,EAAKjhJ,EAAK,CAC9BG,MAAOA,EACP62B,YAAY,EACZD,cAAc,EACdykH,UAAU,IAELyF,EAAIjhJ,GAEb,IAEEwkN,EAAO,GAAI,IACX,MAAOzjN,GACPyjN,EAAS,SAASvjE,EAAKjhJ,EAAKG,GAC1B,OAAO8gJ,EAAIjhJ,GAAOG,GAItB,SAASie,EAAKqmM,EAASC,EAAShkN,EAAMikN,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQzuM,qBAAqB4uM,EAAYH,EAAUG,EAC/E1mM,EAAYlN,OAAO40H,OAAO++E,EAAe3uM,WACzC2F,EAAU,IAAIkpM,EAAQH,GAAe,IAMzC,OAFAxmM,EAAU4mM,QAsMZ,SAA0BN,EAAS/jN,EAAMkb,GACvC,IAAI6sC,EAAQu8J,EAEZ,OAAO,SAAgB3xH,EAAQpzF,GAC7B,GAAIwoD,IAAUw8J,EACZ,MAAM,IAAI9wM,MAAM,gCAGlB,GAAIs0C,IAAUy8J,EAAmB,CAC/B,GAAe,UAAX7xH,EACF,MAAMpzF,EAKR,OAAOklN,IAMT,IAHAvpM,EAAQy3E,OAASA,EACjBz3E,EAAQ3b,IAAMA,IAED,CACX,IAAImlN,EAAWxpM,EAAQwpM,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUxpM,GACnD,GAAIypM,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnBzpM,EAAQy3E,OAGVz3E,EAAQ4pM,KAAO5pM,EAAQ6pM,MAAQ7pM,EAAQ3b,SAElC,GAAuB,UAAnB2b,EAAQy3E,OAAoB,CACrC,GAAI5qC,IAAUu8J,EAEZ,MADAv8J,EAAQy8J,EACFtpM,EAAQ3b,IAGhB2b,EAAQ8pM,kBAAkB9pM,EAAQ3b,SAEN,WAAnB2b,EAAQy3E,QACjBz3E,EAAQ+pM,OAAO,SAAU/pM,EAAQ3b,KAGnCwoD,EAAQw8J,EAER,IAAIW,EAASC,EAASpB,EAAS/jN,EAAMkb,GACrC,GAAoB,WAAhBgqM,EAAOh4M,KAAmB,CAO5B,GAJA66C,EAAQ7sC,EAAQvb,KACZ6kN,EACAY,EAEAF,EAAO3lN,MAAQslN,EACjB,SAGF,MAAO,CACLplN,MAAOylN,EAAO3lN,IACdI,KAAMub,EAAQvb,MAGS,UAAhBulN,EAAOh4M,OAChB66C,EAAQy8J,EAGRtpM,EAAQy3E,OAAS,QACjBz3E,EAAQ3b,IAAM2lN,EAAO3lN,OA9QP8lN,CAAiBtB,EAAS/jN,EAAMkb,GAE7CuC,EAcT,SAAS0nM,EAASplN,EAAIwgJ,EAAKhhJ,GACzB,IACE,MAAO,CAAE2N,KAAM,SAAU3N,IAAKQ,EAAGmO,KAAKqyI,EAAKhhJ,IAC3C,MAAOc,GACP,MAAO,CAAE6M,KAAM,QAAS3N,IAAKc,IAhBjCu7I,EAAQl+H,KAAOA,EAoBf,IAAI4mM,EAAyB,iBACzBc,EAAyB,iBACzBb,EAAoB,YACpBC,EAAoB,YAIpBK,EAAmB,GAMvB,SAASV,KACT,SAASmB,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBA,EAAkB9B,GAAkB,WAClC,OAAOzjN,MAGT,IAAIwlN,EAAWl1M,OAAOyrI,eAClB0pE,EAA0BD,GAAYA,EAASA,EAAShrL,EAAO,MAC/DirL,GACAA,IAA4BnC,GAC5BC,EAAOt1M,KAAKw3M,EAAyBhC,KAGvC8B,EAAoBE,GAGtB,IAAIC,EAAKJ,EAA2BhwM,UAClC4uM,EAAU5uM,UAAYhF,OAAO40H,OAAOqgF,GAWtC,SAASI,EAAsBrwM,GAC7B,CAAC,OAAQ,QAAS,UAAU+wE,SAAQ,SAASqM,GAC3CmxH,EAAOvuM,EAAWo9E,GAAQ,SAASpzF,GACjC,OAAOU,KAAKokN,QAAQ1xH,EAAQpzF,SAkClC,SAASsmN,EAAcpoM,EAAWqoM,GAChC,SAASC,EAAOpzH,EAAQpzF,EAAKL,EAASC,GACpC,IAAI+lN,EAASC,EAAS1nM,EAAUk1E,GAASl1E,EAAWle,GACpD,GAAoB,UAAhB2lN,EAAOh4M,KAEJ,CACL,IAAI2mE,EAASqxI,EAAO3lN,IAChBE,EAAQo0E,EAAOp0E,MACnB,OAAIA,GACiB,kBAAVA,GACP+jN,EAAOt1M,KAAKzO,EAAO,WACdqmN,EAAY5mN,QAAQO,EAAMumN,SAASnmN,MAAK,SAASJ,GACtDsmN,EAAO,OAAQtmN,EAAOP,EAASC,MAC9B,SAASkB,GACV0lN,EAAO,QAAS1lN,EAAKnB,EAASC,MAI3B2mN,EAAY5mN,QAAQO,GAAOI,MAAK,SAASomN,GAI9CpyI,EAAOp0E,MAAQwmN,EACf/mN,EAAQ20E,MACP,SAASn0E,GAGV,OAAOqmN,EAAO,QAASrmN,EAAOR,EAASC,MAvBzCA,EAAO+lN,EAAO3lN,KA4BlB,IAAI2mN,EAgCJjmN,KAAKokN,QA9BL,SAAiB1xH,EAAQpzF,GACvB,SAAS4mN,IACP,OAAO,IAAIL,GAAY,SAAS5mN,EAASC,GACvC4mN,EAAOpzH,EAAQpzF,EAAKL,EAASC,MAIjC,OAAO+mN,EAaLA,EAAkBA,EAAgBrmN,KAChCsmN,EAGAA,GACEA,KAkHV,SAASvB,EAAoBF,EAAUxpM,GACrC,IAAIy3E,EAAS+xH,EAASpvM,SAAS4F,EAAQy3E,QACvC,GAAIA,IAAWryF,EAAW,CAKxB,GAFA4a,EAAQwpM,SAAW,KAEI,UAAnBxpM,EAAQy3E,OAAoB,CAE9B,GAAI+xH,EAASpvM,SAAT,SAGF4F,EAAQy3E,OAAS,SACjBz3E,EAAQ3b,IAAMe,EACdskN,EAAoBF,EAAUxpM,GAEP,UAAnBA,EAAQy3E,QAGV,OAAOkyH,EAIX3pM,EAAQy3E,OAAS,QACjBz3E,EAAQ3b,IAAM,IAAIunC,UAChB,kDAGJ,OAAO+9K,EAGT,IAAIK,EAASC,EAASxyH,EAAQ+xH,EAASpvM,SAAU4F,EAAQ3b,KAEzD,GAAoB,UAAhB2lN,EAAOh4M,KAIT,OAHAgO,EAAQy3E,OAAS,QACjBz3E,EAAQ3b,IAAM2lN,EAAO3lN,IACrB2b,EAAQwpM,SAAW,KACZG,EAGT,IAAIrlN,EAAO0lN,EAAO3lN,IAElB,OAAMC,EAOFA,EAAKG,MAGPub,EAAQwpM,EAAS0B,YAAc5mN,EAAKC,MAGpCyb,EAAQwmD,KAAOgjJ,EAAS2B,QAQD,WAAnBnrM,EAAQy3E,SACVz3E,EAAQy3E,OAAS,OACjBz3E,EAAQ3b,IAAMe,GAUlB4a,EAAQwpM,SAAW,KACZG,GANErlN,GA3BP0b,EAAQy3E,OAAS,QACjBz3E,EAAQ3b,IAAM,IAAIunC,UAAU,oCAC5B5rB,EAAQwpM,SAAW,KACZG,GAoDX,SAASyB,EAAaC,GACpB,IAAI1sJ,EAAQ,CAAE2sJ,OAAQD,EAAK,IAEvB,KAAKA,IACP1sJ,EAAM4sJ,SAAWF,EAAK,IAGpB,KAAKA,IACP1sJ,EAAM6sJ,WAAaH,EAAK,GACxB1sJ,EAAM8sJ,SAAWJ,EAAK,IAGxBtmN,KAAK2mN,WAAWr5M,KAAKssD,GAGvB,SAASgtJ,EAAchtJ,GACrB,IAAIqrJ,EAASrrJ,EAAMitJ,YAAc,GACjC5B,EAAOh4M,KAAO,gBACPg4M,EAAO3lN,IACds6D,EAAMitJ,WAAa5B,EAGrB,SAASd,EAAQH,GAIfhkN,KAAK2mN,WAAa,CAAC,CAAEJ,OAAQ,SAC7BvC,EAAY39H,QAAQggI,EAAcrmN,MAClCA,KAAKurD,OAAM,GA8Bb,SAAS/wB,EAAOssL,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASrD,GAC9B,GAAIsD,EACF,OAAOA,EAAe94M,KAAK64M,GAG7B,GAA6B,oBAAlBA,EAASrlJ,KAClB,OAAOqlJ,EAGT,IAAK18K,MAAM08K,EAAS94M,QAAS,CAC3B,IAAIF,GAAK,EAAG2zD,EAAO,SAASA,IAC1B,OAAS3zD,EAAIg5M,EAAS94M,QACpB,GAAIu1M,EAAOt1M,KAAK64M,EAAUh5M,GAGxB,OAFA2zD,EAAKjiE,MAAQsnN,EAASh5M,GACtB2zD,EAAK/hE,MAAO,EACL+hE,EAOX,OAHAA,EAAKjiE,MAAQa,EACbohE,EAAK/hE,MAAO,EAEL+hE,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAM+iJ,GAIjB,SAASA,IACP,MAAO,CAAEhlN,MAAOa,EAAWX,MAAM,GA+MnC,OA5mBA2lN,EAAkB/vM,UAAYowM,EAAGjyM,YAAc6xM,EAC/CA,EAA2B7xM,YAAc4xM,EACzCA,EAAkBrjD,YAAc6hD,EAC9ByB,EACA1B,EACA,qBAaFjoE,EAAQqrE,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOxzM,YAClD,QAAOyzM,IACHA,IAAS7B,GAG2B,uBAAnC6B,EAAKllD,aAAeklD,EAAK3sM,QAIhCohI,EAAQwrE,KAAO,SAASF,GAQtB,OAPI32M,OAAOwrI,eACTxrI,OAAOwrI,eAAemrE,EAAQ3B,IAE9B2B,EAAOz2M,UAAY80M,EACnBzB,EAAOoD,EAAQrD,EAAmB,sBAEpCqD,EAAO3xM,UAAYhF,OAAO40H,OAAOwgF,GAC1BuB,GAOTtrE,EAAQyrE,MAAQ,SAAS9nN,GACvB,MAAO,CAAEymN,QAASzmN,IAsEpBqmN,EAAsBC,EAActwM,WACpCswM,EAActwM,UAAUouM,GAAuB,WAC7C,OAAO1jN,MAET27I,EAAQiqE,cAAgBA,EAKxBjqE,EAAQ0rE,MAAQ,SAASvD,EAASC,EAAShkN,EAAMikN,EAAa6B,QACxC,IAAhBA,IAAwBA,EAAclmN,SAE1C,IAAI0kK,EAAO,IAAIuhD,EACbnoM,EAAKqmM,EAASC,EAAShkN,EAAMikN,GAC7B6B,GAGF,OAAOlqE,EAAQqrE,oBAAoBjD,GAC/B1/C,EACAA,EAAK5iG,OAAO7hE,MAAK,SAASg0E,GACxB,OAAOA,EAAOl0E,KAAOk0E,EAAOp0E,MAAQ6kK,EAAK5iG,WAuKjDkkJ,EAAsBD,GAEtB7B,EAAO6B,EAAI9B,EAAmB,aAO9B8B,EAAGjC,GAAkB,WACnB,OAAOzjN,MAGT0lN,EAAGl3M,SAAW,WACZ,MAAO,sBAkCTmtI,EAAQtuG,KAAO,SAAShkB,GACtB,IAAIgkB,EAAO,GACX,IAAK,IAAIhuC,KAAOgqB,EACdgkB,EAAK//B,KAAKjO,GAMZ,OAJAguC,EAAK4kE,UAIE,SAASxwC,IACd,KAAOp0B,EAAKr/B,QAAQ,CAClB,IAAI3O,EAAMguC,EAAKy/B,MACf,GAAIztE,KAAOgqB,EAGT,OAFAo4C,EAAKjiE,MAAQH,EACboiE,EAAK/hE,MAAO,EACL+hE,EAQX,OADAA,EAAK/hE,MAAO,EACL+hE,IAsCXk6E,EAAQnhH,OAASA,EAMjB2pL,EAAQ7uM,UAAY,CAClB7B,YAAa0wM,EAEb54J,MAAO,SAAS+7J,GAcd,GAbAtnN,KAAKosG,KAAO,EACZpsG,KAAKyhE,KAAO,EAGZzhE,KAAK6kN,KAAO7kN,KAAK8kN,MAAQzkN,EACzBL,KAAKN,MAAO,EACZM,KAAKykN,SAAW,KAEhBzkN,KAAK0yF,OAAS,OACd1yF,KAAKV,IAAMe,EAEXL,KAAK2mN,WAAWtgI,QAAQugI,IAEnBU,EACH,IAAK,IAAI/sM,KAAQva,KAEQ,MAAnBua,EAAK6qB,OAAO,IACZm+K,EAAOt1M,KAAKjO,KAAMua,KACjB6vB,OAAO7vB,EAAK1M,MAAM,MACrB7N,KAAKua,GAAQla,IAMrB+4C,KAAM,WACJp5C,KAAKN,MAAO,EAEZ,IACI6nN,EADYvnN,KAAK2mN,WAAW,GACLE,WAC3B,GAAwB,UAApBU,EAAWt6M,KACb,MAAMs6M,EAAWjoN,IAGnB,OAAOU,KAAKwnN,MAGdzC,kBAAmB,SAAS0C,GAC1B,GAAIznN,KAAKN,KACP,MAAM+nN,EAGR,IAAIxsM,EAAUjb,KACd,SAAS0nN,EAAOC,EAAKC,GAYnB,OAXA3C,EAAOh4M,KAAO,QACdg4M,EAAO3lN,IAAMmoN,EACbxsM,EAAQwmD,KAAOkmJ,EAEXC,IAGF3sM,EAAQy3E,OAAS,OACjBz3E,EAAQ3b,IAAMe,KAGNunN,EAGZ,IAAK,IAAI95M,EAAI9N,KAAK2mN,WAAW34M,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI8rD,EAAQ55D,KAAK2mN,WAAW74M,GACxBm3M,EAASrrJ,EAAMitJ,WAEnB,GAAqB,SAAjBjtJ,EAAM2sJ,OAIR,OAAOmB,EAAO,OAGhB,GAAI9tJ,EAAM2sJ,QAAUvmN,KAAKosG,KAAM,CAC7B,IAAIy7G,EAAWtE,EAAOt1M,KAAK2rD,EAAO,YAC9BkuJ,EAAavE,EAAOt1M,KAAK2rD,EAAO,cAEpC,GAAIiuJ,GAAYC,EAAY,CAC1B,GAAI9nN,KAAKosG,KAAOxyC,EAAM4sJ,SACpB,OAAOkB,EAAO9tJ,EAAM4sJ,UAAU,GACzB,GAAIxmN,KAAKosG,KAAOxyC,EAAM6sJ,WAC3B,OAAOiB,EAAO9tJ,EAAM6sJ,iBAGjB,GAAIoB,GACT,GAAI7nN,KAAKosG,KAAOxyC,EAAM4sJ,SACpB,OAAOkB,EAAO9tJ,EAAM4sJ,UAAU,OAG3B,KAAIsB,EAMT,MAAM,IAAIt0M,MAAM,0CALhB,GAAIxT,KAAKosG,KAAOxyC,EAAM6sJ,WACpB,OAAOiB,EAAO9tJ,EAAM6sJ,gBAU9BzB,OAAQ,SAAS/3M,EAAM3N,GACrB,IAAK,IAAIwO,EAAI9N,KAAK2mN,WAAW34M,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI8rD,EAAQ55D,KAAK2mN,WAAW74M,GAC5B,GAAI8rD,EAAM2sJ,QAAUvmN,KAAKosG,MACrBm3G,EAAOt1M,KAAK2rD,EAAO,eACnB55D,KAAKosG,KAAOxyC,EAAM6sJ,WAAY,CAChC,IAAIsB,EAAenuJ,EACnB,OAIAmuJ,IACU,UAAT96M,GACS,aAATA,IACD86M,EAAaxB,QAAUjnN,GACvBA,GAAOyoN,EAAatB,aAGtBsB,EAAe,MAGjB,IAAI9C,EAAS8C,EAAeA,EAAalB,WAAa,GAItD,OAHA5B,EAAOh4M,KAAOA,EACdg4M,EAAO3lN,IAAMA,EAETyoN,GACF/nN,KAAK0yF,OAAS,OACd1yF,KAAKyhE,KAAOsmJ,EAAatB,WAClB7B,GAGF5kN,KAAKm+E,SAAS8mI,IAGvB9mI,SAAU,SAAS8mI,EAAQyB,GACzB,GAAoB,UAAhBzB,EAAOh4M,KACT,MAAMg4M,EAAO3lN,IAcf,MAXoB,UAAhB2lN,EAAOh4M,MACS,aAAhBg4M,EAAOh4M,KACTjN,KAAKyhE,KAAOwjJ,EAAO3lN,IACM,WAAhB2lN,EAAOh4M,MAChBjN,KAAKwnN,KAAOxnN,KAAKV,IAAM2lN,EAAO3lN,IAC9BU,KAAK0yF,OAAS,SACd1yF,KAAKyhE,KAAO,OACa,WAAhBwjJ,EAAOh4M,MAAqBy5M,IACrC1mN,KAAKyhE,KAAOilJ,GAGP9B,GAGTj3I,OAAQ,SAAS84I,GACf,IAAK,IAAI34M,EAAI9N,KAAK2mN,WAAW34M,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI8rD,EAAQ55D,KAAK2mN,WAAW74M,GAC5B,GAAI8rD,EAAM6sJ,aAAeA,EAGvB,OAFAzmN,KAAKm+E,SAASvkB,EAAMitJ,WAAYjtJ,EAAM8sJ,UACtCE,EAAchtJ,GACPgrJ,IAKb,MAAS,SAAS2B,GAChB,IAAK,IAAIz4M,EAAI9N,KAAK2mN,WAAW34M,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI8rD,EAAQ55D,KAAK2mN,WAAW74M,GAC5B,GAAI8rD,EAAM2sJ,SAAWA,EAAQ,CAC3B,IAAItB,EAASrrJ,EAAMitJ,WACnB,GAAoB,UAAhB5B,EAAOh4M,KAAkB,CAC3B,IAAI+6M,EAAS/C,EAAO3lN,IACpBsnN,EAAchtJ,GAEhB,OAAOouJ,GAMX,MAAM,IAAIx0M,MAAM,0BAGlBy0M,cAAe,SAASnB,EAAUX,EAAYC,GAa5C,OAZApmN,KAAKykN,SAAW,CACdpvM,SAAUmlB,EAAOssL,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhBpmN,KAAK0yF,SAGP1yF,KAAKV,IAAMe,GAGNukN,IAQJjpE,EA7sBM,CAotBgBD,EAAOC,SAGtC,IACEusE,mBAAqB7E,EACrB,MAAO8E,GAUPtjD,SAAS,IAAK,yBAAdA,CAAwCw+C,K,iBC1uB1C,YAQA3nE,EAAOC,QAAU,SAAuBysE,GACpC,IAAIzsE,EAAU,GACD21B,EAAG11B,EAAQ,IAAiB21B,EAAG31B,EAAQ,GAASpsI,EAAEosI,EAAQ,IAAa,SAASxpI,EAAEC,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAErS,UAAU8N,OAAOuE,IAAID,GAAG,WAAWm4J,mBAAmBvqK,UAAUqS,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,iHACnS,IAAIi+J,EAAGgB,EAAG+X,mDAAmD1Y,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMG,EAAG,MAAMC,EAAG,MAAME,EAAG,MAAMC,EAAG,MAAMG,EAAG,MAAMC,EAAG,MAAME,EAAG,MAAMC,EAAG,MAAM8Y,EAAG,MAAM3mK,EAAG,MAAM8mK,EAAG,MAAMC,EAAG,MAAMC,EAAG,MACvM,GAAG,oBAAoB31K,QAAQA,OAAO4yK,IAAI,CAAC,IAAIrvK,EAAEvD,OAAO4yK,IAAIpX,EAAGj4J,EAAE,iBAAiBk4J,EAAGl4J,EAAE,gBAAgBm4J,EAAGn4J,EAAE,kBAAkBs4J,EAAGt4J,EAAE,qBAAqBu4J,EAAGv4J,EAAE,kBAAkBy4J,EAAGz4J,EAAE,kBAAkB04J,EAAG14J,EAAE,iBAAiB64J,EAAG74J,EAAE,qBAAqB84J,EAAG94J,EAAE,kBAAkBg5J,EAAGh5J,EAAE,uBAAuBi5J,EAAGj5J,EAAE,cAAc+xK,EAAG/xK,EAAE,cAAcoL,EAAGpL,EAAE,eAAeA,EAAE,eAAekyK,EAAGlyK,EAAE,0BAA0BmyK,EAAGnyK,EAAE,mBAAmBoyK,EAAGpyK,EAAE,uBAAuB,IAAI4jJ,EAAG,oBAAoBnnJ,QAAQA,OAAOC,SACjf,SAASsnB,EAAGtqB,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEkqJ,GAAIlqJ,EAAEkqJ,IAAKlqJ,EAAE,eAA0CA,EAAE,KACvH,SAAS24K,EAAG34K,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE2vJ,aAAa3vJ,EAAEkI,MAAM,KAAK,GAAG,kBAAkBlI,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKy+J,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKK,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKQ,EAAG,MAAM,WAAW,KAAKE,EAAG,MAAM,eAAe,GAAG,kBAAkBt/J,EAAE,OAAOA,EAAEq2K,UAAU,KAAKrX,EAAG,OAAOh/J,EAAE2vJ,aAAa,WAAW,YAAY,KAAKoP,EAAG,OAAO/+J,EAAEg7E,SAAS20E,aAAa,WAAW,YAAY,KAAKwP,EAAG,IAAIl/J,EAAED,EAAEijC,OACnd,OAD0dhjC,EAAEA,EAAE0vJ,aAAa1vJ,EAAEiI,MAAM,GAC5elI,EAAE2vJ,cAAc,KAAK1vJ,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAKs/J,EAAG,OAAOoZ,EAAG34K,EAAEpF,MAAM,KAAK8W,EAAG,OAAOinK,EAAG34K,EAAEm6K,SAAS,KAAK9B,EAAGp4K,EAAED,EAAE03K,SAAS13K,EAAEA,EAAE23K,MAAM,IAAI,OAAOgB,EAAG34K,EAAEC,IAAI,MAAMC,KAAK,OAAO,KAAK,SAAS04K,EAAG54K,GAAG,IAAIC,EAAED,EAAEE,EAAEF,EAAE,GAAGA,EAAEk/I,UAAU,KAAKj/I,EAAE+7I,QAAQ/7I,EAAEA,EAAE+7I,WAAW,CAACh8I,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAASqxJ,SAAcnxJ,EAAED,EAAE+7I,QAAQh8I,EAAEC,EAAE+7I,aAAah8I,GAAG,OAAO,IAAIC,EAAEi6K,IAAIh6K,EAAE,KAAK,SAAS24K,EAAG74K,GAAG,GAAG44K,EAAG54K,KAAKA,EAAE,MAAMmB,MAAMpB,EAAE,MAC5Y,SAAS+4K,EAAG94K,GAAG,IAAIC,EAAED,EAAEk/I,UAAU,IAAIj/I,EAAE,CAAS,GAAG,QAAXA,EAAE24K,EAAG54K,IAAe,MAAMmB,MAAMpB,EAAE,MAAM,OAAOE,IAAID,EAAE,KAAKA,EAAE,IAAI,IAAIE,EAAEF,EAAEwF,EAAEvF,IAAI,CAAC,IAAIyB,EAAExB,EAAE87I,OAAO,GAAG,OAAOt6I,EAAE,MAAM,IAAI+D,EAAE/D,EAAEw9I,UAAU,GAAG,OAAOz5I,EAAE,CAAY,GAAG,QAAdD,EAAE9D,EAAEs6I,QAAmB,CAAC97I,EAAEsF,EAAE,SAAS,MAAM,GAAG9D,EAAE4mB,QAAQ7iB,EAAE6iB,MAAM,CAAC,IAAI7iB,EAAE/D,EAAE4mB,MAAM7iB,GAAG,CAAC,GAAGA,IAAIvF,EAAE,OAAO24K,EAAGn3K,GAAG1B,EAAE,GAAGyF,IAAID,EAAE,OAAOqzK,EAAGn3K,GAAGzB,EAAEwF,EAAEA,EAAEq3I,QAAQ,MAAM37I,MAAMpB,EAAE,MAAO,GAAGG,EAAE87I,SAASx2I,EAAEw2I,OAAO97I,EAAEwB,EAAE8D,EAAEC,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGC,EAAEjE,EAAE4mB,MAAM3iB,GAAG,CAAC,GAAGA,IAAIzF,EAAE,CAACwF,GAAE,EAAGxF,EAAEwB,EAAE8D,EAAEC,EAAE,MAAM,GAAGE,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAE9D,EAAExB,EAAEuF,EAAE,MAAME,EAAEA,EAAEm3I,QAAQ,IAAIp3I,EAAE,CAAC,IAAIC,EAAEF,EAAE6iB,MAAM3iB,GAAG,CAAC,GAAGA,IAC5fzF,EAAE,CAACwF,GAAE,EAAGxF,EAAEuF,EAAED,EAAE9D,EAAE,MAAM,GAAGiE,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAEC,EAAEvF,EAAEwB,EAAE,MAAMiE,EAAEA,EAAEm3I,QAAQ,IAAIp3I,EAAE,MAAMvE,MAAMpB,EAAE,OAAQ,GAAGG,EAAEg/I,YAAY15I,EAAE,MAAMrE,MAAMpB,EAAE,MAAO,GAAG,IAAIG,EAAEg6K,IAAI,MAAM/4K,MAAMpB,EAAE,MAAM,OAAOG,EAAE+7I,UAAU7pD,UAAUlyF,EAAEF,EAAEC,EAAE,SAAS84K,EAAG/4K,GAAW,KAARA,EAAE84K,EAAG94K,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAEi6K,KAAK,IAAIj6K,EAAEi6K,IAAI,OAAOj6K,EAAE,GAAGA,EAAEqoB,MAAMroB,EAAEqoB,MAAM0zH,OAAO/7I,EAAEA,EAAEA,EAAEqoB,UAAU,CAAC,GAAGroB,IAAID,EAAE,MAAM,MAAMC,EAAE68I,SAAS,CAAC,IAAI78I,EAAE+7I,QAAQ/7I,EAAE+7I,SAASh8I,EAAE,OAAO,KAAKC,EAAEA,EAAE+7I,OAAO/7I,EAAE68I,QAAQd,OAAO/7I,EAAE+7I,OAAO/7I,EAAEA,EAAE68I,SAAS,OAAO,KACvL,SAASm8B,EAAGj5K,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAEk/I,UAAU,OAAOj/I,GAAG,CAAC,GAAGA,IAAID,GAAGC,IAAIC,EAAE,OAAM,EAAGD,EAAEA,EAAE+7I,OAAO,OAAM,EACjX,IAI8VqjC,EAJ1VnG,EAAG68B,EAAcx2D,kBAAkB45B,EAAG48B,EAAcv2D,mBAAmB45B,EAAG28B,EAAcr2D,oBAAoB25B,EAAG08B,EAAc/1D,iBAAiBs5B,EAAGy8B,EAAc71D,iBAAiBq5B,EAAGw8B,EAAcl6D,eAAe29B,EAAGu8B,EAAcl4D,mBAAmB67B,EAAGq8B,EAAcl2D,wBAAwB85B,EAAGo8B,EAAcx3D,cAAck7B,EAAGs8B,EAAc51D,qBAAqBy5B,EAAGm8B,EAAcn2D,mBAAmBm6B,EAAGg8B,EAAc93D,gBAAgBg8B,EAAG87B,EAAc73D,cAAck8B,EAAG27B,EAAc53D,UAAUk8B,EAAG07B,EAAc/3D,kBACtfs8B,EAAGy7B,EAAch4D,iBAAiB28B,EAAGq7B,EAAcC,oBAAoBz7B,EAAGw7B,EAAcE,kBAAkBt7B,EAAGo7B,EAAcG,oBAAoBr7B,GAAGk7B,EAAcI,0BAA0Bp7B,GAAGg7B,EAAcK,aAAaj7B,GAAG46B,EAAcM,yBAAyB/6B,GAAGy6B,EAAcO,wBAAwBr8K,GAAG87K,EAAc91D,mBAAmBs7B,GAAGw6B,EAAcQ,sBAAsBv8K,GAAG+7K,EAAcS,cAAc/6B,GAAGs6B,EAAcU,gBAAgBj7B,GAAGu6B,EAAcW,eAAeh7B,GAAGq6B,EAAcY,gBACve76B,GAAGi6B,EAAca,uBAAuB56B,GAAG+5B,EAAcc,oBAAoBnwH,GAAGqvH,EAAce,0BAA0B76B,GAAG85B,EAAc35D,YAAY8/B,GAAG65B,EAAc33D,uBAAuB+9B,GAAG45B,EAAcgB,iBAAiB36B,GAAG25B,EAAcj2D,YAAYu8B,GAAG05B,EAAcj3D,aAAaw9B,GAAGy5B,EAAcp5D,aAAaigC,GAAGm5B,EAAcz3D,wBAAwBntI,GAAG4kM,EAAc/4D,YAAYkgC,GAAG64B,EAAc13D,yBAAyB8+B,GAAG44B,EAAciB,iBAAiB55B,GAAG24B,EAAc32D,aAAak+B,GAAGy4B,EAAcz2D,iBACzfj1H,GAAG0rL,EAAc12D,eAAe2+B,GAAG+3B,EAAckB,mBAAmBh5B,GAAG83B,EAAc31D,eAAeg+B,GAAG23B,EAAcmB,cAAc74B,GAAG03B,EAAcoB,wBAAwB74B,GAAGy3B,EAAcqB,+BAA+B74B,GAAGw3B,EAAcsB,0BAA0B74B,GAAGu3B,EAAcuB,yBAAyB74B,GAAGs3B,EAAcwB,oBAAoB74B,GAAGq3B,EAAcyB,wBAAwB74B,GAAGo3B,EAAc0B,mBAAmB74B,GAAGm3B,EAAc2B,uBAAuB74B,GAAGk3B,EAAc4B,0BAC5d74B,GAAGi3B,EAAc6B,2BAA2B74B,GAAGg3B,EAAc8B,yBAAyB74B,GAAG+2B,EAAc+B,wBAAwB74B,GAAG82B,EAAcgC,gBAAgB74B,GAAG62B,EAAciC,oBAAoBjmB,GAAGgkB,EAAckC,+CAA+C94B,GAAG42B,EAAcmC,wBAAwB94B,GAAG22B,EAAcoC,+BAAkC,SAAS74B,GAAGt/K,GAAG,QAAG,IAASq/K,EAAG,IAAI,MAAMl+K,QAAS,MAAMjB,GAAG,IAAID,EAAEC,EAAE25K,MAAMtpH,OAAOvB,MAAM,gBAAgBqwH,EAAGp/K,GAAGA,EAAE,IAAI,GAAG,MAAM,KAAKo/K,EAAGr/K,EAAE,IAAIu/K,IAAG,EAC5e,SAASC,GAAGx/K,EAAEC,GAAG,IAAID,GAAGu/K,GAAG,MAAM,GAAGA,IAAG,EAAG,IAAIr/K,EAAEiB,MAAM64K,kBAAkB74K,MAAM64K,uBAAkB,EAAO,IAAI,GAAG/5K,EAAE,GAAGA,EAAE,WAAW,MAAMkB,SAAUlD,OAAO6L,eAAe7J,EAAEgD,UAAU,QAAQ,CAACnC,IAAI,WAAW,MAAMK,WAAY,kBAAkBioI,SAASA,QAAQpJ,UAAU,CAAC,IAAIoJ,QAAQpJ,UAAU//H,EAAE,IAAI,MAAMiiE,GAAG,IAAI18D,EAAE08D,EAAEknE,QAAQpJ,UAAUhgI,EAAE,GAAGC,OAAO,CAAC,IAAIA,EAAErE,OAAO,MAAMsmE,GAAG18D,EAAE08D,EAAEliE,EAAEpE,KAAKqE,EAAEgD,eAAe,CAAC,IAAI,MAAM9B,QAAS,MAAM+gE,GAAG18D,EAAE08D,EAAEliE,KAAK,MAAMkiE,GAAG,GAAGA,GAAG18D,GAAG,kBAAkB08D,EAAE23G,MAAM,CAAC,IAAI,IAAIn4K,EAAEwgE,EAAE23G,MAAMrpH,MAAM,MACnf/qD,EAAED,EAAEq0K,MAAMrpH,MAAM,MAAM9qD,EAAEhE,EAAE/F,OAAO,EAAEgK,EAAEF,EAAE9J,OAAO,EAAE,GAAG+J,GAAG,GAAGC,GAAGjE,EAAEgE,KAAKD,EAAEE,IAAIA,IAAI,KAAK,GAAGD,GAAG,GAAGC,EAAED,IAAIC,IAAI,GAAGjE,EAAEgE,KAAKD,EAAEE,GAAG,CAAC,GAAG,IAAID,GAAG,IAAIC,EAAG,GAAG,GAAGD,IAAQ,IAAJC,GAASjE,EAAEgE,KAAKD,EAAEE,GAAG,MAAM,KAAKjE,EAAEgE,GAAGyrD,QAAQ,WAAW,cAAc,GAAGzrD,GAAG,GAAGC,GAAG,QAD3H,QAC2I45K,IAAG,EAAGp+K,MAAM64K,kBAAkB95K,EAAE,OAAOF,EAAEA,EAAEA,EAAE2vJ,aAAa3vJ,EAAEkI,KAAK,IAAIo3K,GAAGt/K,GAAG,GAAG,IAAIy/K,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG3/K,GAAG,MAAM,CAACoyF,QAAQpyF,GAAG,SAASoM,GAAEpM,GAAG,EAAE0/K,KAAK1/K,EAAEoyF,QAAQqtF,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MAAM,SAASthB,GAAEp+J,EAAEC,GAAGy/K,KAAKD,GAAGC,IAAI1/K,EAAEoyF,QAAQpyF,EAAEoyF,QAAQnyF,EACzd,IAAI2/K,GAAG,GAAG55E,GAAE25E,GAAGC,IAAIthB,GAAEqhB,IAAG,GAAIkS,GAAGjS,GAAG,SAASC,GAAG7/K,EAAEC,GAAG,IAAIC,EAAEF,EAAEpF,KAAK60J,aAAa,IAAIvvJ,EAAE,OAAO0/K,GAAG,IAAIp6K,EAAExF,EAAEi8I,UAAU,GAAGz2I,GAAGA,EAAEuuL,8CAA8C9zL,EAAE,OAAOuF,EAAEwuL,0CAA0C,IAASvuL,EAAL/D,EAAE,GAAK,IAAI+D,KAAKvF,EAAEwB,EAAE+D,GAAGxF,EAAEwF,GAAoH,OAAjHD,KAAIxF,EAAEA,EAAEi8I,WAAY83C,4CAA4C9zL,EAAED,EAAEg0L,0CAA0CtyL,GAAUA,EAAE,SAASi9J,GAAE3+J,GAAyB,OAAO,QAA7BA,EAAEA,EAAEuvJ,yBAAmC,IAASvvJ,EAAE,SAAS8/K,KAAK1zK,GAAEkyJ,IAAGlyJ,GAAE45F,IACzc,SAASpnF,GAAG5e,EAAEC,EAAEC,GAAG,GAAG8lG,GAAE5T,UAAUwtF,GAAG,MAAMz+K,MAAMpB,EAAE,MAAMq+J,GAAEp4D,GAAE/lG,GAAGm+J,GAAEE,GAAEp+J,GAAG,SAAS4e,GAAG9e,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEi8I,UAAgC,GAAtBj8I,EAAEC,EAAEsvJ,kBAAqB,oBAAoB/pJ,EAAEgxJ,gBAAgB,OAAOt2J,EAAwB,IAAI,IAAIwB,KAA9B8D,EAAEA,EAAEgxJ,kBAAiC,KAAK90J,KAAK1B,GAAG,MAAMmB,MAAMpB,EAAE,IAAI44K,EAAG14K,IAAI,UAAUyB,IAAI,OAAOu9J,EAAG,GAAG/+J,EAAEsF,GAAG,SAASy6K,GAAGjgL,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEi8I,YAAYj8I,EAAEs0L,2CAA2C1U,GAAGiS,GAAG7rF,GAAE5T,QAAQgsE,GAAEp4D,GAAEhmG,GAAGo+J,GAAEE,GAAEA,GAAElsE,UAAe,EAC1Z,SAAS8tF,GAAGlgL,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEi8I,UAAU,IAAIz2I,EAAE,MAAMrE,MAAMpB,EAAE,MAAMG,GAAGF,EAAE8e,GAAG9e,EAAEC,EAAE4xL,IAAIrsL,EAAE8uL,0CAA0Ct0L,EAAEoM,GAAEkyJ,IAAGlyJ,GAAE45F,IAAGo4D,GAAEp4D,GAAEhmG,IAAIoM,GAAEkyJ,IAAGF,GAAEE,GAAEp+J,GAAG,IAAIigL,GAAG,KAAKC,GAAG,MAAuBC,EAAfljL,EAAEygJ,gBAAkB,IAAI0iC,GAAG,EAAE/+B,GAAE,EACjN,SAASg/B,GAAGvgL,GAAG,GAAG,KAAK,EAAEA,GAAG,OAAOuhJ,GAAE,GAAG,EAAE,GAAG,KAAK,EAAEvhJ,GAAG,OAAOuhJ,GAAE,GAAG,EAAE,GAAG,KAAK,EAAEvhJ,GAAG,OAAOuhJ,GAAE,GAAG,EAAE,IAAIthJ,EAAE,GAAGD,EAAE,OAAG,IAAIC,GAASshJ,GAAE,GAAGthJ,GAAK,KAAO,GAAFD,IAAauhJ,GAAE,GAAG,IAAc,KAAXthJ,EAAE,IAAID,IAAkBuhJ,GAAE,GAAGthJ,GAAK,KAAO,IAAFD,IAAcuhJ,GAAE,EAAE,KAAgB,KAAZthJ,EAAE,KAAKD,IAAkBuhJ,GAAE,EAAEthJ,GAAK,KAAO,KAAFD,IAAeuhJ,GAAE,EAAE,MAAoB,KAAfthJ,EAAE,QAAQD,IAAkBuhJ,GAAE,EAAEthJ,GAAkB,KAAhBA,EAAE,SAASD,IAAkBuhJ,GAAE,EAAEthJ,GAAO,SAAFD,GAAkBuhJ,GAAE,EAAE,UAAY,KAAO,UAAFvhJ,IAAoBuhJ,GAAE,EAAE,WAA2B,KAAjBthJ,EAAE,UAAUD,IAAkBuhJ,GAAE,EAAEthJ,GAAK,KAAK,WAAWD,IAAUuhJ,GAAE,EAAE,aACjfA,GAAE,EAASvhJ,GACX,SAAS0gL,GAAG1gL,EAAEC,GAAG,IAAIC,EAAEF,EAAEsjL,aAAa,GAAG,IAAIpjL,EAAE,OAAOqhJ,GAAE,EAAE,IAAI/7I,EAAE,EAAE9D,EAAE,EAAE+D,EAAEzF,EAAEujL,aAAa79K,EAAE1F,EAAEwjL,eAAe79K,EAAE3F,EAAEyjL,YAAY,GAAG,IAAIh+K,EAAED,EAAEC,EAAE/D,EAAE6/I,GAAE,QAAQ,GAAiB,KAAd97I,EAAI,UAAFvF,GAAkB,CAAC,IAAIgiE,EAAEz8D,GAAGC,EAAE,IAAIw8D,GAAG18D,EAAE+6K,GAAGr+G,GAAGxgE,EAAE6/I,IAAS,KAAL57I,GAAGF,KAAUD,EAAE+6K,GAAG56K,GAAGjE,EAAE6/I,SAAgB,KAAP97I,EAAEvF,GAAGwF,IAASF,EAAE+6K,GAAG96K,GAAG/D,EAAE6/I,IAAG,IAAI57I,IAAIH,EAAE+6K,GAAG56K,GAAGjE,EAAE6/I,IAAG,GAAG,IAAI/7I,EAAE,OAAO,EAAqC,GAAxBA,EAAEtF,IAAI,GAAjBsF,EAAE,GAAGm7K,GAAGn7K,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAIvF,GAAGA,IAAIuF,GAAG,KAAKvF,EAAEyF,GAAG,CAAO,GAAN66K,GAAGtgL,GAAMyB,GAAG6/I,GAAE,OAAOthJ,EAAEshJ,GAAE7/I,EAAqB,GAAG,KAAtBzB,EAAED,EAAE2jL,gBAAwB,IAAI3jL,EAAEA,EAAE4jL,cAAc3jL,GAAGuF,EAAE,EAAEvF,GAAcyB,EAAE,IAAbxB,EAAE,GAAGygL,GAAG1gL,IAAUuF,GAAGxF,EAAEE,GAAGD,IAAIyB,EAAE,OAAO8D,EAC1e,SAASo7K,GAAG5gL,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEsjL,cAAsCtjL,EAAI,WAAFA,EAAa,WAAW,EAAE,SAAS6gL,GAAG7gL,EAAEC,GAAG,OAAOD,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAE8gL,GAAG,IAAI7gL,IAAS4gL,GAAG,GAAG5gL,GAAGD,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAE8gL,GAAG,KAAK7gL,IAAS4gL,GAAG,EAAE5gL,GAAGD,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAE8gL,GAAG,MAAM7gL,MAA4B,KAAjBD,EAAE8gL,GAAG,SAAS7gL,MAAWD,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBC,EAAE6gL,GAAG,WAAW7gL,MAAWA,EAAE,WAAWA,EAAE,MAAMkB,MAAMpB,EAAE,IAAIC,IAAK,SAAS8gL,GAAG9gL,GAAG,OAAOA,GAAGA,EAAE,SAAS+gL,GAAG/gL,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAE,GAAGA,EAAEA,IAAID,EAAEhF,KAAK+E,GAAG,OAAOC,EACrd,SAAS+gL,GAAGhhL,EAAEC,EAAEC,GAAGF,EAAEsjL,cAAcrjL,EAAE,IAAIuF,EAAEvF,EAAE,EAAED,EAAEwjL,gBAAgBh+K,EAAExF,EAAEyjL,aAAaj+K,GAAExF,EAAEA,EAAEkkL,YAAWjkL,EAAE,GAAG0gL,GAAG1gL,IAAQC,EAAE,IAAIygL,GAAG5kL,KAAKooL,MAAMpoL,KAAKooL,MAAiC,SAAYnkL,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAIshL,GAAGthL,GAAG2kL,GAAG,GAAG,GAAvErD,GAAGvlL,KAAK6B,IAAI+mL,GAAG5oL,KAAK8B,IACzK,IAAIosB,GAAG9sB,EAAEsgJ,yBAAyB8jC,GAAGpkL,EAAE4kL,0BAA0BL,GAAGvkL,EAAE03L,wBAAwBlT,GAAGxkL,EAAE43L,qBAAqBnT,GAAGzkL,EAAE83L,sBAAsBpT,GAAG1kL,EAAEygJ,aAAakkC,GAAG3kL,EAAEi4L,iCAAiCnT,GAAG9kL,EAAEm4L,2BAA2BpT,GAAG/kL,EAAEmnL,8BAA8BnC,GAAGhlL,EAAE6kL,wBAAwBQ,GAAGrlL,EAAEu4L,qBAAqBjT,GAAGtlL,EAAEugJ,sBAAsBglC,GAAG,GAAGC,QAAG,IAASf,GAAGA,GAAG,aAAagB,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGlB,KAAK5jB,GAAE,IAAI8kB,GAAGlB,GAAG,WAAW,OAAOA,KAAKkB,IACtc,SAASC,KAAK,OAAOlB,MAAM,KAAKG,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKK,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,QAAQ,MAAMthL,MAAMpB,EAAE,OAAQ,SAASkjL,GAAGjjL,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOiiL,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOK,GAAG,KAAK,GAAG,OAAOC,GAAG,QAAQ,MAAMthL,MAAMpB,EAAE,OAAQ,SAASmjL,GAAGljL,EAAEC,GAAW,OAARD,EAAEijL,GAAGjjL,GAAUiqB,GAAGjqB,EAAEC,GAAG,SAASkjL,GAAGnjL,EAAEC,EAAEC,GAAW,OAARF,EAAEijL,GAAGjjL,GAAUuhL,GAAGvhL,EAAEC,EAAEC,GAAG,SAASo5J,KAAI,GAAG,OAAOupB,GAAG,CAAC,IAAI7iL,EAAE6iL,GAAGA,GAAG,KAAKnB,GAAG1hL,GAAGojL,KAC1a,SAASA,KAAK,IAAIN,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAI9iL,EAAE,EAAE,IAAI,IAAIC,EAAE2iL,GAAGM,GAAG,IAAG,WAAW,KAAKljL,EAAEC,EAAEtE,OAAOqE,IAAI,CAAC,IAAIE,EAAED,EAAED,GAAG,GAAGE,EAAEA,GAAE,SAAU,OAAOA,OAAM0iL,GAAG,KAAK,MAAM1iL,GAAG,MAAM,OAAO0iL,KAAKA,GAAGA,GAAGpnL,MAAMwE,EAAE,IAAIuhL,GAAGU,GAAG3oB,IAAGp5J,EAA1J,QAAqK4iL,IAAG,IAAK,IAAIqjB,GAAGjoC,EAAGwY,wBAAwF,IAAI3Y,GAAE,oBAAoB9/J,OAAO+vI,GAAG/vI,OAAO+vI,GAA3G,SAAYhuI,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,GAAmDojL,GAAGplL,OAAOgF,UAAU03I,eACnY,SAAS+oC,GAAG1jL,EAAEC,GAAG,GAAG89J,GAAE/9J,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIC,EAAEjC,OAAO+8B,KAAKh7B,GAAGwF,EAAEvH,OAAO+8B,KAAK/6B,GAAG,GAAGC,EAAEvE,SAAS6J,EAAE7J,OAAO,OAAM,EAAG,IAAI6J,EAAE,EAAEA,EAAEtF,EAAEvE,OAAO6J,IAAI,IAAI69K,GAAGznL,KAAKqE,EAAEC,EAAEsF,MAAMu4J,GAAE/9J,EAAEE,EAAEsF,IAAIvF,EAAEC,EAAEsF,KAAK,OAAM,EAAG,OAAM,EAClQ,SAASq+K,GAAG7jL,GAAG,OAAOA,EAAEk6K,KAAK,KAAK,EAAE,OAAOoF,GAAGt/K,EAAEpF,MAAM,KAAK,GAAG,OAAO0kL,GAAG,QAAQ,KAAK,GAAG,OAAOA,GAAG,YAAY,KAAK,GAAG,OAAOA,GAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOt/K,EAAEw/K,GAAGx/K,EAAEpF,MAAK,GAAM,KAAK,GAAG,OAAOoF,EAAEw/K,GAAGx/K,EAAEpF,KAAKqoC,QAAO,GAAM,KAAK,GAAG,OAAOjjC,EAAEw/K,GAAGx/K,EAAEpF,KAAKu/K,SAAQ,GAAM,KAAK,EAAE,OAAOn6K,EAAEw/K,GAAGx/K,EAAEpF,MAAK,GAAM,QAAQ,MAAM,IAAI,SAASkpL,GAAG9jL,EAAEC,GAAG,GAAGD,GAAGA,EAAE0vJ,aAAa,CAA6B,IAAI,IAAIxvJ,KAApCD,EAAEg/J,EAAG,GAAGh/J,GAAGD,EAAEA,EAAE0vJ,kBAA4B,IAASzvJ,EAAEC,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,EAAE,OAAOA,EAAE,IAAI8jL,GAAGpE,GAAG,MAAMqE,GAAG,KAAKC,GAAG,KAAKplK,GAAG,KACpe,SAASE,KAAKF,GAAGolK,GAAGD,GAAG,KAAK,SAASI,GAAGpkL,EAAEC,GAAGD,EAAEA,EAAEpF,KAAKogF,SAASq/F,GAAIjc,GAAE2lB,GAAG/jL,EAAEo3K,eAAep3K,EAAEo3K,cAAcn3K,IAAIm+J,GAAE2lB,GAAG/jL,EAAEq3K,gBAAgBr3K,EAAEq3K,eAAep3K,GAAG,SAASokL,GAAGrkL,GAAG,IAAIC,EAAE8jL,GAAG3xF,QAAQhmF,GAAE23K,IAAI/jL,EAAEA,EAAEpF,KAAKogF,SAASq/F,EAAGr6K,EAAEo3K,cAAcn3K,EAAED,EAAEq3K,eAAep3K,EAAE,SAASskL,GAAGvkL,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIE,EAAEF,EAAEk/I,UAAU,IAAIl/I,EAAEi3L,WAAWh3L,KAAKA,EAAtB,CAAwB,GAAG,OAAOC,IAAIA,EAAE+2L,WAAWh3L,KAAKA,EAAE,MAAWC,EAAE+2L,YAAYh3L,OAAOD,EAAEi3L,YAAYh3L,EAAE,OAAOC,IAAIA,EAAE+2L,YAAYh3L,GAAGD,EAAEA,EAAEg8I,QACrb,SAASwoC,GAAGxkL,EAAEC,GAAG+jL,GAAGhkL,EAAE6e,GAAGolK,GAAG,KAAsB,QAAjBjkL,EAAEA,EAAEm3L,eAAuB,OAAOn3L,EAAEo3L,eAAe,KAAKp3L,EAAEq3L,MAAMp3L,KAAKwkL,IAAG,GAAIzkL,EAAEo3L,aAAa,MAAM,SAASp5B,GAAEh+J,EAAEC,GAAG,GAAG4e,KAAK7e,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAE4e,GAAG7e,EAAEC,EAAE,YAAWA,EAAE,CAAC2I,QAAQ5I,EAAEi3J,aAAah3J,EAAEmvD,KAAK,MAAS,OAAO60H,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAM7iL,MAAMpB,EAAE,MAAMkkL,GAAGhkL,EAAE+jL,GAAGmT,aAAa,CAACE,MAAM,EAAED,aAAan3L,EAAEu3L,WAAW,WAAWvT,GAAGA,GAAG70H,KAAKnvD,EAAE,OAAOo6K,EAAGr6K,EAAEo3K,cAAcp3K,EAAEq3K,eAAe,IAAIqN,IAAG,EAC7b,SAASh/J,GAAG1lB,GAAGA,EAAE23L,YAAY,CAACC,UAAU53L,EAAE+/K,cAAc8X,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAAChmE,QAAQ,MAAMkkB,QAAQ,MAAM,SAAS2uC,GAAG5kL,EAAEC,GAAGD,EAAEA,EAAE23L,YAAY13L,EAAE03L,cAAc33L,IAAIC,EAAE03L,YAAY,CAACC,UAAU53L,EAAE43L,UAAUC,gBAAgB73L,EAAE63L,gBAAgBC,eAAe93L,EAAE83L,eAAeC,OAAO/3L,EAAE+3L,OAAO9hD,QAAQj2I,EAAEi2I,UAAU,SAAS4uC,GAAG7kL,EAAEC,GAAG,MAAM,CAACi4L,UAAUl4L,EAAEm4L,KAAKl4L,EAAEi6K,IAAI,EAAEke,QAAQ,KAAKpmL,SAAS,KAAKo9C,KAAK,MACtZ,SAAS21H,GAAG/kL,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAE23L,aAAwB,CAAY,IAAIz3L,GAAfF,EAAEA,EAAE+3L,QAAehmE,QAAQ,OAAO7xH,EAAED,EAAEmvD,KAAKnvD,GAAGA,EAAEmvD,KAAKlvD,EAAEkvD,KAAKlvD,EAAEkvD,KAAKnvD,GAAGD,EAAE+xH,QAAQ9xH,GAC9H,SAAS+kL,GAAGhlL,EAAEC,GAAG,IAAIC,EAAEF,EAAE23L,YAAYnyL,EAAExF,EAAEk/I,UAAU,GAAG,OAAO15I,GAAoBtF,KAAhBsF,EAAEA,EAAEmyL,aAAmB,CAAC,IAAIj2L,EAAE,KAAK+D,EAAE,KAAyB,GAAG,QAAvBvF,EAAEA,EAAE23L,iBAA4B,CAAC,EAAE,CAAC,IAAInyL,EAAE,CAACwyL,UAAUh4L,EAAEg4L,UAAUC,KAAKj4L,EAAEi4L,KAAKje,IAAIh6K,EAAEg6K,IAAIke,QAAQl4L,EAAEk4L,QAAQpmL,SAAS9R,EAAE8R,SAASo9C,KAAK,MAAM,OAAO3pD,EAAE/D,EAAE+D,EAAEC,EAAED,EAAEA,EAAE2pD,KAAK1pD,EAAExF,EAAEA,EAAEkvD,WAAW,OAAOlvD,GAAG,OAAOuF,EAAE/D,EAAE+D,EAAExF,EAAEwF,EAAEA,EAAE2pD,KAAKnvD,OAAOyB,EAAE+D,EAAExF,EAAiH,OAA/GC,EAAE,CAAC03L,UAAUpyL,EAAEoyL,UAAUC,gBAAgBn2L,EAAEo2L,eAAeryL,EAAEsyL,OAAOvyL,EAAEuyL,OAAO9hD,QAAQzwI,EAAEywI,cAASj2I,EAAE23L,YAAYz3L,GAA4B,QAAnBF,EAAEE,EAAE43L,gBAAwB53L,EAAE23L,gBAAgB53L,EAAED,EAAEovD,KACnfnvD,EAAEC,EAAE43L,eAAe73L,EACnB,SAASglL,GAAGjlL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAE23L,YAAYjT,IAAG,EAAG,IAAIj/K,EAAE/D,EAAEm2L,gBAAgBnyL,EAAEhE,EAAEo2L,eAAenyL,EAAEjE,EAAEq2L,OAAOhmE,QAAQ,GAAG,OAAOpsH,EAAE,CAACjE,EAAEq2L,OAAOhmE,QAAQ,KAAK,IAAI7vD,EAAEv8D,EAAEjK,EAAEwmE,EAAE9S,KAAK8S,EAAE9S,KAAK,KAAK,OAAO1pD,EAAED,EAAE/J,EAAEgK,EAAE0pD,KAAK1zD,EAAEgK,EAAEw8D,EAAE,IAAIhlE,EAAE8C,EAAEk/I,UAAU,GAAG,OAAOhiJ,EAAE,CAAiB,IAAIK,GAApBL,EAAEA,EAAEy6L,aAAoBG,eAAev6L,IAAImI,IAAI,OAAOnI,EAAEL,EAAE26L,gBAAgBn8L,EAAE6B,EAAE6xD,KAAK1zD,EAAEwB,EAAE46L,eAAe51H,IAAI,GAAG,OAAOz8D,EAAE,CAA8B,IAA7BlI,EAAEmE,EAAEk2L,UAAUlyL,EAAE,EAAExI,EAAExB,EAAEwmE,EAAE,OAAO,CAACv8D,EAAEF,EAAE0yL,KAAK,IAAI1nL,EAAEhL,EAAEyyL,UAAU,IAAI1yL,EAAEG,KAAKA,EAAE,CAAC,OAAOzI,IAAIA,EAAEA,EAAEkyD,KAAK,CAAC8oI,UAAUznL,EAAE0nL,KAAK,EAAEje,IAAIz0K,EAAEy0K,IAAIke,QAAQ3yL,EAAE2yL,QAAQpmL,SAASvM,EAAEuM,SACrfo9C,KAAK,OAAOpvD,EAAE,CAAC,IAAI1C,EAAE0C,EAAE3C,EAAEoI,EAAU,OAARE,EAAE1F,EAAEwQ,EAAEvQ,EAAS7C,EAAE68K,KAAK,KAAK,EAAc,GAAG,oBAAf58K,EAAED,EAAE+6L,SAAiC,CAAC76L,EAAED,EAAE1B,KAAK6U,EAAElT,EAAEoI,GAAG,MAAM3F,EAAEzC,EAAED,EAAE,MAAM0C,EAAE,KAAK,EAAE1C,EAAE+zJ,OAAe,KAAT/zJ,EAAE+zJ,MAAY,GAAG,KAAK,EAAsD,GAAG,QAA3C1rJ,EAAE,oBAAdrI,EAAED,EAAE+6L,SAAgC96L,EAAE1B,KAAK6U,EAAElT,EAAEoI,GAAGrI,SAAe,IAASqI,EAAE,MAAM3F,EAAEzC,EAAE0hK,EAAG,GAAG1hK,EAAEoI,GAAG,MAAM3F,EAAE,KAAK,EAAE0kL,IAAG,GAAI,OAAOj/K,EAAEuM,WAAWhS,EAAEqxJ,OAAO,GAAe,QAAZ1rJ,EAAEjE,EAAEu0I,SAAiBv0I,EAAEu0I,QAAQ,CAACxwI,GAAGE,EAAE1K,KAAKwK,SAASgL,EAAE,CAACynL,UAAUznL,EAAE0nL,KAAKxyL,EAAEu0K,IAAIz0K,EAAEy0K,IAAIke,QAAQ3yL,EAAE2yL,QAAQpmL,SAASvM,EAAEuM,SAASo9C,KAAK,MAAM,OAAOlyD,GAAGxB,EAAEwB,EAAEuT,EAAEyxD,EAAE3kE,GAAGL,EAAEA,EAAEkyD,KAAK3+C,EAAE/K,GAAGC,EAAW,GAAG,QAAZF,EAAEA,EAAE2pD,MAC3e,IAAsB,QAAnBzpD,EAAEjE,EAAEq2L,OAAOhmE,SAAiB,MAAWtsH,EAAEE,EAAEypD,KAAKzpD,EAAEypD,KAAK,KAAK1tD,EAAEo2L,eAAenyL,EAAEjE,EAAEq2L,OAAOhmE,QAAQ,MAAc,OAAO70H,IAAIglE,EAAE3kE,GAAGmE,EAAEk2L,UAAU11H,EAAExgE,EAAEm2L,gBAAgBn8L,EAAEgG,EAAEo2L,eAAe56L,EAAEkoL,IAAI1/K,EAAE1F,EAAEq3L,MAAM3xL,EAAE1F,EAAE+/K,cAAcxiL,GAAG,SAAS8nL,GAAGrlL,EAAEC,EAAEC,GAA8B,GAA3BF,EAAEC,EAAEg2I,QAAQh2I,EAAEg2I,QAAQ,KAAQ,OAAOj2I,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAErE,OAAOsE,IAAI,CAAC,IAAIuF,EAAExF,EAAEC,GAAGyB,EAAE8D,EAAEwM,SAAS,GAAG,OAAOtQ,EAAE,CAAqB,GAApB8D,EAAEwM,SAAS,KAAKxM,EAAEtF,EAAK,oBAAoBwB,EAAE,MAAMP,MAAMpB,EAAE,IAAI2B,IAAIA,EAAE9F,KAAK4J,KAAK,IAAI8/K,IAAI,IAAIpmB,EAAGnc,WAAW0P,KAC3b,SAAS0zB,GAAGnmL,EAAEC,EAAEC,EAAEsF,GAA8BtF,EAAE,QAAXA,EAAEA,EAAEsF,EAAtBvF,EAAED,EAAE+/K,sBAAmC,IAAS7/K,EAAED,EAAEg/J,EAAG,GAAGh/J,EAAEC,GAAGF,EAAE+/K,cAAc7/K,EAAE,IAAIF,EAAEq3L,QAAQr3L,EAAE23L,YAAYC,UAAU13L,GAC5I,IAAIymL,GAAG,CAAC/Q,UAAU,SAAS51K,GAAG,SAAOA,EAAEA,EAAE64L,kBAAiBjgB,EAAG54K,KAAKA,GAAM+1K,gBAAgB,SAAS/1K,EAAEC,EAAEC,GAAGF,EAAEA,EAAE64L,gBAAgB,IAAIrzL,EAAEs4J,KAAIp8J,EAAE+kL,GAAGzmL,GAAGyF,EAAEo/K,GAAGr/K,EAAE9D,GAAG+D,EAAE2yL,QAAQn4L,OAAE,IAASC,GAAG,OAAOA,IAAIuF,EAAEuM,SAAS9R,GAAG6kL,GAAG/kL,EAAEyF,GAAGihL,GAAG1mL,EAAE0B,EAAE8D,IAAIswK,oBAAoB,SAAS91K,EAAEC,EAAEC,GAAGF,EAAEA,EAAE64L,gBAAgB,IAAIrzL,EAAEs4J,KAAIp8J,EAAE+kL,GAAGzmL,GAAGyF,EAAEo/K,GAAGr/K,EAAE9D,GAAG+D,EAAEy0K,IAAI,EAAEz0K,EAAE2yL,QAAQn4L,OAAE,IAASC,GAAG,OAAOA,IAAIuF,EAAEuM,SAAS9R,GAAG6kL,GAAG/kL,EAAEyF,GAAGihL,GAAG1mL,EAAE0B,EAAE8D,IAAIqwK,mBAAmB,SAAS71K,EAAEC,GAAGD,EAAEA,EAAE64L,gBAAgB,IAAI34L,EAAE49J,KAAIt4J,EAAEihL,GAAGzmL,GAAG0B,EAAEmjL,GAAG3kL,EAAEsF,GAAG9D,EAAEw4K,IAAI,OAAE,IAASj6K,GAAG,OAAOA,IAAIyB,EAAEsQ,SAC9e/R,GAAG8kL,GAAG/kL,EAAE0B,GAAGglL,GAAG1mL,EAAEwF,EAAEtF,KAAK,SAAS8lL,GAAGhmL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,EAAEC,GAAiB,MAAM,oBAApB1F,EAAEA,EAAEi8I,WAAsCi9C,sBAAsBl5L,EAAEk5L,sBAAsB1zL,EAAEC,EAAEC,IAAGzF,EAAEgD,YAAWhD,EAAEgD,UAAUizK,wBAAsBwN,GAAGxjL,EAAEsF,KAAKk+K,GAAGhiL,EAAE+D,IAC/M,SAASwgL,GAAGjmL,EAAEC,EAAEC,GAAG,IAAIsF,GAAE,EAAG9D,EAAEk+K,GAAOn6K,EAAExF,EAAEuvJ,YAAyW,MAA7V,kBAAkB/pJ,GAAG,OAAOA,EAAEA,EAAEu4J,GAAEv4J,IAAI/D,EAAEi9J,GAAE1+J,GAAG4xL,GAAG7rF,GAAE5T,QAAyB3sF,GAAGD,EAAE,QAAtBA,EAAEvF,EAAEwvJ,oBAA4B,IAASjqJ,GAAGq6K,GAAG7/K,EAAE0B,GAAGk+K,IAAI3/K,EAAE,IAAIA,EAAEC,EAAEuF,GAAGzF,EAAE+/K,cAAc,OAAO9/K,EAAEw1C,YAAO,IAASx1C,EAAEw1C,MAAMx1C,EAAEw1C,MAAM,KAAKx1C,EAAE+1K,QAAQ2Q,GAAG3mL,EAAEi8I,UAAUh8I,EAAEA,EAAE44L,gBAAgB74L,EAAEwF,KAAIxF,EAAEA,EAAEi8I,WAAY83C,4CAA4CryL,EAAE1B,EAAEg0L,0CAA0CvuL,GAAUxF,EACzZ,SAASimL,GAAGlmL,EAAEC,EAAEC,EAAEsF,GAAGxF,EAAEC,EAAEw1C,MAAM,oBAAoBx1C,EAAEw2J,2BAA2Bx2J,EAAEw2J,0BAA0Bv2J,EAAEsF,GAAG,oBAAoBvF,EAAEo5L,kCAAkCp5L,EAAEo5L,iCAAiCn5L,EAAEsF,GAAGvF,EAAEw1C,QAAQz1C,GAAG2mL,GAAG7Q,oBAAoB71K,EAAEA,EAAEw1C,MAAM,MAC/P,SAAS+xI,GAAGxnL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEi8I,UAAUv6I,EAAE4mI,MAAMpoI,EAAEwB,EAAE+zC,MAAMz1C,EAAE+/K,cAAcr+K,EAAE+wJ,KAAK6yB,GAAG5/J,GAAG1lB,GAAG,IAAIyF,EAAExF,EAAEuvJ,YAAY,kBAAkB/pJ,GAAG,OAAOA,EAAE/D,EAAEkH,QAAQo1J,GAAEv4J,IAAIA,EAAEk5J,GAAE1+J,GAAG4xL,GAAG7rF,GAAE5T,QAAQ1wF,EAAEkH,QAAQi3K,GAAG7/K,EAAEyF,IAAIw/K,GAAGjlL,EAAEE,EAAEwB,EAAE8D,GAAG9D,EAAE+zC,MAAMz1C,EAAE+/K,cAA2C,oBAA7Bt6K,EAAExF,EAAE4vJ,4BAAiDs2B,GAAGnmL,EAAEC,EAAEwF,EAAEvF,GAAGwB,EAAE+zC,MAAMz1C,EAAE+/K,eAAe,oBAAoB9/K,EAAE4vJ,0BAA0B,oBAAoBnuJ,EAAE63L,yBAAyB,oBAAoB73L,EAAE83L,2BAA2B,oBAAoB93L,EAAE+3L,qBACrex5L,EAAEyB,EAAE+zC,MAAM,oBAAoB/zC,EAAE+3L,oBAAoB/3L,EAAE+3L,qBAAqB,oBAAoB/3L,EAAE83L,2BAA2B93L,EAAE83L,4BAA4Bv5L,IAAIyB,EAAE+zC,OAAOkxI,GAAG7Q,oBAAoBp0K,EAAEA,EAAE+zC,MAAM,MAAMwvI,GAAGjlL,EAAEE,EAAEwB,EAAE8D,GAAG9D,EAAE+zC,MAAMz1C,EAAE+/K,eAAe,oBAAoBr+K,EAAE6gJ,oBAAoBviJ,EAAEqxJ,OAAO,GAAG,IAAIu1B,GAAGr7K,MAAMC,QACvT,SAASw8K,GAAGhoL,EAAEC,EAAEC,GAAW,GAAG,QAAXF,EAAEE,EAAE4tI,MAAiB,oBAAoB9tI,GAAG,kBAAkBA,EAAE,CAAC,GAAGE,EAAEo2K,OAAO,CAAY,GAAXp2K,EAAEA,EAAEo2K,OAAY,CAAC,GAAG,IAAIp2K,EAAEg6K,IAAI,MAAM/4K,MAAMpB,EAAE,MAAM,IAAIyF,EAAEtF,EAAE+7I,UAAU,IAAIz2I,EAAE,MAAMrE,MAAMpB,EAAE,IAAIC,IAAI,IAAI0B,EAAE,GAAG1B,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE6tI,KAAK,oBAAoB7tI,EAAE6tI,KAAK7tI,EAAE6tI,IAAI8rD,aAAal4L,EAASzB,EAAE6tI,MAAI7tI,EAAE,SAASD,GAAG,IAAIC,EAAEuF,EAAEitJ,KAAKxyJ,IAAIqlL,KAAKrlL,EAAEuF,EAAEitJ,KAAK,IAAI,OAAOzyJ,SAASC,EAAEyB,GAAGzB,EAAEyB,GAAG1B,IAAK45L,WAAWl4L,EAASzB,GAAE,GAAG,kBAAkBD,EAAE,MAAMmB,MAAMpB,EAAE,MAAM,IAAIG,EAAEo2K,OAAO,MAAMn1K,MAAMpB,EAAE,IAAIC,IAAK,OAAOA,EAChe,SAASo4M,GAAGp4M,EAAEC,GAAG,GAAG,aAAaD,EAAEpF,KAAK,MAAMuG,MAAMpB,EAAE,GAAG,oBAAoB9B,OAAOgF,UAAU9G,SAASP,KAAKqE,GAAG,qBAAqBhC,OAAO+8B,KAAK/6B,GAAGwwD,KAAK,MAAM,IAAIxwD,IAClK,SAASgoL,GAAGjoL,GAAG,SAASC,EAAEA,EAAEC,GAAG,GAAGF,EAAE,CAAC,IAAIwF,EAAEvF,EAAE85L,WAAW,OAAOv0L,GAAGA,EAAEw0L,WAAW95L,EAAED,EAAE85L,WAAW75L,GAAGD,EAAEg6L,YAAYh6L,EAAE85L,WAAW75L,EAAEA,EAAE85L,WAAW,KAAK95L,EAAEmxJ,MAAM,GAAG,SAASnxJ,EAAEA,EAAEsF,GAAG,IAAIxF,EAAE,OAAO,KAAK,KAAK,OAAOwF,GAAGvF,EAAEC,EAAEsF,GAAGA,EAAEA,EAAEs3I,QAAQ,OAAO,KAAK,SAASt3I,EAAExF,EAAEC,GAAG,IAAID,EAAE,IAAIuzE,IAAI,OAAOtzE,GAAG,OAAOA,EAAEjT,IAAIgT,EAAEc,IAAIb,EAAEjT,IAAIiT,GAAGD,EAAEc,IAAIb,EAAE9E,MAAM8E,GAAGA,EAAEA,EAAE68I,QAAQ,OAAO98I,EAAE,SAAS0B,EAAE1B,EAAEC,GAAsC,OAAnCD,EAAEq4M,GAAGr4M,EAAEC,IAAK9E,MAAM,EAAE6E,EAAE88I,QAAQ,KAAY98I,EAAE,SAASyF,EAAExF,EAAEC,EAAEsF,GAAa,OAAVvF,EAAE9E,MAAMqK,EAAMxF,EAA4B,QAAjBwF,EAAEvF,EAAEi/I,YAA6B15I,EAAEA,EAAErK,OAAQ+E,GAAGD,EAAEoxJ,MAAM,EACpfnxJ,GAAGsF,GAAEvF,EAAEoxJ,MAAM,EAASnxJ,GADoaA,EACla,SAASwF,EAAEzF,GAAsC,OAAnCD,GAAG,OAAOC,EAAEi/I,YAAYj/I,EAAEoxJ,MAAM,GAAUpxJ,EAAE,SAAS0F,EAAE3F,EAAEC,EAAEC,EAAEsF,GAAG,OAAG,OAAOvF,GAAG,IAAIA,EAAEi6K,MAAWj6K,EAAEkoL,GAAGjoL,EAAEF,EAAEq7C,KAAK71C,IAAKw2I,OAAOh8I,EAAEC,KAAEA,EAAEyB,EAAEzB,EAAEC,IAAK87I,OAAOh8I,EAASC,GAAE,SAASiiE,EAAEliE,EAAEC,EAAEC,EAAEsF,GAAG,OAAG,OAAOvF,GAAGA,EAAEm6L,cAAcl6L,EAAEtF,OAAY4K,EAAE9D,EAAEzB,EAAEC,EAAEooI,QAASwF,IAAIk6C,GAAGhoL,EAAEC,EAAEC,GAAGsF,EAAEw2I,OAAOh8I,EAAEwF,KAAEA,EAAE8yM,GAAGp4M,EAAEtF,KAAKsF,EAAElT,IAAIkT,EAAEooI,MAAM,KAAKtoI,EAAEq7C,KAAK71C,IAAKsoI,IAAIk6C,GAAGhoL,EAAEC,EAAEC,GAAGsF,EAAEw2I,OAAOh8I,EAASwF,GAAE,SAAS9J,EAAEsE,EAAEC,EAAEC,EAAEsF,GAAG,OAAG,OAAOvF,GAAG,IAAIA,EAAEi6K,KAAKj6K,EAAEg8I,UAAUC,gBAAgBh8I,EAAEg8I,eAAej8I,EAAEg8I,UAAUq+C,iBAAiBp6L,EAAEo6L,iBAAsBr6L,EACrgBmoL,GAAGloL,EAAEF,EAAEq7C,KAAK71C,IAAKw2I,OAAOh8I,EAAEC,KAAEA,EAAEyB,EAAEzB,EAAEC,EAAE2X,UAAU,KAAMmkI,OAAOh8I,EAASC,GAAE,SAAS/C,EAAE8C,EAAEC,EAAEC,EAAEsF,EAAEC,GAAG,OAAG,OAAOxF,GAAG,IAAIA,EAAEi6K,MAAWj6K,EAAEs4M,GAAGr4M,EAAEF,EAAEq7C,KAAK71C,EAAEC,IAAKu2I,OAAOh8I,EAAEC,KAAEA,EAAEyB,EAAEzB,EAAEC,IAAK87I,OAAOh8I,EAASC,GAAE,SAAS1C,EAAEyC,EAAEC,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,kBAAkBA,EAAE,OAAOA,EAAEkoL,GAAG,GAAGloL,EAAED,EAAEq7C,KAAKn7C,IAAK87I,OAAOh8I,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEo2K,UAAU,KAAK9X,EAAG,OAAOr+J,EAAEo4M,GAAGr4M,EAAErF,KAAKqF,EAAEjT,IAAIiT,EAAEqoI,MAAM,KAAKtoI,EAAEq7C,KAAKn7C,IAAK4tI,IAAIk6C,GAAGhoL,EAAE,KAAKC,GAAGC,EAAE87I,OAAOh8I,EAAEE,EAAE,KAAKs+J,EAAG,OAAOv+J,EAAEmoL,GAAGnoL,EAAED,EAAEq7C,KAAKn7C,IAAK87I,OAAOh8I,EAAEC,EAAE,GAAG2mL,GAAG3mL,IAAIqqB,EAAGrqB,GAAG,OAAOA,EAAEs4M,GAAGt4M,EACnfD,EAAEq7C,KAAKn7C,EAAE,OAAQ87I,OAAOh8I,EAAEC,EAAEm4M,GAAGp4M,EAAEC,GAAG,OAAO,KAAK,SAASwQ,EAAEzQ,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE,OAAOzB,EAAEA,EAAEjT,IAAI,KAAK,GAAG,kBAAkBkT,GAAG,kBAAkBA,EAAE,OAAO,OAAOwB,EAAE,KAAKiE,EAAE3F,EAAEC,EAAE,GAAGC,EAAEsF,GAAG,GAAG,kBAAkBtF,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEm2K,UAAU,KAAK9X,EAAG,OAAOr+J,EAAElT,MAAM0U,EAAExB,EAAEtF,OAAO6jK,EAAGvhK,EAAE8C,EAAEC,EAAEC,EAAEooI,MAAMzwH,SAASrS,EAAE9D,GAAGwgE,EAAEliE,EAAEC,EAAEC,EAAEsF,GAAG,KAAK,KAAKg5J,EAAG,OAAOt+J,EAAElT,MAAM0U,EAAEhG,EAAEsE,EAAEC,EAAEC,EAAEsF,GAAG,KAAK,GAAGohL,GAAG1mL,IAAIoqB,EAAGpqB,GAAG,OAAO,OAAOwB,EAAE,KAAKxE,EAAE8C,EAAEC,EAAEC,EAAEsF,EAAE,MAAM4yM,GAAGp4M,EAAEE,GAAG,OAAO,KAAK,SAAS5C,EAAE0C,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,GAAG,kBAAkB8D,GAAG,kBAAkBA,EAAE,OACleG,EAAE1F,EADueD,EAAEA,EAAEynC,IAAIvnC,IACtf,KAAW,GAAGsF,EAAE9D,GAAG,GAAG,kBAAkB8D,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE6wK,UAAU,KAAK9X,EAAG,OAAOv+J,EAAEA,EAAEynC,IAAI,OAAOjiC,EAAExY,IAAIkT,EAAEsF,EAAExY,MAAM,KAAKwY,EAAE5K,OAAO6jK,EAAGvhK,EAAE+C,EAAED,EAAEwF,EAAE8iI,MAAMzwH,SAASnW,EAAE8D,EAAExY,KAAKk1E,EAAEjiE,EAAED,EAAEwF,EAAE9D,GAAG,KAAK88J,EAAG,OAA2C9iK,EAAEuE,EAAtCD,EAAEA,EAAEynC,IAAI,OAAOjiC,EAAExY,IAAIkT,EAAEsF,EAAExY,MAAM,KAAWwY,EAAE9D,GAAG,GAAGklL,GAAGphL,IAAI8kB,EAAG9kB,GAAG,OAAwBtI,EAAE+C,EAAnBD,EAAEA,EAAEynC,IAAIvnC,IAAI,KAAWsF,EAAE9D,EAAE,MAAM02M,GAAGn4M,EAAEuF,GAAG,OAAO,KAAK,SAASnI,EAAEqE,EAAEgE,EAAEC,EAAEu8D,GAAG,IAAI,IAAIxmE,EAAE,KAAK2F,EAAE,KAAK2U,EAAEtQ,EAAEwtJ,EAAExtJ,EAAE,EAAExI,EAAE,KAAK,OAAO8Y,GAAGk9I,EAAEvtJ,EAAEhK,OAAOu3J,IAAI,CAACl9I,EAAE7a,MAAM+3J,GAAGh2J,EAAE8Y,EAAEA,EAAE,MAAM9Y,EAAE8Y,EAAE8mI,QAAQ,IAAIx7I,EAAEmP,EAAE/O,EAAEsU,EAAErQ,EAAEutJ,GAAGhxF,GAAG,GAAG,OAAO5gE,EAAE,CAAC,OAAO0U,IAAIA,EAAE9Y,GAAG,MAAM8C,GAAGgW,GAAG,OACjf1U,EAAE49I,WAAWj/I,EAAEyB,EAAEsU,GAAGtQ,EAAED,EAAEnE,EAAEoE,EAAEwtJ,GAAG,OAAO7xJ,EAAE3F,EAAE4F,EAAED,EAAEy7I,QAAQx7I,EAAED,EAAEC,EAAE0U,EAAE9Y,EAAE,GAAGg2J,IAAIvtJ,EAAEhK,OAAO,OAAOuE,EAAEwB,EAAEsU,GAAGta,EAAE,GAAG,OAAOsa,EAAE,CAAC,KAAKk9I,EAAEvtJ,EAAEhK,OAAOu3J,IAAkB,QAAdl9I,EAAEzY,EAAEmE,EAAEiE,EAAEutJ,GAAGhxF,MAAcx8D,EAAED,EAAEuQ,EAAEtQ,EAAEwtJ,GAAG,OAAO7xJ,EAAE3F,EAAEsa,EAAE3U,EAAEy7I,QAAQ9mI,EAAE3U,EAAE2U,GAAG,OAAOta,EAAE,IAAIsa,EAAExQ,EAAE9D,EAAEsU,GAAGk9I,EAAEvtJ,EAAEhK,OAAOu3J,IAAsB,QAAlBh2J,EAAEI,EAAE0Y,EAAEtU,EAAEwxJ,EAAEvtJ,EAAEutJ,GAAGhxF,MAAcliE,GAAG,OAAO9C,EAAEgiJ,WAAWlpI,EAAE2xB,OAAO,OAAOzqC,EAAElQ,IAAIkmK,EAAEh2J,EAAElQ,KAAK0Y,EAAED,EAAEvI,EAAEwI,EAAEwtJ,GAAG,OAAO7xJ,EAAE3F,EAAEwB,EAAEmE,EAAEy7I,QAAQ5/I,EAAEmE,EAAEnE,GAA4C,OAAzC8C,GAAGgW,EAAEg+D,SAAQ,SAASh0E,GAAG,OAAOC,EAAEyB,EAAE1B,MAAYtE,EAAE,SAASgjK,EAAEh9J,EAAEgE,EAAEC,EAAEu8D,GAAG,IAAIxmE,EAAE4uB,EAAG3kB,GAAG,GAAG,oBAAoBjK,EAAE,MAAMyF,MAAMpB,EAAE,MAAkB,GAAG,OAAf4F,EAAEjK,EAAEE,KAAK+J,IAC1e,MAAMxE,MAAMpB,EAAE,MAAM,IAAI,IAAIiW,EAAEta,EAAE,KAAK2F,EAAEqE,EAAExI,EAAEwI,EAAE,EAAEwtJ,EAAE,KAAK5xJ,EAAEqE,EAAEypD,OAAO,OAAO/tD,IAAIC,EAAEjU,KAAK6P,IAAIoE,EAAEqE,EAAEypD,OAAO,CAAC/tD,EAAElG,MAAM+B,GAAGg2J,EAAE7xJ,EAAEA,EAAE,MAAM6xJ,EAAE7xJ,EAAEy7I,QAAQ,IAAIz/I,EAAEoT,EAAE/O,EAAEL,EAAEC,EAAEnU,MAAM+0E,GAAG,GAAG,OAAO7kE,EAAE,CAAC,OAAOgE,IAAIA,EAAE6xJ,GAAG,MAAMlzJ,GAAGqB,GAAG,OAAOhE,EAAE6hJ,WAAWj/I,EAAEyB,EAAEL,GAAGqE,EAAED,EAAEpI,EAAEqI,EAAExI,GAAG,OAAO8Y,EAAEta,EAAE2B,EAAE2Y,EAAE8mI,QAAQz/I,EAAE2Y,EAAE3Y,EAAEgE,EAAE6xJ,EAAE,GAAG5xJ,EAAEjU,KAAK,OAAO6S,EAAEwB,EAAEL,GAAG3F,EAAE,GAAG,OAAO2F,EAAE,CAAC,MAAMC,EAAEjU,KAAK6P,IAAIoE,EAAEqE,EAAEypD,OAAwB,QAAjB9tD,EAAE/D,EAAEmE,EAAEJ,EAAEnU,MAAM+0E,MAAcx8D,EAAED,EAAEnE,EAAEoE,EAAExI,GAAG,OAAO8Y,EAAEta,EAAE4F,EAAE0U,EAAE8mI,QAAQx7I,EAAE0U,EAAE1U,GAAG,OAAO5F,EAAE,IAAI2F,EAAEmE,EAAE9D,EAAEL,IAAIC,EAAEjU,KAAK6P,IAAIoE,EAAEqE,EAAEypD,OAA4B,QAArB9tD,EAAEhE,EAAE+D,EAAEK,EAAExE,EAAEoE,EAAEnU,MAAM+0E,MAAcliE,GAAG,OAAOsB,EAAE49I,WAChf79I,EAAEsmC,OAAO,OAAOrmC,EAAEtU,IAAIkQ,EAAEoE,EAAEtU,KAAK0Y,EAAED,EAAEnE,EAAEoE,EAAExI,GAAG,OAAO8Y,EAAEta,EAAE4F,EAAE0U,EAAE8mI,QAAQx7I,EAAE0U,EAAE1U,GAA4C,OAAzCtB,GAAGqB,EAAE2yE,SAAQ,SAASh0E,GAAG,OAAOC,EAAEyB,EAAE1B,MAAYtE,EAAE,OAAO,SAASsE,EAAEwF,EAAEC,EAAEE,GAAG,IAAIu8D,EAAE,kBAAkBz8D,GAAG,OAAOA,GAAGA,EAAE7K,OAAO6jK,GAAI,OAAOh5J,EAAEzY,IAAIk1E,IAAIz8D,EAAEA,EAAE6iI,MAAMzwH,UAAU,IAAInc,EAAE,kBAAkB+J,GAAG,OAAOA,EAAE,GAAG/J,EAAE,OAAO+J,EAAE4wK,UAAU,KAAK9X,EAAGv+J,EAAE,CAAS,IAARtE,EAAE+J,EAAEzY,IAAQk1E,EAAE18D,EAAE,OAAO08D,GAAG,CAAC,GAAGA,EAAEl1E,MAAM0O,EAAE,CAAC,OAAOwmE,EAAEg4G,KAAK,KAAK,EAAE,GAAGz0K,EAAE7K,OAAO6jK,EAAG,CAACv+J,EAAEF,EAAEkiE,EAAE46E,UAASt3I,EAAE9D,EAAEwgE,EAAEz8D,EAAE6iI,MAAMzwH,WAAYmkI,OAAOh8I,EAAEA,EAAEwF,EAAE,MAAMxF,EAAE,MAAM,QAAQ,GAAGkiE,EAAEk4H,cAAc30L,EAAE7K,KAAK,CAACsF,EAAEF,EAAEkiE,EAAE46E,UAC5et3I,EAAE9D,EAAEwgE,EAAEz8D,EAAE6iI,QAASwF,IAAIk6C,GAAGhoL,EAAEkiE,EAAEz8D,GAAGD,EAAEw2I,OAAOh8I,EAAEA,EAAEwF,EAAE,MAAMxF,GAAGE,EAAEF,EAAEkiE,GAAG,MAAWjiE,EAAED,EAAEkiE,GAAGA,EAAEA,EAAE46E,QAAQr3I,EAAE7K,OAAO6jK,IAAIj5J,EAAE+yM,GAAG9yM,EAAE6iI,MAAMzwH,SAAS7X,EAAEq7C,KAAK11C,EAAEF,EAAEzY,MAAOgvJ,OAAOh8I,EAAEA,EAAEwF,KAAIG,EAAE2yM,GAAG7yM,EAAE7K,KAAK6K,EAAEzY,IAAIyY,EAAE6iI,MAAM,KAAKtoI,EAAEq7C,KAAK11C,IAAKmoI,IAAIk6C,GAAGhoL,EAAEwF,EAAEC,GAAGE,EAAEq2I,OAAOh8I,EAAEA,EAAE2F,GAAG,OAAOD,EAAE1F,GAAG,KAAKw+J,EAAGx+J,EAAE,CAAC,IAAIkiE,EAAEz8D,EAAEzY,IAAI,OAAOwY,GAAG,CAAC,GAAGA,EAAExY,MAAMk1E,EAAX,CAAa,GAAG,IAAI18D,EAAE00K,KAAK10K,EAAEy2I,UAAUC,gBAAgBz2I,EAAEy2I,eAAe12I,EAAEy2I,UAAUq+C,iBAAiB70L,EAAE60L,eAAe,CAACp6L,EAAEF,EAAEwF,EAAEs3I,UAASt3I,EAAE9D,EAAE8D,EAAEC,EAAEoS,UAAU,KAAMmkI,OAAOh8I,EAAEA,EAAEwF,EAAE,MAAMxF,EAAOE,EAAEF,EAAEwF,GAAG,MAAWvF,EAAED,EAAEwF,GAAGA,EAAEA,EAAEs3I,SAAQt3I,EACpf4iL,GAAG3iL,EAAEzF,EAAEq7C,KAAK11C,IAAKq2I,OAAOh8I,EAAEA,EAAEwF,EAAE,OAAOE,EAAE1F,GAAG,GAAG,kBAAkByF,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOD,GAAG,IAAIA,EAAE00K,KAAKh6K,EAAEF,EAAEwF,EAAEs3I,UAASt3I,EAAE9D,EAAE8D,EAAEC,IAAKu2I,OAAOh8I,EAAEA,EAAEwF,IAAItF,EAAEF,EAAEwF,IAAGA,EAAE2iL,GAAG1iL,EAAEzF,EAAEq7C,KAAK11C,IAAKq2I,OAAOh8I,EAAEA,EAAEwF,GAAGE,EAAE1F,GAAG,GAAG4mL,GAAGnhL,GAAG,OAAOpI,EAAE2C,EAAEwF,EAAEC,EAAEE,GAAG,GAAG2kB,EAAG7kB,GAAG,OAAOi5J,EAAE1+J,EAAEwF,EAAEC,EAAEE,GAAc,GAAXjK,GAAG08M,GAAGp4M,EAAEyF,GAAM,qBAAqBA,IAAIy8D,EAAE,OAAOliE,EAAEk6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM/4K,MAAMpB,EAAE,IAAI44K,EAAG34K,EAAEpF,OAAO,cAAe,OAAOsF,EAAEF,EAAEwF,IAAI,IAAI+iL,GAAGN,IAAG,GAAIuwB,GAAGvwB,IAAG,GAAIQ,GAAG,GAAGtvB,GAAEwmB,GAAG8I,IAAIC,GAAG/I,GAAG8I,IAAIc,GAAG5J,GAAG8I,IACrd,SAASmD,GAAG5rL,GAAG,GAAGA,IAAIyoL,GAAG,MAAMtnL,MAAMpB,EAAE,MAAM,OAAOC,EAAE,SAASisL,GAAGjsL,EAAEC,GAAGm+J,GAAEmrB,GAAGtpL,GAAGm+J,GAAEsqB,GAAG1oL,GAAGo+J,GAAEjF,GAAEsvB,IAAIzoL,EAAEm5K,EAAGl5K,GAAGmM,GAAE+sJ,IAAGiF,GAAEjF,GAAEn5J,GAAG,SAASy4M,KAAKrsM,GAAE+sJ,IAAG/sJ,GAAEs8K,IAAIt8K,GAAEm9K,IAAI,SAAS2C,GAAGlsL,GAAG,IAAIC,EAAE2rL,GAAGrC,GAAGn3F,SAASlyF,EAAE0rL,GAAGzyB,GAAE/mE,SAA0BlyF,KAAjBD,EAAEm5K,EAAGl5K,EAAEF,EAAEpF,KAAKqF,MAAWm+J,GAAEsqB,GAAG1oL,GAAGo+J,GAAEjF,GAAEl5J,IAAI,SAASy4M,GAAG14M,GAAG0oL,GAAGt2F,UAAUpyF,IAAIoM,GAAE+sJ,IAAG/sJ,GAAEs8K,KAAK,IAAItvB,GAAEumB,GAAG,GACpS,SAAS0M,GAAGrsL,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEi6K,IAAI,CAAC,IAAIh6K,EAAED,EAAE8/K,cAAc,GAAG,OAAO7/K,IAAmB,QAAfA,EAAEA,EAAE8/K,aAAqBnB,GAAG3+K,IAAI4+K,GAAG5+K,IAAI,OAAOD,OAAO,GAAG,KAAKA,EAAEi6K,UAAK,IAASj6K,EAAEmzI,cAAckoD,aAAa,GAAG,KAAa,GAARr7L,EAAEoxJ,OAAU,OAAOpxJ,OAAO,GAAG,OAAOA,EAAEqoB,MAAM,CAACroB,EAAEqoB,MAAM0zH,OAAO/7I,EAAEA,EAAEA,EAAEqoB,MAAM,SAAS,GAAGroB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE68I,SAAS,CAAC,GAAG,OAAO78I,EAAE+7I,QAAQ/7I,EAAE+7I,SAASh8I,EAAE,OAAO,KAAKC,EAAEA,EAAE+7I,OAAO/7I,EAAE68I,QAAQd,OAAO/7I,EAAE+7I,OAAO/7I,EAAEA,EAAE68I,QAAQ,OAAO,KAAK,IAAI67D,GAAG,KAAK9rB,GAAG,KAAK+rB,IAAG,EACpc,SAAS3rB,GAAGjtL,EAAEC,GAAG,IAAIC,EAAE24M,GAAG,EAAE,KAAK,KAAK,GAAG34M,EAAEk6L,YAAY,UAAUl6L,EAAEtF,KAAK,UAAUsF,EAAE+7I,UAAUh8I,EAAEC,EAAE87I,OAAOh8I,EAAEE,EAAEmxJ,MAAM,EAAE,OAAOrxJ,EAAE+5L,YAAY/5L,EAAE+5L,WAAWC,WAAW95L,EAAEF,EAAE+5L,WAAW75L,GAAGF,EAAEi6L,YAAYj6L,EAAE+5L,WAAW75L,EAAE,SAASgtL,GAAGltL,EAAEC,GAAG,OAAOD,EAAEk6K,KAAK,KAAK,EAAE,OAAqC,QAA9Bj6K,EAAE0+K,GAAG1+K,EAAED,EAAEpF,KAAKoF,EAAE67L,iBAAwB77L,EAAEi8I,UAAUh8I,GAAE,GAAO,KAAK,EAAE,OAA8B,QAAvBA,EAAE2+K,GAAG3+K,EAAED,EAAE67L,iBAAwB77L,EAAEi8I,UAAUh8I,GAAE,GAAO,KAAK,GAAY,QAAQ,OAAM,GAC9Z,SAASytL,GAAG1tL,GAAG,GAAG44M,GAAG,CAAC,IAAI34M,EAAE4sL,GAAG,GAAG5sL,EAAE,CAAC,IAAIC,EAAED,EAAE,IAAIitL,GAAGltL,EAAEC,GAAG,CAAS,KAARA,EAAE8+K,GAAG7+K,MAAWgtL,GAAGltL,EAAEC,GAAuC,OAAnCD,EAAEqxJ,OAAe,KAATrxJ,EAAEqxJ,MAAY,EAAEunD,IAAG,OAAGD,GAAG34M,GAASitL,GAAG0rB,GAAGz4M,GAAGy4M,GAAG34M,EAAE6sL,GAAG7N,GAAG/+K,QAAQD,EAAEqxJ,OAAe,KAATrxJ,EAAEqxJ,MAAY,EAAEunD,IAAG,EAAGD,GAAG34M,GAAG,SAASoE,GAAGpE,GAAG,IAAIA,EAAEA,EAAEg8I,OAAO,OAAOh8I,GAAG,IAAIA,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,KAAK,KAAKl6K,EAAEk6K,KAAKl6K,EAAEA,EAAEg8I,OAAO28D,GAAG34M,EACrR,SAASqE,GAAGrE,GAAG,IAAIu6K,GAAIv6K,IAAI24M,GAAG,OAAM,EAAG,IAAIC,GAAG,OAAOx0M,GAAGpE,GAAG44M,IAAG,GAAG,EAAG,IAAI34M,EAAED,EAAEpF,KAAK,GAAG,IAAIoF,EAAEk6K,KAAK,SAASj6K,GAAG,SAASA,IAAIw5K,EAAGx5K,EAAED,EAAEozI,eAAe,IAAInzI,EAAE4sL,GAAG5sL,GAAGgtL,GAAGjtL,EAAEC,GAAGA,EAAE8+K,GAAG9+K,GAAS,GAANmE,GAAGpE,GAAM,KAAKA,EAAEk6K,IAAI,CAAC,IAAIK,EAAG,MAAMp5K,MAAMpB,EAAE,MAAqD,KAA7BC,EAAE,QAApBA,EAAEA,EAAE+/K,eAAyB//K,EAAEggL,WAAW,MAAW,MAAM7+K,MAAMpB,EAAE,MAAM8sL,GAAGkF,GAAG/xL,QAAQ6sL,GAAG8rB,GAAG55B,GAAG/+K,EAAEi8I,WAAW,KAAK,OAAM,EAAG,SAASz9H,KAAK+7J,IAAKsS,GAAG8rB,GAAG,KAAKC,IAAG,GAAI,IAAIl6L,GAAG,GACjY,SAASkvK,KAAK,IAAI,IAAI5tL,EAAE,EAAEA,EAAE0e,GAAG/iB,OAAOqE,IAAI,CAAC,IAAIC,EAAEye,GAAG1e,GAAGq6K,EAAGp6K,EAAEk8L,8BAA8B,KAAKl8L,EAAE64M,gCAAgC,KAAKp6L,GAAG/iB,OAAO,EAAE,IAAIkyL,GAAG3vB,EAAGuY,uBAAuBqX,GAAG5vB,EAAGwY,wBAAwBqX,GAAG,EAAE7nF,GAAE,KAAKi4D,GAAE,KAAKz3D,GAAE,KAAKsnF,IAAG,EAAGqE,IAAG,EAAG,SAASh5B,KAAI,MAAMl4J,MAAMpB,EAAE,MAAO,SAASwyL,GAAGvyL,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEtE,QAAQuE,EAAEF,EAAErE,OAAOuE,IAAI,IAAI69J,GAAE/9J,EAAEE,GAAGD,EAAEC,IAAI,OAAM,EAAG,OAAM,EACtY,SAAS+tL,GAAGjuL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAyH,GAAtHsoL,GAAGtoL,EAAEygG,GAAEjmG,EAAEA,EAAE8/K,cAAc,KAAK9/K,EAAE03L,YAAY,KAAK13L,EAAEo3L,MAAM,EAAExJ,GAAGz7F,QAAQ,OAAOpyF,GAAG,OAAOA,EAAE+/K,cAAcj8K,GAAG2qL,GAAGzuL,EAAEE,EAAEsF,EAAE9D,GAAM2wL,GAAG,CAAC5sL,EAAE,EAAE,EAAE,CAAO,GAAN4sL,IAAG,IAAQ,GAAG5sL,GAAG,MAAMtE,MAAMpB,EAAE,MAAM0F,GAAG,EAAEihG,GAAEy3D,GAAE,KAAKl+J,EAAE03L,YAAY,KAAK9J,GAAGz7F,QAAQs8F,GAAG1uL,EAAEE,EAAEsF,EAAE9D,SAAS2wL,IAAkE,GAA9DxE,GAAGz7F,QAAQu8F,GAAG1uL,EAAE,OAAOk+J,IAAG,OAAOA,GAAE/uG,KAAK2+H,GAAG,EAAErnF,GAAEy3D,GAAEj4D,GAAE,KAAK8nF,IAAG,EAAM/tL,EAAE,MAAMkB,MAAMpB,EAAE,MAAM,OAAOC,EAAE,SAAS4uL,KAAK,IAAI5uL,EAAE,CAAC+/K,cAAc,KAAK6X,UAAU,KAAKqF,UAAU,KAAK/gG,MAAM,KAAK9sC,KAAK,MAA8C,OAAxC,OAAOs3C,GAAER,GAAE65E,cAAcr5E,GAAE1mG,EAAE0mG,GAAEA,GAAEt3C,KAAKpvD,EAAS0mG,GAC/e,SAAS6xD,KAAK,GAAG,OAAO4F,GAAE,CAAC,IAAIn+J,EAAEkmG,GAAEg5C,UAAUl/I,EAAE,OAAOA,EAAEA,EAAE+/K,cAAc,UAAU//K,EAAEm+J,GAAE/uG,KAAK,IAAInvD,EAAE,OAAOymG,GAAER,GAAE65E,cAAcr5E,GAAEt3C,KAAK,GAAG,OAAOnvD,EAAEymG,GAAEzmG,EAAEk+J,GAAEn+J,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMmB,MAAMpB,EAAE,MAAUC,EAAE,CAAC+/K,eAAP5hB,GAAEn+J,GAAqB+/K,cAAc6X,UAAUz5B,GAAEy5B,UAAUqF,UAAU9+B,GAAE8+B,UAAU/gG,MAAMiiE,GAAEjiE,MAAM9sC,KAAK,MAAM,OAAOs3C,GAAER,GAAE65E,cAAcr5E,GAAE1mG,EAAE0mG,GAAEA,GAAEt3C,KAAKpvD,EAAE,OAAO0mG,GAAE,SAASmoF,GAAG7uL,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,EACvY,SAAS4D,GAAG7D,GAAG,IAAIC,EAAEs4J,KAAKr4J,EAAED,EAAEi8F,MAAM,GAAG,OAAOh8F,EAAE,MAAMiB,MAAMpB,EAAE,MAAMG,EAAEm9L,oBAAoBr9L,EAAE,IAAIwF,EAAE24J,GAAEz8J,EAAE8D,EAAEy3L,UAAUx3L,EAAEvF,EAAE6xH,QAAQ,GAAG,OAAOtsH,EAAE,CAAC,GAAG,OAAO/D,EAAE,CAAC,IAAIgE,EAAEhE,EAAE0tD,KAAK1tD,EAAE0tD,KAAK3pD,EAAE2pD,KAAK3pD,EAAE2pD,KAAK1pD,EAAEF,EAAEy3L,UAAUv7L,EAAE+D,EAAEvF,EAAE6xH,QAAQ,KAAK,GAAG,OAAOrwH,EAAE,CAACA,EAAEA,EAAE0tD,KAAK5pD,EAAEA,EAAEoyL,UAAU,IAAIjyL,EAAED,EAAED,EAAE,KAAKy8D,EAAExgE,EAAE,EAAE,CAAC,IAAIhG,EAAEwmE,EAAEi2H,KAAK,IAAIpK,GAAGryL,KAAKA,EAAE,OAAOiK,IAAIA,EAAEA,EAAEypD,KAAK,CAAC+oI,KAAK,EAAE1nE,OAAOvuD,EAAEuuD,OAAO6sE,aAAap7H,EAAEo7H,aAAaC,WAAWr7H,EAAEq7H,WAAWnuI,KAAK,OAAO5pD,EAAE08D,EAAEo7H,eAAet9L,EAAEkiE,EAAEq7H,WAAWv9L,EAAEwF,EAAE08D,EAAEuuD,YAAY,CAAC,IAAIvzH,EAAE,CAACi7L,KAAKz8L,EAAE+0H,OAAOvuD,EAAEuuD,OAAO6sE,aAAap7H,EAAEo7H,aAC9fC,WAAWr7H,EAAEq7H,WAAWnuI,KAAK,MAAM,OAAOzpD,GAAGD,EAAEC,EAAEzI,EAAEuI,EAAED,GAAGG,EAAEA,EAAEypD,KAAKlyD,EAAEgpG,GAAEmxF,OAAO37L,EAAE0pL,IAAI1pL,EAAEwmE,EAAEA,EAAE9S,WAAW,OAAO8S,GAAGA,IAAIxgE,GAAG,OAAOiE,EAAEF,EAAED,EAAEG,EAAEypD,KAAK1pD,EAAEq4J,GAAEv4J,EAAEvF,EAAE8/K,iBAAiB0E,IAAG,GAAIxkL,EAAE8/K,cAAcv6K,EAAEvF,EAAE23L,UAAUnyL,EAAExF,EAAEg9L,UAAUt3L,EAAEzF,EAAEs9L,kBAAkBh4L,EAAE,MAAM,CAACvF,EAAE8/K,cAAc7/K,EAAEu9L,UACrQ,SAAS3O,GAAG9uL,GAAG,IAAIC,EAAEs4J,KAAKr4J,EAAED,EAAEi8F,MAAM,GAAG,OAAOh8F,EAAE,MAAMiB,MAAMpB,EAAE,MAAMG,EAAEm9L,oBAAoBr9L,EAAE,IAAIwF,EAAEtF,EAAEu9L,SAAS/7L,EAAExB,EAAE6xH,QAAQtsH,EAAExF,EAAE8/K,cAAc,GAAG,OAAOr+K,EAAE,CAACxB,EAAE6xH,QAAQ,KAAK,IAAIrsH,EAAEhE,EAAEA,EAAE0tD,KAAK,GAAG3pD,EAAEzF,EAAEyF,EAAEC,EAAE+qH,QAAQ/qH,EAAEA,EAAE0pD,WAAW1pD,IAAIhE,GAAGq8J,GAAEt4J,EAAExF,EAAE8/K,iBAAiB0E,IAAG,GAAIxkL,EAAE8/K,cAAct6K,EAAE,OAAOxF,EAAEg9L,YAAYh9L,EAAE23L,UAAUnyL,GAAGvF,EAAEs9L,kBAAkB/3L,EAAE,MAAM,CAACA,EAAED,GAClV,SAASupL,GAAG/uL,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE29L,YAAYp4L,EAAEA,EAAEvF,EAAE49L,SAAS,IAAIn8L,EAAE24K,EAAGp6K,EAAEk8L,8BAA8Bl8L,EAAE64M,gCAAkL,GAA/I,OAAOp3M,EAAE1B,EAAE0B,IAAI8D,GAAUxF,EAAEA,EAAE89L,kBAAiB99L,GAAG+tL,GAAG/tL,KAAKA,KAAEq6K,EAAGp6K,EAAEk8L,8BAA8B32L,EAAEvF,EAAE64M,gCAAgCtzM,EAAEkZ,GAAGzjB,KAAKgF,KAAMD,EAAE,OAAOE,EAAED,EAAE49L,SAAoB,MAAXn/K,GAAGzjB,KAAKgF,GAASkB,MAAMpB,EAAE,MACrU,SAASivL,GAAGhvL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE29J,GAAE,GAAG,OAAO39J,EAAE,MAAMP,MAAMpB,EAAE,MAAM,IAAI0F,EAAExF,EAAE29L,YAAYl4L,EAAED,EAAExF,EAAE49L,SAASl4L,EAAEkoL,GAAGz7F,QAAQlwB,EAAEv8D,EAAEgnI,UAAS,WAAW,OAAOoiD,GAAGrtL,EAAEzB,EAAEC,MAAKxE,EAAEwmE,EAAE,GAAGhlE,EAAEglE,EAAE,GAAGA,EAAEwkC,GAAE,IAAInpG,EAAEyC,EAAE+/K,cAActvK,EAAElT,EAAEk1J,KAAKn1J,EAAEmT,EAAEutL,YAAY3gM,EAAEE,EAAEsN,OAAOtN,EAAEA,EAAEg4I,UAAU,IAAImpB,EAAEx4D,GACsO,OADpOlmG,EAAE+/K,cAAc,CAACttB,KAAKhiJ,EAAE5F,OAAO5K,EAAEs1I,UAAU/vI,GAAGG,EAAE0lI,WAAU,WAAW56H,EAAEutL,YAAY99L,EAAEuQ,EAAEwtL,YAAYviM,EAAE,IAAIsE,EAAEyF,EAAExF,EAAE49L,SAAS,IAAI9/B,GAAEr4J,EAAE1F,GAAG,CAACA,EAAEE,EAAED,EAAE49L,SAAS9/B,GAAE7gK,EAAE8C,KAAKtE,EAAEsE,GAAGA,EAAEymL,GAAG/nB,GAAGh9J,EAAEo8L,kBAAkB99L,EAAE0B,EAAE4hL,cAActjL,EAAE0B,EAAEo8L,iBAAiBp8L,EAAEiiL,gBAAgB3jL,EAAE,IAAI,IAAIwF,EAC1f9D,EAAEkiL,cAAcj+K,EAAE3F,EAAE,EAAE2F,GAAG,CAAC,IAAIu8D,EAAE,GAAGy+G,GAAGh7K,GAAGpI,EAAE,GAAG2kE,EAAE18D,EAAE08D,IAAIliE,EAAE2F,IAAIpI,MAAK,CAAC2C,EAAED,EAAEuF,IAAIG,EAAE0lI,WAAU,WAAW,OAAO7lI,EAAEvF,EAAE49L,SAAQ,WAAW,IAAI79L,EAAEyQ,EAAEutL,YAAY99L,EAAEuQ,EAAEwtL,YAAY,IAAI/9L,EAAEF,EAAEC,EAAE49L,UAAU,IAAIr4L,EAAEihL,GAAG/nB,GAAGh9J,EAAEo8L,kBAAkBt4L,EAAE9D,EAAE4hL,aAAa,MAAMxJ,GAAI55K,GAAE,WAAW,MAAM45K,WAAU,CAAC75K,EAAEuF,IAAIu4J,GAAEzgK,EAAE4C,IAAI69J,GAAE1gK,EAAE4C,IAAI89J,GAAExgK,EAAEiI,MAAKxF,EAAE,CAAC+xH,QAAQ,KAAK0rE,SAAS,KAAKJ,oBAAoBxO,GAAG2O,kBAAkBtgM,IAAKugM,SAAS/hM,EAAEuzL,GAAG3xE,KAAK,KAAKpX,GAAElmG,GAAGkiE,EAAEg6B,MAAMl8F,EAAEkiE,EAAE+6H,UAAU,KAAK//L,EAAE6xL,GAAGrtL,EAAEzB,EAAEC,GAAGgiE,EAAE69G,cAAc79G,EAAE01H,UAAU16L,GAAUA,EACre,SAASgyL,GAAGlvL,EAAEC,EAAEC,GAAc,OAAO8uL,GAAZz2B,KAAiBv4J,EAAEC,EAAEC,GAAG,SAASivL,GAAGnvL,GAAG,IAAIC,EAAE2uL,KAAmL,MAA9K,oBAAoB5uL,IAAIA,EAAEA,KAAKC,EAAE8/K,cAAc9/K,EAAE23L,UAAU53L,EAAoFA,GAAlFA,EAAEC,EAAEi8F,MAAM,CAAC61B,QAAQ,KAAK0rE,SAAS,KAAKJ,oBAAoBxO,GAAG2O,kBAAkBx9L,IAAOy9L,SAASxO,GAAG3xE,KAAK,KAAKpX,GAAElmG,GAAS,CAACC,EAAE8/K,cAAc//K,GAChR,SAASqvL,GAAGrvL,EAAEC,EAAEC,EAAEsF,GAAkO,OAA/NxF,EAAE,CAACk6K,IAAIl6K,EAAE6yH,OAAO5yH,EAAE63D,QAAQ53D,EAAEo+L,KAAK94L,EAAE4pD,KAAK,MAAsB,QAAhBnvD,EAAEimG,GAAEyxF,cAAsB13L,EAAE,CAAC85L,WAAW,MAAM7zF,GAAEyxF,YAAY13L,EAAEA,EAAE85L,WAAW/5L,EAAEovD,KAAKpvD,GAAmB,QAAfE,EAAED,EAAE85L,YAAoB95L,EAAE85L,WAAW/5L,EAAEovD,KAAKpvD,GAAGwF,EAAEtF,EAAEkvD,KAAKlvD,EAAEkvD,KAAKpvD,EAAEA,EAAEovD,KAAK5pD,EAAEvF,EAAE85L,WAAW/5L,GAAWA,EAAE,SAASuvL,GAAGvvL,GAA4B,OAAdA,EAAE,CAACoyF,QAAQpyF,GAAhB4uL,KAA4B7O,cAAc//K,EAAE,SAASwvL,KAAK,OAAOj3B,KAAKwnB,cAAc,SAAS2P,GAAG1vL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEktL,KAAK1oF,GAAEmrD,OAAOrxJ,EAAE0B,EAAEq+K,cAAcsP,GAAG,EAAEpvL,EAAEC,OAAE,OAAO,IAASsF,EAAE,KAAKA,GACjc,SAASmqL,GAAG3vL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE62J,KAAK/yJ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIC,OAAE,EAAO,GAAG,OAAO04J,GAAE,CAAC,IAAIz4J,EAAEy4J,GAAE4hB,cAA0B,GAAZt6K,EAAEC,EAAEoyD,QAAW,OAAOtyD,GAAG+sL,GAAG/sL,EAAEE,EAAE44L,MAAmB,YAAZjP,GAAGpvL,EAAEC,EAAEuF,EAAED,GAAW0gG,GAAEmrD,OAAOrxJ,EAAE0B,EAAEq+K,cAAcsP,GAAG,EAAEpvL,EAAEC,EAAEuF,EAAED,GAAG,SAASoqL,GAAG5vL,EAAEC,GAAG,OAAOyvL,GAAG,IAAI,EAAE1vL,EAAEC,GAAG,SAAS84M,GAAG/4M,EAAEC,GAAG,OAAO0vL,GAAG,IAAI,EAAE3vL,EAAEC,GAAG,SAAS4vL,GAAG7vL,EAAEC,GAAG,OAAO0vL,GAAG,EAAE,EAAE3vL,EAAEC,GAAG,SAAS6vL,GAAG9vL,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEmyF,QAAQpyF,EAAE,WAAWC,EAAEmyF,QAAQ,YAAtE,EACxY,SAAS29F,GAAG/vL,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE24F,OAAO,CAAC74F,IAAI,KAAY2vL,GAAG,EAAE,EAAEG,GAAGxyE,KAAK,KAAKr9G,EAAED,GAAGE,GAAG,SAAS8vL,MAAM,SAASC,GAAGjwL,EAAEC,GAAG,IAAIC,EAAEq4J,KAAKt4J,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuF,EAAEtF,EAAE6/K,cAAc,OAAG,OAAOv6K,GAAG,OAAOvF,GAAGsyL,GAAGtyL,EAAEuF,EAAE,IAAWA,EAAE,IAAGtF,EAAE6/K,cAAc,CAAC//K,EAAEC,GAAUD,GAAE,SAASmwL,GAAGnwL,EAAEC,GAAG,IAAIC,EAAEq4J,KAAKt4J,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuF,EAAEtF,EAAE6/K,cAAc,OAAG,OAAOv6K,GAAG,OAAOvF,GAAGsyL,GAAGtyL,EAAEuF,EAAE,IAAWA,EAAE,IAAGxF,EAAEA,IAAIE,EAAE6/K,cAAc,CAAC//K,EAAEC,GAAUD,GACzZ,SAASswL,GAAGtwL,EAAEC,GAAG,IAAIC,EAAE8iL,KAAKE,GAAG,GAAGhjL,EAAE,GAAGA,GAAE,WAAWF,GAAE,MAAMkjL,GAAG,GAAGhjL,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAE4tL,GAAGnX,WAAWmX,GAAGnX,WAAW,EAAE,IAAI32K,GAAE,GAAIC,IAAV,QAAsB6tL,GAAGnX,WAAWz2K,MAC5J,SAAS+uL,GAAGjvL,EAAEC,EAAEC,GAAG,IAAIsF,EAAEs4J,KAAIp8J,EAAE+kL,GAAGzmL,GAAGyF,EAAE,CAAC0yL,KAAKz2L,EAAE+uH,OAAOvwH,EAAEo9L,aAAa,KAAKC,WAAW,KAAKnuI,KAAK,MAAM1pD,EAAEzF,EAAE8xH,QAA6E,GAArE,OAAOrsH,EAAED,EAAE2pD,KAAK3pD,GAAGA,EAAE2pD,KAAK1pD,EAAE0pD,KAAK1pD,EAAE0pD,KAAK3pD,GAAGxF,EAAE8xH,QAAQtsH,EAAEC,EAAE1F,EAAEk/I,UAAal/I,IAAIkmG,IAAG,OAAOxgG,GAAGA,IAAIwgG,GAAEmsF,GAAGrE,IAAG,MAAO,CAAC,GAAG,IAAIhuL,EAAEq3L,QAAQ,OAAO3xL,GAAG,IAAIA,EAAE2xL,QAAiC,QAAxB3xL,EAAEzF,EAAEo9L,qBAA8B,IAAI,IAAI13L,EAAE1F,EAAEu9L,kBAAkBt7H,EAAEx8D,EAAEC,EAAEzF,GAAmC,GAAhCuF,EAAE63L,aAAa53L,EAAED,EAAE83L,WAAWr7H,EAAK67F,GAAE77F,EAAEv8D,GAAG,OAAO,MAAMjK,IAAagrL,GAAG1mL,EAAE0B,EAAE8D,IAC5Z,IAAImpL,GAAG,CAACyQ,YAAYphC,GAAE4Z,YAAYve,GAAEpU,WAAWoU,GAAEhuB,UAAUguB,GAAEye,oBAAoBze,GAAE7S,gBAAgB6S,GAAEhsB,QAAQgsB,GAAE3S,WAAW2S,GAAExsB,OAAOwsB,GAAE1sB,SAAS0sB,GAAEwe,cAAcxe,GAAEgmC,iBAAiBhmC,GAAEimC,cAAcjmC,GAAEkmC,iBAAiBlmC,GAAEmmC,oBAAoBnmC,GAAEomC,0BAAyB,GAAI37L,GAAG,CAACs7L,YAAYphC,GAAE4Z,YAAY,SAAS53K,EAAEC,GAA4C,OAAzC2uL,KAAK7O,cAAc,CAAC//K,OAAE,IAASC,EAAE,KAAKA,GAAUD,GAAGilJ,WAAW+Y,GAAE3yB,UAAUukD,GAAG9X,oBAAoB,SAAS93K,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE24F,OAAO,CAAC74F,IAAI,KAAY0vL,GAAG,EAAE,EAAEI,GAAGxyE,KAAK,KAAKr9G,EAAED,GAAGE,IAAIsmJ,gBAAgB,SAASxmJ,EAC7gBC,GAAG,OAAOyvL,GAAG,EAAE,EAAE1vL,EAAEC,IAAIotI,QAAQ,SAASrtI,EAAEC,GAAG,IAAIC,EAAE0uL,KAAqD,OAAhD3uL,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIE,EAAE6/K,cAAc,CAAC//K,EAAEC,GAAUD,GAAG0mJ,WAAW,SAAS1mJ,EAAEC,EAAEC,GAAG,IAAIsF,EAAEopL,KAAuK,OAAlK3uL,OAAE,IAASC,EAAEA,EAAED,GAAGA,EAAEuF,EAAEu6K,cAAcv6K,EAAEoyL,UAAU33L,EAAmFD,GAAjFA,EAAEwF,EAAE02F,MAAM,CAAC61B,QAAQ,KAAK0rE,SAAS,KAAKJ,oBAAoBr9L,EAAEw9L,kBAAkBv9L,IAAOw9L,SAASxO,GAAG3xE,KAAK,KAAKpX,GAAElmG,GAAS,CAACwF,EAAEu6K,cAAc//K,IAAI6sI,OAAO0iD,GAAG5iD,SAASwiD,GAAGtX,cAAcmY,GAAGqP,iBAAiB,SAASr/L,GAAG,IAAIC,EAAEkvL,GAAGnvL,GAAGE,EAAED,EAAE,GAAGuF,EAAEvF,EAAE,GACva,OAD0a2vL,IAAG,WAAW,IAAI3vL,EAAE6tL,GAAGnX,WAAWmX,GAAGnX,WAAW,EAAE,IAAInxK,EAAExF,GAAN,QAAiB8tL,GAAGnX,WACzf12K,KAAI,CAACD,IAAWE,GAAGo/L,cAAc,WAAW,IAAIt/L,EAAEmvL,IAAG,GAAIlvL,EAAED,EAAE,GAA8B,OAANuvL,GAArBvvL,EAAEswL,GAAGhzE,KAAK,KAAKt9G,EAAE,KAAgB,CAACA,EAAEC,IAAIs/L,iBAAiB,SAASv/L,EAAEC,EAAEC,GAAG,IAAIsF,EAAEopL,KAAkF,OAA7EppL,EAAEu6K,cAAc,CAACttB,KAAK,CAACurC,YAAY/9L,EAAEg+L,YAAY,MAAMpzL,OAAO7K,EAAEu1I,UAAUr1I,GAAU8uL,GAAGxpL,EAAExF,EAAEC,EAAEC,IAAIs/L,oBAAoB,WAAW,GAAGoZ,GAAG,CAAC,IAAI54M,GAAE,EAAGC,EAAE46K,IAAG,WAA6B,MAAlB76K,IAAIA,GAAE,EAAGE,EAAE66K,OAAa55K,MAAMpB,EAAE,SAASG,EAAEivL,GAAGlvL,GAAG,GAAwE,OAArE,KAAY,EAAPimG,GAAE7qD,QAAU6qD,GAAEmrD,OAAO,IAAIg+B,GAAG,GAAE,WAAWnvL,EAAE66K,aAAO,EAAO,OAAc96K,EAAe,OAANkvL,GAAPlvL,EAAE86K,MAAkB96K,GAAGw/L,0BAAyB,GAAIhR,GAAG,CAAC2Q,YAAYphC,GAC1f4Z,YAAYqY,GAAGhrC,WAAW+Y,GAAE3yB,UAAU0tE,GAAGjhC,oBAAoBiY,GAAGvpC,gBAAgBqpC,GAAGxiD,QAAQ8iD,GAAGzpC,WAAW7iJ,GAAGgpI,OAAO2iD,GAAG7iD,SAAS,WAAW,OAAO9oI,GAAGgrL,KAAKhX,cAAcmY,GAAGqP,iBAAiB,SAASr/L,GAAG,IAAIC,EAAE4D,GAAGgrL,IAAI3uL,EAAED,EAAE,GAAGuF,EAAEvF,EAAE,GAA6F,OAA1F84M,IAAG,WAAW,IAAI94M,EAAE6tL,GAAGnX,WAAWmX,GAAGnX,WAAW,EAAE,IAAInxK,EAAExF,GAAN,QAAiB8tL,GAAGnX,WAAW12K,KAAI,CAACD,IAAWE,GAAGo/L,cAAc,WAAW,IAAIt/L,EAAE6D,GAAGgrL,IAAI,GAAG,MAAM,CAACW,KAAKp9F,QAAQpyF,IAAIu/L,iBAAiBrQ,GAAGsQ,oBAAoB,WAAW,OAAO37L,GAAGgrL,IAAI,IAAI4Q,0BAAyB,GAAI/Q,GAAG,CAAC0Q,YAAYphC,GACzf4Z,YAAYqY,GAAGhrC,WAAW+Y,GAAE3yB,UAAU0tE,GAAGjhC,oBAAoBiY,GAAGvpC,gBAAgBqpC,GAAGxiD,QAAQ8iD,GAAGzpC,WAAWooC,GAAGjiD,OAAO2iD,GAAG7iD,SAAS,WAAW,OAAOmiD,GAAGD,KAAKhX,cAAcmY,GAAGqP,iBAAiB,SAASr/L,GAAG,IAAIC,EAAE6uL,GAAGD,IAAI3uL,EAAED,EAAE,GAAGuF,EAAEvF,EAAE,GAA6F,OAA1F84M,IAAG,WAAW,IAAI94M,EAAE6tL,GAAGnX,WAAWmX,GAAGnX,WAAW,EAAE,IAAInxK,EAAExF,GAAN,QAAiB8tL,GAAGnX,WAAW12K,KAAI,CAACD,IAAWE,GAAGo/L,cAAc,WAAW,IAAIt/L,EAAE8uL,GAAGD,IAAI,GAAG,MAAM,CAACW,KAAKp9F,QAAQpyF,IAAIu/L,iBAAiBrQ,GAAGsQ,oBAAoB,WAAW,OAAO1Q,GAAGD,IAAI,IAAI4Q,0BAAyB,GAAIhP,GAAGvyB,EAAG0Y,kBAC/e6N,IAAG,EAAG,SAASjlB,GAAEx/J,EAAEC,EAAEC,EAAEsF,GAAGvF,EAAEqoB,MAAM,OAAOtoB,EAAEw4M,GAAGv4M,EAAE,KAAKC,EAAEsF,GAAG+iL,GAAGtoL,EAAED,EAAEsoB,MAAMpoB,EAAEsF,GAAG,SAASmrL,GAAG3wL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAGxB,EAAEA,EAAE+iC,OAAO,IAAIx9B,EAAExF,EAAE6tI,IAA8B,OAA1B02C,GAAGvkL,EAAEyB,GAAG8D,EAAEyoL,GAAGjuL,EAAEC,EAAEC,EAAEsF,EAAEC,EAAE/D,GAAM,OAAO1B,GAAIykL,IAA0ExkL,EAAEoxJ,OAAO,EAAEmO,GAAEx/J,EAAEC,EAAEuF,EAAE9D,GAAUzB,EAAEqoB,QAA/FroB,EAAE03L,YAAY33L,EAAE23L,YAAY13L,EAAEoxJ,QAAQ,IAAIrxJ,EAAEq3L,QAAQ31L,EAAEmvL,GAAG7wL,EAAEC,EAAEyB,IACzO,SAASovL,GAAG9wL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,GAAG,OAAOzF,EAAE,CAAC,IAAI0F,EAAExF,EAAEtF,KAAK,MAAG,oBAAoB8K,GAAIqrL,GAAGrrL,SAAI,IAASA,EAAEgqJ,cAAc,OAAOxvJ,EAAEmwJ,cAAS,IAASnwJ,EAAEwvJ,eAAsD1vJ,EAAEs4M,GAAGp4M,EAAEtF,KAAK,KAAK4K,EAAEvF,EAAEA,EAAEo7C,KAAK51C,IAAKqoI,IAAI7tI,EAAE6tI,IAAI9tI,EAAEg8I,OAAO/7I,EAASA,EAAEqoB,MAAMtoB,IAAvGC,EAAEi6K,IAAI,GAAGj6K,EAAErF,KAAK8K,EAAEsrL,GAAGhxL,EAAEC,EAAEyF,EAAEF,EAAE9D,EAAE+D,IAAoF,OAAVC,EAAE1F,EAAEsoB,MAAS,KAAK5mB,EAAE+D,KAAK/D,EAAEgE,EAAE0tI,eAA0BlzI,EAAE,QAAdA,EAAEA,EAAEmwJ,SAAmBnwJ,EAAEwjL,IAAKhiL,EAAE8D,IAAIxF,EAAE8tI,MAAM7tI,EAAE6tI,KAAY+iD,GAAG7wL,EAAEC,EAAEwF,IAAGxF,EAAEoxJ,OAAO,GAAErxJ,EAAEq4M,GAAG3yM,EAAEF,IAAKsoI,IAAI7tI,EAAE6tI,IAAI9tI,EAAEg8I,OAAO/7I,EAASA,EAAEqoB,MAAMtoB,GAClb,SAASgxL,GAAGhxL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,GAAG,OAAOzF,GAAG0jL,GAAG1jL,EAAEozI,cAAc5tI,IAAIxF,EAAE8tI,MAAM7tI,EAAE6tI,IAAI,IAAG22C,IAAG,EAAG,KAAKh/K,EAAE/D,GAAqC,OAAOzB,EAAEo3L,MAAMr3L,EAAEq3L,MAAMxG,GAAG7wL,EAAEC,EAAEwF,GAAhE,KAAa,MAARzF,EAAEqxJ,SAAeozB,IAAG,GAA0C,OAAO+M,GAAGxxL,EAAEC,EAAEC,EAAEsF,EAAEC,GACnL,SAASgsL,GAAGzxL,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE47L,aAAan6L,EAAE8D,EAAEqS,SAASpS,EAAE,OAAOzF,EAAEA,EAAE+/K,cAAc,KAAK,GAAG,WAAWv6K,EAAE61C,MAAM,kCAAkC71C,EAAE61C,KAAK,GAAG,KAAY,EAAPp7C,EAAEo7C,MAAQp7C,EAAE8/K,cAAc,CAACqgB,UAAU,GAAG1O,GAAGzxL,EAAEC,OAAQ,IAAG,KAAO,WAAFA,GAA8E,OAAOF,EAAE,OAAOyF,EAAEA,EAAE26L,UAAUlgM,EAAEA,EAAED,EAAEo3L,MAAMp3L,EAAEg3L,WAAW,WAAWh3L,EAAE8/K,cAAc,CAACqgB,UAAUpgM,GAAG0xL,GAAGzxL,EAAED,GAAG,KAAxKC,EAAE8/K,cAAc,CAACqgB,UAAU,GAAG1O,GAAGzxL,EAAE,OAAOwF,EAAEA,EAAE26L,UAAUlgM,QAA0H,OAAOuF,GAAGD,EAAEC,EAAE26L,UAAUlgM,EAAED,EAAE8/K,cAAc,MAAMv6K,EAAEtF,EAAEwxL,GAAGzxL,EAAEuF,GAAc,OAAXg6J,GAAEx/J,EAAEC,EAAEyB,EAAExB,GAAUD,EAAEqoB,MACze,SAASqpK,GAAG3xL,EAAEC,GAAG,IAAIC,EAAED,EAAE6tI,KAAO,OAAO9tI,GAAG,OAAOE,GAAG,OAAOF,GAAGA,EAAE8tI,MAAM5tI,KAAED,EAAEoxJ,OAAO,KAAI,SAASmgC,GAAGxxL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAEk5J,GAAEz+J,GAAG2xL,GAAG7rF,GAAE5T,QAA4C,OAApC3sF,EAAEo6K,GAAG5/K,EAAEwF,GAAG++K,GAAGvkL,EAAEyB,GAAGxB,EAAE+tL,GAAGjuL,EAAEC,EAAEC,EAAEsF,EAAEC,EAAE/D,GAAM,OAAO1B,GAAIykL,IAA0ExkL,EAAEoxJ,OAAO,EAAEmO,GAAEx/J,EAAEC,EAAEC,EAAEwB,GAAUzB,EAAEqoB,QAA/FroB,EAAE03L,YAAY33L,EAAE23L,YAAY13L,EAAEoxJ,QAAQ,IAAIrxJ,EAAEq3L,QAAQ31L,EAAEmvL,GAAG7wL,EAAEC,EAAEyB,IAC7P,SAASkwL,GAAG5xL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,GAAGi9J,GAAEz+J,GAAG,CAAC,IAAIuF,GAAE,EAAGw6K,GAAGhgL,QAAQwF,GAAE,EAAW,GAAR++K,GAAGvkL,EAAEyB,GAAM,OAAOzB,EAAEg8I,UAAU,OAAOj8I,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAG40B,GAAGhmL,EAAEC,EAAEsF,GAAGgiL,GAAGvnL,EAAEC,EAAEsF,EAAE9D,GAAG8D,GAAE,OAAQ,GAAG,OAAOxF,EAAE,CAAC,IAAI0F,EAAEzF,EAAEg8I,UAAUt2I,EAAE1F,EAAEmzI,cAAc1tI,EAAE4iI,MAAM3iI,EAAE,IAAIu8D,EAAEx8D,EAAEkD,QAAQlN,EAAEwE,EAAEsvJ,YAAY,kBAAkB9zJ,GAAG,OAAOA,EAAEA,EAAEsiK,GAAEtiK,GAAwBA,EAAEmkL,GAAG5/K,EAAzBvE,EAAEijK,GAAEz+J,GAAG2xL,GAAG7rF,GAAE5T,SAAmB,IAAIl1F,EAAEgD,EAAE2vJ,yBAAyBtyJ,EAAE,oBAAoBL,GAAG,oBAAoBwI,EAAE6zL,wBAAwBh8L,GAAG,oBAAoBmI,EAAE2zL,kCAAkC,oBAC5e3zL,EAAE+wJ,4BAA4B9wJ,IAAIH,GAAG08D,IAAIxmE,IAAIwqL,GAAGjmL,EAAEyF,EAAEF,EAAE9J,GAAGgpL,IAAG,EAAG,IAAIj0K,EAAExQ,EAAE8/K,cAAcr6K,EAAE+vC,MAAMhlC,EAAEw0K,GAAGhlL,EAAEuF,EAAEE,EAAEhE,GAAGwgE,EAAEjiE,EAAE8/K,cAAcp6K,IAAIH,GAAGiL,IAAIyxD,GAAGo8F,GAAElsE,SAASsyF,IAAI,oBAAoBxnL,IAAIipL,GAAGlmL,EAAEC,EAAEhD,EAAEsI,GAAG08D,EAAEjiE,EAAE8/K,gBAAgBp6K,EAAE++K,IAAIsB,GAAG/lL,EAAEC,EAAEyF,EAAEH,EAAEiL,EAAEyxD,EAAExmE,KAAK6B,GAAG,oBAAoBmI,EAAE8zL,2BAA2B,oBAAoB9zL,EAAE+zL,qBAAqB,oBAAoB/zL,EAAE+zL,oBAAoB/zL,EAAE+zL,qBAAqB,oBAAoB/zL,EAAE8zL,2BAA2B9zL,EAAE8zL,6BAA6B,oBAAoB9zL,EAAE68I,oBACxftiJ,EAAEoxJ,OAAO,KAAK,oBAAoB3rJ,EAAE68I,oBAAoBtiJ,EAAEoxJ,OAAO,GAAGpxJ,EAAEmzI,cAAc5tI,EAAEvF,EAAE8/K,cAAc79G,GAAGx8D,EAAE4iI,MAAM9iI,EAAEE,EAAE+vC,MAAMysB,EAAEx8D,EAAEkD,QAAQlN,EAAE8J,EAAEG,IAAI,oBAAoBD,EAAE68I,oBAAoBtiJ,EAAEoxJ,OAAO,GAAG7rJ,GAAE,OAAQ,CAACE,EAAEzF,EAAEg8I,UAAU2oC,GAAG5kL,EAAEC,GAAG0F,EAAE1F,EAAEmzI,cAAc13I,EAAEuE,EAAErF,OAAOqF,EAAEm6L,YAAYz0L,EAAEm+K,GAAG7jL,EAAErF,KAAK+K,GAAGD,EAAE4iI,MAAM5sI,EAAE6B,EAAE0C,EAAE47L,aAAaprL,EAAE/K,EAAEkD,QAAwB,kBAAhBs5D,EAAEhiE,EAAEsvJ,cAAiC,OAAOttF,EAAEA,EAAE87F,GAAE97F,GAAwBA,EAAE29G,GAAG5/K,EAAzBiiE,EAAEy8F,GAAEz+J,GAAG2xL,GAAG7rF,GAAE5T,SAAmB,IAAI90F,EAAE4C,EAAE2vJ,0BAA0B3yJ,EAAE,oBAAoBI,GAAG,oBAAoBoI,EAAE6zL,0BAC9e,oBAAoB7zL,EAAE2zL,kCAAkC,oBAAoB3zL,EAAE+wJ,4BAA4B9wJ,IAAIpI,GAAGkT,IAAIyxD,IAAIgkH,GAAGjmL,EAAEyF,EAAEF,EAAE08D,GAAGwiH,IAAG,EAAGj0K,EAAExQ,EAAE8/K,cAAcr6K,EAAE+vC,MAAMhlC,EAAEw0K,GAAGhlL,EAAEuF,EAAEE,EAAEhE,GAAG,IAAIrE,EAAE4C,EAAE8/K,cAAcp6K,IAAIpI,GAAGkT,IAAIpT,GAAGihK,GAAElsE,SAASsyF,IAAI,oBAAoBpnL,IAAI6oL,GAAGlmL,EAAEC,EAAE5C,EAAEkI,GAAGnI,EAAE4C,EAAE8/K,gBAAgBrkL,EAAEgpL,IAAIsB,GAAG/lL,EAAEC,EAAExE,EAAE8J,EAAEiL,EAAEpT,EAAE6kE,KAAKhlE,GAAG,oBAAoBwI,EAAE86L,4BAA4B,oBAAoB96L,EAAE+6L,sBAAsB,oBAAoB/6L,EAAE+6L,qBAAqB/6L,EAAE+6L,oBAAoBj7L,EAAEnI,EAAE6kE,GAAG,oBAAoBx8D,EAAE86L,4BACvf96L,EAAE86L,2BAA2Bh7L,EAAEnI,EAAE6kE,IAAI,oBAAoBx8D,EAAEw9I,qBAAqBjjJ,EAAEoxJ,OAAO,GAAG,oBAAoB3rJ,EAAE6zL,0BAA0Bt5L,EAAEoxJ,OAAO,OAAO,oBAAoB3rJ,EAAEw9I,oBAAoBv9I,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,GAAG,oBAAoB3rJ,EAAE6zL,yBAAyB5zL,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,KAAKpxJ,EAAEmzI,cAAc5tI,EAAEvF,EAAE8/K,cAAc1iL,GAAGqI,EAAE4iI,MAAM9iI,EAAEE,EAAE+vC,MAAMp4C,EAAEqI,EAAEkD,QAAQs5D,EAAE18D,EAAE9J,IAAI,oBAAoBgK,EAAEw9I,oBAAoBv9I,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBACpf9/K,EAAEoxJ,OAAO,GAAG,oBAAoB3rJ,EAAE6zL,yBAAyB5zL,IAAI3F,EAAEozI,eAAe3iI,IAAIzQ,EAAE+/K,gBAAgB9/K,EAAEoxJ,OAAO,KAAK7rJ,GAAE,GAAI,OAAOssL,GAAG9xL,EAAEC,EAAEC,EAAEsF,EAAEC,EAAE/D,GAAG,SAASowL,GAAG9xL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAGksL,GAAG3xL,EAAEC,GAAG,IAAIyF,EAAE,KAAa,GAARzF,EAAEoxJ,OAAU,IAAI7rJ,IAAIE,EAAE,OAAOhE,GAAGw+K,GAAGjgL,EAAEC,GAAE,GAAI2wL,GAAG7wL,EAAEC,EAAEwF,GAAGD,EAAEvF,EAAEg8I,UAAUw0C,GAAGr+F,QAAQnyF,EAAE,IAAI0F,EAAED,GAAG,oBAAoBxF,EAAEq3I,yBAAyB,KAAK/xI,EAAEy9B,SAAuI,OAA9HhjC,EAAEoxJ,OAAO,EAAE,OAAOrxJ,GAAG0F,GAAGzF,EAAEqoB,MAAMigK,GAAGtoL,EAAED,EAAEsoB,MAAM,KAAK7iB,GAAGxF,EAAEqoB,MAAMigK,GAAGtoL,EAAE,KAAK0F,EAAEF,IAAI+5J,GAAEx/J,EAAEC,EAAE0F,EAAEF,GAAGxF,EAAE8/K,cAAcv6K,EAAEiwC,MAAM/zC,GAAGw+K,GAAGjgL,EAAEC,GAAE,GAAWD,EAAEqoB,MAC7d,SAAShK,GAAGte,GAAG,IAAIC,EAAED,EAAEi8I,UAAUh8I,EAAE2gM,eAAehiL,GAAG5e,EAAEC,EAAE2gM,eAAe3gM,EAAE2gM,iBAAiB3gM,EAAE2I,SAAS3I,EAAE2I,SAASgW,GAAG5e,EAAEC,EAAE2I,SAAQ,GAAIqjL,GAAGjsL,EAAEC,EAAEi8I,eAAe,IAS0Ny2C,GAAGE,GAAGE,GAAGC,GAT/Nz0K,GAAG,CAACyhK,WAAW,KAAKihB,UAAU,GAC5L,SAASxiL,GAAGze,EAAEC,EAAEC,GAAG,IAAsCwF,EAAlCF,EAAEvF,EAAE47L,aAAan6L,EAAE03J,GAAEhnE,QAAQ3sF,GAAE,EAA6M,OAAvMC,EAAE,KAAa,GAARzF,EAAEoxJ,UAAa3rJ,GAAE,OAAO1F,GAAG,OAAOA,EAAE+/K,gBAAiB,KAAO,EAAFr+K,IAAMgE,GAAGD,GAAE,EAAGxF,EAAEoxJ,QAAQ,IAAI,OAAOrxJ,GAAG,OAAOA,EAAE+/K,oBAAe,IAASv6K,EAAEkyI,WAAU,IAAKlyI,EAAE27L,6BAA6Bz/L,GAAG,GAAG08J,GAAEhF,GAAI,EAAF13J,GAAQ,OAAO1B,QAAG,IAASwF,EAAEkyI,UAAUg2C,GAAGztL,GAAGD,EAAEwF,EAAEqS,SAASnW,EAAE8D,EAAEkyI,SAAYjyI,GAASzF,EAAE2e,GAAG1e,EAAED,EAAE0B,EAAExB,GAAGD,EAAEqoB,MAAMy3J,cAAc,CAACqgB,UAAUlgM,GAAGD,EAAE8/K,cAAcxhK,GAAGve,GAAK,kBAAkBwF,EAAE67L,2BAAiCrhM,EAAE2e,GAAG1e,EAAED,EAAE0B,EAAExB,GAAGD,EAAEqoB,MAAMy3J,cAAc,CAACqgB,UAAUlgM,GAC/fD,EAAE8/K,cAAcxhK,GAAGte,EAAEo3L,MAAM,SAASr3L,KAAEE,EAAE8xL,GAAG,CAAC32I,KAAK,UAAUxjC,SAAS7X,GAAGC,EAAEo7C,KAAKn7C,EAAE,OAAQ87I,OAAO/7I,EAASA,EAAEqoB,MAAMpoB,KAAYF,EAAE+/K,cAAkBt6K,GAASD,EAAEysL,GAAGjyL,EAAEC,EAAEuF,EAAEqS,SAASrS,EAAEkyI,SAASx3I,GAAGuF,EAAExF,EAAEqoB,MAAM5mB,EAAE1B,EAAEsoB,MAAMy3J,cAAct6K,EAAEs6K,cAAc,OAAOr+K,EAAE,CAAC0+L,UAAUlgM,GAAG,CAACkgM,UAAU1+L,EAAE0+L,UAAUlgM,GAAGuF,EAAEwxL,WAAWj3L,EAAEi3L,YAAY/2L,EAAED,EAAE8/K,cAAcxhK,GAAG/Y,IAAEtF,EAAEiyL,GAAGnyL,EAAEC,EAAEuF,EAAEqS,SAAS3X,GAAGD,EAAE8/K,cAAc,KAAY7/K,IAClQ,SAASye,GAAG3e,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEq7C,KAAK51C,EAAEzF,EAAEsoB,MAAuK,OAAjKroB,EAAE,CAACo7C,KAAK,SAASxjC,SAAS5X,GAAG,KAAO,EAAFyB,IAAM,OAAO+D,GAAGA,EAAEwxL,WAAW,EAAExxL,EAAEo2L,aAAa57L,GAAGwF,EAAEusL,GAAG/xL,EAAEyB,EAAE,EAAE,MAAMxB,EAAEq4M,GAAGr4M,EAAEwB,EAAE8D,EAAE,MAAMC,EAAEu2I,OAAOh8I,EAAEE,EAAE87I,OAAOh8I,EAAEyF,EAAEq3I,QAAQ58I,EAAEF,EAAEsoB,MAAM7iB,EAASvF,EACrV,SAASiyL,GAAGnyL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAE1B,EAAEsoB,MAAiL,OAA3KtoB,EAAE0B,EAAEo7I,QAAQ58I,EAAEm4M,GAAG32M,EAAE,CAAC25C,KAAK,UAAUxjC,SAAS3X,IAAI,KAAY,EAAPD,EAAEo7C,QAAUn7C,EAAEm3L,MAAM7xL,GAAGtF,EAAE87I,OAAO/7I,EAAEC,EAAE48I,QAAQ,KAAK,OAAO98I,IAAIA,EAAEg6L,WAAW,KAAKh6L,EAAEqxJ,MAAM,EAAEpxJ,EAAEg6L,YAAYh6L,EAAE85L,WAAW/5L,GAAUC,EAAEqoB,MAAMpoB,EAC7N,SAAS+xL,GAAGjyL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAExF,EAAEo7C,KAAK31C,EAAE1F,EAAEsoB,MAAMtoB,EAAE0F,EAAEo3I,QAAQ,IAAIn3I,EAAE,CAAC01C,KAAK,SAASxjC,SAAS3X,GAAoS,OAAjS,KAAO,EAAFuF,IAAMxF,EAAEqoB,QAAQ5iB,IAAGxF,EAAED,EAAEqoB,OAAQ2uK,WAAW,EAAE/2L,EAAE27L,aAAal2L,EAAiB,QAAfD,EAAExF,EAAE65L,aAAqB95L,EAAEg6L,YAAY/5L,EAAE+5L,YAAYh6L,EAAE85L,WAAWr0L,EAAEA,EAAEs0L,WAAW,MAAM/5L,EAAEg6L,YAAYh6L,EAAE85L,WAAW,MAAM75L,EAAEm4M,GAAG3yM,EAAEC,GAAG,OAAO3F,EAAEwF,EAAE6yM,GAAGr4M,EAAEwF,IAAIA,EAAE+yM,GAAG/yM,EAAEC,EAAE/D,EAAE,OAAQ2vJ,OAAO,EAAG7rJ,EAAEw2I,OAAO/7I,EAAEC,EAAE87I,OAAO/7I,EAAEC,EAAE48I,QAAQt3I,EAAEvF,EAAEqoB,MAAMpoB,EAASsF,EAAE,SAAS4sL,GAAGpyL,EAAEC,GAAGD,EAAEq3L,OAAOp3L,EAAE,IAAIC,EAAEF,EAAEk/I,UAAU,OAAOh/I,IAAIA,EAAEm3L,OAAOp3L,GAAGskL,GAAGvkL,EAAEg8I,OAAO/7I,GACtd,SAASuyL,GAAGxyL,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,IAAIC,EAAE1F,EAAE+/K,cAAc,OAAOr6K,EAAE1F,EAAE+/K,cAAc,CAAC4hB,YAAY1hM,EAAE2hM,UAAU,KAAKC,mBAAmB,EAAExvG,KAAK7sF,EAAEu1F,KAAK76F,EAAE4hM,SAASpgM,EAAEq4L,WAAWt0L,IAAIC,EAAEi8L,YAAY1hM,EAAEyF,EAAEk8L,UAAU,KAAKl8L,EAAEm8L,mBAAmB,EAAEn8L,EAAE2sF,KAAK7sF,EAAEE,EAAEq1F,KAAK76F,EAAEwF,EAAEo8L,SAASpgM,EAAEgE,EAAEq0L,WAAWt0L,GACvQ,SAASgtL,GAAGzyL,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE47L,aAAan6L,EAAE8D,EAAE81L,YAAY71L,EAAED,EAAEu1F,KAAqC,GAAhCykE,GAAEx/J,EAAEC,EAAEuF,EAAEqS,SAAS3X,GAAkB,KAAO,GAAtBsF,EAAE4zJ,GAAEhnE,UAAqB5sF,EAAI,EAAFA,EAAI,EAAEvF,EAAEoxJ,OAAO,OAAO,CAAC,GAAG,OAAOrxJ,GAAG,KAAa,GAARA,EAAEqxJ,OAAUrxJ,EAAE,IAAIA,EAAEC,EAAEqoB,MAAM,OAAOtoB,GAAG,CAAC,GAAG,KAAKA,EAAEk6K,IAAI,OAAOl6K,EAAE+/K,eAAeqS,GAAGpyL,EAAEE,QAAQ,GAAG,KAAKF,EAAEk6K,IAAIkY,GAAGpyL,EAAEE,QAAQ,GAAG,OAAOF,EAAEsoB,MAAM,CAACtoB,EAAEsoB,MAAM0zH,OAAOh8I,EAAEA,EAAEA,EAAEsoB,MAAM,SAAS,GAAGtoB,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAE88I,SAAS,CAAC,GAAG,OAAO98I,EAAEg8I,QAAQh8I,EAAEg8I,SAAS/7I,EAAE,MAAMD,EAAEA,EAAEA,EAAEg8I,OAAOh8I,EAAE88I,QAAQd,OAAOh8I,EAAEg8I,OAAOh8I,EAAEA,EAAE88I,QAAQt3I,GAAG,EAAS,GAAP44J,GAAEhF,GAAE5zJ,GAAM,KAAY,EAAPvF,EAAEo7C,MAAQp7C,EAAE8/K,cACxe,UAAU,OAAOr+K,GAAG,IAAK,WAAqB,IAAVxB,EAAED,EAAEqoB,MAAU5mB,EAAE,KAAK,OAAOxB,GAAiB,QAAdF,EAAEE,EAAEg/I,YAAoB,OAAOmtC,GAAGrsL,KAAK0B,EAAExB,GAAGA,EAAEA,EAAE48I,QAAY,QAAJ58I,EAAEwB,IAAYA,EAAEzB,EAAEqoB,MAAMroB,EAAEqoB,MAAM,OAAO5mB,EAAExB,EAAE48I,QAAQ58I,EAAE48I,QAAQ,MAAM01C,GAAGvyL,GAAE,EAAGyB,EAAExB,EAAEuF,EAAExF,EAAE85L,YAAY,MAAM,IAAK,YAA6B,IAAjB75L,EAAE,KAAKwB,EAAEzB,EAAEqoB,MAAUroB,EAAEqoB,MAAM,KAAK,OAAO5mB,GAAG,CAAe,GAAG,QAAjB1B,EAAE0B,EAAEw9I,YAAuB,OAAOmtC,GAAGrsL,GAAG,CAACC,EAAEqoB,MAAM5mB,EAAE,MAAM1B,EAAE0B,EAAEo7I,QAAQp7I,EAAEo7I,QAAQ58I,EAAEA,EAAEwB,EAAEA,EAAE1B,EAAEwyL,GAAGvyL,GAAE,EAAGC,EAAE,KAAKuF,EAAExF,EAAE85L,YAAY,MAAM,IAAK,WAAWvH,GAAGvyL,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAE85L,YAAY,MAAM,QAAQ95L,EAAE8/K,cAAc,KAAK,OAAO9/K,EAAEqoB,MAC/f,SAASuoK,GAAG7wL,EAAEC,EAAEC,GAAyD,GAAtD,OAAOF,IAAIC,EAAEk3L,aAAan3L,EAAEm3L,cAAc/R,IAAInlL,EAAEo3L,MAAS,KAAKn3L,EAAED,EAAEg3L,YAAY,CAAC,GAAG,OAAOj3L,GAAGC,EAAEqoB,QAAQtoB,EAAEsoB,MAAM,MAAMnnB,MAAMpB,EAAE,MAAM,GAAG,OAAOE,EAAEqoB,MAAM,CAA4C,IAAjCpoB,EAAEm4M,GAAZr4M,EAAEC,EAAEqoB,MAAatoB,EAAE67L,cAAc57L,EAAEqoB,MAAMpoB,EAAMA,EAAE87I,OAAO/7I,EAAE,OAAOD,EAAE88I,SAAS98I,EAAEA,EAAE88I,SAAQ58I,EAAEA,EAAE48I,QAAQu7D,GAAGr4M,EAAEA,EAAE67L,eAAgB7/C,OAAO/7I,EAAEC,EAAE48I,QAAQ,KAAK,OAAO78I,EAAEqoB,MAAM,OAAO,KAAK,SAASoqK,GAAG1yL,GAAGA,EAAEqxJ,OAAO,EAC9W,GAAGipB,EAAGqY,GAAG,SAAS3yL,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAEqoB,MAAM,OAAOpoB,GAAG,CAAC,GAAG,IAAIA,EAAEg6K,KAAK,IAAIh6K,EAAEg6K,IAAIV,EAAGx5K,EAAEE,EAAE+7I,gBAAgB,GAAG,IAAI/7I,EAAEg6K,KAAK,OAAOh6K,EAAEooB,MAAM,CAACpoB,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,SAAS,GAAGpoB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAAS/7I,EAAE,OAAOC,EAAEA,EAAE87I,OAAO97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,UAAU+1C,GAAG,aAAaE,GAAG,SAAS/yL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAqB,IAAlB1B,EAAEA,EAAEozI,iBAAqB5tI,EAAE,CAAC,IAAIC,EAAExF,EAAEg8I,UAAUv2I,EAAEkmL,GAAGzyB,GAAE/mE,SAASlyF,EAAEy5K,EAAGl0K,EAAEvF,EAAEF,EAAEwF,EAAE9D,EAAEgE,IAAIzF,EAAE03L,YAAYz3L,IAAIwyL,GAAGzyL,KAAK+yL,GAAG,SAAShzL,EAAEC,EAAEC,EAAEsF,GAAGtF,IAAIsF,GAAGktL,GAAGzyL,SAAS,GAAGy6K,EAAG,CAACiY,GAAG,SAAS3yL,EACpfC,EAAEC,EAAEsF,GAAG,IAAI,IAAI9D,EAAEzB,EAAEqoB,MAAM,OAAO5mB,GAAG,CAAC,GAAG,IAAIA,EAAEw4K,IAAI,CAAC,IAAIz0K,EAAE/D,EAAEu6I,UAAU/7I,GAAGsF,IAAIC,EAAEg5K,GAAGh5K,EAAE/D,EAAE9G,KAAK8G,EAAE0xI,cAAc1xI,IAAI83K,EAAGx5K,EAAEyF,QAAQ,GAAG,IAAI/D,EAAEw4K,IAAIz0K,EAAE/D,EAAEu6I,UAAU/7I,GAAGsF,IAAIC,EAAEi5K,GAAGj5K,EAAE/D,EAAE0xI,cAAc1xI,IAAI83K,EAAGx5K,EAAEyF,QAAQ,GAAG,IAAI/D,EAAEw4K,IAAI,CAAC,GAAG,KAAKx4K,EAAEw4K,KAAK,KAAa,EAARx4K,EAAE2vJ,SAAW5rJ,EAAE,OAAO/D,EAAEq+K,eAAe,CAAC,IAAIr6K,EAAEhE,EAAE4mB,MAAM,GAAG,OAAO5iB,IAAI,OAAOA,EAAE4iB,QAAQ5iB,EAAE4iB,MAAM0zH,OAAOt2I,EAAEitL,GAAG3yL,EAAE0F,GAAE,EAAGD,IAAgB,QAAZA,EAAEC,EAAEo3I,UAAkB,CAACr3I,EAAEu2I,OAAOt6I,EAAEA,EAAE+D,EAAE,UAAU,GAAG,OAAO/D,EAAE4mB,MAAM,CAAC5mB,EAAE4mB,MAAM0zH,OAAOt6I,EAAEA,EAAEA,EAAE4mB,MAAM,UAAU,GAAG5mB,IAAIzB,EAAE,MAAM,KAAK,OAAOyB,EAAEo7I,SAAS,CAAC,GAAG,OAAOp7I,EAAEs6I,QACrft6I,EAAEs6I,SAAS/7I,EAAE,OAAOyB,EAAEA,EAAEs6I,OAAOt6I,EAAEo7I,QAAQd,OAAOt6I,EAAEs6I,OAAOt6I,EAAEA,EAAEo7I,UAAU,IAAIm2C,GAAG,SAAHA,EAAYjzL,EAAEC,EAAEC,EAAEsF,GAAG,IAAI,IAAI9D,EAAEzB,EAAEqoB,MAAM,OAAO5mB,GAAG,CAAC,GAAG,IAAIA,EAAEw4K,IAAI,CAAC,IAAIz0K,EAAE/D,EAAEu6I,UAAU/7I,GAAGsF,IAAIC,EAAEg5K,GAAGh5K,EAAE/D,EAAE9G,KAAK8G,EAAE0xI,cAAc1xI,IAAI48K,GAAGt+K,EAAEyF,QAAQ,GAAG,IAAI/D,EAAEw4K,IAAIz0K,EAAE/D,EAAEu6I,UAAU/7I,GAAGsF,IAAIC,EAAEi5K,GAAGj5K,EAAE/D,EAAE0xI,cAAc1xI,IAAI48K,GAAGt+K,EAAEyF,QAAQ,GAAG,IAAI/D,EAAEw4K,IAAI,CAAC,GAAG,KAAKx4K,EAAEw4K,KAAK,KAAa,EAARx4K,EAAE2vJ,SAAW5rJ,EAAE,OAAO/D,EAAEq+K,eAAe,CAAC,IAAIr6K,EAAEhE,EAAE4mB,MAAM,GAAG,OAAO5iB,IAAI,OAAOA,EAAE4iB,QAAQ5iB,EAAE4iB,MAAM0zH,OAAOt2I,EAAEutL,EAAGjzL,EAAE0F,GAAE,EAAGD,IAAgB,QAAZA,EAAEC,EAAEo3I,UAAkB,CAACr3I,EAAEu2I,OAAOt6I,EAAEA,EAAE+D,EAAE,UAAU,GAAG,OAAO/D,EAAE4mB,MAAM,CAAC5mB,EAAE4mB,MAAM0zH,OAC9ft6I,EAAEA,EAAEA,EAAE4mB,MAAM,UAAU,GAAG5mB,IAAIzB,EAAE,MAAM,KAAK,OAAOyB,EAAEo7I,SAAS,CAAC,GAAG,OAAOp7I,EAAEs6I,QAAQt6I,EAAEs6I,SAAS/7I,EAAE,OAAOyB,EAAEA,EAAEs6I,OAAOt6I,EAAEo7I,QAAQd,OAAOt6I,EAAEs6I,OAAOt6I,EAAEA,EAAEo7I,UAAU+1C,GAAG,SAAS7yL,GAAG,IAAIC,EAAED,EAAEi8I,UAAU,GAAG,OAAOj8I,EAAEi6L,YAAY,CAAC,IAAI/5L,EAAED,EAAEi8I,cAAc12I,EAAE64K,GAAGn+K,GAAG+yL,GAAGztL,EAAExF,GAAE,GAAG,GAAIC,EAAE4oM,gBAAgBrjM,EAAEktL,GAAG1yL,GAAGu+K,GAAGr+K,EAAEsF,KAAKutL,GAAG,SAAS/yL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAEzF,EAAEi8I,UAAUv2I,EAAE1F,EAAEozI,cAAc,IAAIpzI,EAAE,OAAOC,EAAEg6L,cAAcv0L,IAAIF,EAAEvF,EAAEg8I,UAAUx2I,MAAM,CAAC,IAAIE,EAAE1F,EAAEg8I,UAAU/5E,EAAE0pH,GAAGzyB,GAAE/mE,SAAS12F,EAAE,KAAKgK,IAAIF,IAAI9J,EAAEi+K,EAAGh0K,EAAEzF,EAAEwF,EAAEF,EAAE9D,EAAEwgE,IAAIliE,GAAG,OAAOtE,EAAEuE,EAAEg8I,UAAUx2I,GAAGA,EAAE24K,GAAG34K,EACvf/J,EAAEwE,EAAEwF,EAAEF,EAAEvF,EAAED,EAAE2F,GAAG+zK,EAAGj0K,EAAEvF,EAAEsF,EAAE9D,EAAEwgE,IAAIwwH,GAAGzyL,GAAGA,EAAEg8I,UAAUx2I,EAAEzF,EAAE0yL,GAAGzyL,GAAG0yL,GAAGltL,EAAExF,GAAE,GAAG,MAAO+yL,GAAG,SAAShzL,EAAEC,EAAEC,EAAEsF,GAAGtF,IAAIsF,GAAGxF,EAAE4rL,GAAGrC,GAAGn3F,SAASlyF,EAAE0rL,GAAGzyB,GAAE/mE,SAASnyF,EAAEg8I,UAAU29B,EAAGp0K,EAAExF,EAAEE,EAAED,GAAGyyL,GAAGzyL,IAAIA,EAAEg8I,UAAUj8I,EAAEi8I,gBAAgB42C,GAAG,aAAaE,GAAG,aAAaC,GAAG,aACxO,SAASE,GAAGlzL,EAAEC,GAAG,IAAI24M,GAAG,OAAO54M,EAAE8hM,UAAU,IAAK,SAAS7hM,EAAED,EAAE+6F,KAAK,IAAI,IAAI76F,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAEi/I,YAAYh/I,EAAED,GAAGA,EAAEA,EAAE68I,QAAQ,OAAO58I,EAAEF,EAAE+6F,KAAK,KAAK76F,EAAE48I,QAAQ,KAAK,MAAM,IAAK,YAAY58I,EAAEF,EAAE+6F,KAAK,IAAI,IAAIv1F,EAAE,KAAK,OAAOtF,GAAG,OAAOA,EAAEg/I,YAAY15I,EAAEtF,GAAGA,EAAEA,EAAE48I,QAAQ,OAAOt3I,EAAEvF,GAAG,OAAOD,EAAE+6F,KAAK/6F,EAAE+6F,KAAK,KAAK/6F,EAAE+6F,KAAK+hD,QAAQ,KAAKt3I,EAAEs3I,QAAQ,MACxU,SAASz7C,GAAGrhG,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAE47L,aAAa,OAAO57L,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAAE,OAAOvb,GAAE1+J,EAAErF,OAAOklL,KAAK,KAAK,KAAK,EAAiL,OAA/K24B,KAAKrsM,GAAEkyJ,IAAGlyJ,GAAE45F,IAAG4nF,MAAKpoL,EAAEvF,EAAEg8I,WAAY2kD,iBAAiBp7L,EAAEoD,QAAQpD,EAAEo7L,eAAep7L,EAAEo7L,eAAe,MAAS,OAAO5gM,GAAG,OAAOA,EAAEsoB,QAAMjkB,GAAGpE,GAAGyyL,GAAGzyL,GAAGuF,EAAEi8K,UAAUxhL,EAAEoxJ,OAAO,MAAKwhC,GAAG5yL,GAAU,KAAK,KAAK,EAAEy4M,GAAGz4M,GAAG,IAAIyB,EAAEkqL,GAAGrC,GAAGn3F,SAAkB,GAATlyF,EAAED,EAAErF,KAAQ,OAAOoF,GAAG,MAAMC,EAAEg8I,UAAU82C,GAAG/yL,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG1B,EAAE8tI,MAAM7tI,EAAE6tI,MAAM7tI,EAAEoxJ,OAAO,SAAS,CAAC,IAAI7rJ,EAAE,CAAC,GAAG,OACvfvF,EAAEg8I,UAAU,MAAM96I,MAAMpB,EAAE,MAAM,OAAO,KAAqB,GAAhBC,EAAE4rL,GAAGzyB,GAAE/mE,SAAY/tF,GAAGpE,GAAG,CAAC,IAAIs6K,EAAG,MAAMp5K,MAAMpB,EAAE,MAAMC,EAAEi/K,GAAGh/K,EAAEg8I,UAAUh8I,EAAErF,KAAKqF,EAAEmzI,cAAc1xI,EAAE1B,EAAEC,GAAGA,EAAE03L,YAAY33L,EAAE,OAAOA,GAAG0yL,GAAGzyL,OAAO,CAAC,IAAIwF,EAAE8zK,EAAGr5K,EAAEsF,EAAE9D,EAAE1B,EAAEC,GAAG0yL,GAAGltL,EAAExF,GAAE,GAAG,GAAIA,EAAEg8I,UAAUx2I,EAAEi0K,EAAGj0K,EAAEvF,EAAEsF,EAAE9D,EAAE1B,IAAI0yL,GAAGzyL,GAAG,OAAOA,EAAE6tI,MAAM7tI,EAAEoxJ,OAAO,KAAK,OAAO,KAAK,KAAK,EAAE,GAAGrxJ,GAAG,MAAMC,EAAEg8I,UAAU+2C,GAAGhzL,EAAEC,EAAED,EAAEozI,cAAc5tI,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOvF,EAAEg8I,UAAU,MAAM96I,MAAMpB,EAAE,MAAuC,GAAjCC,EAAE4rL,GAAGrC,GAAGn3F,SAAS1wF,EAAEkqL,GAAGzyB,GAAE/mE,SAAY/tF,GAAGpE,GAAG,CAAC,IAAIs6K,EAAG,MAAMp5K,MAAMpB,EAAE,MAAMm/K,GAAGj/K,EAAEg8I,UAC3eh8I,EAAEmzI,cAAcnzI,IAAIyyL,GAAGzyL,QAAQA,EAAEg8I,UAAU29B,EAAGp0K,EAAExF,EAAE0B,EAAEzB,GAAG,OAAO,KAAK,KAAK,GAA0B,OAAvBmM,GAAEgtJ,IAAG5zJ,EAAEvF,EAAE8/K,cAAiB,KAAa,GAAR9/K,EAAEoxJ,QAAiBpxJ,EAAEo3L,MAAMn3L,EAAED,IAAEuF,EAAE,OAAOA,EAAE9D,GAAE,EAAG,OAAO1B,OAAE,IAASC,EAAEmzI,cAAcsE,UAAUrzI,GAAGpE,GAAGyB,EAAE,OAAO1B,EAAE+/K,cAAiBv6K,IAAI9D,GAAG,KAAY,EAAPzB,EAAEo7C,QAAW,OAAOr7C,IAAG,IAAKC,EAAEmzI,cAAc+tD,4BAA4B,KAAe,EAAV/nC,GAAEhnE,SAAW,IAAI6T,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOo5D,IAAG,KAAQ,UAAH+lB,KAAe,KAAQ,UAAHgO,KAAesM,GAAGrgC,GAAEI,MAAGib,GAAIl1K,IAAIvF,EAAEoxJ,OAAO,GAAGipB,IAAK90K,GAAG9D,KAAKzB,EAAEoxJ,OAAO,GAAU,MAAK,KAAK,EAAE,OAAOonD,KACpf5lB,GAAG5yL,GAAG,OAAOD,GAAGi6B,GAAGh6B,EAAEg8I,UAAUC,eAAe,KAAK,KAAK,GAAG,OAAOmoC,GAAGpkL,GAAG,KAAK,KAAK,GAAG,OAAO0+J,GAAE1+J,EAAErF,OAAOklL,KAAK,KAAK,KAAK,GAA0B,GAAvB1zK,GAAEgtJ,IAAwB,QAArB5zJ,EAAEvF,EAAE8/K,eAA0B,OAAO,KAAsC,GAAjCr+K,EAAE,KAAa,GAARzB,EAAEoxJ,OAA2B,QAAjB5rJ,EAAED,EAAEo8L,WAAsB,GAAGlgM,EAAEwxL,GAAG1tL,GAAE,OAAQ,CAAC,GAAG,IAAIygG,IAAG,OAAOjmG,GAAG,KAAa,GAARA,EAAEqxJ,OAAU,IAAIrxJ,EAAEC,EAAEqoB,MAAM,OAAOtoB,GAAG,CAAS,GAAG,QAAXyF,EAAE4mL,GAAGrsL,IAAe,CAAqJ,IAApJC,EAAEoxJ,OAAO,GAAG6hC,GAAG1tL,GAAE,GAAoB,QAAhBxF,EAAEyF,EAAEkyL,eAAuB13L,EAAE03L,YAAY33L,EAAEC,EAAEoxJ,OAAO,GAAG,OAAO7rJ,EAAEu0L,aAAa95L,EAAEg6L,YAAY,MAAMh6L,EAAE85L,WAAWv0L,EAAEu0L,WAAW/5L,EAAEE,EAAMsF,EAAEvF,EAAEqoB,MAAM,OAAO9iB,GAAOtF,EAAEF,GAAN0B,EAAE8D,GAAQ6rJ,OACjf,EAAE3vJ,EAAEs4L,WAAW,KAAKt4L,EAAEu4L,YAAY,KAAKv4L,EAAEq4L,WAAW,KAAmB,QAAdt0L,EAAE/D,EAAEw9I,YAAoBx9I,EAAEu1L,WAAW,EAAEv1L,EAAE21L,MAAMn3L,EAAEwB,EAAE4mB,MAAM,KAAK5mB,EAAE0xI,cAAc,KAAK1xI,EAAEq+K,cAAc,KAAKr+K,EAAEi2L,YAAY,KAAKj2L,EAAEy1L,aAAa,KAAKz1L,EAAEu6I,UAAU,OAAOv6I,EAAEu1L,WAAWxxL,EAAEwxL,WAAWv1L,EAAE21L,MAAM5xL,EAAE4xL,MAAM31L,EAAE4mB,MAAM7iB,EAAE6iB,MAAM5mB,EAAE0xI,cAAc3tI,EAAE2tI,cAAc1xI,EAAEq+K,cAAct6K,EAAEs6K,cAAcr+K,EAAEi2L,YAAYlyL,EAAEkyL,YAAYj2L,EAAE9G,KAAK6K,EAAE7K,KAAKsF,EAAEuF,EAAE0xL,aAAaz1L,EAAEy1L,aAAa,OAAOj3L,EAAE,KAAK,CAACm3L,MAAMn3L,EAAEm3L,MAAMD,aAAal3L,EAAEk3L,eAAe5xL,EAAEA,EAAEs3I,QAC3d,OADmeshB,GAAEhF,GAAY,EAAVA,GAAEhnE,QAC5e,GAAUnyF,EAAEqoB,MAAMtoB,EAAEA,EAAE88I,QAAQ,OAAOt3I,EAAEu1F,MAAMkjE,KAAIo1B,KAAKpzL,EAAEoxJ,OAAO,GAAG3vJ,GAAE,EAAGwxL,GAAG1tL,GAAE,GAAIvF,EAAEo3L,MAAM,cAAc,CAAC,IAAI31L,EAAE,GAAW,QAAR1B,EAAEqsL,GAAG5mL,KAAa,GAAGxF,EAAEoxJ,OAAO,GAAG3vJ,GAAE,EAAmB,QAAhB1B,EAAEA,EAAE23L,eAAuB13L,EAAE03L,YAAY33L,EAAEC,EAAEoxJ,OAAO,GAAG6hC,GAAG1tL,GAAE,GAAI,OAAOA,EAAEu1F,MAAM,WAAWv1F,EAAEs8L,WAAWr8L,EAAEy5I,YAAY05D,GAAG,OAAmC,QAA5B34M,EAAEA,EAAE85L,WAAWv0L,EAAEu0L,cAAsB95L,EAAE+5L,WAAW,MAAM,UAAU,EAAE/7B,KAAIz4J,EAAEq8L,mBAAmBxO,IAAI,aAAanzL,IAAID,EAAEoxJ,OAAO,GAAG3vJ,GAAE,EAAGwxL,GAAG1tL,GAAE,GAAIvF,EAAEo3L,MAAM,UAAU7xL,EAAEm8L,aAAal8L,EAAEq3I,QAAQ78I,EAAEqoB,MAAMroB,EAAEqoB,MAAM7iB,IAAa,QAATzF,EAAEwF,EAAE6sF,MAAcryF,EAAE88I,QACtfr3I,EAAExF,EAAEqoB,MAAM7iB,EAAED,EAAE6sF,KAAK5sF,GAAG,OAAO,OAAOD,EAAEu1F,MAAM/6F,EAAEwF,EAAEu1F,KAAKv1F,EAAEo8L,UAAU5hM,EAAEwF,EAAEu1F,KAAK/6F,EAAE88I,QAAQt3I,EAAEu0L,WAAW95L,EAAE85L,WAAWv0L,EAAEq8L,mBAAmB5jC,KAAIj+J,EAAE88I,QAAQ,KAAK78I,EAAEm5J,GAAEhnE,QAAQgsE,GAAEhF,GAAE13J,EAAI,EAAFzB,EAAI,EAAI,EAAFA,GAAKD,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOszL,KAAK,OAAOtzL,GAAG,OAAOA,EAAE+/K,iBAAiB,OAAO9/K,EAAE8/K,gBAAgB,kCAAkCv6K,EAAE61C,OAAOp7C,EAAEoxJ,OAAO,GAAG,KAAK,MAAMlwJ,MAAMpB,EAAE,IAAIE,EAAEi6K,MACpW,SAASqZ,GAAGvzL,GAAG,OAAOA,EAAEk6K,KAAK,KAAK,EAAEvb,GAAE3+J,EAAEpF,OAAOklL,KAAK,IAAI7/K,EAAED,EAAEqxJ,MAAM,OAAS,KAAFpxJ,GAAQD,EAAEqxJ,OAAS,KAAHpxJ,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAAgC,GAA9By4M,KAAKrsM,GAAEkyJ,IAAGlyJ,GAAE45F,IAAG4nF,KAAkB,KAAO,IAApB3tL,EAAED,EAAEqxJ,QAAoB,MAAMlwJ,MAAMpB,EAAE,MAAyB,OAAnBC,EAAEqxJ,OAAS,KAAHpxJ,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAO04M,GAAG14M,GAAG,KAAK,KAAK,GAAG,OAAOoM,GAAEgtJ,IAAe,MAAZn5J,EAAED,EAAEqxJ,QAAcrxJ,EAAEqxJ,OAAS,KAAHpxJ,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAOoM,GAAEgtJ,IAAG,KAAK,KAAK,EAAE,OAAOq/C,KAAK,KAAK,KAAK,GAAG,OAAOp0B,GAAGrkL,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOszL,KAAK,KAAK,QAAQ,OAAO,MACpa,SAASE,GAAGxzL,EAAEC,GAAG,IAAI,IAAIC,EAAE,GAAGsF,EAAEvF,EAAE,GAAGC,GAAG2jL,GAAGr+K,GAAGA,EAAEA,EAAEw2I,aAAax2I,GAAG,IAAI9D,EAAExB,EAAE,MAAMuF,GAAG/D,EAAE,6BAA6B+D,EAAEg5E,QAAQ,KAAKh5E,EAAEo0K,MAAM,MAAM,CAAC1sL,MAAM6S,EAAE6K,OAAO5K,EAAE45K,MAAMn4K,GAAG,SAAS+xL,GAAGzzL,EAAEC,GAAG,IAAIc,QAAQ3T,MAAM6S,EAAE9S,OAAO,MAAM+S,GAAG21G,YAAW,WAAW,MAAM31G,MAAM,IAAIwzL,GAAG,oBAAoBlsJ,QAAQA,QAAQ+rC,IAAI,SAASogH,GAAG3zL,EAAEC,EAAEC,IAAGA,EAAE2kL,IAAI,EAAE3kL,IAAKg6K,IAAI,EAAEh6K,EAAEk4L,QAAQ,CAAC3xK,QAAQ,MAAM,IAAIjhB,EAAEvF,EAAE9S,MAAsD,OAAhD+S,EAAE8R,SAAS,WAAW4hL,KAAKA,IAAG,EAAGC,GAAGruL,GAAGiuL,GAAGzzL,EAAEC,IAAWC,EACpb,SAAS4zL,GAAG9zL,EAAEC,EAAEC,IAAGA,EAAE2kL,IAAI,EAAE3kL,IAAKg6K,IAAI,EAAE,IAAI10K,EAAExF,EAAEpF,KAAK28I,yBAAyB,GAAG,oBAAoB/xI,EAAE,CAAC,IAAI9D,EAAEzB,EAAE9S,MAAM+S,EAAEk4L,QAAQ,WAAmB,OAAR3E,GAAGzzL,EAAEC,GAAUuF,EAAE9D,IAAI,IAAI+D,EAAEzF,EAAEi8I,UAA8O,OAApO,OAAOx2I,GAAG,oBAAoBA,EAAEy9L,oBAAoBhjM,EAAE8R,SAAS,WAAW,oBAAoBxM,IAAI,OAAOyuL,GAAGA,GAAG,IAAIjtF,IAAI,CAACr5G,OAAOsmM,GAAGl9K,IAAIppB,MAAM8lM,GAAGzzL,EAAEC,IAAI,IAAIC,EAAED,EAAE45K,MAAMlsL,KAAKu1M,kBAAkBjjM,EAAE9S,MAAM,CAACi2M,eAAe,OAAOljM,EAAEA,EAAE,OAAcA,EAAE,IAAIg0L,GAAG,oBAAoBoP,QAAQA,QAAQt8F,IACxc,SAASmtF,GAAGn0L,GAAG,IAAIC,EAAED,EAAE8tI,IAAI,GAAG,OAAO7tI,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAMC,GAAGk0L,GAAGp0L,EAAEE,QAAQD,EAAEmyF,QAAQ,KAC5G,SAASiiG,GAAGr0L,EAAEC,GAAG,OAAOA,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,EAAE,GAAW,IAARj6K,EAAEoxJ,OAAW,OAAOrxJ,EAAE,CAAC,IAAIE,EAAEF,EAAEozI,cAAc5tI,EAAExF,EAAE+/K,cAA4B9/K,GAAdD,EAAEC,EAAEg8I,WAAcs9C,wBAAwBt5L,EAAEm6L,cAAcn6L,EAAErF,KAAKsF,EAAE4jL,GAAG7jL,EAAErF,KAAKsF,GAAGsF,GAAGxF,EAAE0jM,oCAAoCzjM,EAAE,OAAO,KAAK,EAAiD,YAA/Cq6K,GAAY,IAARr6K,EAAEoxJ,OAAW4sB,GAAGh+K,EAAEg8I,UAAUC,gBAAsB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,MAAM/6I,MAAMpB,EAAE,MAC/X,SAASw0L,GAAGv0L,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE03L,aAAuB13L,EAAE85L,WAAW,MAAiB,CAAC,IAAI75L,EAAED,EAAEA,EAAEmvD,KAAK,EAAE,CAAC,IAAIlvD,EAAEg6K,IAAIl6K,KAAKA,EAAE,CAAC,IAAIwF,EAAEtF,EAAE43D,QAAQ53D,EAAE43D,aAAQ,OAAO,IAAStyD,GAAGA,IAAItF,EAAEA,EAAEkvD,WAAWlvD,IAAID,IACnL,SAASu0L,GAAGx0L,EAAEC,EAAEC,GAAG,OAAOA,EAAEg6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhCj6K,EAAE,QAAlBA,EAAEC,EAAEy3L,aAAuB13L,EAAE85L,WAAW,MAAiB,CAAC/5L,EAAEC,EAAEA,EAAEmvD,KAAK,EAAE,CAAC,GAAG,KAAW,EAANpvD,EAAEk6K,KAAO,CAAC,IAAI10K,EAAExF,EAAE6yH,OAAO7yH,EAAE83D,QAAQtyD,IAAIxF,EAAEA,EAAEovD,WAAWpvD,IAAIC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEC,EAAEy3L,aAAuB13L,EAAE85L,WAAW,MAAiB,CAAC/5L,EAAEC,EAAEA,EAAEmvD,KAAK,EAAE,CAAC,IAAI1tD,EAAE1B,EAAEwF,EAAE9D,EAAE0tD,KAAa,KAAO,GAAf1tD,EAAEA,EAAEw4K,OAAe,KAAO,EAAFx4K,KAAO+yL,GAAGv0L,EAAEF,GAAG00L,GAAGx0L,EAAEF,IAAIA,EAAEwF,QAAQxF,IAAIC,GAAG,OAAO,KAAK,EACtR,OADwRD,EAAEE,EAAE+7I,UAAkB,EAAR/7I,EAAEmxJ,QAAU,OAAOpxJ,EAAED,EAAEuiJ,qBAAqB/8I,EAAEtF,EAAEk6L,cAAcl6L,EAAEtF,KAAKqF,EAAEmzI,cAAc0wC,GAAG5jL,EAAEtF,KAAKqF,EAAEmzI,eAAepzI,EAAEkjJ,mBAAmB19I,EACxgBvF,EAAE8/K,cAAc//K,EAAE0jM,4CAAuD,QAAhBzjM,EAAEC,EAAEy3L,cAAsBtS,GAAGnlL,EAAED,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAEC,EAAEy3L,aAAwB,CAAQ,GAAP33L,EAAE,KAAQ,OAAOE,EAAEooB,MAAM,OAAOpoB,EAAEooB,MAAM4xJ,KAAK,KAAK,EAAEl6K,EAAEk5K,EAAGh5K,EAAEooB,MAAM2zH,WAAW,MAAM,KAAK,EAAEj8I,EAAEE,EAAEooB,MAAM2zH,UAAUopC,GAAGnlL,EAAED,EAAED,GAAG,OAAO,KAAK,EAAoE,OAAlEA,EAAEE,EAAE+7I,eAAU,OAAOh8I,GAAW,EAARC,EAAEmxJ,OAAS+qB,GAAGp8K,EAAEE,EAAEtF,KAAKsF,EAAEkzI,cAAclzI,IAAU,KAAK,EAAS,KAAK,EAAS,KAAK,GAAG,OAAO,KAAK,GAC7X,YADgYq6K,GAAI,OAAOr6K,EAAE6/K,gBAAgB7/K,EAAEA,EAAEg/I,UAAU,OAAOh/I,IAAIA,EAAEA,EAAE6/K,cAAc,OAAO7/K,IAAIA,EAAEA,EAAE8/K,WAAW,OAAO9/K,GAClfk/K,GAAGl/K,OAAa,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,MAAMiB,MAAMpB,EAAE,MACrF,SAAS40L,GAAG30L,EAAEC,GAAG,GAAGq6K,EAAG,IAAI,IAAIp6K,EAAEF,IAAI,CAAC,GAAG,IAAIE,EAAEg6K,IAAI,CAAC,IAAI10K,EAAEtF,EAAE+7I,UAAUh8I,EAAEm9K,GAAG53K,GAAG6kB,GAAGnqB,EAAE+7I,UAAU/7I,EAAEkzI,oBAAoB,GAAG,IAAIlzI,EAAEg6K,IAAI10K,EAAEtF,EAAE+7I,UAAUh8I,EAAEq9K,GAAG93K,GAAGw4K,GAAGx4K,EAAEtF,EAAEkzI,oBAAoB,IAAI,KAAKlzI,EAAEg6K,KAAK,KAAKh6K,EAAEg6K,KAAK,OAAOh6K,EAAE6/K,eAAe7/K,IAAIF,IAAI,OAAOE,EAAEooB,MAAM,CAACpoB,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,SAAS,GAAGpoB,IAAIF,EAAE,MAAM,KAAK,OAAOE,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAASh8I,EAAE,OAAOE,EAAEA,EAAE87I,OAAO97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,SACzZ,SAAS83C,GAAG50L,EAAEC,GAAG,GAAGmgL,IAAI,oBAAoBA,GAAG0jB,qBAAqB,IAAI1jB,GAAG0jB,qBAAqB3jB,GAAGlgL,GAAG,MAAMwF,IAAI,OAAOxF,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnBl6K,EAAEC,EAAE03L,cAAyC,QAAf33L,EAAEA,EAAE+5L,YAAqB,CAAC,IAAI75L,EAAEF,EAAEA,EAAEovD,KAAK,EAAE,CAAC,IAAI5pD,EAAEtF,EAAEwB,EAAE8D,EAAEsyD,QAAgB,GAARtyD,EAAEA,EAAE00K,SAAO,IAASx4K,EAAE,GAAG,KAAO,EAAF8D,GAAKivL,GAAGx0L,EAAEC,OAAO,CAACsF,EAAEvF,EAAE,IAAIyB,IAAI,MAAM+D,GAAG2uL,GAAG5uL,EAAEC,IAAIvF,EAAEA,EAAEkvD,WAAWlvD,IAAIF,GAAG,MAAM,KAAK,EAAsB,GAApBm0L,GAAGl0L,GAAoB,oBAAjBD,EAAEC,EAAEg8I,WAAmCwG,qBAAqB,IAAIziJ,EAAEsoI,MAAMroI,EAAEmzI,cAAcpzI,EAAEy1C,MAAMx1C,EAAE8/K,cAAc//K,EAAEyiJ,uBAAuB,MAAMh9I,GAAG2uL,GAAGn0L,EAC/gBwF,GAAG,MAAM,KAAK,EAAE0uL,GAAGl0L,GAAG,MAAM,KAAK,EAAEq6K,EAAGwa,GAAG90L,EAAEC,GAAGy6K,GAAIA,IAAKz6K,EAAEA,EAAEg8I,UAAUC,cAAcl8I,EAAEq+K,GAAGp+K,GAAGu+K,GAAGv+K,EAAED,KAAK,SAASg1L,GAAGh1L,EAAEC,GAAG,IAAI,IAAIC,EAAED,IAAI,GAAG20L,GAAG50L,EAAEE,GAAG,OAAOA,EAAEooB,OAAOgyJ,GAAI,IAAIp6K,EAAEg6K,IAAI,CAAC,GAAGh6K,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAAS/7I,EAAE,OAAOC,EAAEA,EAAE87I,OAAO97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,aAAa58I,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MACxU,SAAS4sK,GAAGl1L,GAAGA,EAAEk/I,UAAU,KAAKl/I,EAAEsoB,MAAM,KAAKtoB,EAAEm3L,aAAa,KAAKn3L,EAAEi6L,YAAY,KAAKj6L,EAAE+5L,WAAW,KAAK/5L,EAAEozI,cAAc,KAAKpzI,EAAE+/K,cAAc,KAAK//K,EAAE67L,aAAa,KAAK77L,EAAEg8I,OAAO,KAAKh8I,EAAE23L,YAAY,KAAK,SAASxC,GAAGn1L,GAAG,OAAO,IAAIA,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,IACvP,SAASmb,GAAGr1L,GAAG,GAAGs6K,EAAG,CAACt6K,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAEg8I,OAAO,OAAO/7I,GAAG,CAAC,GAAGk1L,GAAGl1L,GAAG,MAAMD,EAAEC,EAAEA,EAAE+7I,OAAO,MAAM76I,MAAMpB,EAAE,MAAO,IAAIG,EAAED,EAAgB,OAAdA,EAAEC,EAAE+7I,UAAiB/7I,EAAEg6K,KAAK,KAAK,EAAE,IAAI10K,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEvF,EAAEA,EAAEi8I,cAAc12I,GAAE,EAAG,MAAM,QAAQ,MAAMrE,MAAMpB,EAAE,MAAe,GAARG,EAAEmxJ,QAAW8rB,GAAGl9K,GAAGC,EAAEmxJ,QAAQ,IAAIrxJ,EAAEC,EAAE,IAAIC,EAAEF,IAAI,CAAC,KAAK,OAAOE,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQm5C,GAAGj1L,EAAE87I,QAAQ,CAAC97I,EAAE,KAAK,MAAMF,EAAEE,EAAEA,EAAE87I,OAAiC,IAA1B97I,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAW97I,EAAEA,EAAE48I,QAAQ,IAAI58I,EAAEg6K,KAAK,IAAIh6K,EAAEg6K,KAAK,KAAKh6K,EAAEg6K,KAAK,CAAC,GAAW,EAARh6K,EAAEmxJ,MAAQ,SAASpxJ,EAAE,GAAG,OACnfC,EAAEooB,OAAO,IAAIpoB,EAAEg6K,IAAI,SAASj6K,EAAOC,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,KAAa,EAARpoB,EAAEmxJ,OAAS,CAACnxJ,EAAEA,EAAE+7I,UAAU,MAAMj8I,GAAGwF,EAAE+vL,GAAGv1L,EAAEE,EAAED,GAAGu1L,GAAGx1L,EAAEE,EAAED,IAAI,SAASs1L,GAAGv1L,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEk6K,IAAIx4K,EAAE,IAAI8D,GAAG,IAAIA,EAAE,GAAG9D,EAAE1B,EAAE0B,EAAE1B,EAAEi8I,UAAUj8I,EAAEi8I,UAAU9T,SAASloI,EAAE28K,GAAG18K,EAAEF,EAAEC,GAAGi8K,GAAGh8K,EAAEF,QAAQ,GAAG,IAAIwF,GAAc,QAAVxF,EAAEA,EAAEsoB,OAAgB,IAAIitK,GAAGv1L,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAAQ,OAAO98I,GAAGu1L,GAAGv1L,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAC/T,SAAS04C,GAAGx1L,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEk6K,IAAIx4K,EAAE,IAAI8D,GAAG,IAAIA,EAAE,GAAG9D,EAAE1B,EAAE0B,EAAE1B,EAAEi8I,UAAUj8I,EAAEi8I,UAAU9T,SAASloI,EAAEq8K,GAAGp8K,EAAEF,EAAEC,GAAGg8K,GAAG/7K,EAAEF,QAAQ,GAAG,IAAIwF,GAAc,QAAVxF,EAAEA,EAAEsoB,OAAgB,IAAIktK,GAAGx1L,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAAQ,OAAO98I,GAAGw1L,GAAGx1L,EAAEC,EAAEC,GAAGF,EAAEA,EAAE88I,QAClM,SAASg4C,GAAG90L,EAAEC,GAAG,IAAI,IAAayB,EAAE+D,EAAXvF,EAAED,EAAEuF,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEtF,EAAE87I,OAAOh8I,EAAE,OAAO,CAAC,GAAG,OAAOwF,EAAE,MAAMrE,MAAMpB,EAAE,MAAoB,OAAd2B,EAAE8D,EAAEy2I,UAAiBz2I,EAAE00K,KAAK,KAAK,EAAEz0K,GAAE,EAAG,MAAMzF,EAAE,KAAK,EAAiC,KAAK,EAAE0B,EAAEA,EAAEw6I,cAAcz2I,GAAE,EAAG,MAAMzF,EAAEwF,EAAEA,EAAEw2I,OAAOx2I,GAAE,EAAG,GAAG,IAAItF,EAAEg6K,KAAK,IAAIh6K,EAAEg6K,IAAI8a,GAAGh1L,EAAEE,GAAGuF,EAAEy3K,GAAGx7K,EAAExB,EAAE+7I,WAAW9qI,GAAGzP,EAAExB,EAAE+7I,gBAAgB,GAAG,IAAI/7I,EAAEg6K,KAAK,GAAG,OAAOh6K,EAAEooB,MAAM,CAAC5mB,EAAExB,EAAE+7I,UAAUC,cAAcz2I,GAAE,EAAGvF,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,eAAe,GAAGssK,GAAG50L,EAAEE,GAAG,OAAOA,EAAEooB,MAAM,CAACpoB,EAAEooB,MAAM0zH,OAAO97I,EAAEA,EAAEA,EAAEooB,MAAM,SAAS,GAAGpoB,IAAID,EAAE,MAChf,KAAK,OAAOC,EAAE48I,SAAS,CAAC,GAAG,OAAO58I,EAAE87I,QAAQ97I,EAAE87I,SAAS/7I,EAAE,OAAkB,KAAXC,EAAEA,EAAE87I,QAAak+B,MAAM10K,GAAE,GAAItF,EAAE48I,QAAQd,OAAO97I,EAAE87I,OAAO97I,EAAEA,EAAE48I,SAC3H,SAAS24C,GAAGz1L,EAAEC,GAAG,GAAGq6K,EAAG,CAAC,OAAOr6K,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAARqa,GAAG,EAAEt0L,GAAU,KAAK,EAAE,OAAO,KAAK,EAAE,IAAIC,EAAED,EAAEg8I,UAAU,GAAG,MAAM/7I,EAAE,CAAC,IAAIsF,EAAEvF,EAAEmzI,cAAcpzI,EAAE,OAAOA,EAAEA,EAAEozI,cAAc5tI,EAAE,IAAI9D,EAAEzB,EAAErF,KAAK6K,EAAExF,EAAE03L,YAAY13L,EAAE03L,YAAY,KAAK,OAAOlyL,GAAG42K,GAAGn8K,EAAEuF,EAAE/D,EAAE1B,EAAEwF,EAAEvF,GAAG,OAAO,KAAK,EAAE,GAAG,OAAOA,EAAEg8I,UAAU,MAAM96I,MAAMpB,EAAE,MAAqE,OAA/DG,EAAED,EAAEmzI,mBAAc+oC,GAAGl8K,EAAEg8I,UAAU,OAAOj8I,EAAEA,EAAEozI,cAAclzI,EAAEA,GAAU,KAAK,EAAoE,YAAlEq6K,IAAKt6K,EAAEA,EAAEg8I,UAAUh8I,EAAEwhL,UAAUxhL,EAAEwhL,SAAQ,EAAGtC,GAAGl/K,EAAEi8I,kBAAwB,KAAK,GAAG,OAAO,KAAK,GACxe,OAD2ey5C,GAAG11L,QACpf21L,GAAG31L,GAAU,KAAK,GAAS,YAAN21L,GAAG31L,GAAU,KAAK,GAAG,OAAO,KAAK,GAAG,KAAK,GAAgC,YAA7B00L,GAAG10L,EAAE,OAAOA,EAAE8/K,eAAsB,MAAM5+K,MAAMpB,EAAE,MAAO,OAAOE,EAAEi6K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAARqa,GAAG,EAAEt0L,GAAU,KAAK,GAAG,OAAO,KAAK,GAAe,OAAZ01L,GAAG11L,QAAG21L,GAAG31L,GAAU,KAAK,GAAS,YAAN21L,GAAG31L,GAAU,KAAK,EAAEs6K,KAAKr6K,EAAED,EAAEg8I,WAAYwlC,UAAUvhL,EAAEuhL,SAAQ,EAAGtC,GAAGj/K,EAAEg8I,iBAAiB,MAAM,KAAK,GAAG,KAAK,GAAG,OAAOl8I,EAAE,GAAG06K,EAAG,CAAC,OAAOz6K,EAAEi6K,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAMl6K,EAAE,KAAK,EAAE,KAAK,EAAEC,EAAEA,EAAEg8I,UAAUuiC,GAAGv+K,EAAEi8I,cAAcj8I,EAAE4oM,iBAAiB,MAAM7oM,EAAE,MAAMmB,MAAMpB,EAAE,OACrf,SAAS41L,GAAG31L,GAAG,OAAOA,EAAE+/K,gBAAgB8V,GAAG53B,KAAIqc,GAAIqa,GAAG30L,EAAEsoB,OAAM,IAAK,SAASstK,GAAG51L,GAAG,IAAIC,EAAED,EAAE23L,YAAY,GAAG,OAAO13L,EAAE,CAACD,EAAE23L,YAAY,KAAK,IAAIz3L,EAAEF,EAAEi8I,UAAU,OAAO/7I,IAAIA,EAAEF,EAAEi8I,UAAU,IAAIi4C,IAAIj0L,EAAE+zE,SAAQ,SAAS/zE,GAAG,IAAIuF,EAAEswL,GAAGx4E,KAAK,KAAKt9G,EAAEC,GAAGC,EAAEg8C,IAAIj8C,KAAKC,EAAE6W,IAAI9W,GAAGA,EAAE1S,KAAKiY,EAAEA,QAAO,SAASuwL,GAAG/1L,EAAEC,GAAG,OAAO,OAAOD,IAAsB,QAAlBA,EAAEA,EAAE+/K,gBAAwB,OAAO//K,EAAEggL,cAA+B,QAAlB//K,EAAEA,EAAE8/K,gBAAwB,OAAO9/K,EAAE+/K,YAAe,IAAIgW,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EACjb,GAAG,oBAAoBrzL,QAAQA,OAAO4yK,IAAI,CAAC,IAAI0gB,GAAGtzL,OAAO4yK,IAAIqgB,GAAGK,GAAG,sBAAsBJ,GAAGI,GAAG,6BAA6BH,GAAGG,GAAG,iBAAiBF,GAAGE,GAAG,oBAAoBD,GAAGC,GAAG,iBAAiB,SAASC,GAAGt2L,GAAG,IAAIC,EAAE06K,EAAG36K,GAAG,GAAG,MAAMC,EAAE,CAAC,GAAG,kBAAkBA,EAAEmzI,cAAc,iBAAiB,MAAMjyI,MAAMpB,EAAE,MAAM,OAAOE,EAAU,GAAG,QAAXD,EAAEg6B,GAAGh6B,IAAe,MAAMmB,MAAMpB,EAAE,MAAM,OAAOC,EAAEi8I,UAAU7pD,QACzX,SAASmkG,GAAGv2L,EAAEC,GAAG,OAAOA,EAAEo2K,UAAU,KAAK2f,GAAG,GAAGh2L,EAAEpF,OAAOqF,EAAE9S,MAAM,OAAM,EAAG,MAAM,KAAK8oM,GAAGj2L,EAAE,CAACC,EAAEA,EAAE9S,MAAM6S,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAErE,QAAQ,CAAC,IAAI6J,EAAExF,EAAEE,KAAKwB,EAAE1B,EAAEE,KAAKuF,EAAExF,EAAEyB,GAAG,GAAG,IAAI8D,EAAE00K,MAAMwB,GAAGl2K,GAAG,CAAC,KAAK,MAAMC,GAAG8wL,GAAG/wL,EAAEC,IAAQA,EAAExF,IAANyB,GAAW,GAAGA,IAAIzB,EAAEtE,OAAO,CAACsE,GAAE,EAAG,MAAMD,EAAO,IAAIwF,EAAEA,EAAE8iB,MAAM,OAAO9iB,GAAGxF,EAAE/E,KAAKuK,EAAE9D,GAAG8D,EAAEA,EAAEs3I,SAAS78I,GAAE,EAAG,OAAOA,EAAE,KAAKi2L,GAAG,GAAG,IAAIl2L,EAAEk6K,KAAK4B,GAAG97K,EAAEi8I,UAAUh8I,EAAE9S,OAAO,OAAM,EAAG,MAAM,KAAKipM,GAAG,IAAG,IAAIp2L,EAAEk6K,KAAK,IAAIl6K,EAAEk6K,OAAe,QAARl6K,EAAEw7K,GAAGx7K,KAAa,GAAGA,EAAEhF,QAAQiF,EAAE9S,QAAO,OAAM,EAAG,MAAM,KAAKgpM,GAAG,GAAG,IAAIn2L,EAAEk6K,MACpe,kBAD0el6K,EAAEA,EAAEozI,cAAc,mBACvepzI,EAAEizB,gBAAgBhzB,EAAE9S,MAAM8lC,eAAe,OAAM,EAAG,MAAM,QAAQ,MAAM9xB,MAAMpB,EAAE,IAAIE,IAAK,OAAM,EAAG,SAASu2L,GAAGx2L,GAAG,OAAOA,EAAEq2K,UAAU,KAAK2f,GAAG,MAAM,KAAKrd,EAAG34K,EAAE7S,QAAQ,WAAW,IAAI,KAAK8oM,GAAG,MAAM,SAASO,GAAGx2L,IAAI,IAAI,IAAI,KAAKk2L,GAAG,MAAM,UAAUl2L,EAAE7S,MAAM,KAAK,KAAKipM,GAAG,MAAM,IAAIp2L,EAAE7S,MAAM,IAAI,KAAKgpM,GAAG,MAAM,mBAAmBn2L,EAAE7S,MAAM,KAAK,QAAQ,MAAMgU,MAAMpB,EAAE,IAAIC,KACvX,SAASy2L,GAAGz2L,EAAEC,GAAG,IAAIC,EAAE,GAAGF,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIwF,EAAE,EAAEA,EAAExF,EAAErE,QAAQ,CAAC,IAAI+F,EAAE1B,EAAEwF,KAAKC,EAAEzF,EAAEwF,KAAKE,EAAEzF,EAAEwF,GAAG,GAAG,IAAI/D,EAAEw4K,MAAMwB,GAAGh6K,GAAG,CAAC,KAAK,MAAMgE,GAAG6wL,GAAG70L,EAAEgE,IAAQA,EAAEzF,IAANwF,GAAW,GAAGA,IAAIxF,EAAEtE,OAAOuE,EAAEjF,KAAKyG,QAAQ,IAAIA,EAAEA,EAAE4mB,MAAM,OAAO5mB,GAAG1B,EAAE/E,KAAKyG,EAAE+D,GAAG/D,EAAEA,EAAEo7I,SAAS,OAAO58I,EAAE,SAASw2L,GAAG12L,EAAEC,GAAG,IAAIs7K,GAAG,MAAMp6K,MAAMpB,EAAE,MAAcC,EAAEy2L,GAAVz2L,EAAEs2L,GAAGt2L,GAAUC,GAAGA,EAAE,GAAGD,EAAEuL,MAAMw9F,KAAK/oG,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAErE,QAAQ,CAAC,IAAI6J,EAAExF,EAAEE,KAAK,GAAG,IAAIsF,EAAE00K,IAAIwB,GAAGl2K,IAAIvF,EAAEhF,KAAKuK,EAAEy2I,gBAAgB,IAAIz2I,EAAEA,EAAE8iB,MAAM,OAAO9iB,GAAGxF,EAAE/E,KAAKuK,GAAGA,EAAEA,EAAEs3I,QAAQ,OAAO78I,EAAE,IAAI02L,GAAG,KACzN,IAAIE,GAAG96L,KAAK4B,KAAKm5L,GAAG54B,EAAGuY,uBAAuBsgB,GAAG74B,EAAG0Y,kBAAkBogB,GAAG94B,EAAG2Y,qBAAqBwrB,GAAE,EAAEhjC,GAAE,KAAKxB,GAAE,KAAK4B,GAAE,EAAEy3B,GAAG,EAAEI,GAAG3X,GAAG,GAAG15E,GAAE,EAAEsxF,GAAG,KAAKE,GAAG,EAAErS,GAAG,EAAEgO,GAAG,EAAEsE,GAAG,EAAEM,GAAG,KAAKnC,GAAG,EAAExC,GAAGnsL,IAAS,SAAS+wL,KAAK5E,GAAGp1B,KAAI,IACvc,IA0BuZk9B,GA1BnZ98B,GAAE,KAAKu1B,IAAG,EAAGC,GAAG,KAAKI,GAAG,KAAKoE,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEG,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEJ,GAAG,EAAEK,GAAG,KAAKE,IAAG,EAAG,SAASr7B,KAAI,OAAO,KAAO,GAAFukC,IAAMpkC,MAAK,IAAI86B,GAAGA,GAAGA,GAAG96B,KAAI,SAASwoB,GAAGzmL,GAAY,GAAG,KAAO,GAAnBA,EAAEA,EAAEq7C,OAAkB,OAAO,EAAE,GAAG,KAAO,EAAFr7C,GAAK,OAAO,KAAKgjL,KAAK,EAAE,EAAkB,GAAhB,IAAIgW,KAAKA,GAAGvB,IAAO,IAAI0O,GAAGxvB,WAAW,CAAC,IAAIiiB,KAAKA,GAAG,OAAOZ,GAAGA,GAAG1U,aAAa,GAAGtjL,EAAEg5L,GAAG,IAAI/4L,EAAE,SAAS24L,GAAsD,OAA7C,KAAN34L,IAAIA,KAA8B,KAAPA,GAAbD,EAAE,SAASA,IAAOA,KAAUC,EAAE,OAAcA,EAA4D,OAA1DD,EAAEgjL,KAAK,KAAO,EAAFqf,KAAM,KAAKriM,EAAEA,EAAE6gL,GAAG,GAAGmY,IAAah5L,EAAE6gL,GAAV7gL,EA1Hpb,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,GA0HgUwgL,CAAGxgL,GAAUg5L,IAAYh5L,EAC5d,SAAS0mL,GAAG1mL,EAAEC,EAAEC,GAAG,GAAG,GAAGy4L,GAAG,MAAMA,GAAG,EAAEG,GAAG,KAAK33L,MAAMpB,EAAE,MAAgB,GAAG,QAAbC,EAAEo5L,GAAGp5L,EAAEC,IAAe,OAAO,KAAK+gL,GAAGhhL,EAAEC,EAAEC,GAAGF,IAAIq/J,KAAI+zB,IAAInzL,EAAE,IAAIgmG,IAAGy5F,GAAG1/L,EAAEy/J,KAAI,IAAIj6J,EAAEw9K,KAAK,IAAI/iL,EAAE,KAAO,EAAFoiM,KAAM,KAAO,GAAFA,IAAM/I,GAAGt5L,IAAI8+J,GAAE9+J,EAAEE,GAAG,IAAImiM,KAAIpK,KAAK3+B,QAAO,KAAO,EAAF+oC,KAAM,KAAK78L,GAAG,KAAKA,IAAI,OAAOkzL,GAAGA,GAAG,IAAI1xF,IAAI,CAAChnG,IAAI04L,GAAG3hL,IAAI/W,IAAI8+J,GAAE9+J,EAAEE,IAAI83L,GAAGh4L,EAAE,SAASo5L,GAAGp5L,EAAEC,GAAGD,EAAEq3L,OAAOp3L,EAAE,IAAIC,EAAEF,EAAEk/I,UAAqC,IAA3B,OAAOh/I,IAAIA,EAAEm3L,OAAOp3L,GAAGC,EAAEF,EAAMA,EAAEA,EAAEg8I,OAAO,OAAOh8I,GAAGA,EAAEi3L,YAAYh3L,EAAgB,QAAdC,EAAEF,EAAEk/I,aAAqBh/I,EAAE+2L,YAAYh3L,GAAGC,EAAEF,EAAEA,EAAEA,EAAEg8I,OAAO,OAAO,IAAI97I,EAAEg6K,IAAIh6K,EAAE+7I,UAAU,KACte,SAAS6iB,GAAE9+J,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAEumM,aAAa/gM,EAAExF,EAAEwjL,eAAe9hL,EAAE1B,EAAEyjL,YAAYh+K,EAAEzF,EAAEwmM,gBAAgB9gM,EAAE1F,EAAEsjL,aAAa,EAAE59K,GAAG,CAAC,IAAIC,EAAE,GAAGg7K,GAAGj7K,GAAGw8D,EAAE,GAAGv8D,EAAEjK,EAAE+J,EAAEE,GAAG,IAAI,IAAIjK,GAAG,GAAG,KAAKwmE,EAAE18D,IAAI,KAAK08D,EAAExgE,GAAG,CAAChG,EAAEuE,EAAEsgL,GAAGr+G,GAAG,IAAIhlE,EAAEqkJ,GAAE97I,EAAEE,GAAG,IAAIzI,EAAExB,EAAE,IAAI,GAAGwB,EAAExB,EAAE,KAAK,QAAQA,GAAGuE,IAAID,EAAEujL,cAAcrhH,GAAGx8D,IAAIw8D,EAAwB,GAAtB18D,EAAEk7K,GAAG1gL,EAAEA,IAAIq/J,GAAEI,GAAE,GAAGx/J,EAAEshJ,GAAK,IAAI/7I,EAAE,OAAOtF,IAAIA,IAAIwiL,IAAIhB,GAAGxhL,GAAGF,EAAEumM,aAAa,KAAKvmM,EAAEymM,iBAAiB,OAAO,CAAC,GAAG,OAAOvmM,EAAE,CAAC,GAAGF,EAAEymM,mBAAmBxmM,EAAE,OAAOC,IAAIwiL,IAAIhB,GAAGxhL,GAAG,KAAKD,GAAGC,EAAEo5L,GAAGh8E,KAAK,KAAKt9G,GAAG,OAAO4iL,IAAIA,GAAG,CAAC1iL,GAAG2iL,GAAGtB,GAAGU,GAAGmB,KAAKR,GAAG3nL,KAAKiF,GACpfA,EAAEwiL,IAAI,KAAKziL,EAAEC,EAAEijL,GAAG,GAAGmW,GAAGh8E,KAAK,KAAKt9G,IAAaE,EAAEijL,GAAVjjL,EA7H+F,SAAYF,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAMmB,MAAMpB,EAAE,IAAIC,KA6HxTygL,CAAGxgL,GAAUy5L,GAAGp8E,KAAK,KAAKt9G,IAAKA,EAAEymM,iBAAiBxmM,EAAED,EAAEumM,aAAarmM,GAC5G,SAASw5L,GAAG15L,GAAiB,GAAd+4L,IAAI,EAAEH,GAAGI,GAAG,EAAK,KAAO,GAAFqJ,IAAM,MAAMlhM,MAAMpB,EAAE,MAAM,IAAIE,EAAED,EAAEumM,aAAa,GAAG5M,MAAM35L,EAAEumM,eAAetmM,EAAE,OAAO,KAAK,IAAIC,EAAEwgL,GAAG1gL,EAAEA,IAAIq/J,GAAEI,GAAE,GAAG,GAAG,IAAIv/J,EAAE,OAAO,KAAK,IAAIsF,EAAEtF,EAAMwB,EAAE2gM,GAAEA,IAAG,GAAG,IAAI58L,EAAEo0L,KAAkC,IAA1Bx6B,KAAIr/J,GAAGy/J,KAAIj6J,IAAEyyL,KAAK6B,GAAG95L,EAAEwF,MAAM,IAAI00L,KAAK,MAAM,MAAMv0L,GAAGw0L,GAAGn6L,EAAE2F,GAAgE,GAApDoZ,KAAK+3K,GAAG1kG,QAAQ3sF,EAAE48L,GAAE3gM,EAAE,OAAOm8J,GAAEr4J,EAAE,GAAG65J,GAAE,KAAKI,GAAE,EAAEj6J,EAAEygG,IAAM,KAAKwxF,GAAGrE,IAAI0G,GAAG95L,EAAE,QAAQ,GAAG,IAAIwF,EAAE,CAAyF,GAAxF,IAAIA,IAAI68L,IAAG,GAAGriM,EAAEyhL,UAAUzhL,EAAEyhL,SAAQ,EAAGxD,GAAGj+K,EAAEk8I,gBAAwB,KAARh8I,EAAE0gL,GAAG5gL,MAAWwF,EAAE60L,GAAGr6L,EAAEE,KAAQ,IAAIsF,EAAE,MAAMvF,EAAEs3L,GAAGuC,GAAG95L,EAAE,GAAG0/L,GAAG1/L,EAAEE,GAAG4+J,GAAE9+J,EAAEi+J,MAAKh+J,EAC1c,OAD4cD,EAAEknM,aACpflnM,EAAEoyF,QAAQ8sD,UAAUl/I,EAAEmnM,cAAcjnM,EAASsF,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMrE,MAAMpB,EAAE,MAAM,KAAK,EAAE26L,GAAG16L,GAAG,MAAM,KAAK,EAAU,GAAR0/L,GAAG1/L,EAAEE,IAAS,SAAFA,KAAcA,GAAiB,IAAbsF,EAAEqwL,GAAG,IAAI53B,MAAU,CAAC,GAAG,IAAIyiB,GAAG1gL,EAAE,GAAG,MAAyB,KAAnB0B,EAAE1B,EAAEwjL,gBAAqBtjL,KAAKA,EAAE,CAAC49J,KAAI99J,EAAEyjL,aAAazjL,EAAEwjL,eAAe9hL,EAAE,MAAM1B,EAAEqnM,cAActtB,EAAG2gB,GAAGp9E,KAAK,KAAKt9G,GAAGwF,GAAG,MAAMk1L,GAAG16L,GAAG,MAAM,KAAK,EAAU,GAAR0/L,GAAG1/L,EAAEE,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAfsF,EAAExF,EAAEkkL,WAAexiL,GAAG,EAAE,EAAExB,GAAG,CAAC,IAAIwF,EAAE,GAAGi7K,GAAGzgL,GAAGuF,EAAE,GAAGC,GAAEA,EAAEF,EAAEE,IAAKhE,IAAIA,EAAEgE,GAAGxF,IAAIuF,EAChZ,GADkZvF,EAAEwB,EACjZ,IAD2ZxB,GAAG,KAAXA,EAAE+9J,KAAI/9J,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KACjfA,EAAE,KAAK,KAAK22L,GAAG32L,EAAE,OAAOA,GAAU,CAACF,EAAEqnM,cAActtB,EAAG2gB,GAAGp9E,KAAK,KAAKt9G,GAAGE,GAAG,MAAMw6L,GAAG16L,GAAG,MAAM,KAAK,EAAE06L,GAAG16L,GAAG,MAAM,QAAQ,MAAMmB,MAAMpB,EAAE,OAAiB,OAAT++J,GAAE9+J,EAAEi+J,MAAYj+J,EAAEumM,eAAetmM,EAAEy5L,GAAGp8E,KAAK,KAAKt9G,GAAG,KAAK,SAAS0/L,GAAG1/L,EAAEC,GAAuD,IAApDA,IAAIy3L,GAAGz3L,IAAImzL,GAAGpzL,EAAEwjL,gBAAgBvjL,EAAED,EAAEyjL,cAAcxjL,EAAMD,EAAEA,EAAEwmM,gBAAgB,EAAEvmM,GAAG,CAAC,IAAIC,EAAE,GAAGygL,GAAG1gL,GAAGuF,EAAE,GAAGtF,EAAEF,EAAEE,IAAI,EAAED,IAAIuF,GACzU,SAAS8zL,GAAGt5L,GAAG,GAAG,KAAO,GAAFqiM,IAAM,MAAMlhM,MAAMpB,EAAE,MAAW,GAAL45L,KAAQ35L,IAAIq/J,IAAG,KAAKr/J,EAAEujL,aAAa9jB,IAAG,CAAC,IAAIx/J,EAAEw/J,GAAMv/J,EAAEm6L,GAAGr6L,EAAEC,GAAG,KAAKw3L,GAAGrE,MAAgBlzL,EAAEm6L,GAAGr6L,EAAfC,EAAEygL,GAAG1gL,EAAEC,UAA6BC,EAAEm6L,GAAGr6L,EAAfC,EAAEygL,GAAG1gL,EAAE,IAAgH,GAAnG,IAAIA,EAAEk6K,KAAK,IAAIh6K,IAAImiM,IAAG,GAAGriM,EAAEyhL,UAAUzhL,EAAEyhL,SAAQ,EAAGxD,GAAGj+K,EAAEk8I,gBAAwB,KAARj8I,EAAE2gL,GAAG5gL,MAAWE,EAAEm6L,GAAGr6L,EAAEC,KAAQ,IAAIC,EAAE,MAAMA,EAAEq3L,GAAGuC,GAAG95L,EAAE,GAAG0/L,GAAG1/L,EAAEC,GAAG6+J,GAAE9+J,EAAEi+J,MAAK/9J,EAAsE,OAApEF,EAAEknM,aAAalnM,EAAEoyF,QAAQ8sD,UAAUl/I,EAAEmnM,cAAclnM,EAAEy6L,GAAG16L,GAAG8+J,GAAE9+J,EAAEi+J,MAAY,KACnR,SAAS28B,GAAG56L,EAAEC,GAAG,IAAIC,EAAEmiM,GAAEA,IAAG,EAAE,IAAI,OAAOriM,EAAEC,GAAb,QAA4B,KAAJoiM,GAAEniM,KAAU+3L,KAAK3+B,OAAM,SAASuhC,GAAG76L,EAAEC,GAAG,IAAIC,EAAEmiM,GAAE,GAAG,KAAO,GAAFniM,GAAM,OAAOF,EAAEC,GAAGoiM,IAAG,EAAE,IAAI,GAAGriM,EAAE,OAAOkjL,GAAG,GAAGljL,EAAEs9G,KAAK,KAAKr9G,IAAlC,QAA8CoiM,GAAEniM,EAAEo5J,MAAK,SAASo4B,GAAG1xL,EAAEC,GAAGm+J,GAAEk5B,GAAGJ,IAAIA,IAAIj3L,EAAEw3L,IAAIx3L,EAAE,SAASqzL,KAAK4D,GAAGI,GAAGllG,QAAQhmF,GAAEkrL,IACpX,SAASwC,GAAG95L,EAAEC,GAAGD,EAAEknM,aAAa,KAAKlnM,EAAEmnM,cAAc,EAAE,IAAIjnM,EAAEF,EAAEqnM,cAAiD,GAAnCnnM,IAAIk6K,IAAKp6K,EAAEqnM,cAAcjtB,EAAGH,EAAG/5K,IAAO,OAAO29J,GAAE,IAAI39J,EAAE29J,GAAE7hB,OAAO,OAAO97I,GAAG,CAAC,IAAIsF,EAAEtF,EAAE,OAAOsF,EAAE00K,KAAK,KAAK,EAA6B,QAA3B10K,EAAEA,EAAE5K,KAAK20J,yBAA4B,IAAS/pJ,GAAGs6K,KAAK,MAAM,KAAK,EAAE24B,KAAKrsM,GAAEkyJ,IAAGlyJ,GAAE45F,IAAG4nF,KAAK,MAAM,KAAK,EAAE8qB,GAAGlzM,GAAG,MAAM,KAAK,EAAEizM,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGrsM,GAAEgtJ,IAAG,MAAM,KAAK,GAAGirB,GAAG7+K,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG8tL,KAAKpzL,EAAEA,EAAE87I,OAAOqjB,GAAEr/J,EAAE69J,GAAEw6C,GAAGr4M,EAAEoyF,QAAQ,MAAMqtE,GAAEy3B,GAAGO,GAAGx3L,EAAEgmG,GAAE,EAAEsxF,GAAG,KAAKG,GAAGtE,GAAGhO,GAAG,EACvc,SAAS+U,GAAGn6L,EAAEC,GAAG,OAAE,CAAC,IAAIC,EAAE29J,GAAE,IAAuB,GAAnB9+I,KAAK8uK,GAAGz7F,QAAQu8F,GAAMX,GAAG,CAAC,IAAI,IAAIxoL,EAAE0gG,GAAE65E,cAAc,OAAOv6K,GAAG,CAAC,IAAI9D,EAAE8D,EAAE02F,MAAM,OAAOx6F,IAAIA,EAAEqwH,QAAQ,MAAMvsH,EAAEA,EAAE4pD,KAAK4+H,IAAG,EAAyC,GAAtCD,GAAG,EAAErnF,GAAEy3D,GAAEj4D,GAAE,KAAKmsF,IAAG,EAAG0E,GAAG3kG,QAAQ,KAAQ,OAAOlyF,GAAG,OAAOA,EAAE87I,OAAO,CAAC/1C,GAAE,EAAEsxF,GAAGt3L,EAAE49J,GAAE,KAAK,MAAM79J,EAAE,CAAC,IAAIyF,EAAEzF,EAAE0F,EAAExF,EAAE87I,OAAOr2I,EAAEzF,EAAEgiE,EAAEjiE,EAAoD,GAAlDA,EAAEw/J,GAAE95J,EAAE0rJ,OAAO,KAAK1rJ,EAAEs0L,YAAYt0L,EAAEo0L,WAAW,KAAQ,OAAO73H,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAE30E,KAAK,CAAC,IAAImO,EAAEwmE,EAAE,GAAG,KAAY,EAAPv8D,EAAE01C,MAAQ,CAAC,IAAIn+C,EAAEyI,EAAEu5I,UAAUhiJ,GAAGyI,EAAEgyL,YAAYz6L,EAAEy6L,YAAYhyL,EAAEo6K,cAAc7iL,EAAE6iL,cAAcp6K,EAAE0xL,MAAMn6L,EAAEm6L,QACpf1xL,EAAEgyL,YAAY,KAAKhyL,EAAEo6K,cAAc,MAAM,IAAIxiL,EAAE,KAAe,EAAV67J,GAAEhnE,SAAW3hF,EAAE/K,EAAE,EAAE,CAAC,IAAIpI,EAAE,GAAGA,EAAE,KAAKmT,EAAEypK,IAAI,CAAC,IAAI78K,EAAEoT,EAAEsvK,cAAc,GAAG,OAAO1iL,EAAEC,EAAE,OAAOD,EAAE2iL,eAAqB,CAAC,IAAIthB,EAAEjuJ,EAAE2iI,cAAc91I,OAAE,IAASohK,EAAEhnB,YAAY,IAAKgnB,EAAEyiC,6BAA8B5jM,IAAS,GAAGD,EAAE,CAAC,IAAI0Y,EAAEvF,EAAEknL,YAAY,GAAG,OAAO3hL,EAAE,CAAC,IAAI3U,EAAE,IAAI2lG,IAAI3lG,EAAE0V,IAAIrb,GAAG+U,EAAEknL,YAAYt2L,OAAO2U,EAAEe,IAAIrb,GAAG,GAAG,KAAY,EAAP+U,EAAE4qC,MAAQ,CAA2C,GAA1C5qC,EAAE4gJ,OAAO,GAAG1rJ,EAAE0rJ,OAAO,MAAM1rJ,EAAE0rJ,QAAQ,KAAQ,IAAI1rJ,EAAEu0K,IAAI,GAAG,OAAOv0K,EAAEu5I,UAAUv5I,EAAEu0K,IAAI,OAAO,CAAC,IAAIhnB,EAAE2xB,IAAI,EAAE,GAAG3xB,EAAEgnB,IAAI,EAAE6K,GAAGp/K,EAAEutJ,GAAGvtJ,EAAE0xL,OAAO,EAAE,MAAMr3L,EAAEkiE,OAC5f,EAAOv8D,EAAE1F,EAAE,IAAI65K,EAAGr0K,EAAE+hM,UAAoH,GAA1G,OAAO1tB,GAAIA,EAAGr0K,EAAE+hM,UAAU,IAAI9T,GAAGxxH,EAAE,IAAI8kC,IAAI8yE,EAAGh5K,IAAIpF,EAAEwmE,SAAiB,KAAZA,EAAE43G,EAAGryI,IAAI/rC,MAAgBwmE,EAAE,IAAI8kC,IAAI8yE,EAAGh5K,IAAIpF,EAAEwmE,KAASA,EAAEhmB,IAAIv2C,GAAG,CAACu8D,EAAEnrD,IAAIpR,GAAG,IAAIirL,EAAGkK,GAAGx9E,KAAK,KAAK73G,EAAE/J,EAAEiK,GAAGjK,EAAEnO,KAAKqjM,EAAGA,GAAIngL,EAAE4gJ,OAAO,KAAK5gJ,EAAE4mL,MAAMp3L,EAAE,MAAMD,EAAEyQ,EAAEA,EAAEurI,aAAa,OAAOvrI,GAAGyxD,EAAE/gE,OAAOw3K,EAAGhzK,EAAE/K,OAAO,qBAAqB,yLAAyL,IAAIqrG,KAAIA,GAAE,GAAG/jC,EACnfsxH,GAAGtxH,EAAEv8D,GAAG8K,EAAE/K,EAAE,EAAE,CAAC,OAAO+K,EAAEypK,KAAK,KAAK,EAAEz0K,EAAEy8D,EAAEzxD,EAAE4gJ,OAAO,KAAKpxJ,IAAIA,EAAEwQ,EAAE4mL,OAAOp3L,EAAmB+kL,GAAGv0K,EAAbkjL,GAAGljL,EAAEhL,EAAExF,IAAY,MAAMD,EAAE,KAAK,EAAEyF,EAAEy8D,EAAE,IAAIs4H,EAAG/pL,EAAE7V,KAAKkqL,EAAGr0K,EAAEwrI,UAAU,GAAG,KAAa,GAARxrI,EAAE4gJ,SAAY,oBAAoBmpC,EAAGjjD,0BAA0B,OAAOutC,GAAI,oBAAoBA,EAAGoe,oBAAoB,OAAOjP,KAAKA,GAAG/3I,IAAI4oI,KAAM,CAACr0K,EAAE4gJ,OAAO,KAAKpxJ,IAAIA,EAAEwQ,EAAE4mL,OAAOp3L,EAAmB+kL,GAAGv0K,EAAbqjL,GAAGrjL,EAAEhL,EAAExF,IAAY,MAAMD,GAAGyQ,EAAEA,EAAEurI,aAAa,OAAOvrI,GAAGsqL,GAAG76L,GAAG,MAAMoB,GAAGrB,EAAEqB,EAAEu8J,KAAI39J,GAAG,OAAOA,IAAI29J,GAAE39J,EAAEA,EAAE87I,QAAQ,SAAS,OACjc,SAAS69C,KAAK,IAAI75L,EAAE82L,GAAG1kG,QAAsB,OAAd0kG,GAAG1kG,QAAQu8F,GAAU,OAAO3uL,EAAE2uL,GAAG3uL,EAAE,SAASq6L,GAAGr6L,EAAEC,GAAG,IAAIC,EAAEmiM,GAAEA,IAAG,GAAG,IAAI78L,EAAEq0L,KAA2B,IAAtBx6B,KAAIr/J,GAAGy/J,KAAIx/J,GAAG65L,GAAG95L,EAAEC,KAAM,IAAI+6L,KAAK,MAAM,MAAMt5L,GAAGy4L,GAAGn6L,EAAE0B,GAAkC,GAAtBqd,KAAKsjL,GAAEniM,EAAE42L,GAAG1kG,QAAQ5sF,EAAK,OAAOq4J,GAAE,MAAM18J,MAAMpB,EAAE,MAAiB,OAAXs/J,GAAE,KAAKI,GAAE,EAASx5D,GAAE,SAAS+0F,KAAK,KAAK,OAAOn9B,IAAGq9B,GAAGr9B,IAAG,SAASq8B,KAAK,KAAK,OAAOr8B,KAAI8jB,MAAMuZ,GAAGr9B,IAAG,SAASq9B,GAAGl7L,GAAG,IAAIC,EAAEk7L,GAAGn7L,EAAEk/I,UAAUl/I,EAAEk3L,IAAIl3L,EAAEozI,cAAcpzI,EAAE67L,aAAa,OAAO57L,EAAE86L,GAAG/6L,GAAG69J,GAAE59J,EAAE82L,GAAG3kG,QAAQ,KAC5a,SAAS2oG,GAAG/6L,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIE,EAAED,EAAEi/I,UAAqB,GAAXl/I,EAAEC,EAAE+7I,OAAU,KAAa,KAAR/7I,EAAEoxJ,OAAY,CAAc,GAAG,QAAhBnxJ,EAAEmhG,GAAGnhG,EAAED,EAAEi3L,KAAqB,YAAJr5B,GAAE39J,GAAa,GAAG,MAAPA,EAAED,GAAYi6K,KAAK,KAAKh6K,EAAEg6K,KAAK,OAAOh6K,EAAE6/K,eAAe,KAAQ,WAAHmX,KAAgB,KAAY,EAAPh3L,EAAEm7C,MAAQ,CAAC,IAAI,IAAI71C,EAAE,EAAE9D,EAAExB,EAAEooB,MAAM,OAAO5mB,GAAG8D,GAAG9D,EAAE21L,MAAM31L,EAAEu1L,WAAWv1L,EAAEA,EAAEo7I,QAAQ58I,EAAE+2L,WAAWzxL,EAAE,OAAOxF,GAAG,KAAa,KAARA,EAAEqxJ,SAAc,OAAOrxJ,EAAEi6L,cAAcj6L,EAAEi6L,YAAYh6L,EAAEg6L,aAAa,OAAOh6L,EAAE85L,aAAa,OAAO/5L,EAAE+5L,aAAa/5L,EAAE+5L,WAAWC,WAAW/5L,EAAEg6L,aAAaj6L,EAAE+5L,WAAW95L,EAAE85L,YAAY,EAAE95L,EAAEoxJ,QAAQ,OAC/erxJ,EAAE+5L,WAAW/5L,EAAE+5L,WAAWC,WAAW/5L,EAAED,EAAEi6L,YAAYh6L,EAAED,EAAE+5L,WAAW95L,QAAQ,CAAS,GAAG,QAAXC,EAAEqzL,GAAGtzL,IAAkC,OAAlBC,EAAEmxJ,OAAO,UAAKwM,GAAE39J,GAAS,OAAOF,IAAIA,EAAEi6L,YAAYj6L,EAAE+5L,WAAW,KAAK/5L,EAAEqxJ,OAAO,MAAkB,GAAG,QAAfpxJ,EAAEA,EAAE68I,SAAyB,YAAJ+gB,GAAE59J,GAAS49J,GAAE59J,EAAED,QAAQ,OAAOC,GAAG,IAAIgmG,KAAIA,GAAE,GAAG,SAASy0F,GAAG16L,GAAG,IAAIC,EAAE+iL,KAA8B,OAAzBE,GAAG,GAAGkY,GAAG99E,KAAK,KAAKt9G,EAAEC,IAAW,KACtT,SAASm7L,GAAGp7L,EAAEC,GAAG,GAAG05L,WAAW,OAAOrB,IAAI,GAAG,KAAO,GAAF+J,IAAM,MAAMlhM,MAAMpB,EAAE,MAAM,IAAIG,EAAEF,EAAEknM,aAAa,GAAG,OAAOhnM,EAAE,OAAO,KAA2C,GAAtCF,EAAEknM,aAAa,KAAKlnM,EAAEmnM,cAAc,EAAKjnM,IAAIF,EAAEoyF,QAAQ,MAAMjxF,MAAMpB,EAAE,MAAMC,EAAEumM,aAAa,KAAK,IAAI/gM,EAAEtF,EAAEm3L,MAAMn3L,EAAE+2L,WAAWv1L,EAAE8D,EAAEC,EAAEzF,EAAEsjL,cAAc5hL,EAAE1B,EAAEsjL,aAAa5hL,EAAE1B,EAAEwjL,eAAe,EAAExjL,EAAEyjL,YAAY,EAAEzjL,EAAEujL,cAAc7hL,EAAE1B,EAAE89L,kBAAkBp8L,EAAE1B,EAAE2jL,gBAAgBjiL,EAAEA,EAAE1B,EAAE4jL,cAAc,IAAI,IAAIl+K,EAAE1F,EAAEkkL,WAAWv+K,EAAE3F,EAAEwmM,gBAAgB,EAAE/gM,GAAG,CAAC,IAAIy8D,EAAE,GAAGy+G,GAAGl7K,GAAG/J,EAAE,GAAGwmE,EAAExgE,EAAEwgE,GAAG,EAAEx8D,EAAEw8D,IAAI,EAAEv8D,EAAEu8D,IAAI,EAAEz8D,IAAI/J,EACnV,GADqV,OACjfg9L,IAAI,KAAO,GAAFlzL,IAAOkzL,GAAGx8I,IAAIl8C,IAAI04L,GAAG/wJ,OAAO3nC,GAAGA,IAAIq/J,KAAIxB,GAAEwB,GAAE,KAAKI,GAAE,GAAG,EAAEv/J,EAAEmxJ,MAAM,OAAOnxJ,EAAE65L,YAAY75L,EAAE65L,WAAWC,WAAW95L,EAAEsF,EAAEtF,EAAE+5L,aAAaz0L,EAAEtF,EAAEsF,EAAEtF,EAAE+5L,YAAe,OAAOz0L,EAAE,CAAC9D,EAAE2gM,GAAEA,IAAG,GAAGtL,GAAG3kG,QAAQ,KAAK6mG,GAAG5f,EAAGr5K,EAAEk8I,eAAei9C,IAAG,EAAG96B,GAAE74J,EAAE,GAAG,IAAI61L,KAAK,MAAMh6L,GAAG,GAAG,OAAOg9J,GAAE,MAAMl9J,MAAMpB,EAAE,MAAMq0L,GAAG/1B,GAAEh9J,GAAGg9J,GAAEA,GAAE27B,kBAAiB,OAAO37B,IAAG46B,GAAG,KAAK56B,GAAE74J,EAAE,GAAG,IAAI,IAAIE,EAAE1F,EAAE,OAAOq+J,IAAG,CAAC,IAAInhK,EAAEmhK,GAAEhN,MAAgC,GAAxB,GAAFn0J,GAAMo9K,GAAI6C,GAAG9e,GAAEpiB,WAAgB,IAAF/+I,EAAM,CAAC,IAAIK,EAAE8gK,GAAEnf,UAAU,GAAG,OAAO3hJ,EAAE,CAAC,IAAIkT,EAAElT,EAAEuwI,IAAI,OAAOr9H,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAE2hF,QAC9e,OAAO,OAAS,KAAFl1F,GAAQ,KAAK,EAAEm4L,GAAGh3B,IAAGA,GAAEhN,QAAQ,EAAE,MAAM,KAAK,EAAEgkC,GAAGh3B,IAAGA,GAAEhN,QAAQ,EAAEokC,GAAGp3B,GAAEnf,UAAUmf,IAAG,MAAM,KAAK,KAAKA,GAAEhN,QAAQ,KAAK,MAAM,KAAK,KAAKgN,GAAEhN,QAAQ,KAAKokC,GAAGp3B,GAAEnf,UAAUmf,IAAG,MAAM,KAAK,EAAEo3B,GAAGp3B,GAAEnf,UAAUmf,IAAG,MAAM,KAAK,EAAE14J,EAAED,EAAED,EAAE44J,GAAEic,EAAGwa,GAAGnvL,EAAEF,GAAGuvL,GAAGrvL,EAAEF,GAAG,IAAInI,EAAEmI,EAAEy5I,UAAUg2C,GAAGzvL,GAAG,OAAOnI,GAAG43L,GAAG53L,GAAG+gK,GAAEA,GAAE27B,YAAY,MAAM34L,GAAG,GAAG,OAAOg9J,GAAE,MAAMl9J,MAAMpB,EAAE,MAAMq0L,GAAG/1B,GAAEh9J,GAAGg9J,GAAEA,GAAE27B,kBAAiB,OAAO37B,IAAG86B,IAAI7d,KAAKhC,EAAGt5K,EAAEk8I,eAAel8I,EAAEoyF,QAAQlyF,EAAEm+J,GAAE74J,EAAE,GAAG,IAAI,IAAItI,EAAE8C,EAAE,OAAOq+J,IAAG,CAAC,IAAIhhK,EAAEghK,GAAEhN,MAAgC,GAAxB,GAAFh0J,GAAMm3L,GAAGt3L,EAAEmhK,GAAEnf,UAAUmf,IAAQ,IAAFhhK,EAAM,CAACE,OACxf,EAAO,IAAImhK,EAAEL,GAAEvwB,IAAI,GAAG,OAAO4wB,EAAE,CAAC,IAAI1oJ,EAAEqoJ,GAAEpiB,UAAU,OAAOoiB,GAAE6b,KAAK,KAAK,EAAE38K,EAAE27K,EAAGljK,GAAG,MAAM,QAAQzY,EAAEyY,EAAE,oBAAoB0oJ,EAAEA,EAAEnhK,GAAGmhK,EAAEtsE,QAAQ70F,GAAG8gK,GAAEA,GAAE27B,YAAY,MAAM34L,GAAG,GAAG,OAAOg9J,GAAE,MAAMl9J,MAAMpB,EAAE,MAAMq0L,GAAG/1B,GAAEh9J,GAAGg9J,GAAEA,GAAE27B,kBAAiB,OAAO37B,IAAGA,GAAE,KAAKskB,KAAK0f,GAAE3gM,OAAO1B,EAAEoyF,QAAQlyF,EAAE,GAAGm4L,GAAGA,IAAG,EAAGC,GAAGt4L,EAAEu4L,GAAGt4L,OAAO,IAAIo+J,GAAE74J,EAAE,OAAO64J,IAAGp+J,EAAEo+J,GAAE27B,WAAW37B,GAAE27B,WAAW,KAAa,EAAR37B,GAAEhN,SAAUh0J,EAAEghK,IAAIvhB,QAAQ,KAAKz/I,EAAE4+I,UAAU,MAAMoiB,GAAEp+J,EAAqF,GAAlE,KAAjBuF,EAAExF,EAAEsjL,gBAAqB2Q,GAAG,MAAM,IAAIzuL,EAAExF,IAAI84L,GAAGH,MAAMA,GAAG,EAAEG,GAAG94L,GAAG24L,GAAG,EAAEz4L,EAAEA,EAAE+7I,UAAamkC,IAAI,oBAAoBA,GAAGqoB,kBAAkB,IAAIroB,GAAGqoB,kBAAkBtoB,GACziBjgL,OAAE,EAAO,MAAsB,GAAhBA,EAAEkyF,QAAQi/D,QAAW,MAAMhwJ,IAAa,GAATy9J,GAAE9+J,EAAEi+J,MAAQ21B,GAAG,MAAMA,IAAG,EAAG5zL,EAAE6zL,GAAGA,GAAG,KAAK7zL,EAAE,OAAG,KAAO,EAAFqiM,KAAiB/oC,KAAL,KAAqB,SAAS+hC,KAAK,KAAK,OAAOh9B,IAAG,CAAC,IAAIr+J,EAAEq+J,GAAEnf,UAAUi6C,IAAI,OAAOF,KAAK,KAAa,EAAR56B,GAAEhN,OAAS4nB,EAAG5a,GAAE46B,MAAME,IAAG,EAAGhe,MAAM,KAAK9c,GAAE6b,KAAK6b,GAAG/1L,EAAEq+J,KAAI4a,EAAG5a,GAAE46B,MAAME,IAAG,EAAGhe,OAAO,IAAIl7K,EAAEo+J,GAAEhN,MAAM,KAAO,IAAFpxJ,IAAQo0L,GAAGr0L,EAAEq+J,IAAG,KAAO,IAAFp+J,IAAQo4L,KAAKA,IAAG,EAAGlV,GAAG,IAAG,WAAgB,OAALwW,KAAY,SAAQt7B,GAAEA,GAAE27B,YAAY,SAASL,KAAK,GAAG,KAAKpB,GAAG,CAAC,IAAIv4L,EAAE,GAAGu4L,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUrV,GAAGljL,EAAEu7L,IAAI,OAAM,EAC7c,SAAS7G,GAAG10L,EAAEC,GAAGu4L,GAAGv9L,KAAKgF,EAAED,GAAGq4L,KAAKA,IAAG,EAAGlV,GAAG,IAAG,WAAgB,OAALwW,KAAY,SAAQ,SAASlF,GAAGz0L,EAAEC,GAAGw4L,GAAGx9L,KAAKgF,EAAED,GAAGq4L,KAAKA,IAAG,EAAGlV,GAAG,IAAG,WAAgB,OAALwW,KAAY,SACpJ,SAAS4B,KAAK,GAAG,OAAOjD,GAAG,OAAM,EAAG,IAAIt4L,EAAEs4L,GAAW,GAARA,GAAG,KAAQ,KAAO,GAAF+J,IAAM,MAAMlhM,MAAMpB,EAAE,MAAM,IAAIE,EAAEoiM,GAAEA,IAAG,GAAG,IAAIniM,EAAEu4L,GAAGA,GAAG,GAAG,IAAI,IAAIjzL,EAAE,EAAEA,EAAEtF,EAAEvE,OAAO6J,GAAG,EAAE,CAAC,IAAI9D,EAAExB,EAAEsF,GAAGC,EAAEvF,EAAEsF,EAAE,GAAGE,EAAEhE,EAAEo2D,QAAyB,GAAjBp2D,EAAEo2D,aAAQ,EAAU,oBAAoBpyD,EAAE,IAAIA,IAAI,MAAMw8D,GAAG,GAAG,OAAOz8D,EAAE,MAAMtE,MAAMpB,EAAE,MAAMq0L,GAAG3uL,EAAEy8D,IAAe,IAAXhiE,EAAEs4L,GAAGA,GAAG,GAAOhzL,EAAE,EAAEA,EAAEtF,EAAEvE,OAAO6J,GAAG,EAAE,CAAC9D,EAAExB,EAAEsF,GAAGC,EAAEvF,EAAEsF,EAAE,GAAG,IAAI,IAAIG,EAAEjE,EAAEmxH,OAAOnxH,EAAEo2D,QAAQnyD,IAAI,MAAMu8D,GAAG,GAAG,OAAOz8D,EAAE,MAAMtE,MAAMpB,EAAE,MAAMq0L,GAAG3uL,EAAEy8D,IAAI,IAAIv8D,EAAE3F,EAAEoyF,QAAQ6nG,YAAY,OAAOt0L,GAAG3F,EAAE2F,EAAEq0L,WAAWr0L,EAAEq0L,WAAW,KAAa,EAARr0L,EAAE0rJ,QAAU1rJ,EAAEm3I,QACjf,KAAKn3I,EAAEs2I,UAAU,MAAMt2I,EAAE3F,EAAU,OAARqiM,GAAEpiM,EAAEq5J,MAAU,EAAG,SAASkiC,GAAGx7L,EAAEC,EAAEC,GAAyB6kL,GAAG/kL,EAAfC,EAAE0zL,GAAG3zL,EAAfC,EAAEuzL,GAAGtzL,EAAED,GAAY,IAAWA,EAAE69J,KAAc,QAAV99J,EAAEo5L,GAAGp5L,EAAE,MAAcghL,GAAGhhL,EAAE,EAAEC,GAAG6+J,GAAE9+J,EAAEC,IACtI,SAASm0L,GAAGp0L,EAAEC,GAAG,GAAG,IAAID,EAAEk6K,IAAIshB,GAAGx7L,EAAEA,EAAEC,QAAQ,IAAI,IAAIC,EAAEF,EAAEg8I,OAAO,OAAO97I,GAAG,CAAC,GAAG,IAAIA,EAAEg6K,IAAI,CAACshB,GAAGt7L,EAAEF,EAAEC,GAAG,MAAW,GAAG,IAAIC,EAAEg6K,IAAI,CAAC,IAAI10K,EAAEtF,EAAE+7I,UAAU,GAAG,oBAAoB/7I,EAAEtF,KAAK28I,0BAA0B,oBAAoB/xI,EAAE09L,oBAAoB,OAAOjP,KAAKA,GAAG/3I,IAAI12C,IAAI,CAAW,IAAI9D,EAAEoyL,GAAG5zL,EAAnBF,EAAEwzL,GAAGvzL,EAAED,GAAgB,GAA2B,GAAxB+kL,GAAG7kL,EAAEwB,GAAGA,EAAEo8J,KAAiB,QAAb59J,EAAEk5L,GAAGl5L,EAAE,IAAe8gL,GAAG9gL,EAAE,EAAEwB,GAAGo9J,GAAE5+J,EAAEwB,QAAQ,GAAG,oBAAoB8D,EAAE09L,oBAAoB,OAAOjP,KAAKA,GAAG/3I,IAAI12C,IAAI,IAAIA,EAAE09L,kBAAkBjjM,EAAED,GAAG,MAAMyF,IAAI,OAAOvF,EAAEA,EAAE87I,QACld,SAAS8+C,GAAG96L,EAAEC,EAAEC,GAAG,IAAIsF,EAAExF,EAAEwnM,UAAU,OAAOhiM,GAAGA,EAAEmiC,OAAO1nC,GAAGA,EAAE69J,KAAI99J,EAAEyjL,aAAazjL,EAAEwjL,eAAetjL,EAAEm/J,KAAIr/J,IAAIy/J,GAAEv/J,KAAKA,IAAI,IAAI+lG,IAAG,IAAIA,KAAM,SAAFw5D,MAAcA,IAAG,IAAIxB,KAAI43B,GAAGiE,GAAG95L,EAAE,GAAG03L,IAAIx3L,GAAG4+J,GAAE9+J,EAAEC,GAAG,SAAS61L,GAAG91L,EAAEC,GAAG,IAAIC,EAAEF,EAAEi8I,UAAU,OAAO/7I,GAAGA,EAAEynC,OAAO1nC,GAAO,KAAJA,EAAE,KAAmB,KAAO,GAAhBA,EAAED,EAAEq7C,OAAep7C,EAAE,EAAE,KAAO,EAAFA,GAAKA,EAAE,KAAK+iL,KAAK,EAAE,GAAG,IAAIgW,KAAKA,GAAGvB,IAAuB,KAAnBx3L,EAAE6gL,GAAG,UAAUkY,OAAY/4L,EAAE,WAAWC,EAAE49J,KAAc,QAAV99J,EAAEo5L,GAAGp5L,EAAEC,MAAc+gL,GAAGhhL,EAAEC,EAAEC,GAAG4+J,GAAE9+J,EAAEE,IAC/Yi7L,GAAG,SAASn7L,EAAEC,EAAEC,GAAG,IAAIsF,EAAEvF,EAAEo3L,MAAM,GAAG,OAAOr3L,EAAE,GAAGA,EAAEozI,gBAAgBnzI,EAAE47L,cAAcv9B,GAAElsE,QAAQqyF,IAAG,MAAQ,IAAG,KAAKvkL,EAAEsF,GAAoC,CAAO,OAANi/K,IAAG,EAAUxkL,EAAEi6K,KAAK,KAAK,EAAE57J,GAAGre,GAAGue,KAAK,MAAM,KAAK,EAAE0tK,GAAGjsL,GAAG,MAAM,KAAK,EAAE0+J,GAAE1+J,EAAErF,OAAOqlL,GAAGhgL,GAAG,MAAM,KAAK,EAAEgsL,GAAGhsL,EAAEA,EAAEg8I,UAAUC,eAAe,MAAM,KAAK,GAAGkoC,GAAGnkL,EAAEA,EAAEmzI,cAAcjmJ,OAAO,MAAM,KAAK,GAAG,GAAG,OAAO8S,EAAE8/K,cAAe,OAAG,KAAK7/K,EAAED,EAAEqoB,MAAM2uK,YAAmBx4K,GAAGze,EAAEC,EAAEC,IAAGk+J,GAAEhF,GAAY,EAAVA,GAAEhnE,SAA8B,QAAnBnyF,EAAE4wL,GAAG7wL,EAAEC,EAAEC,IAAmBD,EAAE68I,QAAQ,MAAKshB,GAAEhF,GAAY,EAAVA,GAAEhnE,SAAW,MAAM,KAAK,GAC/d,GADke5sF,EACvf,KAAKtF,EAAED,EAAEg3L,YAAe,KAAa,GAARj3L,EAAEqxJ,OAAU,CAAC,GAAG7rJ,EAAE,OAAOitL,GAAGzyL,EAAEC,EAAEC,GAAGD,EAAEoxJ,OAAO,GAAG,IAAI3vJ,EAAEzB,EAAE8/K,cAAwF,GAA1E,OAAOr+K,IAAIA,EAAEkgM,UAAU,KAAKlgM,EAAEq5F,KAAK,KAAKr5F,EAAEq4L,WAAW,MAAM37B,GAAEhF,GAAEA,GAAEhnE,SAAY5sF,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOvF,EAAEo3L,MAAM,EAAE5F,GAAGzxL,EAAEC,EAAEC,GAAG,OAAO2wL,GAAG7wL,EAAEC,EAAEC,GAD7IukL,GAAG,KAAa,MAARzkL,EAAEqxJ,YAC2IozB,IAAG,EAAa,OAAVxkL,EAAEo3L,MAAM,EAASp3L,EAAEi6K,KAAK,KAAK,EAA+I,GAA7I10K,EAAEvF,EAAErF,KAAK,OAAOoF,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAGrxJ,EAAEC,EAAE47L,aAAan6L,EAAEm+K,GAAG5/K,EAAE+lG,GAAE5T,SAASoyF,GAAGvkL,EAAEC,GAAGwB,EAAEusL,GAAG,KAAKhuL,EAAEuF,EAAExF,EAAE0B,EAAExB,GAAGD,EAAEoxJ,OAAO,EAAK,kBAAkB3vJ,GAAG,OAAOA,GAAG,oBAAoBA,EAAEuhC,aACnf,IAASvhC,EAAE20K,SAAS,CAAiD,GAAhDp2K,EAAEi6K,IAAI,EAAEj6K,EAAE8/K,cAAc,KAAK9/K,EAAE03L,YAAY,KAAQh5B,GAAEn5J,GAAG,CAAC,IAAIC,GAAE,EAAGw6K,GAAGhgL,QAAQwF,GAAE,EAAGxF,EAAE8/K,cAAc,OAAOr+K,EAAE+zC,YAAO,IAAS/zC,EAAE+zC,MAAM/zC,EAAE+zC,MAAM,KAAK/vB,GAAGzlB,GAAG,IAAIyF,EAAEF,EAAEqqJ,yBAAyB,oBAAoBnqJ,GAAGygL,GAAGlmL,EAAEuF,EAAEE,EAAE1F,GAAG0B,EAAEs0K,QAAQ2Q,GAAG1mL,EAAEg8I,UAAUv6I,EAAEA,EAAEm3L,gBAAgB54L,EAAEunL,GAAGvnL,EAAEuF,EAAExF,EAAEE,GAAGD,EAAE6xL,GAAG,KAAK7xL,EAAEuF,GAAE,EAAGC,EAAEvF,QAAQD,EAAEi6K,IAAI,EAAE1a,GAAE,KAAKv/J,EAAEyB,EAAExB,GAAGD,EAAEA,EAAEqoB,MAAM,OAAOroB,EAAE,KAAK,GAAGyB,EAAEzB,EAAEm6L,YAAYp6L,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAGrxJ,EAAEC,EAAE47L,aAAuBn6L,GAAV+D,EAAE/D,EAAEi2K,OAAUj2K,EAAEg2K,UAAUz3K,EAAErF,KAAK8G,EACpf+D,EAAExF,EAAEi6K,IAQJ,SAAYl6K,GAAG,GAAG,oBAAoBA,EAAE,OAAO+wL,GAAG/wL,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEq2K,YAAgBlX,EAAG,OAAO,GAAG,GAAGn/J,IAAIu/J,EAAG,OAAO,GAAG,OAAO,EARtIk8B,CAAG/5L,GAAG1B,EAAE8jL,GAAGpiL,EAAE1B,GAAUyF,GAAG,KAAK,EAAExF,EAAEuxL,GAAG,KAAKvxL,EAAEyB,EAAE1B,EAAEE,GAAG,MAAMF,EAAE,KAAK,EAAEC,EAAE2xL,GAAG,KAAK3xL,EAAEyB,EAAE1B,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAE0wL,GAAG,KAAK1wL,EAAEyB,EAAE1B,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAE6wL,GAAG,KAAK7wL,EAAEyB,EAAEoiL,GAAGpiL,EAAE9G,KAAKoF,GAAGwF,EAAEtF,GAAG,MAAMF,EAAE,MAAMmB,MAAMpB,EAAE,IAAI2B,EAAE,KAAM,OAAOzB,EAAE,KAAK,EAAE,OAAOuF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAA2CrK,GAAGxxL,EAAEC,EAAEuF,EAArC9D,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAEoiL,GAAGt+K,EAAE9D,GAAcxB,GAAG,KAAK,EAAE,OAAOsF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAA2CjK,GAAG5xL,EAAEC,EAAEuF,EAArC9D,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAEoiL,GAAGt+K,EAAE9D,GAAcxB,GAAG,KAAK,EAAwB,GAAtBoe,GAAGre,GAAGuF,EAAEvF,EAAE03L,YAAe,OAAO33L,GAAG,OAAOwF,EAAE,MAAMrE,MAAMpB,EAAE,MACnY,GADyYyF,EAAEvF,EAAE47L,aAA+Bn6L,EAAE,QAApBA,EAAEzB,EAAE8/K,eAC9dr+K,EAAE+kB,QAAQ,KAAKm+J,GAAG5kL,EAAEC,GAAGglL,GAAGhlL,EAAEuF,EAAE,KAAKtF,IAAGsF,EAAEvF,EAAE8/K,cAAct5J,WAAe/kB,EAAE8c,KAAKve,EAAE4wL,GAAG7wL,EAAEC,EAAEC,OAAO,CAAsF,IAApEuF,GAAjB/D,EAAEzB,EAAEg8I,WAAiBwlC,WAAQlH,GAAIsS,GAAG7N,GAAG/+K,EAAEg8I,UAAUC,eAAey8D,GAAG14M,EAAEwF,EAAEmzM,IAAG,GAAInzM,GAAE,GAAMA,EAAE,CAAC,GAAG80K,GAAyC,OAApCv6K,EAAE0B,EAAEqnM,iCAAyC,IAAIrnM,EAAE,EAAEA,EAAE1B,EAAErE,OAAO+F,GAAG,EAAE+D,EAAEzF,EAAE0B,GAAGgE,EAAE1F,EAAE0B,EAAE,GAAG24K,EAAG50K,EAAE02L,8BAA8Bz2L,EAAED,EAAEqzM,gCAAgCpzM,EAAEgZ,GAAGzjB,KAAKwK,GAAoB,IAAjBvF,EAAEs4M,GAAGv4M,EAAE,KAAKuF,EAAEtF,GAAOD,EAAEqoB,MAAMpoB,EAAEA,GAAGA,EAAEmxJ,OAAe,EAATnxJ,EAAEmxJ,MAAS,KAAKnxJ,EAAEA,EAAE48I,aAAa0iB,GAAEx/J,EAAEC,EAAEuF,EAAEtF,GAAGse,KAAKve,EAAEA,EAAEqoB,MAAM,OAAOroB,EAAE,KAAK,EAAE,OAAOisL,GAAGjsL,GAAG,OAC/eD,GAAG0tL,GAAGztL,GAAGuF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAAap2L,EAAE,OAAOzF,EAAEA,EAAEozI,cAAc,KAAK1tI,EAAEhE,EAAEmW,SAAS4hK,EAAGj0K,EAAE9D,GAAGgE,EAAE,KAAK,OAAOD,GAAGg0K,EAAGj0K,EAAEC,KAAKxF,EAAEoxJ,OAAO,IAAIsgC,GAAG3xL,EAAEC,GAAGu/J,GAAEx/J,EAAEC,EAAEyF,EAAExF,GAAGD,EAAEqoB,MAAM,KAAK,EAAE,OAAO,OAAOtoB,GAAG0tL,GAAGztL,GAAG,KAAK,KAAK,GAAG,OAAOwe,GAAGze,EAAEC,EAAEC,GAAG,KAAK,EAAE,OAAO+rL,GAAGhsL,EAAEA,EAAEg8I,UAAUC,eAAe12I,EAAEvF,EAAE47L,aAAa,OAAO77L,EAAEC,EAAEqoB,MAAMigK,GAAGtoL,EAAE,KAAKuF,EAAEtF,GAAGs/J,GAAEx/J,EAAEC,EAAEuF,EAAEtF,GAAGD,EAAEqoB,MAAM,KAAK,GAAG,OAAO9iB,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAA2ClL,GAAG3wL,EAAEC,EAAEuF,EAArC9D,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAEoiL,GAAGt+K,EAAE9D,GAAcxB,GAAG,KAAK,EAAE,OAAOs/J,GAAEx/J,EAAEC,EAAEA,EAAE47L,aAAa37L,GAAGD,EAAEqoB,MAAM,KAAK,EACtc,KAAK,GAAG,OAAOk3I,GAAEx/J,EAAEC,EAAEA,EAAE47L,aAAahkL,SAAS3X,GAAGD,EAAEqoB,MAAM,KAAK,GAAGtoB,EAAE,CAAwE,GAAvEwF,EAAEvF,EAAErF,KAAKogF,SAASt5E,EAAEzB,EAAE47L,aAAan2L,EAAEzF,EAAEmzI,cAAwBgxC,GAAGnkL,EAAbwF,EAAE/D,EAAEvU,OAAiB,OAAOuY,EAAE,CAAC,IAAIC,EAAED,EAAEvY,MAAyG,GAAG,KAAtGsY,EAAEs4J,GAAEp4J,EAAEF,GAAG,EAAwF,GAArF,oBAAoBD,EAAE2xK,sBAAsB3xK,EAAE2xK,sBAAsBxxK,EAAEF,GAAG,cAAwB,GAAGC,EAAEmS,WAAWnW,EAAEmW,WAAWymJ,GAAElsE,QAAQ,CAACnyF,EAAE4wL,GAAG7wL,EAAEC,EAAEC,GAAG,MAAMF,QAAQ,IAAc,QAAV2F,EAAE1F,EAAEqoB,SAAiB3iB,EAAEq2I,OAAO/7I,GAAG,OAAO0F,GAAG,CAAC,IAAIu8D,EAAEv8D,EAAEwxL,aAAa,GAAG,OAAOj1H,EAAE,CAACx8D,EAAEC,EAAE2iB,MAAM,IAAI,IAAI5sB,EAAEwmE,EAAEk1H,aAAa,OAAO17L,GAAG,CAAC,GAAGA,EAAEkN,UAAUpD,GAAG,KAChf9J,EAAEu7J,aAAaxxJ,GAAG,CAAC,IAAIE,EAAEu0K,OAAMx+K,EAAEmpL,IAAI,EAAE3kL,GAAGA,IAAKg6K,IAAI,EAAE6K,GAAGp/K,EAAEjK,IAAIiK,EAAE0xL,OAAOn3L,EAAgB,QAAdxE,EAAEiK,EAAEu5I,aAAqBxjJ,EAAE27L,OAAOn3L,GAAGqkL,GAAG5+K,EAAEq2I,OAAO97I,GAAGgiE,EAAEm1H,OAAOn3L,EAAE,MAAMxE,EAAEA,EAAE0zD,WAAW1pD,EAAE,KAAKC,EAAEu0K,KAAIv0K,EAAE/K,OAAOqF,EAAErF,KAAK,KAAa+K,EAAE2iB,MAAM,GAAG,OAAO5iB,EAAEA,EAAEs2I,OAAOr2I,OAAO,IAAID,EAAEC,EAAE,OAAOD,GAAG,CAAC,GAAGA,IAAIzF,EAAE,CAACyF,EAAE,KAAK,MAAkB,GAAG,QAAfC,EAAED,EAAEo3I,SAAoB,CAACn3I,EAAEq2I,OAAOt2I,EAAEs2I,OAAOt2I,EAAEC,EAAE,MAAMD,EAAEA,EAAEs2I,OAAOr2I,EAAED,GAAG85J,GAAEx/J,EAAEC,EAAEyB,EAAEmW,SAAS3X,GAAGD,EAAEA,EAAEqoB,MAAM,OAAOroB,EAAE,KAAK,EAAE,OAAOyB,EAAEzB,EAAErF,KAAsB4K,GAAjBC,EAAExF,EAAE47L,cAAiBhkL,SAAS2sK,GAAGvkL,EAAEC,GAAkCsF,EAAEA,EAAjC9D,EAAEs8J,GAAEt8J,EAAE+D,EAAEokM,wBAA8B5pM,EAAEoxJ,OAAO,EAAEmO,GAAEx/J,EAAEC,EACpfuF,EAAEtF,GAAGD,EAAEqoB,MAAM,KAAK,GAAG,OAAgB7iB,EAAEq+K,GAAXpiL,EAAEzB,EAAErF,KAAYqF,EAAE47L,cAA6B/K,GAAG9wL,EAAEC,EAAEyB,EAAtB+D,EAAEq+K,GAAGpiL,EAAE9G,KAAK6K,GAAcD,EAAEtF,GAAG,KAAK,GAAG,OAAO8wL,GAAGhxL,EAAEC,EAAEA,EAAErF,KAAKqF,EAAE47L,aAAar2L,EAAEtF,GAAG,KAAK,GAAG,OAAOsF,EAAEvF,EAAErF,KAAK8G,EAAEzB,EAAE47L,aAAan6L,EAAEzB,EAAEm6L,cAAc50L,EAAE9D,EAAEoiL,GAAGt+K,EAAE9D,GAAG,OAAO1B,IAAIA,EAAEk/I,UAAU,KAAKj/I,EAAEi/I,UAAU,KAAKj/I,EAAEoxJ,OAAO,GAAGpxJ,EAAEi6K,IAAI,EAAEvb,GAAEn5J,IAAIxF,GAAE,EAAGigL,GAAGhgL,IAAID,GAAE,EAAGwkL,GAAGvkL,EAAEC,GAAG+lL,GAAGhmL,EAAEuF,EAAE9D,GAAG8lL,GAAGvnL,EAAEuF,EAAE9D,EAAExB,GAAG4xL,GAAG,KAAK7xL,EAAEuF,GAAE,EAAGxF,EAAEE,GAAG,KAAK,GAAG,OAAOuyL,GAAGzyL,EAAEC,EAAEC,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAOuxL,GAAGzxL,EAAEC,EAAEC,GAAG,MAAMiB,MAAMpB,EAAE,IAAIE,EAAEi6K,OAC5b,IAAIwhB,GAAG,CAACtpG,SAAQ,GAAIupG,GAAGx+L,EAAE67M,kCAAkCpd,GAAG,oBAAoBD,GAAG,SAASG,KAAK,QAAG,IAASH,GAAG,OAAOA,KAAK,IAAI,IAAI37L,GAAE,EAAG25L,MAAM35L,GAAE,EAAG,OAAOA,EAAE,SAAS+7L,GAAG/7L,GAAG,IAAI87L,KArClL,SAAY97L,GAAG,GAAG,OAAO22L,GAAG,IAAI,IAAI12L,GAAG,UAAUlE,KAAKW,UAAUlB,MAAM,EAAE,GAAGm7L,IAAIttD,GAAQA,EAAOppI,IAAIrE,KAAKytI,EAAO,UAAU4vE,aAAa,MAAM/4M,GAAGy2L,GAAG,SAAS32L,GAAG,IAAIC,EAAE,IAAI+rM,eAAe/rM,EAAEksM,MAAMC,UAAUpsM,EAAEC,EAAEisM,MAAMz4B,iBAAY,IAAgBkjB,GAAG32L,GAqC1D42L,EAAG,WAAWkF,KAAKC,GAAG/7L,GAAGA,OAAM,MAAMC,GAAGD,EAAEC,IAAI,IAAI+7L,GAAG,EAAEl+H,IAAG,EACjP,SAASm+H,GAAGj8L,EAAEC,EAAEC,EAAEsF,GAAG7X,KAAKusL,IAAIl6K,EAAErS,KAAKX,IAAIkT,EAAEvS,KAAKmvJ,QAAQnvJ,KAAK26B,MAAM36B,KAAKquJ,OAAOruJ,KAAKsuJ,UAAUtuJ,KAAKiN,KAAKjN,KAAKysM,YAAY,KAAKzsM,KAAKwN,MAAM,EAAExN,KAAKmgJ,IAAI,KAAKngJ,KAAKkuM,aAAa57L,EAAEtS,KAAKwpM,aAAaxpM,KAAKoyL,cAAcpyL,KAAKgqM,YAAYhqM,KAAKylJ,cAAc,KAAKzlJ,KAAK0tD,KAAK71C,EAAE7X,KAAK0jK,MAAM,EAAE1jK,KAAKosM,WAAWpsM,KAAKssM,YAAYtsM,KAAKqsM,WAAW,KAAKrsM,KAAKspM,WAAWtpM,KAAK0pM,MAAM,EAAE1pM,KAAKuxJ,UAAU,KAAK,SAAS25D,GAAG74M,EAAEC,EAAEC,EAAEsF,GAAG,OAAO,IAAIy2L,GAAGj8L,EAAEC,EAAEC,EAAEsF,GAAG,SAASurL,GAAG/wL,GAAiB,UAAdA,EAAEA,EAAEiD,aAAuBjD,EAAEi2K,kBAEnd,SAASoiC,GAAGr4M,EAAEC,GAAG,IAAIC,EAAEF,EAAEk/I,UACuB,OADb,OAAOh/I,IAAGA,EAAE24M,GAAG74M,EAAEk6K,IAAIj6K,EAAED,EAAEhT,IAAIgT,EAAEq7C,OAAQ++I,YAAYp6L,EAAEo6L,YAAYl6L,EAAEtF,KAAKoF,EAAEpF,KAAKsF,EAAE+7I,UAAUj8I,EAAEi8I,UAAU/7I,EAAEg/I,UAAUl/I,EAAEA,EAAEk/I,UAAUh/I,IAAIA,EAAE27L,aAAa57L,EAAEC,EAAEtF,KAAKoF,EAAEpF,KAAKsF,EAAEmxJ,MAAM,EAAEnxJ,EAAE85L,WAAW,KAAK95L,EAAE+5L,YAAY,KAAK/5L,EAAE65L,WAAW,MAAM75L,EAAE+2L,WAAWj3L,EAAEi3L,WAAW/2L,EAAEm3L,MAAMr3L,EAAEq3L,MAAMn3L,EAAEooB,MAAMtoB,EAAEsoB,MAAMpoB,EAAEkzI,cAAcpzI,EAAEozI,cAAclzI,EAAE6/K,cAAc//K,EAAE+/K,cAAc7/K,EAAEy3L,YAAY33L,EAAE23L,YAAY13L,EAAED,EAAEm3L,aAAaj3L,EAAEi3L,aAAa,OAAOl3L,EAAE,KAAK,CAACo3L,MAAMp3L,EAAEo3L,MAAMD,aAAan3L,EAAEm3L,cAC3el3L,EAAE48I,QAAQ98I,EAAE88I,QAAQ58I,EAAE/E,MAAM6E,EAAE7E,MAAM+E,EAAE4tI,IAAI9tI,EAAE8tI,IAAW5tI,EACvD,SAASo4M,GAAGt4M,EAAEC,EAAEC,EAAEsF,EAAE9D,EAAE+D,GAAG,IAAIC,EAAE,EAAM,GAAJF,EAAExF,EAAK,oBAAoBA,EAAE+wL,GAAG/wL,KAAK0F,EAAE,QAAQ,GAAG,kBAAkB1F,EAAE0F,EAAE,OAAO1F,EAAE,OAAOA,GAAG,KAAKy+J,EAAG,OAAO85C,GAAGr4M,EAAE2X,SAASnW,EAAE+D,EAAExF,GAAG,KAAKu4K,EAAG9yK,EAAE,EAAEhE,GAAG,GAAG,MAAM,KAAKk9J,EAAGl5J,EAAE,EAAEhE,GAAG,EAAE,MAAM,KAAKm9J,EAAG,OAAO7+J,EAAE64M,GAAG,GAAG34M,EAAED,EAAI,EAAFyB,IAAO04L,YAAYv7B,EAAG7+J,EAAEpF,KAAKikK,EAAG7+J,EAAEq3L,MAAM5xL,EAAEzF,EAAE,KAAKo/J,EAAG,OAAOp/J,EAAE64M,GAAG,GAAG34M,EAAED,EAAEyB,IAAK9G,KAAKwkK,EAAGp/J,EAAEo6L,YAAYh7B,EAAGp/J,EAAEq3L,MAAM5xL,EAAEzF,EAAE,KAAKs/J,EAAG,OAAOt/J,EAAE64M,GAAG,GAAG34M,EAAED,EAAEyB,IAAK04L,YAAY96B,EAAGt/J,EAAEq3L,MAAM5xL,EAAEzF,EAAE,KAAKy4K,EAAG,OAAOuZ,GAAG9xL,EAAEwB,EAAE+D,EAAExF,GAAG,KAAKy4K,EAAG,OAAO14K,EAAE64M,GAAG,GAAG34M,EAAED,EAAEyB,IAAK04L,YAAY1hB,EAAG14K,EAAEq3L,MAAM5xL,EAAEzF,EAAE,QAAQ,GAAG,kBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAEq2K,UAAU,KAAKtX,EAAGr5J,EAAE,GAAG,MAAM1F,EAAE,KAAKg/J,EAAGt5J,EAAE,EAAE,MAAM1F,EAAE,KAAKm/J,EAAGz5J,EAAE,GAAG,MAAM1F,EAAE,KAAKu/J,EAAG75J,EAAE,GAAG,MAAM1F,EAAE,KAAKq4K,EAAG3yK,EAAE,GAAGF,EAAE,KAAK,MAAMxF,EAAE,KAAK0R,EAAGhM,EAAE,GAAG,MAAM1F,EAAE,MAAMmB,MAAMpB,EAAE,IAAI,MAAMC,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAE44M,GAAGnzM,EAAExF,EAAED,EAAEyB,IAAK04L,YAAYp6L,EAAEC,EAAErF,KAAK4K,EAAEvF,EAAEo3L,MAAM5xL,EAASxF,EAAE,SAASs4M,GAAGv4M,EAAEC,EAAEC,EAAEsF,GAA2B,OAAxBxF,EAAE64M,GAAG,EAAE74M,EAAEwF,EAAEvF,IAAKo3L,MAAMn3L,EAASF,EAAE,SAASgyL,GAAGhyL,EAAEC,EAAEC,EAAEsF,GAA6C,OAA1CxF,EAAE64M,GAAG,GAAG74M,EAAEwF,EAAEvF,IAAKm6L,YAAY3hB,EAAGz4K,EAAEq3L,MAAMn3L,EAASF,EAAE,SAASmoL,GAAGnoL,EAAEC,EAAEC,GAA8B,OAA3BF,EAAE64M,GAAG,EAAE74M,EAAE,KAAKC,IAAKo3L,MAAMn3L,EAASF,EAClc,SAASooL,GAAGpoL,EAAEC,EAAEC,GAA8J,OAA3JD,EAAE44M,GAAG,EAAE,OAAO74M,EAAE6X,SAAS7X,EAAE6X,SAAS,GAAG7X,EAAEhT,IAAIiT,IAAKo3L,MAAMn3L,EAAED,EAAEg8I,UAAU,CAACC,cAAcl8I,EAAEk8I,cAAc2sD,gBAAgB,KAAKvO,eAAet6L,EAAEs6L,gBAAuBr6L,EACrL,SAASi8L,GAAGl8L,EAAEC,EAAEC,GAAGvS,KAAKusL,IAAIj6K,EAAEtS,KAAKuuJ,cAAcl8I,EAAErS,KAAKu5M,aAAav5M,KAAK65M,UAAU75M,KAAKykG,QAAQzkG,KAAKk7M,gBAAgB,KAAKl7M,KAAK05M,cAAcjtB,EAAGzsL,KAAKizM,eAAejzM,KAAKib,QAAQ,KAAKjb,KAAK8zL,QAAQvhL,EAAEvS,KAAK44M,aAAa,KAAK54M,KAAK84M,iBAAiB,EAAE94M,KAAKu2L,WAAWnD,GAAG,GAAGpzL,KAAK64M,gBAAgBzlB,IAAI,GAAGpzL,KAAKg2L,eAAeh2L,KAAKw5M,cAAcx5M,KAAKmwM,iBAAiBnwM,KAAK41L,aAAa51L,KAAK81L,YAAY91L,KAAK61L,eAAe71L,KAAK21L,aAAa,EAAE31L,KAAKi2L,cAAc7C,GAAG,GAAGxG,IAAK5sL,KAAKo7M,gCAAgC,MAClf,SAAS3M,GAAGp8L,GAAG,IAAIC,EAAED,EAAE64L,gBAAgB,QAAG,IAAS54L,EAAE,CAAC,GAAG,oBAAoBD,EAAEijC,OAAO,MAAM9hC,MAAMpB,EAAE,MAAM,MAAMoB,MAAMpB,EAAE,IAAI9B,OAAO+8B,KAAKh7B,KAAc,OAAO,QAAfA,EAAE+4K,EAAG94K,IAAmB,KAAKD,EAAEi8I,UAAU,SAASogD,GAAGr8L,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAE+/K,gBAA2B,OAAO//K,EAAEggL,WAAW,CAAC,IAAI9/K,EAAEF,EAAEihM,UAAUjhM,EAAEihM,UAAU,IAAI/gM,GAAGA,EAAED,EAAEC,EAAED,GAAG,SAASq8L,GAAGt8L,EAAEC,GAAGo8L,GAAGr8L,EAAEC,IAAID,EAAEA,EAAEk/I,YAAYm9C,GAAGr8L,EAAEC,GAAG,SAASs8L,GAAGv8L,GAAW,OAAO,QAAfA,EAAE+4K,EAAG/4K,IAAmB,KAAKA,EAAEi8I,UAAU,SAASugD,KAAK,OAAO,KAiBra,OAjB0alzD,EAAQ4vE,qBAAqBxd,GAC3cpyD,EAAQsX,IAAI,SAAS5gJ,GAAG,SAASC,IAAI+7L,KAAKhF,GAAG5kG,QAAQlyF,EAAEw7L,GAAGtpG,QAAQ5sF,GAAE,IAAKs4D,KAAKA,IAAG,EAAG/8D,QAAQ3T,MAAM,+FAA+F4uM,KAAK,IAAI97L,EAAE82L,GAAG5kG,QAAQ5sF,EAAEk2L,GAAGtpG,QAAQ4kG,GAAG5kG,SAAQ,EAAGspG,GAAGtpG,SAAQ,EAAG,IAAI,IAAI1wF,EAAEk5L,GAAG56L,GAAG,MAAMyF,GAAG,MAAMxF,IAAIwF,EAAG,GAAG,OAAO/D,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEnU,KAAK,MAAM,CAACA,KAAK,SAASyS,EAAEwF,GAAG9D,EAAEnU,MAAK,WAAW,EAAEyuM,KAAI,IAAKJ,KAAI,IAAK17L,GAAGD,IAAID,KAAK+7L,IAAG,SAAS77L,GAAGD,IAAIC,EAAEsF,EAAEtF,GAAGF,UAAO,SAASA,GAAGC,IAAIuF,EAAExF,QAAO,IAAI,IAAIg8L,KACjf,IAAKJ,KAAI,IAAK17L,GAAG47L,KAAK77L,IAAI,MAAMwF,GAAG,MAAMxF,IAAIwF,EAAG,MAAM,CAAClY,KAAK,SAASyS,GAAGA,OAAOspI,EAAQ6vE,2BAA2B,SAASn5M,GAAM,KAAKA,EAAEk6K,MAAewM,GAAG1mL,EAAE,SAAT89J,MAAqBw+B,GAAGt8L,EAAE,YAAYspI,EAAQ8vE,kCAAkC,SAASp5M,GAAG,GAAG,KAAKA,EAAEk6K,IAAI,CAAC,IAAIj6K,EAAE69J,KAAI59J,EAAEumL,GAAGzmL,GAAG0mL,GAAG1mL,EAAEE,EAAED,GAAGq8L,GAAGt8L,EAAEE,KAC/RopI,EAAQ+vE,4BAA4B,SAASr5M,GAAG,OAAOA,EAAEk6K,KAAK,KAAK,EAAE,IAAIj6K,EAAED,EAAEi8I,UAAU,GAAGh8I,EAAEwhL,QAAQ,CAAC,IAAIvhL,EAAEqgL,GAAGtgL,EAAEqjL,cAAcrjL,EAAEsjL,cAAcrjL,EAAED,EAAEqjL,aAAaxkB,GAAE7+J,EAAEg+J,MAAK,KAAO,GAAFokC,MAAQpK,KAAK3+B,MAAK,MAAM,KAAK,GAAG,IAAI9zJ,EAAEs4J,KAAI+8B,IAAG,WAAW,OAAOnU,GAAG1mL,EAAE,EAAEwF,MAAK82L,GAAGt8L,EAAE,KAAKspI,EAAQgwE,6BAA6B,SAASt5M,GAAM,KAAKA,EAAEk6K,MAAewM,GAAG1mL,EAAE,EAAT89J,MAAcw+B,GAAGt8L,EAAE,KAAKspI,EAAQiwE,oBAAoB,SAASv5M,EAAEC,GAAG,IAAIC,EAAEmiM,GAAEA,IAAG,EAAE,IAAI,OAAOriM,EAAEC,GAAb,QAA4B,KAAJoiM,GAAEniM,KAAU+3L,KAAK3+B,QAAOhwB,EAAQkwE,eAAe5e,GAC9dtxD,EAAQmwE,wBAAwB,SAASz5M,GAAG,MAAM,CAACq2K,SAAS2f,GAAG7oM,MAAM6S,IAAIspI,EAAQ2P,gBAAgB,SAASj5I,EAAEC,EAAEC,GAAuF,OAApFF,EAAE,IAAIk8L,GAAGl8L,EAAEC,EAAEC,GAAGD,EAAE44M,GAAG,EAAE,KAAK,KAAK,IAAI54M,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGD,EAAEoyF,QAAQnyF,EAAEA,EAAEg8I,UAAUj8I,EAAE0lB,GAAGzlB,GAAUD,GAAGspI,EAAQowE,6BAA6B,SAAS15M,GAAG,MAAM,CAACq2K,SAAS4f,GAAG9oM,MAAM6S,IAAIspI,EAAQuX,aAAa,SAAS7gJ,EAAEC,EAAEC,GAAG,IAAIsF,EAAE,EAAE3X,UAAU8N,aAAQ,IAAS9N,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACwoL,SAAS7X,EAAGxxK,IAAI,MAAMwY,EAAE,KAAK,GAAGA,EAAEqS,SAAS7X,EAAEk8I,cAAcj8I,EAAEq6L,eAAep6L,IACvdopI,EAAQqwE,mBAAmB,SAAS35M,GAAG,MAAM,CAACq2K,SAAS6f,GAAG/oM,MAAM6S,IAAIspI,EAAQswE,uBAAuB,SAAS55M,GAAG,MAAM,CAACq2K,SAAS8f,GAAGhpM,MAAM6S,IAAIspI,EAAQuwE,mBAAmB,SAAS75M,GAAG,MAAM,CAACq2K,SAAS+f,GAAGjpM,MAAM6S,IAAIspI,EAAQwwE,gBAAgB,SAAS95M,GAAG,OAAOkjL,GAAG,GAAGljL,IAAIspI,EAAQywE,gBAAgB,SAAS/5M,EAAEC,EAAEC,EAAEsF,EAAE9D,GAAG,IAAI+D,EAAE48L,GAAEA,IAAG,EAAE,IAAI,OAAOnf,GAAG,GAAGljL,EAAEs9G,KAAK,KAAKr9G,EAAEC,EAAEsF,EAAE9D,IAAnC,QAAmD,KAAJ2gM,GAAE58L,KAAUwyL,KAAK3+B,QAAOhwB,EAAQ0wE,aAAatjB,GAC1ZptD,EAAQ2wE,kBAAkB,SAASj6M,EAAEC,GAAG,IAAIs7K,GAAG,MAAMp6K,MAAMpB,EAAE,MAAME,EAAEy2L,GAAG12L,EAAEC,GAAGD,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAEtE,OAAOuE,IAAIF,EAAE/E,KAAKwgL,GAAGx7K,EAAEC,KAAK,IAAID,EAAED,EAAErE,OAAO,EAAE,EAAEsE,EAAEA,IAAY,IAAI,IAAIuF,GAAftF,EAAEF,EAAEC,IAAe5C,EAAEqE,EAAE8D,EAAEtF,EAAEwI,MAAMjD,EAAEvF,EAAE5C,EAAEoI,EAAED,EAAEvF,EAAEyI,OAAOhD,EAAE1F,EAAE,EAAE,GAAG0F,EAAEA,IAAI,GAAG1F,IAAI0F,EAAE,CAAC,IAAIu8D,EAAEliE,EAAE2F,GAAGjK,EAAEwmE,EAAE7kE,EAAEH,EAAExB,EAAEwmE,EAAEx5D,MAAMnL,EAAE2kE,EAAE5kE,EAAEmT,EAAElT,EAAE2kE,EAAEv5D,OAAO,GAAGnD,GAAG9J,GAAG+J,GAAGlI,GAAGmE,GAAGxE,GAAGwI,GAAG+K,EAAE,CAACzQ,EAAE5E,OAAO6E,EAAE,GAAG,MAAW,KAAKuF,IAAI9J,GAAGwE,EAAEwI,QAAQw5D,EAAEx5D,OAAO+H,EAAEhL,GAAGlI,EAAEmI,GAAG,CAACnI,EAAEkI,IAAIy8D,EAAEv5D,QAAQpL,EAAEkI,EAAEy8D,EAAE5kE,EAAEmI,GAAGgL,EAAE/K,IAAIw8D,EAAEv5D,OAAOjD,EAAEnI,GAAGyC,EAAE5E,OAAO6E,EAAE,GAAG,MAAW,KAAKwF,IAAIlI,GAAG2C,EAAEyI,SAASu5D,EAAEv5D,QAAQzL,EAAEsI,GAAG9J,EAAEgG,GAAG,CAAChG,EAAE8J,IAAI08D,EAAEx5D,OAC/ehN,EAAE8J,EAAE08D,EAAE7kE,EAAEmI,GAAGtI,EAAEwE,IAAIwgE,EAAEx5D,MAAMhH,EAAEhG,GAAGsE,EAAE5E,OAAO6E,EAAE,GAAG,OAAQ,OAAOD,GAAGspI,EAAQ4wE,iBAAiB9d,GAAG9yD,EAAQ6wE,8BAA8B,SAASn6M,GAAW,OAAO,QAAfA,EA1L5I,SAAYA,GAAW,KAARA,EAAE84K,EAAG94K,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAEi6K,KAAK,IAAIj6K,EAAEi6K,IAAI,OAAOj6K,EAAE,GAAGA,EAAEqoB,OAAO,IAAIroB,EAAEi6K,IAAIj6K,EAAEqoB,MAAM0zH,OAAO/7I,EAAEA,EAAEA,EAAEqoB,UAAU,CAAC,GAAGroB,IAAID,EAAE,MAAM,MAAMC,EAAE68I,SAAS,CAAC,IAAI78I,EAAE+7I,QAAQ/7I,EAAE+7I,SAASh8I,EAAE,OAAO,KAAKC,EAAEA,EAAE+7I,OAAO/7I,EAAE68I,QAAQd,OAAO/7I,EAAE+7I,OAAO/7I,EAAEA,EAAE68I,SAAS,OAAO,KA0LlIk8B,CAAGh5K,IAAmB,KAAK,KAAKA,EAAEk6K,IAAIl6K,EAAEi8I,UAAU9T,SAASnoI,EAAEi8I,WAAW3S,EAAQ8wE,4BAA4B,SAASp6M,GAAG,OAAOo8L,GAAGp8L,IAAIspI,EAAQ+wE,gBAAgB,SAASr6M,GAAG,IAAIC,EAAEoiM,GAAEA,IAAG,EAAE,IAAInf,GAAG,GAAGljL,GAAV,QAAyB,KAAJqiM,GAAEpiM,KAAUg4L,KAAK3+B,QAAOhwB,EAAQgxE,qBAAqB,WAAW,KAAO,GAAFjY,MA5C/Z,WAAc,GAAG,OAAO3J,GAAG,CAAC,IAAI14L,EAAE04L,GAAGA,GAAG,KAAK14L,EAAEg0E,SAAQ,SAASh0E,GAAGA,EAAEujL,cAAc,GAAGvjL,EAAEsjL,aAAaxkB,GAAE9+J,EAAEi+J,SAAO3E,KA4CuTqhC,GAAKhB,OAAOrwD,EAAQixE,oBAAoB5gB,GAAGrwD,EAAQsiE,UAAU/Q,GACpevxD,EAAQkxE,YAAY,SAASx6M,EAAEC,GAAG,IAAIs7K,GAAG,MAAMp6K,MAAMpB,EAAE,MAAwC,IAA1BE,EAAEw2L,GAAVz2L,EAAEs2L,GAAGt2L,GAAUC,GAAGA,EAAEsL,MAAMw9F,KAAK9oG,GAAOD,EAAE,EAAEA,EAAEC,EAAEtE,QAAQ,CAAC,IAAIuE,EAAED,EAAED,KAAK,IAAI07K,GAAGx7K,GAAG,CAAC,GAAG,IAAIA,EAAEg6K,KAAK8B,GAAG97K,EAAE+7I,WAAW,OAAM,EAAG,IAAI/7I,EAAEA,EAAEooB,MAAM,OAAOpoB,GAAGD,EAAEhF,KAAKiF,GAAGA,EAAEA,EAAE48I,SAAS,OAAM,GAAIxT,EAAQmxE,6BAA6B,WAAW,OAAOn6B,IACnSh3C,EAAQoxE,kCAAkC,SAAS16M,EAAEC,GAAG,IAAIs7K,GAAG,MAAMp6K,MAAMpB,EAAE,MAAM,IAAIG,EAAE,EAAEsF,EAAE,GAAGxF,EAAE,CAACs2L,GAAGt2L,GAAG,GAAG,IAAI,IAAI0B,EAAE,EAAEA,EAAE1B,EAAErE,QAAQ,CAAC,IAAI8J,EAAEzF,EAAE0B,KAAKgE,EAAE1F,EAAE0B,KAAKiE,EAAE1F,EAAEyF,GAAG,IAAG,IAAID,EAAEy0K,MAAMwB,GAAGj2K,MAAM8wL,GAAG9wL,EAAEE,KAAKH,EAAEvK,KAAKu7L,GAAG7wL,MAAID,EAAMxF,IAAIA,EAAEwF,IAAIA,EAAEzF,EAAEtE,QAAO,IAAI8J,EAAEA,EAAE6iB,MAAM,OAAO7iB,GAAGzF,EAAE/E,KAAKwK,EAAEC,GAAGD,EAAEA,EAAEq3I,QAAQ,GAAG58I,EAAED,EAAEtE,OAAO,CAAC,IAAIqE,EAAE,GAAGE,EAAED,EAAEtE,OAAOuE,IAAIF,EAAE/E,KAAKu7L,GAAGv2L,EAAEC,KAAK,MAAM,2DAA4DsF,EAAEirD,KAAK,OAAO,+CAAgDzwD,EAAEywD,KAAK,OAAO,OAAO,MAC1e64E,EAAQqxE,sBAAsB,SAAS36M,GAAe,KAAZA,EAAEA,EAAEoyF,SAAc9pE,MAAM,OAAO,KAAK,OAAOtoB,EAAEsoB,MAAM4xJ,KAAK,KAAK,EAAE,OAAOhB,EAAGl5K,EAAEsoB,MAAM2zH,WAAW,QAAQ,OAAOj8I,EAAEsoB,MAAM2zH,YAC7J3S,EAAQwX,mBAAmB,SAAS9gJ,GACgD,GAD7CA,EAAE,CAAC+gJ,WAAW/gJ,EAAE+gJ,WAAWv2I,QAAQxK,EAAEwK,QAAQw2I,oBAAoBhhJ,EAAEghJ,oBAAoBupD,eAAevqM,EAAEuqM,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB9sC,EAAGuY,uBAAuBw0B,wBAAwB1O,GAAG8N,wBAAwBrqM,EAAEqqM,yBAAyB7N,GAAG0O,4BAA4B,KAC5gBC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAS,qBAAqBp8C,+BAA+BlvJ,GAAE,MAAO,CAAC,IAAIC,EAAEivJ,+BAA+B,IAAIjvJ,EAAEurM,YAAYvrM,EAAEwrM,cAAc,IAAItrB,GAAGlgL,EAAEyrM,OAAO1rM,GAAGogL,GAAGngL,EAAE,MAAMC,IAAIF,GAAE,EAAG,OAAOA,GAAGspI,EAAQsxE,oBAAoB,SAAS56M,EAAEC,EAAEC,EAAEsF,GAAG,IAAI+1K,GAAG,MAAMp6K,MAAMpB,EAAE,MAAMC,EAAE02L,GAAG12L,EAAEC,GAAG,IAAIyB,EAAEglF,GAAG1mF,EAAEE,EAAEsF,GAAGyuE,WAAW,MAAM,CAACA,WAAW,WAAWvyE,OACxZ4nI,EAAQuxE,kCAAkC,SAAS76M,EAAEC,GAAG,IAAIC,EAAED,EAAE29L,YAAY19L,EAAEA,EAAED,EAAE49L,SAAS,MAAM79L,EAAE+oM,gCAAgC/oM,EAAE+oM,gCAAgC,CAAC9oM,EAAEC,GAAGF,EAAE+oM,gCAAgC9tM,KAAKgF,EAAEC,IAAIopI,EAAQwxE,gBAAgB,SAAS96M,EAAEC,GAAG,IAAIC,EAAEogL,GAAG,IAAI,OAAOA,GAAGtgL,EAAEC,IAAhB,QAA4BqgL,GAAGpgL,IAAIopI,EAAQyxE,cAAc,WAAW,OAAM,GAAIzxE,EAAQ0xE,iBAAiB,SAASh7M,EAAEC,GAAG,IAAIC,EAAEmiM,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAOriM,EAAEC,GAAb,QAA4B,KAAJoiM,GAAEniM,KAAU+3L,KAAK3+B,QACxbhwB,EAAQ4P,gBAAgB,SAASl5I,EAAEC,EAAEC,EAAEsF,GAAG,IAAI9D,EAAEzB,EAAEmyF,QAAQ3sF,EAAEq4J,KAAIp4J,EAAE+gL,GAAG/kL,GAAG1B,EAAE,GAAGE,EAAE,CAAqBD,EAAE,CAAC,GAAG24K,EAA1B14K,EAAEA,EAAE24L,mBAA8B34L,GAAG,IAAIA,EAAEg6K,IAAI,MAAM/4K,MAAMpB,EAAE,MAAM,IAAI4F,EAAEzF,EAAE,EAAE,CAAC,OAAOyF,EAAEu0K,KAAK,KAAK,EAAEv0K,EAAEA,EAAEs2I,UAAUrzI,QAAQ,MAAM3I,EAAE,KAAK,EAAE,GAAG0+J,GAAEh5J,EAAE/K,MAAM,CAAC+K,EAAEA,EAAEs2I,UAAUq4C,0CAA0C,MAAMr0L,GAAG0F,EAAEA,EAAEq2I,aAAa,OAAOr2I,GAAG,MAAMxE,MAAMpB,EAAE,MAAO,GAAG,IAAIG,EAAEg6K,IAAI,CAAC,IAAIh4G,EAAEhiE,EAAEtF,KAAK,GAAG+jK,GAAEz8F,GAAG,CAAChiE,EAAE4e,GAAG5e,EAAEgiE,EAAEv8D,GAAG,MAAM3F,GAAGE,EAAEyF,OAAOzF,EAAE0/K,GACvW,OAD0W,OAAO3/K,EAAE2I,QAAQ3I,EAAE2I,QAAQ1I,EAAED,EAAE2gM,eAAe1gM,GAAED,EAAE4kL,GAAGp/K,EAAEC,IAAK0yL,QAAQ,CAAC3xK,QAAQzmB,GACle,QADqewF,OAAE,IAChfA,EAAE,KAAKA,KAAavF,EAAE+R,SAASxM,GAAGu/K,GAAGrjL,EAAEzB,GAAGymL,GAAGhlL,EAAEgE,EAAED,GAAUC,GAEhD4jI,K,mCCtNXD,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAO4zB,kBACX5zB,EAAO4xE,UAAY,aACnB5xE,EAAOxc,MAAQ,GAEVwc,EAAOxxH,WAAUwxH,EAAOxxH,SAAW,IACxC5Z,OAAO6L,eAAeu/H,EAAQ,SAAU,CACvCrlH,YAAY,EACZyjB,IAAK,WACJ,OAAO4hG,EAAO3tI,KAGhBuC,OAAO6L,eAAeu/H,EAAQ,KAAM,CACnCrlH,YAAY,EACZyjB,IAAK,WACJ,OAAO4hG,EAAO5tI,KAGhB4tI,EAAO4zB,gBAAkB,GAEnB5zB,I,gBCpBR,IAAI6xE,EAAU3xE,EAAQ,IAClB4xE,EAAU5xE,EAAQ,IAClB6xE,EAAY7xE,EAAQ,IACpB8xE,EAAO9xE,EAAQ,IACf+xE,EAAa/xE,EAAQ,IAEzB,SAASw6B,EAAOw3C,EAAYC,GAC3B7tN,KAAK4tN,WAAaA,EAClB5tN,KAAK6tN,kBAAoBA,EACzB7tN,KAAKy2K,QAAU,KACfz2K,KAAK8tN,YAAc,EACnB9tN,KAAK+tN,UAAY,KACjB/tN,KAAKguN,SAAW,GAIjB,IAAIC,EAAQ73C,EAAO9gK,UAEnB24M,EAAM33C,QAAU,SAASh4J,GACxB,IAAI4vM,EAAU,IAAIX,EAAQjvM,GAC1Bte,KAAKguN,SAAS1gN,KAAK4gN,GACnBluN,KAAK+tN,UAAY,MAGlBE,EAAME,OAAS,SAASx3C,EAAKnhH,GAC5B,GAAImhH,EAAM,GAAK32K,KAAK8tN,aAAen3C,GAAOnhH,EAAM,GAAKx1D,KAAK8tN,aAAet4J,EACxE,MAAM,IAAIhiD,MAAMmjK,EAAM,IAAMnhH,GAE7B,OAAOx1D,KAAKy2K,QAAQE,GAAKnhH,IAG1By4J,EAAMG,eAAiB,WACtB,OAAOpuN,KAAK8tN,aAGbG,EAAM13C,KAAO,WAEZ,GAAIv2K,KAAK4tN,WAAa,EAAG,CACxB,IAAIA,EAAa,EACjB,IAAKA,EAAa,EAAGA,EAAa,GAAIA,IAAc,CAKnD,IAJA,IAAIS,EAAWb,EAAQc,YAAYV,EAAY5tN,KAAK6tN,mBAEhDxzM,EAAS,IAAIozM,EACbc,EAAiB,EACZzgN,EAAI,EAAGA,EAAIugN,EAASrgN,OAAQF,IACpCygN,GAAkBF,EAASvgN,GAAG2lF,UAG/B,IAAS3lF,EAAI,EAAGA,EAAI9N,KAAKguN,SAAShgN,OAAQF,IAAK,CAC9C,IAAIwQ,EAAOte,KAAKguN,SAASlgN,GACzBuM,EAAOm0M,IAAIlwM,EAAKovC,KAAM,GACtBrzC,EAAOm0M,IAAIlwM,EAAKsrF,YAAa8jH,EAAKe,gBAAgBnwM,EAAKovC,KAAMkgK,IAC7DtvM,EAAKowM,MAAMr0M,GAEZ,GAAIA,EAAOo0M,mBAAsC,EAAjBF,EAC/B,MAEFvuN,KAAK4tN,WAAaA,EAEnB5tN,KAAK2uN,UAAS,EAAO3uN,KAAK4uN,uBAG3BX,EAAMU,SAAW,SAASh0M,EAAMk0M,GAE/B7uN,KAAK8tN,YAAgC,EAAlB9tN,KAAK4tN,WAAiB,GACzC5tN,KAAKy2K,QAAU,IAAI74J,MAAM5d,KAAK8tN,aAE9B,IAAK,IAAIn3C,EAAM,EAAGA,EAAM32K,KAAK8tN,YAAan3C,IAAO,CAEhD32K,KAAKy2K,QAAQE,GAAO,IAAI/4J,MAAM5d,KAAK8tN,aAEnC,IAAK,IAAIt4J,EAAM,EAAGA,EAAMx1D,KAAK8tN,YAAat4J,IACzCx1D,KAAKy2K,QAAQE,GAAKnhH,GAAO,KAI3Bx1D,KAAK8uN,0BAA0B,EAAG,GAClC9uN,KAAK8uN,0BAA0B9uN,KAAK8tN,YAAc,EAAG,GACrD9tN,KAAK8uN,0BAA0B,EAAG9uN,KAAK8tN,YAAc,GACrD9tN,KAAK+uN,6BACL/uN,KAAKgvN,qBACLhvN,KAAKivN,cAAct0M,EAAMk0M,GAErB7uN,KAAK4tN,YAAc,GACtB5tN,KAAKkvN,gBAAgBv0M,GAGA,MAAlB3a,KAAK+tN,YACR/tN,KAAK+tN,UAAY33C,EAAO+4C,WAAWnvN,KAAK4tN,WAAY5tN,KAAK6tN,kBAAmB7tN,KAAKguN,WAGlFhuN,KAAKovN,QAAQpvN,KAAK+tN,UAAWc,IAG9BZ,EAAMa,0BAA4B,SAASn4C,EAAKnhH,GAE/C,IAAK,IAAI78C,GAAK,EAAGA,GAAK,EAAGA,IAExB,KAAIg+J,EAAMh+J,IAAM,GAAK3Y,KAAK8tN,aAAen3C,EAAMh+J,GAE/C,IAAK,IAAIpG,GAAK,EAAGA,GAAK,EAAGA,IAEpBijD,EAAMjjD,IAAM,GAAKvS,KAAK8tN,aAAet4J,EAAMjjD,IAK9CvS,KAAKy2K,QAAQE,EAAMh+J,GAAG68C,EAAMjjD,GAHvB,GAAKoG,GAAKA,GAAK,IAAW,GAALpG,GAAe,GAALA,IAC/B,GAAKA,GAAKA,GAAK,IAAW,GAALoG,GAAe,GAALA,IAC/B,GAAKA,GAAKA,GAAK,GAAK,GAAKpG,GAAKA,GAAK,IAS5C07M,EAAMW,mBAAqB,WAK1B,IAHA,IAAIS,EAAe,EACfxqG,EAAU,EAEL/2G,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAE3B9N,KAAK2uN,UAAS,EAAM7gN,GAEpB,IAAIwhN,EAAY5B,EAAK6B,aAAavvN,OAEzB,GAAL8N,GAAUuhN,EAAgBC,KAC7BD,EAAeC,EACfzqG,EAAU/2G,GAIZ,OAAO+2G,GAGRopG,EAAMuB,gBAAkB,SAASC,EAAWC,EAAezvM,GAE1D,IAAI0vM,EAAQF,EAAUG,qBAAqBF,EAAezvM,GAG1DjgB,KAAKu2K,OAEL,IAAK,IAAII,EAAM,EAAGA,EAAM32K,KAAKy2K,QAAQzoK,OAAQ2oK,IAI5C,IAFA,IAAIhnK,EANI,EAMAgnK,EAECnhH,EAAM,EAAGA,EAAMx1D,KAAKy2K,QAAQE,GAAK3oK,OAAQwnD,IAAO,CAExD,IAAI9lD,EAVG,EAUC8lD,EACGx1D,KAAKy2K,QAAQE,GAAKnhH,KAG5Bm6J,EAAME,UAAU,EAAG,KACnBF,EAAMllH,OAAO/6F,EAAGC,GAChBggN,EAAMjlH,OAAOh7F,EAhBP,EAgBeC,GACrBggN,EAAMjlH,OAAOh7F,EAjBP,EAiBeC,EAjBf,GAkBNggN,EAAMjlH,OAAOh7F,EAAGC,EAlBV,GAmBNggN,EAAMG,WAKT,OAAOH,GAGR1B,EAAMe,mBAAqB,WAE1B,IAAK,IAAIr2M,EAAI,EAAGA,EAAI3Y,KAAK8tN,YAAc,EAAGn1M,IACf,MAAtB3Y,KAAKy2K,QAAQ99J,GAAG,KAGpB3Y,KAAKy2K,QAAQ99J,GAAG,GAAMA,EAAI,GAAK,GAGhC,IAAK,IAAIpG,EAAI,EAAGA,EAAIvS,KAAK8tN,YAAc,EAAGv7M,IACf,MAAtBvS,KAAKy2K,QAAQ,GAAGlkK,KAGpBvS,KAAKy2K,QAAQ,GAAGlkK,GAAMA,EAAI,GAAK,IAIjC07M,EAAMc,2BAA6B,WAIlC,IAFA,IAAIgB,EAAMrC,EAAKsC,mBAAmBhwN,KAAK4tN,YAE9B9/M,EAAI,EAAGA,EAAIiiN,EAAI/hN,OAAQF,IAE/B,IAAK,IAAI8d,EAAI,EAAGA,EAAImkM,EAAI/hN,OAAQ4d,IAAK,CAEpC,IAAI+qJ,EAAMo5C,EAAIjiN,GACV0nD,EAAMu6J,EAAInkM,GAEd,GAA8B,MAA1B5rB,KAAKy2K,QAAQE,GAAKnhH,GAItB,IAAK,IAAI78C,GAAK,EAAGA,GAAK,EAAGA,IAExB,IAAK,IAAIpG,GAAK,EAAGA,GAAK,EAAGA,IAIvBvS,KAAKy2K,QAAQE,EAAMh+J,GAAG68C,EAAMjjD,IAFnB,GAANoG,GAAgB,GAALA,IAAgB,GAANpG,GAAgB,GAALA,GACzB,GAALoG,GAAe,GAALpG,IAWrB07M,EAAMiB,gBAAkB,SAASv0M,GAIhC,IAFA,IAAIi4E,EAAO86H,EAAKuC,iBAAiBjwN,KAAK4tN,YAE7B9/M,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC5B,IAAIk+J,GAAQrxJ,GAA8B,IAAnBi4E,GAAQ9kF,EAAK,GACpC9N,KAAKy2K,QAAQroK,KAAKgC,MAAMtC,EAAI,IAAIA,EAAI,EAAI9N,KAAK8tN,YAAc,EAAI,GAAK9hD,EAGrE,IAASl+J,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACxBk+J,GAAQrxJ,GAA8B,IAAnBi4E,GAAQ9kF,EAAK,GACpC9N,KAAKy2K,QAAQ3oK,EAAI,EAAI9N,KAAK8tN,YAAc,EAAI,GAAG1/M,KAAKgC,MAAMtC,EAAI,IAAMk+J,IAItEiiD,EAAMgB,cAAgB,SAASt0M,EAAMk0M,GAMpC,IAJA,IAAIvwM,EAAQte,KAAK6tN,mBAAqB,EAAKgB,EACvCj8H,EAAO86H,EAAKwC,eAAe5xM,GAGtBxQ,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAE5B,IAAIk+J,GAAQrxJ,GAA8B,IAAnBi4E,GAAQ9kF,EAAK,GAEhCA,EAAI,EACP9N,KAAKy2K,QAAQ3oK,GAAG,GAAKk+J,EACXl+J,EAAI,EACd9N,KAAKy2K,QAAQ3oK,EAAI,GAAG,GAAKk+J,EAEzBhsK,KAAKy2K,QAAQz2K,KAAK8tN,YAAc,GAAKhgN,GAAG,GAAKk+J,EAK/C,IAASl+J,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAExBk+J,GAAQrxJ,GAA8B,IAAnBi4E,GAAQ9kF,EAAK,GAEhCA,EAAI,EACP9N,KAAKy2K,QAAQ,GAAGz2K,KAAK8tN,YAAchgN,EAAI,GAAKk+J,EAClCl+J,EAAI,EACd9N,KAAKy2K,QAAQ,GAAG,GAAK3oK,EAAI,EAAI,GAAKk+J,EAElChsK,KAAKy2K,QAAQ,GAAG,GAAK3oK,EAAI,GAAKk+J,EAKhChsK,KAAKy2K,QAAQz2K,KAAK8tN,YAAc,GAAG,IAAOnzM,GAG3CszM,EAAMmB,QAAU,SAAS9wM,EAAMuwM,GAO9B,IALA,IAAIsB,GAAO,EACPx5C,EAAM32K,KAAK8tN,YAAc,EACzBsC,EAAW,EACXC,EAAY,EAEP76J,EAAMx1D,KAAK8tN,YAAc,EAAGt4J,EAAM,EAAGA,GAAO,EAIpD,IAFW,GAAPA,GAAUA,MAED,CAEZ,IAAK,IAAIjjD,EAAI,EAAGA,EAAI,EAAGA,IAEtB,GAAkC,MAA9BvS,KAAKy2K,QAAQE,GAAKnhH,EAAMjjD,GAAY,CAEvC,IAAI+9M,GAAO,EAEPD,EAAY/xM,EAAKtQ,SACpBsiN,EAAkD,IAAtChyM,EAAK+xM,KAAeD,EAAY,IAGlC1C,EAAK6C,QAAQ1B,EAAal4C,EAAKnhH,EAAMjjD,KAG/C+9M,GAAQA,GAGTtwN,KAAKy2K,QAAQE,GAAKnhH,EAAMjjD,GAAK+9M,GAGZ,KAFjBF,IAGCC,IACAD,EAAW,GAOd,IAFAz5C,GAAOw5C,GAEG,GAAKnwN,KAAK8tN,aAAen3C,EAAK,CACvCA,GAAOw5C,EACPA,GAAOA,EACP,SAMJ/5C,EAAOo6C,KAAO,IACdp6C,EAAOq6C,KAAO,GAEdr6C,EAAO+4C,WAAa,SAASvB,EAAYC,EAAmBG,GAM3D,IAJA,IAAIK,EAAWb,EAAQc,YAAYV,EAAYC,GAE3CxzM,EAAS,IAAIozM,EAER3/M,EAAI,EAAGA,EAAIkgN,EAAShgN,OAAQF,IAAK,CACzC,IAAIwQ,EAAO0vM,EAASlgN,GACpBuM,EAAOm0M,IAAIlwM,EAAKovC,KAAM,GACtBrzC,EAAOm0M,IAAIlwM,EAAKsrF,YAAa8jH,EAAKe,gBAAgBnwM,EAAKovC,KAAMkgK,IAC7DtvM,EAAKowM,MAAMr0M,GAIZ,IAAIk0M,EAAiB,EACrB,IAASzgN,EAAI,EAAGA,EAAIugN,EAASrgN,OAAQF,IACpCygN,GAAkBF,EAASvgN,GAAG2lF,UAG/B,GAAIp5E,EAAOo0M,kBAAqC,EAAjBF,EAC9B,MAAM,IAAI/6M,MAAM,0BACb6G,EAAOo0M,kBACP,IACkB,EAAjBF,EACD,KASJ,IALIl0M,EAAOo0M,kBAAoB,GAAsB,EAAjBF,GACnCl0M,EAAOm0M,IAAI,EAAG,GAIRn0M,EAAOo0M,kBAAoB,GAAK,GACtCp0M,EAAOq2M,QAAO,GAIf,OAEKr2M,EAAOo0M,mBAAsC,EAAjBF,KAGhCl0M,EAAOm0M,IAAIp4C,EAAOo6C,KAAM,KAEpBn2M,EAAOo0M,mBAAsC,EAAjBF,KAGhCl0M,EAAOm0M,IAAIp4C,EAAOq6C,KAAM,GAGzB,OAAOr6C,EAAOu6C,YAAYt2M,EAAQg0M,IAGnCj4C,EAAOu6C,YAAc,SAASt2M,EAAQg0M,GAUrC,IARA,IAAIt5M,EAAS,EAET67M,EAAa,EACbC,EAAa,EAEbC,EAAS,IAAIlzM,MAAMywM,EAASrgN,QAC5B+iN,EAAS,IAAInzM,MAAMywM,EAASrgN,QAEvB2K,EAAI,EAAGA,EAAI01M,EAASrgN,OAAQ2K,IAAK,CAEzC,IAAIq4M,EAAU3C,EAAS11M,GAAG86E,UACtBw9H,EAAU5C,EAAS11M,GAAGu4M,WAAaF,EAEvCJ,EAAaxiN,KAAKiB,IAAIuhN,EAAYI,GAClCH,EAAaziN,KAAKiB,IAAIwhN,EAAYI,GAElCH,EAAOn4M,GAAK,IAAIiF,MAAMozM,GAEtB,IAAK,IAAIljN,EAAI,EAAGA,EAAIgjN,EAAOn4M,GAAG3K,OAAQF,IACrCgjN,EAAOn4M,GAAG7K,GAAK,IAAOuM,EAAOA,OAAOvM,EAAIiH,GAEzCA,GAAUi8M,EAEV,IAAIG,EAASzD,EAAK0D,0BAA0BH,GAGxCI,EAFU,IAAI1D,EAAWmD,EAAOn4M,GAAIw4M,EAAOvnH,YAAc,GAEvCoiE,IAAImlD,GAC1BJ,EAAOp4M,GAAK,IAAIiF,MAAMuzM,EAAOvnH,YAAc,GAC3C,IAAS97F,EAAI,EAAGA,EAAIijN,EAAOp4M,GAAG3K,OAAQF,IAAK,CACjC,IAAIwjN,EAAWxjN,EAAIujN,EAAQznH,YAAcmnH,EAAOp4M,GAAG3K,OAC5D+iN,EAAOp4M,GAAG7K,GAAMwjN,GAAY,EAAID,EAAQv3K,IAAIw3K,GAAY,GAK1D,IAAIC,EAAiB,EACrB,IAASzjN,EAAI,EAAGA,EAAIugN,EAASrgN,OAAQF,IACpCyjN,GAAkBlD,EAASvgN,GAAGojN,WAG/B,IAAI5yM,EAAO,IAAIV,MAAM2zM,GACjB/jN,EAAQ,EAEZ,IAASM,EAAI,EAAGA,EAAI8iN,EAAY9iN,IAC/B,IAAS6K,EAAI,EAAGA,EAAI01M,EAASrgN,OAAQ2K,IAChC7K,EAAIgjN,EAAOn4M,GAAG3K,SACjBsQ,EAAK9Q,KAAWsjN,EAAOn4M,GAAG7K,IAK7B,IAASA,EAAI,EAAGA,EAAI+iN,EAAY/iN,IAC/B,IAAS6K,EAAI,EAAGA,EAAI01M,EAASrgN,OAAQ2K,IAChC7K,EAAIijN,EAAOp4M,GAAG3K,SACjBsQ,EAAK9Q,KAAWujN,EAAOp4M,GAAG7K,IAK7B,OAAOwQ,GAGRo9H,EAAOC,QAAUy6B,G,gBCpbjB,IAAI1oH,EAAOkuF,EAAQ,IAEnB,SAAS41E,EAAWlzM,GACnBte,KAAK0tD,KAAOA,EAAK49G,eACjBtrK,KAAKse,KAAOA,EAGbkzM,EAAWl8M,UAAY,CAEtBs0F,UAAY,SAASvvF,GACpB,OAAOra,KAAKse,KAAKtQ,QAGlB0gN,MAAQ,SAASr0M,GAChB,IAAK,IAAIvM,EAAI,EAAGA,EAAI9N,KAAKse,KAAKtQ,OAAQF,IAErCuM,EAAOm0M,IAAIxuN,KAAKse,KAAKqqG,WAAW76G,GAAI,KAKvC4tI,EAAOC,QAAU61E,G,gBCpBjB,IAAIC,EAAM71E,EAAQ,IAElB,SAAS81E,EAAUR,EAAYz9H,GAC9BzzF,KAAKkxN,WAAaA,EAClBlxN,KAAKyzF,UAAaA,EAGnBi+H,EAAUC,eAAiB,CAQ1B,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAGR,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,IAGT,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,IAGT,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,KACV,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,KAGtBD,EAAUpD,YAAc,SAASV,EAAYC,GAE5C,IAAI+D,EAAUF,EAAUG,gBAAgBjE,EAAYC,GAEpD,QAAextN,GAAXuxN,EACH,MAAM,IAAIp+M,MAAM,6BAA+Bo6M,EAAa,sBAAwBC,GAOrF,IAJA,IAAI7/M,EAAS4jN,EAAQ5jN,OAAS,EAE1BigE,EAAO,IAAIrwD,MAEN9P,EAAI,EAAGA,EAAIE,EAAQF,IAM3B,IAJA,IAAI+S,EAAQ+wM,EAAY,EAAJ9jN,EAAQ,GACxBojN,EAAaU,EAAY,EAAJ9jN,EAAQ,GAC7B2lF,EAAam+H,EAAY,EAAJ9jN,EAAQ,GAExB8d,EAAI,EAAGA,EAAI/K,EAAO+K,IAC1BqiD,EAAK3gE,KAAK,IAAIokN,EAAUR,EAAYz9H,IAItC,OAAOxlB,GAGRyjJ,EAAUG,gBAAkB,SAASjE,EAAYC,GAEhD,OAAOA,GACP,KAAK4D,EAAIjmD,EACR,OAAOkmD,EAAUC,eAAkC,GAAlB/D,EAAa,GAAS,GACxD,KAAK6D,EAAIhmD,EACR,OAAOimD,EAAUC,eAAkC,GAAlB/D,EAAa,GAAS,GACxD,KAAK6D,EAAI/lD,EACR,OAAOgmD,EAAUC,eAAkC,GAAlB/D,EAAa,GAAS,GACxD,KAAK6D,EAAI9lD,EACR,OAAO+lD,EAAUC,eAAkC,GAAlB/D,EAAa,GAAS,GACxD,QACC,SAIFlyE,EAAOC,QAAU+1E,G,cC1SjB,SAASI,IACR9xN,KAAKqa,OAAS,IAAIuD,MAClB5d,KAAKgO,OAAS,EAGf8jN,EAAYx8M,UAAY,CAEvBwkC,IAAM,SAAStsC,GACd,IAAIukN,EAAW3jN,KAAKgC,MAAM5C,EAAQ,GAClC,OAA8D,IAApDxN,KAAKqa,OAAO03M,KAAe,EAAIvkN,EAAQ,EAAO,IAGzDghN,IAAM,SAAS3+G,EAAK7hG,GACnB,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,IAC3B9N,KAAK0wN,OAA8C,IAAnC7gH,IAAS7hG,EAASF,EAAI,EAAO,KAI/C2gN,gBAAkB,WACjB,OAAOzuN,KAAKgO,QAGb0iN,OAAS,SAASsB,GAEjB,IAAID,EAAW3jN,KAAKgC,MAAMpQ,KAAKgO,OAAS,GACpChO,KAAKqa,OAAOrM,QAAU+jN,GACzB/xN,KAAKqa,OAAO/M,KAAK,GAGd0kN,IACHhyN,KAAKqa,OAAO03M,IAAc,MAAU/xN,KAAKgO,OAAS,GAGnDhO,KAAKgO,WAIP0tI,EAAOC,QAAUm2E,G,gBCrCjB,IAAIG,EAAOr2E,EAAQ,IACf+xE,EAAa/xE,EAAQ,IACrBgwB,EAAOhwB,EAAQ,IAEfs2E,EACU,EADVA,EAEU,EAFVA,EAGU,EAHVA,EAIU,EAJVA,EAKU,EALVA,EAMU,EANVA,EAOU,EAPVA,EAQU,EAGVC,EAAS,CAETC,uBAAyB,CACxB,GACA,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,KACpB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAG3BC,IAAO,KACPC,IAAO,KACPC,SAAY,MAEZrC,eAAiB,SAAS5xM,GAEzB,IADA,IAAIzG,EAAIyG,GAAQ,GACT6zM,EAAOK,YAAY36M,GAAKs6M,EAAOK,YAAYL,EAAOE,MAAQ,GAChEx6M,GAAMs6M,EAAOE,KAAQF,EAAOK,YAAY36M,GAAKs6M,EAAOK,YAAYL,EAAOE,KAExE,OAAU/zM,GAAQ,GAAMzG,GAAKs6M,EAAOI,UAGrCtC,iBAAmB,SAAS3xM,GAE3B,IADA,IAAIzG,EAAIyG,GAAQ,GACT6zM,EAAOK,YAAY36M,GAAKs6M,EAAOK,YAAYL,EAAOG,MAAQ,GAChEz6M,GAAMs6M,EAAOG,KAAQH,EAAOK,YAAY36M,GAAKs6M,EAAOK,YAAYL,EAAOG,KAExE,OAAQh0M,GAAQ,GAAMzG,GAGvB26M,YAAc,SAASl0M,GAItB,IAFA,IAAIm0M,EAAQ,EAEG,GAARn0M,GACNm0M,IACAn0M,KAAU,EAGX,OAAOm0M,GAGRzC,mBAAqB,SAASpC,GAC7B,OAAOuE,EAAOC,uBAAuBxE,EAAa,IAGnD2C,QAAU,SAAS1B,EAAa/gN,EAAG8d,GAElC,OAAQijM,GAER,KAAKqD,EAA2B,OAAQpkN,EAAI8d,GAAK,GAAK,EACtD,KAAKsmM,EAA2B,OAAOpkN,EAAI,GAAK,EAChD,KAAKokN,EAA2B,OAAOtmM,EAAI,GAAK,EAChD,KAAKsmM,EAA2B,OAAQpkN,EAAI8d,GAAK,GAAK,EACtD,KAAKsmM,EAA2B,OAAQ9jN,KAAKgC,MAAMtC,EAAI,GAAKM,KAAKgC,MAAMwb,EAAI,IAAO,GAAK,EACvF,KAAKsmM,EAA2B,OAAQpkN,EAAI8d,EAAK,EAAK9d,EAAI8d,EAAK,GAAK,EACpE,KAAKsmM,EAA2B,OAAUpkN,EAAI8d,EAAK,EAAK9d,EAAI8d,EAAK,GAAK,GAAK,EAC3E,KAAKsmM,EAA2B,OAAUpkN,EAAI8d,EAAK,GAAK9d,EAAI8d,GAAK,GAAK,GAAK,EAE3E,QACC,MAAM,IAAIpY,MAAM,mBAAqBq7M,KAIvCuC,0BAA4B,SAASsB,GAIpC,IAFA,IAAIrgN,EAAI,IAAIs7M,EAAW,CAAC,GAAI,GAEnB7/M,EAAI,EAAGA,EAAI4kN,EAAoB5kN,IACvCuE,EAAIA,EAAE+kB,SAAS,IAAIu2L,EAAW,CAAC,EAAG/hD,EAAKE,KAAKh+J,IAAK,IAGlD,OAAOuE,GAGRo8M,gBAAkB,SAAS/gK,EAAMzgD,GAEhC,GAAI,GAAKA,GAAQA,EAAO,GAIvB,OAAOygD,GACP,KAAKukK,EAAK7mD,YAAe,OAAO,GAChC,KAAK6mD,EAAK5mD,eAAkB,OAAO,EACnC,KAAK4mD,EAAK3mD,eACV,KAAK2mD,EAAK1mD,WAAe,OAAO,EAChC,QACC,MAAM,IAAI/3J,MAAM,QAAUk6C,QAGrB,GAAIzgD,EAAO,GAIjB,OAAOygD,GACP,KAAKukK,EAAK7mD,YAAe,OAAO,GAChC,KAAK6mD,EAAK5mD,eAAkB,OAAO,GACnC,KAAK4mD,EAAK3mD,eAAiB,OAAO,GAClC,KAAK2mD,EAAK1mD,WAAe,OAAO,GAChC,QACC,MAAM,IAAI/3J,MAAM,QAAUk6C,OAGrB,MAAIzgD,EAAO,IAcjB,MAAM,IAAIuG,MAAM,QAAUvG,GAV1B,OAAOygD,GACP,KAAKukK,EAAK7mD,YAAe,OAAO,GAChC,KAAK6mD,EAAK5mD,eAAiB,OAAO,GAClC,KAAK4mD,EAAK3mD,eAAiB,OAAO,GAClC,KAAK2mD,EAAK1mD,WAAe,OAAO,GAChC,QACC,MAAM,IAAI/3J,MAAM,QAAUk6C,MAQ7B6hK,aAAe,SAASoD,GAQvB,IANA,IAAI7E,EAAc6E,EAAOvE,iBAErBkB,EAAY,EAIP34C,EAAM,EAAGA,EAAMm3C,EAAan3C,IAEpC,IAAK,IAAInhH,EAAM,EAAGA,EAAMs4J,EAAat4J,IAAO,CAK9C,IAHG,IAAIo9J,EAAY,EACZtC,EAAOqC,EAAOxE,OAAOx3C,EAAKnhH,GAExB78C,GAAK,EAAGA,GAAK,EAAGA,IAErB,KAAIg+J,EAAMh+J,EAAI,GAAKm1M,GAAen3C,EAAMh+J,GAIxC,IAAK,IAAIpG,GAAK,EAAGA,GAAK,EAAGA,IAEpBijD,EAAMjjD,EAAI,GAAKu7M,GAAet4J,EAAMjjD,GAI/B,GAALoG,GAAe,GAALpG,GAIV+9M,GAAQqC,EAAOxE,OAAOx3C,EAAMh+J,EAAG68C,EAAMjjD,IACxCqgN,IAKCA,EAAY,IACftD,GAAc,EAAIsD,EAAY,GAOjC,IAASj8C,EAAM,EAAGA,EAAMm3C,EAAc,EAAGn3C,IACxC,IAASnhH,EAAM,EAAGA,EAAMs4J,EAAc,EAAGt4J,IAAO,CAC/C,IAAI30C,EAAQ,EACR8xM,EAAOxE,OAAOx3C,EAASnhH,IAAW30C,IAClC8xM,EAAOxE,OAAOx3C,EAAM,EAAGnhH,IAAW30C,IAClC8xM,EAAOxE,OAAOx3C,EAASnhH,EAAM,IAAK30C,IAClC8xM,EAAOxE,OAAOx3C,EAAM,EAAGnhH,EAAM,IAAK30C,IACzB,GAATA,GAAuB,GAATA,IACjByuM,GAAa,GAOhB,IAAS34C,EAAM,EAAGA,EAAMm3C,EAAan3C,IACpC,IAASnhH,EAAM,EAAGA,EAAMs4J,EAAc,EAAGt4J,IACpCm9J,EAAOxE,OAAOx3C,EAAKnhH,KACjBm9J,EAAOxE,OAAOx3C,EAAKnhH,EAAM,IACzBm9J,EAAOxE,OAAOx3C,EAAKnhH,EAAM,IACzBm9J,EAAOxE,OAAOx3C,EAAKnhH,EAAM,IACzBm9J,EAAOxE,OAAOx3C,EAAKnhH,EAAM,KACzBm9J,EAAOxE,OAAOx3C,EAAKnhH,EAAM,IACzBm9J,EAAOxE,OAAOx3C,EAAKnhH,EAAM,KAC9B85J,GAAa,IAKhB,IAAS95J,EAAM,EAAGA,EAAMs4J,EAAat4J,IACpC,IAASmhH,EAAM,EAAGA,EAAMm3C,EAAc,EAAGn3C,IACpCg8C,EAAOxE,OAAOx3C,EAAKnhH,KACjBm9J,EAAOxE,OAAOx3C,EAAM,EAAGnhH,IACvBm9J,EAAOxE,OAAOx3C,EAAM,EAAGnhH,IACvBm9J,EAAOxE,OAAOx3C,EAAM,EAAGnhH,IACvBm9J,EAAOxE,OAAOx3C,EAAM,EAAGnhH,KACvBm9J,EAAOxE,OAAOx3C,EAAM,EAAGnhH,IACvBm9J,EAAOxE,OAAOx3C,EAAM,EAAGnhH,KAC5B85J,GAAa,IAOhB,IAAIuD,EAAY,EAEhB,IAASr9J,EAAM,EAAGA,EAAMs4J,EAAat4J,IACpC,IAASmhH,EAAM,EAAGA,EAAMm3C,EAAan3C,IAChCg8C,EAAOxE,OAAOx3C,EAAKnhH,IACtBq9J,IAQH,OAFAvD,GAAqB,IADTlhN,KAAKgD,IAAI,IAAMyhN,EAAY/E,EAAcA,EAAc,IAAM,KAO9EpyE,EAAOC,QAAUw2E,G,6BCpRjB7hN,OAAO6L,eAAew/H,EAAS,aAAc,CAC3Cn8I,OAAO,IAGT,IAEIq2K,EAAcF,EAFD/5B,EAAQ,KAMrBm6B,EAAUJ,EAFD/5B,EAAQ,IAIrB,SAAS+5B,EAAuBr1B,GAAO,OAAOA,GAAOA,EAAIgsB,WAAahsB,EAAM,CAAEisB,QAASjsB,GAEvF,IAAI8hB,EAAY,CACdvqJ,EAAGg+J,EAAYtJ,QAAQznI,OAAOokI,WAC9BjyG,KAAM4+G,EAAYtJ,QAAQznI,OAAOokI,WACjC6N,WAAYlB,EAAYtJ,QAAQwC,OAAO7F,WACvC8N,WAAYnB,EAAYtJ,QAAQwC,OAAO7F,YAKrC4pD,EAAa,SAAoB9/D,GACnC,IAAIn7I,EAAIm7I,EAAKn7I,EACTo/C,EAAO+7F,EAAK/7F,KACZ8/G,EAAa/jB,EAAK+jB,WAClBC,EAAahkB,EAAKgkB,WACtB,OAAOjB,EAAQxJ,QAAQzQ,cAAc,OAAQ,CAAEjkJ,EAAGA,EAAGo/C,KAAMA,EAAM+sB,UAAW,UAAY,CAAC,EAAG,EAAG,EAAG,EAAG+yF,EAAYC,GAAc,OAGjI87C,EAAW1wD,UAAYA,EACvB0wD,EAAW/wD,aAXQ,GAanBpmB,EAAQ4wB,QAAUumD,G,6BClClBxiN,OAAO6L,eAAew/H,EAAS,aAAc,CAC3Cn8I,OAAO,IAGT,IAAIw0J,EAAW1jJ,OAAOm9B,QAAU,SAAU9/B,GAAU,IAAK,IAAIG,EAAI,EAAGA,EAAI5N,UAAU8N,OAAQF,IAAK,CAAE,IAAIoP,EAAShd,UAAU4N,GAAI,IAAK,IAAIzO,KAAO6d,EAAc5M,OAAOgF,UAAU03I,eAAe/+I,KAAKiP,EAAQ7d,KAAQsO,EAAOtO,GAAO6d,EAAO7d,IAAY,OAAOsO,GAInPkoK,EAAcF,EAFD/5B,EAAQ,KAMrBm6B,EAAUJ,EAFD/5B,EAAQ,IAIrB,SAAS+5B,EAAuBr1B,GAAO,OAAOA,GAAOA,EAAIgsB,WAAahsB,EAAM,CAAEisB,QAASjsB,GAIvF,IAAI8hB,EAAY,CACdl4I,SAAU2rJ,EAAYtJ,QAAQ3+J,MAAMs7J,WACpCjgJ,KAAM4sJ,EAAYtJ,QAAQwC,OAAO7F,WACjCqF,MAAOsH,EAAYtJ,QAAQznI,OAC3BiuL,MAAOl9C,EAAYtJ,QAAQznI,QAGzBi9H,EAAe,CACjBwM,WAAOluK,EACP0yN,MAAO,8BAGLC,EAAgB,SAAuBhgE,GACzC,IAAI9oI,EAAW8oI,EAAK9oI,SAChBjB,EAAO+pI,EAAK/pI,KACZslJ,EAAQvb,EAAKub,MACbwkD,EAAQ//D,EAAK+/D,MACbp4E,EAnBN,SAAkC2F,EAAKjzG,GAAQ,IAAI1/B,EAAS,GAAI,IAAK,IAAIG,KAAKwyI,EAAWjzG,EAAKhgC,QAAQS,IAAM,GAAkBwC,OAAOgF,UAAU03I,eAAe/+I,KAAKqyI,EAAKxyI,KAAcH,EAAOG,GAAKwyI,EAAIxyI,IAAM,OAAOH,EAmBrM6pJ,CAAyBxE,EAAM,CAAC,WAAY,OAAQ,QAAS,UAEzE,OAAO+iB,EAAQxJ,QAAQzQ,cACrB,MACA9H,EAAS,GAAIrZ,EAAO,CAAE3/H,OAAQiO,EAAMlO,MAAOkO,EAAM8pM,MAAOA,IACxDxkD,EAAQwH,EAAQxJ,QAAQzQ,cACtB,QACA,KACAyS,GACE,KACJrkJ,IAIJ8oM,EAAc5wD,UAAYA,EAC1B4wD,EAAcjxD,aAAeA,EAE7BpmB,EAAQ4wB,QAAUymD,G,cCtDlB,IAAIj7M,EAGJA,EAAK,WACJ,OAAO/X,KADH,GAIL,IAEC+X,EAAIA,GAAK,IAAI8sJ,SAAS,cAAb,GACR,MAAO9wJ,GAEc,kBAAXqiF,SAAqBr+E,EAAIq+E,QAOrCslD,EAAOC,QAAU5jI,G,cCnBjB2jI,EAAOC,QAAU/9H,MAAMC,SAAW,SAAUw+H,GAC1C,MAA8C,kBAAvC/rI,OAAOgF,UAAU9G,SAASP,KAAKouI,K,uTCKlCxnI,EAAK,IAAI8Q,UACT7Q,EAAK,IAAI6Q,UACT4iF,EAAK,IAAI5iF,UAEf,SAASstM,EAAyBC,EAAIzsM,EAAQwC,GAC5C,IAAMkqM,EAAYt+M,EAAG2iB,sBAAsB07L,EAAGpsM,aAC9CqsM,EAAUC,QAAQ3sM,GAClB,IAAMuqB,EAAY/nB,EAAKlO,MAAQ,EACzBk2B,EAAahoB,EAAKjO,OAAS,EACjC,MAAO,CAACm4M,EAAUzjN,EAAIshC,EAAYA,GAAamiL,EAAUxjN,EAAIshC,EAAcA,GAuD7E,IAAMtyB,EAAU,SAAAnf,GAAK,OAAI4O,KAAKgD,IAAI5R,GAAS,MAAQ,EAAIA,GAEvD,SAAS6zN,EAAaj6M,EAAQk6M,GAG5B,IAHuD,IAAdC,EAAc,uDAAJ,GAC/CC,EAAW,YAEN1lN,EAAI,EAAS,KAANA,EAAUA,IACxB0lN,GAAY70M,EAAQ20M,EAAYxlN,GAAKsL,EAAOpF,SAASlG,KAAa,KAANA,EAAW,IAAM,KAG/E,OAAOylN,EAAUC,EAGnB,IAA4BF,EAAtBG,GAAsBH,EAEzB,CAAC,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAD5C,SAAAl6M,GAAM,OAAIi6M,EAAaj6M,EAAQk6M,KAGlCI,EACG,SAACt6M,EAAQkhE,GAAT,OAAoB+4I,EAAaj6M,EAClC,CAAC,GAANtB,EADgEwiE,GACnD,EAAIxiE,EAAG,EAAIA,EAAG,GAAI,EAAIA,GAAI,EAAIA,GAAI,EAAIA,GAAI,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAG,EAAG,EAAG,EAAG,GADlB,wBACzE,IAAAA,GAEG67M,EAAoB9tE,cAAiB,WAkBxC1F,GAAQ,IACLyzE,EAlBJ1pM,EAiBS,EAjBTA,SAiBS,IAhBT2pM,WAgBS,MAhBH,KAgBG,EAfTjvL,EAeS,EAfTA,MACAqlH,EAcS,EAdTA,UACAspE,EAaS,EAbTA,QACAp+M,EAYS,EAZTA,OACA2+M,EAWS,EAXTA,WACAC,EAUS,EAVTA,OACAC,EASS,EATTA,eASS,IARTt7K,cAQS,aAPTsrC,iBAOS,SANTiwI,EAMS,EANTA,QACAC,EAKS,EALTA,UAKS,IAJTC,mBAIS,MAJK,CAAC,SAAU,GAIhB,MAHTC,yBAGS,MAHWnB,EAGX,MAFToB,UAES,MAFJ,MAEI,EADN15E,EACM,iBAGHlhG,EAAKkyG,aAAS,qBAClBlyG,MAEIhzB,EAASklI,aAAS,qBACtBllI,UAEIuuB,EAAQ22G,aAAS,qBACrB32G,SAEI/rB,EAAO0iI,aAAS,qBACpB1iI,QAEIimB,EAAYy8G,aAAS,qBACzBz8G,aAEF,EAAa22G,YAAe,kBAAMrrI,SAASshJ,cAAcu4D,MAAlDnB,EAAP,oBACM5nL,EAAQu6G,SAAa,MACrByuE,EAAUzuE,SAAa,GACvB0uE,EAAc1uE,SAAa,CAAC,EAAG,IAC/B2uE,EAAoB3uE,SAAa,MACjC4uE,EAAoB5uE,SAAa,MACjCl4I,GAA0E,QAAhEimN,EAA4B,MAAVG,OAAiB,EAASA,EAAOtvH,eAAyC,IAApBmvH,EAA6BA,EAAkBn6K,EAAG40C,WAAWstF,WACrJ91B,aAAgB,WACd,GAAIv6G,EAAMm5D,QAAS,CAGjB,GAFAzvD,EAAM3c,oBAEF2rD,EACFkvI,EAAGtuL,MAAMiwI,QAAT,0EACK,CACL,IAAMxvE,EAAM+uH,EAAkB9oL,EAAMm5D,QAASh+E,EAAQwC,GACrDiqM,EAAGtuL,MAAMiwI,QAAT,+DAA2ExvE,EAAI,GAA/E,cAAuFA,EAAI,GAA3F,+BAOF,OAJI13F,KACE4lN,EAAS5lN,GAAO4lN,QAAQL,GAASvlN,GAAO8gJ,YAAYykE,IAGnD,WACDvlN,IAAQA,GAAO0hJ,YAAY6jE,GAC/BwB,yBAAgCxB,OAInC,CAACvlN,GAAQq2E,IACZ,IAAM2wI,GAAS9uE,WAAc,WAC3B,OAAI7hE,EACK,CACLjxD,SAAU,WACVgB,IAAK,EACLF,KAAM,EACN9Y,MAAOkO,EAAKlO,MACZC,OAAQiO,EAAKjO,OACb45M,eAAgB,cAChBC,cAAe,QAGjB,yBACE9hM,SAAU,WACVixD,UAAW7uE,EAAS,2BAA6B,QAC7C2+M,GAAc,CAChB//L,KAAM9K,EAAKjO,OAAS,EACpB6Y,MAAO5K,EAAKlO,MAAQ,EACpBA,MAAOkO,EAAKlO,MACZC,OAAQiO,EAAKjO,SAEZ4pB,KAGN,CAACA,EAAOzvB,EAAQ2+M,EAAY7qM,EAAM+6D,IAC/B8wI,GAAuBjvE,WAAc,iBAAO,CAChD9yH,SAAU,WACV8hM,cAAe,UACb,IACJhvE,mBAAsB,WAChB7hE,EACF0wI,SAA8B7uE,gBAAoB,MAAO,CACvD1F,IAAKq0E,EACL5vL,MAAO+vL,IACO9uE,gBAAoB,MAAO,CACzC1F,IAAKs0E,EACL7vL,MAAOkwL,IACOjvE,gBAAoB,MAAO,CACzC1F,IAAKA,EACL8J,UAAWA,EACXrlH,MAAOA,EACP1a,SAAUA,MACNgpM,GAENwB,SAA8B7uE,gBAAoB,MAAO,CACvD1F,IAAKA,EACLv7G,MAAO+vL,GACP1qE,UAAWA,EACX//H,SAAUA,IACRgpM,MAGR,IAAMx8L,GAAUmvH,UAAa,GAwE7B,OAvEAiG,aAAS,WACP,GAAIxgH,EAAMm5D,QAAS,CACjBh+E,EAAO4R,oBACPiT,EAAMm5D,QAAQ76E,mBAAkB,GAAM,GACtC,IAAMy7E,EAAMrhB,EAAYuwI,EAAY9vH,QAAU2vH,EAAkB9oL,EAAMm5D,QAASh+E,EAAQwC,GAEvF,GAAI+6D,GAAa51E,KAAKgD,IAAIkjN,EAAQ7vH,QAAUh+E,EAAOysB,MAAQ2gL,GAAOzlN,KAAKgD,IAAImjN,EAAY9vH,QAAQ,GAAKY,EAAI,IAAMwuH,GAAOzlN,KAAKgD,IAAImjN,EAAY9vH,QAAQ,GAAKY,EAAI,IAAMwuH,EAAK,CACpK,IAAMkB,EArMd,SAA8B7B,EAAIzsM,GAChC,IAAM0sM,EAAYt+M,EAAG2iB,sBAAsB07L,EAAGpsM,aACxCkuM,EAAYlgN,EAAG0iB,sBAAsB/Q,EAAOK,aAC5CmuM,EAAc9B,EAAUxrM,IAAIqtM,GAC5BE,EAASzuM,EAAO0uM,kBAAkB5sH,GACxC,OAAO0sH,EAAYtyM,QAAQuyM,GAAU9mN,KAAKC,GAAK,EAgMlB+mN,CAAqB9pL,EAAMm5D,QAASh+E,GACvD4uM,GAAiB,EAEE,mBAAZpB,GACO,IAAZA,IACFoB,EAAiB,CAACrgL,IAEXp3B,MAAMC,QAAQo2M,KACvBoB,EAAiBpB,EAAQ7yL,KAAI,SAAA4hH,GAAI,OAAIA,EAAKv+C,YAG5C,IAAM6wH,EAAoB5+L,GAAQ+tE,QAElC,GAAI4wH,EAAgB,CAClB,IAAME,EA3MhB,SAAyBrC,EAAIzsM,EAAQyoB,EAAW+kL,GAC9C,IAAMuB,EAAQ3gN,EAAG2iB,sBAAsB07L,EAAGpsM,aACpC2uM,EAAYD,EAAM90M,QACxB+0M,EAAUrC,QAAQ3sM,GAClByoB,EAAUqzG,cAAckzE,EAAWhvM,GACnC,IAAM0oB,EAAaD,EAAU6zG,iBAAiBkxE,GAAS,GAEvD,GAAI9kL,EAAWnhC,OAAQ,CACrB,IAAM0nN,EAAuBvmL,EAAW,GAAG7X,SAE3C,OADsBk+L,EAAMjpM,WAAW2iB,EAAUzhB,IAAIF,QAC9BmoM,EAEvB,OAAO,EA+LiBC,CAAgBrqL,EAAMm5D,QAASh+E,EAAQyoB,EAAWmmL,GACpE3+L,GAAQ+tE,QAAU8wH,IAAcR,OAEhCr+L,GAAQ+tE,SAAWswH,EASrB,GANIO,IAAsB5+L,GAAQ+tE,UAC5ByvH,EAAWA,GAAWx9L,GAAQ+tE,SAAcyuH,EAAGtuL,MAAMuoD,QAAUz2D,GAAQ+tE,QAAU,QAAU,QAGjGyuH,EAAGtuL,MAAMqvI,OAAT,UAtLR,SAAsBi/C,EAAIzsM,EAAQ0tM,GAChC,GAAI1tM,aAAkBssB,qBAAqBtsB,aAAkBmrC,qBAAoB,CAC/E,IAAMuhK,EAAYt+M,EAAG2iB,sBAAsB07L,EAAGpsM,aACxCkuM,EAAYlgN,EAAG0iB,sBAAsB/Q,EAAOK,aAC5C8uM,EAAOzC,EAAU5mM,WAAWyoM,GAC5BvkD,GAAK0jD,EAAY,GAAKA,EAAY,KAAO1tM,EAAOyN,IAAMzN,EAAOwN,MAC7DokF,EAAI87G,EAAY,GAAK1jD,EAAIhqJ,EAAOyN,IACtC,OAAO9lB,KAAKgG,MAAMq8J,EAAImlD,EAAOv9G,IA+KJw9G,CAAavqL,EAAMm5D,QAASh+E,EAAQ0tM,IAErDnwI,EAAW,CACb,IAAOhzC,EAA0B/nB,EAAKlO,MAAQ,EAA5Bk2B,EAA+BhoB,EAAKjO,OAAS,EACzDg4B,EAAMvsB,EAAOG,iBAAiB5S,SAAS,GAAKi9B,EAEhD+gB,EAKEvrC,EALFurC,qBACAj+B,EAIEtN,EAJFsN,IACAF,EAGEpN,EAHFoN,KACAG,EAEEvN,EAFFuN,OACAF,EACErN,EADFqN,MAEIgiM,EAAerC,EAAmBhtM,EAAOE,oBACzCovM,EAAkB/jK,EAAuB,SAAH,OAAYhf,EAAZ,sBAA6Br0B,IAAUmV,EAAQD,GAAQ,GAAvD,cAA+DlV,GAASoV,EAAMC,GAAU,GAAxF,4BAAgHgf,EAAhH,OACxC55B,EAASkyB,EAAMm5D,QAAQ39E,YAEvB4xB,KACFt/B,EAASqN,EAAOE,mBAAmBjG,QAAQhI,YAAY6wC,aAAanwC,GAAQ4Z,MAAMsY,EAAMm5D,QAAQzxE,QACzFhf,SAAS,GAAKoF,EAAOpF,SAAS,GAAKoF,EAAOpF,SAAS,IAAM,EAChEoF,EAAOpF,SAAS,IAAM,GAGxBk/M,EAAGtuL,MAAM7pB,MAAQkO,EAAKlO,MAAQ,KAC9Bm4M,EAAGtuL,MAAM5pB,OAASiO,EAAKjO,OAAS,KAChCk4M,EAAGtuL,MAAMoxL,YAAchkK,EAAuB,GAAH,UAAWhf,EAAX,MAEvCwhL,EAAkB/vH,SAAWgwH,EAAkBhwH,UACjD+vH,EAAkB/vH,QAAQ7/D,MAAMo/C,UAAhC,UAA+C+xI,GAA/C,OAAiED,EAAjE,qBAA0F9kL,EAA1F,cAAyGC,EAAzG,OACAwjL,EAAkBhwH,QAAQ7/D,MAAMo/C,UAAY0vI,EAAmBt6M,EAAQ,IAAM46M,GAAkB,IAAM,WAElG,CACL,IAAMhhM,OAA2B3yB,IAAnB2zN,EAA+B,EApOvD,SAAqBd,EAAIzsM,GACvB,GAAIA,aAAkBmrC,qBACpB,OAAOnrC,EAAOysB,KACT,GAAIzsB,aAAkBssB,oBAAmB,CAC9C,IAAMogL,EAAYt+M,EAAG2iB,sBAAsB07L,EAAGpsM,aACxCkuM,EAAYlgN,EAAG0iB,sBAAsB/Q,EAAOK,aAC5CmvM,EAAOxvM,EAAOusB,IAAM5kC,KAAKC,GAAK,IAC9BunN,EAAOzC,EAAU5mM,WAAWyoM,GAElC,OAAO,GADU,EAAI5mN,KAAKwlC,IAAIqiL,EAAO,GAAKL,GAG1C,OAAO,EAyNgDM,CAAY5qL,EAAMm5D,QAASh+E,GAAUutM,EACtFd,EAAGtuL,MAAMo/C,UAAT,sBAAoCqhB,EAAI,GAAxC,cAAgDA,EAAI,GAApD,uBAAqEryE,EAArE,KAGFuhM,EAAY9vH,QAAUY,EACtBivH,EAAQ7vH,QAAUh+E,EAAOysB,UAIX2yG,gBAAoB,QAASmO,YAAS,GAAIrZ,EAAO,CACnEwF,IAAK70G,S,4HCtRH6qL,E,kDACJ,WAAYzuG,GAAS,kCACnB,cAAMA,IACD0uG,YAAc,KACnB,EAAKC,WAAa,KAClB,EAAKC,eAAiB,KACtB,EAAKC,gBAAkB,GACvB,EAAKlnD,UAAS,SAAUxmD,GACtB,OAAO,IAAI2tG,EAAgC3tG,MAE7C,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAI4tG,EAA2B5tG,MAExC,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAI6tG,EAAyB7tG,MAEtC,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAI8tG,EAAmC9tG,MAEhD,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAI+tG,EAA6B/tG,MAE1C,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAIguG,EAA0BhuG,MAEvC,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAIiuG,EAA+BjuG,MAE5C,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAIkuG,EAAoBluG,MAEjC,EAAKwmD,UAAS,SAAUxmD,GACtB,OAAO,IAAImuG,EAAuBnuG,MA/BjB,E,wCAmCrB,SAAKlrG,EAAKyoG,EAAQC,EAAYC,GAC5B,IACIuB,EADEx3E,EAAQrwC,KAIZ6nH,EADwB,KAAtB7nH,KAAK6nH,aACQ7nH,KAAK6nH,aACG,KAAd7nH,KAAKkhE,KACClhE,KAAKkhE,KAEL4rD,cAAYkB,eAAerwG,GAM5C3d,KAAK0nH,QAAQb,UAAUlpG,GAEvB,IAAMs5M,EAAW,SAAUljN,GACrBuyG,EACFA,EAAQvyG,GAERX,QAAQ3T,MAAMsU,GAGhBs8B,EAAMq3E,QAAQX,UAAUppG,GACxB0yB,EAAMq3E,QAAQZ,QAAQnpG,IAGlBypG,EAAS,IAAIa,aAAWjoH,KAAK0nH,SACnCN,EAAOoC,QAAQxpH,KAAKkhE,MACpBkmD,EAAOwC,gBAAgB,eACvBxC,EAAOiC,iBAAiBrpH,KAAK8nH,eAC7BV,EAAOqC,mBAAmBzpH,KAAK4nH,iBAC/BR,EAAOW,KAAKpqG,GAAK,SAAUW,GACzB,IACE+xB,EAAM3V,MAAMpc,EAAMupG,GAAc,SAAUqvG,GACxC9wG,EAAO8wG,GACP7mL,EAAMq3E,QAAQZ,QAAQnpG,KACrBs5M,GACH,MAAOljN,GACPkjN,EAASljN,MAEVsyG,EAAY4wG,K,4BAGjB,SAAeb,GAEb,OADAp2N,KAAKo2N,YAAcA,EACZp2N,O,0BAGT,WACE,MAAM,IAAIwT,MAAM,sG,2BAGlB,SAAc6iN,GAEZ,OADAr2N,KAAKq2N,WAAaA,EACXr2N,O,+BAGT,SAAkBs2N,GAEhB,OADAt2N,KAAKs2N,eAAiBA,EACft2N,O,sBAGT,SAASqkB,GAKP,OAJgD,IAA5CrkB,KAAKu2N,gBAAgBlpN,QAAQgX,IAC/BrkB,KAAKu2N,gBAAgBjpN,KAAK+W,GAGrBrkB,O,wBAGT,SAAWqkB,GAKT,OAJgD,IAA5CrkB,KAAKu2N,gBAAgBlpN,QAAQgX,IAC/BrkB,KAAKu2N,gBAAgB9oN,OAAOzN,KAAKu2N,gBAAgBlpN,QAAQgX,GAAW,GAG/DrkB,O,mBAGT,SAAMse,EAAM4iD,EAAMklD,EAAQE,GACxB,IAAI6wG,EACE/kL,EAAa,GACbglL,EAAU,GAEhB,GAAoB,kBAAT94M,EACT64M,EAAU74M,OAIV,GAFcwuG,cAAYuqG,WAAW,IAAIz9M,WAAW0E,EAAM,EAAG,MAE/Cg5M,EAA+B,CAC3C,IACEllL,EAAWmlL,EAAWC,iBAAmB,IAAIC,EAAoBn5M,GACjE,MAAO7e,GAEP,YADI6mH,GAASA,EAAQ7mH,IAIvB03N,EAAU/kL,EAAWmlL,EAAWC,iBAAiBL,aAEjDA,EAAUrqG,cAAYuqG,WAAW,IAAIz9M,WAAW0E,IAIpD,IAAMo+E,EAAO1jE,KAAK0B,MAAMy8L,GAExB,QAAmB92N,IAAfq8F,EAAKg7H,OAAuBh7H,EAAKg7H,MAAM76M,QAAQ,GAAK,EAClDypG,GAASA,EAAQ,IAAI9yG,MAAM,gFADjC,CAKA,IAAMq1G,EAAS,IAAI8uG,GAAWj7H,EAAM,CAClCx7B,KAAMA,GAAQlhE,KAAK6nH,cAAgB,GACnCF,YAAa3nH,KAAK2nH,YAClBG,cAAe9nH,KAAK8nH,cACpBJ,QAAS1nH,KAAK0nH,QACd2uG,WAAYr2N,KAAKq2N,WACjBC,eAAgBt2N,KAAKs2N,iBAEvBztG,EAAO+uG,WAAWvuG,iBAAiBrpH,KAAK8nH,eAExC,IAAK,IAAIh6G,EAAI,EAAGA,EAAI9N,KAAKu2N,gBAAgBvoN,OAAQF,IAAK,CACpD,IAAM+pN,EAAS73N,KAAKu2N,gBAAgBzoN,GAAG+6G,GACvCuuG,EAAQS,EAAOt9M,MAAQs9M,EAKvBzlL,EAAWylL,EAAOt9M,OAAQ,EAG5B,GAAImiF,EAAKo7H,eACP,IAAK,IAAIhqN,EAAI,EAAGA,EAAI4uF,EAAKo7H,eAAe9pN,SAAUF,EAAG,CACnD,IAAMiqN,EAAgBr7H,EAAKo7H,eAAehqN,GACpCkqN,EAAqBt7H,EAAKs7H,oBAAsB,GAEtD,OAAQD,GACN,KAAKR,EAAWU,oBACd7lL,EAAW2lL,GAAiB,IAAIG,EAChC,MAEF,KAAKX,EAAWY,sCACd/lL,EAAW2lL,GAAiB,IAAIK,EAChC,MAEF,KAAKb,EAAWc,2BACdjmL,EAAW2lL,GAAiB,IAAIO,EAAkC57H,EAAM18F,KAAKo2N,aAC7E,MAEF,KAAKmB,EAAWgB,sBACdnmL,EAAW2lL,GAAiB,IAAIS,EAChC,MAEF,KAAKjB,EAAWkB,sBACdrmL,EAAW2lL,GAAiB,IAAIW,EAChC,MAEF,QACMV,EAAmB3qN,QAAQ0qN,IAAkB,QAAgC13N,IAA3B+2N,EAAQW,IAC5D3kN,QAAQC,KAAK,wCAA0C0kN,EAAgB,OAOjFlvG,EAAO8vG,cAAcvmL,GACrBy2E,EAAO+vG,WAAWxB,GAClBvuG,EAAOnuF,MAAM0rF,EAAQE,Q,GA5MAmB,UAmNzB,SAASoxG,IACP,IAAI9wK,EAAU,GACd,MAAO,CACLjO,IAAK,SAAUz6C,GACb,OAAO0oD,EAAQ1oD,IAEjB+pB,IAAK,SAAU/pB,EAAKgqB,GAClB0+B,EAAQ1oD,GAAOgqB,GAEjByO,OAAQ,SAAUz4B,UACT0oD,EAAQ1oD,IAEjBy5N,UAAW,WACT/wK,EAAU,KAWhB,IAAMwvK,EAAa,CACjBC,gBAAiB,kBACjBa,2BAA4B,6BAC5BU,oBAAqB,sBACrBC,wBAAyB,0BACzBC,kBAAmB,oBACnBd,sCAAuC,sCACvCe,uBAAwB,yBACxBC,2BAA4B,6BAC5BlB,oBAAqB,sBACrBmB,qBAAsB,uBACtBC,mBAAoB,qBACpBd,sBAAuB,wBACvBE,sBAAuB,wBACvBa,iBAAkB,mBAClBC,wBAAyB,2BAQrBxC,E,WACJ,WAAYluG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAWwB,oBAEvB/4N,KAAKu6B,MAAQ,CACXuqI,KAAM,GACN00D,KAAM,I,6CAIV,WAIE,IAHA,IAAM3wG,EAAS7oH,KAAK6oH,OACd4wG,EAAWz5N,KAAK6oH,OAAOnsB,KAAKuvD,OAAS,GAElCytE,EAAY,EAAGC,EAAaF,EAASzrN,OAAQ0rN,EAAYC,EAAYD,IAAa,CACzF,IAAME,EAAUH,EAASC,GAErBE,EAAQxnL,YAAcwnL,EAAQxnL,WAAWpyC,KAAKua,YAAiDla,IAAxCu5N,EAAQxnL,WAAWpyC,KAAKua,MAAM4zD,OACvF06C,EAAOgxG,YAAY75N,KAAKu6B,MAAOq/L,EAAQxnL,WAAWpyC,KAAKua,MAAM4zD,U,wBAKnE,SAAW2rJ,GACT,IAAMjxG,EAAS7oH,KAAK6oH,OACd5jD,EAAW,SAAW60J,EACxBC,EAAalxG,EAAOtuF,MAAMuf,IAAImrB,GAClC,GAAI80J,EAAY,OAAOA,EACvB,IAIIC,EAJEt9H,EAAOmsB,EAAOnsB,KAGdu9H,IAFav9H,EAAKtqD,YAAcsqD,EAAKtqD,WAAWpyC,KAAKua,OAAS,IACvC23B,QAAU,IACZ4nL,GAErB75L,EAAQ,IAAIsE,QAAM,eACDlkC,IAAnB45N,EAASh6L,OAAqBA,EAAM5mB,UAAU4gN,EAASh6L,OAC3D,IAAMruB,OAA2BvR,IAAnB45N,EAASroN,MAAsBqoN,EAASroN,MAAQ,EAE9D,OAAQqoN,EAAShtN,MACf,IAAK,eACH+sN,EAAY,IAAI7tG,mBAAiBlsF,IACvBtyB,OAAOolB,SAAS5f,IAAI,EAAG,GAAI,GACrC6mN,EAAU5wM,IAAI4wM,EAAUrsN,QACxB,MAEF,IAAK,SACHqsN,EAAY,IAAIhuG,aAAW/rF,IACjB3I,SAAW1lB,EACrB,MAEF,IAAK,QACHooN,EAAY,IAAIvuG,YAAUxrF,IAChB3I,SAAW1lB,EAErBqoN,EAAS7tJ,KAAO6tJ,EAAS7tJ,MAAQ,GACjC6tJ,EAAS7tJ,KAAK8tJ,oBAAkD75N,IAAjC45N,EAAS7tJ,KAAK8tJ,eAA+BD,EAAS7tJ,KAAK8tJ,eAAiB,EAC3GD,EAAS7tJ,KAAK+tJ,oBAAkD95N,IAAjC45N,EAAS7tJ,KAAK+tJ,eAA+BF,EAAS7tJ,KAAK+tJ,eAAiB/rN,KAAKC,GAAK,EACrH2rN,EAAU1lN,MAAQ2lN,EAAS7tJ,KAAK+tJ,eAChCH,EAAUrpJ,SAAW,EAAMspJ,EAAS7tJ,KAAK8tJ,eAAiBD,EAAS7tJ,KAAK+tJ,eACxEH,EAAUrsN,OAAOolB,SAAS5f,IAAI,EAAG,GAAI,GACrC6mN,EAAU5wM,IAAI4wM,EAAUrsN,QACxB,MAEF,QACE,MAAM,IAAI6F,MAAM,4CAA8CymN,EAAShtN,MAW3E,OANA+sN,EAAUjnM,SAAS5f,IAAI,EAAG,EAAG,GAC7B6mN,EAAUp0K,MAAQ,OACSvlD,IAAvB45N,EAASjqJ,YAAyBgqJ,EAAUhqJ,UAAYiqJ,EAASjqJ,WACrEgqJ,EAAUz/M,KAAOsuG,EAAOuxG,iBAAiBH,EAAS1/M,MAAQ,SAAWu/M,GACrEC,EAAap6N,QAAQV,QAAQ+6N,GAC7BnxG,EAAOtuF,MAAMnR,IAAI67C,EAAU80J,GACpBA,I,kCAGT,SAAqBL,GACnB,IAAM35N,EAAOC,KACP6oH,EAAS7oH,KAAK6oH,OAEd+wG,EADO/wG,EAAOnsB,KACCuvD,MAAMytE,GAErBI,GADWF,EAAQxnL,YAAcwnL,EAAQxnL,WAAWpyC,KAAKua,OAAS,IAC5C4zD,MAC5B,YAAmB9tE,IAAfy5N,EAAiC,KAC9B95N,KAAKq6N,WAAWP,GAAYl6N,MAAK,SAAUuuE,GAChD,OAAO06C,EAAOyxG,YAAYv6N,EAAKw6B,MAAOu/L,EAAY3rJ,U,KAYlD+pJ,E,WACJ,aAAc,oBACZl4N,KAAKua,KAAOg9M,EAAWU,oB,mDAGzB,WACE,OAAO3xL,sB,0BAGT,SAAai0L,EAAgBC,EAAa3xG,GACxC,IAAMub,EAAU,GAChBm2F,EAAet6L,MAAQ,IAAIsE,QAAM,EAAK,EAAK,GAC3Cg2L,EAAe58L,QAAU,EACzB,IAAM88L,EAAoBD,EAAYE,qBAEtC,GAAID,EAAmB,CACrB,GAAI78M,MAAMC,QAAQ48M,EAAkBE,iBAAkB,CACpD,IAAM/sN,EAAQ6sN,EAAkBE,gBAChCJ,EAAet6L,MAAM5mB,UAAUzL,GAC/B2sN,EAAe58L,QAAU/vB,EAAM,QAGUvN,IAAvCo6N,EAAkBG,kBACpBx2F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,MAAOE,EAAkBG,mBAI/E,OAAOj7N,QAAQ0sJ,IAAIjoB,O,KAWjBoyF,E,WACJ,WAAY3tG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAWyB,wB,mDAGzB,SAAgB7vL,GACd,IACMqxL,EADSx6N,KAAK6oH,OACOnsB,KAAKjkE,UAAU0Q,GAC1C,OAAKqxL,EAAYpoL,YAAeooL,EAAYpoL,WAAWpyC,KAAKua,MACrDywD,uBADmE,O,kCAI5E,SAAqB7hC,EAAeoxL,GAClC,IAAM1xG,EAAS7oH,KAAK6oH,OACd2xG,EAAc3xG,EAAOnsB,KAAKjkE,UAAU0Q,GAE1C,IAAKqxL,EAAYpoL,aAAeooL,EAAYpoL,WAAWpyC,KAAKua,MAC1D,OAAO5a,QAAQV,UAGjB,IAAMmlI,EAAU,GACVv6E,EAAY2wK,EAAYpoL,WAAWpyC,KAAKua,MAkB9C,QAhBkCla,IAA9BwpD,EAAUixK,kBACZP,EAAez5L,UAAY+oB,EAAUixK,sBAGJz6N,IAA/BwpD,EAAUkxK,kBACZ32F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,eAAgB1wK,EAAUkxK,wBAGnC16N,IAAvCwpD,EAAUmxK,2BACZT,EAAex5L,mBAAqB8oB,EAAUmxK,+BAGJ36N,IAAxCwpD,EAAUoxK,2BACZ72F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,wBAAyB1wK,EAAUoxK,iCAG9C56N,IAArCwpD,EAAUqxK,yBACZ92F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,qBAAsB1wK,EAAUqxK,8BAEnC76N,IAA3CwpD,EAAUqxK,uBAAuBloM,OAAqB,CACxD,IAAMA,EAAQ62B,EAAUqxK,uBAAuBloM,MAE/CunM,EAAep5L,qBAAuB,IAAI7tB,UAAQ0f,GAAQA,GAI9D,OAAOrzB,QAAQ0sJ,IAAIjoB,O,KAYjBuyF,E,WACJ,WAAY9tG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAW4B,2B,mDAGzB,SAAgBhwL,GACd,IACMqxL,EADSx6N,KAAK6oH,OACOnsB,KAAKjkE,UAAU0Q,GAC1C,OAAKqxL,EAAYpoL,YAAeooL,EAAYpoL,WAAWpyC,KAAKua,MACrDywD,uBADmE,O,kCAI5E,SAAqB7hC,EAAeoxL,GAClC,IAAM1xG,EAAS7oH,KAAK6oH,OACd2xG,EAAc3xG,EAAOnsB,KAAKjkE,UAAU0Q,GAE1C,IAAKqxL,EAAYpoL,aAAeooL,EAAYpoL,WAAWpyC,KAAKua,MAC1D,OAAO5a,QAAQV,UAGjB,IAAMmlI,EAAU,GACVv6E,EAAY2wK,EAAYpoL,WAAWpyC,KAAKua,MAU9C,YARqCla,IAAjCwpD,EAAUsxK,qBACZZ,EAAex3L,aAAe8mB,EAAUsxK,yBAGJ96N,IAAlCwpD,EAAUuxK,qBACZh3F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,kBAAmB1wK,EAAUuxK,sBAG1Ez7N,QAAQ0sJ,IAAIjoB,O,KAWjBwyF,E,WACJ,WAAY/tG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAW6B,qB,mDAGzB,SAAgBjwL,GACd,IACMqxL,EADSx6N,KAAK6oH,OACOnsB,KAAKjkE,UAAU0Q,GAC1C,OAAKqxL,EAAYpoL,YAAeooL,EAAYpoL,WAAWpyC,KAAKua,MACrDywD,uBADmE,O,kCAI5E,SAAqB7hC,EAAeoxL,GAClC,IAAM1xG,EAAS7oH,KAAK6oH,OACd2xG,EAAc3xG,EAAOnsB,KAAKjkE,UAAU0Q,GAE1C,IAAKqxL,EAAYpoL,aAAeooL,EAAYpoL,WAAWpyC,KAAKua,MAC1D,OAAO5a,QAAQV,UAGjB,IAAMmlI,EAAU,GACVv6E,EAAY2wK,EAAYpoL,WAAWpyC,KAAKua,MAC9CggN,EAAet3L,eAA0C5iC,IAA9BwpD,EAAUwxK,gBAAgCxxK,EAAUwxK,gBAAkB,OAE9Dh7N,IAA/BwpD,EAAUyxK,kBACZl3F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,eAAgB1wK,EAAUyxK,mBAG9Ef,EAAep3L,oBAAsB0mB,EAAU1mB,qBAAuB,EACtE,IAAMmwD,EAAazpC,EAAU0xK,kBAAoB,CAAC,EAAG,EAAG,GAExD,OADAhB,EAAen3L,gBAAkB,IAAImB,QAAM+uD,EAAW,GAAIA,EAAW,GAAIA,EAAW,IAC7E3zF,QAAQ0sJ,IAAIjoB,O,KAWjByyF,E,WACJ,WAAYhuG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAW0B,kB,mDAGzB,SAAgB9vL,GACd,IACMqxL,EADSx6N,KAAK6oH,OACOnsB,KAAKjkE,UAAU0Q,GAC1C,OAAKqxL,EAAYpoL,YAAeooL,EAAYpoL,WAAWpyC,KAAKua,MACrDywD,uBADmE,O,kCAI5E,SAAqB7hC,EAAeoxL,GAClC,IACMC,EADSx6N,KAAK6oH,OACOnsB,KAAKjkE,UAAU0Q,GAE1C,IAAKqxL,EAAYpoL,aAAeooL,EAAYpoL,WAAWpyC,KAAKua,MAC1D,OAAO5a,QAAQV,UAGjB,IAAM4qD,EAAY2wK,EAAYpoL,WAAWpyC,KAAKua,MAE9C,OADAggN,EAAex2K,SAAwB1jD,IAAlBwpD,EAAU9F,IAAoB8F,EAAU9F,IAAM,IAC5DpkD,QAAQV,c,KAWb63N,E,WACJ,WAAYjuG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAW2B,uB,mDAGzB,SAAgB/vL,GACd,IACMqxL,EADSx6N,KAAK6oH,OACOnsB,KAAKjkE,UAAU0Q,GAC1C,OAAKqxL,EAAYpoL,YAAeooL,EAAYpoL,WAAWpyC,KAAKua,MACrDywD,uBADmE,O,kCAI5E,SAAqB7hC,EAAeoxL,GAClC,IAAM1xG,EAAS7oH,KAAK6oH,OACd2xG,EAAc3xG,EAAOnsB,KAAKjkE,UAAU0Q,GAE1C,IAAKqxL,EAAYpoL,aAAeooL,EAAYpoL,WAAWpyC,KAAKua,MAC1D,OAAO5a,QAAQV,UAGjB,IAAMmlI,EAAU,GACVv6E,EAAY2wK,EAAYpoL,WAAWpyC,KAAKua,MAC9CggN,EAAe55L,uBAAiDtgC,IAA7BwpD,EAAU2xK,eAA+B3xK,EAAU2xK,eAAiB,OAErEn7N,IAA9BwpD,EAAU4xK,iBACZr3F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,uBAAwB1wK,EAAU4xK,kBAGtF,IAAMnoI,EAAazpC,EAAU6xK,qBAAuB,CAAC,EAAG,EAAG,GAS3D,OARAnB,EAAe35L,aAAe,IAAI2D,QAAM+uD,EAAW,GAAIA,EAAW,GAAIA,EAAW,SAE1CjzF,IAAnCwpD,EAAU8xK,sBACZv3F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,kBAAmB1wK,EAAU8xK,sBAAsB/7N,MAAK,SAAUygB,GAClHA,EAAQnE,SAAWxR,mBAIhB/K,QAAQ0sJ,IAAIjoB,O,KAWjBqyF,E,WACJ,WAAY5tG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAW8B,mB,+CAGzB,SAAYuC,GACV,IAAM/yG,EAAS7oH,KAAK6oH,OACdnsB,EAAOmsB,EAAOnsB,KACdm/H,EAAan/H,EAAKr/E,SAASu+M,GAEjC,IAAKC,EAAWzpL,aAAeypL,EAAWzpL,WAAWpyC,KAAKua,MACxD,OAAO,KAGT,IAAMsvC,EAAYgyK,EAAWzpL,WAAWpyC,KAAKua,MACvC2C,EAASw/E,EAAKh/E,OAAOmsC,EAAU3sC,QAC/BkqG,EAASyB,EAAO7oG,QAAQq2M,WAE9B,IAAKjvG,EAAQ,CACX,GAAI1qB,EAAKs7H,oBAAsBt7H,EAAKs7H,mBAAmB3qN,QAAQrN,KAAKua,OAAS,EAC3E,MAAM,IAAI/G,MAAM,+EAGhB,OAAO,KAIX,OAAOq1G,EAAOizG,iBAAiBF,EAAc1+M,EAAQkqG,O,KAWnDsvG,E,WACJ,WAAY7tG,GAAQ,oBAClB7oH,KAAK6oH,OAASA,EACd7oH,KAAKua,KAAOg9M,EAAW+B,iBACvBt5N,KAAK+7N,YAAc,K,+CAGrB,SAAYH,GACV,IAAMrhN,EAAOva,KAAKua,KACZsuG,EAAS7oH,KAAK6oH,OACdnsB,EAAOmsB,EAAOnsB,KACdm/H,EAAan/H,EAAKr/E,SAASu+M,GAEjC,IAAKC,EAAWzpL,aAAeypL,EAAWzpL,WAAW73B,GACnD,OAAO,KAGT,IAAMsvC,EAAYgyK,EAAWzpL,WAAW73B,GAClC2C,EAASw/E,EAAKh/E,OAAOmsC,EAAU3sC,QACjCkqG,EAASyB,EAAOmzG,cAEpB,GAAI9+M,EAAO++M,IAAK,CACd,IAAMr3E,EAAU/7B,EAAO7oG,QAAQ0nG,QAAQJ,WAAWpqG,EAAO++M,KACzC,OAAZr3E,IAAkBx9B,EAASw9B,GAGjC,OAAO5kJ,KAAKk8N,gBAAgBt8N,MAAK,SAAUm8N,GACzC,GAAIA,EAAa,OAAOlzG,EAAOizG,iBAAiBF,EAAc1+M,EAAQkqG,GAEtE,GAAI1qB,EAAKs7H,oBAAsBt7H,EAAKs7H,mBAAmB3qN,QAAQkN,IAAS,EACtE,MAAM,IAAI/G,MAAM,6DAIlB,OAAOq1G,EAAOiB,YAAY8xG,Q,2BAI9B,WAcE,OAbK57N,KAAK+7N,cACR/7N,KAAK+7N,YAAc,IAAIp8N,SAAQ,SAAUV,GACvC,IAAMyb,EAAQ,IAAI4pK,MAGlB5pK,EAAME,IAAM,kFAEZF,EAAMyhN,OAASzhN,EAAM0hN,QAAU,WAC7Bn9N,EAAyB,IAAjByb,EAAMM,aAKbhb,KAAK+7N,gB,KAWV/E,E,WACJ,WAAYnuG,GAAQ,oBAClB7oH,KAAKua,KAAOg9M,EAAWgC,wBACvBv5N,KAAK6oH,OAASA,E,kDAGhB,SAAer7G,GACb,IAAMkvF,EAAO18F,KAAK6oH,OAAOnsB,KACnB2/H,EAAa3/H,EAAK4/H,YAAY9uN,GAEpC,GAAI6uN,EAAWjqL,YAAciqL,EAAWjqL,WAAWpyC,KAAKua,MAAO,CAC7D,IAAMgiN,EAAeF,EAAWjqL,WAAWpyC,KAAKua,MAC1CF,EAASra,KAAK6oH,OAAO2zG,cAAc,SAAUD,EAAaliN,QAC1DoiN,EAAUz8N,KAAK6oH,OAAO7oG,QAAQs2M,eAEpC,IAAKmG,IAAYA,EAAQC,UAAW,CAClC,GAAIhgI,EAAKs7H,oBAAsBt7H,EAAKs7H,mBAAmB3qN,QAAQrN,KAAKua,OAAS,EAC3E,MAAM,IAAI/G,MAAM,sFAGhB,OAAO,KAIX,OAAO7T,QAAQ0sJ,IAAI,CAAChyI,EAAQoiN,EAAQE,QAAQ/8N,MAAK,SAAUuwH,GACzD,IAAMysG,EAAaL,EAAaK,YAAc,EACxCC,EAAaN,EAAaM,YAAc,EACxCh8M,EAAQ07M,EAAa17M,MACrBmsB,EAASuvL,EAAaO,WACtBlpJ,EAAS,IAAI6nC,YAAY56F,EAAQmsB,GACjC9vB,EAAS,IAAItD,WAAWu2G,EAAI,GAAIysG,EAAYC,GAElD,OADAJ,EAAQM,iBAAiB,IAAInjN,WAAWg6D,GAAS/yD,EAAOmsB,EAAQ9vB,EAAQq/M,EAAa7uK,KAAM6uK,EAAa71J,QACjGkN,KAGT,OAAO,S,KAQP0jJ,EAAgC,OAEhC0F,EACE,WADFA,EAEC,QAGDvF,EACJ,WAAYn5M,GAAM,oBAChBte,KAAKua,KAAOg9M,EAAWC,gBACvBx3N,KAAKm3N,QAAU,KACfn3N,KAAKg+I,KAAO,KACZ,IAAMi/E,EAAa,IAAIthH,SAASr9F,EAAM,EAXH,IAkBnC,GANAte,KAAKgpH,OAAS,CACZk0G,MAAOpwG,cAAYuqG,WAAW,IAAIz9M,WAAW0E,EAAKzQ,MAAM,EAAG,KAC3DgP,QAASogN,EAAWE,UAAU,GAAG,GACjCnvN,OAAQivN,EAAWE,UAAU,GAAG,IAG9Bn9N,KAAKgpH,OAAOk0G,QAAU5F,EACxB,MAAM,IAAI9jN,MAAM,qDACX,GAAIxT,KAAKgpH,OAAOnsG,QAAU,EAC/B,MAAM,IAAIrJ,MAAM,kDAOlB,IAJA,IAAM4pN,EAAsBp9N,KAAKgpH,OAAOh7G,OAxBL,GAyB7BqvN,EAAY,IAAI1hH,SAASr9F,EAzBI,IA0B/Bg/M,EAAa,EAEVA,EAAaF,GAAqB,CACvC,IAAMG,EAAcF,EAAUF,UAAUG,GAAY,GACpDA,GAAc,EACd,IAAME,EAAYH,EAAUF,UAAUG,GAAY,GAGlD,GAFAA,GAAc,EAEVE,IAAcR,EAAmC,CACnD,IAAMS,EAAe,IAAI7jN,WAAW0E,EAnCL,GAmC4Cg/M,EAAYC,GACvFv9N,KAAKm3N,QAAUrqG,cAAYuqG,WAAWoG,QACjC,GAAID,IAAcR,EAAkC,CACzD,IAAMJ,EAtCyB,GAsCqBU,EACpDt9N,KAAKg+I,KAAO1/H,EAAKzQ,MAAM+uN,EAAYA,EAAaW,GAIlDD,GAAcC,EAGhB,GAAqB,OAAjBv9N,KAAKm3N,QACP,MAAM,IAAI3jN,MAAM,8CAYhB8kN,E,WACJ,WAAY57H,EAAM05H,GAChB,GAD6B,qBACxBA,EACH,MAAM,IAAI5iN,MAAM,uDAGlBxT,KAAKua,KAAOg9M,EAAWc,2BACvBr4N,KAAK08F,KAAOA,EACZ18F,KAAKo2N,YAAcA,EACnBp2N,KAAKo2N,YAAY5pE,U,mDAGnB,SAAgBhH,EAAW38B,GACzB,IAAMnsB,EAAO18F,KAAK08F,KACZ05H,EAAcp2N,KAAKo2N,YACnBsH,EAAkBl4E,EAAUpzG,WAAWpyC,KAAKua,MAAM8hN,WAClDsB,EAAmBn4E,EAAUpzG,WAAWpyC,KAAKua,MAAMquB,WACnDg1L,EAAoB,GACpBC,EAAyB,GACzBC,EAAmB,GAEzB,IAAK,IAAMzzC,KAAiBszC,EAAkB,CAC5C,IAAMI,EAAqBC,EAAW3zC,IAAkBA,EAAc/kJ,cACtEs4L,EAAkBG,GAAsBJ,EAAiBtzC,GAG3D,IAAK,IAAMA,KAAiB7kC,EAAU58G,WAAY,CAChD,IAAMm1L,EAAqBC,EAAW3zC,IAAkBA,EAAc/kJ,cAEtE,QAAwCjlC,IAApCs9N,EAAiBtzC,GAA8B,CACjD,IAAM4zC,EAAcvhI,EAAKwhI,UAAU14E,EAAU58G,WAAWyhJ,IAClD8zC,EAAgBC,EAAsBH,EAAYE,eACxDL,EAAiBC,GAAsBI,EACvCN,EAAuBE,IAAiD,IAA3BE,EAAY73L,YAI7D,OAAOyiF,EAAO2zG,cAAc,aAAckB,GAAiB99N,MAAK,SAAUy8N,GACxE,OAAO,IAAI18N,SAAQ,SAAUV,GAC3Bm3N,EAAYiI,gBAAgBhC,GAAY,SAAUxyM,GAChD,IAAK,IAAMwgK,KAAiBxgK,EAAS+e,WAAY,CAC/C,IAAM5zB,EAAY6U,EAAS+e,WAAWyhJ,GAChCjkJ,EAAay3L,EAAuBxzC,QACvBhqL,IAAf+lC,IAA0BpxB,EAAUoxB,WAAaA,GAGvDnnC,EAAQ4qB,KACP+zM,EAAmBE,a,KAaxBtF,E,WACJ,aAAc,oBACZx4N,KAAKua,KAAOg9M,EAAWgB,sB,iDAGzB,SAAcl4M,EAAS2jE,GAKrB,YAJ2B3jF,IAAvB2jF,EAAUs6I,UACZlrN,QAAQC,KAAK,wCAA0CrT,KAAKua,KAAO,uCAG5Cla,IAArB2jF,EAAUjvE,aAA+C1U,IAAvB2jF,EAAUhrE,eAA8C3Y,IAApB2jF,EAAUhxD,QAKpF3S,EAAUA,EAAQK,aAEOrgB,IAArB2jF,EAAUjvE,QACZsL,EAAQtL,OAAOsE,UAAU2qE,EAAUjvE,aAGV1U,IAAvB2jF,EAAUhrE,WACZqH,EAAQrH,SAAWgrE,EAAUhrE,eAGP3Y,IAApB2jF,EAAUhxD,OACZ3S,EAAQ9D,OAAOlD,UAAU2qE,EAAUhxD,OAGrC3S,EAAQ+oB,aAAc,GAjBb/oB,M,KAmCPk+M,E,kDACJ,WAAY5pK,GAAQ,2BAClB,gBACK6pK,kCAAmC,EAExC,IAAMC,EAA+B,CAAC,yBAA0B,mCAAmC,UAAU37J,KAAK,MAC5G47J,EAAiC,CAAC,2BAA4B,qCAAqC,UAAU57J,KAAK,MAClH67J,EAA2B,CAAC,kCAAmC,yBAA0B,wDAAwD,mDAAmD,oFAAoF,yCAAyC,UAAU77J,KAAK,MAChV87J,EAA6B,CAAC,uCAAwC,2BAA4B,4DAA4D,kFAAkF,2CAA2C,UAAU97J,KAAK,MAC1S+7J,EAA6B,CAAC,6BAA8B,0HAA2H,kFAAmF,+DAAgE,8HAA+H,mDAAoD,uEAAwE,4CAA4C/7J,KAAK,MACtnBpxB,EAAW,CACfhR,SAAU,CACRlhC,OAAO,IAAI+kC,SAAQE,OAAO,WAE5Bq6L,WAAY,CACVt/N,MAAO,GAET8iC,YAAa,CACX9iC,MAAO,MAETu/N,cAAe,CACbv/N,MAAO,OApBO,OAuBlB,EAAKw/N,eAAiBttL,EAEtB,EAAK9R,gBAAkB,SAAUiW,GAC/B,IAAK,IAAMopL,KAAevtL,EACxBmE,EAAOnE,SAASutL,GAAevtL,EAASutL,GAG1CppL,EAAO5D,eAAiB4D,EAAO5D,eAAeuxB,QAAQ,2BAA4B,0BAA0BA,QAAQ,2BAA4B,6BAA6BA,QAAQ,wCAAyCi7J,GAA8Bj7J,QAAQ,wCAAyCk7J,GAAgCl7J,QAAQ,mCAAoCm7J,GAA0Bn7J,QAAQ,mCAAoCo7J,GAA4Bp7J,QAAQ,sCAAuCq7J,IAG5gBvuN,OAAO6lB,iBAAP7lB,OAAA,IAAAA,CAAA,GAA8B,CAC5BowB,SAAU,CACRoZ,IAAK,WACH,OAAOpI,EAAShR,SAASlhC,OAE3B2T,IAAK,SAAUO,GACbg+B,EAAShR,SAASlhC,MAAQkU,IAG9B4uB,YAAa,CACXwX,IAAK,WACH,OAAOpI,EAASpP,YAAY9iC,OAE9B2T,IAAK,SAAUO,GACbg+B,EAASpP,YAAY9iC,MAAQkU,EAEzBA,EACF1T,KAAK+xC,QAAQmtL,gBAAkB,UAExBl/N,KAAK+xC,QAAQmtL,kBAI1BJ,WAAY,CACVhlL,IAAK,WACH,OAAOpI,EAASotL,WAAWt/N,OAE7B2T,IAAK,SAAUO,GACbg+B,EAASotL,WAAWt/N,MAAQkU,IAGhCqrN,cAAe,CACbjlL,IAAK,WACH,OAAOpI,EAASqtL,cAAcv/N,OAEhC2T,IAAK,SAAUO,GACbg+B,EAASqtL,cAAcv/N,MAAQkU,EAE3BA,GACF1T,KAAK+xC,QAAQotL,kBAAoB,GACjCn/N,KAAK+xC,QAAQqtL,OAAS,YAEfp/N,KAAK+xC,QAAQotL,yBACbn/N,KAAK+xC,QAAQqtL,mBAKrB,EAAKh/L,iBACL,EAAKD,iBACL,EAAKiC,oBACL,EAAKD,aACZ,EAAKoE,UAAUouB,GArFG,E,wCAwFpB,SAAKz3C,GAUH,OATA,4DAAWA,GACXld,KAAKsiC,YAAcplB,EAAOolB,YAC1BtiC,KAAK0gC,SAASzjB,KAAKC,EAAOwjB,UAC1B1gC,KAAK++N,cAAgB7hN,EAAO6hN,cAC5B/+N,KAAK8+N,WAAa5hN,EAAO4hN,kBAClB9+N,KAAKogC,iBACLpgC,KAAKmgC,iBACLngC,KAAKoiC,oBACLpiC,KAAKmiC,aACLniC,S,GAnG8B+qE,wBAwGnCqtJ,E,WACJ,aAAc,oBACZp4N,KAAKua,KAAOg9M,EAAWY,sCACvBn4N,KAAKq/N,yBAA2B,CAAC,QAAS,MAAO,WAAY,oBAAqB,QAAS,iBAAkB,WAAY,oBAAqB,cAAe,UAAW,YAAa,YAAa,gBAAiB,kBAAmB,oBAAqB,mBAAoB,cAAe,WAAY,gBAAiB,aAAc,WAAY,SAAU,kBAAmB,mB,mDAGpX,WACE,OAAOd,I,0BAGT,SAAahE,EAAgBC,EAAa3xG,GACxC,IAAMy2G,EAAwB9E,EAAYpoL,WAAWpyC,KAAKua,MAC1DggN,EAAet6L,MAAQ,IAAIsE,QAAM,EAAK,EAAK,GAC3Cg2L,EAAe58L,QAAU,EACzB,IAAMymG,EAAU,GAEhB,GAAIxmH,MAAMC,QAAQyhN,EAAsBC,eAAgB,CACtD,IAAM3xN,EAAQ0xN,EAAsBC,cACpChF,EAAet6L,MAAM5mB,UAAUzL,GAC/B2sN,EAAe58L,QAAU/vB,EAAM,GAejC,QAZ6CvN,IAAzCi/N,EAAsBE,gBACxBp7F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,MAAO+E,EAAsBE,iBAGjFjF,EAAe/5L,SAAW,IAAI+D,QAAM,EAAK,EAAK,GAC9Cg2L,EAAeuE,gBAAwDz+N,IAA3Ci/N,EAAsBG,iBAAiCH,EAAsBG,iBAAmB,EAC5HlF,EAAe75L,SAAW,IAAI6D,QAAM,EAAK,EAAK,GAE1C3mB,MAAMC,QAAQyhN,EAAsB9D,iBACtCjB,EAAe75L,SAASrnB,UAAUimN,EAAsB9D,qBAGFn7N,IAApDi/N,EAAsBI,0BAAyC,CACjE,IAAMC,EAAkBL,EAAsBI,0BAC9Ct7F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,gBAAiBoF,IACnEv7F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,cAAeoF,IAGnE,OAAOhgO,QAAQ0sJ,IAAIjoB,K,4BAGrB,SAAem2F,GACb,IAAMpgM,EAAW,IAAIokM,EAA2BhE,GA2BhD,OA1BApgM,EAASoD,KAAM,EACfpD,EAAS8F,MAAQs6L,EAAet6L,MAChC9F,EAASiH,SAA6B/gC,IAAvBk6N,EAAen5L,IAAoB,KAAOm5L,EAAen5L,IACxEjH,EAASoH,SAAW,KACpBpH,EAASqH,kBAAoB,EAC7BrH,EAASsH,WAAiCphC,IAAzBk6N,EAAe94L,MAAsB,KAAO84L,EAAe94L,MAC5EtH,EAASuH,eAAiB,EAC1BvH,EAASqG,SAAW+5L,EAAe/5L,SACnCrG,EAASsG,kBAAoB,EAC7BtG,EAASkI,iBAA6ChiC,IAA/Bk6N,EAAel4L,YAA4B,KAAOk4L,EAAel4L,YACxFlI,EAASwH,aAAqCthC,IAA3Bk6N,EAAe54L,QAAwB,KAAO44L,EAAe54L,QAChFxH,EAASyH,UAAY,EACrBzH,EAAS0H,eAAyCxhC,IAA7Bk6N,EAAe14L,UAA0B,KAAO04L,EAAe14L,UACpF1H,EAAS2H,cAAgB32B,wBACrBovN,EAAex4L,cAAa5H,EAAS4H,YAAcw4L,EAAex4L,aACtE5H,EAAS6H,gBAAkB,KAC3B7H,EAAS8H,kBAAoB,EAC7B9H,EAAS+H,iBAAmB,EAC5B/H,EAASmI,iBAA6CjiC,IAA/Bk6N,EAAej4L,YAA4B,KAAOi4L,EAAej4L,YACxFnI,EAASuG,SAAW65L,EAAe75L,SACnCvG,EAAS4kM,mBAAiD1+N,IAAjCk6N,EAAewE,cAA8B,KAAOxE,EAAewE,cAC5F5kM,EAAS2kM,WAAavE,EAAeuE,WACrC3kM,EAASmH,SAAW,KACpBnH,EAASsI,YAAmCpiC,IAA1Bk6N,EAAe93L,OAAuB,KAAO83L,EAAe93L,OAC9EtI,EAASwI,gBAAkB,EAC3BxI,EAAS0I,gBAAkB,IACpB1I,M,KAWLu+L,EACJ,aAAc,oBACZ14N,KAAKua,KAAOg9M,EAAWkB,uBAarBmH,E,kDACJ,WAAY/gH,EAAoBC,EAAcC,EAAYT,GAAc,uCAChEO,EAAoBC,EAAcC,EAAYT,G,oDAGtD,SAAiB9wG,GAQf,IALA,IAAMomE,EAAS5zE,KAAKs+G,aACd9jF,EAASx6B,KAAK8+G,aACdlC,EAAY58G,KAAK48G,UACjB7nG,EAASvH,EAAQovG,EAAY,EAAIA,EAE9B9uG,EAAI,EAAGA,IAAM8uG,EAAW9uG,IAC/B8lE,EAAO9lE,GAAK0sB,EAAOzlB,EAASjH,GAG9B,OAAO8lE,M,GAjB8BgrC,eAsBzCghH,EAA2BtqN,UAAUqqG,aAAeigH,EAA2BtqN,UAAUyqG,iBACzF6/G,EAA2BtqN,UAAUmqG,UAAYmgH,EAA2BtqN,UAAUyqG,iBAEtF6/G,EAA2BtqN,UAAUwqG,aAAe,SAAUtkF,EAAI/M,EAAI7e,EAAG8e,GAkBvE,IAjBA,IAAMklD,EAAS5zE,KAAKs+G,aACd9jF,EAASx6B,KAAK8+G,aACd9xE,EAAShtC,KAAK48G,UACdijH,EAAmB,EAAT7yL,EACV8yL,EAAmB,EAAT9yL,EACV8rJ,EAAKpqK,EAAKD,EACV3L,GAAKlT,EAAI6e,GAAMqqK,EACf35E,EAAKr8F,EAAIA,EACTo+F,EAAM/B,EAAKr8F,EACXw+F,EAAU9lF,EAAKskM,EACfv+G,EAAUD,EAAUw+G,EACpBltN,GAAM,EAAIsuG,EAAM,EAAI/B,EACpBl9F,EAAKi/F,EAAM/B,EACXpxF,EAAK,EAAInb,EACToP,EAAKC,EAAKk9F,EAAKr8F,EAGZhV,EAAI,EAAGA,IAAMk/B,EAAQl/B,IAAK,CACjC,IAAM+d,EAAK2O,EAAO+mF,EAAUzzG,EAAIk/B,GAE1B+yL,EAAKvlM,EAAO+mF,EAAUzzG,EAAI+xN,GAAW/mC,EAErChtK,EAAK0O,EAAO8mF,EAAUxzG,EAAIk/B,GAE1BgzL,EAAKxlM,EAAO8mF,EAAUxzG,GAAKgrL,EAEjCllH,EAAO9lE,GAAKigB,EAAKlC,EAAK7J,EAAK+9M,EAAKntN,EAAKkZ,EAAK7J,EAAK+9M,EAGjD,OAAOpsJ,GAWT,IAAMqsJ,EAWI,EAXJA,EAYG,EAZHA,EAaO,EAbPA,EAcQ,EAdRA,EAeO,EAfPA,EAgBY,EAhBZA,EAiBU,EAIV7B,EAAwB,CAC5B8B,KAAMvmN,UACNwmN,KAAMvmN,WACNwmN,KAAMtmN,WACNumN,KAAMtmN,YACNumN,KAAMrmN,YACNsmN,KAAMrmN,cAEFsmN,EAAgB,CACpBC,KAAM17N,gBACN27N,KAAMt7N,eACNu7N,KAAM37N,6BACN47N,KAAMv7N,4BACNw7N,KAAM37N,4BACN47N,KAAMv7N,4BAEFw7N,EAAkB,CACtBC,MAAOn8N,sBACPo8N,MAAOn8N,yBACPo8N,MAAOt8N,kBAEHu8N,EAAmB,CACvBC,OAAQ,EACRC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,IAEF1D,EAAa,CACjB2D,SAAU,WACV1+C,OAAQ,SACR2+C,QAAS,UACTC,WAAY,KACZC,WAAY,MACZC,QAAS,QACTC,UAAW,aACXC,SAAU,aAENC,EAAkB,CACtBlvM,MAAO,QACPmvM,YAAa,WACbnpN,SAAU,aACVu6C,QAAS,yBAEL6uK,EAAgB,CACpBC,iBAAahiO,EAGbiiO,OAAQv4N,oBACRw4N,KAAMz4N,uBAEF04N,EACI,SADJA,EAEE,OAFFA,EAGG,QAIT,SAASx7G,EAAWrpG,EAAKujD,GAEvB,MAAmB,kBAARvjD,GAA4B,KAARA,EAAmB,IAE9C,gBAAgBhD,KAAKumD,IAAS,MAAMvmD,KAAKgD,KAC3CujD,EAAOA,EAAKsC,QAAQ,0BAA2B,OAI7C,mBAAmB7oD,KAAKgD,IAExB,gBAAgBhD,KAAKgD,IAErB,aAAahD,KAAKgD,GAJmBA,EAMlCujD,EAAOvjD,GAuBhB,SAAS8kN,EAA+BC,EAAiBr5M,EAAQs5M,GAE/D,IAAK,IAAMpoN,KAAQooN,EAAUvwL,gBACG/xC,IAA1BqiO,EAAgBnoN,KAClB8O,EAAO2N,SAAS4rM,eAAiBv5M,EAAO2N,SAAS4rM,gBAAkB,GACnEv5M,EAAO2N,SAAS4rM,eAAeroN,GAAQooN,EAAUvwL,WAAW73B,IAUlE,SAASsoN,EAAuBx5M,EAAQy5M,QACfziO,IAAnByiO,EAAQC,SACoB,kBAAnBD,EAAQC,OACjBzyN,OAAOm9B,OAAOpkB,EAAO2N,SAAU8rM,EAAQC,QAEvC3vN,QAAQC,KAAK,sDAAwDyvN,EAAQC,SA0DnF,SAASn0L,GAAmBmH,EAAMitL,GAGhC,GAFAjtL,EAAKnH,0BAEmBvuC,IAApB2iO,EAAQzvK,QACV,IAAK,IAAIzlD,EAAI,EAAGgT,EAAKkiN,EAAQzvK,QAAQvlD,OAAQF,EAAIgT,EAAIhT,IACnDioC,EAAKlH,sBAAsB/gC,GAAKk1N,EAAQzvK,QAAQzlD,GAKpD,GAAIk1N,EAAQD,QAAUnlN,MAAMC,QAAQmlN,EAAQD,OAAOE,aAAc,CAC/D,IAAMA,EAAcD,EAAQD,OAAOE,YAEnC,GAAIltL,EAAKlH,sBAAsB7gC,SAAWi1N,EAAYj1N,OAAQ,CAC5D+nC,EAAKjH,sBAAwB,GAE7B,IAAK,IAAIhhC,EAAI,EAAGgT,EAAKmiN,EAAYj1N,OAAQF,EAAIgT,EAAIhT,IAC/CioC,EAAKjH,sBAAsBm0L,EAAYn1N,IAAMA,OAG/CsF,QAAQC,KAAK,yEAKnB,SAAS6vN,GAAmBC,GAC1B,IAAMC,EAAiBD,EAAa/wL,YAAc+wL,EAAa/wL,WAAWmlL,EAAWc,4BASrF,OANI+K,EACY,SAAWA,EAAe/G,WAAa,IAAM+G,EAAe94L,QAAU,IAAM+4L,GAAoBD,EAAex6L,YAE/Gu6L,EAAa74L,QAAU,IAAM+4L,GAAoBF,EAAav6L,YAAc,IAAMu6L,EAAaz1K,KAMjH,SAAS21K,GAAoBz6L,GAI3B,IAHA,IAAI06L,EAAgB,GACdj2L,EAAO/8B,OAAO+8B,KAAKzE,GAAY4xB,OAE5B1sD,EAAI,EAAGgT,EAAKusB,EAAKr/B,OAAQF,EAAIgT,EAAIhT,IACxCw1N,GAAiBj2L,EAAKv/B,GAAK,IAAM86B,EAAWyE,EAAKv/B,IAAM,IAGzD,OAAOw1N,EAGT,SAASC,GAA4B9vN,GAGnC,OAAQA,GACN,KAAKkG,UACH,OAAO,EAAI,IAEb,KAAKC,WACH,OAAO,EAAI,IAEb,KAAKE,WACH,OAAO,EAAI,MAEb,KAAKC,YACH,OAAO,EAAI,MAEb,QACE,MAAM,IAAIvG,MAAM,sE,IAMhBmkN,G,WACJ,aAAqC,IAAzBj7H,EAAyB,uDAAlB,GAAI18E,EAAc,uDAAJ,GAAI,oBACnChgB,KAAK08F,KAAOA,EACZ18F,KAAKoyC,WAAa,GAClBpyC,KAAKo3N,QAAU,GACfp3N,KAAKggB,QAAUA,EAEfhgB,KAAKu6B,MAAQ,IAAIs+L,EAEjB74N,KAAKwjO,aAAe,IAAI59I,IAExB5lF,KAAKyjO,eAAiB,GAEtBzjO,KAAK0jO,UAAY,CACf5+D,KAAM,GACN00D,KAAM,IAERx5N,KAAK2jO,YAAc,CACjB7+D,KAAM,GACN00D,KAAM,IAERx5N,KAAK4jO,WAAa,CAChB9+D,KAAM,GACN00D,KAAM,IAERx5N,KAAK6jO,aAAe,GAEpB7jO,KAAK8jO,cAAgB,GAGY,qBAAtBh0G,oBAA6E,IAAxC,UAAUn1G,KAAKg+I,UAAUC,WACvE54J,KAAKg8N,cAAgB,IAAInsG,oBAAkB7vH,KAAKggB,QAAQ0nG,SAExD1nH,KAAKg8N,cAAgB,IAAIrxG,gBAAc3qH,KAAKggB,QAAQ0nG,SAGtD1nH,KAAKg8N,cAAcxxG,eAAexqH,KAAKggB,QAAQ2nG,aAC/C3nH,KAAKg8N,cAAc3yG,iBAAiBrpH,KAAKggB,QAAQ8nG,eACjD9nH,KAAK43N,WAAa,IAAI3vG,aAAWjoH,KAAKggB,QAAQ0nG,SAC9C1nH,KAAK43N,WAAWhuG,gBAAgB,eAEC,oBAA7B5pH,KAAKggB,QAAQ2nG,aACf3nH,KAAK43N,WAAWnuG,oBAAmB,G,iDAIvC,SAAcr3E,GACZpyC,KAAKoyC,WAAaA,I,wBAGpB,SAAWglL,GACTp3N,KAAKo3N,QAAUA,I,mBAGjB,SAAMhxG,EAAQE,GACZ,IAAMuC,EAAS7oH,KACT08F,EAAO18F,KAAK08F,KACZtqD,EAAapyC,KAAKoyC,WAExBpyC,KAAKu6B,MAAMu+L,YAEX94N,KAAK+jO,YAAW,SAAUC,GACxB,OAAOA,EAAIC,WAAaD,EAAIC,eAG9BtkO,QAAQ0sJ,IAAIrsJ,KAAK+jO,YAAW,SAAUC,GACpC,OAAOA,EAAIE,YAAcF,EAAIE,iBAC3BtkO,MAAK,WACP,OAAOD,QAAQ0sJ,IAAI,CAACxjC,EAAOs7G,gBAAgB,SAAUt7G,EAAOs7G,gBAAgB,aAAct7G,EAAOs7G,gBAAgB,eAChHvkO,MAAK,SAAU4pM,GAChB,IAAM51H,EAAS,CACb5+B,MAAOw0J,EAAa,GAAG9sG,EAAK1nD,OAAS,GACrCovL,OAAQ56B,EAAa,GACrBzyK,WAAYyyK,EAAa,GACzBnnH,QAASmnH,EAAa,GACtBkuB,MAAOh7H,EAAKg7H,MACZ7uG,OAAQA,EACR7xF,SAAU,IAEZyrM,EAA+BrwL,EAAYwhC,EAAQ8oB,GACnDmmI,EAAuBjvJ,EAAQ8oB,GAC/B/8F,QAAQ0sJ,IAAIxjC,EAAOk7G,YAAW,SAAUC,GACtC,OAAOA,EAAIK,WAAaL,EAAIK,UAAUzwJ,OACpCh0E,MAAK,WACPwmH,EAAOxyC,SAER28C,MAAMjK,K,uBAOX,WAME,IALA,IAAMmzG,EAAWz5N,KAAK08F,KAAKuvD,OAAS,GAC9Bq4E,EAAWtkO,KAAK08F,KAAK6nI,OAAS,GAC9BC,EAAWxkO,KAAK08F,KAAK+nI,QAAU,GAG5B5oI,EAAY,EAAG6oI,EAAaJ,EAASt2N,OAAQ6tF,EAAY6oI,EAAY7oI,IAG5E,IAFA,IAAM/Y,EAASwhJ,EAASzoI,GAAW/Y,OAE1Bh1E,EAAI,EAAGgT,EAAKgiE,EAAO90E,OAAQF,EAAIgT,EAAIhT,IAC1C2rN,EAAS32I,EAAOh1E,IAAIouF,QAAS,EAMjC,IAAK,IAAIw9H,EAAY,EAAGC,EAAaF,EAASzrN,OAAQ0rN,EAAYC,EAAYD,IAAa,CACzF,IAAME,EAAUH,EAASC,QAEJr5N,IAAjBu5N,EAAQ7jL,OACV/1C,KAAK65N,YAAY75N,KAAK0jO,UAAW9J,EAAQ7jL,WAKpB11C,IAAjBu5N,EAAQ+K,OACVH,EAAS5K,EAAQ7jL,MAAMhc,eAAgB,SAIpB15B,IAAnBu5N,EAAQnzM,QACVzmB,KAAK65N,YAAY75N,KAAK2jO,YAAa/J,EAAQnzM,W,yBAejD,SAAY8T,EAAO/sB,QACHnN,IAAVmN,SAEsBnN,IAAtBk6B,EAAMuqI,KAAKt3J,KACb+sB,EAAMuqI,KAAKt3J,GAAS+sB,EAAMi/L,KAAKhsN,GAAS,GAG1C+sB,EAAMuqI,KAAKt3J,Q,yBAKb,SAAY+sB,EAAO/sB,EAAO6b,GACxB,GAAIkR,EAAMuqI,KAAKt3J,IAAU,EAAG,OAAO6b,EACnC,IAAM82H,EAAM92H,EAAO3I,QAEnB,OADAy/H,EAAI5lI,MAAQ,aAAeggB,EAAMi/L,KAAKhsN,KAC/B2yI,I,wBAGT,SAAWumB,GACT,IAAMt0H,EAAa9hC,OAAOkqB,OAAOx6B,KAAKo3N,SACtChlL,EAAW9kC,KAAKtN,MAEhB,IAAK,IAAI8N,EAAI,EAAGA,EAAIskC,EAAWpkC,OAAQF,IAAK,CAC1C,IAAM8lE,EAAS8yF,EAAKt0H,EAAWtkC,IAC/B,GAAI8lE,EAAQ,OAAOA,EAGrB,OAAO,O,wBAGT,SAAW8yF,GACT,IAAMt0H,EAAa9hC,OAAOkqB,OAAOx6B,KAAKo3N,SACtChlL,EAAWqX,QAAQzpD,MAGnB,IAFA,IAAMokI,EAAU,GAEPt2H,EAAI,EAAGA,EAAIskC,EAAWpkC,OAAQF,IAAK,CAC1C,IAAM8lE,EAAS8yF,EAAKt0H,EAAWtkC,IAC3B8lE,GAAQwwD,EAAQ92H,KAAKsmE,GAG3B,OAAOwwD,I,2BAUT,SAAcn3H,EAAMO,GAClB,IAAMy3D,EAAWh4D,EAAO,IAAMO,EAC1BusN,EAAa/5N,KAAKu6B,MAAMuf,IAAImrB,GAEhC,IAAK80J,EAAY,CACf,OAAQ9sN,GACN,IAAK,QACH8sN,EAAa/5N,KAAK4kO,UAAUp3N,GAC5B,MAEF,IAAK,OACHusN,EAAa/5N,KAAK6kO,SAASr3N,GAC3B,MAEF,IAAK,OACHusN,EAAa/5N,KAAK8kO,YAAW,SAAUd,GACrC,OAAOA,EAAIe,UAAYf,EAAIe,SAASv3N,MAEtC,MAEF,IAAK,WACHusN,EAAa/5N,KAAKglO,aAAax3N,GAC/B,MAEF,IAAK,aACHusN,EAAa/5N,KAAK8kO,YAAW,SAAUd,GACrC,OAAOA,EAAIiB,gBAAkBjB,EAAIiB,eAAez3N,MAElD,MAEF,IAAK,SACHusN,EAAa/5N,KAAKklO,WAAW13N,GAC7B,MAEF,IAAK,WACHusN,EAAa/5N,KAAK8kO,YAAW,SAAUd,GACrC,OAAOA,EAAImB,cAAgBnB,EAAImB,aAAa33N,MAE9C,MAEF,IAAK,UACHusN,EAAa/5N,KAAK8kO,YAAW,SAAUd,GACrC,OAAOA,EAAIl6G,aAAek6G,EAAIl6G,YAAYt8G,MAE5C,MAEF,IAAK,OACHusN,EAAa/5N,KAAKolO,SAAS53N,GAC3B,MAEF,IAAK,YACHusN,EAAa/5N,KAAKqlO,cAAc73N,GAChC,MAEF,IAAK,SACHusN,EAAa/5N,KAAKslO,WAAW93N,GAC7B,MAEF,QACE,MAAM,IAAIgG,MAAM,iBAAmBvG,GAGvCjN,KAAKu6B,MAAMnR,IAAI67C,EAAU80J,GAG3B,OAAOA,I,6BAST,SAAgB9sN,GACd,IAAIu8L,EAAexpM,KAAKu6B,MAAMuf,IAAI7sC,GAElC,IAAKu8L,EAAc,CACjB,IAAM3gF,EAAS7oH,KACTulO,EAAOvlO,KAAK08F,KAAKzvF,GAAiB,SAATA,EAAkB,KAAO,OAAS,GACjEu8L,EAAe7pM,QAAQ0sJ,IAAIk5E,EAAKnkM,KAAI,SAAU2jH,EAAKv3I,GACjD,OAAOq7G,EAAO2zG,cAAcvvN,EAAMO,OAEpCxN,KAAKu6B,MAAMnR,IAAInc,EAAMu8L,GAGvB,OAAOA,I,wBAST,SAAWg8B,GACT,IAAMC,EAAYzlO,KAAK08F,KAAK9iD,QAAQ4rL,GAC9Bp+G,EAASpnH,KAAK43N,WAEpB,GAAI6N,EAAUx4N,MAA2B,gBAAnBw4N,EAAUx4N,KAC9B,MAAM,IAAIuG,MAAM,qBAAuBiyN,EAAUx4N,KAAO,kCAI1D,QAAsB5M,IAAlBolO,EAAUxJ,KAAqC,IAAhBuJ,EACjC,OAAO7lO,QAAQV,QAAQe,KAAKoyC,WAAWmlL,EAAWC,iBAAiBx5E,MAGrE,IAAMh+H,EAAUhgB,KAAKggB,QACrB,OAAO,IAAIrgB,SAAQ,SAAUV,EAASC,GACpCkoH,EAAOW,KAAKf,EAAWy+G,EAAUxJ,IAAKj8M,EAAQkhD,MAAOjiE,OAASoB,GAAW,WACvEnB,EAAO,IAAIsU,MAAM,4CAA8CiyN,EAAUxJ,IAAM,e,4BAWrF,SAAeyB,GACb,IAAMgI,EAAgB1lO,KAAK08F,KAAK4/H,YAAYoB,GAC5C,OAAO19N,KAAKw8N,cAAc,SAAUkJ,EAAcrrN,QAAQza,MAAK,SAAUya,GACvE,IAAMwiN,EAAa6I,EAAc7I,YAAc,EACzCD,EAAa8I,EAAc9I,YAAc,EAC/C,OAAOviN,EAAOxM,MAAM+uN,EAAYA,EAAaC,Q,0BAUjD,SAAa8I,GACX,IAAM98G,EAAS7oH,KACT08F,EAAO18F,KAAK08F,KACZuhI,EAAcj+N,KAAK08F,KAAKwhI,UAAUyH,GAExC,QAA+BtlO,IAA3B49N,EAAY5B,iBAAmDh8N,IAAvB49N,EAAY2H,OAItD,OAAOjmO,QAAQV,QAAQ,MAGzB,IAAM4mO,EAAqB,GAa3B,YAX+BxlO,IAA3B49N,EAAY5B,WACdwJ,EAAmBv4N,KAAKtN,KAAKw8N,cAAc,aAAcyB,EAAY5B,aAErEwJ,EAAmBv4N,KAAK,WAGCjN,IAAvB49N,EAAY2H,SACdC,EAAmBv4N,KAAKtN,KAAKw8N,cAAc,aAAcyB,EAAY2H,OAAOt7L,QAAQ+xL,aACpFwJ,EAAmBv4N,KAAKtN,KAAKw8N,cAAc,aAAcyB,EAAY2H,OAAOprM,OAAO6hM,cAG9E18N,QAAQ0sJ,IAAIw5E,GAAoBjmO,MAAK,SAAU08N,GACpD,IASI1uN,EAAOggH,EATLyuG,EAAaC,EAAY,GACzB11L,EAAWu6L,EAAiBlD,EAAYhxN,MACxC64N,EAAa1H,EAAsBH,EAAYE,eAE/C4H,EAAeD,EAAWtrL,kBAC1BwrL,EAAYD,EAAen/L,EAC3Bg2L,EAAaqB,EAAYrB,YAAc,EACvCE,OAAwCz8N,IAA3B49N,EAAY5B,WAA2B3/H,EAAK4/H,YAAY2B,EAAY5B,YAAYS,gBAAaz8N,EAC1G+lC,GAAwC,IAA3B63L,EAAY73L,WAG/B,GAAI02L,GAAcA,IAAekJ,EAAW,CAG1C,IAAMC,EAAU73N,KAAKgC,MAAMwsN,EAAaE,GAClCoJ,EAAa,qBAAuBjI,EAAY5B,WAAa,IAAM4B,EAAYE,cAAgB,IAAM8H,EAAU,IAAMhI,EAAYp9M,MACnIk4E,EAAK8vB,EAAOtuF,MAAMuf,IAAIosL,GAErBntI,IACHnrF,EAAQ,IAAIk4N,EAAWzJ,EAAY4J,EAAUnJ,EAAYmB,EAAYp9M,MAAQi8M,EAAaiJ,GAE1FhtI,EAAK,IAAIH,oBAAkBhrF,EAAOkvN,EAAaiJ,GAC/Cl9G,EAAOtuF,MAAMnR,IAAI88M,EAAYntI,IAG/B60B,EAAkB,IAAIz0B,6BAA2BJ,EAAInyD,EAAUg2L,EAAaE,EAAaiJ,EAAc3/L,QAGrGx4B,EADiB,OAAfyuN,EACM,IAAIyJ,EAAW7H,EAAYp9M,MAAQ+lB,GAEnC,IAAIk/L,EAAWzJ,EAAYO,EAAYqB,EAAYp9M,MAAQ+lB,GAGrEgnF,EAAkB,IAAIjnF,kBAAgB/4B,EAAOg5B,EAAUR,GAIzD,QAA2B/lC,IAAvB49N,EAAY2H,OAAsB,CACpC,IAAMO,EAAkBhF,EAAiBC,OACnCgF,EAAoBhI,EAAsBH,EAAY2H,OAAOt7L,QAAQ6zL,eACrEkI,EAAoBpI,EAAY2H,OAAOt7L,QAAQsyL,YAAc,EAC7D0J,EAAmBrI,EAAY2H,OAAOprM,OAAOoiM,YAAc,EAC3D2J,EAAgB,IAAIH,EAAkB9J,EAAY,GAAI+J,EAAmBpI,EAAY2H,OAAO/kN,MAAQslN,GACpGK,EAAe,IAAIV,EAAWxJ,EAAY,GAAIgK,EAAkBrI,EAAY2H,OAAO/kN,MAAQ+lB,GAE9E,OAAfy1L,IAEFzuG,EAAkB,IAAIjnF,kBAAgBinF,EAAgBhgH,MAAMC,QAAS+/G,EAAgBhnF,SAAUgnF,EAAgBxnF,aAGjH,IAAK,IAAIt4B,EAAI,EAAGgT,EAAKylN,EAAcv4N,OAAQF,EAAIgT,EAAIhT,IAAK,CACtD,IAAMN,EAAQ+4N,EAAcz4N,GAK5B,GAJA8/G,EAAgB64G,KAAKj5N,EAAOg5N,EAAa14N,EAAI84B,IACzCA,GAAY,GAAGgnF,EAAgB84G,KAAKl5N,EAAOg5N,EAAa14N,EAAI84B,EAAW,IACvEA,GAAY,GAAGgnF,EAAgB+4G,KAAKn5N,EAAOg5N,EAAa14N,EAAI84B,EAAW,IACvEA,GAAY,GAAGgnF,EAAgBg5G,KAAKp5N,EAAOg5N,EAAa14N,EAAI84B,EAAW,IACvEA,GAAY,EAAG,MAAM,IAAIpzB,MAAM,sEAIvC,OAAOo6G,O,yBAUX,SAAYguG,GACV,IAAMl/H,EAAO18F,KAAK08F,KACZ18E,EAAUhgB,KAAKggB,QACf67M,EAAan/H,EAAKr/E,SAASu+M,GAC3B1+M,EAASw/E,EAAKh/E,OAAOm+M,EAAW3+M,QAClCkqG,EAASpnH,KAAKg8N,cAElB,GAAI9+M,EAAO++M,IAAK,CACd,IAAMr3E,EAAU5kI,EAAQ0nG,QAAQJ,WAAWpqG,EAAO++M,KAClC,OAAZr3E,IAAkBx9B,EAASw9B,GAGjC,OAAO5kJ,KAAK87N,iBAAiBF,EAAc1+M,EAAQkqG,K,8BAGrD,SAAiBw0G,EAAc1+M,EAAQkqG,GACrC,IAAMyB,EAAS7oH,KACT08F,EAAO18F,KAAK08F,KACZ18E,EAAUhgB,KAAKggB,QACf67M,EAAan/H,EAAKr/E,SAASu+M,GAC3B32J,GAAY/nD,EAAO++M,KAAO/+M,EAAOm/M,YAAc,IAAMR,EAAWgL,QAEtE,GAAI7mO,KAAK6jO,aAAa5+J,GAEpB,OAAOjlE,KAAK6jO,aAAa5+J,GAG3B,IAAMsgH,EAAMxlL,KAAKwlL,KAAOxlL,KAAK+mO,UACzBC,EAAY7pN,EAAO++M,KAAO,GAC1B+K,GAAc,EACdC,GAAW,EACTC,EAASH,EAAUpsE,OAAO,kBAAoB,GAAgD,IAA3CosE,EAAUpsE,OAAO,sBAG1E,IAFwB,eAApBz9I,EAAOmrG,UAA6B6+G,KAAQD,GAAW,QAEjC5mO,IAAtB6c,EAAOm/M,WAET0K,EAAYl+G,EAAO2zG,cAAc,aAAct/M,EAAOm/M,YAAYz8N,MAAK,SAAUy8N,GAC/E,GAAwB,cAApBn/M,EAAOmrG,SAA0B,CAOnC,IAAM8+G,EAAY,IAAIxrH,SAAS0gH,EAAY,GAAI,GAAG+K,SAAS,GAAG,GAC9DH,EAAyB,IAAdE,GAAiC,IAAdA,GAAiC,IAAdA,EAGnDH,GAAc,EACd,IAAM52G,EAAO,IAAIxH,KAAK,CAACyzG,GAAa,CAClCpvN,KAAMiQ,EAAOmrG,WAGf,OADA0+G,EAAYxhD,EAAIC,gBAAgBp1D,WAG7B,QAAmB/vH,IAAf6c,EAAO++M,IAChB,MAAM,IAAIzoN,MAAM,2BAA6BooN,EAAe,kCAG9D,IAAM56D,EAAUrhK,QAAQV,QAAQ8nO,GAAWnnO,MAAK,SAAUmnO,GACxD,OAAO,IAAIpnO,SAAQ,SAAUV,EAASC,GACpC,IAAIknH,EAASnnH,GAEsB,IAA/BmoH,EAAOoJ,sBACTpK,EAAS,SAAUkK,GACjB,IAAMjwG,EAAU,IAAI7E,UAAQ80G,GAC5BjwG,EAAQ+oB,aAAc,EACtBnqC,EAAQohB,KAIZ+mG,EAAOW,KAAKf,EAAW+/G,EAAW/mN,EAAQkhD,MAAOklD,OAAQ/lH,EAAWnB,SAErEU,MAAK,SAAUygB,IAEI,IAAhB2mN,GACFzhD,EAAIK,gBAAgBmhD,GAGtB1mN,EAAQ1D,OAAQ,EACZk/M,EAAWthN,OAAM8F,EAAQ9F,KAAOshN,EAAWthN,MAE1C0sN,IAAU5mN,EAAQrE,OAAS1V,aAChC,IACMugO,GADWnqI,EAAK2qI,UAAY,IACTxL,EAAWgL,UAAY,GAShD,OARAxmN,EAAQvE,UAAY0kN,EAAcqG,EAAQ/qN,YAAc1W,eACxDib,EAAQtE,UAAYykN,EAAcqG,EAAQ9qN,YAAcxW,2BACxD8a,EAAQzE,MAAQmlN,EAAgB8F,EAAQjrN,QAAUhX,iBAClDyb,EAAQxE,MAAQklN,EAAgB8F,EAAQhrN,QAAUjX,iBAClDikH,EAAO26G,aAAarwN,IAAIkN,EAAS,CAC/BpT,KAAM,WACNO,MAAOouN,IAEFv7M,KACNkwG,OAAM,WAEP,OADAn9G,QAAQ3T,MAAM,0CAA2CsnO,GAClD,QAGT,OADA/mO,KAAK6jO,aAAa5+J,GAAY+7F,EACvBA,I,2BAWT,SAAcu5D,EAAgB+M,EAASC,GACrC,IAAM1+G,EAAS7oH,KACf,OAAOA,KAAKw8N,cAAc,UAAW+K,EAAO/5N,OAAO5N,MAAK,SAAUygB,GAOhE,QAJwBhgB,IAApBknO,EAAOjJ,UAA6C,GAAnBiJ,EAAOjJ,UAA+B,UAAZgJ,GAA0C,GAAnBC,EAAOjJ,UAC3FlrN,QAAQC,KAAK,mCAAqCk0N,EAAOjJ,SAAW,gBAAkBgJ,EAAU,uBAG9Fz+G,EAAOz2E,WAAWmlL,EAAWgB,uBAAwB,CACvD,IAAMv0I,OAAkC3jF,IAAtBknO,EAAOn1L,WAA2Bm1L,EAAOn1L,WAAWmlL,EAAWgB,4BAAyBl4N,EAE1G,GAAI2jF,EAAW,CACb,IAAMwjJ,EAAgB3+G,EAAO26G,aAAa1pL,IAAIz5B,GAC9CA,EAAUwoG,EAAOz2E,WAAWmlL,EAAWgB,uBAAuBkP,cAAcpnN,EAAS2jE,GACrF6kC,EAAO26G,aAAarwN,IAAIkN,EAASmnN,IAKrC,OADAjN,EAAe+M,GAAWjnN,EACnBA,O,iCAaX,SAAoB01B,GAClB,IAAMlsB,EAAWksB,EAAKlsB,SAClBsQ,EAAW4b,EAAK5b,SACdutM,OAAoDrnO,IAAhCwpB,EAAS+e,WAAWU,QACxCq+L,OAAgDtnO,IAA9BwpB,EAAS+e,WAAW3I,MACtC2nM,OAAgDvnO,IAA/BwpB,EAAS+e,WAAWhhB,OAE3C,GAAImuB,EAAKnc,SAAU,CACjB,IAAMqrC,EAAW,kBAAoB9qC,EAAS/d,KAC1CyrN,EAAiB7nO,KAAKu6B,MAAMuf,IAAImrB,GAE/B4iK,IACHA,EAAiB,IAAIz8J,iBACrB9tC,WAAShoB,UAAU2H,KAAKhP,KAAK45N,EAAgB1tM,GAC7C0tM,EAAe5nM,MAAMhjB,KAAKkd,EAAS8F,OACnC4nM,EAAezmM,IAAMjH,EAASiH,IAC9BymM,EAAexkM,iBAAkB,EAEjCrjC,KAAKu6B,MAAMnR,IAAI67C,EAAU4iK,IAG3B1tM,EAAW0tM,OACN,GAAI9xL,EAAKpc,OAAQ,CACtB,IAAMsrC,EAAW,qBAAuB9qC,EAAS/d,KAC7C0rN,EAAe9nO,KAAKu6B,MAAMuf,IAAImrB,GAE7B6iK,IACHA,EAAe,IAAI58J,oBACnB5tC,WAAShoB,UAAU2H,KAAKhP,KAAK65N,EAAc3tM,GAC3C2tM,EAAa7nM,MAAMhjB,KAAKkd,EAAS8F,OACjCjgC,KAAKu6B,MAAMnR,IAAI67C,EAAU6iK,IAG3B3tM,EAAW2tM,EAIb,GAAIJ,GAAqBC,GAAmBC,EAAgB,CAC1D,IAAI3iK,EAAW,kBAAoB9qC,EAAS/d,KAAO,IAC/C+d,EAASqkM,mCAAkCv5J,GAAY,wBACvDyiK,IAAmBziK,GAAY,oBAC/B0iK,IAAiB1iK,GAAY,kBAC7B2iK,IAAgB3iK,GAAY,iBAChC,IAAIkP,EAAiBn0E,KAAKu6B,MAAMuf,IAAImrB,GAE/BkP,IACHA,EAAiBh6C,EAASzZ,QACtBinN,IAAiBxzJ,EAAez2C,cAAe,GAC/CkqM,IAAgBzzJ,EAAep0C,aAAc,GAE7C2nM,IAEEvzJ,EAAepyC,cAAaoyC,EAAepyC,YAAYpyB,IAAM,GAC7DwkE,EAAehzC,uBAAsBgzC,EAAehzC,qBAAqBxxB,IAAM,IAGrF3P,KAAKu6B,MAAMnR,IAAI67C,EAAUkP,GACzBn0E,KAAKwjO,aAAarwN,IAAIghE,EAAgBn0E,KAAKwjO,aAAa1pL,IAAI3f,KAG9DA,EAAWg6C,EAITh6C,EAASsH,YAAqCphC,IAA5BwpB,EAAS+e,WAAW7M,UAAgD17B,IAA3BwpB,EAAS+e,WAAW3qB,IACjF4L,EAASkgB,aAAa,MAAOlgB,EAAS+e,WAAW3qB,IAGnD83B,EAAK5b,SAAWA,I,6BAGlB,WAGE,OAAO4wC,yB,0BAST,SAAa5hC,GACX,IAII4+L,EAJEl/G,EAAS7oH,KACT08F,EAAO18F,KAAK08F,KACZtqD,EAAapyC,KAAKoyC,WAClBooL,EAAc99H,EAAKjkE,UAAU0Q,GAE7BoxL,EAAiB,GACjByN,EAAqBxN,EAAYpoL,YAAc,GAC/CgyF,EAAU,GAEhB,GAAI4jG,EAAmBzQ,EAAWY,uCAAwC,CACxE,IAAM8P,EAAc71L,EAAWmlL,EAAWY,uCAC1C4P,EAAeE,EAAYC,kBAC3B9jG,EAAQ92H,KAAK26N,EAAYE,aAAa5N,EAAgBC,EAAa3xG,SAC9D,GAAIm/G,EAAmBzQ,EAAWU,qBAAsB,CAC7D,IAAMmQ,EAAeh2L,EAAWmlL,EAAWU,qBAC3C8P,EAAeK,EAAaF,kBAC5B9jG,EAAQ92H,KAAK86N,EAAaD,aAAa5N,EAAgBC,EAAa3xG,QAC/D,CAGL,IAAM4xG,EAAoBD,EAAYE,sBAAwB,GAI9D,GAHAH,EAAet6L,MAAQ,IAAIsE,QAAM,EAAK,EAAK,GAC3Cg2L,EAAe58L,QAAU,EAErB/f,MAAMC,QAAQ48M,EAAkBE,iBAAkB,CACpD,IAAM/sN,EAAQ6sN,EAAkBE,gBAChCJ,EAAet6L,MAAM5mB,UAAUzL,GAC/B2sN,EAAe58L,QAAU/vB,EAAM,QAGUvN,IAAvCo6N,EAAkBG,kBACpBx2F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,MAAOE,EAAkBG,mBAG7EL,EAAen6L,eAAiD//B,IAArCo6N,EAAkB4N,eAA+B5N,EAAkB4N,eAAiB,EAC/G9N,EAAep6L,eAAkD9/B,IAAtCo6N,EAAkB6N,gBAAgC7N,EAAkB6N,gBAAkB,OAE9DjoO,IAA/Co6N,EAAkB8N,2BACpBnkG,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,eAAgBE,EAAkB8N,2BACpFnkG,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,eAAgBE,EAAkB8N,4BAGtFR,EAAe/nO,KAAK8kO,YAAW,SAAUd,GACvC,OAAOA,EAAIkE,iBAAmBlE,EAAIkE,gBAAgB/+L,MAEpDi7F,EAAQ92H,KAAK3N,QAAQ0sJ,IAAIrsJ,KAAK+jO,YAAW,SAAUC,GACjD,OAAOA,EAAIwE,sBAAwBxE,EAAIwE,qBAAqBr/L,EAAeoxL,SAI/C,IAA5BC,EAAYxyJ,cACduyJ,EAAe98L,KAAO97B,cAGxB,IAAM8mO,EAAYjO,EAAYiO,WAAajG,EAwC3C,OAtCIiG,IAAcjG,GAChBjI,EAAe38L,aAAc,EAE7B28L,EAAel8L,YAAa,IAE5Bk8L,EAAe38L,aAAc,EAEzB6qM,IAAcjG,IAChBjI,EAAe92L,eAAwCpjC,IAA5Bm6N,EAAYkO,YAA4BlO,EAAYkO,YAAc,UAI/DroO,IAA9Bm6N,EAAYmO,eAA+BZ,IAAiBzhM,sBAC9D89F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,YAAaC,EAAYmO,gBAE3EpO,EAAex4L,YAAc,IAAIzuB,UAAQ,GAAI,QAELjT,IAApCm6N,EAAYmO,cAAc31M,OAC5BunM,EAAex4L,YAAY5uB,IAAIqnN,EAAYmO,cAAc31M,OAAQwnM,EAAYmO,cAAc31M,aAI1D3yB,IAAjCm6N,EAAYoO,kBAAkCb,IAAiBzhM,sBACjE89F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,QAASC,EAAYoO,wBAEzBvoO,IAA1Cm6N,EAAYoO,iBAAiBC,WAC/BtO,EAAe74L,eAAiB84L,EAAYoO,iBAAiBC,gBAI9BxoO,IAA/Bm6N,EAAYsO,gBAAgCf,IAAiBzhM,sBAC/Di0L,EAAe/5L,UAAW,IAAI+D,SAAQlrB,UAAUmhN,EAAYsO,sBAG1BzoO,IAAhCm6N,EAAYuO,iBAAiChB,IAAiBzhM,qBAChE89F,EAAQ92H,KAAKu7G,EAAOgyG,cAAcN,EAAgB,cAAeC,EAAYuO,kBAGxEppO,QAAQ0sJ,IAAIjoB,GAASxkI,MAAK,WAC/B,IAAIu6B,EAkBJ,OAfEA,EADE4tM,IAAiBxJ,EACRnsL,EAAWmlL,EAAWY,uCAAuC6Q,eAAezO,GAE5E,IAAIwN,EAAaxN,GAG1BC,EAAYjgN,OAAM4f,EAAS5f,KAAOigN,EAAYjgN,MAE9C4f,EAASiH,MAAKjH,EAASiH,IAAIllB,SAAWxR,gBACtCyvB,EAASkI,cAAalI,EAASkI,YAAYnmB,SAAWxR,gBAC1Dm4N,EAAuB1oM,EAAUqgM,GACjC3xG,EAAO26G,aAAarwN,IAAIgnB,EAAU,CAChCltB,KAAM,YACNO,MAAO27B,IAELqxL,EAAYpoL,YAAYqwL,EAA+BrwL,EAAYjY,EAAUqgM,GAC1ErgM,O,8BAMX,SAAiB8uM,GAIf,IAHA,IAAMC,EAAgBzuG,kBAAgB0uG,iBAAiBF,GAAgB,IACnE1uN,EAAO2uN,EAEFp7N,EAAI,EAAG9N,KAAK8jO,cAAcvpN,KAASzM,EAC1CyM,EAAO2uN,EAAgB,IAAMp7N,EAI/B,OADA9N,KAAK8jO,cAAcvpN,IAAQ,EACpBA,I,4BAYT,SAAe6uN,GACb,IAAMvgH,EAAS7oH,KACToyC,EAAapyC,KAAKoyC,WAClB7X,EAAQv6B,KAAKyjO,eAEnB,SAAS4F,EAAqB7jF,GAC5B,OAAOpzG,EAAWmlL,EAAWc,4BAA4BiR,gBAAgB9jF,EAAW38B,GAAQjpH,MAAK,SAAUiqB,GACzG,OAAO0/M,GAAuB1/M,EAAU27H,EAAW38B,MAMvD,IAFA,IAAMub,EAAU,GAEPt2H,EAAI,EAAGgT,EAAKsoN,EAAWp7N,OAAQF,EAAIgT,EAAIhT,IAAK,CACnD,IAAM03I,EAAY4jF,EAAWt7N,GACvBm3D,EAAWi+J,GAAmB19E,GAE9BtrG,EAAS3f,EAAM0qC,GAErB,GAAI/qB,EAEFkqF,EAAQ92H,KAAK4sC,EAAO8mH,aACf,CACL,IAAIwoE,OAAe,EAIjBA,EAFEhkF,EAAUpzG,YAAcozG,EAAUpzG,WAAWmlL,EAAWc,4BAExCgR,EAAqB7jF,GAGrB+jF,GAAuB,IAAI5gM,iBAAkB68G,EAAW38B,GAI5EtuF,EAAM0qC,GAAY,CAChBugF,UAAWA,EACXwb,QAASwoE,GAEXplG,EAAQ92H,KAAKk8N,IAIjB,OAAO7pO,QAAQ0sJ,IAAIjoB,K,sBASrB,SAASqlG,GAQP,IAPA,IAh/B2BlvM,EAg/BrBsuF,EAAS7oH,KACT08F,EAAO18F,KAAK08F,KACZtqD,EAAapyC,KAAKoyC,WAClB4wL,EAAUtmI,EAAK+nI,OAAOgF,GACtBL,EAAapG,EAAQoG,WACrBhlG,EAAU,GAEPt2H,EAAI,EAAGgT,EAAKsoN,EAAWp7N,OAAQF,EAAIgT,EAAIhT,IAAK,CACnD,IAAMqsB,OAAsC95B,IAA3B+oO,EAAWt7N,GAAGqsB,eAv/BF95B,KADJk6B,EAw/BqDv6B,KAAKu6B,OAv/B9E,kBACPA,EAAK,gBAAsB,IAAIwwC,uBAAqB,CAClD9qC,MAAO,SACPO,SAAU,EACVJ,UAAW,EACXD,UAAW,EACXvC,aAAa,EACbQ,WAAW,EACXX,KAAMh8B,eAIH84B,EAAK,iBA2+BoFv6B,KAAKw8N,cAAc,WAAY4M,EAAWt7N,GAAGqsB,UACzIiqG,EAAQ92H,KAAK6sB,GAIf,OADAiqG,EAAQ92H,KAAKu7G,EAAO6gH,eAAeN,IAC5BzpO,QAAQ0sJ,IAAIjoB,GAASxkI,MAAK,SAAUu9H,GAKzC,IAJA,IAAM1kG,EAAY0kG,EAAQtvH,MAAM,EAAGsvH,EAAQnvH,OAAS,GAC9CwqB,EAAa2kG,EAAQA,EAAQnvH,OAAS,GACtCy2N,EAAS,GAEN32N,EAAI,EAAGgT,EAAK0X,EAAWxqB,OAAQF,EAAIgT,EAAIhT,IAAK,CACnD,IAAM+b,EAAW2O,EAAW1qB,GACtB03I,EAAY4jF,EAAWt7N,GAEzBioC,OAAI,EACF5b,EAAW1B,EAAU3qB,GAE3B,GAAI03I,EAAU93F,OAASuyK,GAA6Bz6E,EAAU93F,OAASuyK,GAAkCz6E,EAAU93F,OAASuyK,QAAmD5/N,IAAnBmlJ,EAAU93F,MAIzI,KAF3B3X,GAAiC,IAA1BitL,EAAQjpM,cAAyB,IAAIwhE,cAAY1xE,EAAUsQ,GAAY,IAAIwU,OAAK9kB,EAAUsQ,IAExFJ,eAA2Bgc,EAAKlsB,SAAS+e,WAAW8yD,WAAWt1D,YAGtE2P,EAAK4zL,uBAGHnkF,EAAU93F,OAASuyK,EACrBlqL,EAAKlsB,SAAW+/M,GAAoB7zL,EAAKlsB,SAAUtf,yBAC1Ci7I,EAAU93F,OAASuyK,IAC5BlqL,EAAKlsB,SAAW+/M,GAAoB7zL,EAAKlsB,SAAUrf,6BAEhD,GAAIg7I,EAAU93F,OAASuyK,EAC5BlqL,EAAO,IAAIyoD,eAAa30E,EAAUsQ,QAC7B,GAAIqrH,EAAU93F,OAASuyK,EAC5BlqL,EAAO,IAAI6nD,OAAK/zE,EAAUsQ,QACrB,GAAIqrH,EAAU93F,OAASuyK,EAC5BlqL,EAAO,IAAI0oD,WAAS50E,EAAUsQ,OACzB,IAAIqrH,EAAU93F,OAASuyK,EAG5B,MAAM,IAAIzsN,MAAM,iDAAmDgyI,EAAU93F,MAF7E3X,EAAO,IAAI+oD,SAAOj1E,EAAUsQ,GAK1B7pB,OAAO+8B,KAAK0I,EAAKlsB,SAASgf,iBAAiB76B,OAAS,GACtD4gC,GAAmBmH,EAAMitL,GAG3BjtL,EAAKx7B,KAAOsuG,EAAOuxG,iBAAiB4I,EAAQzoN,MAAQ,QAAUkvN,GAC9D5G,EAAuB9sL,EAAMitL,GACzBx9E,EAAUpzG,YAAYqwL,EAA+BrwL,EAAY2D,EAAMyvG,GAC3E38B,EAAOghH,oBAAoB9zL,GAC3B0uL,EAAOn3N,KAAKyoC,GAGd,GAAsB,IAAlB0uL,EAAOz2N,OACT,OAAOy2N,EAAO,GAKhB,IAFA,IAAMn5L,EAAQ,IAAIi3C,QAETz0E,EAAI,EAAGgT,EAAK2jN,EAAOz2N,OAAQF,EAAIgT,EAAIhT,IAC1Cw9B,EAAMliB,IAAIq7M,EAAO32N,IAGnB,OAAOw9B,O,wBAUX,SAAWw+L,GACT,IAAIrjN,EACEsjN,EAAY/pO,KAAK08F,KAAKra,QAAQynJ,GAC9Bn1K,EAASo1K,EAAUA,EAAU98N,MAEnC,GAAK0nD,EAaL,MARuB,gBAAnBo1K,EAAU98N,KACZwZ,EAAS,IAAIssB,oBAAkB1iC,YAAU4B,SAAS0iD,EAAOq1K,MAAOr1K,EAAOs1K,aAAe,EAAGt1K,EAAOu1K,OAAS,EAAGv1K,EAAOw1K,MAAQ,KAC/F,iBAAnBJ,EAAU98N,OACnBwZ,EAAS,IAAImrC,sBAAoB+C,EAAOy1K,KAAMz1K,EAAOy1K,KAAMz1K,EAAO01K,MAAO11K,EAAO01K,KAAM11K,EAAOu1K,MAAOv1K,EAAOw1K,OAGzGJ,EAAUxvN,OAAMkM,EAAOlM,KAAOva,KAAKo6N,iBAAiB2P,EAAUxvN,OAClEsoN,EAAuBp8M,EAAQsjN,GACxBpqO,QAAQV,QAAQwnB,GAZrBrT,QAAQC,KAAK,kD,sBAqBjB,SAASwoF,GACP,IAAMyuI,EAAUtqO,KAAK08F,KAAK6nI,MAAM1oI,GAC1B0uI,EAAY,CAChBznJ,OAAQwnJ,EAAQxnJ,QAGlB,YAAoCziF,IAAhCiqO,EAAQE,oBACH7qO,QAAQV,QAAQsrO,GAGlBvqO,KAAKw8N,cAAc,WAAY8N,EAAQE,qBAAqB5qO,MAAK,SAAU6qO,GAEhF,OADAF,EAAUC,oBAAsBC,EACzBF,O,2BAUX,SAAcG,GASZ,IARA,IACMC,EADO3qO,KAAK08F,KACQ3lE,WAAW2zM,GAC/BE,EAAe,GACfC,EAAwB,GACxBC,EAAyB,GACzBC,EAAkB,GAClBC,EAAiB,GAEdl9N,EAAI,EAAGgT,EAAK6pN,EAAa3mD,SAASh2K,OAAQF,EAAIgT,EAAIhT,IAAK,CAC9D,IAAMknB,EAAU21M,EAAa3mD,SAASl2K,GAChC+4N,EAAU8D,EAAatD,SAASryM,EAAQ6xM,SACxCl5N,EAASqnB,EAAQrnB,OACjB4M,OAAuBla,IAAhBsN,EAAOwtH,KAAqBxtH,EAAOwtH,KAAOxtH,EAAOoqB,GAExDq0H,OAAoC/rJ,IAA5BsqO,EAAa9wM,WAA2B8wM,EAAa9wM,WAAWgtM,EAAQz6E,OAASy6E,EAAQz6E,MACjG9uI,OAAqCjd,IAA5BsqO,EAAa9wM,WAA2B8wM,EAAa9wM,WAAWgtM,EAAQvpN,QAAUupN,EAAQvpN,OACzGstN,EAAat9N,KAAKtN,KAAKw8N,cAAc,OAAQjiN,IAC7CswN,EAAsBv9N,KAAKtN,KAAKw8N,cAAc,WAAYpwE,IAC1D0+E,EAAuBx9N,KAAKtN,KAAKw8N,cAAc,WAAYl/M,IAC3DytN,EAAgBz9N,KAAKu5N,GACrBmE,EAAe19N,KAAKK,GAGtB,OAAOhO,QAAQ0sJ,IAAI,CAAC1sJ,QAAQ0sJ,IAAIu+E,GAAejrO,QAAQ0sJ,IAAIw+E,GAAwBlrO,QAAQ0sJ,IAAIy+E,GAAyBnrO,QAAQ0sJ,IAAI0+E,GAAkBprO,QAAQ0sJ,IAAI2+E,KAAkBprO,MAAK,SAAU4pM,GAQjM,IAPA,IAAMv9C,EAAQu9C,EAAa,GACrByhC,EAAiBzhC,EAAa,GAC9B0hC,EAAkB1hC,EAAa,GAC/B69B,EAAW79B,EAAa,GACxB2hC,EAAU3hC,EAAa,GACvB9sF,EAAS,GANgM,WAQtM5uG,EAAOgT,GACd,IAAMq6G,EAAO8wB,EAAMn+I,GACbs9N,EAAgBH,EAAen9N,GAC/Bu9N,EAAiBH,EAAgBp9N,GACjC+4N,EAAUQ,EAASv5N,GACnBH,EAASw9N,EAAQr9N,GACvB,QAAazN,IAAT86H,EAAoB,iBACxBA,EAAKlkG,eACLkkG,EAAK3+G,kBAAmB,EACxB,IAAI6mG,OAAkB,EAEtB,OAAQ6+G,EAAgBv0N,EAAOuzD,OAC7B,KAAKghK,EAAgB3uK,QACnB8vD,EAAqBI,sBACrB,MAEF,KAAKy+G,EAAgBlpN,SACnBqqG,EAAqBO,0BACrB,MAEF,KAAKs+G,EAAgBnvM,SACrB,KAAKmvM,EAAgBlvM,MACrB,QACEqwF,EAAqBS,sBAIzB,IAAMwnH,EAAanwG,EAAK5gH,KAAO4gH,EAAK5gH,KAAO4gH,EAAK/+G,KAC1CwlG,OAA0CvhH,IAA1BwmO,EAAQjlH,cAA8BwgH,EAAcyE,EAAQjlH,eAAiB73G,oBAC7Fk5N,EAAc,GAEhBf,EAAgBv0N,EAAOuzD,QAAUghK,EAAgB3uK,QAEnD4nE,EAAKljG,UAAS,SAAU5O,IACA,IAAlBA,EAAOqQ,QAAmBrQ,EAAOwlB,uBACnCo0L,EAAY31N,KAAK+b,EAAO9O,KAAO8O,EAAO9O,KAAO8O,EAAOjN,SAIxD6mN,EAAY31N,KAAKg+N,GAGnB,IAAIC,EAAcF,EAAez9N,MAEjC,GAAIy9N,EAAejlM,WAAY,CAI7B,IAHA,IAAMpT,EAAQuwM,GAA4BgI,EAAY93N,aAChD+3N,EAAS,IAAItxN,aAAaqxN,EAAYv9N,QAEnC4d,EAAI,EAAGye,EAAKkhM,EAAYv9N,OAAQ4d,EAAIye,EAAIze,IAC/C4/M,EAAO5/M,GAAK2/M,EAAY3/M,GAAKoH,EAG/Bu4M,EAAcC,EAGhB,IAAK,IAAI5/M,EAAI,EAAGye,EAAK44L,EAAYj1N,OAAQ4d,EAAIye,EAAIze,IAAK,CACpD,IAAM+wF,EAAQ,IAAI0G,EAAmB4/G,EAAYr3M,GAAK,IAAMs2M,EAAgBv0N,EAAOuzD,MAAOkqK,EAAcx9N,MAAO29N,EAAa3pH,GAE9F,gBAA1BilH,EAAQjlH,gBACVjF,EAAMkB,kBAAoB,SAAiDjqC,GAIzE,OAAO,IAAIgsJ,EAA2B5/N,KAAK67G,MAAO77G,KAAKw6B,OAAQx6B,KAAK68G,eAAiB,EAAGjpC,IAI1F+oC,EAAMkB,kBAAkBC,2CAA4C,GAGtEpB,EAAOpvG,KAAKqvG,KAtEP7uG,EAAI,EAAGgT,EAAKmrI,EAAMj+I,OAAQF,EAAIgT,EAAIhT,IAAK,EAAvCA,GA0ET,IAAMyM,EAAOowN,EAAapwN,KAAOowN,EAAapwN,KAAO,aAAemwN,EACpE,OAAO,IAAI3mH,gBAAcxpG,OAAMla,EAAWq8G,Q,4BAI9C,SAAeg9G,GACb,IAAMh9H,EAAO18F,KAAK08F,KACZmsB,EAAS7oH,KACT45N,EAAUl9H,EAAKuvD,MAAMytE,GAC3B,YAAqBr5N,IAAjBu5N,EAAQ7jL,KAA2B,KAChC8yE,EAAO2zG,cAAc,OAAQ5C,EAAQ7jL,MAAMn2C,MAAK,SAAUm2C,GAC/D,IAAMolF,EAAOtS,EAAOyxG,YAAYzxG,EAAO66G,UAAW9J,EAAQ7jL,KAAMA,GAahE,YAVwB11C,IAApBu5N,EAAQrmK,SACV4nE,EAAKljG,UAAS,SAAUqhF,GACtB,GAAKA,EAAE5/E,OAEP,IAAK,IAAI5rB,EAAI,EAAGgT,EAAK84M,EAAQrmK,QAAQvlD,OAAQF,EAAIgT,EAAIhT,IACnDwrG,EAAEzqE,sBAAsB/gC,GAAK8rN,EAAQrmK,QAAQzlD,MAK5CqtH,O,sBAUX,SAASu+F,GACP,IAAMh9H,EAAO18F,KAAK08F,KACZtqD,EAAapyC,KAAKoyC,WAClBy2E,EAAS7oH,KACT45N,EAAUl9H,EAAKuvD,MAAMytE,GAErBr+F,EAAWu+F,EAAQr/M,KAAOsuG,EAAOuxG,iBAAiBR,EAAQr/M,MAAQ,GACxE,OAAO,WACL,IAAM6pH,EAAU,GAEVqnG,EAAc5iH,EAAOi8G,YAAW,SAAUd,GAC9C,OAAOA,EAAI0H,gBAAkB1H,EAAI0H,eAAehS,MAmBlD,OAhBI+R,GACFrnG,EAAQ92H,KAAKm+N,QAGQprO,IAAnBu5N,EAAQnzM,QACV29G,EAAQ92H,KAAKu7G,EAAO2zG,cAAc,SAAU5C,EAAQnzM,QAAQ7mB,MAAK,SAAU6mB,GACzE,OAAOoiG,EAAOyxG,YAAYzxG,EAAO86G,YAAa/J,EAAQnzM,OAAQA,OAIlEoiG,EAAOk7G,YAAW,SAAUC,GAC1B,OAAOA,EAAI2H,sBAAwB3H,EAAI2H,qBAAqBjS,MAC3DrzI,SAAQ,SAAU26E,GACnB58B,EAAQ92H,KAAK0zJ,MAGRrhK,QAAQ0sJ,IAAIjoB,GAvBd,GAwBHxkI,MAAK,SAAUmoD,GACjB,IAAIozE,EAYJ,IATEA,GADqB,IAAnBy+F,EAAQ19H,OACH,IAAID,OACFl0C,EAAQ/5C,OAAS,EACnB,IAAIu0E,QACiB,IAAnBx6B,EAAQ/5C,OACV+5C,EAAQ,GAER,IAAIhyB,cAGAgyB,EAAQ,GACnB,IAAK,IAAIj6C,EAAI,EAAGgT,EAAKinC,EAAQ/5C,OAAQF,EAAIgT,EAAIhT,IAC3CqtH,EAAK/xG,IAAI2+B,EAAQj6C,IAYrB,GARI8rN,EAAQr/M,OACV4gH,EAAKnkG,SAASzc,KAAOq/M,EAAQr/M,KAC7B4gH,EAAK5gH,KAAO8gH,GAGdwnG,EAAuB1nG,EAAMy+F,GACzBA,EAAQxnL,YAAYqwL,EAA+BrwL,EAAY+oF,EAAMy+F,QAElDv5N,IAAnBu5N,EAAQxgN,OAAsB,CAChC,IAAMA,EAAS,IAAI2W,UACnB3W,EAAOC,UAAUugN,EAAQxgN,QACzB+hH,EAAKz0G,aAAatN,aAEU/Y,IAAxBu5N,EAAQuI,aACVhnG,EAAKpoG,SAAS1Z,UAAUugN,EAAQuI,kBAGT9hO,IAArBu5N,EAAQ5gN,UACVmiH,EAAK15G,WAAWpI,UAAUugN,EAAQ5gN,eAGd3Y,IAAlBu5N,EAAQ5mM,OACVmoG,EAAKnoG,MAAM3Z,UAAUugN,EAAQ5mM,OAQjC,OAJA61F,EAAO26G,aAAarwN,IAAIgoH,EAAM,CAC5BluH,KAAM,QACNO,MAAOksN,IAEFv+F,O,uBAUX,SAAUywG,GACR,IAAMlvI,EAAO18F,KAAK08F,KACZtqD,EAAapyC,KAAKoyC,WAClBy5L,EAAW7rO,KAAK08F,KAAK0nI,OAAOwH,GAI5B52L,EAAQ,IAAIutC,QACdspJ,EAAStxN,OAAMy6B,EAAMz6B,KAJVva,KAIwBo6N,iBAAiByR,EAAStxN,OACjEsoN,EAAuB7tL,EAAO62L,GAC1BA,EAASz5L,YAAYqwL,EAA+BrwL,EAAY4C,EAAO62L,GAI3E,IAHA,IAAMC,EAAUD,EAAS5/E,OAAS,GAC5B7nB,EAAU,GAEPt2H,EAAI,EAAGgT,EAAKgrN,EAAQ99N,OAAQF,EAAIgT,EAAIhT,IAC3Cs2H,EAAQ92H,KAAKy+N,GAAkBD,EAAQh+N,GAAIknC,EAAO0nD,EAXrC18F,OAcf,OAAOL,QAAQ0sJ,IAAIjoB,GAASxkI,MAAK,WAC/B,OAAOo1C,S,KAMb,SAAS+2L,GAAkBC,EAAQC,EAAcvvI,EAAMmsB,GACrD,IAAM+wG,EAAUl9H,EAAKuvD,MAAM+/E,GAC3B,OAAOnjH,EAAO2zG,cAAc,OAAQwP,GAAQpsO,MAAK,SAAUu7H,GACzD,YAAqB96H,IAAjBu5N,EAAQ+K,KAA2BxpG,EAGhCtS,EAAO2zG,cAAc,OAAQ5C,EAAQ+K,MAAM/kO,MAAK,SAAU+kO,GAI/D,IAFA,IAAMuH,EAAgB,GAEbp+N,EAAI,EAAGgT,GAHhBypN,EAAY5F,GAGmB7hJ,OAAO90E,OAAQF,EAAIgT,EAAIhT,IACpDo+N,EAAc5+N,KAAKu7G,EAAO2zG,cAAc,OAAQ+N,EAAUznJ,OAAOh1E,KAGnE,OAAOnO,QAAQ0sJ,IAAI6/E,MAClBtsO,MAAK,SAAUusO,GAyBhB,OAxBAhxG,EAAKljG,UAAS,SAAU8d,GACtB,GAAKA,EAAKrc,OAAV,CAIA,IAHA,IAAMkyC,EAAQ,GACRowB,EAAe,GAEZpwE,EAAI,EAAGye,EAAK8hM,EAAWn+N,OAAQ4d,EAAIye,EAAIze,IAAK,CACnD,IAAMwgN,EAAYD,EAAWvgN,GAE7B,GAAIwgN,EAAW,CACbxgK,EAAMt+D,KAAK8+N,GACX,IAAM9mI,EAAM,IAAIv1E,eAEsB1vB,IAAlCkqO,EAAUC,qBACZllI,EAAIjsF,UAAUkxN,EAAUC,oBAAoB58N,MAAW,GAAJge,GAGrDowE,EAAa1uF,KAAKg4F,QAElBlyF,QAAQC,KAAK,mDAAoDk3N,EAAUznJ,OAAOl3D,IAItFmqB,EAAK45E,KAAK,IAAIrzB,WAAS1wB,EAAOowB,GAAejmD,EAAKjvB,iBAE7Cq0G,KAnCT,IAAIovG,KAqCH3qO,MAAK,SAAUu7H,GAEhB8wG,EAAa7iN,IAAI+xG,GACjB,IAAMiJ,EAAU,GAEhB,GAAIw1F,EAAQ1vM,SAGV,IAFA,IAAMA,EAAW0vM,EAAQ1vM,SAEhBpc,EAAI,EAAGgT,EAAKoJ,EAASlc,OAAQF,EAAIgT,EAAIhT,IAAK,CACjD,IAAM6sB,EAAQzQ,EAASpc,GACvBs2H,EAAQ92H,KAAKy+N,GAAkBpxM,EAAOwgG,EAAMz+B,EAAMmsB,IAItD,OAAOlpH,QAAQ0sJ,IAAIjoB,MAyFvB,SAASmlG,GAAuB1/M,EAAUs5M,EAAct6G,GACtD,IAAMjgF,EAAau6L,EAAav6L,WAC1Bw7F,EAAU,GAEhB,SAASioG,EAAwB1G,EAAet7C,GAC9C,OAAOxhE,EAAO2zG,cAAc,WAAYmJ,GAAe/lO,MAAK,SAAU6qO,GACpE5gN,EAASkgB,aAAasgJ,EAAeogD,MAIzC,IAAK,IAAM6B,KAAqB1jM,EAAY,CAC1C,IAAMm1L,EAAqBC,EAAWsO,IAAsBA,EAAkBhnM,cAE1Ey4L,KAAsBl0M,EAAS+e,YACnCw7F,EAAQ92H,KAAK++N,EAAwBzjM,EAAW0jM,GAAoBvO,IAGtE,QAA6B19N,IAAzB8iO,EAAa74L,UAA0BzgB,EAASrc,MAAO,CACzD,IAAMi9N,EAAW5hH,EAAO2zG,cAAc,WAAY2G,EAAa74L,SAAS1qC,MAAK,SAAU6qO,GACrF5gN,EAAS2jB,SAASi9L,MAEpBrmG,EAAQ92H,KAAKm9N,GAKf,OAFA5H,EAAuBh5M,EAAUs5M,GAvGnC,SAAuBt5M,EAAUs5M,EAAct6G,GAC7C,IAAMjgF,EAAau6L,EAAav6L,WAC1Brf,EAAM,IAAIhB,OAEhB,QAA4BloB,IAAxBuoC,EAAW+4L,SAAf,CACE,IAAM8I,EAAW5hH,EAAOnsB,KAAKwhI,UAAUt1L,EAAW+4L,UAC5CvyN,EAAMq7N,EAASr7N,IACfC,EAAMo7N,EAASp7N,IAErB,QAAYhP,IAAR+O,QAA6B/O,IAARgP,EAAzB,CAGE,GAFAka,EAAIpW,IAAI,IAAIwS,UAAQvW,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAK,IAAIuW,UAAQtW,EAAI,GAAIA,EAAI,GAAIA,EAAI,KAEzEo7N,EAASrkM,WAAY,CACvB,IAAMmmM,EAAWhJ,GAA4BnF,EAAsBqM,EAAStM,gBAC5E50M,EAAIna,IAAI0E,eAAey4N,GACvBhjN,EAAIla,IAAIyE,eAAey4N,GAU7B,IAAMpB,EAAUhI,EAAagI,QAE7B,QAAgB9qO,IAAZ8qO,EAAuB,CAIzB,IAHA,IAAMqB,EAAkB,IAAI7mN,UACtB+D,EAAS,IAAI/D,UAEV7X,EAAI,EAAGgT,EAAKqqN,EAAQn9N,OAAQF,EAAIgT,EAAIhT,IAAK,CAChD,IAAMH,EAASw9N,EAAQr9N,GAEvB,QAAwBzN,IAApBsN,EAAOg0N,SAAwB,CACjC,IAAM8I,EAAW5hH,EAAOnsB,KAAKwhI,UAAUvwN,EAAOg0N,UACxCvyN,EAAMq7N,EAASr7N,IACfC,EAAMo7N,EAASp7N,IAErB,QAAYhP,IAAR+O,QAA6B/O,IAARgP,EAAmB,CAM1C,GAJAqa,EAAO+8M,KAAKr4N,KAAKiB,IAAIjB,KAAKgD,IAAIhC,EAAI,IAAKhB,KAAKgD,IAAI/B,EAAI,MACpDqa,EAAOg9M,KAAKt4N,KAAKiB,IAAIjB,KAAKgD,IAAIhC,EAAI,IAAKhB,KAAKgD,IAAI/B,EAAI,MACpDqa,EAAOi9M,KAAKv4N,KAAKiB,IAAIjB,KAAKgD,IAAIhC,EAAI,IAAKhB,KAAKgD,IAAI/B,EAAI,MAEhDo7N,EAASrkM,WAAY,CACvB,IAAMmmM,EAAWhJ,GAA4BnF,EAAsBqM,EAAStM,gBAC5Ez0M,EAAO5V,eAAey4N,GAOxBC,EAAgBn9N,IAAIqa,QAEpBtW,QAAQC,KAAK,wEAMnBkW,EAAIkjN,eAAeD,GAGrB3iN,EAASC,YAAcP,EACvB,IAAMY,EAAS,IAAIiC,SACnB7C,EAAIiB,UAAUL,EAAOhV,QACrBgV,EAAOpC,OAASwB,EAAIna,IAAImd,WAAWhD,EAAIla,KAAO,EAC9Cwa,EAASmf,eAAiB7e,OAnDtB/W,QAAQC,KAAK,wEAsFjBq5N,CAAc7iN,EAAUs5M,EAAct6G,GAC/BlpH,QAAQ0sJ,IAAIjoB,GAASxkI,MAAK,WAC/B,YAAgCS,IAAzB8iO,EAAagI,QA7+CxB,SAAyBthN,EAAUshN,EAAStiH,GAI1C,IAHA,IAAI8jH,GAAmB,EACnBC,GAAiB,EAEZ9+N,EAAI,EAAGgT,EAAKqqN,EAAQn9N,OAAQF,EAAIgT,EAAIhT,IAAK,CAChD,IAAMH,EAASw9N,EAAQr9N,GAGvB,QAFwBzN,IAApBsN,EAAOg0N,WAAwBgL,GAAmB,QAChCtsO,IAAlBsN,EAAOs1K,SAAsB2pD,GAAiB,GAC9CD,GAAoBC,EAAgB,MAG1C,IAAKD,IAAqBC,EAAgB,OAAOjtO,QAAQV,QAAQ4qB,GAIjE,IAHA,IAAMgjN,EAA2B,GAC3BC,EAAyB,GAEtBh/N,EAAI,EAAGgT,EAAKqqN,EAAQn9N,OAAQF,EAAIgT,EAAIhT,IAAK,CAChD,IAAMH,EAASw9N,EAAQr9N,GAEvB,GAAI6+N,EAAkB,CACpB,IAAMI,OAAsC1sO,IAApBsN,EAAOg0N,SAAyB94G,EAAO2zG,cAAc,WAAY7uN,EAAOg0N,UAAY93M,EAAS+e,WAAW7V,SAChI85M,EAAyBv/N,KAAKy/N,GAGhC,GAAIH,EAAgB,CAClB,IAAMG,OAAoC1sO,IAAlBsN,EAAOs1K,OAAuBp6D,EAAO2zG,cAAc,WAAY7uN,EAAOs1K,QAAUp5J,EAAS+e,WAAWhhB,OAC5HklN,EAAuBx/N,KAAKy/N,IAIhC,OAAOptO,QAAQ0sJ,IAAI,CAAC1sJ,QAAQ0sJ,IAAIwgF,GAA2BltO,QAAQ0sJ,IAAIygF,KAA0BltO,MAAK,SAAUs+N,GAC9G,IAAM8O,EAAiB9O,EAAU,GAC3BpkK,EAAeokK,EAAU,GAI/B,OAHIyO,IAAkB9iN,EAASgf,gBAAgB9V,SAAWi6M,GACtDJ,IAAgB/iN,EAASgf,gBAAgBjhB,OAASkyC,GACtDjwC,EAASif,sBAAuB,EACzBjf,KA08CqCojN,CAAgBpjN,EAAUs5M,EAAagI,QAAStiH,GAAUh/F,KAU1G,SAAS+/M,GAAoB//M,EAAU+rH,GACrC,IAAIpoI,EAAQqc,EAASs5E,WAErB,GAAc,OAAV31F,EAAgB,CAClB,IAAM88B,EAAU,GACVvX,EAAWlJ,EAASgiB,aAAa,YAEvC,QAAiBxrC,IAAb0yB,EASF,OADA3f,QAAQ3T,MAAM,kGACPoqB,EARP,IAAK,IAAI/b,EAAI,EAAGA,EAAIilB,EAASlS,MAAO/S,IAClCw8B,EAAQh9B,KAAKQ,GAGf+b,EAAS2jB,SAASlD,GAClB98B,EAAQqc,EAASs5E,WAQrB,IAAM+pI,EAAoB1/N,EAAMqT,MAAQ,EAClCssN,EAAa,GAEnB,GAAIv3F,IAAaprI,sBAEf,IAAK,IAAIsD,EAAI,EAAGA,GAAKo/N,EAAmBp/N,IACtCq/N,EAAW7/N,KAAKE,EAAMyH,KAAK,IAC3Bk4N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,IAC3Bq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,EAAI,SAIjC,IAAK,IAAIA,EAAI,EAAGA,EAAIo/N,EAAmBp/N,IACjCA,EAAI,IAAM,GACZq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,IAC3Bq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,EAAI,IAC/Bq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,EAAI,MAE/Bq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,EAAI,IAC/Bq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,EAAI,IAC/Bq/N,EAAW7/N,KAAKE,EAAMyH,KAAKnH,KAK7Bq/N,EAAWn/N,OAAS,IAAMk/N,GAC5B95N,QAAQ3T,MAAM,2FAIhB,IAAM2tO,EAAcvjN,EAASnJ,QAE7B,OADA0sN,EAAY5/L,SAAS2/L,GACdC,I,gHCz3FT,SAASloG,EAAOj4H,GACd,IAAMogO,EAAKpgO,EAAO,iBAClB,OAAoB44I,cAAiB,WAIlC1F,GAJkC,IACnClgJ,EADmC,EACnCA,KACAiqB,EAFmC,EAEnCA,SACGywH,EAHgC,wBAIbkL,gBAAoB,OAAQmO,YAAS,CAC3D7T,IAAKA,GACJxF,GAAqBkL,gBAAoBwnF,EAAI,CAC9CtzF,OAAQ,WACR95I,KAAMA,IACJiqB,MAGMg7G,EAAO,OACJA,EAAO,UACTA,EAAO,QACHA,EAAO,YACTA,EAAO,UAJtB,IAKM5uF,EAAQ4uF,EAAO,SACRA,EAAO,QACNA,EAAO,SACHA,EAAO,aACLA,EAAO,eACdA,EAAO,QACDA,EAAO,cACNA,EAAO,eACRA,EAAO,cACLA,EAAO,gBACZA,EAAO,WACTA,EAAO,SACFA,EAAO,e,6HC5B1B,SAASooG,EAAOvyN,EAAOC,EAAQikG,GAC7B,IAAMxlE,EAAKkyG,aAAS,qBAClBlyG,MAEIxwB,EAAO0iI,aAAS,qBACpB1iI,QAEI08H,EAAMjG,mBAAQ,kBAAMjmG,EAAGo4C,kBAAiB,CAACp4C,IAEzCy1C,EAA0B,kBAAVn0E,EAAqBA,EAAQkO,EAAKlO,MAAQ4qI,EAE1Dx2D,EAA4B,kBAAXn0E,EAAsBA,EAASiO,EAAKjO,OAAS2qI,EAE9D4nF,GAA8B,kBAAVxyN,EAAqBkkG,EAAWlkG,IAAU,GAE9DpN,EAAS+xI,mBAAQ,WACrB,IAKI/xI,EAJF6/N,EAGED,EAHFC,YACAvsN,EAEEssN,EAFFtsN,QACGwsN,EAHL,YAIIF,EAJJ,GAcA,OAPIC,GAAe/zL,EAAGC,aAAaC,UACjChsC,EAAS,IAAIqzI,+BAAmC9xD,EAAQC,EAASs+I,GAC7DxsN,IAAStT,EAAOsT,QAAUA,IAE9BtT,EAAS,IAAIqzI,oBAAwB9xD,EAAQC,EAASs+I,GAGjD9/N,IACN,IAOH,OANA+vI,qBAAU,WACR/vI,EAAOokF,QAAQ7C,EAAQC,KACtB,CAACxhF,EAAQuhF,EAAQC,IACpBuuD,qBAAU,WACR,OAAO,kBAAM/vI,EAAO8S,aACnB,IACI9S,I,oHCxCH+/N,E,kDACJ,WAAYhmH,GAAS,kCACnB,cAAMA,IACDz6G,KAAOxH,mBAFO,E,yCAMrB,SAAM4U,GACJ,IAUMszN,EAAa,SAAUC,EAAiBv2D,GAC5C,OAAQu2D,GACN,KANc,EAOZx6N,QAAQ3T,MAAM,iCAAmC43K,GAAO,KACxD,MAEF,KATqB,EAUnBjkK,QAAQ3T,MAAM,kCAAoC43K,GAAO,KACzD,MAEF,KAZsB,EAapBjkK,QAAQ3T,MAAM,sCAAwC43K,GAAO,KAC7D,MAEF,QACA,KAhBsB,EAiBpBjkK,QAAQ3T,MAAM,6BAA+B43K,GAAO,KAGxD,OA1BoB,GA0ChBw2D,EAAQ,SAAUxzN,EAAQyzN,EAAWC,GAEzCD,EAAaA,GAAY,KAOzB,IANA,IAAIhrN,EAAIzI,EAAO01M,IACXjiN,GAAK,EACL0X,EAAM,EACN1T,EAAI,GACJk8N,EAAQh/L,OAAOi+E,aAAa9sH,MAAM,KAAM,IAAI4Z,YAAYM,EAAOqgC,SAAS53B,EAAGA,EAN7D,OAQX,GAAKhV,EAAIkgO,EAAM3gO,QAVR,QAU6BmY,EAAMsoN,GAAahrN,EAAIzI,EAAOwiN,YACvE/qN,GAAKk8N,EACLxoN,GAAOwoN,EAAMhgO,OACb8U,GAXgB,IAYhBkrN,GAASh/L,OAAOi+E,aAAa9sH,MAAM,KAAM,IAAI4Z,YAAYM,EAAOqgC,SAAS53B,EAAGA,EAZ5D,OAelB,OAAK,EAAIhV,KAOH,IAAUigO,IAAS1zN,EAAO01M,KAAOvqM,EAAM1X,EAAI,GACxCgE,EAAIk8N,EAAMngO,MAAM,EAAGC,KAoMxBmgO,EAAqB,SAAUpyG,EAAaqyG,EAAcC,EAAWC,GACzE,IAAMr6N,EAAI8nH,EAAYqyG,EAAe,GAC/Bl7M,EAAQ5kB,KAAK2B,IAAI,EAAKgE,EAAI,KAAS,IACzCo6N,EAAUC,EAAa,GAAKvyG,EAAYqyG,EAAe,GAAKl7M,EAC5Dm7M,EAAUC,EAAa,GAAKvyG,EAAYqyG,EAAe,GAAKl7M,EAC5Dm7M,EAAUC,EAAa,GAAKvyG,EAAYqyG,EAAe,GAAKl7M,GAGxDq7M,EAAoB,SAAUxyG,EAAaqyG,EAAcC,EAAWC,GACxE,IAAMr6N,EAAI8nH,EAAYqyG,EAAe,GAC/Bl7M,EAAQ5kB,KAAK2B,IAAI,EAAKgE,EAAI,KAAS,IACzCo6N,EAAUC,EAAa,GAAKn+F,YAAUq+F,YAAYzyG,EAAYqyG,EAAe,GAAKl7M,GAClFm7M,EAAUC,EAAa,GAAKn+F,YAAUq+F,YAAYzyG,EAAYqyG,EAAe,GAAKl7M,GAClFm7M,EAAUC,EAAa,GAAKn+F,YAAUq+F,YAAYzyG,EAAYqyG,EAAe,GAAKl7M,IAG9Eu7M,EAAY,IAAI30N,WAAWS,GACjCk0N,EAAUxe,IAAM,EAChB,IAAMye,EA/MY,SAAUn0N,GAE1B,IAiCIo8B,EAAM4qB,EAhCJotK,EAAW,oCACXC,EAAc,uCACdC,EAAY,uBACZC,EAAgB,oCAEtB5lH,EAAS,CACPtG,MAAO,EAGP59E,OAAQ,GAGR+pM,SAAU,GAGVC,YAAa,OAGb9yN,OAAQ,GAGR+yN,MAAO,EAGPC,SAAU,EAGVj0N,MAAO,EACPC,OAAQ,GAMV,GAAIX,EAAO01M,KAAO11M,EAAOwiN,cAAgBpmL,EAAOo3L,EAAMxzN,IACpD,OAAOszN,EA5GO,EA4GqB,mBAKrC,KAAMtsK,EAAQ5qB,EAAK4qB,MAzCI,cA0CrB,OAAOssK,EAhHe,EAgHe,qBAOvC,IAJA3kH,EAAOtG,OAlFgB,EAmFvBsG,EAAO8lH,YAAcztK,EAAM,GAC3B2nD,EAAOlkF,QAAU2R,EAAO,MAIlB,KADJA,EAAOo3L,EAAMxzN,KAIb,GAFA2uG,EAAOlkF,QAAU2R,EAAO,KAEpB,MAAQA,EAAKrR,OAAO,IAwBxB,IAnBIi8B,EAAQ5qB,EAAK4qB,MAAMotK,MACrBzlH,EAAO+lH,MAAQhqM,WAAWs8B,EAAM,GAAI,MAGlCA,EAAQ5qB,EAAK4qB,MAAMqtK,MACrB1lH,EAAOgmH,SAAWjqM,WAAWs8B,EAAM,GAAI,MAGrCA,EAAQ5qB,EAAK4qB,MAAMstK,MACrB3lH,EAAOtG,OAxGa,EAyGpBsG,EAAOhtG,OAASqlD,EAAM,KAGpBA,EAAQ5qB,EAAK4qB,MAAMutK,MACrB5lH,EAAOtG,OA5GiB,EA6GxBsG,EAAOhuG,OAASkqB,SAASm8B,EAAM,GAAI,IACnC2nD,EAAOjuG,MAAQmqB,SAASm8B,EAAM,GAAI,KA/Gd,EAkHlB2nD,EAAOtG,OAjHe,EAiHcsG,EAAOtG,MAA+B,WAvB5EsG,EAAO6lH,UAAYp4L,EAAO,KA0B9B,OArHwB,EAqHlBuyE,EAAOtG,MApHe,EAwHtBsG,EAAOtG,MAINsG,EAHE2kH,EA5Je,EA4Je,gCAJ9BA,EAxJe,EAwJe,4BA2HhBsB,CAAgBV,GAEzC,IA1RsB,IA0RMC,EAAkB,CAC5C,IAAM76N,EAAI66N,EAAiBzzN,MACrB/C,EAAIw2N,EAAiBxzN,OACrBk0N,EAvHoB,SAAU70N,EAAQ1G,EAAGqE,GAC/C,IAAMm3N,EAAiBx7N,EAEvB,GACAw7N,EAAiB,GAAKA,EAAiB,OACvC,IAAM90N,EAAO,IAAM,IAAMA,EAAO,IAAkB,IAAZA,EAAO,GAE3C,OAAO,IAAIT,WAAWS,GAGxB,GAAI80N,KAAoB90N,EAAO,IAAM,EAAIA,EAAO,IAC9C,OAAOszN,EA5Ke,EA4Ke,wBAGvC,IAAMyB,EAAY,IAAIx1N,WAAW,EAAIjG,EAAIqE,GAEzC,IAAKo3N,EAAUphO,OACb,OAAO2/N,EAjLe,EAiLe,mCAUvC,IAPA,IAAI54N,EAAS,EACTg7M,EAAM,EACJsf,EAAU,EAAIF,EACdG,EAAY,IAAI11N,WAAW,GAC3B21N,EAAkB,IAAI31N,WAAWy1N,GACnCG,EAAgBx3N,EAEbw3N,EAAgB,GAAKzf,EAAM11M,EAAOwiN,YAAY,CACnD,GAAI9M,EAAM,EAAI11M,EAAOwiN,WACnB,OAAO8Q,EAhMK,GAwMd,GALA2B,EAAU,GAAKj1N,EAAO01M,KACtBuf,EAAU,GAAKj1N,EAAO01M,KACtBuf,EAAU,GAAKj1N,EAAO01M,KACtBuf,EAAU,GAAKj1N,EAAO01M,KAElB,GAAKuf,EAAU,IAAM,GAAKA,EAAU,KAAOA,EAAU,IAAM,EAAIA,EAAU,KAAOH,EAClF,OAAOxB,EAvMa,EAuMiB,4BAQvC,IAHA,IAAI8B,EAAM,EACN5uN,OAAK,EAEF4uN,EAAMJ,GAAWtf,EAAM11M,EAAOwiN,YAAY,CAE/C,IAAM6S,GADN7uN,EAAQxG,EAAO01M,MACc,IAG7B,GAFI2f,IAAc7uN,GAAS,KAEvB,IAAMA,GAAS4uN,EAAM5uN,EAAQwuN,EAC/B,OAAO1B,EArNW,EAqNmB,qBAGvC,GAAI+B,EAIF,IAFA,IAAMC,EAAYt1N,EAAO01M,KAEhBjiN,EAAI,EAAGA,EAAI+S,EAAO/S,IACzByhO,EAAgBE,KAASE,OAK3BJ,EAAgBp8N,IAAIkH,EAAOqgC,SAASq1K,EAAKA,EAAMlvM,GAAQ4uN,GACvDA,GAAO5uN,EACPkvM,GAAOlvM,EAQX,IAFA,IAAM9S,EAAIohO,EAEDrhO,EAAI,EAAGA,EAAIC,EAAGD,IAAK,CAC1B,IAAIo6J,EAAM,EACVknE,EAAUr6N,GAAUw6N,EAAgBzhO,EAAIo6J,GACxCA,GAAOinE,EAEPC,EAAUr6N,EAAS,GAAKw6N,EAAgBzhO,EAAIo6J,GAC5CA,GAAOinE,EAEPC,EAAUr6N,EAAS,GAAKw6N,EAAgBzhO,EAAIo6J,GAC5CA,GAAOinE,EAEPC,EAAUr6N,EAAS,GAAKw6N,EAAgBzhO,EAAIo6J,GAC5CnzJ,GAAU,EAGZy6N,IAGF,OAAOJ,EA0BiBQ,CAAoBrB,EAAU7zL,SAAS6zL,EAAUxe,KAAMp8M,EAAGqE,GAElF,IA/RoB,IA+RQk3N,EAAiB,CAC3C,IAAI5wN,EAAMtC,EAAQ/O,EACd4iO,EAEJ,OAAQ7vO,KAAKiN,MACX,KAAKxH,mBACH6Y,EAAO4wN,EACPlzN,EAAStV,aAETuG,EAAOxH,mBACP,MAEF,KAAKM,YACH8pO,EAAcX,EAAgBlhO,OAAS,EAAI,EAG3C,IAFA,IAAM8hO,EAAa,IAAI51N,aAAa21N,GAE3BjkN,EAAI,EAAGA,EAAIikN,EAAajkN,IAC/BqiN,EAAmBiB,EAAqB,EAAJtjN,EAAOkkN,EAAgB,EAAJlkN,GAGzDtN,EAAOwxN,EACP9zN,EAAS1V,YACT2G,EAAOlH,YACP,MAEF,KAAKC,gBACH6pO,EAAcX,EAAgBlhO,OAAS,EAAI,EAG3C,IAFA,IAAM+hO,EAAY,IAAIh2N,YAAY81N,GAEzBjkN,EAAI,EAAGA,EAAIikN,EAAajkN,IAC/ByiN,EAAkBa,EAAqB,EAAJtjN,EAAOmkN,EAAe,EAAJnkN,GAGvDtN,EAAOyxN,EACP/zN,EAAS1V,YACT2G,EAAOjH,gBACP,MAEF,QACEoN,QAAQ3T,MAAM,uCAAwCO,KAAKiN,MAI/D,MAAO,CACL8N,MAAOpH,EACPqH,OAAQhD,EACRsG,KAAMA,EACN0qG,OAAQwlH,EAAiB1pM,OACzBiqM,MAAOP,EAAiBO,MACxBC,SAAUR,EAAiBQ,SAC3BhzN,OAAQA,EACR/O,KAAMA,IAKZ,OAAO,O,yBAGT,SAAYzN,GAEV,OADAQ,KAAKiN,KAAOzN,EACLQ,O,kBAGT,SAAK2d,EAAKyoG,EAAQC,EAAYC,GA+B5B,mEAAkB3oG,GA9BlB,SAAwB0C,EAASqqG,GAC/B,OAAQrqG,EAAQpT,MACd,KAAKxH,mBACH4a,EAAQnE,SAAWtR,eACnByV,EAAQtE,UAAYhX,gBACpBsb,EAAQvE,UAAY/W,gBACpBsb,EAAQ5D,iBAAkB,EAC1B4D,EAAQ1D,OAAQ,EAChB,MAEF,KAAK5W,YAQL,KAAKC,gBACHqa,EAAQnE,SAAWzR,iBACnB4V,EAAQtE,UAAY3W,eACpBib,EAAQvE,UAAY1W,eACpBib,EAAQ5D,iBAAkB,EAC1B4D,EAAQ1D,OAAQ,EAIhBypG,GAAQA,EAAO/lG,EAASqqG,KAGSrE,EAAYC,O,GAzY9BmE,sB,qICCnB13E,EAAiC8yG,cAAiB,WAIrD1F,GAAQ,IAHT6vF,EAGS,EAHTA,YACAC,EAES,EAFTA,OACGt1F,EACM,iBACHxnI,EAAMw4I,aAAS,qBACnBx4I,OAEIsT,EAASklI,aAAS,qBACtBllI,UAEIwC,EAAO0iI,aAAS,qBACpB1iI,QAEIinN,EAAYrqF,WAsBlB,OArBAA,mBAAsB,WACpB,IACWsqF,EACPD,EADFzrI,QAGE0rI,IAAQF,IACVE,EAAIl9L,OAAShqB,EAAKlO,MAAQkO,EAAKjO,OAC/Bm1N,EAAI58L,4BAEL,CAACtqB,EAAM0xH,IACVkL,mBAAsB,WACpB,GAAImqF,GAAeE,EAAUzrI,QAAS,CACpC,IAAM2rI,EAAS3pN,EAIf,OAHAtT,GAAI,iBAAO,CACTsT,OAAQypN,EAAUzrI,YAEb,kBAAMtxF,GAAI,iBAAO,CACtBsT,OAAQ2pN,UAGX,CAAC3pN,EAAQypN,EAAWF,EAAa78N,IAChB0yI,gBAAoB,oBAAqBmO,YAAS,CACpE7T,IAAKsL,YAAU,CAACykF,EAAW/vF,KAC1BxF,Q,+HC3CU,SAAS2Y,EAAgBhT,EAAKjhJ,EAAKG,GAYhD,OAXIH,KAAOihJ,EACThwI,OAAO6L,eAAemkI,EAAKjhJ,EAAK,CAC9BG,MAAOA,EACP62B,YAAY,EACZD,cAAc,EACdykH,UAAU,IAGZyF,EAAIjhJ,GAAOG,EAGN8gJ,E,WCHH+vF,EAAmB,SAACt7N,EAAQu7N,GAAT,OAAuBv7N,EAASu7N,EAAWA,GAAYA,GAE1EC,E,kDA4BJ,WAAYlnN,EAAQglE,GAAY,0BAC9B,eAEAilE,EAAgB,eAAM,cAAU,GAEhCA,EAAgB,eAAM,kBAAc,GAEpCA,EAAgB,eAAM,WAAW,GAEjCA,EAAgB,eAAM,SAAU,IAAI3tI,WAEpC2tI,EAAgB,eAAM,cAAe,GAErCA,EAAgB,eAAM,cAAe/5I,KAErC+5I,EAAgB,eAAM,UAAW,GAEjCA,EAAgB,eAAM,UAAW/5I,KAEjC+5I,EAAgB,eAAM,gBAAiB,GAEvCA,EAAgB,eAAM,gBAAiBllJ,KAAKC,IAE5CilJ,EAAgB,eAAM,mBAAoB/5I,KAE1C+5I,EAAgB,eAAM,kBAAmB/5I,KAEzC+5I,EAAgB,eAAM,iBAAiB,GAEvCA,EAAgB,eAAM,gBAAiB,KAEvCA,EAAgB,eAAM,cAAc,GAEpCA,EAAgB,eAAM,YAAa,GAEnCA,EAAgB,eAAM,gBAAgB,GAEtCA,EAAgB,eAAM,cAAe,GAErCA,EAAgB,eAAM,aAAa,GAEnCA,EAAgB,eAAM,WAAY,GAElCA,EAAgB,eAAM,sBAAsB,GAE5CA,EAAgB,eAAM,cAAe,GAErCA,EAAgB,eAAM,cAAc,GAEpCA,EAAgB,eAAM,kBAAmB,GAEzCA,EAAgB,eAAM,OAAQ,CAC5B9yJ,KAAM,YACNgwO,GAAI,UACJ9vO,MAAO,aACP+vO,OAAQ,cAGVn9E,EAAgB,eAAM,eAAgB,CACpC9yJ,KAAMD,QAAMI,OACZF,OAAQF,QAAMK,MACdF,MAAOH,QAAMM,MAGfyyJ,EAAgB,eAAM,UAAW,CAC/Bo9E,IAAK5vO,QAAMH,OACXgwO,IAAK7vO,QAAMC,YAGbuyJ,EAAgB,eAAM,eAAW,GAEjCA,EAAgB,eAAM,iBAAa,GAEnCA,EAAgB,eAAM,aAAS,GAE/BA,EAAgB,eAAM,uBAAwB,MAE9CA,EAAgB,eAAM,qBAAiB,GAEvCA,EAAgB,eAAM,yBAAqB,GAE3CA,EAAgB,eAAM,qBAAiB,GAEvCA,EAAgB,eAAM,yBAAqB,GAE3CA,EAAgB,eAAM,mBAAe,GAErCA,EAAgB,eAAM,yBAAqB,GAE3CA,EAAgB,eAAM,iBAAa,GAEnCA,EAAgB,eAAM,aAAS,GAE/BA,EAAgB,eAAM,cAAU,GAEhCA,EAAgB,eAAM,eAAW,GAEjCA,EAAgB,eAAM,eAAW,GAEjC,EAAKjqI,OAASA,EACd,EAAKglE,WAAaA,EAElB,EAAKuiJ,QAAU,EAAKjjO,OAAO+S,QAC3B,EAAKmwN,UAAY,EAAKxnN,OAAO0J,SAASrS,QACtC,EAAKowN,MAAQ,EAAKznN,kBAAkB0pB,oBAAoB,EAAK1pB,OAAO6pB,KAAO,EAI3E,EAAK69L,cAAgB,kBAAMC,EAAUhpN,KAErC,EAAKipN,kBAAoB,kBAAMD,EAAU73N,OAEzC,EAAK+3N,cAAgB,SAAA1xO,GAEnB,IAAIwoB,EAAMqoN,EAAiB7wO,EAAO,EAAI4O,KAAKC,IACvC8iO,EAAaH,EAAUhpN,IAEvBmpN,EAAa,IAAGA,GAAc,EAAI/iO,KAAKC,IACvC2Z,EAAM,IAAGA,GAAO,EAAI5Z,KAAKC,IAC7B,IAAI+iO,EAAUhjO,KAAKgD,IAAI4W,EAAMmpN,GAEzB,EAAI/iO,KAAKC,GAAK+iO,EAAUA,IACtBppN,EAAMmpN,EACRnpN,GAAO,EAAI5Z,KAAKC,GAEhB8iO,GAAc,EAAI/iO,KAAKC,IAI3BgjO,EAAerpN,IAAMA,EAAMmpN,EAC3B9gM,EAAM1uB,UAGR,EAAK2vN,kBAAoB,SAAA9xO,GAEvB,IAAI2Z,EAAQk3N,EAAiB7wO,EAAO,EAAI4O,KAAKC,IACzCkjO,EAAeP,EAAU73N,MAEzBo4N,EAAe,IAAGA,GAAgB,EAAInjO,KAAKC,IAC3C8K,EAAQ,IAAGA,GAAS,EAAI/K,KAAKC,IACjC,IAAImjO,EAAYpjO,KAAKgD,IAAI+H,EAAQo4N,GAE7B,EAAInjO,KAAKC,GAAKmjO,EAAYA,IACxBr4N,EAAQo4N,EACVp4N,GAAS,EAAI/K,KAAKC,GAElBkjO,GAAgB,EAAInjO,KAAKC,IAI7BgjO,EAAel4N,MAAQA,EAAQo4N,EAC/BlhM,EAAM1uB,UAGR,EAAK8vN,YAAc,kBAAMphM,EAAMhnB,OAAO0J,SAASxG,WAAW8jB,EAAM1iC,SAEhE,EAAK+jO,kBAAoB,SAAArjJ,GACvBA,EAAW78B,iBAAiB,UAAWmgL,IACvC,EAAKC,qBAAuBvjJ,GAG9B,EAAKwjJ,UAAY,WACfxhM,EAAMugM,QAAQ3zN,KAAKozB,EAAM1iC,QACzB0iC,EAAMwgM,UAAU5zN,KAAKozB,EAAMhnB,OAAO0J,UAClCsd,EAAMygM,MAAQzgM,EAAMhnB,kBAAkB0pB,oBAAoB1C,EAAMhnB,OAAO6pB,KAAO,GAGhF,EAAKqY,MAAQ,WACXlb,EAAM1iC,OAAOsP,KAAKozB,EAAMugM,SACxBvgM,EAAMhnB,OAAO0J,SAAS9V,KAAKozB,EAAMwgM,WAE7BxgM,EAAMhnB,kBAAkB0pB,sBAC1B1C,EAAMhnB,OAAO6pB,KAAO7C,EAAMygM,MAC1BzgM,EAAMhnB,OAAOkqB,0BAGflD,EAAMryB,cAAc8zN,GACpBzhM,EAAM1uB,SACNmmC,EAAQiqL,EAAMluD,MAIhB,EAAKliK,OAAU,WACb,IAAM5M,EAAS,IAAI4Q,UAEbqsN,GAAO,IAAI7wN,cAAa8wN,mBAAmB5oN,EAAOoI,GAAI,IAAI9L,UAAQ,EAAG,EAAG,IACxEusN,EAAcF,EAAKtxN,QAAQjI,SAC3B05N,EAAe,IAAIxsN,UACnBysN,EAAiB,IAAIjxN,aACrBkxN,EAAQ,EAAIjkO,KAAKC,GACvB,OAAO,WACL,IAAM0kB,EAAWsd,EAAMhnB,OAAO0J,SAC9Bhe,EAAOkI,KAAK8V,GAAUpL,IAAI0oB,EAAM1iC,QAEhCoH,EAAO8Q,gBAAgBmsN,GAEvBhB,EAAUsB,eAAev9N,GAErBs7B,EAAMkiM,YAAczqL,IAAUiqL,EAAMluD,MACtC2uD,EAmJG,EAAIpkO,KAAKC,GAAK,GAAK,GAAKgiC,EAAMoiM,iBAhJ/BpiM,EAAMqiM,eACR1B,EAAU73N,OAASk4N,EAAel4N,MAAQk3B,EAAMsiM,cAChD3B,EAAUhpN,KAAOqpN,EAAerpN,IAAMqoB,EAAMsiM,gBAE5C3B,EAAU73N,OAASk4N,EAAel4N,MAClC63N,EAAUhpN,KAAOqpN,EAAerpN,KAIlC,IAAI5Y,EAAMihC,EAAMuiM,gBACZvjO,EAAMghC,EAAMwiM,gBA6ChB,OA3CIlnM,SAASv8B,IAAQu8B,SAASt8B,KACxBD,GAAOhB,KAAKC,GAAIe,GAAOijO,EAAejjO,EAAMhB,KAAKC,KAAIe,GAAOijO,GAC5DhjO,GAAOjB,KAAKC,GAAIgB,GAAOgjO,EAAehjO,EAAMjB,KAAKC,KAAIgB,GAAOgjO,GAG9DrB,EAAU73N,MADR/J,GAAOC,EACSjB,KAAKiB,IAAID,EAAKhB,KAAKgB,IAAIC,EAAK2hO,EAAU73N,QAEtC63N,EAAU73N,OAAS/J,EAAMC,GAAO,EAAIjB,KAAKiB,IAAID,EAAK4hO,EAAU73N,OAAS/K,KAAKgB,IAAIC,EAAK2hO,EAAU73N,QAKnH63N,EAAUhpN,IAAM5Z,KAAKiB,IAAIghC,EAAMyiM,cAAe1kO,KAAKgB,IAAIihC,EAAM0iM,cAAe/B,EAAUhpN,MACtFgpN,EAAUgC,WACVhC,EAAUjpN,QAAUiL,EAEpBg+M,EAAUjpN,OAAS3Z,KAAKiB,IAAIghC,EAAM4iM,YAAa7kO,KAAKgB,IAAIihC,EAAMumF,YAAao6G,EAAUjpN,UAEzD,IAAxBsoB,EAAMqiM,cACRriM,EAAM1iC,OAAO4uB,gBAAgB22M,EAAW7iM,EAAMsiM,eAE9CtiM,EAAM1iC,OAAOyb,IAAI8pN,GAGnBn+N,EAAOo+N,iBAAiBnC,GAExBj8N,EAAO8Q,gBAAgBqsN,GACvBn/M,EAAS9V,KAAKozB,EAAM1iC,QAAQyb,IAAIrU,GAChCs7B,EAAMhnB,OAAOsO,OAAO0Y,EAAM1iC,SAEE,IAAxB0iC,EAAMqiM,eACRrB,EAAel4N,OAAS,EAAIk3B,EAAMsiM,cAClCtB,EAAerpN,KAAO,EAAIqoB,EAAMsiM,cAChCO,EAAUp/N,eAAe,EAAIu8B,EAAMsiM,iBAEnCtB,EAAel+N,IAAI,EAAG,EAAG,GACzB+/N,EAAU//N,IAAI,EAAG,EAAG,IAGtB6f,EAAQ,KAIJogN,GAAejB,EAAa39N,kBAAkB67B,EAAMhnB,OAAO0J,UAAYi2G,GAAO,GAAK,EAAIopG,EAAe7vN,IAAI8tB,EAAMhnB,OAAO5H,aAAeunH,KACxI34F,EAAMryB,cAAc8zN,GACpBK,EAAal1N,KAAKozB,EAAMhnB,OAAO0J,UAC/Bq/M,EAAen1N,KAAKozB,EAAMhnB,OAAO5H,YACjC2xN,GAAc,GACP,IAhFE,GAwFf,EAAKngH,QAAU,SAAA5kC,GACTA,IAAe7zE,UACjBpH,QAAQ3T,MAAM,4HAGhB4wC,EAAMg+C,WAAaA,EAInBh+C,EAAMg+C,WAAWzpD,MAAMyuM,YAAc,OACrChjM,EAAMg+C,WAAW78B,iBAAiB,cAAem3F,IACjDt4G,EAAMg+C,WAAW78B,iBAAiB,cAAes3F,GACjDz4G,EAAMg+C,WAAW78B,iBAAiB,gBAAiBw3F,GACnD34G,EAAMg+C,WAAW78B,iBAAiB,QAAS8hL,IAG7C,EAAK7yN,QAAU,WACb,IAAI8yN,EAAmBC,EAAoBC,EAAoBC,EAAoBC,EAAoBC,EAE5D,QAA1CL,EAAoBljM,EAAMg+C,kBAA8C,IAAtBklJ,GAAwCA,EAAkBliL,oBAAoB,cAAes3F,IACpG,QAA3C6qF,EAAqBnjM,EAAMg+C,kBAA+C,IAAvBmlJ,GAAyCA,EAAmBniL,oBAAoB,cAAey3F,GACvG,QAA3C2qF,EAAqBpjM,EAAMg+C,kBAA+C,IAAvBolJ,GAAyCA,EAAmBpiL,oBAAoB,gBAAiB23F,GACzG,QAA3C0qF,EAAqBrjM,EAAMg+C,kBAA+C,IAAvBqlJ,GAAyCA,EAAmBriL,oBAAoB,QAASiiL,GACjG,QAA3CK,EAAqBtjM,EAAMg+C,kBAA+C,IAAvBslJ,GAAyCA,EAAmBp7D,cAAclnH,oBAAoB,cAAeszF,GACrH,QAA3CivF,EAAqBvjM,EAAMg+C,kBAA+C,IAAvBulJ,GAAyCA,EAAmBr7D,cAAclnH,oBAAoB,YAAa03F,GAE5H,OAA/B14G,EAAMuhM,sBACRvhM,EAAMuhM,qBAAqBvgL,oBAAoB,UAAWsgL,KAQ9D,IAAMthM,EAAQ,eACRyhM,EAAc,CAClB7kO,KAAM,UAEF4mO,EAAa,CACjB5mO,KAAM,SAEF6mO,EAAW,CACf7mO,KAAM,OAEF8kO,EAAQ,CACZluD,MAAO,EACPljL,OAAQ,EACRC,MAAO,EACPC,IAAK,EACLkzO,aAAc,EACdC,UAAW,EACXC,gBAAiB,EACjBC,mBAAoB,GAElBpsL,EAAQiqL,EAAMluD,KACZ76C,EAAM,KAENgoG,EAAY,IAAIloG,YAChBuoG,EAAiB,IAAIvoG,YACvB91G,EAAQ,EACNkgN,EAAY,IAAIvtN,UAClBytN,GAAc,EACZe,EAAc,IAAI7gO,UAClB8gO,EAAY,IAAI9gO,UAChB+gO,EAAc,IAAI/gO,UAClBghO,EAAW,IAAIhhO,UACfihO,EAAS,IAAIjhO,UACbkhO,EAAW,IAAIlhO,UACfmhO,EAAa,IAAInhO,UACjBohO,EAAW,IAAIphO,UACfqhO,EAAa,IAAIrhO,UACjBshO,EAAW,GACXC,EAAmB,GAMzB,SAASC,IACP,OAAO1mO,KAAK2B,IAAI,IAAMsgC,EAAM0kM,WAG9B,SAASvC,EAAWl+N,GAClB+8N,EAAel4N,OAAS7E,EAG1B,SAAS0gO,EAAS1gO,GAChB+8N,EAAerpN,KAAO1T,EAGxB,IAAM2gO,EAAW,WACf,IAAMvhO,EAAI,IAAIiS,UACd,OAAO,SAAiB2R,EAAU49M,GAChCxhO,EAAEyU,oBAAoB+sN,EAAc,GAEpCxhO,EAAEI,gBAAgBwjB,GAClB47M,EAAU9pN,IAAI1V,IAND,GAUXyhO,EAAS,WACb,IAAMzhO,EAAI,IAAIiS,UACd,OAAO,SAAe2R,EAAU49M,IACG,IAA7B7kM,EAAM+kM,mBACR1hO,EAAEyU,oBAAoB+sN,EAAc,IAEpCxhO,EAAEyU,oBAAoB+sN,EAAc,GACpCxhO,EAAEqT,aAAaspB,EAAMhnB,OAAOoI,GAAI/d,IAGlCA,EAAEI,eAAewjB,GACjB47M,EAAU9pN,IAAI1V,IAXH,GAgBT2hO,EAAO,WACX,IAAMtgO,EAAS,IAAI4Q,UACnB,OAAO,SAAa65K,EAAQE,GAC1B,IAAM5mK,EAAUuX,EAAMg+C,WAEtB,GAAIv1D,GAAWuX,EAAMhnB,kBAAkB0pB,qBAAqB1C,EAAMhnB,OAAOgrB,oBAAqB,CAE5F,IAAMthB,EAAWsd,EAAMhnB,OAAO0J,SAC9Bhe,EAAOkI,KAAK8V,GAAUpL,IAAI0oB,EAAM1iC,QAChC,IAAI2nO,EAAiBvgO,EAAO/G,SAE5BsnO,GAAkBlnO,KAAKwlC,IAAIvD,EAAMhnB,OAAO2pB,IAAM,EAAI5kC,KAAKC,GAAK,KAE5D4mO,EAAQ,EAAIz1C,EAAS81C,EAAiBx8M,EAAQiyH,aAAc16G,EAAMhnB,OAAOjQ,QACzE+7N,EAAM,EAAIz1C,EAAS41C,EAAiBx8M,EAAQiyH,aAAc16G,EAAMhnB,OAAOjQ,aAC9D0f,GAAWuX,EAAMhnB,kBAAkBuoC,sBAAsBvhB,EAAMhnB,OAAO2oC,sBAE/EijL,EAAQz1C,GAAUnvJ,EAAMhnB,OAAOyK,MAAQuc,EAAMhnB,OAAOwK,MAAQwc,EAAMhnB,OAAO6pB,KAAOpa,EAAQgyH,YAAaz6G,EAAMhnB,OAAOjQ,QAClH+7N,EAAMz1C,GAAUrvJ,EAAMhnB,OAAO0K,IAAMsc,EAAMhnB,OAAO2K,QAAUqc,EAAMhnB,OAAO6pB,KAAOpa,EAAQiyH,aAAc16G,EAAMhnB,OAAOjQ,UAGjHhG,QAAQC,KAAK,gFACbg9B,EAAMklM,WAAY,IAtBX,GA2Bb,SAASC,EAASC,GACZplM,EAAMhnB,kBAAkB0pB,qBAAqB1C,EAAMhnB,OAAOgrB,oBAC5DrhB,GAASyiN,EACAplM,EAAMhnB,kBAAkBuoC,sBAAsBvhB,EAAMhnB,OAAO2oC,sBACpE3hB,EAAMhnB,OAAO6pB,KAAO9kC,KAAKiB,IAAIghC,EAAMqlM,QAAStnO,KAAKgB,IAAIihC,EAAMslM,QAAStlM,EAAMhnB,OAAO6pB,KAAOuiM,IACxFplM,EAAMhnB,OAAOkqB,yBACb6/L,GAAc,IAEdhgO,QAAQC,KAAK,uFACbg9B,EAAMulM,YAAa,GAIvB,SAASC,EAAQJ,GACXplM,EAAMhnB,kBAAkB0pB,qBAAqB1C,EAAMhnB,OAAOgrB,oBAC5DrhB,GAASyiN,EACAplM,EAAMhnB,kBAAkBuoC,sBAAsBvhB,EAAMhnB,OAAO2oC,sBACpE3hB,EAAMhnB,OAAO6pB,KAAO9kC,KAAKiB,IAAIghC,EAAMqlM,QAAStnO,KAAKgB,IAAIihC,EAAMslM,QAAStlM,EAAMhnB,OAAO6pB,KAAOuiM,IACxFplM,EAAMhnB,OAAOkqB,yBACb6/L,GAAc,IAEdhgO,QAAQC,KAAK,uFACbg9B,EAAMulM,YAAa,GAOvB,SAASE,EAAsBpoO,GAC7BymO,EAAYhhO,IAAIzF,EAAM0rL,QAAS1rL,EAAM2rL,SAOvC,SAAS08C,EAAmBroO,GAC1B4mO,EAASnhO,IAAIzF,EAAM0rL,QAAS1rL,EAAM2rL,SAkFpC,SAAS28C,IACP,GAAuB,GAAnBpB,EAAS5mO,OACXmmO,EAAYhhO,IAAIyhO,EAAS,GAAGt7C,MAAOs7C,EAAS,GAAGr7C,WAC1C,CACL,IAAM7pL,EAAI,IAAOklO,EAAS,GAAGt7C,MAAQs7C,EAAS,GAAGt7C,OAC3C3pL,EAAI,IAAOilO,EAAS,GAAGr7C,MAAQq7C,EAAS,GAAGr7C,OACjD46C,EAAYhhO,IAAIzD,EAAGC,IAIvB,SAASsmO,IACP,GAAuB,GAAnBrB,EAAS5mO,OACXsmO,EAASnhO,IAAIyhO,EAAS,GAAGt7C,MAAOs7C,EAAS,GAAGr7C,WACvC,CACL,IAAM7pL,EAAI,IAAOklO,EAAS,GAAGt7C,MAAQs7C,EAAS,GAAGt7C,OAC3C3pL,EAAI,IAAOilO,EAAS,GAAGr7C,MAAQq7C,EAAS,GAAGr7C,OACjD+6C,EAASnhO,IAAIzD,EAAGC,IAIpB,SAASumO,IACP,IAAMzhO,EAAKmgO,EAAS,GAAGt7C,MAAQs7C,EAAS,GAAGt7C,MACrC5kL,EAAKkgO,EAAS,GAAGr7C,MAAQq7C,EAAS,GAAGr7C,MACrCjiK,EAAWlpB,KAAKiG,KAAKI,EAAKA,EAAKC,EAAKA,GAC1C+/N,EAAWthO,IAAI,EAAGmkB,GAapB,SAAS6+M,EAAsBzoO,GAC7B,GAAuB,GAAnBknO,EAAS5mO,OACXomO,EAAUjhO,IAAIzF,EAAM4rL,MAAO5rL,EAAM6rL,WAC5B,CACL,IAAMxmK,EAAWqjN,GAAyB1oO,GACpCgC,EAAI,IAAOhC,EAAM4rL,MAAQvmK,EAASrjB,GAClCC,EAAI,IAAOjC,EAAM6rL,MAAQxmK,EAASpjB,GACxCykO,EAAUjhO,IAAIzD,EAAGC,GAGnB0kO,EAAYxgO,WAAWugO,EAAWD,GAAargO,eAAeu8B,EAAMgmM,aACpE,IAAMv9M,EAAUuX,EAAMg+C,WAElBv1D,IACF05M,EAAW,EAAIpkO,KAAKC,GAAKgmO,EAAY3kO,EAAIopB,EAAQiyH,cAEjDiqF,EAAS,EAAI5mO,KAAKC,GAAKgmO,EAAY1kO,EAAImpB,EAAQiyH,eAGjDopF,EAAYl3N,KAAKm3N,GAGnB,SAASkC,EAAmB5oO,GAC1B,GAAuB,GAAnBknO,EAAS5mO,OACXumO,EAAOphO,IAAIzF,EAAM4rL,MAAO5rL,EAAM6rL,WACzB,CACL,IAAMxmK,EAAWqjN,GAAyB1oO,GACpCgC,EAAI,IAAOhC,EAAM4rL,MAAQvmK,EAASrjB,GAClCC,EAAI,IAAOjC,EAAM6rL,MAAQxmK,EAASpjB,GACxC4kO,EAAOphO,IAAIzD,EAAGC,GAGhB6kO,EAAS3gO,WAAW0gO,EAAQD,GAAUxgO,eAAeu8B,EAAMkmM,UAC3DlB,EAAIb,EAAS9kO,EAAG8kO,EAAS7kO,GACzB2kO,EAASr3N,KAAKs3N,GAGhB,SAASiC,EAAqB9oO,GAC5B,IAAMqlB,EAAWqjN,GAAyB1oO,GACpC+G,EAAK/G,EAAM4rL,MAAQvmK,EAASrjB,EAC5BgF,EAAKhH,EAAM6rL,MAAQxmK,EAASpjB,EAC5B2nB,EAAWlpB,KAAKiG,KAAKI,EAAKA,EAAKC,EAAKA,GAC1CggO,EAASvhO,IAAI,EAAGmkB,GAChBq9M,EAAWxhO,IAAI,EAAG/E,KAAK2B,IAAI2kO,EAAS/kO,EAAI8kO,EAAW9kO,EAAG0gC,EAAM0kM,YAC5DS,EAASb,EAAWhlO,GACpB8kO,EAAWx3N,KAAKy3N,GAgBlB,SAAS5rF,EAAcp7I,GACrB,IAAsB,IAAlB2iC,EAAM0D,QAAV,CAGE,IAAI0iM,EAAoBC,EAD1B,GAAwB,IAApB9B,EAAS5mO,OAGiC,QAA3CyoO,EAAqBpmM,EAAMg+C,kBAA+C,IAAvBooJ,GAAyCA,EAAmBl+D,cAAc/mH,iBAAiB,cAAemzF,GAClH,QAA3C+xF,EAAqBrmM,EAAMg+C,kBAA+C,IAAvBqoJ,GAAyCA,EAAmBn+D,cAAc/mH,iBAAiB,YAAau3F,IAqPhK,SAAoBr7I,GAClBknO,EAAStnO,KAAKI,GAnPdipO,CAAWjpO,GAEe,UAAtBA,EAAMsxL,YAgJZ,SAAsBtxL,GAGpB,OAFAkpO,GAAalpO,GAELknO,EAAS5mO,QACf,KAAK,EACH,OAAQqiC,EAAM8uJ,QAAQuxC,KACpB,KAAK5vO,QAAMH,OACT,IAA2B,IAAvB0vC,EAAMwmM,aAAwB,OAClCb,IACAluL,EAAQiqL,EAAMgC,aACd,MAEF,KAAKjzO,QAAMD,IACT,IAAwB,IAApBwvC,EAAMklM,UAAqB,OAC/BU,IACAnuL,EAAQiqL,EAAMiC,UACd,MAEF,QACElsL,EAAQiqL,EAAMluD,KAGlB,MAEF,KAAK,EACH,OAAQxzI,EAAM8uJ,QAAQwxC,KACpB,KAAK7vO,QAAMC,UACT,IAAyB,IAArBsvC,EAAMulM,aAA4C,IAApBvlM,EAAMklM,UAAqB,OA7PjEllM,EAAMulM,YAAYM,IAClB7lM,EAAMklM,WAAWU,IA8PbnuL,EAAQiqL,EAAMkC,gBACd,MAEF,KAAKnzO,QAAME,aACT,IAAyB,IAArBqvC,EAAMulM,aAA+C,IAAvBvlM,EAAMwmM,aAAwB,OA9PpExmM,EAAMulM,YAAYM,IAClB7lM,EAAMwmM,cAAcb,IA+PhBluL,EAAQiqL,EAAMmC,mBACd,MAEF,QACEpsL,EAAQiqL,EAAMluD,KAGlB,MAEF,QACE/7H,EAAQiqL,EAAMluD,KAGd/7H,IAAUiqL,EAAMluD,MAClBxzI,EAAMryB,cAAc61N,GAhMpBiD,CAAappO,GAuCjB,SAAqBA,GACnB,IAAIqpO,EAEJ,OAAQrpO,EAAMosL,QACZ,KAAK,EACHi9C,EAAc1mM,EAAM2mM,aAAax2O,KACjC,MAEF,KAAK,EACHu2O,EAAc1mM,EAAM2mM,aAAav2O,OACjC,MAEF,KAAK,EACHs2O,EAAc1mM,EAAM2mM,aAAat2O,MACjC,MAEF,QACEq2O,GAAe,EAGnB,OAAQA,GACN,KAAKx2O,QAAMK,MACT,IAAyB,IAArByvC,EAAMulM,WAAsB,QAnQtC,SAA8BloO,GAC5B+mO,EAAWthO,IAAIzF,EAAM0rL,QAAS1rL,EAAM2rL,SAmQhC49C,CAAqBvpO,GACrBo6C,EAAQiqL,EAAMnxO,MACd,MAEF,KAAKL,QAAMI,OACT,GAAI+M,EAAM8rL,SAAW9rL,EAAMisL,SAAWjsL,EAAM+rL,SAAU,CACpD,IAAwB,IAApBppJ,EAAMklM,UAAqB,OAC/BQ,EAAmBroO,GACnBo6C,EAAQiqL,EAAMlxO,QACT,CACL,IAA2B,IAAvBwvC,EAAMwmM,aAAwB,OAClCf,EAAsBpoO,GACtBo6C,EAAQiqL,EAAMpxO,OAGhB,MAEF,KAAKJ,QAAMM,IACT,GAAI6M,EAAM8rL,SAAW9rL,EAAMisL,SAAWjsL,EAAM+rL,SAAU,CACpD,IAA2B,IAAvBppJ,EAAMwmM,aAAwB,OAClCf,EAAsBpoO,GACtBo6C,EAAQiqL,EAAMpxO,WACT,CACL,IAAwB,IAApB0vC,EAAMklM,UAAqB,OAC/BQ,EAAmBroO,GACnBo6C,EAAQiqL,EAAMlxO,IAGhB,MAEF,QACEinD,EAAQiqL,EAAMluD,KAGd/7H,IAAUiqL,EAAMluD,MAClBxzI,EAAMryB,cAAc61N,GA/FpBqD,CAAYxpO,IAIhB,SAASi3I,EAAcj3I,IACC,IAAlB2iC,EAAM0D,UAEgB,UAAtBrmC,EAAMsxL,YA2LZ,SAAqBtxL,GAGnB,OAFAkpO,GAAalpO,GAELo6C,GACN,KAAKiqL,EAAMgC,aACT,IAA2B,IAAvB1jM,EAAMwmM,aAAwB,OAClCV,EAAsBzoO,GACtB2iC,EAAM1uB,SACN,MAEF,KAAKowN,EAAMiC,UACT,IAAwB,IAApB3jM,EAAMklM,UAAqB,OAC/Be,EAAmB5oO,GACnB2iC,EAAM1uB,SACN,MAEF,KAAKowN,EAAMkC,gBACT,IAAyB,IAArB5jM,EAAMulM,aAA4C,IAApBvlM,EAAMklM,UAAqB,QA/OnE,SAAiC7nO,GAC3B2iC,EAAMulM,YAAYY,EAAqB9oO,GACvC2iC,EAAMklM,WAAWe,EAAmB5oO,GA8OpCypO,CAAwBzpO,GACxB2iC,EAAM1uB,SACN,MAEF,KAAKowN,EAAMmC,mBACT,IAAyB,IAArB7jM,EAAMulM,aAA+C,IAAvBvlM,EAAMwmM,aAAwB,QAhPtE,SAAoCnpO,GAC9B2iC,EAAMulM,YAAYY,EAAqB9oO,GACvC2iC,EAAMwmM,cAAcV,EAAsBzoO,GA+O1C0pO,CAA2B1pO,GAC3B2iC,EAAM1uB,SACN,MAEF,QACEmmC,EAAQiqL,EAAMluD,MAvNhBwzD,CAAY3pO,GA2FhB,SAAqBA,GACnB,IAAsB,IAAlB2iC,EAAM0D,QAAmB,OAE7B,OAAQ+T,GACN,KAAKiqL,EAAMpxO,OACT,IAA2B,IAAvB0vC,EAAMwmM,aAAwB,QAxSxC,SAA+BnpO,GAC7B0mO,EAAUjhO,IAAIzF,EAAM0rL,QAAS1rL,EAAM2rL,SACnCg7C,EAAYxgO,WAAWugO,EAAWD,GAAargO,eAAeu8B,EAAMgmM,aACpE,IAAMv9M,EAAUuX,EAAMg+C,WAElBv1D,IACF05M,EAAW,EAAIpkO,KAAKC,GAAKgmO,EAAY3kO,EAAIopB,EAAQiyH,cAEjDiqF,EAAS,EAAI5mO,KAAKC,GAAKgmO,EAAY1kO,EAAImpB,EAAQiyH,eAGjDopF,EAAYl3N,KAAKm3N,GACjB/jM,EAAM1uB,SA6RF21N,CAAsB5pO,GACtB,MAEF,KAAKqkO,EAAMnxO,MACT,IAAyB,IAArByvC,EAAMulM,WAAsB,QA9RtC,SAA8BloO,GAC5BgnO,EAASvhO,IAAIzF,EAAM0rL,QAAS1rL,EAAM2rL,SAClCs7C,EAAW9gO,WAAW6gO,EAAUD,GAE5BE,EAAWhlO,EAAI,EACjB6lO,EAASV,KACAH,EAAWhlO,EAAI,GACxBkmO,EAAQf,KAGVL,EAAWx3N,KAAKy3N,GAChBrkM,EAAM1uB,SAoRF41N,CAAqB7pO,GACrB,MAEF,KAAKqkO,EAAMlxO,IACT,IAAwB,IAApBwvC,EAAMklM,UAAqB,QArRrC,SAA4B7nO,GAC1B6mO,EAAOphO,IAAIzF,EAAM0rL,QAAS1rL,EAAM2rL,SAChCm7C,EAAS3gO,WAAW0gO,EAAQD,GAAUxgO,eAAeu8B,EAAMkmM,UAC3DlB,EAAIb,EAAS9kO,EAAG8kO,EAAS7kO,GACzB2kO,EAASr3N,KAAKs3N,GACdlkM,EAAM1uB,SAiRF61N,CAAmB9pO,IAzGrB+pO,CAAY/pO,IAIhB,SAASq7I,EAAYr7I,GAYjB,IAAIgqO,EAAoBC,GAXJ,IAAlBtnM,EAAM0D,UAENrmC,EAAMsxL,YAmNV3uJ,EAAMryB,cAAc81N,GACpBhsL,EAAQiqL,EAAMluD,KA9Md+zD,GAAclqO,GAEU,IAApBknO,EAAS5mO,SAGiC,QAA3C0pO,EAAqBrnM,EAAMg+C,kBAA+C,IAAvBqpJ,GAAyCA,EAAmBn/D,cAAclnH,oBAAoB,cAAeszF,GACpH,QAA5CgzF,EAAsBtnM,EAAMg+C,kBAAgD,IAAxBspJ,GAA0CA,EAAoBp/D,cAAclnH,oBAAoB,YAAa03F,KAItK,SAASC,EAAgBt7I,GACvBkqO,GAAclqO,GA2FhB,SAAS4lO,EAAa5lO,IACE,IAAlB2iC,EAAM0D,UAA0C,IAArB1D,EAAMulM,YAAwB9tL,IAAUiqL,EAAMluD,MAAQ/7H,IAAUiqL,EAAMpxO,SAIrG+M,EAAMsjF,iBACN3gD,EAAMryB,cAAc61N,GA9RtB,SAA0BnmO,GACpBA,EAAMgyL,OAAS,EACjBm2C,EAAQf,KACCpnO,EAAMgyL,OAAS,GACxB81C,EAASV,KAGXzkM,EAAM1uB,SAwRNk2N,CAAiBnqO,GACjB2iC,EAAMryB,cAAc81N,IAGtB,SAASnC,GAAUjkO,IACK,IAAlB2iC,EAAM0D,UAAyC,IAApB1D,EAAMklM,WA1RvC,SAAuB7nO,GACrB,IAAI07B,GAAc,EAElB,OAAQ17B,EAAMkhK,MACZ,KAAKv+H,EAAMhD,KAAKmjM,GACd6E,EAAI,EAAGhlM,EAAMynM,aACb1uM,GAAc,EACd,MAEF,KAAKiH,EAAMhD,KAAKojM,OACd4E,EAAI,GAAIhlM,EAAMynM,aACd1uM,GAAc,EACd,MAEF,KAAKiH,EAAMhD,KAAK7sC,KACd60O,EAAIhlM,EAAMynM,YAAa,GACvB1uM,GAAc,EACd,MAEF,KAAKiH,EAAMhD,KAAK3sC,MACd20O,GAAKhlM,EAAMynM,YAAa,GACxB1uM,GAAc,EAIdA,IAEF17B,EAAMsjF,iBACN3gD,EAAM1uB,UA+PRo2N,CAAcrqO,GA8FhB,SAASi7I,GAAcj7I,IACC,IAAlB2iC,EAAM0D,SACVrmC,EAAMsjF,iBAOR,SAAS4mJ,GAAclqO,UACdmnO,EAAiBnnO,EAAM00I,WAE9B,IAAK,IAAIt0I,EAAI,EAAGA,EAAI8mO,EAAS5mO,OAAQF,IACnC,GAAI8mO,EAAS9mO,GAAGs0I,WAAa10I,EAAM00I,UAEjC,YADAwyF,EAASnnO,OAAOK,EAAG,GAMzB,SAAS8oO,GAAalpO,GACpB,IAAIqlB,EAAW8hN,EAAiBnnO,EAAM00I,gBAErB/hJ,IAAb0yB,IACFA,EAAW,IAAIzf,UACfuhO,EAAiBnnO,EAAM00I,WAAarvH,GAGtCA,EAAS5f,IAAIzF,EAAM4rL,MAAO5rL,EAAM6rL,OAGlC,SAAS68C,GAAyB1oO,GAChC,IAAMsqO,EAAUtqO,EAAM00I,YAAcwyF,EAAS,GAAGxyF,UAAYwyF,EAAS,GAAKA,EAAS,GACnF,OAAOC,EAAiBmD,EAAQ51F,WAh5BJ,YAo5BX/hJ,IAAfguF,GAA0B,EAAK4kC,QAAQ5kC,GAE3C,EAAK1sE,SAt5ByB,E,UA5BN3U,mB,+FCNtBujO,EAA6B1qF,cAAiB,WAUjD1F,GAAQ,IATT6vF,EASS,EATTA,YACAvpN,EAQS,EARTA,OACA0gI,EAOS,EAPTA,QACA94D,EAMS,EANTA,WAMS,IALTqkJ,qBAKS,SAJTuF,EAIS,EAJTA,SACArxH,EAGS,EAHTA,QACAsxH,EAES,EAFTA,MACGC,EACM,iBACHnyF,EAAa2F,aAAS,qBAC1B3F,cAEIoyF,EAAgBzsF,aAAS,qBAC7BllI,UAEIgzB,EAAKkyG,aAAS,qBAClBlyG,MAEItmC,EAAMw4I,aAAS,qBACnBx4I,OAEI2mC,EAAM6xG,aAAS,qBACnB7xG,OAEI04E,EAAcm5B,aAAS,qBAC3Bn5B,eAEI6lH,EAAa5xN,GAAU2xN,EACvBE,EAAiBjqJ,GAAc50C,EAAG40C,WAClC64D,EAAWrB,WAAc,kBAAM,IAAI0yF,EAAgBF,KAAa,CAACA,IAqCvE,OApCAvsF,aAAS,WACH5E,EAASnzG,SAASmzG,EAASvlI,YAEjCkkI,aAAgB,WACd,IAAMxhI,EAAW,SAAAtQ,GACfiyI,IACImB,GAAS30B,EAAY20B,UACrB8wF,GAAUA,EAASlkO,IAOzB,OAJAmzI,EAASj0B,QAAQqlH,GACjBpxF,EAAS11F,iBAAiB,SAAUntC,GAChCuiG,GAASsgC,EAAS11F,iBAAiB,QAASo1D,GAC5CsxH,GAAOhxF,EAAS11F,iBAAiB,MAAO0mL,GACrC,WACLhxF,EAAS71F,oBAAoB,SAAUhtC,GACnCuiG,GAASsgC,EAAS71F,oBAAoB,QAASu1D,GAC/CsxH,GAAOhxF,EAAS71F,oBAAoB,MAAO6mL,GAC/ChxF,EAASzmI,aAEV,CAACw3N,EAAUrxH,EAASsxH,EAAO/wF,EAASD,EAAUlB,IACjDH,aAAgB,WACd,GAAImqF,EAAa,CAEf,IAAMwI,EAAM1+L,IAAMotG,SAMlB,OAJA/zI,EAAI,CACF+zI,aAGK,kBAAM/zI,EAAI,CACf+zI,SAAUsxF,QAIb,CAACxI,EAAa9oF,IACGrB,gBAAoB,YAAamO,YAAS,CAC5D7T,IAAKA,EACL92H,OAAQ69H,EACRwrF,cAAeA,GACdyF,Q,0GC3EL,SAASlqO,EAAKkyI,EAAK3gJ,GACE,oBAAR2gJ,EAAoBA,EAAI3gJ,GAAuB,MAAP2gJ,IAAaA,EAAI17C,QAAUjlG,GAcjEi5O,MAXf,SAA2B34O,GAAmB,IAAf6wM,EAAe,uDAAR,GAAItkK,EAAI,uCAC5C,EAAqBw5G,aAArB,mBAAO/9F,EAAP,KAAc30C,EAAd,KAOA,OANA0yI,mBAAsB,WACpB,IAAMrmJ,EAAQM,IAGd,OAFAqT,EAAI3T,GACJyO,EAAKo+B,EAAI7sC,GACF,kBAAMyO,EAAKo+B,EAAI,SACrBskK,GACI7oJ,GCTT,SAAS6sH,EAAT,GAIG,QAHDK,iBAGC,MAHW,EAGX,EAFD/qB,EAEC,EAFDA,UACAj0H,EACC,EADDA,OAEM+oG,EAAQ05G,GAAkB,kBAAM,IAAIC,MAAa,IAgBvD,OAfA7yF,aAAgB,WACd,GAAI9mB,EAAO,CACT,IAAM5D,EAAOnlG,GAAUA,EAAOyuE,SAAWjqF,SAASwjI,KAClDjf,EAAMi2C,UAAUA,GACR,MAAR75C,GAAwBA,EAAKszB,YAAY1vB,EAAM61C,KAC3C3qB,GAAWlrB,EAAM61C,IAAI+jE,UAAUvvN,IAAI6gI,GACvC,IAAMgrB,EAAQ9sB,aAAU,kBAAMppB,EAAMk2C,WAC9Br+H,EAAMwxG,aAAe,kBAAMrpB,EAAMnoF,SACvC,OAAO,WACG,MAARukF,GAAwBA,EAAKk0B,YAAYtwB,EAAM61C,KAC/CK,IACAr+H,QAGH,CAAC5gB,EAAQ+oG,EAAOkrB,EAAW+qB,IACvB","file":"static/js/2.03ef8255.chunk.js","sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","/**\n * @license\n * Copyright 2010-2021 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '133';\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 FlatShading = 1;\nconst SmoothShading = 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 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;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\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 UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\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 SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\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 = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\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 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\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\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\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\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\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\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\nlet _seed = 1234567;\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n//\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nconst hasRandomUUID = typeof crypto !== 'undefined' && 'randomUUID' in crypto;\n\nfunction generateUUID() {\n\n\tif ( hasRandomUUID ) {\n\n\t\treturn crypto.randomUUID().toUpperCase();\n\n\t}\n\n\t// TODO Remove this code when crypto.randomUUID() is available everywhere\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// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toUpperCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidian modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\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// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\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\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// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t// Park-Miller algorithm\n\n\t_seed = _seed * 16807 % 2147483647;\n\n\treturn ( _seed - 1 ) / 2147483646;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\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\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\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});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\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\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\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\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\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\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\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\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\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\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\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\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\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\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\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\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\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\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\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\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\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\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\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\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\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\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\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\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\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\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\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\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\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\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\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\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\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\nVector2.prototype.isVector2 = true;\n\nclass Matrix3 {\n\n\tconstructor() {\n\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 ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\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\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\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\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\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\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\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\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\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\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\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\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\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\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\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\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\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\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\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\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\nlet _canvas;\n\nclass ImageUtils {\n\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\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.image = image;\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\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// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false;\n\n\t}\n\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\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.encoding = source.encoding;\n\n\t\treturn this;\n\n\t}\n\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.5,\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\tmapping: this.mapping,\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\ttype: this.type,\n\t\t\tencoding: this.encoding,\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\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t// check cube texture with data textures\n\n\t\t\t\t\t\tif ( image[ i ].isDataTexture ) {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ].image ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ] ) );\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\t// process single image\n\n\t\t\t\t\turl = serializeImage( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\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\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\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\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype.isTexture = true;\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.prototype.slice.call( 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\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\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\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\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\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\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\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\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\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\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\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\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\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\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\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\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\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\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\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\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\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\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\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\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\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\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\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\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\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\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\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\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\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\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\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\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\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\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\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\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\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\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\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\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\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\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\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\nVector4.prototype.isVector4 = true;\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 WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\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\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t}\n\n\tsetTexture( texture ) {\n\n\t\ttexture.image = {\n\t\t\twidth: this.width,\n\t\t\theight: this.height,\n\t\t\tdepth: this.depth\n\t\t};\n\n\t\tthis.texture = texture;\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\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\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.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.image = { ...this.texture.image }; // See #20328.\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count ) {\n\n\t\tsuper( width, height );\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\n\t\t}\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.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ 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\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.samples = 4;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true;\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\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\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\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\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\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\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\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\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\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\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\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\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\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 !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\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\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\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\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\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\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\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\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\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\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\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\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\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\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();\n\t\t\tthis._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\tslerpQuaternions( qa, qb, t ) {\n\n\t\tthis.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\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\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\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\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_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\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\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\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\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\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\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\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\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\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\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\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\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\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\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\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\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\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\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\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\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\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\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\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\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\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\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\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\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\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\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\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\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\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\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\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\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\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\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\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\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\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\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\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\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\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\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\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\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\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\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\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\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\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\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\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\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\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\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\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\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\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\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\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\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\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\nVector3.prototype.isVector3 = true;\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\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\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\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\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\tsetFromObject( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\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\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\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\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\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\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\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\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\texpandByObject( object ) {\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\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box$3 );\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 ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\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 ? false : true;\n\n\t}\n\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\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\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 ? false : true;\n\n\t}\n\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\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\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$3.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$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\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$3, _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$3, _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$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\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\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\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\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\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox3.prototype.isBox3 = true;\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$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__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 seperating 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 seperating 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 seperating 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$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\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\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$2.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\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\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\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\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\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\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\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\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\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\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\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\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\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\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\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\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.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\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.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/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.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\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 both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && 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\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\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\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\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\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\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== 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\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/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\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\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\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 ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\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\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\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\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\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\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\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\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\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\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\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\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\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\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\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\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\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\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\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\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\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\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\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\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\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\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\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\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\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\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\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\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\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\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\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\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\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\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\tmakeOrthographic( left, right, top, bottom, near, far ) {\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\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\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\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\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\nMatrix4.prototype.isMatrix4 = true;\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$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\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\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\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\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\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\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\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\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\tsetFromRotationMatrix( m, order = this._order, update = true ) {\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\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\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\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\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\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\ttoVector3( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\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}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\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;\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}\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\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.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\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\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\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\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\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\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\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\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\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\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\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\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\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\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\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\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\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\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\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\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\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\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\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}\n\n\t\treturn this;\n\n\t}\n\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\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\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\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\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\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\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\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\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\traycast() {}\n\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\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\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\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\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\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\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 ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\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.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\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\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\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};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\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 ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.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\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 ) {\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\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\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\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\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\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.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\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__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\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\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// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\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\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\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\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\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\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\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\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\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\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\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\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\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\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.fog = true;\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.format = RGBAFormat;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\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\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\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: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\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.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\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\ttoJSON( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\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.5,\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.sheenTint && this.sheenTint.isColor ) data.sheenTint = this.sheenTint.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 && 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.specularTint && this.specularTint.isColor ) data.specularTint = this.specularTint.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.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.specularTintMap && this.specularTintMap.isTexture ) data.specularTintMap = this.specularTintMap.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.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 ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationTint !== undefined ) data.attenuationTint = this.attenuationTint.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 ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.format !== RGBAFormat ) data.format = this.format;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && 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 && 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.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\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 = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) 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 ( isRoot ) {\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\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.format = source.format;\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\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.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\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\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nMaterial.prototype.isMaterial = true;\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\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\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\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\tsetHex( hex ) {\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\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l ) {\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\treturn this;\n\n\t}\n\n\tsetStyle( style ) {\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 = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.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\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\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\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\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+)\\%\\s*,\\s*(\\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\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\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\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style ) {\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 );\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\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\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\tcopyGammaToLinear( color, gammaFactor = 2.0 ) {\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToGamma( color, gammaFactor = 2.0 ) {\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t}\n\n\tconvertGammaToLinear( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToGamma( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\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\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\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tconst r = this.r, g = this.g, b = this.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\tgetStyle() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\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\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\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\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\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\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\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\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\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\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\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\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\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\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n * }\n */\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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.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.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\treturn this;\n\n\t}\n\n}\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\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.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 === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\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\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\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\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\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.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( 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.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( 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.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( 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\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\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\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\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\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\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\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\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\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.prototype.slice.call( 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\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\nBufferAttribute.prototype.isBufferAttribute = true;\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}\n\n}\n\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\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\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__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\tObject.defineProperty( this, 'id', { value: _id ++ } );\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.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 ( arrayMax( index ) > 65535 ? 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\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 position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\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. Alternatively set \"mesh.frustumCulled\" to \"false\".', 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$1.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$1.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$1.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$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.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. Alternatively set \"mesh.frustumCulled\" to \"false\".', 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$1.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$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.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$1.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 indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( attributes.tangent === undefined ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = attributes.tangent.array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; 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.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\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: indices.length\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\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ 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.fromArray( normals, v * 3 );\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.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = 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( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ 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\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\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\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\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.5,\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\t return 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\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nBufferGeometry.prototype.isBufferGeometry = true;\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\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 _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\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 = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\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// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\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\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\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\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\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\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\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 if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\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\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\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\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\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\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\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}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n}\n\nMesh.prototype.isMesh = true;\n\nfunction checkIntersection( 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 !== DoubleSide, 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 checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\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\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\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\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\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\tdst[ u ][ p ] = property.clone();\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\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\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: \n * }\n */\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\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.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\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'uv2': [ 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\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\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\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.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\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\nShaderMaterial.prototype.isShaderMaterial = true;\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\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\treturn this;\n\n\t}\n\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\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\nCamera.prototype.isCamera = true;\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\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 .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 * 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 * Calculates the focal length from the current .fov and .filmGauge.\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\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\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\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 * 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 *\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 * Note there is no reason monitors have to be the same size or in a grid.\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\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\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 );\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\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\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 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\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, encoding );\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\nCubeTexture.prototype.isCubeTexture = true;\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options, dummy ) {\n\n\t\tif ( Number.isInteger( options ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\t\toptions = dummy;\n\n\t\t}\n\n\t\tsuper( size, size, options );\n\n\t\toptions = options || {};\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 = new CubeTexture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\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\tthis.texture._needsFlipEnvMap = false;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.format = RGBAFormat; // see #18859\n\t\tthis.texture.encoding = texture.encoding;\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 \n\t\t\t\t\t#include \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 \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\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\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\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\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\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\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\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\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\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( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\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\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\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\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nPlane.prototype.isPlane = true;\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\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\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\tsetFromProjectionMatrix( m ) {\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\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\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\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$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 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\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\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, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\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\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 = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\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};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\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.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\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\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\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\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\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\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).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\\tif ( diffuseColor.a < alphaTest ) discard;\\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, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenTint, 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 sheenTint * ( D * V );\\n}\\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( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\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#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\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 )\\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 )\\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\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; }\\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 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.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}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.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\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\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\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + 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 ), m0, cubeUV_maxMipLevel );\\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_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\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, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( 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 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\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, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\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 int maxMipLevel;\\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 )\\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 )\\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 texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tlightMapIrradiance *= PI;\\n\\t#endif\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec;\\n\\t\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\t\\treflectVec = reflect( - viewDir, normal );\\n\\t\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\\t\\t\\t#endif\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\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 GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\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 GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularTintFactor = specularTint;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARTINTMAP\\n\\t\\t\\tspecularTintFactor *= specularTintMapTexelToLinear( texture2D( specularTintMap, vUv ) ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularTintFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularTintFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenTint = sheenTint;\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n#endif\";\n\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_SHEEN\\n\\t\\tvec3 sheenTint;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\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}\\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\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenTint, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\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 = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\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\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\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, 2 ) * 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\";\n\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 vec2 morphTargetsTextureSize;\\n\\t\\tvec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {\\n\\t\\t\\tfloat texelIndex = float( vertexIndex * stride + offset );\\n\\t\\t\\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\\n\\t\\t\\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\\n\\t\\t\\treturn texture( morphTargetsTexture, morphUV ).xyz;\\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\";\n\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\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];\\n\\t\\t\\t#else\\n\\t\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t\\t#endif\\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\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\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 OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\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.;\\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}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\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_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, vUv );\\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 = \"#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\\tvarying vec4 vSpotShadowCoord[ 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\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\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\";\n\nvar shadowmap_pars_vertex = \"#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\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ 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 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\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\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.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, vSpotShadowCoord[ 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}\";\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\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\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, vUv );\\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 toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationTint, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\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 attenuationTint;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, 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( float roughness, float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\\n\\t\\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\\n\\t\\tvec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"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$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\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}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\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 \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\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 \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\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 \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\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\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\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( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\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 SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularTint;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARTINTMAP\\n\\t\\tuniform sampler2D specularTintMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenTint;\\n\\tuniform float sheenRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\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 \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\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 \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\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\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\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\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_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_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\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\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\toutput_fragment: output_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\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$g,\n\tbackground_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: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // standard, physical\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\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: 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\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\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { 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\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: 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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: 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: 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.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: 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: 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: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: 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: 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: 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 } // temporary\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: 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: 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: 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: 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: 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: 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: 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: 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: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\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: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: 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: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: 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: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenTint: { value: new Color( 0x000000 ) },\n\t\t\tsheenRoughness: { value: 0 },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationTint: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 0 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularTint: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularTintMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\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\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\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.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.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// enable code injection for non-built-in material\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\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\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\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// enable code injection for non-built-in material\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\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\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\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\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\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( 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( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\tattributesNum ++;\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( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t\tattributesNum ++;\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\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( 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 ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\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\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\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\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 && 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( 34962, 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);\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( 34962, 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);\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\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\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, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\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\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\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 getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).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( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).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\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\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 drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\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\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\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, camera ) {\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\tglobalState = projectPlanes( planes, camera, 0 );\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\t\tresetGlobalState();\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 && texture.isRenderTargetTexture === false ) {\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 currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\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\trenderer.setRenderTarget( currentRenderTarget );\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\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\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\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\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\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 );\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\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\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\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\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 ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\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( 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\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\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._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\t\tthis._equirectShader = null;\n\t\tthis._cubemapShader = 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 (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\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 * (RGBFormat) or HDR (RGBEFormat). 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 */\n\tfromEquirectangular( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\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._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\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._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\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._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t// private interface\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\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( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\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 outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\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\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\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.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\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.outputEncoding = outputEncoding;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_setEncoding( uniform, texture ) {\n\n\t\tif ( this._renderer.capabilities.isWebGL2 === true && texture.format === RGBAFormat && texture.type === UnsignedByteType && texture.encoding === sRGBEncoding ) {\n\n\t\t\tuniform.value = ENCODINGS[ LinearEncoding ];\n\n\t\t} else {\n\n\t\t\tuniform.value = ENCODINGS[ texture.encoding ];\n\n\t\t}\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tthis._setEncoding( uniforms[ 'inputEncoding' ], texture );\n\t\tthis._setEncoding( uniforms[ 'outputEncoding' ], cubeUVRenderTarget.texture );\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\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\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( 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_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( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _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\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\n\t\tthis._setEncoding( blurUniforms[ 'inputEncoding' ], targetIn.texture );\n\t\tthis._setEncoding( blurUniforms[ 'outputEncoding' ], targetIn.texture );\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\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\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\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\t_lodPlanes.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( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, 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( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\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\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\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${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \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\tgl_FragColor = linearToOutputTexel( gl_FragColor );\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 _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\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 vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\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 _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\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 samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\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 _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\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 _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\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 && texture.isRenderTargetTexture === false ) {\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\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\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\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 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 ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\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\tconsole.warn( '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 ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\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 {\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}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? 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, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\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\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\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 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\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.frame ++;\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\nclass DataTexture2DArray extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\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.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector3();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst numberOfMorphTargets = geometry.morphAttributes.position.length;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== numberOfMorphTargets ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\n\t\t\t\tconst numberOfVertices = geometry.attributes.position.count;\n\t\t\t\tconst numberOfVertexData = ( hasMorphNormals === true ) ? 2 : 1; // (v,n) vs. (v)\n\n\t\t\t\tlet width = numberOfVertices * numberOfVertexData;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * numberOfMorphTargets );\n\n\t\t\t\tconst texture = new DataTexture2DArray( buffer, width, height, numberOfMorphTargets );\n\t\t\t\ttexture.format = RGBAFormat; // using RGBA since RGB might be emulated (and is thus slower)\n\t\t\t\ttexture.type = FloatType;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = numberOfVertexData * 4;\n\n\t\t\t\tfor ( let i = 0; i < numberOfMorphTargets; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\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\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\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\tentry = {\n\t\t\t\t\tcount: numberOfMorphTargets,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t}\n\n\t\t\t//\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\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\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\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\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\nclass DataTexture3D 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 DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( 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.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.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture3D.prototype.isDataTexture3D = true;\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\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = 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)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\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)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\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\ttextures.safeSetTexture2D( v || emptyTexture, 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 || emptyTexture3d, 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.safeSetTextureCube( 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 || emptyTexture2dArray, 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 / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\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 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}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tconst cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\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\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\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\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + addLineNumbers( gl.getShaderSource( shader ) );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\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 = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\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\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\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, 35721 );\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 === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) 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\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_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/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\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\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\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\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;\\nprecision ' + parameters.precision + ' int;';\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\tcase CubeUVRefractionMapping:\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\t\t\tcase CubeUVRefractionMapping:\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 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\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( 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\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\tcustomExtensions,\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_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.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.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\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.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '',\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\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 ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\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.morphTargets && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargets && parameters.isWebGL2 ) ? '#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.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\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'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\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'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\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\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\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\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\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.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '',\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\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\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 ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\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.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\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.format === RGBFormat ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.specularTintMap ? getTexelDecodingFunction( 'specularTintMapTexelToLinear', parameters.specularTintMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#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.isWebGL2 && 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\t'precision mediump sampler2DArray;',\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 ) ? '' : '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, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, 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\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\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\tcachedUniforms = new WebGLUniforms( gl, program );\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\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\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.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\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = 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\tconst parameterNames = [\n\t\t'precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor',\n\t\t'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV',\n\t\t'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap',\n\t\t'objectSpaceNormalMap', 'tangentSpaceNormalMap',\n\t\t'clearcoat', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap',\n\t\t'displacementMap',\n\t\t'specularMap', 'specularIntensityMap', 'specularTintMap', 'specularTintMapEncoding', 'roughnessMap', 'metalnessMap', 'gradientMap',\n\t\t'alphaMap', 'alphaTest', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2',\n\t\t'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning',\n\t\t'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'morphTargetsCount', 'premultipliedAlpha',\n\t\t'numDirLights', 'numPointLights', 'numSpotLights', 'numHemiLights', 'numRectAreaLights',\n\t\t'numDirLightShadows', 'numPointLightShadows', 'numSpotLightShadows',\n\t\t'shadowMapEnabled', 'shadowMapType', 'toneMapping', 'physicallyCorrectLights',\n\t\t'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering', 'format',\n\t\t'sheen', 'transmission', 'transmissionMap', 'thicknessMap'\n\t];\n\n\tfunction getMaxBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( map && map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map && map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLPrograms.getTextureEncodingFromMap: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t} else {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t}\n\n\t\tif ( isWebGL2 && map && map.isTexture && map.format === RGBAFormat && map.type === UnsignedByteType && map.encoding === sRGBEncoding ) {\n\n\t\t\tencoding = LinearEncoding; // disable inline decode for sRGB textures in WebGL 2\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\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\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\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\tlet vertexShader, fragmentShader;\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}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularTintMap: !! material.specularTintMap,\n\t\t\tspecularTintMapEncoding: getTextureEncodingFromMap( material.specularTintMap ),\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! object.geometry && !! object.geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! object.geometry && !! object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularTintMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularTintMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: !! material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: !! object.geometry && !! object.geometry.morphAttributes.position,\n\t\t\tmorphNormals: !! object.geometry && !! object.geometry.morphAttributes.normal,\n\t\t\tmorphTargetsCount: ( !! object.geometry && !! object.geometry.morphAttributes.position ) ? object.geometry.morphAttributes.position.length : 0,\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\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\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tformat: material.format,\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: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\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\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\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.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\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\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\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\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\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\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.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\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( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\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\t\tconst materialProperties = properties.get( material );\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\tprogram: materialProperties.program || defaultProgram,\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.program = materialProperties.program || defaultProgram;\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.program = 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( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ 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\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\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\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 shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\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},\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\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\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\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, physicallyCorrectLights ) {\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\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\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 * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\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} 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 * scaleFactor );\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.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 * scaleFactor );\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\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.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\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\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\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\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 * scaleFactor );\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.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 * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\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 ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\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\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\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\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.spotShadowMatrix.length = numSpotShadows;\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\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\t\t\t\tuniforms.direction.normalize();\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, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\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( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\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\tlights: lights\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, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ 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\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.fog = false;\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\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\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.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\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\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\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;\\nuniform float samples;\\n#include \\nvoid main() {\\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 = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\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\tsamples: { value: 8.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\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// 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 && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\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.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\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\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.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 && 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\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\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\tshadowMaterialVertical.uniforms.samples.value = shadow.blurSamples;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.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\tshadowMaterialHorizontal.uniforms.samples.value = shadow.blurSamples;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, 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}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\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\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\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\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, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, 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, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, 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}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\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\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\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 ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\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\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\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( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\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\tlet enabledCapabilities = {};\n\n\tlet xrFramebuffer = null;\n\tlet currentBoundFramebuffers = {};\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 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( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\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( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\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, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\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 bindXRFramebuffer( framebuffer ) {\n\n\t\tif ( framebuffer !== xrFramebuffer ) {\n\n\t\t\tgl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\txrFramebuffer = framebuffer;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( framebuffer === null && xrFramebuffer !== null ) framebuffer = xrFramebuffer; // use active XR framebuffer if available\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\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\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 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 ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( 3042 );\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( 3042 );\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( 32774 );\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( 1, 771, 1, 771 );\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( 1, 1 );\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( 0, 0, 769, 771 );\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( 0, 768, 0, 770 );\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( 770, 771, 1, 771 );\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( 770, 1 );\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.blendFunc( 0, 769 );\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( 0, 768 );\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\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\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\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.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( 32926 )\n\t\t\t: disable( 32926 );\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( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\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( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\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( 32823 );\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( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + 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 ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\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.apply( gl, 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.apply( gl, 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.apply( gl, 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\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 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( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\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\txrFramebuffer = null;\n\t\tcurrentBoundFramebuffers = {};\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\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\tbindXRFramebuffer: bindXRFramebuffer,\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\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\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 isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\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&& ( 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\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\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\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.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 (' + image.width + 'x' + image.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 (' + image.width + 'x' + image.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 isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height, depth = 1 ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\ttextureProperties.__maxMipLevel = Math.log2( Math.max( width, height, depth ) );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\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 === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding ) ? 35907 : 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\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\tinfo.memory.textures --;\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_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( 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\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\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\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\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\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\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 >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\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.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\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.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\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.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\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.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\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.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\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\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\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\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\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}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\tconst cubeImage = [];\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t} else {\n\n\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst image = cubeImage[ 0 ],\n\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\tlet mipmaps;\n\n\t\tif ( isCompressed ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\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}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else {\n\n\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\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\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\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\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t// We assume images for cube map have the same size.\n\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\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 ) {\n\n\t\tconst glFormat = utils.convert( texture.format );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t} else {\n\n\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\t\tstate.bindFramebuffer( 36160, 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( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// Use the first texture for MRT so far\n\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[ 0 ] : renderTarget.texture;\n\n\t\t\tconst glFormat = utils.convert( texture.format );\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, 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( 36160, 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\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__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 = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\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\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\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( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\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\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray;\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && texture.format === RGBFormat && ( texture.type === FloatType || texture.type === HalfFloatType ) ) {\n\n\t\t\ttexture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\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\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\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\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\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( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\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( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553, attachment, renderTarget.width, renderTarget.height );\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 = 3553;\n\n\t\t\tif ( isRenderTarget3D ) {\n\n\t\t\t\t// Render targets containing layers, i.e: Texture 3D and 2d arrays\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tconst isTexture3D = texture.isDataTexture3D;\n\t\t\t\t\tglTextureType = isTexture3D ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType, texture, renderTarget.width, renderTarget.height, renderTarget.depth );\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 supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\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, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\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\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTexture2D: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTextureCube: don\\'t use cube render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\n\t\tsetTextureCube( texture, slot );\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.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\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\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_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\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === 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\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\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\tif ( 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_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\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\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_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\t// TODO Complete?\n\n\t\t\t\treturn p;\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\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\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\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\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}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nArrayCamera.prototype.isArrayCamera = true;\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nGroup.prototype.isGroup = true;\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\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 ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\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\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\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\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\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\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\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.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\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}\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}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\t\tconst state = renderer.state;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glFramebuffer = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet isMultisample = false;\n\t\tlet glMultisampledFramebuffer = null;\n\t\tlet glColorRenderbuffer = null;\n\t\tlet glDepthRenderbuffer = null;\n\t\tlet xrFrame = null;\n\t\tlet depthStyle = null;\n\t\tlet clearStyle = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\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 controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller ) {\n\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\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\tstate.bindXRFramebuffer( null );\n\t\t\trenderer.setRenderTarget( renderer.getRenderTarget() );\n\n\t\t\tif ( glFramebuffer ) gl.deleteFramebuffer( glFramebuffer );\n\t\t\tif ( glMultisampledFramebuffer ) gl.deleteFramebuffer( glMultisampledFramebuffer );\n\t\t\tif ( glColorRenderbuffer ) gl.deleteRenderbuffer( glColorRenderbuffer );\n\t\t\tif ( glDepthRenderbuffer ) gl.deleteRenderbuffer( glDepthRenderbuffer );\n\t\t\tglFramebuffer = null;\n\t\t\tglMultisampledFramebuffer = null;\n\t\t\tglColorRenderbuffer = null;\n\t\t\tglDepthRenderbuffer = null;\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = 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 referenceSpace;\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\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\tconst attributes = gl.getContextAttributes();\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\tif ( session.renderState.layers === undefined ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\talpha: attributes.alpha,\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} else if ( gl instanceof WebGLRenderingContext ) {\n\n\t\t\t\t\t// Use old style webgl layer because we can't use MSAA\n\t\t\t\t\t// WebGL2 support.\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: true,\n\t\t\t\t\t\talpha: attributes.alpha,\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( { layers: [ glBaseLayer ] } );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tisMultisample = attributes.antialias;\n\t\t\t\t\tlet depthFormat = null;\n\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tclearStyle = 256;\n\n\t\t\t\t\t\tif ( attributes.stencil ) clearStyle |= 1024;\n\n\t\t\t\t\t\tdepthStyle = attributes.stencil ? 33306 : 36096;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? 35056 : 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: attributes.alpha ? 32856 : 32849,\n\t\t\t\t\t\tdepthFormat: depthFormat,\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\tglFramebuffer = gl.createFramebuffer();\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tif ( isMultisample ) {\n\n\t\t\t\t\t\tglMultisampledFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\tglColorRenderbuffer = gl.createRenderbuffer();\n\t\t\t\t\t\tgl.bindRenderbuffer( 36161, glColorRenderbuffer );\n\t\t\t\t\t\tgl.renderbufferStorageMultisample(\n\t\t\t\t\t\t\t36161,\n\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t32856,\n\t\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\t\tglProjLayer.textureHeight );\n\t\t\t\t\t\tstate.bindFramebuffer( 36160, glMultisampledFramebuffer );\n\t\t\t\t\t\tgl.framebufferRenderbuffer( 36160, 36064, 36161, glColorRenderbuffer );\n\t\t\t\t\t\tgl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\t\tif ( depthFormat !== null ) {\n\n\t\t\t\t\t\t\tglDepthRenderbuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\tgl.bindRenderbuffer( 36161, glDepthRenderbuffer );\n\t\t\t\t\t\t\tgl.renderbufferStorageMultisample( 36161, 4, depthFormat, glProjLayer.textureWidth, glProjLayer.textureHeight );\n\t\t\t\t\t\t\tgl.framebufferRenderbuffer( 36160, depthStyle, 36161, glDepthRenderbuffer );\n\t\t\t\t\t\t\tgl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\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\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign inputSources to available controllers\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t\t}\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 controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( 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\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: 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\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// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\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\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.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: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, 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\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\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( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\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\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\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, frame ) {\n\n\t\t\tpose = frame.getViewerPose( 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\tstate.bindXRFramebuffer( glBaseLayer.framebuffer );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\n\t\t\t\t\tcameraVRNeedsUpdate = 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\n\t\t\t\t\t\tstate.bindXRFramebuffer( glFramebuffer );\n\n\t\t\t\t\t\tif ( glSubImage.depthStencilTexture !== undefined ) {\n\n\t\t\t\t\t\t\tgl.framebufferTexture2D( 36160, depthStyle, 3553, glSubImage.depthStencilTexture, 0 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.framebufferTexture2D( 36160, 36064, 3553, glSubImage.colorTexture, 0 );\n\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst camera = cameras[ i ];\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\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\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultisample ) {\n\n\t\t\t\t\tstate.bindXRFramebuffer( glMultisampledFramebuffer );\n\n\t\t\t\t\tif ( clearStyle !== null ) gl.clear( clearStyle );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst controller = controllers[ i ];\n\t\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst width = glProjLayer.textureWidth;\n\t\t\t\tconst height = glProjLayer.textureHeight;\n\n\t\t\t\tstate.bindFramebuffer( 36008, glMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( 36009, glFramebuffer );\n\t\t\t\t// Invalidate the depth here to avoid flush of the depth data to main memory.\n\t\t\t\tgl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\tgl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\t\t\t\tgl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, 16384, 9728 );\n\t\t\t\t// Invalidate the MSAA buffer because it's not needed anymore.\n\t\t\t\tgl.invalidateFramebuffer( 36008, [ 36064 ] );\n\t\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\t\tstate.bindFramebuffer( 36009, null );\n\n\t\t\t\tstate.bindFramebuffer( 36160, glMultisampledFramebuffer );\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\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\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\t\t\trefreshUniformsLambert( 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\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\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\t\t\trefreshUniformsDepth( 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\t\t\trefreshUniformsNormal( 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}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\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 envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\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\tconst maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\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}\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}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. specular intensity map\n\t\t// 14. specular tint map\n\t\t// 15. transmission map\n\t\t// 16. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularTintMap ) {\n\n\t\t\tuvScaleMap = material.specularTintMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\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}\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}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\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\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\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}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\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\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\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\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\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\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\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\trefreshUniformsStandard( uniforms, material );\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.sheenTint.value.copy( material.sheenTint ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\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}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\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.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}\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}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationTint.value.copy( material.attenuationTint );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularTint.value.copy( material.specularTint );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularTintMap ) {\n\n\t\t\tuniforms.specularTintMap.value = material.specularTintMap;\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\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t//\n\n\tconst _currentDrawBuffers = [];\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t_currentDrawBuffers[ 0 ] = 1029;\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\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\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position.location );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position.location, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal.location );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal.location, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv.location );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv.location, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color.location );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color.location, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\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 if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, 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\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\tconst needsAntialias = _antialias === true && capabilities.isWebGL2 === true;\n\t\t\tconst renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;\n\n\t\t\t_transmissionRenderTarget = new renderTargetType( 1024, 1024, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: utils.convert( HalfFloatType ) !== null ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\twrapS: ClampToEdgeWrapping,\n\t\t\t\twrapT: ClampToEdgeWrapping\n\t\t\t} );\n\n\t\t}\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide ) {\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}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\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\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry && !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry && !! geometry.morphAttributes.normal;\n\t\tconst morphTargetsCount = ( !! geometry && !! geometry.morphAttributes.position ) ? geometry.morphAttributes.position.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\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,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\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\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( !! geometry && ( geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isDataTexture3D || texture.isDataTexture2DArray ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tif ( _currentDrawBuffers.length !== textures.length || _currentDrawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t_currentDrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_currentDrawBuffers.length = textures.length;\n\n\t\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\t\t_currentDrawBuffers[ 0 ] = 36064;\n\t\t\t\t\t\t_currentDrawBuffers.length = 1;\n\n\t\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\t\t_currentDrawBuffers[ 0 ] = 1029;\n\t\t\t\t\t_currentDrawBuffers.length = 1;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t_gl.drawBuffers( _currentDrawBuffers );\n\n\t\t\t\t} else {\n\n\t\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( _currentDrawBuffers );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\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 ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\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} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\tlet glFormat = utils.convert( texture.format );\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100\n\t\t\t// Not needed in Chrome 93+\n\n\t\t\tif ( glFormat === 6407 ) glFormat = 32849;\n\t\t\tif ( glFormat === 6408 ) glFormat = 32856;\n\n\t\t}\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isDataTexture3D ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataTexture2DArray ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isDataTexture3D ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\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\nFog.prototype.isFog = true;\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\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\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\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\treturn data;\n\n\t}\n\n}\n\nScene.prototype.isScene = true;\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\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.updateRange = { offset: 0, count: - 1 };\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\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.prototype.slice.call( 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\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\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 === true;\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$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.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$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.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$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\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\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\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\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\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\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\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\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 interlaved buffer attribute will deinterleave 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 interlaved buffer attribute will deinterleave 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// deinterleave 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 interlaved attribtue\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\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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\treturn this;\n\n\t}\n\n}\n\nSpriteMaterial.prototype.isSpriteMaterial = true;\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\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\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\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\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.getUV( _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 ) {\n\n\t\tsuper.copy( source );\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\nSprite.prototype.isSprite = true;\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\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\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 );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 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, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\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\tif ( distance < levels[ i ].distance ) {\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\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\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\tif ( distance >= levels[ i ].distance ) {\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} );\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 _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\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\treturn this;\n\n\t}\n\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\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\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.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( 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 === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\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\tboneTransform( 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_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nSkinnedMesh.prototype.isSkinnedMesh = true;\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nBone.prototype.isBone = true;\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\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\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\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\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\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\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 = ceilPowerOfTwo( size );\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\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\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\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\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\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\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\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\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\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\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.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\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.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.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\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nInstancedMesh.prototype.isInstancedMesh = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\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.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\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();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\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 vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\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, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\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( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nLine.prototype.isLine = true;\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineSegments.prototype.isLineSegments = true;\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nLineLoop.prototype.isLineLoop = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * }\n */\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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\treturn this;\n\n\t}\n\n}\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\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\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\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 ++ ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\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( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nPoints.prototype.isPoints = true;\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\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.format = format !== undefined ? format : RGBFormat;\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\nVideoTexture.prototype.isVideoTexture = true;\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\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\nCompressedTexture.prototype.isCompressedTexture = true;\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.needsUpdate = true;\n\n\t}\n\n}\n\nCanvasTexture.prototype.isCanvasTexture = true;\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? 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 = UnsignedShortType;\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.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\t= false;\n\n\t}\n\n\n}\n\nDepthTexture.prototype.isDepthTexture = true;\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\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\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\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\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group 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, 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\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\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, 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\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\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\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\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 subdivison 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\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\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\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\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}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\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// Get sequence of points using getPoint( t )\n\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\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// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\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\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\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// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\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\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\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\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\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\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\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\nEllipseCurve.prototype.isEllipseCurve = true;\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\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 = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\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\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\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\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\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\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\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\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\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\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\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 ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\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\nLineCurve.prototype.isLineCurve = true;\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve3';\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\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\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\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\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\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\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\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\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\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\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\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\nSplineCurve.prototype.isSplineCurve = true;\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 *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\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\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\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 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\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\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\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\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\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\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\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\tsplineThru( pts /*Array of Vector*/ ) {\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\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\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\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\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\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\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\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 * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( 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 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\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 );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\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\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, 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\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, 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 !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( 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 !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( 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 !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( 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 );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\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 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\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\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\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 and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\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\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\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\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\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\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\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 === null ) 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 = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\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 ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\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 ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( 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\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\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 = null;\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\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\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\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\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: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\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\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\tlet 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// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\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 vec.clone().multiplyScalar( size ).add( pt );\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\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\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\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\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\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\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\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\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\n\t\t// generate vertices and uvs\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\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( 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( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif ( phiLength === Math.PI * 2 ) {\n\n\t\t\tconst normals = this.attributes.normal.array;\n\t\t\tconst n1 = new Vector3();\n\t\t\tconst n2 = new Vector3();\n\t\t\tconst n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tconst base = segments * points.length * 3;\n\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\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\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\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\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\nclass ShapeGeometry extends BufferGeometry {\n\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\t\tthis.type = 'ShapeGeometry';\n\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// incides\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\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\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\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\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\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\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\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\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\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\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\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\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 segement\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 vectos, 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\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\nclass TubeGeometry extends BufferGeometry {\n\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\t\tthis.type = 'TubeGeometry';\n\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\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\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\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\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 eges 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}\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, hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = 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\treturn this;\n\n\t}\n\n}\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\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.envMapIntensity = 1.0;\n\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.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.envMapIntensity = source.envMapIntensity;\n\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\treturn this;\n\n\t}\n\n}\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * ior: ,\n * reflectivity: ,\n *\n * sheen: ,\n * sheenTint: ,\n * sheenRoughness: ,\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( ),\n *\n * thickness: ,\n * thicknessMap: new THREE.Texture( ),\n * attenuationDistance: ,\n * attenuationTint: ,\n *\n * specularIntensity: ,\n * specularIntensityhMap: new THREE.Texture( ),\n * specularTint: ,\n * specularTintMap: new THREE.Texture( )\n * }\n */\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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.sheenTint = new Color( 0x000000 );\n\t\tthis.sheenRoughness = 1.0;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0.01;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationTint = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularTint = new Color( 1, 1, 1 );\n\t\tthis.specularTintMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\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 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 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.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.ior = source.ior;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenTint.copy( source.sheenTint );\n\t\tthis.sheenRoughness = source.sheenRoughness;\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.attenuationTint.copy( source.attenuationTint );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularTint.copy( source.specularTint );\n\t\tthis.specularTintMap = source.specularTintMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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.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.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\treturn this;\n\n\t}\n\n}\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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\treturn this;\n\n\t}\n\n}\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * flatShading: \n * }\n */\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.fog = false;\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\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\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.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.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\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\treturn this;\n\n\t}\n\n}\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * flatShading: \n * }\n */\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\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.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\treturn this;\n\n\t}\n\n}\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\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\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ 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\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\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:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\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.afterEnd_( i1 - 1, t, t0 );\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.beforeStart_( 0, t, t1 );\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.beforeStart_( 0, t, t1 );\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.afterEnd_( i1 - 1, t0, t );\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\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\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// Template methods for derived classes:\n\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\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n// ALIAS DEFINITIONS\n\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\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\nclass CubicInterpolant extends Interpolant {\n\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\nclass LinearInterpolant extends Interpolant {\n\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 *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\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 = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.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': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.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 = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, 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 ( AnimationUtils.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 = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\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 = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 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 = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\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\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\nclass QuaternionLinearInterpolant extends Interpolant {\n\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\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\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 = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.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\tAnimationUtils.flattenJSON( 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 || 1.0 );\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\tAnimationUtils.flattenJSON( 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 = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\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\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\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 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\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// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\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\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.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 ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = 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.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\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( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\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( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\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\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\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\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\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\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 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\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\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\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.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\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\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\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\n\t\treturn data;\n\n\t}\n\n}\n\nLight.prototype.isLight = true;\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nHemisphereLight.prototype.isHemisphereLight = true;\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\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\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\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( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\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\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\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\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\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\nSpotLightShadow.prototype.isSpotLightShadow = true;\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\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 ) {\n\n\t\tsuper.copy( source );\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\nSpotLight.prototype.isSpotLight = true;\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\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\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\nPointLightShadow.prototype.isPointLightShadow = true;\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\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 ) {\n\n\t\tsuper.copy( source );\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\nPointLight.prototype.isPointLight = true;\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n}\n\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\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\nDirectionalLight.prototype.isDirectionalLight = true;\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nAmbientLight.prototype.isAmbientLight = true;\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\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\nRectAreaLight.prototype.isRectAreaLight = true;\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\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\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\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// get the radiance in the direction of the normal\n\t// target is a Vector3\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// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\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\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\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\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\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\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\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\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\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// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\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\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\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\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\nLightProbe.prototype.isLightProbe = true;\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 = new Materials[ 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.sheenTint !== undefined ) material.sheenTint = new Color().setHex( json.sheenTint );\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.specularTint !== undefined && material.specularTint !== undefined ) material.specularTint.setHex( json.specularTint );\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.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.attenuationTint !== undefined && material.attenuationTint !== undefined ) material.attenuationTint.setHex( json.attenuationTint );\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.format !== undefined ) material.format = json.format;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\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\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\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\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 !== 1 ) 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\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\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\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\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.specularTintMap !== undefined ) material.specularTintMap = getTexture( json.specularTintMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\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.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\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}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\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.substr( 0, index + 1 );\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\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\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\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\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\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 ] 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\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\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: The legacy Geometry type is no longer supported.' );\n\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 ( geometry.isBufferGeometry === true && 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 ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\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\timages[ image.uuid ] = [];\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\timages[ image.uuid ].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\timages[ image.uuid ].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} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\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 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\timages[ image.uuid ] = [];\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\timages[ image.uuid ].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\timages[ image.uuid ].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} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\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 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\tlet texture;\n\t\t\t\tconst image = images[ data.image ];\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( image );\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( image.data, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture( image );\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.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\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.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\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.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\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}\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\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\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 '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.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.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 );\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\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\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\tCubeUVRefractionMapping: CubeUVRefractionMapping\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\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\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\tfetch( 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} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\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\tsetContext: function ( 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} );\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}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\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\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\tconst projectionMatrix = camera.projectionMatrix.clone();\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\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.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\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.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\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 ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\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\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\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\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\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\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\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\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\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\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\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\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\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\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\tstop() {\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\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\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\tdisconnect() {\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\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\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\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\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\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\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\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\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\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\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\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}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\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\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\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\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\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'\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' 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 = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(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 = /(?:\\.(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 = /\\.(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' ];\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 ) || rootNode;\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 ) {\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 || 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 ) || this.rootNode;\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.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\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\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.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\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.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\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.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\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\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\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\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\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\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, this._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\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array( 1 );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\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\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\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\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\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\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\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 && 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 && 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\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( 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\tintersectObject( 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 intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( 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\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\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\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// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\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\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\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\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\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\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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\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\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\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\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\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\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\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\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\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 ? false : true;\n\n\t}\n\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\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\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 ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\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\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\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox2.prototype.isBox2 = true;\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\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\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\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\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\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\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\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass ImmediateRenderObject extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.material = material;\n\t\tthis.render = function ( /* renderCallback */ ) {};\n\n\t\tthis.hasPositions = false;\n\t\tthis.hasNormals = false;\n\t\tthis.hasColors = false;\n\t\tthis.hasUvs = false;\n\n\t\tthis.positionArray = null;\n\t\tthis.normalArray = null;\n\t\tthis.colorArray = null;\n\t\tthis.uvArray = null;\n\n\t\tthis.count = 0;\n\n\t}\n\n}\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\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\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\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\nclass SkeletonHelper extends LineSegments {\n\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\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\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}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\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.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\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\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\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.IcosahedronBufferGeometry( 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\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\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\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\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\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\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\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\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}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 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 radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * 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}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\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\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\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\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\tupdate() {\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 *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\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// 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\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\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\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\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\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// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, 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, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\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\nclass BoxHelper extends LineSegments {\n\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\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\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\n\t}\n\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 ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\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\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}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\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, 0, 0, 1, 0, 0, 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\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\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\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\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\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\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\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\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\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}\n\nclass AxesHelper extends LineSegments {\n\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\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\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\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\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\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\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\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\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\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\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\tconst toChange = [];\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.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\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\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\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\nconst _floatView = new Float32Array( 1 );\nconst _int32View = new Int32Array( _floatView.buffer );\n\nclass DataUtils {\n\n\t// Converts float32 to float16 (stored as uint16 value).\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( val > 65504 ) {\n\n\t\t\tconsole.warn( 'THREE.DataUtils.toHalfFloat(): value exceeds 65504.' );\n\n\t\t\tval = 65504; // maximum representable value in float16\n\n\t\t}\n\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t* by James Tursa?s half-precision code. */\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst x = _int32View[ 0 ];\n\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\n\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t* half, return signed zero. */\n\t\tif ( e < 103 ) return bits;\n\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\t\tif ( e > 142 ) {\n\n\t\t\tbits |= 0x7c00;\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\t/* If exponent underflows but not too much, return a denormal */\n\t\tif ( e < 113 ) {\n\n\t\t\tm |= 0x0800;\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t* to 1, which is OK. */\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t* the exponent, which is OK. */\n\t\tbits += m & 1;\n\t\treturn bits;\n\n\t}\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials = [] ) {\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nPath.prototype.fromPoints = function ( points ) {\n\n\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\treturn this.setFromPoints( points );\n\n};\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nLoader.prototype.extractUrlBase = function ( url ) {\n\n\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\treturn LoaderUtils.extractUrlBase( url );\n\n};\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nBox2.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox2.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox2.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox2.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nBox3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox3.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox3.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox3.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\nBox3.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nSphere.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\n//\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\n//\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\n//\n\nMatrix3.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix3.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\treturn vector.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\treturn attribute.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nMatrix4.prototype.extractPosition = function ( m ) {\n\n\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\treturn this.copyPosition( m );\n\n};\n\nMatrix4.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix4.prototype.getPosition = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n};\n\nMatrix4.prototype.setRotationFromQuaternion = function ( q ) {\n\n\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\treturn this.makeRotationFromQuaternion( q );\n\n};\n\nMatrix4.prototype.multiplyToArray = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n};\n\nMatrix4.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector4 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateAxis = function ( v ) {\n\n\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\tv.transformDirection( this );\n\n};\n\nMatrix4.prototype.crossVector = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.translate = function () {\n\n\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateX = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateY = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateZ = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateByAxis = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n};\n\nMatrix4.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\treturn attribute.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.makeFrustum = function ( left, right, bottom, top, near, far ) {\n\n\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n};\n\nMatrix4.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\n//\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nQuaternion.prototype.inverse = function ( ) {\n\n\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\treturn this.invert();\n\n};\n\n//\n\nRay.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nRay.prototype.isIntersectionPlane = function ( plane ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\treturn this.intersectsPlane( plane );\n\n};\n\nRay.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\n//\n\nTriangle.prototype.area = function () {\n\n\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\treturn this.getArea();\n\n};\n\nTriangle.prototype.barycoordFromPoint = function ( point, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn this.getBarycoord( point, target );\n\n};\n\nTriangle.prototype.midpoint = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\treturn this.getMidpoint( target );\n\n};\n\nTriangle.prototypenormal = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn this.getNormal( target );\n\n};\n\nTriangle.prototype.plane = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\treturn this.getPlane( target );\n\n};\n\nTriangle.barycoordFromPoint = function ( point, a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n};\n\nTriangle.normal = function ( a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn Triangle.getNormal( a, b, c, target );\n\n};\n\n//\n\nShape.prototype.extractAllPoints = function ( divisions ) {\n\n\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\treturn this.extractPoints( divisions );\n\n};\n\nShape.prototype.extrude = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\treturn new ExtrudeGeometry( this, options );\n\n};\n\nShape.prototype.makeGeometry = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\treturn new ShapeGeometry( this, options );\n\n};\n\n//\n\nVector2.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector2.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector2.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector3.prototype.setEulerFromRotationMatrix = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n};\n\nVector3.prototype.setEulerFromQuaternion = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n};\n\nVector3.prototype.getPositionFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\treturn this.setFromMatrixPosition( m );\n\n};\n\nVector3.prototype.getScaleFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\treturn this.setFromMatrixScale( m );\n\n};\n\nVector3.prototype.getColumnFromMatrix = function ( index, matrix ) {\n\n\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\treturn this.setFromMatrixColumn( matrix, index );\n\n};\n\nVector3.prototype.applyProjection = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\treturn this.applyMatrix4( m );\n\n};\n\nVector3.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector3.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector3.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector4.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector4.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nObject3D.prototype.getChildByName = function ( name ) {\n\n\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\treturn this.getObjectByName( name );\n\n};\n\nObject3D.prototype.renderDepth = function () {\n\n\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n};\n\nObject3D.prototype.translate = function ( distance, axis ) {\n\n\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\treturn this.translateOnAxis( axis, distance );\n\n};\n\nObject3D.prototype.getWorldRotation = function () {\n\n\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n};\n\nObject3D.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\n\n};\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nMesh.prototype.setDrawMode = function () {\n\n\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n};\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( 'THREE.PerspectiveCamera.setLens is deprecated. ' +\n\t\t\t'Use .setFocalLength and .filmGauge for a photographic setup.' );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nBufferAttribute.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nBufferAttribute.prototype.copyIndicesArray = function ( /* indices */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n},\n\nBufferAttribute.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nBufferGeometry.prototype.addIndex = function ( index ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\tthis.setIndex( index );\n\n};\n\nBufferGeometry.prototype.addAttribute = function ( name, attribute ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t}\n\n\tif ( name === 'index' ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\tthis.setIndex( attribute );\n\n\t\treturn this;\n\n\t}\n\n\treturn this.setAttribute( name, attribute );\n\n};\n\nBufferGeometry.prototype.addDrawCall = function ( start, count, indexOffset ) {\n\n\tif ( indexOffset !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t}\n\n\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\tthis.addGroup( start, count );\n\n};\n\nBufferGeometry.prototype.clearDrawCalls = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\tthis.clearGroups();\n\n};\n\nBufferGeometry.prototype.computeOffsets = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n};\n\nBufferGeometry.prototype.removeAttribute = function ( name ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\treturn this.deleteAttribute( name );\n\n};\n\nBufferGeometry.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\n\n};\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nInterleavedBuffer.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nInterleavedBuffer.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nExtrudeGeometry.prototype.getArrays = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShapeList = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShape = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n};\n\n//\n\nScene.prototype.dispose = function () {\n\n\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n};\n\n//\n\nUniform.prototype.onUpdate = function () {\n\n\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\treturn this;\n\n};\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t},\n\n\tvertexTangents: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nWebGLRenderer.prototype.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\tthis.setRenderTarget( renderTarget );\n\tthis.clear( color, depth, stencil );\n\n};\n\nWebGLRenderer.prototype.animate = function ( callback ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\tthis.setAnimationLoop( callback );\n\n};\n\nWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\treturn this.getRenderTarget();\n\n};\n\nWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\treturn this.capabilities.getMaxAnisotropy();\n\n};\n\nWebGLRenderer.prototype.getPrecision = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\treturn this.capabilities.precision;\n\n};\n\nWebGLRenderer.prototype.resetGLState = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\treturn this.state.reset();\n\n};\n\nWebGLRenderer.prototype.supportsFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_float' );\n\n};\n\nWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_half_float' );\n\n};\n\nWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n};\n\nWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n};\n\nWebGLRenderer.prototype.supportsVertexTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\treturn this.capabilities.vertexTextures;\n\n};\n\nWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n};\n\nWebGLRenderer.prototype.enableScissorTest = function ( boolean ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\tthis.setScissorTest( boolean );\n\n};\n\nWebGLRenderer.prototype.initMaterial = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPrePlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPostPlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.updateShadowMap = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setFaceCulling = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.allocTextureUnit = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture2D = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTextureCube = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\treturn this.getActiveMipmapLevel();\n\n};\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tconst scope = this;\n\tconst audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\n//\n\nfunction ParametricGeometry() {\n\n\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction TextGeometry() {\n\n\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\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, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, 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, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import superPropBase from \"@babel/runtime/helpers/esm/superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import { useState, useRef, useEffect, useMemo } from 'react';\nimport { debounce } from 'debounce';\n\nfunction useMeasure({\n debounce: debounce$1,\n scroll,\n polyfill\n} = {\n debounce: 0,\n scroll: false\n}) {\n const ResizeObserver = polyfill || (typeof window === 'undefined' ? class ResizeObserver {} : window.ResizeObserver);\n\n if (!ResizeObserver) {\n 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 }\n\n const [bounds, set] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0\n }); // keep all state in a ref\n\n const state = useRef({\n element: null,\n scrollContainers: null,\n resizeObserver: null,\n lastBounds: bounds\n }); // set actual debounce values early, so effects know if they should react accordingly\n\n const scrollDebounce = debounce$1 ? typeof debounce$1 === 'number' ? debounce$1 : debounce$1.scroll : null;\n const resizeDebounce = debounce$1 ? typeof debounce$1 === 'number' ? debounce$1 : debounce$1.resize : null; // make sure to update state only as long as the component is truly mounted\n\n const mounted = useRef(false);\n useEffect(() => {\n mounted.current = true;\n return () => void (mounted.current = false);\n }); // memoize handlers, so event-listeners know when they should update\n\n const [forceRefresh, resizeChange, scrollChange] = useMemo(() => {\n const callback = () => {\n if (!state.current.element) return;\n const {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n } = state.current.element.getBoundingClientRect();\n const size = {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n };\n Object.freeze(size);\n if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n };\n\n return [callback, resizeDebounce ? debounce(callback, resizeDebounce) : callback, scrollDebounce ? debounce(callback, scrollDebounce) : callback];\n }, [set, scrollDebounce, resizeDebounce]); // cleanup current scroll-listeners / observers\n\n function removeListeners() {\n if (state.current.scrollContainers) {\n state.current.scrollContainers.forEach(element => element.removeEventListener('scroll', scrollChange, true));\n state.current.scrollContainers = null;\n }\n\n if (state.current.resizeObserver) {\n state.current.resizeObserver.disconnect();\n state.current.resizeObserver = null;\n }\n } // add scroll-listeners / observers\n\n\n function addListeners() {\n if (!state.current.element) return;\n state.current.resizeObserver = new ResizeObserver(scrollChange);\n state.current.resizeObserver.observe(state.current.element);\n\n if (scroll && state.current.scrollContainers) {\n state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {\n capture: true,\n passive: true\n }));\n }\n } // the ref we expose to the user\n\n\n const ref = node => {\n if (!node || node === state.current.element) return;\n removeListeners();\n state.current.element = node;\n state.current.scrollContainers = findScrollContainers(node);\n addListeners();\n }; // add general event listeners\n\n\n useOnWindowScroll(scrollChange, Boolean(scroll));\n useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n useEffect(() => {\n removeListeners();\n addListeners();\n }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n useEffect(() => removeListeners, []);\n return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n useEffect(() => {\n const cb = onWindowResize;\n window.addEventListener('resize', cb);\n return () => void window.removeEventListener('resize', cb);\n }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n useEffect(() => {\n if (enabled) {\n const cb = onScroll;\n window.addEventListener('scroll', cb, {\n capture: true,\n passive: true\n });\n return () => void window.removeEventListener('scroll', cb, true);\n }\n }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n const result = [];\n if (!element || element === document.body) return result;\n const {\n overflow,\n overflowX,\n overflowY\n } = window.getComputedStyle(element);\n if ([overflow, overflowX, overflowY].some(prop => prop === 'auto' || prop === 'scroll')) result.push(element);\n return [...result, ...findScrollContainers(element.parentElement)];\n} // Checks if element boundaries are equal\n\n\nconst keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nconst areBoundsEqual = (a, b) => keys.every(key => a[key] === b[key]);\n\nexport default useMeasure;\n","import * as THREE from 'three';\nimport * as React from 'react';\nimport create from 'zustand';\nimport shallow from 'zustand/shallow';\nimport Reconciler from 'react-reconciler';\nimport { unstable_now, unstable_runWithPriority, unstable_IdlePriority } from 'scheduler';\nimport { useAsset } from 'use-asset';\nimport mergeRefs from 'react-merge-refs';\nimport useMeasure from 'react-use-measure';\n\nvar threeTypes = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst is = {\n obj: a => a === Object(a) && !is.arr(a) && typeof a !== 'function',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === void 0,\n arr: a => Array.isArray(a),\n\n equ(a, b) {\n // Wrong type or one of the two undefined, doesn't match\n if (typeof a !== typeof b || !!a !== !!b) return false; // Atomic, just compare a against b\n\n if (is.str(a) || is.num(a) || is.obj(a)) return a === b; // Array, shallow compare first to see if it's a match\n\n if (is.arr(a) && a == b) return true; // Last resort, go through keys\n\n let i;\n\n for (i in a) if (!(i in b)) return false;\n\n for (i in b) if (a[i] !== b[i]) return false;\n\n return is.und(i) ? a === b : true;\n }\n\n};\n\nfunction makeId(event) {\n return (event.eventObject || event.object).uuid + '/' + event.index + event.instanceId;\n}\n\nfunction removeInteractivity(store, object) {\n const {\n internal\n } = store.getState(); // Removes every trace of an object from the data store\n\n internal.interaction = internal.interaction.filter(o => o !== object);\n internal.initialHits = internal.initialHits.filter(o => o !== object);\n internal.hovered.forEach((value, key) => {\n if (value.eventObject === object || value.object === object) {\n internal.hovered.delete(key);\n }\n });\n}\nfunction createEvents(store) {\n const temp = new THREE.Vector3();\n /** Sets up defaultRaycaster */\n\n function prepareRay(event) {\n var _raycaster$computeOff;\n\n const state = store.getState();\n const {\n raycaster,\n mouse,\n camera,\n size\n } = state; // https://github.com/pmndrs/react-three-fiber/pull/782\n // Events trigger outside of canvas when moved\n\n const {\n offsetX,\n offsetY\n } = (_raycaster$computeOff = raycaster.computeOffsets == null ? void 0 : raycaster.computeOffsets(event, state)) != null ? _raycaster$computeOff : event;\n const {\n width,\n height\n } = size;\n mouse.set(offsetX / width * 2 - 1, -(offsetY / height) * 2 + 1);\n raycaster.setFromCamera(mouse, camera);\n }\n /** Calculates delta */\n\n\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 /** Returns true if an instance has a valid pointer-event registered, this excludes scroll, clicks etc */\n\n\n function filterPointerEvents(objects) {\n return objects.filter(obj => ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(name => {\n var _r3f;\n\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers['onPointer' + name];\n }));\n }\n\n function intersect(filter) {\n const state = store.getState();\n const {\n raycaster,\n internal\n } = state; // Skip event handling when noEvents is set\n\n if (!raycaster.enabled) return [];\n const seen = new Set();\n const intersections = []; // Allow callers to eliminate event objects\n\n const eventsObjects = filter ? filter(internal.interaction) : internal.interaction; // Intersect known handler objects and filter against duplicates\n\n let intersects = raycaster.intersectObjects(eventsObjects, true).filter(item => {\n const id = makeId(item);\n if (seen.has(id)) return false;\n seen.add(id);\n return true;\n }); // https://github.com/mrdoob/three.js/issues/16031\n // Allow custom userland intersect sort order\n\n if (raycaster.filter) intersects = raycaster.filter(intersects, state);\n\n for (const intersect of intersects) {\n let eventObject = intersect.object; // Bubble event up\n\n while (eventObject) {\n var _r3f2;\n\n if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push({ ...intersect,\n eventObject\n });\n eventObject = eventObject.parent;\n }\n }\n\n return intersections;\n }\n /** Creates filtered intersects and returns an array of positive hits */\n\n\n function patchIntersects(intersections, event) {\n const {\n internal\n } = store.getState(); // If the interaction is captured, make all capturing targets part of the\n // intersect.\n\n if ('pointerId' in event && internal.capturedMap.has(event.pointerId)) {\n intersections.push(...internal.capturedMap.get(event.pointerId).values());\n }\n\n return intersections;\n }\n /** Handles intersections by forwarding them to handlers */\n\n\n function handleIntersects(intersections, event, delta, callback) {\n const {\n raycaster,\n mouse,\n camera,\n internal\n } = store.getState(); // If anything has been found, forward it to the event listeners\n\n if (intersections.length) {\n const unprojectedPoint = temp.set(mouse.x, mouse.y, 0).unproject(camera);\n\n const releasePointerCapture = id => event.target.releasePointerCapture(id);\n\n const localState = {\n stopped: false\n };\n\n for (const hit of intersections) {\n const hasPointerCapture = id => {\n var _internal$capturedMap, _internal$capturedMap2;\n\n return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n };\n\n const setPointerCapture = id => {\n if (internal.capturedMap.has(id)) {\n // if the pointerId was previously captured, we add the hit to the\n // event capturedMap.\n internal.capturedMap.get(id).set(hit.eventObject, hit);\n } else {\n // if the pointerId was not previously captured, we create a map\n // containing the hitObject, and the hit. hitObject is used for\n // faster access.\n internal.capturedMap.set(id, new Map([[hit.eventObject, hit]]));\n } // Call the original event now\n event.target.setPointerCapture(id);\n }; // Add native event props\n\n\n let extractEventProps = {};\n\n for (let prop in Object.getPrototypeOf(event)) {\n let property = event[prop]; // Only copy over atomics, leave functions alone as these should be\n // called as event.nativeEvent.fn()\n\n if (typeof property !== 'function') extractEventProps[prop] = property;\n }\n\n let raycastEvent = { ...hit,\n ...extractEventProps,\n spaceX: mouse.x,\n spaceY: mouse.y,\n intersections,\n stopped: localState.stopped,\n delta,\n unprojectedPoint,\n ray: raycaster.ray,\n camera: camera,\n // Hijack stopPropagation, which just sets a flag\n stopPropagation: () => {\n // https://github.com/pmndrs/react-three-fiber/issues/596\n // Events are not allowed to stop propagation if the pointer has been captured\n const capturesForPointer = 'pointerId' in event && internal.capturedMap.get(event.pointerId); // We only authorize stopPropagation...\n\n if ( // ...if this pointer hasn't been captured\n !capturesForPointer || // ... or if the hit object is capturing the pointer\n capturesForPointer.has(hit.eventObject)) {\n raycastEvent.stopped = localState.stopped = true; // Propagation is stopped, remove all other hover records\n // An event handler is only allowed to flush other handlers if it is hovered itself\n\n if (internal.hovered.size && Array.from(internal.hovered.values()).find(i => i.eventObject === hit.eventObject)) {\n // Objects cannot flush out higher up objects that have already caught the event\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 sourceEvent: event,\n // deprecated\n nativeEvent: event\n }; // Call subscribers\n\n callback(raycastEvent); // Event bubbling may be interrupted by stopPropagation\n\n if (localState.stopped === true) break;\n }\n }\n\n return intersections;\n }\n\n function cancelPointer(hits) {\n const {\n internal\n } = store.getState();\n Array.from(internal.hovered.values()).forEach(hoveredObj => {\n // When no objects were hit or the the hovered object wasn't found underneath the cursor\n // we call onPointerOut and delete the object from the hovered-elements map\n if (!hits.length || !hits.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\n if (instance != null && instance.eventCount) {\n // Clear out intersects, they are outdated by now\n const data = { ...hoveredObj,\n intersections: hits || []\n };\n handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n }\n }\n });\n }\n\n const handlePointer = name => {\n // Deal with cancelation\n switch (name) {\n case 'onPointerLeave':\n case 'onPointerCancel':\n return () => cancelPointer([]);\n\n case 'onLostPointerCapture':\n return event => {\n if ('pointerId' in event) {\n // this will be a problem if one target releases the pointerId\n // and another one is still keeping it, as the line below\n // indifferently deletes all capturing references.\n store.getState().internal.capturedMap.delete(event.pointerId);\n }\n\n cancelPointer([]);\n };\n } // Any other pointer goes here ...\n\n\n return event => {\n const {\n onPointerMissed,\n internal\n } = store.getState();\n prepareRay(event); // Get fresh intersects\n\n const isPointerMove = name === 'onPointerMove';\n const isClickEvent = name === 'onClick' || name === 'onContextMenu' || name === 'onDoubleClick';\n const filter = isPointerMove ? filterPointerEvents : undefined;\n const hits = patchIntersects(intersect(filter), event);\n const delta = isClickEvent ? calculateDistance(event) : 0; // Save initial coordinates on pointer-down\n\n if (name === 'onPointerDown') {\n internal.initialClick = [event.offsetX, event.offsetY];\n internal.initialHits = hits.map(hit => hit.eventObject);\n } // If a click yields no results, pass it back to the user as a miss\n // Missed events have to come first in order to establish user-land side-effect clean up\n\n\n if (isClickEvent && !hits.length) {\n if (delta <= 2) {\n pointerMissed(event, internal.interaction);\n if (onPointerMissed) onPointerMissed(event);\n }\n } // Take care of unhover\n\n\n if (isPointerMove) cancelPointer(hits);\n handleIntersects(hits, event, delta, data => {\n const eventObject = data.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers; // Check presence of handlers\n\n if (!(instance != null && instance.eventCount)) return;\n\n if (isPointerMove) {\n // Move event ...\n if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n // When enter or out is present take care of hover-state\n const id = makeId(data);\n const hoveredItem = internal.hovered.get(id);\n\n if (!hoveredItem) {\n // If the object wasn't previously hovered, book it and call its handler\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 // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n data.stopPropagation();\n }\n } // Call mouse move\n\n\n handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n } else {\n // All other events ...\n const handler = handlers[name];\n\n if (handler) {\n // Forward all events back to their respective handlers with the exception of click events,\n // which must use the initial target\n if (name !== 'onClick' && name !== 'onContextMenu' && name !== 'onDoubleClick' || internal.initialHits.includes(eventObject)) {\n // Missed events have to come first\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object))); // Now call the handler\n\n handler(data);\n }\n }\n }\n });\n };\n };\n\n function pointerMissed(event, objects) {\n objects.forEach(object => {\n var _r3f3;\n\n return (_r3f3 = object.__r3f) == null ? void 0 : _r3f3.handlers.onPointerMissed == null ? void 0 : _r3f3.handlers.onPointerMissed(event);\n });\n }\n\n return {\n handlePointer\n };\n}\n\nconst isDiffSet = def => def && !!def.memoized && !!def.changes;\n\n// Type guard to tell a store from a portal\nconst isStore = def => def && !!def.getState;\n\nconst getContainer = (container, child) => {\n var _container$__r3f$root, _container$__r3f;\n\n return {\n // If the container is not a root-store then it must be a THREE.Object3D into which part of the\n // scene is portalled into. Now there can be two variants of this, either that object is part of\n // the regular jsx tree, in which case it already has __r3f with a valid root attached, or it lies\n // outside react, in which case we must take the root of the child that is about to be attached to it.\n root: isStore(container) ? container : (_container$__r3f$root = (_container$__r3f = container.__r3f) == null ? void 0 : _container$__r3f.root) != null ? _container$__r3f$root : child.__r3f.root,\n // The container is the eventual target into which objects are mounted, it has to be a THREE.Object3D\n container: isStore(container) ? container.getState().scene : container\n };\n};\n\nconst DEFAULT = '__default';\nconst EMPTY = {};\nlet catalogue = {};\n\nlet extend = objects => void (catalogue = { ...catalogue,\n ...objects\n}); // Shallow check arrays, but check objects atomically\n\n\nfunction checkShallow(a, b) {\n if (is.arr(a) && is.equ(a, b)) return true;\n if (a === b) return true;\n return false;\n} // Each object in the scene carries a small LocalState descriptor\n\n\nfunction prepare(object, state) {\n const instance = object;\n\n if (state != null && state.primitive || !instance.__r3f) {\n instance.__r3f = {\n root: null,\n memoizedProps: {},\n eventCount: 0,\n handlers: {},\n objects: [],\n parent: null,\n ...state\n };\n }\n\n return object;\n}\n\nfunction createRenderer(roots) {\n // This function prepares a set of changes to be applied to the instance\n function 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 } = {}, accumulative = false) {\n var _instance$__r3f;\n\n const localState = (_instance$__r3f = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f : {};\n const entries = Object.entries(props);\n const changes = []; // Catch removed props, prepend them so they can be reset or removed\n\n if (accumulative) {\n const previousKeys = Object.keys(previous);\n\n for (let i = 0; i < previousKeys.length; i++) if (!props.hasOwnProperty(previousKeys[i])) entries.unshift([previousKeys[i], DEFAULT + 'remove']);\n }\n\n entries.forEach(([key, value]) => {\n var _instance$__r3f2;\n\n // Bail out on primitive object\n if ((_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.primitive && key === 'object') return; // When props match bail out\n\n if (checkShallow(value, previous[key])) return; // Collect handlers and bail out\n\n if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]); // Split dashed props\n\n let entries = [];\n if (key.includes('-')) entries = key.split('-');\n changes.push([key, value, false, entries]);\n });\n const memoized = { ...props\n };\n if (localState.memoizedProps && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n if (localState.memoizedProps && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n return {\n accumulative,\n memoized,\n changes\n };\n }\n\n function applyProps(instance, data) {\n var _instance$__r3f3, _root$getState, _instance$__r3f4;\n\n // Filter equals, events and reserved props\n const localState = (_instance$__r3f3 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f3 : {};\n const root = localState.root;\n const rootState = (_root$getState = root == null ? void 0 : root.getState == null ? void 0 : root.getState()) != null ? _root$getState : {};\n const {\n memoized,\n changes\n } = isDiffSet(data) ? data : diffProps(instance, data);\n const prevHandlers = localState.eventCount; // Prepare memoized props\n\n if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n changes.forEach(([key, value, isEvent, keys]) => {\n let currentInstance = instance;\n let targetProp = currentInstance[key]; // Revolve dashed props\n\n if (keys.length) {\n targetProp = keys.reduce((acc, key) => acc[key], instance); // If the target is atomic, it forces us to switch the root\n\n if (!(targetProp && targetProp.set)) {\n const [name, ...reverseEntries] = keys.reverse();\n currentInstance = reverseEntries.reverse().reduce((acc, key) => acc[key], instance);\n key = name;\n }\n } // https://github.com/mrdoob/three.js/issues/21209\n // HMR/fast-refresh relies on the ability to cancel out props, but threejs\n // has no means to do this. Hence we curate a small collection of value-classes\n // with their respective constructor/set arguments\n // For removed props, try to set default values, if possible\n\n\n if (value === DEFAULT + 'remove') {\n if (targetProp && targetProp.constructor) {\n // use the prop constructor to find the default it should be\n value = new targetProp.constructor(memoized.args);\n } else if (currentInstance.constructor) {\n // create a blank slate of the instance and copy the particular parameter.\n // @ts-ignore\n const defaultClassCall = new currentInstance.constructor(currentInstance.__r3f.memoizedProps.args);\n value = defaultClassCall[targetProp]; // destory the instance\n\n if (defaultClassCall.dispose) defaultClassCall.dispose(); // instance does not have constructor, just set it to 0\n } else value = 0;\n } // Deal with pointer events ...\n\n\n if (isEvent) {\n if (value) localState.handlers[key] = value;else delete localState.handlers[key];\n localState.eventCount = Object.keys(localState.handlers).length;\n } // Special treatment for objects with support for set/copy, and layers\n else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE.Layers)) {\n // If value is an array\n if (Array.isArray(value)) {\n if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);\n } // Test again target.copy(class) next ...\n else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) targetProp.copy(value); // If nothing else fits, just set the single value, ignore undefined\n // https://github.com/react-spring/react-three-fiber/issues/274\n else if (value !== undefined) {\n const isColor = targetProp instanceof THREE.Color; // Allow setting array scalars\n\n if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property\n else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask; // Otherwise just set ...\n else targetProp.set(value); // Auto-convert sRGB colors, for now ...\n // https://github.com/react-spring/react-three-fiber/issues/344\n\n if (!rootState.linear && isColor) targetProp.convertSRGBToLinear();\n } // Else, just overwrite the value\n\n } else {\n currentInstance[key] = value; // Auto-convert sRGB textures, for now ...\n // https://github.com/react-spring/react-three-fiber/issues/344\n\n if (!rootState.linear && currentInstance[key] instanceof THREE.Texture) currentInstance[key].encoding = THREE.sRGBEncoding;\n }\n\n invalidateInstance(instance);\n });\n\n if (rootState.internal && instance.raycast && prevHandlers !== localState.eventCount) {\n // Pre-emptively remove the instance from the interaction manager\n const index = rootState.internal.interaction.indexOf(instance);\n if (index > -1) rootState.internal.interaction.splice(index, 1); // Add the instance to the interaction manager only when it has handlers\n\n if (localState.eventCount) rootState.internal.interaction.push(instance);\n } // Call the update lifecycle when it is being updated\n\n\n if (changes.length && (_instance$__r3f4 = instance.__r3f) != null && _instance$__r3f4.parent) updateInstance(instance);\n return instance;\n }\n\n function invalidateInstance(instance) {\n var _instance$__r3f5, _instance$__r3f5$root;\n\n const state = (_instance$__r3f5 = instance.__r3f) == null ? void 0 : (_instance$__r3f5$root = _instance$__r3f5.root) == null ? void 0 : _instance$__r3f5$root.getState == null ? void 0 : _instance$__r3f5$root.getState();\n if (state && state.internal.frames === 0) state.invalidate();\n }\n\n function updateInstance(instance) {\n instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n }\n\n function createInstance(type, {\n args = [],\n ...props\n }, root, hostContext, internalInstanceHandle) {\n let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n let instance; // https://github.com/facebook/react/issues/17147\n // Portals do not give us a root, they are themselves treated as a root by the reconciler\n // In order to figure out the actual root we have to climb through fiber internals :(\n\n if (!isStore(root) && internalInstanceHandle) {\n const fn = node => {\n if (!node.return) return node.stateNode && node.stateNode.containerInfo;else return fn(node.return);\n };\n\n root = fn(internalInstanceHandle);\n } // Assert that by now we have a valid root\n\n\n if (!root || !isStore(root)) throw `No valid root for ${name}!`;\n\n if (type === 'primitive') {\n if (props.object === undefined) throw `Primitives without 'object' are invalid!`;\n const object = props.object;\n instance = prepare(object, {\n root,\n primitive: true\n });\n } else {\n const target = catalogue[name] || THREE[name];\n if (!target) throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`; // Instanciate new object, link it to the root\n // Append memoized props with args so it's not forgotten\n\n instance = prepare(new target(...args), {\n root,\n memoizedProps: {\n args: args.length === 0 ? null : args\n }\n });\n } // Auto-attach geometries and materials\n\n\n if (!('attachFns' in props)) {\n if (name.endsWith('Geometry')) {\n props = {\n attach: 'geometry',\n ...props\n };\n } else if (name.endsWith('Material')) {\n props = {\n attach: 'material',\n ...props\n };\n }\n } // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n // why it passes \"true\" here\n\n\n applyProps(instance, props);\n return instance;\n }\n\n function appendChild(parentInstance, child) {\n let addedAsChild = false;\n\n if (child) {\n // The attach attribute implies that the object attaches itself on the parent\n if (child.attachArray) {\n if (!is.arr(parentInstance[child.attachArray])) parentInstance[child.attachArray] = [];\n parentInstance[child.attachArray].push(child);\n } else if (child.attachObject) {\n if (!is.obj(parentInstance[child.attachObject[0]])) parentInstance[child.attachObject[0]] = {};\n parentInstance[child.attachObject[0]][child.attachObject[1]] = child;\n } else if (child.attach && !is.fun(child.attach)) {\n parentInstance[child.attach] = child;\n } else if (is.arr(child.attachFns)) {\n const [attachFn] = child.attachFns;\n\n if (is.str(attachFn) && is.fun(parentInstance[attachFn])) {\n parentInstance[attachFn](child);\n } else if (is.fun(attachFn)) {\n attachFn(child, parentInstance);\n }\n } else if (child.isObject3D && parentInstance.isObject3D) {\n // add in the usual parent-child way\n parentInstance.add(child);\n addedAsChild = true;\n }\n\n if (!addedAsChild) {\n // This is for anything that used attach, and for non-Object3Ds that don't get attached to props;\n // that is, anything that's a child in React but not a child in the scenegraph.\n parentInstance.__r3f.objects.push(child);\n }\n\n if (!child.__r3f) {\n prepare(child, {});\n }\n\n child.__r3f.parent = parentInstance;\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n\n function insertBefore(parentInstance, child, beforeChild) {\n let added = false;\n\n if (child) {\n if (child.attachArray) {\n const array = parentInstance[child.attachArray];\n if (!is.arr(array)) parentInstance[child.attachArray] = [];\n array.splice(array.indexOf(beforeChild), 0, child);\n } else if (child.attachObject || child.attach && !is.fun(child.attach)) {\n // attach and attachObject don't have an order anyway, so just append\n return appendChild(parentInstance, child);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n child.parent = parentInstance;\n child.dispatchEvent({\n type: 'added'\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\n if (!added) {\n parentInstance.__r3f.objects.push(child);\n }\n\n if (!child.__r3f) {\n prepare(child, {});\n }\n\n child.__r3f.parent = parentInstance;\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n\n function removeRecursive(array, parent, dispose = false) {\n if (array) [...array].forEach(child => removeChild(parent, child, dispose));\n }\n\n function removeChild(parentInstance, child, dispose) {\n if (child) {\n var _parentInstance$__r3f, _child$__r3f2;\n\n if (child.__r3f) {\n child.__r3f.parent = null;\n }\n\n if ((_parentInstance$__r3f = parentInstance.__r3f) != null && _parentInstance$__r3f.objects) {\n parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter(x => x !== child);\n } // Remove attachment\n\n\n if (child.attachArray) {\n parentInstance[child.attachArray] = parentInstance[child.attachArray].filter(x => x !== child);\n } else if (child.attachObject) {\n delete parentInstance[child.attachObject[0]][child.attachObject[1]];\n } else if (child.attach && !is.fun(child.attach)) {\n parentInstance[child.attach] = null;\n } else if (is.arr(child.attachFns)) {\n const [, detachFn] = child.attachFns;\n\n if (is.str(detachFn) && is.fun(parentInstance[detachFn])) {\n parentInstance[detachFn](child);\n } else if (is.fun(detachFn)) {\n detachFn(child, parentInstance);\n }\n } else if (child.isObject3D) {\n var _child$__r3f;\n\n parentInstance.remove(child); // Remove interactivity\n\n if ((_child$__r3f = child.__r3f) != null && _child$__r3f.root) {\n removeInteractivity(child.__r3f.root, child);\n }\n } // Allow objects to bail out of recursive dispose alltogether by passing dispose={null}\n // Never dispose of primitives because their state may be kept outside of React!\n // In order for an object to be able to dispose it has to have\n // - a dispose method,\n // - it cannot be a \n // - it cannot be a THREE.Scene, because three has broken it's own api\n //\n // Since disposal is recursive, we can check the optional dispose arg, which will be undefined\n // when the reconciler calls it, but then carry our own check recursively\n\n\n const isPrimitive = (_child$__r3f2 = child.__r3f) == null ? void 0 : _child$__r3f2.primitive;\n const shouldDispose = dispose === undefined ? child.dispose !== null && !isPrimitive : dispose; // Remove nested child objects. Primitives should not have objects and children that are\n // attached to them declaratively ...\n\n if (!isPrimitive) {\n var _child$__r3f3;\n\n removeRecursive((_child$__r3f3 = child.__r3f) == null ? void 0 : _child$__r3f3.objects, child, shouldDispose);\n removeRecursive(child.children, child, shouldDispose);\n } // Remove references\n\n\n if (child.__r3f) {\n delete child.__r3f.root;\n delete child.__r3f.objects;\n delete child.__r3f.handlers;\n delete child.__r3f.memoizedProps;\n if (!isPrimitive) delete child.__r3f;\n } // Dispose item whenever the reconciler feels like it\n\n\n if (shouldDispose && child.dispose && child.type !== 'Scene') {\n unstable_runWithPriority(unstable_IdlePriority, () => {\n try {\n child.dispose();\n } catch (e) {\n /* ... */\n }\n });\n }\n\n invalidateInstance(parentInstance);\n }\n }\n\n function switchInstance(instance, type, newProps, fiber) {\n var _instance$__r3f6;\n\n const parent = (_instance$__r3f6 = instance.__r3f) == null ? void 0 : _instance$__r3f6.parent;\n if (!parent) return;\n const newInstance = createInstance(type, newProps, instance.__r3f.root); // https://github.com/pmndrs/react-three-fiber/issues/1348\n // When args change the instance has to be re-constructed, which then\n // forces r3f to re-parent the children and non-scene objects\n // This can not include primitives, which should not have declarative children\n\n if (type !== 'primitive' && instance.children) {\n instance.children.forEach(child => appendChild(newInstance, child));\n instance.children = [];\n }\n\n instance.__r3f.objects.forEach(child => appendChild(newInstance, child));\n\n instance.__r3f.objects = [];\n removeChild(parent, instance);\n appendChild(parent, newInstance) // This evil hack switches the react-internal fiber node\n // https://github.com/facebook/react/issues/14983\n // https://github.com/facebook/react/pull/15021\n ;\n [fiber, fiber.alternate].forEach(fiber => {\n if (fiber !== null) {\n fiber.stateNode = newInstance;\n\n if (fiber.ref) {\n if (typeof fiber.ref === 'function') fiber.ref(newInstance);else fiber.ref.current = newInstance;\n }\n }\n });\n }\n\n const reconciler = Reconciler({\n now: unstable_now,\n createInstance,\n removeChild,\n appendChild,\n appendInitialChild: appendChild,\n insertBefore,\n warnsIfNotActing: true,\n supportsMutation: true,\n isPrimaryRenderer: false,\n // @ts-ignore\n scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n // @ts-ignore\n cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n // @ts-ignore\n setTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n // @ts-ignore\n clearTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n noTimeout: -1,\n appendChildToContainer: (parentInstance, child) => {\n const {\n container,\n root\n } = getContainer(parentInstance, child); // Link current root to the default scene\n\n container.__r3f.root = root;\n appendChild(container, child);\n },\n removeChildFromContainer: (parentInstance, child) => removeChild(getContainer(parentInstance, child).container, child),\n insertInContainerBefore: (parentInstance, child, beforeChild) => insertBefore(getContainer(parentInstance, child).container, child, beforeChild),\n\n prepareUpdate(instance, type, oldProps, newProps) {\n if (instance.__r3f.primitive && newProps.object && newProps.object !== instance) return [true];else {\n // This is a data object, let's extract critical information about it\n const {\n args: argsNew = [],\n children: cN,\n ...restNew\n } = newProps;\n const {\n args: argsOld = [],\n children: cO,\n ...restOld\n } = oldProps; // If it has new props or arguments, then it needs to be re-instanciated\n\n if (argsNew.some((value, index) => value !== argsOld[index])) return [true]; // Create a diff-set, flag if there are any changes\n\n const diff = diffProps(instance, restNew, restOld, true);\n if (diff.changes.length) return [false, diff]; // Otherwise do not touch the instance\n\n return null;\n }\n },\n\n commitUpdate(instance, [reconstruct, diff], type, oldProps, newProps, fiber) {\n // Reconstruct when args or !!(def != null && def.render);\nconst isOrthographicCamera = def => def && def.isOrthographicCamera;\nfunction calculateDpr(dpr) {\n return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], window.devicePixelRatio), dpr[1]) : dpr;\n}\nconst context = /*#__PURE__*/React.createContext(null);\n\nconst createStore = (applyProps, invalidate, advance, props) => {\n const {\n gl,\n size,\n shadows = false,\n linear = false,\n flat = false,\n vr = false,\n orthographic = false,\n frameloop = 'always',\n dpr = 1,\n performance,\n clock = new THREE.Clock(),\n raycaster: raycastOptions,\n camera: cameraOptions,\n onPointerMissed\n } = props; // Set shadowmap\n\n if (shadows) {\n gl.shadowMap.enabled = true;\n if (typeof shadows === 'object') Object.assign(gl.shadowMap, shadows);else gl.shadowMap.type = THREE.PCFSoftShadowMap;\n } // Set color management\n\n\n if (!linear) gl.outputEncoding = THREE.sRGBEncoding;\n if (!flat) gl.toneMapping = THREE.ACESFilmicToneMapping; // clock.elapsedTime is updated using advance(timestamp)\n\n if (frameloop === 'never') {\n clock.stop();\n clock.elapsedTime = 0;\n }\n\n const rootState = create((set, get) => {\n // Create custom raycaster\n const raycaster = new THREE.Raycaster();\n const {\n params,\n ...options\n } = raycastOptions || {};\n applyProps(raycaster, {\n enabled: true,\n ...options,\n params: { ...raycaster.params,\n ...params\n }\n }); // Create default camera\n\n const isCamera = cameraOptions instanceof THREE.Camera;\n const camera = isCamera ? cameraOptions : orthographic ? new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new THREE.PerspectiveCamera(75, 0, 0.1, 1000);\n\n if (!isCamera) {\n camera.position.z = 5;\n if (cameraOptions) applyProps(camera, cameraOptions); // Always look at center by default\n\n if (!(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n }\n\n const initialDpr = calculateDpr(dpr);\n const position = new THREE.Vector3();\n const defaultTarget = new THREE.Vector3();\n const tempTarget = new THREE.Vector3();\n\n function getCurrentViewport(camera = get().camera, target = defaultTarget, size = get().size) {\n const {\n width,\n height\n } = size;\n const aspect = width / height;\n if (target instanceof THREE.Vector3) tempTarget.copy(target);else tempTarget.set(...target);\n const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n\n if (isOrthographicCamera(camera)) {\n return {\n width: width / camera.zoom,\n height: height / camera.zoom,\n factor: 1,\n distance,\n aspect\n };\n } else {\n const fov = camera.fov * Math.PI / 180; // convert vertical fov to radians\n\n const h = 2 * Math.tan(fov / 2) * distance; // visible height\n\n const w = h * (width / height);\n return {\n width: w,\n height: h,\n factor: width / w,\n distance,\n aspect\n };\n }\n }\n\n let performanceTimeout = undefined;\n\n const setPerformanceCurrent = current => set(state => ({\n performance: { ...state.performance,\n current\n }\n }));\n\n return {\n gl,\n set,\n get,\n invalidate: () => invalidate(get()),\n advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),\n linear,\n flat,\n scene: prepare(new THREE.Scene()),\n camera,\n controls: null,\n raycaster,\n clock,\n mouse: new THREE.Vector2(),\n vr,\n frameloop,\n onPointerMissed,\n performance: {\n current: 1,\n min: 0.5,\n max: 1,\n debounce: 200,\n ...performance,\n regress: () => {\n const state = get(); // Clear timeout\n\n if (performanceTimeout) clearTimeout(performanceTimeout); // Set lower bound performance\n\n if (state.performance.current !== state.performance.min) setPerformanceCurrent(state.performance.min); // Go back to upper bound performance after a while unless something regresses meanwhile\n\n performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state.performance.debounce);\n }\n },\n size: {\n width: 0,\n height: 0\n },\n viewport: {\n initialDpr,\n dpr: initialDpr,\n width: 0,\n height: 0,\n aspect: 0,\n distance: 0,\n factor: 0,\n getCurrentViewport\n },\n setSize: (width, height) => {\n const size = {\n width,\n height\n };\n set(state => ({\n size,\n viewport: { ...state.viewport,\n ...getCurrentViewport(camera, defaultTarget, size)\n }\n }));\n },\n setDpr: dpr => set(state => ({\n viewport: { ...state.viewport,\n dpr: calculateDpr(dpr)\n }\n })),\n events: {\n connected: false\n },\n internal: {\n active: false,\n priority: 0,\n frames: 0,\n lastProps: props,\n interaction: [],\n hovered: new Map(),\n subscribers: [],\n initialClick: [0, 0],\n initialHits: [],\n capturedMap: new Map(),\n subscribe: (ref, priority = 0) => {\n set(({\n internal\n }) => ({\n internal: { ...internal,\n // If this subscription was given a priority, it takes rendering into its own hands\n // For that reason we switch off automatic rendering and increase the manual flag\n // As long as this flag is positive there can be no internal rendering at all\n // because there could be multiple render subscriptions\n priority: internal.priority + (priority > 0 ? 1 : 0),\n // Register subscriber and sort layers from lowest to highest, meaning,\n // highest priority renders last (on top of the other frames)\n subscribers: [...internal.subscribers, {\n ref,\n priority\n }].sort((a, b) => a.priority - b.priority)\n }\n }));\n return () => {\n set(({\n internal\n }) => ({\n internal: { ...internal,\n // Decrease manual flag if this subscription had a priority\n priority: internal.priority - (priority > 0 ? 1 : 0),\n // Remove subscriber from list\n subscribers: internal.subscribers.filter(s => s.ref !== ref)\n }\n }));\n };\n }\n }\n };\n }); // Resize camera and renderer on changes to size and pixelratio\n\n rootState.subscribe(() => {\n const {\n camera,\n size,\n viewport,\n internal\n } = rootState.getState(); // https://github.com/pmndrs/react-three-fiber/issues/92\n // Do not mess with the camera if it belongs to the user\n\n if (!(internal.lastProps.camera instanceof THREE.Camera)) {\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\n camera.updateProjectionMatrix(); // https://github.com/pmndrs/react-three-fiber/issues/178\n // Update matrix world since the renderer is a frame late\n\n camera.updateMatrixWorld();\n } // Update renderer\n\n\n gl.setPixelRatio(viewport.dpr);\n gl.setSize(size.width, size.height);\n }, state => [state.viewport.dpr, state.size], shallow);\n const state = rootState.getState(); // Update size\n\n if (size) state.setSize(size.width, size.height); // Invalidate on any change\n\n rootState.subscribe(state => invalidate(state)); // Return root state\n\n return rootState;\n};\n\nfunction createSubs(callback, subs) {\n const index = subs.length;\n subs.push(callback);\n return () => void subs.splice(index, 1);\n}\n\nlet i;\nlet globalEffects = [];\nlet globalAfterEffects = [];\nlet globalTailEffects = [];\nconst addEffect = callback => createSubs(callback, globalEffects);\nconst addAfterEffect = callback => createSubs(callback, globalAfterEffects);\nconst addTail = callback => createSubs(callback, globalTailEffects);\n\nfunction run(effects, timestamp) {\n for (i = 0; i < effects.length; i++) effects[i](timestamp);\n}\n\nfunction render$1(timestamp, state) {\n // Run local effects\n let delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp\n\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 } // Call subscribers (useFrame)\n\n\n for (i = 0; i < state.internal.subscribers.length; i++) state.internal.subscribers[i].ref.current(state, delta); // Render content\n\n\n if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera); // Decrease frame count\n\n state.internal.frames = Math.max(0, state.internal.frames - 1);\n return state.frameloop === 'always' ? 1 : state.internal.frames;\n}\n\nfunction createLoop(roots) {\n let running = false;\n let repeat;\n\n function loop(timestamp) {\n running = true;\n repeat = 0; // Run effects\n\n run(globalEffects, timestamp); // Render all roots\n\n roots.forEach(root => {\n const state = root.store.getState(); // If the frameloop is invalidated, do not run another frame\n\n if (state.internal.active && (state.frameloop === 'always' || state.internal.frames > 0)) repeat += render$1(timestamp, state);\n }); // Run after-effects\n\n run(globalAfterEffects, timestamp); // Keep on looping if anything invalidates the frameloop\n\n if (repeat > 0) return requestAnimationFrame(loop); // Tail call effects, they are called when rendering stops\n else run(globalTailEffects, timestamp); // Flag end of operation\n\n running = false;\n }\n\n function invalidate(state) {\n if (!state) return roots.forEach(root => invalidate(root.store.getState()));\n if (state.vr || !state.internal.active || state.frameloop === 'never') return; // Increase frames, do not go higher than 60\n\n state.internal.frames = Math.min(60, state.internal.frames + 1); // If the render-loop isn't active, start it\n\n if (!running) {\n running = true;\n requestAnimationFrame(loop);\n }\n }\n\n function advance(timestamp, runGlobalEffects = true, state) {\n if (runGlobalEffects) run(globalEffects, timestamp);\n if (!state) roots.forEach(root => render$1(timestamp, root.store.getState()));else render$1(timestamp, state);\n if (runGlobalEffects) run(globalAfterEffects, timestamp);\n }\n\n return {\n loop,\n invalidate,\n advance\n };\n}\n\nfunction createPointerEvents(store) {\n const {\n handlePointer\n } = createEvents(store);\n const names = {\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 };\n return {\n connected: false,\n handlers: Object.keys(names).reduce((acc, key) => ({ ...acc,\n [key]: handlePointer(key)\n }), {}),\n connect: target => {\n var _events$handlers;\n\n const {\n set,\n events\n } = store.getState();\n events.disconnect == null ? void 0 : events.disconnect();\n set(state => ({\n events: { ...state.events,\n connected: target\n }\n }));\n Object.entries((_events$handlers = events == null ? void 0 : events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n const [eventName, passive] = names[name];\n target.addEventListener(eventName, event, {\n passive\n });\n });\n },\n disconnect: () => {\n const {\n set,\n events\n } = store.getState();\n\n if (events.connected) {\n var _events$handlers2;\n\n Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n if (events && events.connected instanceof HTMLElement) {\n const [eventName] = names[name];\n events.connected.removeEventListener(eventName, event);\n }\n });\n set(state => ({\n events: { ...state.events,\n connected: false\n }\n }));\n }\n }\n };\n}\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nfunction Block({\n set\n}) {\n useIsomorphicLayoutEffect(() => {\n set(new Promise(() => null));\n return () => set(false);\n }, []);\n return null;\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = {\n error: false\n };\n }\n\n componentDidCatch(error) {\n this.props.set(error);\n }\n\n render() {\n return this.state.error ? null : this.props.children;\n }\n\n}\n\nErrorBoundary.getDerivedStateFromError = () => ({\n error: true\n});\n\nconst Canvas = /*#__PURE__*/React.forwardRef(function Canvas({\n children,\n fallback,\n tabIndex,\n resize,\n id,\n style,\n className,\n events,\n ...props\n}, forwardedRef) {\n const [containerRef, {\n width,\n height\n }] = useMeasure({\n scroll: true,\n debounce: {\n scroll: 50,\n resize: 0\n },\n ...resize\n });\n const canvasRef = React.useRef(null);\n const [block, setBlock] = React.useState(false);\n const [error, setError] = React.useState(false); // Suspend this component if block is a promise (2nd run)\n\n if (block) throw block; // Throw exception outwards if anything within canvas throws\n\n if (error) throw error; // Execute JSX in the reconciler as a layout-effect\n\n useIsomorphicLayoutEffect(() => {\n if (width > 0 && height > 0) {\n render( /*#__PURE__*/React.createElement(ErrorBoundary, {\n set: setError\n }, /*#__PURE__*/React.createElement(React.Suspense, {\n fallback: /*#__PURE__*/React.createElement(Block, {\n set: setBlock\n })\n }, children)), canvasRef.current, { ...props,\n size: {\n width,\n height\n },\n events: events || createPointerEvents\n });\n }\n }, [width, height, children]);\n useIsomorphicLayoutEffect(() => {\n const container = canvasRef.current;\n return () => unmountComponentAtNode(container);\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n id: id,\n className: className,\n tabIndex: tabIndex,\n style: {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n ...style\n }\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: mergeRefs([canvasRef, forwardedRef]),\n style: {\n display: 'block'\n }\n }, fallback));\n});\n\nfunction useStore() {\n const store = React.useContext(context);\n if (!store) throw `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 subscribe = useStore().getState().internal.subscribe; // Update ref\n\n const ref = React.useRef(callback);\n React.useLayoutEffect(() => void (ref.current = callback), [callback]); // Subscribe on mount, unsubscribe on unmount\n\n React.useLayoutEffect(() => subscribe(ref, renderPriority), [renderPriority, subscribe]);\n return null;\n}\n\nfunction buildGraph(object) {\n const data = {\n nodes: {},\n materials: {}\n };\n\n if (object) {\n object.traverse(obj => {\n if (obj.name) {\n data.nodes[obj.name] = obj;\n }\n\n if (obj.material && !data.materials[obj.material.name]) {\n data.materials[obj.material.name] = obj.material;\n }\n });\n }\n\n return data;\n}\n\nfunction useGraph(object) {\n return React.useMemo(() => buildGraph(object), [object]);\n}\n\nfunction loadingFn(extensions, onProgress) {\n return function (Proto, ...input) {\n // Construct new loader and run extensions\n const loader = new Proto();\n if (extensions) extensions(loader); // Go through the urls and load them\n\n return Promise.all(input.map(input => new Promise((res, reject) => loader.load(input, data => {\n if (data.scene) Object.assign(data, buildGraph(data.scene));\n res(data);\n }, onProgress, error => reject(`Could not load ${input}: ${error.message}`)))));\n };\n}\n\nfunction useLoader(Proto, input, extensions, onProgress) {\n // Use suspense to load async assets\n const keys = Array.isArray(input) ? input : [input];\n const results = useAsset(loadingFn(extensions, onProgress), Proto, ...keys); // Return the object/s\n\n return Array.isArray(input) ? results : results[0];\n}\n\nuseLoader.preload = function (Proto, input, extensions) {\n const keys = Array.isArray(input) ? input : [input];\n return useAsset.preload(loadingFn(extensions), Proto, ...keys);\n};\n\nuseLoader.clear = function (Proto, input) {\n const keys = Array.isArray(input) ? input : [input];\n return useAsset.clear(Proto, ...keys);\n};\n\nconst roots = new Map();\nconst modes = ['legacy', 'blocking', 'concurrent'];\nconst {\n invalidate,\n advance\n} = createLoop(roots);\nconst {\n reconciler,\n applyProps\n} = createRenderer();\n\nconst createRendererInstance = (gl, canvas) => {\n const customRenderer = typeof gl === 'function' ? gl(canvas) : gl;\n if (isRenderer(customRenderer)) return customRenderer;\n const renderer = new THREE.WebGLRenderer({\n powerPreference: 'high-performance',\n canvas: canvas,\n antialias: true,\n alpha: true,\n ...gl\n });\n if (gl) applyProps(renderer, gl);\n return renderer;\n};\n\nfunction render(element, canvas, {\n gl,\n size,\n mode = modes[1],\n events,\n onCreated,\n ...props\n} = {}) {\n var _store;\n\n // Allow size to take on container bounds initially\n if (!size) {\n var _canvas$parentElement, _canvas$parentElement2, _canvas$parentElement3, _canvas$parentElement4;\n\n size = {\n width: (_canvas$parentElement = (_canvas$parentElement2 = canvas.parentElement) == null ? void 0 : _canvas$parentElement2.clientWidth) != null ? _canvas$parentElement : 0,\n height: (_canvas$parentElement3 = (_canvas$parentElement4 = canvas.parentElement) == null ? void 0 : _canvas$parentElement4.clientHeight) != null ? _canvas$parentElement3 : 0\n };\n }\n\n let root = roots.get(canvas);\n let fiber = root == null ? void 0 : root.fiber;\n let store = root == null ? void 0 : root.store;\n let state = (_store = store) == null ? void 0 : _store.getState();\n\n if (fiber && state) {\n // When a root was found, see if any fundamental props must be changed or exchanged\n // Check pixelratio\n if (props.dpr !== undefined && !is.equ(state.viewport.dpr, calculateDpr(props.dpr))) state.setDpr(props.dpr); // Check size\n\n if (state.size.width !== size.width || state.size.height !== size.height) state.setSize(size.width, size.height); // For some props we want to reset the entire root\n // Changes to the color-space\n\n const linearChanged = props.linear !== state.internal.lastProps.linear;\n\n if (linearChanged) {\n unmountComponentAtNode(canvas);\n fiber = undefined;\n }\n }\n\n if (!fiber) {\n // If no root has been found, make one\n // Create gl\n const glRenderer = createRendererInstance(gl, canvas); // Enable VR if requested\n\n if (props.vr) {\n glRenderer.xr.enabled = true;\n glRenderer.setAnimationLoop(timestamp => advance(timestamp, true));\n } // Create store\n\n\n store = createStore(applyProps, invalidate, advance, {\n gl: glRenderer,\n size,\n ...props\n });\n const state = store.getState(); // Create renderer\n\n fiber = reconciler.createContainer(store, modes.indexOf(mode), false, null); // Map it\n\n roots.set(canvas, {\n fiber,\n store\n }); // Store events internally\n\n if (events) state.set({\n events: events(store)\n });\n }\n\n if (store && fiber) {\n reconciler.updateContainer( /*#__PURE__*/React.createElement(Provider, {\n store: store,\n element: element,\n onCreated: onCreated,\n target: canvas\n }), fiber, null, () => undefined);\n return store;\n } else {\n throw 'Error creating root!';\n }\n}\n\nfunction Provider({\n store,\n element,\n onCreated,\n target\n}) {\n React.useEffect(() => {\n const state = store.getState(); // Flag the canvas active, rendering will now begin\n\n state.set(state => ({\n internal: { ...state.internal,\n active: true\n }\n })); // Connect events\n\n state.events.connect == null ? void 0 : state.events.connect(target); // Notifiy that init is completed, the scene graph exists, but nothing has yet rendered\n\n if (onCreated) onCreated(state);\n }, []);\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: store\n }, element);\n}\n\nfunction unmountComponentAtNode(canvas, callback) {\n const root = roots.get(canvas);\n const fiber = root == null ? void 0 : root.fiber;\n\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 var _state$gl, _state$gl$renderLists, _state$gl2;\n\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 dispose(state);\n roots.delete(canvas);\n if (callback) callback(canvas);\n }, 500);\n }\n });\n }\n}\n\nfunction dispose(obj) {\n if (obj.dispose && obj.type !== 'Scene') obj.dispose();\n\n for (const p in obj) {\n var _dispose, _ref;\n (_dispose = (_ref = p).dispose) == null ? void 0 : _dispose.call(_ref);\n delete obj[p];\n }\n}\n\nconst act = reconciler.act;\n\nfunction createPortal(children, container) {\n return reconciler.createPortal(children, container, null, null);\n}\n\nreconciler.injectIntoDevTools({\n bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n rendererPackageName: '@react-three/fiber',\n version: '17.0.2'\n});\n\nexport { Canvas, threeTypes as ReactThreeFiber, roots as _roots, act, addAfterEffect, addEffect, addTail, advance, applyProps, context, createPortal, dispose, createPointerEvents as events, extend, invalidate, reconciler, render, unmountComponentAtNode, useFrame, useGraph, useLoader, useStore, useThree };\n","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY =\n Boolean(typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : (typeof process !== 'undefined' && typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' && process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false' ? false : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : (typeof process !== 'undefined' && typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false' ? false : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n )\n ));\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.options.isServer && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n id: string;\n\n name: string;\n\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n toString = () => {\n return throwStyledError(12, String(this.name));\n };\n\n getName(stylisInstance: Stringifier = masterStylis) {\n return this.name + stylisInstance.hash;\n }\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext, useDebugValue } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n Attrs,\n IStyledComponent,\n IStyledStatics,\n RuleSet,\n ShouldForwardProp,\n Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle(\n componentStyle: ComponentStyle,\n isStatic: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (process.env.NODE_ENV !== 'production') useDebugValue(className);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: IStyledComponent,\n props: Object,\n forwardedRef: Ref,\n isStatic: boolean\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (process.env.NODE_ENV !== 'production') useDebugValue(styledComponentId);\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n isStatic,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (\n shouldForwardProp\n ? shouldForwardProp(key, validAttr, elementToBeCreated)\n : isTargetTag\n ? validAttr(key)\n : true\n ) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: $PropertyType,\n options: {\n attrs?: Attrs,\n componentId: string,\n displayName?: string,\n parentComponentId?: string,\n shouldForwardProp?: ShouldForwardProp,\n },\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && ((target: any): IStyledComponent).attrs\n ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (options.shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n prop,\n filterFn,\n elementToBeCreated\n ) &&\n ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n );\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent: IStyledComponent;\n\n const forwardRef = (props, ref) =>\n // eslint-disable-next-line\n useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n forwardRef.displayName = displayName;\n\n WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? Array.prototype.concat(\n ((target: any): IStyledComponent).foldedComponentIds,\n ((target: any): IStyledComponent).styledComponentId\n )\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? ((target: any): IStyledComponent).target\n : target;\n\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n WrappedStyledComponent.toString = () => `.${WrappedStyledComponent.styledComponentId}`;\n\n if (isCompositeComponent) {\n hoist<\n IStyledStatics,\n $PropertyType,\n { [key: $Keys]: true }\n >(WrappedStyledComponent, ((target: any): $PropertyType), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n isStreaming: boolean;\n\n instance: StyleSheet;\n\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n const nonce = getNonce();\n const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n const htmlAttr = attrs.filter(Boolean).join(' ');\n\n return ``;\n };\n\n collectStyles(children: any) {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return {children};\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props: any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [