{"version":3,"sources":["../src/components/internals/postProcessingConfig.ts","../src/components/internals/PostProcessingEffects.tsx","../src/version.ts","../src/assets/assetsVersion.ts","../src/assets/cdnUrl.ts","../src/types.ts","../src/geometry/ModuleCatalog.ts","../src/geometry/MoverCatalog.ts","../src/geometry/normalizeXtsConfig.ts","../src/components/internals/useNormalizedConfig.ts","../src/geometry/coordinateConvention.ts","../src/interaction/SelectionManager.ts","../src/components/internals/useSelectionState.ts","../src/geometry/trackTransform.ts","../src/geometry/data/at2050-180-combined.path.json","../src/geometry/data/at2050-0500-half.path.json","../src/geometry/data/at2050-0501-half.path.json","../src/geometry/PointClouds.ts","../src/geometry/pathMath.ts","../src/geometry/ChainBuilder.ts","../src/geometry/positionFrame.ts","../src/geometry/chainClosure.ts","../src/geometry/moverCollision.ts","../src/geometry/XtsArcCurve3.ts","../src/geometry/XtsPointCloudCurve3.ts","../src/geometry/PathBuilder.ts","../src/geometry/moduleCollision.ts","../src/geometry/sampleChain.ts","../src/components/internals/viewerHelpers.ts","../src/components/internals/cameraAnimation.ts","../src/components/internals/screenshot.ts","../src/components/internals/useXtsViewerHandle.ts","../src/components/internals/MoverPositionStore.ts","../src/components/internals/ModuleStatusStore.ts","../src/assets/SidecarSourceContext.ts","../src/components/internals/useAutoPauseOnHidden.ts","../src/components/internals/useDemandRendering.ts","../src/components/internals/useShadowAutoUpdate.ts","../src/components/internals/ScenePostProcessing.tsx","../src/assets/AssetManifest.ts","../src/assets/configureGltfLoaders.ts","../src/assets/AssetLoader.ts","../src/components/internals/PathTube.tsx","../src/components/internals/PathMarker.tsx","../src/components/internals/DimensionLabel.tsx","../src/components/internals/PartTransformGroup.tsx","../src/components/internals/XtsStations.tsx","../src/components/internals/XtsAreas.tsx","../src/components/internals/useGltfClone.ts","../src/assets/SidecarLoader.ts","../src/assets/builtinSidecars.ts","../src/components/internals/useMoverSidecar.ts","../src/components/internals/XtsStaticMover.tsx","../src/components/internals/XtsStopPositionMovers.tsx","../src/geometry/heatmapInterpolation.ts","../src/components/internals/XtsStatorHeatmap.tsx","../src/geometry/dimensionTicks.ts","../src/components/internals/XtsDimensions.tsx","../src/components/internals/XtsInfoBars.tsx","../src/components/internals/useGltfHighlight.ts","../src/components/internals/SelectionTintContext.ts","../src/components/internals/CustomAssetMesh.tsx","../src/components/internals/XtsCustomAssets.tsx","../src/components/internals/SceneEnvironment.tsx","../src/components/internals/SceneLighting.tsx","../src/geometry/HepcoGfxRailProfile.ts","../src/components/internals/HepcoGfxRail.tsx","../src/components/internals/DriveStatusIcon.tsx","../src/components/internals/ModuleCornerMarkers.tsx","../src/components/internals/useModuleSidecar.ts","../src/components/internals/useRailSidecar.ts","../src/components/internals/XtsModule.tsx","../src/components/internals/MoverIdLabel.tsx","../src/components/internals/XtsMover.tsx","../src/components/internals/useToolSidecar.ts","../src/components/internals/XtsMoverTools.tsx","../src/components/internals/InstancedMoverBatch.tsx","../src/components/internals/ProcessingUnitRoot.tsx","../src/components/internals/XtsScene.tsx","../src/components/internals/CollisionMonitor.tsx","../src/components/internals/ModuleCollisionMonitor.tsx","../src/components/internals/silenceThreeWarnings.ts","../src/components/XtsViewer3D.tsx"],"names":["resolveMultisampling","value","DEFAULT_MULTISAMPLING","init_postProcessingConfig","__esmMin","__name","PostProcessingEffects_exports","__export","PostProcessingEffects","SsaoEffect","BloomEffect","init_PostProcessingEffects","intensity","radius","jsx","N8AO","threshold","Bloom","ssao","ssaoIntensity","ssaoRadius","bloom","bloomIntensity","bloomThreshold","bloomRadius","multisampling","effects","EffectComposer","VERSION","ASSETS_VERSION","JSDELIVR_ASSETS_BASE_URL","XtsViewerErrorException","code","message","details","STRAIGHT","moduleType","moduleLengthMm","CURVE","endAngleDeg","FREE_180","freePathId","MODULE_CATALOG","INFEED_MODULE_TYPES","getModuleEntry","isKnownModuleType","MOVER_CATALOG","getMoverEntry","moverType","isKnownMoverType","UINT32_MAX","isValidUint32","n","HALF_PAIRS","findHalfPair","t","pair","mergeHalves","modules","out","i","cur","next","merged","validatePart","part","warnings","m","validateMovers","xpu","partsByOid","partTrackLengths","seenIds","idx","clampMover","trackLength","mover","trackLengthMm","pos","trackLengthAfterMerge","sum","MODULE_LENGTH","STRUCTURAL_OMIT","structuralKey","config","key","cloneWithFreshPositions","cached","fresh","positionByMoverId","statusByMoverId","selectedByMoverId","w","newXpus","trackLengths","p","requested","nextStatus","nextSelected","XtsConfigNormalizer","result","normalizeXtsConfigImpl","_DEFAULT_NORMALIZER","normalizeXtsConfig","seenXpuObjectIds","seenPartObjectIds","seenModuleGlobalNumbers","xi","xoid","prev","xpuObjectIdForMessages","pi","oid","partObjectIdForMessages","mi","gn","newParts","mergedModules","newPart","movers","moverWarnings","useNormalizedConfig","onError","errorRef","useRef","normalized","useMemo","err","useEffect","negateY","x","y","z","negateZEuler","rx","ry","rz","flipPartTransformation","pt","flipTrackTransform","tt","applyBeckhoffXtsConvention","EMPTY_SELECTION","moduleKey","moverKey","isModuleSelected","selection","ref","isMoverSelected","deselectAll","applyModuleClick","mode","modifiers","additive","rangeSelectModules","toggleModuleInSelection","applyMoverClick","toggleMoverInSelection","applyEmptyClick","last","lo","hi","range","useSelectionState","props","internal","setInternal","useState","selectionMode","isControlled","effectiveSelection","updateSelection","useCallback","handleModuleClick","e","ev","handleMoverClick","handlePointerMissed","DEG2RAD","DEFAULT_TRACK_Z_MM","orientationMatrix","o","Matrix4","rot","Vector3","Quaternion","Euler","trackTransformMatrix","s","partTransformationMatrix","composeWorldMatrix","orientation","trackTransform","composePartWorldMatrix","partTransformation","at2050_180_combined_path_default","at2050_0500_half_path_default","at2050_0501_half_path_default","freeze","pts","REGISTRY","getPointCloud","id","registerPointCloud","cloud","unregisterPointCloud","X_AXIS","sampleStraight","sampleCurve","radiusMm","sgn","pfi","cos","sin","sampleFree","ds","N","idxFloat","a","p0","p1","y2d","tx2d","ty2d","tlen","tx","ty2dNorm","sampleModulePath","module","sMm","moduleEndDelta","theta","R","tRad","IDENTITY_POSE","rotateXY","yawDeg","c","composePose","b","bx","by","buildChain","cumulative","chain","catalog","startWorldPose","end","endLocal","findModuleAt","partPositionMm","moverWorldAt","found","localPosMm","sample","local","trackLengthOf","userToChainPositionMm","userPos","frame","sign","chainToUserPositionMm","chainPos","resolveStopPositionMm","stopValue","station","userMm","chainEndpointsForPart","negative","isChainClosed","ex","ey","yawMod360","DEFAULT_WARNING_GAP_MM","checkSamePathCollisions","partOid","probes","opts","warningGapMm","closed","onChain","lenA","j","lenB","linear","centerDist","viaWraparound","wrap","penetrationMm","XtsArcCurve3","Curve","optionalTarget","XtsPointCloudCurve3","buildPartPath","path","CurvePath","built","pushModuleCurves","LineCurve3","poseToMatrix4","pose","q","DEFAULT_MODULE_HALF_WIDTH_MM","DEFAULT_MODULE_HEIGHT_MM","EPS","SEGMENT_LENGTH_MM","obbFromCenteredMatrix","world","hx","hy","hz","col0","col1","col2","sx","sy","sz","axisX","axisY","axisZ","center","halfExtents","buildModuleObbs","builtModule","worldBase","halfWidthMm","heightMm","cat","length","startMat","segs","halfHeight","k","s0","s1","dx","dy","chord","segLocal","halfLen","obb","buildModuleProbes","xpus","adjacency","obbs","boundingSphere","probe","projectRadius","L","obbOverlap","gapThreshold","candidates","ai","bj","maxSeparation","mtvAxis","separation","refLess","checkModuleCollisions","includeSamePart","gap","info","bestOverlap","bestAxis","bestCenterDist","sa","sb","tVec","d","hit","aFirst","collision","sampleChainRange","startMm","endMm","stepMm","liftZ","lateralMm","total","start","direction","steps","yaw","nx","ny","sampleChainPoint","positionMm","tangent","DEFAULT_INFEED_HIGHLIGHT_COLOR","resolveModuleHighlights","moduleHighlights","highlightInfeedModules","infeedHighlightColor","base","computeBoundingBox","trackOverrides","box","Box3","tmpVec","trackM","partM","samples","TOP_DOWN_NEAR","TOP_DOWN_FAR","TOP_DOWN_CAMERA_LIFT_MM","computeTopDownOrtho","bbox","viewportAspect","paddingFactor","size","aspect","halfW","halfH","camZ","FOCUS_MARGIN_MM","MOVER_HALF_EXTENT_MM","partWorldMatrix","overrides","findPartByGlobalNumber","globalNumber","regionBoundingBox","partOids","startUser","endUser","anchorOid","anchor","anchorPart","pf","chainsByGlobal","parts","isFirst","isLast","ep","computeStationBoundingBox","stationId","st","computeAreaBoundingBox","areaId","ar","computeModuleBoundingBox","mod","computeMoverBoundingBox","getLivePositionMm","resolveToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","AgXToneMapping","NoToneMapping","ACESFilmicToneMapping","buildRuntimeState","easeInOutCubic","resolveEasing","name","animateCamera","args","camera","controls","toPosition","toTarget","toFrustum","duration","ease","now","raf","cb","caf","h","fromPos","fromTarget","oc","isOrtho","fromFrustum","apply","handle","cancelled","tick","raw","DEFAULT_QUALITY","DEFAULT_PADDING_FACTOR","captureScreenshot","ctx","gl","scene","liveCamera","format","quality","padding","dpr","canvas","cssW","cssH","width","height","renderCamera","resultCameraState","sceneAspect","imageAspect","f","ortho","OrthographicCamera","cs","persp","target","WebGLRenderTarget","SRGBColorSpace","exposureBoost","boostedLights","obj","maybeLight","prevTarget","prevAlpha","prevColor","Color","prevBg","bg","buffer","flipped","rowBytes","srcOff","dstOff","imageData","encodeImageData","light","orig","mimeFor","mime","cx","resolve","reject","blob","RAD2DEG","useXtsViewerHandle","cameraRef","orbitRef","glRef","sceneRef","moverStoreRef","moduleStatusStoreRef","trackTransformOverrides","cancelFocusRef","useImperativeHandle","cam","canvasAspect","applyTopDown","ctrl","boxForTarget","maxDim","fov","dist","dir","durationMs","easing","moverRef","yawQ","localTrans","localQ","localScale","finalQ","orbitTarget","liveTargetMm","moverId","update","store","moversByIndex","entry","v","statuses","results","live","byPart","arr","list","pp","effective","MoverPositionStore","existing","record","mm","partObjectId","MoverPositionStoreContext","React","ModuleStatusStore","status","array","touched","all","listener","set","l","ModuleStatusStoreContext","DEFAULT","SidecarSourceContext","createContext","useSidecarSource","useContext","useAutoPauseOnHidden","enabled","demandMode","setFrameloop","useThree","activeMode","handler","useDemandRendering","moverStore","invalidate","useShadowAutoUpdate","handleChange","LazyEffects","lazy","ScenePostProcessing","Suspense","beckhoff","filename","dual","beckhoffFile","hepcoFile","DEFAULT_MODULE_MANIFEST","DEFAULT_MOVER_MANIFEST","DEFAULT_TOOL_MANIFEST","DEFAULT_RAIL_MANIFEST","MODULE_GUIDING_RAIL_MAP","resolveModuleGlbUrl","rail","override","resolveMoverGlbUrl","resolveToolGlbUrl","toolType","resolveGuidingRailType","resolveGuidingRailGlbUrl","railType","buildTranscoderUrl","revision","REVISION","transcoderUrlOverride","setKtx2TranscoderUrl","url","ktx2Loader","resolveTranscoderUrl","explicit","getKtx2Loader","transcoderUrl","KTX2Loader","configureLoader","loader","options","decoder","MeshoptDecoder","ktx2","AssetLoader","GLTFLoader","controller","promise","urls","u","signal","arrayBuffer","res","gltf","SHARED","getSharedAssetLoader","composeAssetUrl","baseUrl","PathTube","points","thicknessMm","color","opacity","segmentsPerStep","radialSegments","geometry","curve","CatmullRomCurve3","segments","TubeGeometry","colorObj","DoubleSide","PathMarker","position","shape","sizeMm","tangentQuat","half","jsxs","DEFAULT_LABEL_FONT_URL","DimensionLabel","text","liftMm","fontFamily","lift","Billboard","Text","PartTransformGroup","children","visible","XtsStationsImpl","stations","chainsByPartOid","partTransformsByPartOid","display","positionFrame","stationOpts","thickness","defaultMarkerShape","defaultMarkerSize","showDescription","showStopValues","labelSize","labelColorOverride","partTransform","Station","XtsStations","colorHex","argbIntToHex","labelColor","markerShape","markerSize","descriptionAnchor","seg","mid","argb","r","g","XtsAreasImpl","areas","Area","XtsAreas","area","makeExtendLoader","TEXTURE_KEYS","useGltfClone","useGLTF","maxAnisotropy","cloned","cloneSkeleton","mesh","mats","applyMaterialPbrTuning","material","tex","std","DEFAULT_ORIGIN_CORRECTION","SidecarLoader","resolveOriginCorrection","sidecar","moduleSidecarFilename","moverSidecarFilename","toolSidecarFilename","railSidecarFilename","pickGlbForRail","BUILTIN_MODULE_SIDECARS","BUILTIN_MOVER_SIDECARS","BUILTIN_TOOL_SIDECARS","BUILTIN_RAIL_SIDECARS","useMoverSidecar","assetsBaseUrl","useBuiltins","builtin","setSidecar","alive","XtsStaticMoverContent","glbUrl","originCorrection","tintColor","pathLengthMm","correction","swaps","tint","cloneOne","original","XtsStaticMover","XtsStopPositionMoversImpl","tintByStation","stopMm","XtsStopPositionMovers","sortHeatmapSamples","interpolateHeatmapValue","first","span","normaliseToHeatmapRange","min","max","DEFAULT_MIN_COLOR","DEFAULT_MAX_COLOR","DEFAULT_THICKNESS_MM","DEFAULT_DISPLACEMENT_MM","DEFAULT_LATERAL_MM","DEFAULT_SEGMENTS_PER_MODULE","DEFAULT_OPACITY","RADIAL_SEGMENTS","PartHeatmapImpl","minColor","maxColor","displacementMm","lateralDisplacementMm","segmentsPerModule","sortedSamples","tubularSegments","geo","vertexCount","colors","cMin","cMax","tmpColor","ratio","vIdx","BufferAttribute","PartHeatmap","XtsStatorHeatmapImpl","visual","XtsStatorHeatmap","buildDimensionTicks","invert","intermediateStepMm","ticks","boundary","lastIdx","lastMod","formatDimensionValue","round","XtsDimensionsImpl","railSystem","dim","defaultLateralMm","showValues","showIntermediateValues","valueMode","intermediateMarker","PartDimensions","XtsDimensions","intermediateShape","intermediateSizeMm","tubePoints","boundarySize","intSize","intColor","mixWithBlack","resolved","Fragment","isBoundary","showThisLabel","userTickMm","labelText","hex","expand","Z_STEP_PER_INDEX","XtsInfoBars","infoBars","chainsByPartObjectId","partTransformsByPartObjectId","bar","startChain","endChain","markerChainPos","WARNING_COLOR","ERROR_COLOR","SELECTION_INTENSITY","BLINK_LO","BLINK_HI","BLINK_HZ","pickMode","selected","selectionColor","highlightColor","driveStatus","showWarnings","showErrors","useGltfHighlight","signature","mat","useFrame","clock","phase","SelectionTintContext","Inner","rotationDegEuler","scale","placeholderSizeMm","CustomAssetMesh","XtsCustomAssets","assets","asset","binding","SceneEnvironment","pmrem","PMREMGenerator","room","RoomEnvironment","previous","sceneAny","previousIntensity","SceneLighting","shadows","environmentLighting","environmentIntensity","HEPCO_GFX_PROFILE","resolveHepcoGfxProfile","createHepcoGfxBaseplateShape","dims","zWorld","yWorld","innerY","outerY","topZ","bottomZ","Shape","createHepcoGfxRailShape","halfWidth","mainHalfWidth","bottomHalfWidth","zSpearTop","zBottom","zSpearBot","zMid","SAMPLES_PER_MODULE","BASEPLATE_MATERIAL","RAIL_MATERIAL","samplePartLocalPoints","samplesPerModule","appendModuleSamples","yawRad","ox","oy","oz","startI","lx","ly","lz","wx","wy","wz","extrudeShape","ExtrudeGeometry","buildRailGeometries","profile","HepcoGfxRailImpl","baseplateColor","railColor","geometries","HepcoGfxRail","WARNING_FILL","WARNING_GLYPH","ERROR_FILL","ERROR_GLYPH","DriveStatusIcon","kind","triangleShape","ModuleCornerMarkers","bounds","corners","cornersOfAabb","minX","minY","minZ","maxX","maxY","maxZ","useModuleSidecar","useRailSidecar","XtsModuleContent","noSidecar","moduleGlobalNumber","showCornerMarkers","cornerMarkerSizeMm","cornerMarkerColor","guidingRail","guidingRailCorrection","onClick","statusStore","effectiveDriveStatus","useSyncExternalStore","matrix","effectiveCorrection","iconKind","PlaceholderMesh","ModuleGltfGroup","GuidingRailGltfGroup","XtsModule","cornerMarkers","correctionOverride","DEFAULT_OFFSET_MM","DEFAULT_FONT_SIZE_MM","DEFAULT_COLOR","DEFAULT_OUTLINE_COLOR","MoverIdLabel","fontSizeMm","offset","fontUrl","outlineWidthMm","outlineColor","XtsMoverContent","showMoverId","moverIdLabelOptions","positionStore","groupRef","XtsMover","useToolSidecar","XtsMoverTools","tools","assetManifest","toolOverrides","tool","ToolInstance","_obj","Object3D","_color","InstancedMoverBatch","defaultColor","meshRef","count","inst","DynamicDrawUsage","dirty","ProcessingUnitRootImpl","selectionColors","onModuleClick","onMoverClick","sidecarOverrides","customAssets","hepcoGfxProfile","instancing","resolvedHepcoProfile","map","highlightByType","moverEntry","moverGlbUrl","railGlbFile","moduleRef","isSelected","moduleHighlightColor","hasChildren","isAllMovers","isThisMover","ProcessingUnitRoot","XtsScene","showGrid","performance","shadowOnDemand","demandRendering","viewCube","overlayFps","onOrbitReady","onCameraReady","projection","topDown","lock","statorHeatmap","orientationPos","orientationRot","showStations","showAreas","showDimensions","orthoMode","sceneBbox","orthoCenter","enableRotate","enablePan","enableZoom","chainsAll","stationsForAllXpus","areasForAllXpus","infoBarsByXpuObjectId","Grid","TopDownOrthoCamera","OrbitControls","ControlsCapture","CameraCapture","Stats","GizmoHelper","GizmoViewcube","xpuChainsByOid","xpuChainsByPartObjectId","xpuPartTransformsByOid","xpuPartTransformsByPartObjectId","xpuInfoBars","ttPos","ttRot","ttScale","ttVisible","onReady","state","camRef","frustum","useLayoutEffect","PENETRATION_EPS_MM","CollisionMonitor","intervalMs","forceClosedLoop","onCollisionsChange","lastKeyRef","lastTickRef","partsRef","moverList","penFloor","ModuleCollisionMonitor","floor","SILENCER_MARKER","SILENCED_PREFIXES","silenceUpstreamThreeWarnings","getConsoleFunction","filter","type","params","fn","setConsoleFunction","DEFAULT_ASSETS_BASE_URL","XtsViewer3D","forwardRef","initialCamera","debug","className","style","rawNormalized","coordinateSystem","effectiveModuleHighlights","initialCameraPosition","initialCameraTarget","shadowsEnabled","environmentLightingEnabled","toneMappingMode","toneMappingExposure","maxDpr","ktx2TranscoderUrl","Canvas"],"mappings":"usBASO,SAASA,EAAAA,CAAqBC,CAAAA,CAAwB,CAC3D,OAAI,OAAOA,CAAAA,EAAU,QAAA,EAAY,CAAC,MAAA,CAAO,QAAA,CAASA,CAAK,CAAA,EAAKA,CAAAA,CAAQ,CAAA,CAC3D,CAAA,CAEF,IAAA,CAAK,KAAA,CAAMA,CAAK,CACzB,CAdA,IAMaC,EAAAA,CANbC,EAAAA,CAAAC,EAAAA,CAAA,IAAA,CAMaF,EAAAA,CAAwB,CAAA,CAGrBG,CAAAA,CAAAL,EAAAA,CAAA,sBAAA,EAAA,CAAA,CAAA,CCThB,IAAAM,EAAAA,CAAA,EAAA,CAAAC,EAAAA,CAAAD,EAAAA,CAAA,CAAA,qBAAA,CAAA,IAAAJ,EAAAA,CAAA,qBAAA,CAAA,IAAAM,EAAAA,CAAA,oBAAA,CAAA,IAAAR,EAAAA,CAAAA,CAAAA,CAAA,IAyBMS,EAAAA,CAKAC,EAAAA,CAaOF,EAAAA,CA3CbG,EAAAA,CAAAP,EAAAA,CAAA,IAAA,CAEAD,EAAAA,EAAAA,CAEAA,EAAAA,EAAAA,CAqBMM,GAA8DJ,CAAAA,CAAA,CAAC,CACnE,SAAA,CAAAO,CAAAA,CACA,MAAA,CAAAC,CACF,CAAA,GAAMC,cAAAA,CAACC,mBAAAA,CAAA,CAAK,QAAA,CAAUF,CAAAA,CAAQ,SAAA,CAAWD,CAAAA,CAAW,OAAA,CAAO,IAAA,CAAC,eAAA,CAAiB,EAAA,CAAK,CAAA,CAHd,YAAA,CAAA,CAK9DF,EAAAA,CAIDL,CAAAA,CAAA,CAAC,CAAE,SAAA,CAAAO,CAAAA,CAAW,SAAA,CAAAI,CAAAA,CAAW,MAAA,CAAAH,CAAO,CAAA,GACnCC,cAAAA,CAACG,oBAAAA,CAAA,CACC,SAAA,CAAWL,CAAAA,CACX,kBAAA,CAAoBI,CAAAA,CACpB,kBAAA,CAAoBH,CAAAA,CACpB,UAAA,CAAU,IAAA,CACZ,CAAA,CANG,aAAA,CAAA,CASQL,EAAAA,CAA8DH,CAAAA,CAAA,CAAC,CAC1E,IAAA,CAAAa,CAAAA,CAAO,KAAA,CACP,aAAA,CAAAC,CAAAA,CAAgB,CAAA,CAChB,UAAA,CAAAC,CAAAA,CAAa,EAAA,CACb,KAAA,CAAAC,CAAAA,CAAQ,KAAA,CACR,cAAA,CAAAC,EAAiB,EAAA,CACjB,cAAA,CAAAC,CAAAA,CAAiB,GAAA,CACjB,WAAA,CAAAC,CAAAA,CAAc,EAAA,CACd,aAAA,CAAAC,CACF,CAAA,GAAM,CACJ,IAAMC,CAAAA,CAAgC,EAAC,CAgBvC,OAfIR,CAAAA,EACFQ,CAAAA,CAAQ,IAAA,CACNZ,cAAAA,CAACL,EAAAA,CAAA,CAAsB,SAAA,CAAWU,CAAAA,CAAe,MAAA,CAAQC,CAAAA,CAAAA,CAAzC,MAAqD,CACvE,CAAA,CAEEC,CAAAA,EACFK,CAAAA,CAAQ,IAAA,CACNZ,cAAAA,CAACJ,EAAAA,CAAA,CAEC,SAAA,CAAWY,CAAAA,CACX,SAAA,CAAWC,CAAAA,CACX,MAAA,CAAQC,CAAAA,CAAAA,CAHJ,OAIN,CACF,CAAA,CAEEE,CAAAA,CAAQ,MAAA,GAAW,CAAA,CAAU,IAAA,CAE/BZ,cAAAA,CAACa,6BAAAA,CAAA,CAAe,aAAA,CAAe3B,EAAAA,CAAqByB,CAAa,CAAA,CAC9D,QAAA,CAAAC,CAAAA,CACH,CAEJ,CAAA,CAhC2E,uBAAA,EAAA,CAAA,CAAA,CCjCpE,IAAME,EAAAA,CAAU,QCUhB,IAAMC,EAAAA,CAAiB,OAAA,CCCvB,IAAMC,EAAAA,CACX,CAAA,2DAAA,EAA8DD,EAAc,CAAA,OAAA,EC28BvE,IAAME,CAAAA,CAAN,cAAsC,KAAM,CAj+BnD,OAi+BmD1B,CAAAA,CAAA,IAAA,CAAA,yBAAA,EAAA,CACjC,IAAA,CACA,OAAA,CAChB,WAAA,CAAY2B,CAAAA,CAA0BC,CAAAA,CAAiBC,CAAAA,CAAmB,CACxE,KAAA,CAAMD,CAAO,CAAA,CACb,IAAA,CAAK,IAAA,CAAO,gBAAA,CACZ,IAAA,CAAK,IAAA,CAAOD,CAAAA,CACZ,IAAA,CAAK,OAAA,CAAUE,EACjB,CACF,MCv7BMC,CAAAA,CAAW9B,CAAAA,CAAA,CACf+B,CAAAA,CACAC,CAAAA,IACwB,CACxB,UAAA,CAAAD,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,QAAA,CAAU,UAAA,CACV,WAAA,CAAa,CAAA,CACb,kBAAA,CAAoB,IACtB,CAAA,CAAA,CATiB,UAAA,CAAA,CAWXC,CAAAA,CAAQjC,CAAAA,CAAA,CACZ+B,CAAAA,CACAG,CAAAA,CACAF,CAAAA,CAAiB,GAAA,IACO,CACxB,UAAA,CAAAD,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,QAAA,CAAU,OAAA,CACV,WAAA,CAAAE,CAAAA,CACA,kBAAA,CAAoBF,CAAAA,CAAiB,IAAA,CAAK,GAAA,CAAKE,CAAAA,CAAc,IAAA,CAAK,EAAA,CAAM,GAAG,CAC7E,CAAA,CAAA,CAVc,OAAA,CAAA,CAYRC,EAAAA,CAAWnC,CAAAA,CAAA,CACf+B,CAAAA,CACAK,CAAAA,IACwB,CACxB,UAAA,CAAAL,EACA,cAAA,CAAgB,GAAA,CAChB,QAAA,CAAU,MAAA,CACV,WAAA,CAAa,GAAA,CACb,kBAAA,CAAoB,IAAA,CACpB,UAAA,CAAAK,CACF,CAAA,CAAA,CAViB,UAAA,CAAA,CAYJC,EAAAA,CACX,MAAA,CAAO,MAAA,CAAO,CAEZ,WAAA,CAAaP,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CACxC,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC/D,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC/D,WAAA,CAAaA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CACxC,uBAAA,CAAyBA,CAAAA,CAAS,yBAAA,CAA2B,GAAG,CAAA,CAChE,WAAA,CAAaA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CACxC,WAAA,CAAaA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CACxC,WAAA,CAAaA,EAAS,aAAA,CAAe,GAAG,CAAA,CACxC,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAG/D,WAAA,CAAaG,CAAAA,CAAM,aAAA,CAAe,IAAK,CAAA,CACvC,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAM,aAAA,CAAe,IAAK,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC9D,WAAA,CAAaA,CAAAA,CAAM,aAAA,CAAe,KAAK,CAAA,CACvC,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAM,aAAA,CAAe,KAAK,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC9D,WAAA,CAAaA,CAAAA,CAAM,aAAA,CAAe,EAAG,CAAA,CACrC,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAM,aAAA,CAAe,EAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC5D,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAM,cAAe,EAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC5D,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAM,aAAA,CAAe,EAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAG5D,WAAA,CAAa,CAGX,UAAA,CAAY,aAAA,CACZ,cAAA,CAAgB,GAAA,CAChB,QAAA,CAAU,MAAA,CACV,WAAA,CAAa,EAAA,CACb,kBAAA,CAAoB,IAAA,CACpB,UAAA,CAAY,kBACd,CAAA,CACA,WAAA,CAAa,CACX,UAAA,CAAY,aAAA,CACZ,cAAA,CAAgB,GAAA,CAChB,QAAA,CAAU,MAAA,CACV,WAAA,CAAa,EAAA,CACb,kBAAA,CAAoB,IAAA,CACpB,UAAA,CAAY,kBACd,CAAA,CACA,eAAA,CAAiBE,EAAAA,CAAS,iBAAA,CAAmB,qBAAqB,CAAA,CAGlE,WAAA,CAAaL,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CACxC,WAAA,CAAa,CAAE,GAAGA,CAAAA,CAAS,aAAA,CAAe,GAAG,CAAA,CAAG,SAAU,IAAK,CAAA,CAG/D,YAAA,CAAcA,CAAAA,CAAS,cAAA,CAAgB,GAAG,CAAA,CAC1C,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAS,cAAA,CAAgB,GAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CACjE,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAS,cAAA,CAAgB,GAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAGjE,YAAA,CAAcG,CAAAA,CAAM,cAAA,CAAgB,IAAK,CAAA,CACzC,YAAA,CAAcA,CAAAA,CAAM,cAAA,CAAgB,EAAG,CAAA,CACvC,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAM,cAAA,CAAgB,EAAG,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC9D,YAAA,CAAcA,CAAAA,CAAM,cAAA,CAAgB,EAAG,CAAA,CAGvC,YAAA,CAAc,CACZ,UAAA,CAAY,cAAA,CACZ,cAAA,CAAgB,GAAA,CAChB,QAAA,CAAU,MAAA,CACV,WAAA,CAAa,EAAA,CACb,mBAAoB,IAAA,CACpB,UAAA,CAAY,kBACd,CAAA,CACA,YAAA,CAAc,CACZ,UAAA,CAAY,cAAA,CACZ,cAAA,CAAgB,GAAA,CAChB,QAAA,CAAU,MAAA,CACV,WAAA,CAAa,EAAA,CACb,kBAAA,CAAoB,IAAA,CACpB,UAAA,CAAY,kBACd,CAAA,CACA,gBAAA,CAAkBE,EAAAA,CAAS,kBAAA,CAAoB,qBAAqB,CACtE,CAAC,CAAA,CAUUG,EAAAA,CAA+C,MAAA,CAAO,MAAA,CAChE,MAAA,CAAO,MAAA,CAAOD,EAAc,CAAA,CAC1B,MAAA,CAAQ,CAAA,EAAM,CAAA,CAAE,QAAQ,CAAA,CACxB,GAAA,CAAK,CAAA,EAAM,CAAA,CAAE,UAAU,CAC5B,EAGO,SAASE,EAAAA,CACdR,CAAAA,CACgC,CAChC,OAAOM,EAAAA,CAAeN,CAAU,CAClC,CAJgB/B,CAAAA,CAAAuC,EAAAA,CAAA,gBAAA,CAAA,CAOT,SAASC,EAAAA,CAAkB5C,CAAAA,CAAsC,CACtE,OAAO,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAKyC,EAAAA,CAAgBzC,CAAK,CACnE,CAFgBI,CAAAA,CAAAwC,EAAAA,CAAA,mBAAA,CAAA,CCrKT,IAAMC,EAAAA,CACX,MAAA,CAAO,MAAA,CAAO,CACZ,WAAA,CAAa,CACX,SAAA,CAAW,aAAA,CACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,KAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,WAAA,CAAa,CACX,SAAA,CAAW,aAAA,CACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,GAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,WAAA,CAAa,CACX,SAAA,CAAW,aAAA,CACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,KAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,WAAA,CAAa,CACX,SAAA,CAAW,cACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,KAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,WAAA,CAAa,CACX,SAAA,CAAW,aAAA,CACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,KAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,YAAA,CAAc,CACZ,SAAA,CAAW,cAAA,CACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,GAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,YAAA,CAAc,CACZ,SAAA,CAAW,cAAA,CACX,YAAA,CAAc,EAAA,CACd,QAAA,CAAU,GAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CACA,MAAA,CAAQ,CACN,SAAA,CAAW,QAAA,CACX,YAAA,CAAc,EAAA,CACd,SAAU,GAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CAAA,CAIA,kBAAA,CAAoB,CAClB,SAAA,CAAW,oBAAA,CACX,YAAA,CAAc,GAAA,CACd,QAAA,CAAU,EAAA,CACV,mBAAA,CAAqB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAC/B,CACF,CAAC,EAEI,SAASC,EAAAA,CACdC,CAAAA,CAC+B,CAC/B,OAAOF,EAAAA,CAAcE,CAAS,CAChC,CAJgB3C,CAAAA,CAAA0C,EAAAA,CAAA,eAAA,CAAA,CAMT,SAASE,EAAAA,CAAiBhD,CAAAA,CAAqC,CACpE,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK6C,EAAAA,CAAe7C,CAAK,CAClE,CAFgBI,CAAAA,CAAA4C,EAAAA,CAAA,kBAAA,CAAA,CC5BhB,IAAMC,EAAAA,CAAa,UAAA,CAEnB,SAASC,EAAAA,CAAcC,CAAAA,CAAyB,CAC9C,OACE,OAAOA,GAAM,QAAA,EACb,MAAA,CAAO,SAAA,CAAUA,CAAC,CAAA,EAClBA,CAAAA,EAAK,CAAA,EACLA,CAAAA,EAAKF,EAET,CAPS7C,CAAAA,CAAA8C,EAAAA,CAAA,eAAA,CAAA,CAST,IAAME,EAAAA,CAID,CACH,CAAE,CAAA,CAAG,aAAA,CAAe,CAAA,CAAG,aAAA,CAAe,MAAA,CAAQ,iBAAkB,CAAA,CAChE,CAAE,CAAA,CAAG,cAAA,CAAgB,CAAA,CAAG,cAAA,CAAgB,MAAA,CAAQ,kBAAmB,CACrE,CAAA,CAEA,SAASC,EAAAA,CAAaC,CAAAA,CAAiB,CACrC,IAAA,IAAWC,CAAAA,IAAQH,EAAAA,CACjB,GAAIG,CAAAA,CAAK,CAAA,GAAMD,CAAAA,CAAG,OAAOC,CAG7B,CALSnD,CAAAA,CAAAiD,EAAAA,CAAA,cAAA,CAAA,CAWT,SAASG,EAAAA,CAAYC,CAAAA,CAAoD,CACvE,IAAMC,CAAAA,CAAqB,EAAC,CAC5B,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,EAAQ,MAAA,CAAQE,CAAAA,EAAAA,CAAK,CACvC,IAAMC,CAAAA,CAAMH,CAAAA,CAAQE,CAAC,CAAA,CACfJ,CAAAA,CAAOF,EAAAA,CAAaO,CAAAA,CAAI,UAAU,CAAA,CAClCC,CAAAA,CAAOJ,CAAAA,CAAQE,CAAAA,CAAI,CAAC,CAAA,CAC1B,GAAIJ,CAAAA,EAAQM,CAAAA,EAAQA,CAAAA,CAAK,UAAA,GAAeN,CAAAA,CAAK,CAAA,CAAG,CAG9C,IAAMO,CAAAA,CAAsB,CAAE,UAAA,CAAYP,CAAAA,CAAK,MAAO,CAAA,CAAA,CAClDK,CAAAA,CAAI,MAAA,EAAUC,CAAAA,CAAK,MAAA,IACrBC,CAAAA,CAAO,MAAA,CAAS,CACd,OAAA,CAAS,CAAC,EAAEF,CAAAA,CAAI,MAAA,EAAQ,OAAA,EAAWC,CAAAA,CAAK,MAAA,EAAQ,OAAA,CAAA,CAChD,KAAA,CAAO,CAAC,EAAED,CAAAA,CAAI,MAAA,EAAQ,KAAA,EAASC,CAAAA,CAAK,MAAA,EAAQ,KAAA,CAC9C,CAAA,CAAA,CAEFH,CAAAA,CAAI,IAAA,CAAKI,CAAM,CAAA,CACfH,CAAAA,EAAK,CAAA,CACL,QACF,CACA,GAAIJ,CAAAA,GAAS,CAACM,CAAAA,EAAQA,CAAAA,CAAK,UAAA,GAAeN,CAAAA,CAAK,CAAA,CAAA,CAC7C,MAAM,IAAIzB,CAAAA,CACR,yBAAA,CACA,CAAA,EAAGyB,CAAAA,CAAK,CAAC,CAAA,UAAA,EAAaI,CAAC,CAAA,oBAAA,EAAuBJ,CAAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CACpD,CAAE,KAAA,CAAOI,CAAAA,CAAG,UAAA,CAAYJ,CAAAA,CAAK,CAAE,CACjC,CAAA,CAGF,GACEK,CAAAA,CAAI,UAAA,GAAe,aAAA,EACnBA,CAAAA,CAAI,UAAA,GAAe,cAAA,CAEnB,MAAM,IAAI9B,CAAAA,CACR,yBAAA,CACA,CAAA,KAAA,EAAQ8B,CAAAA,CAAI,UAAU,CAAA,UAAA,EAAaD,CAAC,CAAA,oCAAA,CAAA,CACpC,CAAE,KAAA,CAAOA,CAAAA,CAAG,UAAA,CAAYC,CAAAA,CAAI,UAAW,CACzC,CAAA,CAEFF,CAAAA,CAAI,IAAA,CAAKE,CAAG,EACd,CACA,OAAOF,CACT,CAzCStD,CAAAA,CAAAoD,EAAAA,CAAA,aAAA,CAAA,CA2CT,SAASO,EAAAA,CAAaC,CAAAA,CAA0C,CAC9D,IAAMC,CAAAA,CAAmC,EAAC,CACtCD,CAAAA,CAAK,OAAA,CAAQ,MAAA,GAAW,CAAA,EAC1BC,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,YAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASD,CAAAA,CAAK,YAAY,CAAA,gBAAA,CAAA,CACnC,OAAA,CAAS,CAAE,OAAA,CAASA,CAAAA,CAAK,YAAa,CACxC,CAAC,CAAA,CAEH,IAAA,IAASL,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIK,CAAAA,CAAK,OAAA,CAAQ,MAAA,CAAQL,CAAAA,EAAAA,CAAK,CAC5C,IAAMO,CAAAA,CAAIF,CAAAA,CAAK,OAAA,CAAQL,CAAC,CAAA,CACxB,GAAI,CAACf,EAAAA,CAAkBsB,CAAAA,CAAE,UAAU,CAAA,CACjC,MAAM,IAAIpC,CAAAA,CACR,qBAAA,CACA,CAAA,oBAAA,EAAuBoC,CAAAA,CAAE,UAAU,CAAA,WAAA,EAAcF,CAAAA,CAAK,YAAY,CAAA,OAAA,EAAUL,CAAC,CAAA,CAAA,CAC7E,CAAE,OAAA,CAASK,CAAAA,CAAK,YAAA,CAAc,KAAA,CAAOL,CAAAA,CAAG,UAAA,CAAYO,CAAAA,CAAE,UAAW,CACnE,CAEJ,CACA,OAAOD,CACT,CApBS7D,CAAAA,CAAA2D,EAAAA,CAAA,cAAA,CAAA,CAsBT,SAASI,EAAAA,CACPC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAC6D,CAC7D,IAAML,CAAAA,CAAmC,EAAC,CACpCM,CAAAA,CAAU,IAAI,GAAA,CACdb,CAAAA,CAAqB,EAAC,CAE5B,IAAA,IAAWQ,CAAAA,IAAKE,CAAAA,CAAI,MAAA,CAAQ,CAE1B,GAAI,CADSC,CAAAA,CAAW,GAAA,CAAIH,CAAAA,CAAE,OAAO,CAAA,CAC1B,CACTD,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,cAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASC,CAAAA,CAAE,EAAE,uBAAuBA,CAAAA,CAAE,OAAO,CAAA,qBAAA,EAAwBE,CAAAA,CAAI,QAAQ,CAAA,gBAAA,CAAA,CAC1F,OAAA,CAAS,CAAE,KAAA,CAAOF,CAAAA,CAAG,WAAA,CAAaE,CAAAA,CAAI,QAAS,CACjD,CAAC,CAAA,CACD,QACF,CACA,GAAIF,CAAAA,CAAE,EAAA,GAAO,MAAA,EAAaA,CAAAA,CAAE,EAAA,GAAO,IAAA,CAAM,CACvCD,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,kBAAA,CACN,OAAA,CAAS,CAAA,eAAA,EAAkBC,CAAAA,CAAE,KAAK,CAAA,QAAA,EAAWE,CAAAA,CAAI,QAAQ,CAAA,gCAAA,CAAA,CACzD,OAAA,CAAS,CAAE,KAAA,CAAOF,CAAAA,CAAG,WAAA,CAAaE,CAAAA,CAAI,QAAS,CACjD,CAAC,CAAA,CACD,QACF,CACA,GAAI,CAAClB,EAAAA,CAAcgB,CAAAA,CAAE,EAAE,CAAA,CAAG,CACxBD,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,mBACN,OAAA,CAAS,CAAA,SAAA,EAAY,MAAA,CAAOC,CAAAA,CAAE,EAAE,CAAC,CAAA,MAAA,EAASE,CAAAA,CAAI,QAAQ,CAAA,4DAAA,CAAA,CACtD,OAAA,CAAS,CAAE,KAAA,CAAOF,CAAAA,CAAG,WAAA,CAAaE,CAAAA,CAAI,QAAS,CACjD,CAAC,CAAA,CACD,QACF,CACA,GAAIG,CAAAA,CAAQ,GAAA,CAAIL,CAAAA,CAAE,EAAE,CAAA,CAAG,CACrBD,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,oBAAA,CACN,OAAA,CAAS,CAAA,mBAAA,EAAsBC,CAAAA,CAAE,EAAE,CAAA,QAAA,EAAWE,CAAAA,CAAI,QAAQ,CAAA,wBAAA,CAAA,CAC1D,OAAA,CAAS,CAAE,EAAA,CAAIF,CAAAA,CAAE,EAAA,CAAI,WAAA,CAAaE,CAAAA,CAAI,QAAS,CACjD,CAAC,CAAA,CAED,IAAMI,CAAAA,CAAMD,CAAAA,CAAQ,GAAA,CAAIL,CAAAA,CAAE,EAAE,CAAA,CAC5BR,CAAAA,CAAIc,CAAG,EAAIC,EAAAA,CAAWP,CAAAA,CAAGI,CAAAA,CAAiB,GAAA,CAAIJ,CAAAA,CAAE,OAAO,CAAA,EAAK,CAAA,CAAGD,CAAQ,CAAA,CACvE,QACF,CACA,IAAMS,CAAAA,CAAcJ,CAAAA,CAAiB,GAAA,CAAIJ,CAAAA,CAAE,OAAO,CAAA,EAAK,CAAA,CACvDR,CAAAA,CAAI,IAAA,CAAKe,EAAAA,CAAWP,CAAAA,CAAGQ,CAAAA,CAAaT,CAAQ,CAAC,CAAA,CAC7CM,CAAAA,CAAQ,GAAA,CAAIL,CAAAA,CAAE,EAAA,CAAIR,CAAAA,CAAI,MAAA,CAAS,CAAC,EAClC,CACA,OAAO,CAAE,MAAA,CAAQA,CAAAA,CAAK,QAAA,CAAAO,CAAS,CACjC,CAnDS7D,CAAAA,CAAA+D,EAAAA,CAAA,gBAAA,CAAA,CAqDT,SAASM,EAAAA,CACPE,CAAAA,CACAC,CAAAA,CACAX,CAAAA,CACa,CACb,IAAIY,CAAAA,CAAMF,CAAAA,CAAM,cAAA,CAChB,OAAK,MAAA,CAAO,QAAA,CAASE,CAAG,IAAGA,CAAAA,CAAM,CAAA,CAAA,CAC7BA,CAAAA,CAAM,CAAA,EACRZ,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,oBAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASU,CAAAA,CAAM,EAAE,CAAA,gBAAA,EAAmBE,CAAG,CAAA,cAAA,CAAA,CAChD,OAAA,CAAS,CAAE,KAAA,CAAAF,CAAAA,CAAO,QAAA,CAAUA,CAAAA,CAAM,cAAe,CACnD,CAAC,CAAA,CACDE,CAAAA,CAAM,CAAA,EACGA,CAAAA,CAAMD,CAAAA,GACfX,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,oBAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASU,CAAAA,CAAM,EAAE,CAAA,gBAAA,EAAmBE,CAAG,CAAA,wBAAA,EAA2BD,CAAa,CAAA,CAAA,CAAA,CACxF,OAAA,CAAS,CAAE,KAAA,CAAAD,CAAAA,CAAO,QAAA,CAAUA,CAAAA,CAAM,cAAA,CAAgB,aAAA,CAAAC,CAAc,CAClE,CAAC,CAAA,CACDC,CAAAA,CAAMD,CAAAA,CAAAA,CAED,CAAE,GAAGD,CAAAA,CAAO,cAAA,CAAgBE,CAAI,CACzC,CAvBSzE,CAAAA,CAAAqE,EAAAA,CAAA,YAAA,CAAA,CA+BT,SAASK,EAAAA,CAAsBrB,CAAAA,CAA6C,CAC1E,IAAIsB,CAAAA,CAAM,CAAA,CACV,IAAA,IAAWb,CAAAA,IAAKT,CAAAA,CACdsB,CAAAA,EAAOC,EAAAA,CAAcd,CAAAA,CAAE,UAAU,CAAA,EAAK,CAAA,CAExC,OAAOa,CACT,CANS3E,CAAAA,CAAA0E,EAAAA,CAAA,uBAAA,CAAA,CAQT,IAAME,EAAAA,CAAwD,MAAA,CAAO,MAAA,CAAO,CAC1E,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,uBAAA,CAAyB,GAAA,CACzB,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,eAAA,CAAiB,GAAA,CACjB,WAAA,CAAa,GAAA,CACb,WAAA,CAAa,GAAA,CACb,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,YAAA,CAAc,GAAA,CACd,gBAAA,CAAkB,GACpB,CAAC,CAAA,CAEKC,EAAAA,CAAkB,IAAI,GAAA,CAAI,CAC9B,gBAAA,CACA,UAAA,CACA,QACF,CAAC,CAAA,CAED,SAASC,EAAAA,CAAcC,CAAAA,CAA2B,CAChD,OAAO,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAQ,CAACC,CAAAA,CAAKpF,CAAAA,GAClCiF,EAAAA,CAAgB,GAAA,CAAIG,CAAG,CAAA,CAAI,MAAA,CAAYpF,CACzC,CACF,CAJSI,EAAA8E,EAAAA,CAAA,eAAA,CAAA,CAMT,SAASG,EAAAA,CACPC,CAAAA,CACAC,CAAAA,CACqB,CACrB,IAAMC,CAAAA,CAAoB,IAAI,GAAA,CACxBC,CAAAA,CAAkB,IAAI,GAAA,CAItBC,CAAAA,CAAoB,IAAI,GAAA,CAC9B,IAAA,IAAWtB,CAAAA,IAAOmB,CAAAA,CAAM,eAAA,CACtB,IAAA,IAAWrB,CAAAA,IAAKE,CAAAA,CAAI,MAAA,CAClBoB,CAAAA,CAAkB,GAAA,CAAItB,CAAAA,CAAE,EAAA,CAAIA,CAAAA,CAAE,cAAc,CAAA,CAC5CuB,CAAAA,CAAgB,GAAA,CAAIvB,CAAAA,CAAE,EAAA,CAAIA,CAAAA,CAAE,MAAM,CAAA,CAClCwB,CAAAA,CAAkB,GAAA,CAAIxB,CAAAA,CAAE,EAAA,CAAIA,CAAAA,CAAE,QAAQ,CAAA,CAK1C,IAAMD,CAAAA,CAAWqB,CAAAA,CAAO,UAAA,CAAW,MAAA,CAChCK,CAAAA,EAAMA,CAAAA,CAAE,IAAA,GAAS,oBACpB,CAAA,CACMC,CAAAA,CAAUN,CAAAA,CAAO,eAAA,CAAgB,GAAA,CAAKlB,CAAAA,EAAQ,CAClD,IAAMyB,CAAAA,CAAe,IAAI,GAAA,CACzB,IAAA,IAAWC,CAAAA,IAAK1B,CAAAA,CAAI,KAAA,CAAO,CACzB,IAAIW,CAAAA,CAAM,CAAA,CACV,IAAA,IAAWb,CAAAA,IAAK4B,CAAAA,CAAE,OAAA,CAChBf,CAAAA,EAAOC,EAAAA,CAAcd,CAAAA,CAAE,UAAU,CAAA,EAAK,CAAA,CACxC2B,CAAAA,CAAa,GAAA,CAAIC,CAAAA,CAAE,YAAA,CAAcf,CAAG,EACtC,CACA,OAAO,CACL,GAAGX,CAAAA,CACH,MAAA,CAAQA,CAAAA,CAAI,MAAA,CAAO,GAAA,CAAKF,CAAAA,EAAM,CAC5B,IAAM6B,CAAAA,CAAYP,CAAAA,CAAkB,GAAA,CAAItB,CAAAA,CAAE,EAAE,CAAA,CACtCQ,CAAAA,CAAcmB,CAAAA,CAAa,GAAA,CAAI3B,CAAAA,CAAE,OAAO,CAAA,EAAK,CAAA,CAC/CW,CAAAA,CAAMkB,CAAAA,EAAa7B,CAAAA,CAAE,cAAA,CACpB,MAAA,CAAO,QAAA,CAASW,CAAG,CAAA,GAAGA,CAAAA,CAAM,CAAA,CAAA,CAC7BA,EAAM,CAAA,EACRZ,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,oBAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASC,CAAAA,CAAE,EAAE,CAAA,gBAAA,EAAmBW,CAAG,CAAA,cAAA,CAAA,CAC5C,OAAA,CAAS,CAAE,KAAA,CAAOX,CAAAA,CAAG,QAAA,CAAUW,CAAI,CACrC,CAAC,CAAA,CACDA,CAAAA,CAAM,CAAA,EACGA,CAAAA,CAAMH,CAAAA,GACfT,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,oBAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASC,CAAAA,CAAE,EAAE,CAAA,gBAAA,EAAmBW,CAAG,CAAA,wBAAA,EAA2BH,CAAW,CAAA,CAAA,CAAA,CAClF,OAAA,CAAS,CAAE,KAAA,CAAOR,CAAAA,CAAG,QAAA,CAAUW,CAAAA,CAAK,WAAA,CAAAH,CAAY,CAClD,CAAC,CAAA,CACDG,CAAAA,CAAMH,CAAAA,CAAAA,CAER,IAAMsB,CAAAA,CAAaP,CAAAA,CAAgB,GAAA,CAAIvB,CAAAA,CAAE,EAAE,CAAA,CACrC+B,CAAAA,CAAeP,CAAAA,CAAkB,IAAIxB,CAAAA,CAAE,EAAE,CAAA,CAC/C,OAAO,CACL,GAAGA,CAAAA,CACH,cAAA,CAAgBW,CAAAA,CAChB,GAAImB,CAAAA,GAAe,MAAA,CAAY,CAAE,MAAA,CAAQA,CAAW,CAAA,CAAI,EAAC,CACzD,GAAIC,CAAAA,GAAiB,MAAA,CAAY,CAAE,QAAA,CAAUA,CAAa,CAAA,CAAI,EAChE,CACF,CAAC,CACH,CACF,CAAC,CAAA,CACD,OAAO,CAAE,GAAGX,CAAAA,CAAQ,eAAA,CAAiBM,CAAAA,CAAS,UAAA,CAAY3B,CAAS,CACrE,CAhES7D,CAAAA,CAAAiF,EAAAA,CAAA,yBAAA,CAAA,CAgFF,IAAMa,EAAAA,CAAN,KAA0B,CAxXjC,OAwXiC9F,CAAAA,CAAA,IAAA,CAAA,qBAAA,EAAA,CACvB,MAAA,CAGG,IAAA,CAEX,SAAA,CAAU+E,CAAAA,CAAwC,CAChD,IAAMC,CAAAA,CAAMF,EAAAA,CAAcC,CAAM,CAAA,CAChC,GAAI,IAAA,CAAK,MAAA,EAAU,IAAA,CAAK,MAAA,CAAO,GAAA,GAAQC,CAAAA,CACrC,OAAOC,EAAAA,CAAwB,IAAA,CAAK,MAAA,CAAO,MAAA,CAAQF,CAAM,CAAA,CAE3D,IAAMgB,CAAAA,CAASC,EAAAA,CAAuBjB,CAAM,CAAA,CAC5C,OAAA,IAAA,CAAK,MAAA,CAAS,CAAE,GAAA,CAAAC,CAAAA,CAAK,MAAA,CAAAe,CAAO,CAAA,CACrBA,CACT,CAEA,UAAA,EAAmB,CACjB,IAAA,CAAK,MAAA,CAAS,KAChB,CACF,CAAA,CAEME,EAAAA,CAAsB,IAAIH,GAEzB,SAASI,EAAAA,CAAmBnB,CAAAA,CAAwC,CACzE,OAAOkB,EAAAA,CAAoB,SAAA,CAAUlB,CAAM,CAC7C,CAFgB/E,CAAAA,CAAAkG,EAAAA,CAAA,oBAAA,CAAA,CAShB,SAASF,EAAAA,CAAuBjB,CAAAA,CAAwC,CACtE,IAAMlB,CAAAA,CAAmC,EAAC,CACpC2B,CAAAA,CAAkC,EAAC,CAMnCW,CAAAA,CAAmB,IAAI,GAAA,CACvBC,CAAAA,CAAoB,IAAI,GAAA,CAIxBC,CAAAA,CAA0B,IAAI,GAAA,CAIpC,IAAA,IAASC,CAAAA,CAAK,CAAA,CAAGA,CAAAA,CAAKvB,CAAAA,CAAO,eAAA,CAAgB,MAAA,CAAQuB,CAAAA,EAAAA,CAAM,CACzD,IAAMtC,CAAAA,CAAMe,CAAAA,CAAO,eAAA,CAAgBuB,CAAE,CAAA,CAC/BC,CAAAA,CAAQvC,CAAAA,CAA+B,QAAA,CAC7C,GAA0BuC,CAAAA,EAAS,IAAA,CACjC1C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,uBAAA,CACN,OAAA,CAAS,CAAA,gBAAA,EAAmByC,CAAE,CAAA,sCAAA,CAAA,CAC9B,OAAA,CAAS,CAAE,WAAA,CAAaA,CAAG,CAC7B,CAAC,CAAA,CAAA,KAAA,GACQ,CAACxD,EAAAA,CAAcyD,CAAI,CAAA,CAC5B1C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,uBAAA,CACN,OAAA,CAAS,CAAA,gBAAA,EAAmByC,CAAE,CAAA,sBAAA,EAAyB,MAAA,CAAOC,CAAI,CAAC,CAAA,gDAAA,CAAA,CACnE,OAAA,CAAS,CAAE,WAAA,CAAaD,CAAAA,CAAI,QAAA,CAAUC,CAAK,CAC7C,CAAC,CAAA,CAAA,KACI,CACL,IAAMC,CAAAA,CAAOL,CAAAA,CAAiB,GAAA,CAAII,CAAI,CAAA,CAClCC,CAAAA,CACF3C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,yBAAA,CACN,OAAA,CAAS,CAAA,uBAAA,EAA0B0C,CAAI,CAAA,oBAAA,EAAuBC,CAAAA,CAAK,WAAW,CAAA,oBAAA,EAAuBF,CAAE,CAAA,EAAA,CAAA,CACvG,OAAA,CAAS,CAAE,QAAA,CAAUC,CAAAA,CAAM,KAAA,CAAOC,CAAAA,CAAM,MAAA,CAAQ,CAAE,WAAA,CAAaF,CAAG,CAAE,CACtE,CAAC,CAAA,CAEDH,CAAAA,CAAiB,GAAA,CAAII,CAAAA,CAAM,CAAE,WAAA,CAAaD,CAAG,CAAC,EAElD,CACA,IAAMG,CAAAA,CAAyB3D,EAAAA,CAAcyD,CAAI,CAAA,CAAIA,CAAAA,CAAOD,CAAAA,CAC5D,IAAA,IAASI,CAAAA,CAAK,CAAA,CAAGA,CAAAA,CAAK1C,CAAAA,CAAI,KAAA,CAAM,MAAA,CAAQ0C,CAAAA,EAAAA,CAAM,CAC5C,IAAM9C,CAAAA,CAAOI,CAAAA,CAAI,KAAA,CAAM0C,CAAE,CAAA,CACnBC,CAAAA,CAAO/C,CAAAA,CAAgC,QAAA,CAC7C,GAAyB+C,CAAAA,EAAQ,IAAA,CAC/B9C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,wBAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASD,CAAAA,CAAK,YAAY,CAAA,MAAA,EAAS6C,CAAsB,CAAA,WAAA,EAAcC,CAAE,CAAA,uCAAA,CAAA,CAClF,OAAA,CAAS,CAAE,WAAA,CAAaD,CAAAA,CAAwB,YAAA,CAAcC,CAAG,CACnE,CAAC,CAAA,CAAA,KAAA,GACQ,CAAC5D,EAAAA,CAAc6D,CAAG,CAAA,CAC3B9C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,wBAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASD,CAAAA,CAAK,YAAY,CAAA,MAAA,EAAS6C,CAAsB,CAAA,WAAA,EAAcC,CAAE,CAAA,uBAAA,EAA0B,MAAA,CAAOC,CAAG,CAAC,CAAA,gDAAA,CAAA,CACvH,OAAA,CAAS,CAAE,WAAA,CAAaF,CAAAA,CAAwB,YAAA,CAAcC,CAAAA,CAAI,QAAA,CAAUC,CAAI,CAClF,CAAC,CAAA,CAAA,KACI,CACL,IAAMH,CAAAA,CAAOJ,CAAAA,CAAkB,GAAA,CAAIO,CAAG,CAAA,CAClCH,CAAAA,CACF3C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,0BAAA,CACN,OAAA,CAAS,CAAA,wBAAA,EAA2B8C,CAAG,CAAA,eAAA,EAAkBH,CAAAA,CAAK,WAAW,CAAA,MAAA,EAASA,CAAAA,CAAK,YAAY,CAAA,eAAA,EAAkBC,CAAsB,CAAA,MAAA,EAASC,CAAE,CAAA,EAAA,CAAA,CACtJ,OAAA,CAAS,CAAE,QAAA,CAAUC,CAAAA,CAAK,KAAA,CAAOH,CAAAA,CAAM,MAAA,CAAQ,CAAE,WAAA,CAAaC,CAAAA,CAAwB,YAAA,CAAcC,CAAG,CAAE,CAC3G,CAAC,CAAA,CAEDN,CAAAA,CAAkB,GAAA,CAAIO,CAAAA,CAAK,CAAE,WAAA,CAAaF,CAAAA,CAAwB,YAAA,CAAcC,CAAG,CAAC,EAExF,CACA,IAAME,CAAAA,CAA0B9D,EAAAA,CAAc6D,CAAG,CAAA,CAAIA,CAAAA,CAAMD,CAAAA,CAC3D,IAAA,IAASG,CAAAA,CAAK,CAAA,CAAGA,CAAAA,CAAKjD,CAAAA,CAAK,OAAA,CAAQ,MAAA,CAAQiD,CAAAA,EAAAA,CAAM,CAC/C,IAAM/C,CAAAA,CAAIF,CAAAA,CAAK,OAAA,CAAQiD,CAAE,CAAA,CACnBC,CAAAA,CAAMhD,CAAAA,CAAiC,YAAA,CAC7C,GAAwBgD,CAAAA,EAAO,IAAA,CAC7BjD,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,8BAAA,CACN,OAAA,CAAS,CAAA,QAAA,EAAWC,CAAAA,CAAE,UAAU,CAAA,OAAA,EAAU2C,CAAsB,CAAA,OAAA,EAAUG,CAAuB,CAAA,QAAA,EAAWC,CAAE,CAAA,2CAAA,CAAA,CAC9G,OAAA,CAAS,CAAE,WAAA,CAAaJ,CAAAA,CAAwB,YAAA,CAAcG,CAAAA,CAAyB,WAAA,CAAaC,CAAAA,CAAI,UAAA,CAAY/C,CAAAA,CAAE,UAAW,CACnI,CAAC,CAAA,CAAA,KAAA,GACQ,CAAChB,GAAcgE,CAAE,CAAA,CAC1BjD,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,8BAAA,CACN,OAAA,CAAS,CAAA,QAAA,EAAWC,CAAAA,CAAE,UAAU,CAAA,OAAA,EAAU2C,CAAsB,CAAA,OAAA,EAAUG,CAAuB,CAAA,QAAA,EAAWC,CAAE,CAAA,2BAAA,EAA8B,MAAA,CAAOC,CAAE,CAAC,CAAA,gDAAA,CAAA,CACtJ,OAAA,CAAS,CAAE,WAAA,CAAaL,CAAAA,CAAwB,YAAA,CAAcG,CAAAA,CAAyB,WAAA,CAAaC,CAAAA,CAAI,YAAA,CAAcC,CAAG,CAC3H,CAAC,CAAA,CAAA,KACI,CACL,IAAMN,CAAAA,CAAOH,CAAAA,CAAwB,GAAA,CAAIS,CAAE,CAAA,CACvCN,CAAAA,CACF3C,CAAAA,CAAS,IAAA,CAAK,CACZ,IAAA,CAAM,gCAAA,CACN,OAAA,CAAS,CAAA,mCAAA,EAAsCiD,CAAE,CAAA,eAAA,EAAkBN,CAAAA,CAAK,WAAW,CAAA,MAAA,EAASA,CAAAA,CAAK,YAAY,CAAA,QAAA,EAAWA,CAAAA,CAAK,WAAW,CAAA,eAAA,EAAkBC,CAAsB,SAASG,CAAuB,CAAA,QAAA,EAAWC,CAAE,CAAA,EAAA,CAAA,CAC7N,OAAA,CAAS,CAAE,YAAA,CAAcC,CAAAA,CAAI,KAAA,CAAON,CAAAA,CAAM,MAAA,CAAQ,CAAE,WAAA,CAAaC,CAAAA,CAAwB,YAAA,CAAcG,CAAAA,CAAyB,WAAA,CAAaC,CAAG,CAAE,CACpJ,CAAC,CAAA,CAEDR,CAAAA,CAAwB,GAAA,CAAIS,CAAAA,CAAI,CAAE,WAAA,CAAaL,CAAAA,CAAwB,YAAA,CAAcG,CAAAA,CAAyB,WAAA,CAAaC,CAAG,CAAC,EAEnI,CACF,CACF,CACF,CAEA,IAAA,IAAW7C,CAAAA,IAAOe,CAAAA,CAAO,eAAA,CAAiB,CACxC,GAAI,CAACnC,EAAAA,CAAiBoB,CAAAA,CAAI,SAAS,CAAA,CACjC,MAAM,IAAItC,CAAAA,CACR,oBAAA,CACA,CAAA,mBAAA,EAAsBsC,CAAAA,CAAI,SAAS,CAAA,SAAA,EAAYA,CAAAA,CAAI,QAAQ,CAAA,CAAA,CAC3D,CAAE,WAAA,CAAaA,EAAI,QAAA,CAAU,SAAA,CAAWA,CAAAA,CAAI,SAAU,CACxD,CAAA,CAEF,IAAM+C,CAAAA,CAAyB,EAAC,CAC1B9C,CAAAA,CAAa,IAAI,GAAA,CACjBC,CAAAA,CAAmB,IAAI,GAAA,CAE7B,IAAA,IAAWN,CAAAA,IAAQI,CAAAA,CAAI,KAAA,CAAO,CAE5B,IAAMgD,CAAAA,CAAgB5D,EAAAA,CAAYQ,CAAAA,CAAK,OAAO,CAAA,CACxCqD,CAAAA,CAAsB,CAAE,GAAGrD,CAAAA,CAAM,OAAA,CAASoD,CAAc,CAAA,CAC9DnD,CAAAA,CAAS,IAAA,CAAK,GAAGF,EAAAA,CAAasD,CAAO,CAAC,CAAA,CACtCF,CAAAA,CAAS,IAAA,CAAKE,CAAO,CAAA,CACrBhD,CAAAA,CAAW,GAAA,CAAIgD,CAAAA,CAAQ,YAAA,CAAcA,CAAO,CAAA,CAC5C/C,CAAAA,CAAiB,GAAA,CACf+C,CAAAA,CAAQ,YAAA,CACRvC,EAAAA,CAAsBsC,CAAa,CACrC,EACF,CAEA,GAAM,CAAE,OAAAE,CAAAA,CAAQ,QAAA,CAAUC,CAAc,CAAA,CAAIpD,EAAAA,CAC1C,CAAE,GAAGC,CAAqB,CAAA,CAC1BC,CAAAA,CACAC,CACF,CAAA,CACAL,CAAAA,CAAS,IAAA,CAAK,GAAGsD,CAAa,CAAA,CAE9B3B,CAAAA,CAAQ,IAAA,CAAK,CAAE,GAAGxB,CAAAA,CAAK,KAAA,CAAO+C,CAAAA,CAAU,MAAA,CAAAG,CAAO,CAAC,EAClD,CAEA,OAAO,CACL,GAAGnC,CAAAA,CACH,eAAA,CAAiBS,CAAAA,CACjB,UAAA,CAAY3B,CACd,CACF,CAhJS7D,CAAAA,CAAAgG,EAAAA,CAAA,wBAAA,CAAA,CCrYF,SAASoB,EAAAA,CACdrC,CAAAA,CACAsC,CAAAA,CAC4B,CAC5B,IAAMC,CAAAA,CAAWC,SAAAA,CAA8B,IAAI,CAAA,CAE7CC,CAAAA,CAAaC,UAAAA,CAAoC,IAAM,CAC3D,GAAI,CACF,OAAAH,CAAAA,CAAS,QAAU,IAAA,CACZpB,EAAAA,CAAmBnB,CAAM,CAClC,CAAA,MAAS2C,CAAAA,CAAK,CACZ,OAAAJ,CAAAA,CAAS,OAAA,CACPI,CAAAA,YAAehG,CAAAA,CACX,CAAE,IAAA,CAAMgG,CAAAA,CAAI,IAAA,CAAM,OAAA,CAASA,CAAAA,CAAI,OAAA,CAAS,OAAA,CAASA,CAAAA,CAAI,OAAQ,CAAA,CAC7D,CACE,IAAA,CAAM,gBAAA,CACN,OAAA,CAAUA,CAAAA,EAAe,OAAA,EAAW,MAAA,CAAOA,CAAG,CAAA,CAC9C,OAAA,CAASA,CACX,CAAA,CACC,IACT,CACF,CAAA,CAAG,CAAC3C,CAAM,CAAC,CAAA,CAEX,OAAA4C,YAAAA,CAAU,IAAM,CACVL,CAAAA,CAAS,OAAA,EAAWD,CAAAA,EACtBA,CAAAA,CAAQC,CAAAA,CAAS,OAAO,EAE5B,CAAA,CAAG,CAACE,CAAAA,CAAYH,CAAO,CAAC,CAAA,CAEjBG,CACT,CA9BgBxH,CAAAA,CAAAoH,GAAA,qBAAA,CAAA,CCIhB,IAAMQ,EAAAA,CAAU5H,CAAAA,CAAA,CAAC,CAAC6H,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,GAAkB,CAACF,CAAAA,CAAG,CAACC,CAAAA,CAAGC,CAAC,CAAA,CAApC,SAAA,CAAA,CACVC,EAAAA,CAAehI,CAAAA,CAAA,CAAC,CAACiI,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,GAAkB,CAACF,CAAAA,CAAIC,CAAAA,CAAI,CAACC,CAAE,CAAA,CAA1C,cAAA,CAAA,CAErB,SAASC,EAAAA,CACPC,CAAAA,CACgC,CAChC,GAAI,CAACA,CAAAA,CAAI,OAAOA,CAAAA,CAChB,IAAM/E,CAAAA,CAA0B,CAAE,GAAG+E,CAAG,CAAA,CACxC,OAAIA,CAAAA,CAAG,QAAA,GAAU/E,CAAAA,CAAI,QAAA,CAAWsE,EAAAA,CAAQS,CAAAA,CAAG,QAAQ,CAAA,CAAA,CAC/CA,CAAAA,CAAG,gBAAA,GAAkB/E,CAAAA,CAAI,gBAAA,CAAmB0E,EAAAA,CAAaK,CAAAA,CAAG,gBAAgB,CAAA,CAAA,CACzE/E,CACT,CARStD,CAAAA,CAAAoI,EAAAA,CAAA,wBAAA,CAAA,CAUT,SAASE,EAAAA,CACPC,CAAAA,CAC4B,CAC5B,GAAI,CAACA,CAAAA,CAAI,OAAOA,CAAAA,CAChB,IAAMjF,CAAAA,CAAsB,CAAE,GAAGiF,CAAG,CAAA,CACpC,OAAIA,CAAAA,CAAG,UAAA,GAAYjF,CAAAA,CAAI,UAAA,CAAasE,EAAAA,CAAQW,CAAAA,CAAG,UAAU,CAAA,CAAA,CACrDA,CAAAA,CAAG,gBAAA,GAAkBjF,CAAAA,CAAI,gBAAA,CAAmB0E,EAAAA,CAAaO,CAAAA,CAAG,gBAAgB,CAAA,CAAA,CACzEjF,CACT,CARStD,CAAAA,CAAAsI,EAAAA,CAAA,oBAAA,CAAA,CAUF,SAASE,EAAAA,CACdzD,CAAAA,CACqB,CACrB,OAAO,CACL,GAAGA,CAAAA,CACH,eAAA,CAAiBA,CAAAA,CAAO,eAAA,CAAgB,GAAA,CAAKf,CAAAA,GAAS,CACpD,GAAGA,CAAAA,CACH,cAAA,CAAgBsE,EAAAA,CAAmBtE,CAAAA,CAAI,cAAc,CAAA,CACrD,KAAA,CAAOA,CAAAA,CAAI,KAAA,CAAM,GAAA,CAAKJ,CAAAA,GAAU,CAC9B,GAAGA,CAAAA,CACH,kBAAA,CAAoBwE,EAAAA,CAAuBxE,CAAAA,CAAK,kBAAkB,CACpE,CAAA,CAAE,CACJ,CAAA,CAAE,CACJ,CACF,CAdgB5D,CAAAA,CAAAwI,EAAAA,CAAA,4BAAA,CAAA,CCfT,IAAMC,EAAAA,CAAkC,MAAA,CAAO,MAAA,CAAO,CAC3D,OAAA,CAAS,EAAC,CACV,MAAA,CAAQ,EACV,CAAC,CAAA,CAEKC,EAAAA,CAAY1I,CAAAA,CAAC8D,CAAAA,EACjB,CAAA,EAAGA,CAAAA,CAAE,sBAAsB,CAAA,CAAA,EAAIA,CAAAA,CAAE,YAAY,CAAA,CAAA,EAAIA,CAAAA,CAAE,WAAW,CAAA,CAAA,CAD9C,WAAA,CAAA,CAGZ6E,EAAAA,CAAW3I,CAAAA,CAAC8D,CAAAA,EAChB,CAAA,EAAGA,EAAE,sBAAsB,CAAA,CAAA,EAAIA,CAAAA,CAAE,UAAU,CAAA,CAAA,CAD5B,UAAA,EAGV,SAAS8E,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,OAAOD,CAAAA,CAAU,OAAA,CAAQ,IAAA,CACtB/E,CAAAA,EACCA,CAAAA,CAAE,sBAAA,GAA2BgF,CAAAA,CAAI,sBAAA,EACjChF,CAAAA,CAAE,YAAA,GAAiBgF,CAAAA,CAAI,YAAA,EACvBhF,CAAAA,CAAE,WAAA,GAAgBgF,CAAAA,CAAI,WAC1B,CACF,CAVgB9I,CAAAA,CAAA4I,EAAAA,CAAA,kBAAA,CAAA,CAYT,SAASG,EAAAA,CACdF,CAAAA,CACAC,CAAAA,CACS,CACT,OAAOD,CAAAA,CAAU,MAAA,CAAO,IAAA,CACrB/E,CAAAA,EACCA,CAAAA,CAAE,sBAAA,GAA2BgF,CAAAA,CAAI,sBAAA,EACjChF,CAAAA,CAAE,UAAA,GAAegF,CAAAA,CAAI,UACzB,CACF,CATgB9I,CAAAA,CAAA+I,EAAAA,CAAA,iBAAA,CAAA,CAWT,SAASC,EAAAA,EAA8B,CAC5C,OAAOP,EACT,CAFgBzI,EAAAgJ,EAAAA,CAAA,aAAA,CAAA,CAIT,SAASC,EAAAA,CACdJ,CAAAA,CACAC,CAAAA,CACAI,CAAAA,CACAC,CAAAA,CAA4B,EAAC,CACb,CAChB,GAAID,CAAAA,GAAS,KAAA,CAAO,OAAOL,CAAAA,CAC3B,GAAIK,CAAAA,GAAS,QAAA,CACX,OAAO,CAAE,OAAA,CAAS,CAACJ,CAAG,CAAA,CAAG,MAAA,CAAQ,EAAG,CAAA,CAGtC,IAAMM,CAAAA,CAAWD,CAAAA,CAAU,IAAA,EAAQA,CAAAA,CAAU,IAAA,CAC7C,OAAIA,CAAAA,CAAU,KAAA,CACLE,EAAAA,CAAmBR,CAAAA,CAAWC,CAAG,CAAA,CAEtCM,CAAAA,CACKE,EAAAA,CAAwBT,CAAAA,CAAWC,CAAG,CAAA,CAGxC,CAAE,OAAA,CAAS,CAACA,CAAG,CAAA,CAAG,MAAA,CAAQ,EAAG,CACtC,CApBgB9I,CAAAA,CAAAiJ,EAAAA,CAAA,kBAAA,CAAA,CAsBT,SAASM,EAAAA,CACdV,EACAC,CAAAA,CACAI,CAAAA,CACAC,CAAAA,CAA4B,EAAC,CACb,CAChB,OAAID,CAAAA,GAAS,KAAA,CAAcL,CAAAA,CACvBK,CAAAA,GAAS,QAAA,CACJ,CAAE,OAAA,CAAS,EAAC,CAAG,MAAA,CAAQ,CAACJ,CAAG,CAAE,CAAA,CAErBK,CAAAA,CAAU,IAAA,EAAQA,CAAAA,CAAU,IAAA,CAEpCK,EAAAA,CAAuBX,CAAAA,CAAWC,CAAG,CAAA,CAEvC,CAAE,OAAA,CAAS,EAAC,CAAG,MAAA,CAAQ,CAACA,CAAG,CAAE,CACtC,CAfgB9I,CAAAA,CAAAuJ,EAAAA,CAAA,iBAAA,CAAA,CAiBT,SAASE,EAAAA,CACdZ,CAAAA,CACAK,CAAAA,CACgB,CAChB,OAAIA,CAAAA,GAAS,KAAA,CAAcL,CAAAA,CACpBJ,EACT,CANgBzI,CAAAA,CAAAyJ,EAAAA,CAAA,iBAAA,CAAA,CAQhB,SAASH,EAAAA,CACPT,CAAAA,CACAC,CAAAA,CACgB,CAChB,OAAIF,GAAiBC,CAAAA,CAAWC,CAAG,CAAA,CAC1B,CACL,GAAGD,CAAAA,CACH,OAAA,CAASA,CAAAA,CAAU,OAAA,CAAQ,MAAA,CAAQ/E,CAAAA,EAAM4E,EAAAA,CAAU5E,CAAC,CAAA,GAAM4E,EAAAA,CAAUI,CAAG,CAAC,CAC1E,CAAA,CAEK,CAAE,GAAGD,CAAAA,CAAW,OAAA,CAAS,CAAC,GAAGA,CAAAA,CAAU,OAAA,CAASC,CAAG,CAAE,CAC9D,CAXS9I,CAAAA,CAAAsJ,EAAAA,CAAA,yBAAA,CAAA,CAaT,SAASE,EAAAA,CACPX,CAAAA,CACAC,CAAAA,CACgB,CAChB,OAAIC,EAAAA,CAAgBF,CAAAA,CAAWC,CAAG,CAAA,CACzB,CACL,GAAGD,CAAAA,CACH,MAAA,CAAQA,CAAAA,CAAU,MAAA,CAAO,MAAA,CAAQ/E,CAAAA,EAAM6E,EAAAA,CAAS7E,CAAC,CAAA,GAAM6E,EAAAA,CAASG,CAAG,CAAC,CACtE,CAAA,CAEK,CAAE,GAAGD,EAAW,MAAA,CAAQ,CAAC,GAAGA,CAAAA,CAAU,MAAA,CAAQC,CAAG,CAAE,CAC5D,CAXS9I,CAAAA,CAAAwJ,EAAAA,CAAA,wBAAA,CAAA,CAqBT,SAASH,EAAAA,CACPR,CAAAA,CACAC,CAAAA,CACgB,CAChB,GAAID,CAAAA,CAAU,OAAA,CAAQ,MAAA,GAAW,CAAA,CAC/B,OAAO,CAAE,OAAA,CAAS,CAACC,CAAG,CAAA,CAAG,MAAA,CAAQ,EAAG,CAAA,CAEtC,IAAMY,CAAAA,CAAOb,CAAAA,CAAU,OAAA,CAAQA,CAAAA,CAAU,OAAA,CAAQ,MAAA,CAAS,CAAC,CAAA,CAC3D,GACEa,CAAAA,CAAK,sBAAA,GAA2BZ,CAAAA,CAAI,sBAAA,EACpCY,CAAAA,CAAK,YAAA,GAAiBZ,CAAAA,CAAI,YAAA,CAE1B,OAAO,CAAE,OAAA,CAAS,CAACA,CAAG,CAAA,CAAG,MAAA,CAAQ,EAAG,CAAA,CAEtC,IAAMa,CAAAA,CAAK,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAK,WAAA,CAAaZ,CAAAA,CAAI,WAAW,CAAA,CAC/Cc,CAAAA,CAAK,IAAA,CAAK,GAAA,CAAIF,CAAAA,CAAK,WAAA,CAAaZ,CAAAA,CAAI,WAAW,CAAA,CAC/Ce,CAAAA,CAAqB,EAAC,CAC5B,IAAA,IAAStG,CAAAA,CAAIoG,CAAAA,CAAIpG,CAAAA,EAAKqG,CAAAA,CAAIrG,CAAAA,EAAAA,CACxBsG,CAAAA,CAAM,IAAA,CAAK,CACT,sBAAA,CAAwBf,CAAAA,CAAI,sBAAA,CAC5B,YAAA,CAAcA,CAAAA,CAAI,YAAA,CAClB,WAAA,CAAavF,CACf,CAAC,CAAA,CASH,OAAO,CAAE,OAAA,CAAS,CAAC,GALAsF,CAAAA,CAAU,OAAA,CAAQ,MAAA,CAClC,CAAA,EACC,CAAA,CAAE,sBAAA,GAA2BC,CAAAA,CAAI,sBAAA,EACjC,CAAA,CAAE,YAAA,GAAiBA,CAAAA,CAAI,YAC3B,CAAA,CACkC,GAAGe,CAAK,CAAA,CAAG,MAAA,CAAQ,EAAG,CAC1D,CAhCS7J,CAAAA,CAAAqJ,GAAA,oBAAA,CAAA,CCzGF,SAASS,EAAAA,CACdC,CAAAA,CACkB,CAClB,GAAM,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAIC,WAAAA,CAAyBzB,EAAe,CAAA,CAClE0B,CAAAA,CAA+BJ,CAAAA,CAAM,aAAA,EAAiB,KAAA,CACtDK,CAAAA,CAAeL,CAAAA,CAAM,SAAA,GAAc,MAAA,CACnCM,CAAAA,CAAqBD,CAAAA,CACtBL,CAAAA,CAAM,SAAA,CACPC,CAAAA,CAEEM,CAAAA,CAAkBC,cAAAA,CACrB9G,CAAAA,EAAyB,CACnB2G,CAAAA,EAAcH,CAAAA,CAAYxG,CAAI,CAAA,CACnCsG,CAAAA,CAAM,iBAAA,GAAoBtG,CAAI,EAChC,CAAA,CACA,CAAC2G,CAAAA,CAAcL,CAAAA,CAAM,iBAAiB,CACxC,CAAA,CAEMS,CAAAA,CAAoB/C,UAAAA,CACxB,IAAM,CAACqB,CAAAA,CAAgB2B,CAAAA,GAAoC,CACzD,GAAIV,CAAAA,CAAM,eAAA,CAAiB,OAC3B,IAAMW,CAAAA,CAAKD,CAAAA,CAAE,WAAA,CACPhH,CAAAA,CAAOwF,EAAAA,CAAiBoB,EAAoBvB,CAAAA,CAAKqB,CAAAA,CAAe,CACpE,IAAA,CAAMO,CAAAA,EAAI,OAAA,CACV,KAAA,CAAOA,CAAAA,EAAI,QAAA,CACX,IAAA,CAAMA,CAAAA,EAAI,OACZ,CAAC,CAAA,CACDJ,CAAAA,CAAgB7G,CAAI,CAAA,CACpBsG,CAAAA,CAAM,aAAA,GAAgBjB,CAAG,EAC3B,CAAA,CACA,CACEuB,CAAAA,CACAF,CAAAA,CACAJ,CAAAA,CAAM,eAAA,CACNA,CAAAA,CAAM,aAAA,CACNO,CACF,CACF,CAAA,CAEMK,CAAAA,CAAmBlD,UAAAA,CACvB,IAAM,CAACqB,CAAAA,CAAe2B,CAAAA,GAAoC,CACxD,GAAIV,CAAAA,CAAM,eAAA,CAAiB,OAC3B,IAAMW,CAAAA,CAAKD,CAAAA,CAAE,WAAA,CACPhH,CAAAA,CAAO8F,EAAAA,CAAgBc,CAAAA,CAAoBvB,CAAAA,CAAKqB,CAAAA,CAAe,CACnE,IAAA,CAAMO,CAAAA,EAAI,OAAA,CACV,KAAA,CAAOA,CAAAA,EAAI,QAAA,CACX,IAAA,CAAMA,CAAAA,EAAI,OACZ,CAAC,CAAA,CACDJ,CAAAA,CAAgB7G,CAAI,CAAA,CACpBsG,CAAAA,CAAM,YAAA,GAAejB,CAAG,EAC1B,CAAA,CACA,CACEuB,CAAAA,CACAF,CAAAA,CACAJ,CAAAA,CAAM,eAAA,CACNA,CAAAA,CAAM,YAAA,CACNO,CACF,CACF,CAAA,CAEMM,CAAAA,CAAsBL,cAAAA,CAAY,IAAM,CAC5C,GAAIR,CAAAA,CAAM,eAAA,CAAiB,OAC3B,IAAMtG,CAAAA,CAAOgG,EAAAA,CAAgBY,CAAAA,CAAoBF,CAAa,CAAA,CAC1D1G,CAAAA,GAAS4G,CAAAA,EACXC,CAAAA,CAAgB7G,CAAI,EAExB,CAAA,CAAG,CACD4G,CAAAA,CACAF,CAAAA,CACAJ,CAAAA,CAAM,eAAA,CACNO,CACF,CAAC,CAAA,CAED,OAAO,CACL,kBAAA,CAAAD,CAAAA,CACA,aAAA,CAAAF,CAAAA,CACA,iBAAA,CAAAK,CAAAA,CACA,gBAAA,CAAAG,CAAAA,CACA,mBAAA,CAAAC,CACF,CACF,CAhFgB5K,CAAAA,CAAA8J,GAAA,mBAAA,CAAA,CCxBhB,IAAMe,EAAAA,CAAU,IAAA,CAAK,EAAA,CAAK,GAAA,CASbC,EAAAA,CAAqB,GAAA,CAG3B,SAASC,EAAAA,CAAkBC,CAAAA,CAAqC,CACrE,GAAI,CAACA,CAAAA,CAAG,OAAO,IAAIC,aAAAA,CACnB,IAAMxG,CAAAA,CAAMuG,CAAAA,CAAE,UAAA,EAAc,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAC9BE,CAAAA,CAAMF,CAAAA,CAAE,gBAAA,EAAoB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,EAC1C,OAAO,IAAIC,aAAAA,EAAQ,CAAE,OAAA,CACnB,IAAIE,aAAAA,CAAQ1G,CAAAA,CAAI,CAAC,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAC,CAAA,CAClC,IAAI2G,gBAAAA,EAAW,CAAE,YAAA,CACf,IAAIC,WAAAA,CAAMH,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAASK,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAASK,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAAS,KAAK,CACvE,CAAA,CACA,IAAIM,aAAAA,CAAQ,CAAA,CAAG,CAAA,CAAG,CAAC,CACrB,CACF,CAXgBnL,CAAAA,CAAA+K,EAAAA,CAAA,mBAAA,CAAA,CAqBT,SAASO,EAAAA,CACd/C,CAAAA,CACS,CACT,GAAI,CAACA,CAAAA,CAAI,OAAO,IAAI0C,aAAAA,EAAQ,CAAE,eAAA,CAAgB,CAAA,CAAG,EAAGH,EAAkB,CAAA,CACtE,IAAMrG,CAAAA,CAAM8D,CAAAA,CAAG,UAAA,EAAc,CAAC,CAAA,CAAG,CAAA,CAAGuC,EAAkB,CAAA,CAChDI,CAAAA,CAAM3C,CAAAA,CAAG,gBAAA,EAAoB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CACrCgD,CAAAA,CAAIhD,CAAAA,CAAG,YAAA,EAAgB,CAAA,CAC7B,OAAO,IAAI0C,aAAAA,EAAQ,CAAE,OAAA,CACnB,IAAIE,aAAAA,CAAQ1G,CAAAA,CAAI,CAAC,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAC,CAAA,CAClC,IAAI2G,gBAAAA,EAAW,CAAE,YAAA,CACf,IAAIC,WAAAA,CAAMH,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAASK,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAASK,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAAS,KAAK,CACvE,CAAA,CACA,IAAIM,cAAQI,CAAAA,CAAGA,CAAAA,CAAGA,CAAC,CACrB,CACF,CAdgBvL,CAAAA,CAAAsL,EAAAA,CAAA,sBAAA,CAAA,CAqBT,SAASE,EAAAA,CACdnD,CAAAA,CACS,CACT,GAAI,CAACA,CAAAA,CAAI,OAAO,IAAI4C,aAAAA,CACpB,IAAMxG,CAAAA,CAAM4D,CAAAA,CAAG,QAAA,EAAY,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAC7B6C,CAAAA,CAAM7C,CAAAA,CAAG,gBAAA,EAAoB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAC3C,OAAO,IAAI4C,aAAAA,EAAQ,CAAE,OAAA,CACnB,IAAIE,aAAAA,CAAQ1G,CAAAA,CAAI,CAAC,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAC,CAAA,CAClC,IAAI2G,gBAAAA,EAAW,CAAE,YAAA,CACf,IAAIC,WAAAA,CAAMH,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAASK,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAASK,CAAAA,CAAI,CAAC,CAAA,CAAIL,EAAAA,CAAS,KAAK,CACvE,CAAA,CACA,IAAIM,aAAAA,CAAQ,CAAA,CAAG,CAAA,CAAG,CAAC,CACrB,CACF,CAbgBnL,CAAAA,CAAAwL,EAAAA,CAAA,0BAAA,CAAA,CAoBT,SAASC,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,OAAO,IAAIV,aAAAA,EAAQ,CAChB,IAAA,CAAKF,EAAAA,CAAkBW,CAAW,CAAC,CAAA,CACnC,QAAA,CAASJ,EAAAA,CAAqBK,CAAc,CAAC,CAClD,CAPgB3L,CAAAA,CAAAyL,EAAAA,CAAA,oBAAA,CAAA,CAcT,SAASG,EAAAA,CACdF,CAAAA,CACAC,CAAAA,CACAE,CAAAA,CACS,CACT,OAAO,IAAIZ,aAAAA,EAAQ,CAChB,IAAA,CAAKQ,EAAAA,CAAmBC,CAAAA,CAAaC,CAAc,CAAC,CAAA,CACpD,QAAA,CAASH,EAAAA,CAAyBK,CAAkB,CAAC,CAC1D,CARgB7L,CAAAA,CAAA4L,EAAAA,CAAA,wBAAA,CAAA,CC7GhB,IAAAE,EAAAA,CAAA,CAAuK,QAAA,CAAY,GAAA,CAAO,UAAA,CAAc,EAAA,CAAyE,MAAA,CAAU,CAAC,CAAC,CAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,EAAA,CAAK,CAAG,CAAA,CAAG,CAAC,CAAA,CAAK,CAAG,CAAA,CAAG,CAAC,GAAA,CAAK,CAAG,CAAA,CAAG,CAAC,GAAA,CAAK,CAAG,CAAA,CAAG,CAAC,GAAA,CAAK,CAAG,CAAA,CAAG,CAAC,GAAA,CAAK,CAAG,CAAA,CAAG,CAAC,GAAA,CAAK,CAAG,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,CAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,EAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,CAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,CAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,CAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,KAAO,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,IAAK,CAAA,CAAG,CAAC,IAAK,MAAQ,CAAA,CAAG,CAAC,GAAA,CAAK,MAAQ,CAAA,CAAG,CA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AS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,EAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,YAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,SAAA,CAAW,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,OAAO,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,EAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,OAAO,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,YAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,EAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,SAAA,CAAW,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,OAAO,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,YAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,EAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,YAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,SAAA,CAAW,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,SAAA,CAAW,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,YAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,QAAA,CAAU,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,QAAA,CAAU,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,SAAA,CAAW,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,EAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,eAAA,CAAiB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,mBAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,EAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,eAAe,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,mBAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,EAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,mBAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,EAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,mBAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,EAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,mBAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,EAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,EAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,mBAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,EAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,gBAAgB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,EAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,gBAAA,CAAkB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,mBAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,kBAAA,CAAoB,iBAAiB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAmB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,kBAAA,CAAoB,kBAAkB,CAAA,CAAG,CAAC,iBAAA,CAAm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,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,YAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA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AC,WAAA,CAAa,OAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,OAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,OAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,UAAA,CAAY,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,OAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,OAAQ,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CAAC,WAAA,CAAa,QAAS,CAAA,CAAG,CA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AU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UA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AG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CA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AA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,SAAS,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,UAAA,CAAY,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,EA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AC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,UAAU,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CA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AG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,YAAa,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,UAAA,CAAY,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CAAC,WAAA,CAAa,WAAW,CAAA,CAAG,CA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","file":"index.cjs","sourcesContent":["/**\n * Pure post-processing config helpers — kept free of `@react-three/*`\n * imports so they can be unit-tested in a plain node environment.\n */\n\n/** Default EffectComposer multisampling when the prop is omitted. */\nexport const DEFAULT_MULTISAMPLING = 2;\n\n/** Resolve the EffectComposer `multisampling` value (clamped to >= 0). */\nexport function resolveMultisampling(value?: number): number {\n  if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n    return DEFAULT_MULTISAMPLING;\n  }\n  return Math.floor(value);\n}\n","import React from 'react';\nimport { EffectComposer, Bloom, N8AO } from '@react-three/postprocessing';\nimport { resolveMultisampling } from './postProcessingConfig.js';\n\nexport {\n  DEFAULT_MULTISAMPLING,\n  resolveMultisampling,\n} from './postProcessingConfig.js';\n\nexport interface PostProcessingEffectsProps {\n  ssao?: boolean;\n  ssaoIntensity?: number;\n  ssaoRadius?: number;\n  bloom?: boolean;\n  bloomIntensity?: number;\n  bloomThreshold?: number;\n  bloomRadius?: number;\n  /**\n   * MSAA sample count for the EffectComposer's render target. Higher is\n   * smoother but costs fill-rate + memory. Default 2 — a good quality/cost\n   * balance for the thin metallic edges in XTS modules. Set 0 to disable.\n   */\n  multisampling?: number;\n}\n\nconst SsaoEffect: React.FC<{ intensity: number; radius: number }> = ({\n  intensity,\n  radius,\n}) => <N8AO aoRadius={radius} intensity={intensity} halfRes distanceFalloff={0.5} />;\n\nconst BloomEffect: React.FC<{\n  intensity: number;\n  threshold: number;\n  radius: number;\n}> = ({ intensity, threshold, radius }) => (\n  <Bloom\n    intensity={intensity}\n    luminanceThreshold={threshold}\n    luminanceSmoothing={radius}\n    mipmapBlur\n  />\n);\n\nexport const PostProcessingEffects: React.FC<PostProcessingEffectsProps> = ({\n  ssao = false,\n  ssaoIntensity = 1.0,\n  ssaoRadius = 20,\n  bloom = false,\n  bloomIntensity = 0.4,\n  bloomThreshold = 0.85,\n  bloomRadius = 0.4,\n  multisampling,\n}) => {\n  const effects: React.ReactElement[] = [];\n  if (ssao) {\n    effects.push(\n      <SsaoEffect key=\"ssao\" intensity={ssaoIntensity} radius={ssaoRadius} />,\n    );\n  }\n  if (bloom) {\n    effects.push(\n      <BloomEffect\n        key=\"bloom\"\n        intensity={bloomIntensity}\n        threshold={bloomThreshold}\n        radius={bloomRadius}\n      />,\n    );\n  }\n  if (effects.length === 0) return null;\n  return (\n    <EffectComposer multisampling={resolveMultisampling(multisampling)}>\n      {effects}\n    </EffectComposer>\n  );\n};\n","/**\n * AUTO-GENERATED — do not edit by hand.\n *\n * Source: package.json\n * Generator: scripts/sync-version.mjs\n *\n * Run `npm run sync-version` (or any script that depends on it) to refresh\n * after bumping the package version.\n */\n\nexport const VERSION = '4.8.0' as const;\n","/**\n * Version of the sibling `beckhoff-xts-viewer-3d-assets` GLB package\n * this viewer build targets.\n *\n * Auto-written at build time by `scripts/sync-assets-cdn-version.mjs`\n * — reads `packages/assets/package.json` (the source of truth for the\n * assets release line) and writes this file. The prebuild npm script\n * keeps it in sync before every viewer publish.\n *\n * The assets package now releases independently from the viewer (only\n * when GLB files actually change), so this version generally diverges\n * from the viewer's own VERSION over time. The default\n * `assetsBaseUrl` (see ./cdnUrl.ts) pins to this exact version so a\n * `viewer@x.y.z` install always streams from a known-compatible GLB\n * release on the CDN.\n *\n * DO NOT EDIT BY HAND — re-run `npm run sync-assets-cdn-version`\n * (or any build script) to regenerate.\n */\n\nexport const ASSETS_VERSION = '0.3.1' as const;\n","/**\n * Default CDN URL for the GLB asset bundle (`beckhoff-xts-viewer-3d-assets`).\n *\n * Lives in its own leaf module so it can be imported directly by both\n * `<XtsViewer3D>` and the public `index.ts` barrel without going through\n * the barrel itself — pulling it through `../index.js` creates a circular\n * import (XtsViewer3D ↔ index.ts), which manifests at runtime as\n *   `Cannot access 'JSDELIVR_ASSETS_BASE_URL' before initialization`\n * because the const sits in the TDZ when XtsViewer3D's module body runs.\n *\n * Pinned to the assets package version this viewer build targets (see\n * ./assetsVersion.ts). The assets release line is decoupled from the\n * viewer release line — assets only publish a new version when GLB\n * geometry actually changes — so `viewer@x.y.z` does NOT generally\n * resolve to `assets@x.y.z`. The exact version is captured at viewer\n * build time so every install streams from a known-compatible GLB\n * release.\n */\n\nimport { ASSETS_VERSION } from './assetsVersion.js';\n\nexport const JSDELIVR_ASSETS_BASE_URL =\n  `https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d-assets@${ASSETS_VERSION}/models` as const;\n","/**\n * Public type surface for beckhoff-xts-viewer-3d.\n *\n * Anything that crosses the Component boundary — props, refs, callbacks —\n * is declared here.\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Module + Mover + Tool taxonomy\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Beckhoff XTS module types supported by the 3D viewer. */\nexport type ModuleType3D =\n  // Standard AT (Beckhoff)\n  | 'AT2000_0250'\n  | 'AT2001_0250'\n  | 'AT2002_0250'\n  | 'AT2002_0249'\n  | 'AT2002_0249_ZX2002_0001'\n  | 'AT2000_0233'\n  | 'AT2000_0249'\n  | 'AT2100_0250'\n  | 'AT2102_0250'\n  | 'AT2020_0250'\n  | 'AT2021_0250'\n  | 'AT2025_0250'\n  | 'AT2026_0250'\n  | 'AT2040_0250'\n  | 'AT2041_0250'\n  | 'AT2042_0250'\n  | 'AT2140_0250'\n  // 0500 + 0501 are merged into 0500_180 in normalizeXtsConfig.\n  | 'AT2050_0500'\n  | 'AT2050_0501'\n  | 'AT2050_0500_180'\n  // Eco AT2200\n  | 'AT2200_0500'\n  | 'AT2202_0500'\n  // Hygienic ATH (path math identical to AT pendants)\n  | 'ATH2000_0250'\n  | 'ATH2001_0250'\n  | 'ATH2002_0250'\n  | 'ATH2020_0250'\n  | 'ATH2040_0250'\n  | 'ATH2041_0250'\n  | 'ATH2042_0250'\n  | 'ATH2050_0500'\n  | 'ATH2050_0501'\n  | 'ATH2050_0500_180';\n\n/**\n * Rail system beneath the module. Only affects the visual mesh\n * (Beckhoff aluminium rail vs. Hepco GFX), not the path math.\n *\n * `Beckhoff` is the Beckhoff aluminium guiding rail (all\n * AT-Standard + Eco families); `HepcoGfx` is the alternative\n * Hepco GFX profile. ATH modules ship with their rail baked into\n * the module GLB and are independent of this choice.\n */\nexport type RailSystem = 'Beckhoff' | 'HepcoGfx';\n\n/** Beckhoff XTS + Hepco mover types. `Custom` requires `customMoverLayout`. */\nexport type MoverType3D =\n  | 'AT9011_0050'\n  | 'AT9011_0070'\n  | 'AT9012_0050'\n  | 'AT9014_0055'\n  | 'AT9014_0070'\n  | 'ATH9011_0075'\n  | 'ATH9013_0075'\n  | 'Hepco_GFX2_1TC_S25'\n  | 'Custom';\n\n/** Predefined mover-tool / carrier-plate types. */\nexport type MoverToolType3D =\n  | 'AT8200_1000_0100'\n  | 'AT8200_2000_0100'\n  | 'Custom';\n\n/**\n * Beckhoff guiding-rail GLB variants. Rendered alongside the motor modules\n * when `RailSystem === 'Beckhoff'` to visualise the outer guide\n * profile that the mover wheels engage.\n *\n * Curve sign drives the selection (see `MODULE_GUIDING_RAIL_MAP`):\n *   - Straights: AT9000_0249 / AT9000_0250 / AT9000_0500\n *   - +22.5° curve: AT9020_1250\n *   - −22.5° curve: AT9025_1466\n *   - 45° curve:    AT9040_0750\n *   - 180° clothoid (entire AT2050 500 mm path): AT9050_0500\n *\n * Hygienic ATH modules ship with their guide profile baked into the module\n * GLB and therefore do NOT receive a separate guiding-rail mesh.\n */\nexport type RailType3D =\n  | 'AT9000_0249'\n  | 'AT9000_0250'\n  | 'AT9000_0500'\n  | 'AT9020_1250'\n  | 'AT9025_1466'\n  | 'AT9040_0750'\n  | 'AT9050_0500';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Configuration tree (XtsConfig)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type Vec3 = [number, number, number];\nexport type Vec2 = [number, number];\n\n/** Pose of the entire XTS group in the world frame. */\nexport interface Orientation {\n  positionMm?: Vec3;\n  /** Intrinsic XYZ Euler angles in degrees. */\n  rotationDegEuler?: Vec3;\n}\n\n/**\n * Per-part heatmap samples plus colour range. Rendered as a coloured\n * tube running along each part's centerline (with optional lateral /\n * vertical offset), with the tube's vertex colours interpolated between\n * `minColor` and `maxColor` according to the consumer-supplied\n * `(positionMm, value)` samples.\n *\n * Typical use: per-stator drive current, motor temperature, or fault\n * counters streamed from the controller and overlaid on the layout in\n * real time. Sample positions are interpreted in the XPU's user-frame\n * (`ProcessingUnitConfig.positionFrame`), same convention as mover /\n * station / area positions.\n */\nexport interface StatorHeatmap {\n  /**\n   * One bucket per `PartConfig.globalNumber`. Parts not listed render\n   * no heatmap. Samples within a part are sorted by `positionMm`\n   * before interpolation; values between consecutive samples are\n   * linearly interpolated, values outside the sample range are\n   * held flat at the nearest sample.\n   */\n  parts: Array<{\n    partOid: number;\n    samples: Array<{ positionMm: number; value: number }>;\n  }>;\n  /** Value mapped to `minColor`. Values ≤ min clamp to `minColor`. */\n  min: number;\n  /** Value mapped to `maxColor`. Values ≥ max clamp to `maxColor`. */\n  max: number;\n  /** Colour at `min`. Default `'#22c55e'` (green). */\n  minColor?: string;\n  /** Colour at `max`. Default `'#ef4444'` (red). */\n  maxColor?: string;\n  /** Tube thickness in mm. Default 6. */\n  thicknessMm?: number;\n  /** Vertical Z lift (mm). Default -15 — sits just below the rail. */\n  displacementMm?: number;\n  /** Lateral Y displacement (mm). Default 0. */\n  lateralDisplacementMm?: number;\n  /**\n   * Path segments per module along the heatmap tube. More = smoother\n   * gradient, more triangles. Default 8 (= 32 segments on a 4-module\n   * straight, ~1 GPU vertex per 8 mm of track).\n   */\n  segmentsPerModule?: number;\n  /** Tube opacity (0..1). Default 0.85. */\n  opacity?: number;\n}\n\nexport interface XtsConfig {\n  orientation?: Orientation;\n  processingUnits: ProcessingUnitConfig[];\n  stations?: StationConfig[];\n  /**\n   * Labelled regions along the track. Like a StationConfig, but\n   * without stop positions — only a coloured tube segment plus an\n   * optional description billboard. For zone markings (e.g. \"Manual\n   * Access\", \"Safety Area\", \"Cleanroom\") that have no\n   * machine stops.\n   */\n  areas?: AreaConfig[];\n  infoBars?: InfoBarConfig[];\n  customAssets?: CustomAssetConfig[];\n}\n\nexport interface ProcessingUnitConfig {\n  /**\n   * Stable host-supplied 32-bit unique identifier for this XPU. Required\n   * at runtime — must be a non-negative integer that fits in a uint32\n   * and is unique across all XPUs in the config.\n   */\n  objectId: number;\n  moverType: MoverType3D;\n  customMoverLayout?: CustomMoverLayout;\n  /** Default: 'Beckhoff'. */\n  railSystem?: RailSystem;\n  parts: PartConfig[];\n  movers: MoverConfig[];\n  /**\n   * Track-level pose, applied to the entire XPU subtree (modules, movers,\n   * tools, stations, info bars, mover-bound custom assets). Composes\n   * MULTIPLICATIVELY with the root `XtsConfig.orientation`:\n   *\n   *     world = orientation ⊗ trackTransform ⊗ partTransformation ⊗ chain\n   *\n   * `scaleUniform` is applied as a uniform scale factor (default 1). Non-\n   * uniform scaling is intentionally not supported — it would distort path\n   * radii and break GLB lighting.\n   */\n  trackTransform?: TrackTransform;\n  /**\n   * User-frame remap applied to every `partPositionMm`-style value inside\n   * this XPU (mover positions, station start/end/stops, area start/end,\n   * stop-position ghost movers). Lets a host that uses a different \"zero\"\n   * or sign convention than the GLB chain enter positions in their own\n   * frame; the renderer translates to the chain's intrinsic frame:\n   *\n   *     chainPos = originMm + (direction === 'negative' ? -userPos : userPos)\n   *\n   * Defaults: `direction: 'positive'`, `originMm: 0` — i.e. user-frame\n   * equals chain-frame, no transform.\n   */\n  positionFrame?: PositionFrame;\n}\n\n/**\n * Sign + zero-offset convention for partPosition values within an XPU.\n * See `ProcessingUnitConfig.positionFrame` for semantics.\n */\nexport interface PositionFrame {\n  /** Travel direction. Default: `'positive'`. */\n  direction?: 'positive' | 'negative';\n  /** Zero-point shift (in chain-coordinates mm). Default: 0. */\n  originMm?: number;\n}\n\nexport interface TrackTransform {\n  positionMm?: Vec3;\n  /** Intrinsic XYZ Euler angles in degrees. */\n  rotationDegEuler?: Vec3;\n  /** Uniform scale factor. Default 1. */\n  scaleUniform?: number;\n  /** Hide the entire XPU when false. Default true. */\n  visible?: boolean;\n}\n\nexport interface PartConfig {\n  /**\n   * Stable host-supplied 32-bit unique identifier for this part. Distinct\n   * from `globalNumber` (server-side ObjectId): callers reference parts\n   * by `objectId` at runtime — e.g. in the array form of\n   * `XtsViewer3DRef.setMoverPositions` (`{partObjectId, partPosition}`).\n   * Required at runtime — must be a non-negative integer that fits in a\n   * uint32 and is unique across all parts in the system.\n   * `normalizeXtsConfig` emits a `missing-part-object-id` /\n   * `invalid-part-object-id` / `duplicate-part-object-id` warning when\n   * the contract is violated.\n   */\n  objectId: number;\n  /** = ServerTypes.PartModel.ObjectId — unique system-wide. */\n  globalNumber: number;\n  modules: ModuleEntry[];\n  partTransformation?: PartTransformation;\n}\n\nexport interface ModuleEntry {\n  moduleType: ModuleType3D;\n  /**\n   * Stable host-supplied number for this module. Required at runtime —\n   * simply counted up per module (1, 2, 3, …) across the whole system\n   * and used as the index in `XtsViewer3DRef.setModuleStatuses(array)` —\n   * i.e. `statuses[m.globalNumber] === { warning?: …, error?: … }`.\n   * `normalizeXtsConfig` emits a `missing-module-global-number` /\n   * `invalid-module-global-number` / `duplicate-module-global-number`\n   * warning when the contract is violated. Typed optional only so\n   * legacy configs and tests keep compiling; new code MUST set it.\n   */\n  globalNumber?: number;\n  /**\n   * Optional drive-status overlay for this module. Mirrors the\n   * `MoverConfig.status` shape; the same per-mesh emissive blink +\n   * billboard <DriveStatusIcon> surfaces both. Filtered by\n   * `display.showDriveWarnings` / `display.showDriveErrors`.\n   *\n   * For live updates (e.g. drive warnings/errors streamed from PLC),\n   * prefer the imperative\n   * `XtsViewer3DRef.setModuleStatuses(array)` channel — index = this\n   * module's `globalNumber`. The store wins over this config-time value.\n   */\n  status?: { warning?: boolean; error?: boolean };\n}\n\n/**\n * Per-part 3D pose, applied to EVERYTHING anchored to the part:\n * modules, guiding rails, movers, mover tools, mover-bound custom assets,\n * and the path-derived overlays (stations, areas, dimensions, info bars,\n * stop-position ghost movers, stator heatmap). Composes inside the\n * per-XPU `trackTransform`:\n *\n *     world = orientation ⊗ trackTransform ⊗ partTransformation ⊗ chain\n *\n * All fields are optional and default to identity (offset = [0,0,0],\n * rotation = [0,0,0]). Whole-track placement is done via\n * `ProcessingUnitConfig.trackTransform`; this transform is for moving a\n * part WITHIN its XPU — e.g. lifts that translate along Z, parts\n * mounted at an angle, or live-editable kinematics in the playground.\n *\n * Multi-part overlays (stations / areas spanning multiple `partOids`)\n * follow the transform of their FIRST partOid — the chain math\n * upstream is part-local, and points from differently-transformed\n * parts can't be stitched into a single tube. Anchor multi-part\n * overlays to the part you want them to track.\n */\nexport interface PartTransformation {\n  /** Translation in mm, in the XPU's track-transform frame. */\n  offsetMm?: Vec3;\n  /** Intrinsic XYZ Euler angles in degrees. */\n  rotationDegEuler?: Vec3;\n  partSide?: 'Default' | 'Driver' | 'Encoder';\n  /** Hide everything on this part when false. Default true. */\n  visible?: boolean;\n}\n\nexport interface MoverConfig {\n  /** Position-on-track index within the XPU. */\n  index: number;\n  /**\n   * Stable host-supplied 32-bit unique identifier for this mover.\n   * Required, must be a non-negative integer that fits in a uint32 and\n   * is unique across all movers in the config.\n   */\n  id: number;\n  /** References PartConfig.globalNumber. */\n  partOid: number;\n  /** [0, part.trackLengthMm] — clamped when out-of-bounds. */\n  partPositionMm: number;\n  status?: { warning?: boolean; error?: boolean };\n  selected?: boolean;\n  /** Predefined tool carriers or custom GLBs attached to this mover. */\n  tools?: MoverToolConfig[];\n}\n\n/**\n * Runtime mover-position update entry — pushed through\n * `XtsViewer3DRef.setMoverPositions(array)`. The array is indexed by\n * `MoverConfig.index` (i.e. entry `i` targets the mover with\n * `index === i`); use `null` / `undefined` to skip a slot. The\n * `partObjectId` field references `PartConfig.objectId`.\n */\nexport interface MoverPositionEntry {\n  /** = PartConfig.objectId (the host-side 32-bit unique part ID). */\n  partObjectId: number;\n  /** Position along the referenced part, in user-frame mm. */\n  partPosition: number;\n}\n\n/**\n * Runtime drive-status entry for a single module — pushed through\n * `XtsViewer3DRef.setModuleStatuses(array)`. The array is indexed by\n * `ModuleEntry.globalNumber`; use `null` / `undefined` to clear a slot.\n */\nexport interface ModuleStatusEntry {\n  warning?: boolean;\n  error?: boolean;\n}\n\nexport interface MoverToolConfig {\n  toolType: MoverToolType3D;\n  /** Required when toolType === 'Custom'. */\n  customGlbUrl?: string;\n  customOriginCorrection?: {\n    translateMm: Vec3;\n    rotationDegEuler: Vec3;\n  };\n  /** Local placement on the mover, relative to the magnet-plate center. */\n  offsetMm?: Vec3;\n  rotationDegEuler?: Vec3;\n  opacity?: number;\n  visible?: boolean;\n  id?: string;\n}\n\nexport interface CustomMoverLayout {\n  glbUrl: string;\n  originCorrection?: {\n    translateMm: Vec3;\n    rotationDegEuler: Vec3;\n  };\n  magnetPlateCenterMm?: Vec3;\n  pathLengthMm?: number;\n  imageFrontUrl?: string;\n  imageBackUrl?: string;\n}\n\nexport type CustomAssetBinding =\n  | {\n      type: 'static';\n      positionMm: Vec3;\n      rotationDegEuler: Vec3;\n      scale?: number;\n    }\n  | {\n      type: 'mover';\n      moverRef: { processingUnitObjectId: number; moverIndex: number };\n      offsetMm?: Vec3;\n      rotationDegEuler?: Vec3;\n      /** Uniform scale (default 1). */\n      scale?: number;\n    }\n  | {\n      type: 'all-movers';\n      offsetMm?: Vec3;\n      rotationDegEuler?: Vec3;\n      /** Uniform scale (default 1). Applied per mover. */\n      scale?: number;\n    };\n\nexport interface CustomAssetConfig {\n  id: string;\n  glbUrl: string;\n  binding: CustomAssetBinding;\n  opacity?: number;\n  visible?: boolean;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Display options\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Y-axis / rotation convention for incoming position data.\n *\n *   - `'viewer'` (default): values are taken as-is in the viewer's\n *     right-handed Z-up frame (+Y = left when looking along +X).\n *   - `'beckhoff-xts'`: the Beckhoff XTS `OriginTransform` convention.\n *     The viewer negates every Y translation (`offsetMm[1]`,\n *     `trackTransform.positionMm[1]`) and every Z-Euler rotation\n *     (`rotationDegEuler[2]`) so that data exported from XAE\n *     Konfigurator / `.xti` files renders with the correct topology\n *     without any consumer-side sign flip.\n */\nexport type CoordinateSystem = 'viewer' | 'beckhoff-xts';\n\nexport interface DisplayOptions {\n  /**\n   * Y-axis convention for all spatial inputs (`PartTransformation`,\n   * `TrackTransform`). Set to `'beckhoff-xts'` when binding directly\n   * to XAE / XTI / `<XtsConstruction>` data so the viewer negates Y\n   * translations and Z-Euler rotations internally. Default:\n   * `'viewer'` (no transform — current behaviour).\n   */\n  coordinateSystem?: CoordinateSystem;\n  displayStations?: boolean;\n  /** Render configured areas. Default: true (when `areas[]` is set). */\n  displayAreas?: boolean;\n  displayDimensions?: boolean;\n  showDriveErrors?: boolean;\n  showDriveWarnings?: boolean;\n  /**\n   * Render each mover's `id` as a billboarded 3D text label above the\n   * mover. Toggle on/off without re-creating the scene. Visual options\n   * (font size, color, offset, font URL, outline) are configurable via\n   * `moverIdLabelOptions`. Default: false.\n   */\n  showMoverIds?: boolean;\n  /**\n   * Style + placement overrides for the mover-id labels. Only applied\n   * when `showMoverIds === true`. All fields optional; sensible defaults\n   * shipped by the renderer.\n   */\n  moverIdLabelOptions?: MoverIdLabelOptions;\n  invertDimensions?: boolean;\n  stationOptions?: StationOptions;\n  stationMarkerOptions?: MarkerOptions;\n  /**\n   * Render a static, semi-transparent ghost mover at every `stopPositions`\n   * of every enabled `StationConfig`. Useful for layout reviews — shows\n   * \"where will the mover be when stopped\" without driving any positions.\n   * Ghosts are non-interactive, never participate in selection / collision\n   * detection, and use the XPU's `moverType` for their GLB.\n   *\n   * Default: false.\n   */\n  showStopPositionMovers?: boolean;\n  /** Visual options for the stop-position ghost movers. */\n  stopPositionMoverOptions?: StopPositionMoverOptions;\n  /**\n   * Render the stator heatmap overlay. Requires the `statorHeatmap`\n   * prop on `<XtsViewer3D>` to be set; without data the toggle is a\n   * no-op. Default: false.\n   */\n  showStatorHeatmap?: boolean;\n  areaOptions?: AreaOptions;\n  dimensionOptions?: DimensionOptions;\n  infoBarOptions?: InfoBarOptions;\n  /**\n   * Render small red spheres at the 8 AABB corners of every module GLB\n   * (the GLB's CAD-frame AABB, transformed through the origin-correction).\n   *\n   * Use during calibration to verify that adjacent modules' mating-faces\n   * are in geometrically the same place — when the corner spheres of two\n   * neighbouring modules overlap, the chain has C0 continuity at that\n   * boundary. Off by default.\n   */\n  showModuleCornerMarkers?: boolean;\n  /** Diameter (mm) of the corner-marker spheres. Default: 10. */\n  moduleCornerMarkerSizeMm?: number;\n  /** Color of the corner markers. Default: '#FF2030' (red). */\n  moduleCornerMarkerColor?: string;\n  /**\n   * Render shadows: enables the WebGL shadow map, makes one directional\n   * light cast shadows, and renders a transparent shadow-catcher plane\n   * so shadows from modules / movers / tools become visible. Default:\n   * false (no shadow-map cost when disabled). All loaded GLB meshes\n   * have their `castShadow` + `receiveShadow` flags set unconditionally\n   * — turning shadows on at the canvas level is the only thing that\n   * actually triggers the per-frame shadow pass.\n   */\n  shadows?: boolean;\n  /**\n   * Image-based lighting via a procedural indoor environment map\n   * (three's `RoomEnvironment` processed through `PMREMGenerator` —\n   * no HTTP fetch, no asset shipped). Drives PBR reflections on\n   * metallic / roughness materials so aluminium rails and brushed\n   * mover plates read as actual metal instead of flat shaded surfaces.\n   *\n   * Cost: one-time PMREM build on mount (≈ 1.5 MB GPU), zero per-frame\n   * overhead beyond the regular PBR shader's environment lookup.\n   *\n   * Default: `true` — looks noticeably better at no measurable cost.\n   * Set `false` to fall back to direct-lighting only.\n   */\n  environmentLighting?: boolean;\n  /**\n   * Strength of the environment-map contribution. Lower values keep\n   * the look closer to the previous direct-lighting-only baseline;\n   * higher values emphasise reflections.\n   *\n   * Default: `0.4` — reflections visible without overwhelming the\n   * directional + ambient lights. Range typically `0.0` … `1.5`.\n   */\n  environmentIntensity?: number;\n  /**\n   * Renderer tone-mapping operator. ACES filmic compresses bright\n   * highlights into a perceptually pleasant rolloff and is the closest\n   * match to film / professional CAD viewers; `'linear'` reproduces the\n   * pre-tone-mapping behaviour for callers who relied on it.\n   *\n   * Default: `'aces'`.\n   */\n  toneMapping?: 'aces' | 'linear' | 'reinhard' | 'cineon' | 'agx' | 'none';\n  /**\n   * Tone-mapping exposure multiplier (analogous to a camera's exposure\n   * stop). 1.0 = neutral. Bumped above 1 brightens the result, below 1\n   * darkens it.\n   *\n   * Default: `1.0`.\n   */\n  toneMappingExposure?: number;\n  /**\n   * Screen-space ambient occlusion (GTAO). Adds contact shadows in\n   * crevices and between adjacent surfaces for significantly more visual\n   * depth. Cost: one half-res pass per frame.\n   *\n   * Default: `false`.\n   */\n  ssao?: boolean;\n  /**\n   * SSAO blend intensity. Higher values darken crevices more.\n   * Range: 0.0–4.0. Default: `1.0`.\n   */\n  ssaoIntensity?: number;\n  /**\n   * SSAO sampling radius in world units (mm). Larger values spread the\n   * occlusion over a wider area. Default: `20`.\n   */\n  ssaoRadius?: number;\n  /**\n   * Bloom (glow) for bright metallic surfaces. Adds a soft halo around\n   * polished rails and highlights, giving metals a more realistic\n   * reflective appearance. Cost: one half-res pass per frame.\n   *\n   * Default: `false`.\n   */\n  bloom?: boolean;\n  /**\n   * Bloom intensity (strength). Higher values produce brighter glow.\n   * Range: 0.0–3.0. Default: `0.4`.\n   */\n  bloomIntensity?: number;\n  /**\n   * Bloom luminance threshold. Only pixels brighter than this value\n   * contribute to the bloom. Lower values bloom more of the scene.\n   * Range: 0.0–1.0. Default: `0.85`.\n   */\n  bloomThreshold?: number;\n  /**\n   * Bloom blur radius. Controls how far the glow spreads.\n   * Range: 0.0–1.0. Default: `0.4`.\n   */\n  bloomRadius?: number;\n}\n\n/**\n * Style + placement overrides for the per-mover-id 3D text labels\n * surfaced when `DisplayOptions.showMoverIds === true`.\n *\n * Defaults (all in scene units / mm; chosen for legibility on the\n * default mover GLB at typical XTS layouts):\n *   - `fontSizeMm`: 15\n *   - `color`: '#000000'\n *   - `offsetMm`: [0, 0, 55]  // centred above the mover's magnet plate\n *   - `fontUrl`: `DEFAULT_LABEL_FONT_URL` (Roboto Condensed)\n *   - `outlineWidthMm`: 0    // no outline\n *   - `outlineColor`: '#FFFFFF'\n */\nexport interface MoverIdLabelOptions {\n  /** Text height in mm (world units). Default: 15. */\n  fontSizeMm?: number;\n  /** CSS color for the text fill. Default: '#000000'. */\n  color?: string;\n  /**\n   * Offset of the label's anchor point relative to the mover's local\n   * origin (= magnet-plate center), in mm.\n   * `[x, y, z]` — Z is up. Default: `[0, 0, 25]`.\n   */\n  offsetMm?: Vec3;\n  /**\n   * URL of a TTF / OTF / WOFF font, passed straight to troika-three-text.\n   * Default: `DEFAULT_LABEL_FONT_URL` (Roboto Condensed via jsDelivr).\n   */\n  fontUrl?: string;\n  /** Outline thickness in mm. 0 disables the outline. Default: 0. */\n  outlineWidthMm?: number;\n  /** Outline color. Only applied if `outlineWidthMm > 0`. Default: '#FFFFFF'. */\n  outlineColor?: string;\n}\n\nexport interface StationOptions {\n  thicknessMm?: number;\n  /** Vertical Z lift (mm). Positive = above the table. */\n  displacementMm?: number;\n  /**\n   * Lateral Y displacement (mm) along the path's left-hand normal in the\n   * XY plane. Mirrors the Dimensions overlay: each tick at centerline s mm\n   * is rendered perpendicular to that point — values stay 1:1 with the\n   * actual track.\n   */\n  lateralDisplacementMm?: number;\n  /** Text styling for station description + stop-position labels. */\n  textOptions?: TextOptions;\n  /**\n   * Render the StationConfig.description as a camera-facing billboard at\n   * the centre of the station tube. Default: false.\n   */\n  showStationDescription?: boolean;\n  /**\n   * Render each StopPosition's mm value as a billboard next to its stop\n   * marker. Default: false.\n   */\n  showStopPositionValues?: boolean;\n  /**\n   * Override the per-label color. Falls back to the per-station\n   * `StationConfig.stationColor` (so colourful tubes keep matching their\n   * labels by default). Set this when you want a single uniform label\n   * colour across all stations regardless of tube colour.\n   */\n  labelColorOverride?: string;\n}\n\n/**\n * Visual options for the stop-position ghost movers (rendered when\n * `display.showStopPositionMovers === true`).\n */\nexport interface StopPositionMoverOptions {\n  /**\n   * Material opacity applied to the cloned mover GLB. Default 0.45 —\n   * ghost-like without disappearing. Set 1 for fully opaque, 0 to hide.\n   */\n  opacity?: number;\n  /**\n   * When set, applies an emissive tint matching the station colour\n   * (`StationConfig.stationColor`). Default: `true` — ghosts adopt the\n   * tube colour so different zones read as distinct. Set `false` for\n   * a uniform pale ghost regardless of station colour.\n   */\n  tintByStation?: boolean;\n}\n\n/**\n * Display options for `AreaConfig[]`. Mirror of `StationOptions` minus the\n * stop-position-related fields — Areas are pure range-overlays (tube +\n * optional description billboard).\n */\nexport interface AreaOptions {\n  /** Tube thickness in mm. Default: 8. */\n  thicknessMm?: number;\n  /** Vertical Z lift (mm). Positive = above the table. Default: 60. */\n  displacementMm?: number;\n  /**\n   * Lateral Y displacement (mm) along the path's left-hand normal in the\n   * XY plane. Each sample at centerline s is rendered perpendicular to that\n   * point — values stay 1:1 with the actual track.\n   */\n  lateralDisplacementMm?: number;\n  /** Text styling for area description labels. */\n  textOptions?: TextOptions;\n  /**\n   * Render the AreaConfig.description as a camera-facing billboard at the\n   * centre of the area tube. Default: true.\n   */\n  showAreaDescription?: boolean;\n  /**\n   * Override the per-label color. Falls back to the per-area\n   * `AreaConfig.color`. Set this when you want a single uniform label colour\n   * across all areas regardless of tube colour.\n   */\n  labelColorOverride?: string;\n  /**\n   * Tube opacity (0..1). Areas often cover long stretches of the track —\n   * lowering opacity (e.g. 0.5) makes them feel like a translucent zone\n   * marker rather than a solid pipe. Default: 1.\n   */\n  opacity?: number;\n}\n\n/**\n * Marker shape palette.\n *\n *   - Diamond  : OctahedronGeometry, oriented with +X along path (existing)\n *   - Tick     : narrow BoxGeometry across the path (existing)\n *   - Sphere   : isotropic SphereGeometry (no orientation)\n *   - Cone     : ConeGeometry with apex up (+Z), base on path point\n *   - Cube     : cube oriented along the path tangent (chunkier than Tick)\n *   - Cylinder : pillar standing perpendicular to the path (axis = +Z)\n *   - None     : not rendered\n */\nexport type MarkerShape =\n  | 'Diamond'\n  | 'Tick'\n  | 'Sphere'\n  | 'Cone'\n  | 'Cube'\n  | 'Cylinder'\n  | 'None';\n\nexport interface MarkerOptions {\n  shape?: MarkerShape;\n  sizeMm?: number;\n}\n\nexport interface DimensionOptions {\n  thicknessMm?: number;\n  /**\n   * Vertical displacement (mm), added to the path centerline's Z when\n   * sampling the dimension overlay. Positive = above the table.\n   */\n  displacementMm?: number;\n  /**\n   * Lateral displacement (mm) along the path's left-hand normal in the XY\n   * plane (+Y in path-frame). Lets you offset the dimension tube + ticks\n   * sideways from the mover centerline. On curves the offset tube has a\n   * different arc length than the centerline, but the displayed values\n   * still match the centerline position — each tick at centerline s mm\n   * is rendered perpendicular to that point.\n   */\n  lateralDisplacementMm?: number;\n  textOptions?: TextOptions;\n  textPattern?: number;\n  /**\n   * Show numeric mm-value labels at every dimension tick (module boundaries\n   * and — when enabled — intermediate steps). Labels are billboards that\n   * always face the camera. Default: false.\n   */\n  showValues?: boolean;\n  /**\n   * Place additional dimension ticks every N millimetres along the path,\n   * on top of the per-module-boundary ticks. 0 disables intermediate\n   * ticks (default). Typical values: 50, 100, 250.\n   */\n  intermediateStepMm?: number;\n  /**\n   * Marker style + size for intermediate ticks. Defaults to a smaller\n   * `Tick` marker (60% of the boundary tick size) so the intermediates\n   * remain visually subordinate.\n   */\n  intermediateMarkerOptions?: MarkerOptions;\n  /**\n   * Whether intermediate ticks also get value labels. Only applies when\n   * `showValues` is true. Default: true.\n   */\n  showIntermediateValues?: boolean;\n  /**\n   * What number to display next to each tick:\n   *   - 'partPosition' (default): cumulative mm from the part's start.\n   *   - 'fromModule'  : mm from the start of the containing module.\n   *   - 'both'        : \"<part> mm (<module> mm)\".\n   */\n  valueMode?: 'partPosition' | 'fromModule' | 'both';\n}\n\nexport interface InfoBarOptions {\n  defaultThicknessMm?: number;\n  textOptions?: TextOptions;\n}\n\nexport interface TextOptions {\n  sizeMm?: number;\n  color?: string;\n  fontFamily?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Stations / Dimensions / InfoBars\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface StationConfig {\n  stationId: number;\n  description: string;\n  isEnabled: boolean;\n  partOids: number[];\n  startPositionOnPart: number;\n  endPositionOnPart: number;\n  /** ARGB int (same as 2D). */\n  stationColor: number;\n  stopPositions?: number[];\n  /**\n   * Reference frame for `stopPositions` values:\n   *   - `'track'`   (default) — values are absolute partPositionMm from\n   *                              track start. Same convention as\n   *                              `startPositionOnPart` / `endPositionOnPart`.\n   *   - `'station'` — values are RELATIVE to `startPositionOnPart`. So\n   *                   `0` puts a stop right at the station's start;\n   *                   `100` puts one 100 mm into the station regardless\n   *                   of where the station lives on the part.\n   *\n   * Useful when stops are conceptually tied to the station's geometry\n   * (entry, mid, exit) rather than absolute mm marks on the track.\n   */\n  stopPositionsRelativeTo?: 'track' | 'station';\n  /**\n   * Per-station override of the stop-marker geometry. Falls back to\n   * `display.stationMarkerOptions.shape` when omitted. Lets one station\n   * render Diamonds while a neighbour uses Cones, etc.\n   */\n  stopMarkerShape?: MarkerShape;\n  /** Per-station override of the stop-marker size (mm). */\n  stopMarkerSizeMm?: number;\n}\n\n/**\n * Labelled region along the track. Identical to\n * `StationConfig`, but without stop positions — areas only carry text +\n * colour and describe a zone (e.g. \"Cleanroom\", \"Manual Access\",\n * \"Safety Loop\") that does not trigger machine stops.\n *\n * Multi-part: same semantics as `StationConfig.partOids`. With a single\n * partOid and `endPositionOnPart < startPositionOnPart`, a closed loop\n * is rendered (to the end of the track, then from 0 to End).\n */\nexport interface AreaConfig {\n  areaId: number;\n  description: string;\n  isEnabled: boolean;\n  partOids: number[];\n  startPositionOnPart: number;\n  endPositionOnPart: number;\n  /** ARGB int (same as StationConfig). Used for tube + default label. */\n  color: number;\n}\n\nexport interface InfoBarConfig {\n  processingUnitObjectId: number;\n  partObjectId: number;\n  partStartPositionMm: number;\n  partEndPositionMm: number;\n  thickness: number;\n  displacement: number;\n  color: { color: string };\n  visible: boolean;\n  text?: string;\n  textPlacement?: 'Left' | 'Center' | 'Right';\n  textDisplacement?: number;\n  textOptions?: TextOptions;\n  markers?: InfoBarMarkerConfig[];\n  zIndex: number;\n}\n\nexport interface InfoBarMarkerConfig {\n  positionMm: number;\n  shape: 'Diamond' | 'Tick' | 'None';\n  sizeMm: number;\n  color?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Selection + Camera\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ModuleRef {\n  processingUnitObjectId: number;\n  partObjectId: number;\n  moduleIndex: number;\n}\n\nexport interface MoverRef {\n  processingUnitObjectId: number;\n  moverIndex: number;\n}\n\nexport interface SelectionState {\n  modules: ModuleRef[];\n  movers: MoverRef[];\n}\n\nexport type SelectionMode = 'Off' | 'Single' | 'Multi';\n\n/**\n * Declarative module highlight. All modules whose `moduleType` appears in\n * `moduleTypes` are tinted with the given `color` — same emissive effect as\n * selection, but independent of the selection state. Multiple highlights can\n * overlap; the first matching entry wins.\n *\n * Toggle on/off by setting `moduleHighlights` on `<XtsViewer3D>` to an\n * array (enabled) or `undefined` / `[]` (disabled).\n */\nexport interface ModuleHighlight {\n  /** Module types to highlight. */\n  moduleTypes: ModuleType3D[];\n  /** Highlight color (CSS color string, e.g. `'#FF6600'`). */\n  color: string;\n}\n\nexport interface CameraState {\n  positionMm: Vec3;\n  targetMm: Vec3;\n  /** Always 'Z' in the current spec. */\n  upAxis: 'Z' | 'Y';\n  zoom?: number;\n}\n\n/**\n * Live camera projection.\n *   - `'perspective'` (default) — the regular 3D view.\n *   - `'orthographic'` — paired with `topDown`, gives the flat 2D plan view\n *     that matches `exportScreenshot({ mode: 'top-down' })`.\n */\nexport type CameraProjection = 'perspective' | 'orthographic';\n\n/**\n * Target for the imperative `viewerRef.current.focusOn(target, opts)` camera\n * animation. The viewer computes the target's world-space bounding box and\n * flies the camera so the whole object fits the frame:\n *   - In `'perspective'` projection the current view angle is preserved\n *     (the camera only dollies / re-centres).\n *   - In `'orthographic'` top-down the frustum is re-framed and the camera\n *     pans straight over the object.\n */\nexport type FocusTarget =\n  | { kind: 'scene' }\n  | { kind: 'station'; stationId: number }\n  | { kind: 'area'; areaId: number }\n  | { kind: 'mover'; ref: MoverRef }\n  | { kind: 'module'; ref: ModuleRef };\n\nexport interface FocusOptions {\n  /** Animation duration in ms. Default 700. `0` jumps immediately. */\n  durationMs?: number;\n  /**\n   * Padding around the target's bounding box (1 = tight fit). Default 1.2 in\n   * perspective, 1.1 in orthographic top-down.\n   */\n  paddingFactor?: number;\n  /** Easing curve. Default `'easeInOutCubic'`. */\n  easing?: 'linear' | 'easeInOutCubic';\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Errors + asset manifest\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type XtsViewerErrorCode =\n  | 'asset-load-failed'\n  | 'unknown-module-type'\n  | 'unknown-mover-type'\n  | 'unknown-tool-type'\n  | 'invalid-config'\n  | 'unmatched-clothoid-half'\n  | 'webgl-context-lost';\n\nexport interface XtsViewerError {\n  code: XtsViewerErrorCode;\n  message: string;\n  details?: unknown;\n}\n\nexport class XtsViewerErrorException extends Error {\n  public readonly code: XtsViewerErrorCode;\n  public readonly details?: unknown;\n  constructor(code: XtsViewerErrorCode, message: string, details?: unknown) {\n    super(message);\n    this.name = 'XtsViewerError';\n    this.code = code;\n    this.details = details;\n  }\n}\n\nexport interface AssetManifest {\n  /** Override per moduleType. Falls back to default mapping otherwise. */\n  modules?: Partial<Record<ModuleType3D, ModuleAssetEntry>>;\n  movers?: Partial<Record<MoverType3D, MoverAssetEntry>>;\n  tools?: Partial<Record<MoverToolType3D, MoverToolAssetEntry>>;\n  guidingRails?: Partial<Record<RailType3D, RailAssetEntry>>;\n}\n\nexport interface RailAssetEntry {\n  glbUrl: string;\n  sidecarUrl?: string;\n}\n\nexport interface ModuleAssetEntry {\n  /** Per-RailSystem GLB URL (relative to assetsBaseUrl). */\n  glbByRailSystem: {\n    Beckhoff: string | null;\n    HepcoGfx?: string | null;\n  };\n  sidecarUrl?: string;\n}\n\nexport interface MoverAssetEntry {\n  glbUrl: string;\n  sidecarUrl?: string;\n}\n\nexport interface MoverToolAssetEntry {\n  glbUrl: string;\n  sidecarUrl?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// XtsModelDocument (canonical export format)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface XtsModelDocument {\n  schemaVersion: 1;\n  meta: {\n    generatedAt: string;\n    generator: string;\n    sourceFormat?: string;\n    sourceFileHash?: string;\n  };\n  config: XtsConfig;\n  runtime?: XtsRuntimeState;\n  railSystem?: RailSystem | { byProcessingUnit: Record<number, RailSystem> };\n}\n\nexport interface XtsRuntimeState {\n  movers: Array<{\n    processingUnitObjectId: number;\n    moverIndex: number;\n    id: number;\n    partOid: number;\n    partPositionMm: number;\n    velocity?: { mmPerSec: number };\n    status?: { warning?: boolean; error?: boolean };\n  }>;\n  selection?: SelectionState;\n  camera?: CameraState;\n  display?: Partial<DisplayOptions>;\n}\n","/**\n * Module catalog (3D-canonical).\n *\n * Every module declares its path topology (Straight / Curve / Free), its\n * arc length, and — for curves — the signed end-of-module yaw delta in\n * degrees. Centerline radius for analytic curves is derived from\n * `R = L / |θ_rad|`.\n *\n * Hygienic ATH variants share path math with their AT pendants — only the\n * GLB mesh differs.\n *\n * This file is hand-curated. The geometry module imports from here directly\n * (no JSON fetch) so the library has zero runtime data deps.\n */\n\nimport type { ModuleType3D } from '../types.js';\n\nexport type PathType = 'Straight' | 'Curve' | 'Free';\n\nexport interface ModuleCatalogEntry {\n  moduleType: ModuleType3D;\n  /** Arc length along the centerline, in mm. */\n  moduleLengthMm: number;\n  pathType: PathType;\n  /**\n   * Encoder-side end-of-module yaw, in degrees, in the module-local 3D frame.\n   * Sign convention: positive endAngle ⇒ Y-flip math curves toward\n   * −Y (= right of path). 0 for Straight. 180 for AT2050_*_180 free path.\n   */\n  endAngleDeg: number;\n  /**\n   * Centerline radius for analytic curves, in mm. `null` for Straight + Free.\n   * Computed as R = L / |θ_rad|; equals 636.6198 for ±22.5° and 318.3099 for\n   * ±45° curves at L=250.\n   */\n  centerlineRadiusMm: number | null;\n  /**\n   * Free-path point cloud reference. Only set for `pathType==='Free'`.\n   * The string identifies the cloud by name; the actual data lives in\n   * geometry/PointClouds.ts.\n   */\n  freePathId?: string;\n  /** True if STP is not delivered yet. */\n  prepared?: boolean;\n  /** True for Einspeisemodule (power feed-in variants). */\n  isInfeed?: boolean;\n}\n\nconst R_22_5 = 250 / (Math.PI / 8); // = 636.61977236...\nconst R_45 = 250 / (Math.PI / 4); // = 318.30988618...\n\nconst STRAIGHT = (\n  moduleType: ModuleType3D,\n  moduleLengthMm: number,\n): ModuleCatalogEntry => ({\n  moduleType,\n  moduleLengthMm,\n  pathType: 'Straight',\n  endAngleDeg: 0,\n  centerlineRadiusMm: null,\n});\n\nconst CURVE = (\n  moduleType: ModuleType3D,\n  endAngleDeg: number,\n  moduleLengthMm = 250,\n): ModuleCatalogEntry => ({\n  moduleType,\n  moduleLengthMm,\n  pathType: 'Curve',\n  endAngleDeg,\n  centerlineRadiusMm: moduleLengthMm / Math.abs((endAngleDeg * Math.PI) / 180),\n});\n\nconst FREE_180 = (\n  moduleType: ModuleType3D,\n  freePathId: string,\n): ModuleCatalogEntry => ({\n  moduleType,\n  moduleLengthMm: 500,\n  pathType: 'Free',\n  endAngleDeg: 180,\n  centerlineRadiusMm: null,\n  freePathId,\n});\n\nexport const MODULE_CATALOG: Readonly<Record<ModuleType3D, ModuleCatalogEntry>> =\n  Object.freeze({\n    // Standard AT — Straights\n    AT2000_0250: STRAIGHT('AT2000_0250', 250),\n    AT2001_0250: { ...STRAIGHT('AT2001_0250', 250), isInfeed: true },\n    AT2002_0250: { ...STRAIGHT('AT2002_0250', 250), isInfeed: true },\n    AT2002_0249: STRAIGHT('AT2002_0249', 249),\n    AT2002_0249_ZX2002_0001: STRAIGHT('AT2002_0249_ZX2002_0001', 249),\n    AT2000_0233: STRAIGHT('AT2000_0233', 233),\n    AT2000_0249: STRAIGHT('AT2000_0249', 249),\n    AT2100_0250: STRAIGHT('AT2100_0250', 250),\n    AT2102_0250: { ...STRAIGHT('AT2102_0250', 250), isInfeed: true },\n\n    // Standard AT — Curves\n    AT2020_0250: CURVE('AT2020_0250', +22.5),\n    AT2021_0250: { ...CURVE('AT2021_0250', +22.5), isInfeed: true },\n    AT2025_0250: CURVE('AT2025_0250', -22.5),\n    AT2026_0250: { ...CURVE('AT2026_0250', -22.5), isInfeed: true },\n    AT2040_0250: CURVE('AT2040_0250', +45),\n    AT2041_0250: { ...CURVE('AT2041_0250', +45), isInfeed: true },\n    AT2042_0250: { ...CURVE('AT2042_0250', +45), prepared: true },\n    AT2140_0250: { ...CURVE('AT2140_0250', +45), prepared: true },\n\n    // Standard AT — Free path (180° clothoid pair)\n    AT2050_0500: {\n      // Half-clothoid; legacy 2D. In 3D this MUST be merged with AT2050_0501\n      // by normalizeXtsConfig before path math runs.\n      moduleType: 'AT2050_0500',\n      moduleLengthMm: 250,\n      pathType: 'Free',\n      endAngleDeg: 90,\n      centerlineRadiusMm: null,\n      freePathId: 'AT2050_0500_HALF',\n    },\n    AT2050_0501: {\n      moduleType: 'AT2050_0501',\n      moduleLengthMm: 250,\n      pathType: 'Free',\n      endAngleDeg: 90,\n      centerlineRadiusMm: null,\n      freePathId: 'AT2050_0501_HALF',\n    },\n    AT2050_0500_180: FREE_180('AT2050_0500_180', 'AT2050_180_COMBINED'),\n\n    // Eco\n    AT2200_0500: STRAIGHT('AT2200_0500', 500),\n    AT2202_0500: { ...STRAIGHT('AT2202_0500', 500), isInfeed: true },\n\n    // Hygienic ATH — Straights\n    ATH2000_0250: STRAIGHT('ATH2000_0250', 250),\n    ATH2001_0250: { ...STRAIGHT('ATH2001_0250', 250), isInfeed: true },\n    ATH2002_0250: { ...STRAIGHT('ATH2002_0250', 250), isInfeed: true },\n\n    // Hygienic ATH — Curves (path math identical to AT pendants)\n    ATH2020_0250: CURVE('ATH2020_0250', +22.5),\n    ATH2040_0250: CURVE('ATH2040_0250', +45),\n    ATH2041_0250: { ...CURVE('ATH2041_0250', +45), isInfeed: true },\n    ATH2042_0250: CURVE('ATH2042_0250', +45),\n\n    // Hygienic ATH — Free path\n    ATH2050_0500: {\n      moduleType: 'ATH2050_0500',\n      moduleLengthMm: 250,\n      pathType: 'Free',\n      endAngleDeg: 90,\n      centerlineRadiusMm: null,\n      freePathId: 'AT2050_0500_HALF',\n    },\n    ATH2050_0501: {\n      moduleType: 'ATH2050_0501',\n      moduleLengthMm: 250,\n      pathType: 'Free',\n      endAngleDeg: 90,\n      centerlineRadiusMm: null,\n      freePathId: 'AT2050_0501_HALF',\n    },\n    ATH2050_0500_180: FREE_180('ATH2050_0500_180', 'AT2050_180_COMBINED'),\n  });\n\n/**\n * Beckhoff XTS infeed module types (Einspeisemodule). Convenience constant\n * for use with `moduleHighlights` on `<XtsViewer3D>`.\n *\n * Derived from the catalog (`isInfeed` flag) so it never drifts out of sync —\n * mark a new module with `isInfeed: true` in `MODULE_CATALOG` and it is\n * automatically included here.\n */\nexport const INFEED_MODULE_TYPES: readonly ModuleType3D[] = Object.freeze(\n  (Object.values(MODULE_CATALOG) as ModuleCatalogEntry[])\n    .filter((e) => e.isInfeed)\n    .map((e) => e.moduleType),\n);\n\n/** Lookup with type-narrowing. Returns undefined for unknown types. */\nexport function getModuleEntry(\n  moduleType: ModuleType3D,\n): ModuleCatalogEntry | undefined {\n  return MODULE_CATALOG[moduleType];\n}\n\n/** Type-guard for safe lookups from untyped (e.g. JSON) sources. */\nexport function isKnownModuleType(value: string): value is ModuleType3D {\n  return Object.prototype.hasOwnProperty.call(MODULE_CATALOG, value);\n}\n\nexport { R_22_5, R_45 };\n","/**\n * Mover catalog (3D-canonical).\n *\n * Magnet-plate-center-Mm is the canonical attachment point on the path\n * centerline (after originCorrection of the GLB).\n */\n\nimport type { MoverType3D, Vec3 } from '../types.js';\n\nexport interface MoverCatalogEntry {\n  moverType: MoverType3D;\n  /** Mover length in travel direction, mm. */\n  pathLengthMm: number;\n  /** Mover height in CAD Y-direction, mm (front side / encoder). */\n  heightMm: number;\n  /**\n   * Magnet plate center in mover-local 3D frame (after originCorrection).\n   * +X = travel direction, +Z = up, Y = left of path.\n   */\n  magnetPlateCenterMm: Vec3;\n}\n\nexport const MOVER_CATALOG: Readonly<Record<MoverType3D, MoverCatalogEntry>> =\n  Object.freeze({\n    AT9011_0050: {\n      moverType: 'AT9011_0050',\n      pathLengthMm: 50,\n      heightMm: 123.5,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    AT9011_0070: {\n      moverType: 'AT9011_0070',\n      pathLengthMm: 70,\n      heightMm: 126,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    AT9012_0050: {\n      moverType: 'AT9012_0050',\n      pathLengthMm: 51,\n      heightMm: 123.5,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    AT9014_0055: {\n      moverType: 'AT9014_0055',\n      pathLengthMm: 55,\n      heightMm: 124.8,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    AT9014_0070: {\n      moverType: 'AT9014_0070',\n      pathLengthMm: 70,\n      heightMm: 125.8,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    ATH9011_0075: {\n      moverType: 'ATH9011_0075',\n      pathLengthMm: 75,\n      heightMm: 112,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    ATH9013_0075: {\n      moverType: 'ATH9013_0075',\n      pathLengthMm: 75,\n      heightMm: 112,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    Custom: {\n      moverType: 'Custom',\n      pathLengthMm: 70,\n      heightMm: 125,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n    // Hepco GFX2-1TC-S25: AABB 83.2 × 85.5 × 106.4 mm in CAD frame\n    // (X = lateral, Y = up, Z = path direction). Defaults below match the\n    // CAD path-length; calibration tool refines positioning.\n    Hepco_GFX2_1TC_S25: {\n      moverType: 'Hepco_GFX2_1TC_S25',\n      pathLengthMm: 100,\n      heightMm: 86,\n      magnetPlateCenterMm: [0, 0, 0],\n    },\n  });\n\nexport function getMoverEntry(\n  moverType: MoverType3D,\n): MoverCatalogEntry | undefined {\n  return MOVER_CATALOG[moverType];\n}\n\nexport function isKnownMoverType(value: string): value is MoverType3D {\n  return Object.prototype.hasOwnProperty.call(MOVER_CATALOG, value);\n}\n","/**\n * normalizeXtsConfig — pre-render pass.\n *\n * Fail-fast validation + AT2050 half-clothoid merging:\n *   AT2050_0500 + AT2050_0501 (gap=0)        → AT2050_0500_180\n *   ATH2050_0500 + ATH2050_0501 (gap=0)      → ATH2050_0500_180\n *\n * Errors thrown via XtsViewerErrorException:\n *   - 'unknown-module-type'\n *   - 'unknown-mover-type'\n *   - 'unmatched-clothoid-half'   (0500 without 0501 or vice versa)\n *\n * Warnings (collected, non-fatal) returned alongside the normalized config:\n *   - mover.partOid not in part-list\n *   - duplicate mover.id within an XPU\n *   - mover.partPositionMm out of range (clamped)\n */\n\nimport type {\n  ModuleEntry,\n  ModuleType3D,\n  MoverConfig,\n  PartConfig,\n  ProcessingUnitConfig,\n  XtsConfig,\n} from '../types.js';\nimport { XtsViewerErrorException } from '../types.js';\nimport { isKnownModuleType } from './ModuleCatalog.js';\nimport { isKnownMoverType } from './MoverCatalog.js';\n\nexport interface NormalizedXtsConfig extends XtsConfig {\n  /**\n   * Same shape as the input, with all parts' modules pre-merged + validated.\n   * Mover positions are clamped, but the original values are preserved in\n   * `__warnings` for diagnostics.\n   */\n  readonly __warnings: NormalizationWarning[];\n}\n\nexport interface NormalizationWarning {\n  code:\n    | 'mover-out-of-range'\n    | 'mover-orphan'\n    | 'mover-duplicate-id'\n    | 'mover-missing-id'\n    | 'mover-invalid-id'\n    | 'empty-part'\n    | 'prepared-module'\n    | 'duplicate-xpu-object-id'\n    | 'missing-xpu-object-id'\n    | 'invalid-xpu-object-id'\n    | 'duplicate-part-object-id'\n    | 'missing-part-object-id'\n    | 'invalid-part-object-id'\n    | 'duplicate-module-global-number'\n    | 'missing-module-global-number'\n    | 'invalid-module-global-number';\n  message: string;\n  details?: unknown;\n}\n\nconst UINT32_MAX = 0xffffffff;\n\nfunction isValidUint32(n: unknown): n is number {\n  return (\n    typeof n === 'number' &&\n    Number.isInteger(n) &&\n    n >= 0 &&\n    n <= UINT32_MAX\n  );\n}\n\nconst HALF_PAIRS: ReadonlyArray<{\n  a: ModuleType3D;\n  b: ModuleType3D;\n  merged: ModuleType3D;\n}> = [\n  { a: 'AT2050_0500', b: 'AT2050_0501', merged: 'AT2050_0500_180' },\n  { a: 'ATH2050_0500', b: 'ATH2050_0501', merged: 'ATH2050_0500_180' },\n];\n\nfunction findHalfPair(t: ModuleType3D) {\n  for (const pair of HALF_PAIRS) {\n    if (pair.a === t) return pair;\n  }\n  return undefined;\n}\n\nfunction isHalfModule(t: ModuleType3D): boolean {\n  return HALF_PAIRS.some((p) => p.a === t || p.b === t);\n}\n\nfunction mergeHalves(modules: ReadonlyArray<ModuleEntry>): ModuleEntry[] {\n  const out: ModuleEntry[] = [];\n  for (let i = 0; i < modules.length; i++) {\n    const cur = modules[i]!;\n    const pair = findHalfPair(cur.moduleType);\n    const next = modules[i + 1];\n    if (pair && next && next.moduleType === pair.b) {\n      // Combine status from both halves — if either half is in\n      // warning / error, the merged 180° kehre inherits it.\n      const merged: ModuleEntry = { moduleType: pair.merged };\n      if (cur.status || next.status) {\n        merged.status = {\n          warning: !!(cur.status?.warning || next.status?.warning),\n          error: !!(cur.status?.error || next.status?.error),\n        };\n      }\n      out.push(merged);\n      i += 1; // skip the second half\n      continue;\n    }\n    if (pair && (!next || next.moduleType !== pair.b)) {\n      throw new XtsViewerErrorException(\n        'unmatched-clothoid-half',\n        `${pair.a} at index ${i} is not followed by ${pair.b}.`,\n        { index: i, moduleType: pair.a },\n      );\n    }\n    // Lone \".._0501\" (second half without a leading .._0500) is also invalid.\n    if (\n      cur.moduleType === 'AT2050_0501' ||\n      cur.moduleType === 'ATH2050_0501'\n    ) {\n      throw new XtsViewerErrorException(\n        'unmatched-clothoid-half',\n        `Lone ${cur.moduleType} at index ${i} (must follow its ..._0500 partner).`,\n        { index: i, moduleType: cur.moduleType },\n      );\n    }\n    out.push(cur);\n  }\n  return out;\n}\n\nfunction validatePart(part: PartConfig): NormalizationWarning[] {\n  const warnings: NormalizationWarning[] = [];\n  if (part.modules.length === 0) {\n    warnings.push({\n      code: 'empty-part',\n      message: `Part #${part.globalNumber} has no modules.`,\n      details: { partOid: part.globalNumber },\n    });\n  }\n  for (let i = 0; i < part.modules.length; i++) {\n    const m = part.modules[i]!;\n    if (!isKnownModuleType(m.moduleType)) {\n      throw new XtsViewerErrorException(\n        'unknown-module-type',\n        `Unknown moduleType \"${m.moduleType}\" in part #${part.globalNumber} index ${i}`,\n        { partOid: part.globalNumber, index: i, moduleType: m.moduleType },\n      );\n    }\n  }\n  return warnings;\n}\n\nfunction validateMovers(\n  xpu: ProcessingUnitConfig,\n  partsByOid: Map<number, PartConfig>,\n  partTrackLengths: Map<number, number>,\n): { movers: MoverConfig[]; warnings: NormalizationWarning[] } {\n  const warnings: NormalizationWarning[] = [];\n  const seenIds = new Map<number, number>();\n  const out: MoverConfig[] = [];\n\n  for (const m of xpu.movers) {\n    const part = partsByOid.get(m.partOid);\n    if (!part) {\n      warnings.push({\n        code: 'mover-orphan',\n        message: `Mover ${m.id} references partOid=${m.partOid} which is not in XPU ${xpu.objectId}; mover skipped.`,\n        details: { mover: m, xpuObjectId: xpu.objectId },\n      });\n      continue;\n    }\n    if (m.id === undefined || m.id === null) {\n      warnings.push({\n        code: 'mover-missing-id',\n        message: `Mover at index=${m.index} in XPU ${xpu.objectId} is missing required field 'id'.`,\n        details: { mover: m, xpuObjectId: xpu.objectId },\n      });\n      continue;\n    }\n    if (!isValidUint32(m.id)) {\n      warnings.push({\n        code: 'mover-invalid-id',\n        message: `Mover id=${String(m.id)} (XPU ${xpu.objectId}) is invalid (must be a non-negative integer ≤ 2^32-1).`,\n        details: { mover: m, xpuObjectId: xpu.objectId },\n      });\n      continue;\n    }\n    if (seenIds.has(m.id)) {\n      warnings.push({\n        code: 'mover-duplicate-id',\n        message: `Duplicate mover.id=${m.id} in XPU ${xpu.objectId}; later definition wins.`,\n        details: { id: m.id, xpuObjectId: xpu.objectId },\n      });\n      // Replace previous occurrence — last wins.\n      const idx = seenIds.get(m.id)!;\n      out[idx] = clampMover(m, partTrackLengths.get(m.partOid) ?? 0, warnings);\n      continue;\n    }\n    const trackLength = partTrackLengths.get(m.partOid) ?? 0;\n    out.push(clampMover(m, trackLength, warnings));\n    seenIds.set(m.id, out.length - 1);\n  }\n  return { movers: out, warnings };\n}\n\nfunction clampMover(\n  mover: MoverConfig,\n  trackLengthMm: number,\n  warnings: NormalizationWarning[],\n): MoverConfig {\n  let pos = mover.partPositionMm;\n  if (!Number.isFinite(pos)) pos = 0;\n  if (pos < 0) {\n    warnings.push({\n      code: 'mover-out-of-range',\n      message: `Mover ${mover.id} partPositionMm=${pos} clamped to 0.`,\n      details: { mover, original: mover.partPositionMm },\n    });\n    pos = 0;\n  } else if (pos > trackLengthMm) {\n    warnings.push({\n      code: 'mover-out-of-range',\n      message: `Mover ${mover.id} partPositionMm=${pos} clamped to trackLength=${trackLengthMm}.`,\n      details: { mover, original: mover.partPositionMm, trackLengthMm },\n    });\n    pos = trackLengthMm;\n  }\n  return { ...mover, partPositionMm: pos };\n}\n\n/**\n * Compute the would-be trackLength of a part WITHOUT building a full chain\n * (avoids dragging buildChain in here and creating a circular dep). The\n * merge step has already happened by the time we call this, so the\n * module-list lengths are summed via a static catalogue lookup.\n */\nfunction trackLengthAfterMerge(modules: ReadonlyArray<ModuleEntry>): number {\n  let sum = 0;\n  for (const m of modules) {\n    sum += MODULE_LENGTH[m.moduleType] ?? 0;\n  }\n  return sum;\n}\n\nconst MODULE_LENGTH: Readonly<Record<ModuleType3D, number>> = Object.freeze({\n  AT2000_0250: 250,\n  AT2001_0250: 250,\n  AT2002_0250: 250,\n  AT2002_0249: 249,\n  AT2002_0249_ZX2002_0001: 249,\n  AT2000_0233: 233,\n  AT2000_0249: 249,\n  AT2100_0250: 250,\n  AT2102_0250: 250,\n  AT2020_0250: 250,\n  AT2021_0250: 250,\n  AT2025_0250: 250,\n  AT2026_0250: 250,\n  AT2040_0250: 250,\n  AT2041_0250: 250,\n  AT2042_0250: 250,\n  AT2140_0250: 250,\n  AT2050_0500: 250,\n  AT2050_0501: 250,\n  AT2050_0500_180: 500,\n  AT2200_0500: 500,\n  AT2202_0500: 500,\n  ATH2000_0250: 250,\n  ATH2001_0250: 250,\n  ATH2002_0250: 250,\n  ATH2020_0250: 250,\n  ATH2040_0250: 250,\n  ATH2041_0250: 250,\n  ATH2042_0250: 250,\n  ATH2050_0500: 250,\n  ATH2050_0501: 250,\n  ATH2050_0500_180: 500,\n});\n\nconst STRUCTURAL_OMIT = new Set([\n  'partPositionMm',\n  'selected',\n  'status',\n]);\n\nfunction structuralKey(config: XtsConfig): string {\n  return JSON.stringify(config, (key, value) =>\n    STRUCTURAL_OMIT.has(key) ? undefined : value,\n  );\n}\n\nfunction cloneWithFreshPositions(\n  cached: NormalizedXtsConfig,\n  fresh: XtsConfig,\n): NormalizedXtsConfig {\n  const positionByMoverId = new Map<number, number>();\n  const statusByMoverId = new Map<\n    number,\n    MoverConfig['status']\n  >();\n  const selectedByMoverId = new Map<number, boolean | undefined>();\n  for (const xpu of fresh.processingUnits)\n    for (const m of xpu.movers) {\n      positionByMoverId.set(m.id, m.partPositionMm);\n      statusByMoverId.set(m.id, m.status);\n      selectedByMoverId.set(m.id, m.selected);\n    }\n  // Re-clamp + refresh frame-paced fields. Structural validation already\n  // ran during the original cache-populate; we only revisit the\n  // out-of-range warnings here.\n  const warnings = cached.__warnings.filter(\n    (w) => w.code !== 'mover-out-of-range',\n  );\n  const newXpus = cached.processingUnits.map((xpu) => {\n    const trackLengths = new Map<number, number>();\n    for (const p of xpu.parts) {\n      let sum = 0;\n      for (const m of p.modules)\n        sum += MODULE_LENGTH[m.moduleType] ?? 0;\n      trackLengths.set(p.globalNumber, sum);\n    }\n    return {\n      ...xpu,\n      movers: xpu.movers.map((m) => {\n        const requested = positionByMoverId.get(m.id);\n        const trackLength = trackLengths.get(m.partOid) ?? 0;\n        let pos = requested ?? m.partPositionMm;\n        if (!Number.isFinite(pos)) pos = 0;\n        if (pos < 0) {\n          warnings.push({\n            code: 'mover-out-of-range',\n            message: `Mover ${m.id} partPositionMm=${pos} clamped to 0.`,\n            details: { mover: m, original: pos },\n          });\n          pos = 0;\n        } else if (pos > trackLength) {\n          warnings.push({\n            code: 'mover-out-of-range',\n            message: `Mover ${m.id} partPositionMm=${pos} clamped to trackLength=${trackLength}.`,\n            details: { mover: m, original: pos, trackLength },\n          });\n          pos = trackLength;\n        }\n        const nextStatus = statusByMoverId.get(m.id);\n        const nextSelected = selectedByMoverId.get(m.id);\n        return {\n          ...m,\n          partPositionMm: pos,\n          ...(nextStatus !== undefined ? { status: nextStatus } : {}),\n          ...(nextSelected !== undefined ? { selected: nextSelected } : {}),\n        };\n      }),\n    };\n  });\n  return { ...cached, processingUnits: newXpus, __warnings: warnings };\n}\n\n/**\n * Stateful normalizer with a single-slot structural cache. The key\n * intentionally excludes `mover.partPositionMm` so that frame-paced\n * position updates fall into the fast path: when the structure (modules,\n * parts, transforms, mover ids/partOids) hasn't changed between calls,\n * we return a clone of the cached result with only the mover positions\n * re-clamped against the current input.\n *\n * Construct your own instance when you need an isolated cache (e.g. in\n * tests, or when multiple viewers in the same JS realm would otherwise\n * thrash a shared single-slot cache). The standalone `normalizeXtsConfig`\n * function delegates to a process-wide singleton for backwards\n * compatibility.\n */\nexport class XtsConfigNormalizer {\n  private _cache: {\n    key: string;\n    result: NormalizedXtsConfig;\n  } | null = null;\n\n  normalize(config: XtsConfig): NormalizedXtsConfig {\n    const key = structuralKey(config);\n    if (this._cache && this._cache.key === key) {\n      return cloneWithFreshPositions(this._cache.result, config);\n    }\n    const result = normalizeXtsConfigImpl(config);\n    this._cache = { key, result };\n    return result;\n  }\n\n  clearCache(): void {\n    this._cache = null;\n  }\n}\n\nconst _DEFAULT_NORMALIZER = new XtsConfigNormalizer();\n\nexport function normalizeXtsConfig(config: XtsConfig): NormalizedXtsConfig {\n  return _DEFAULT_NORMALIZER.normalize(config);\n}\n\n/** Test hook — clears the default normalizer's cache between unit tests. */\nexport function _clearNormalizeCache(): void {\n  _DEFAULT_NORMALIZER.clearCache();\n}\n\nfunction normalizeXtsConfigImpl(config: XtsConfig): NormalizedXtsConfig {\n  const warnings: NormalizationWarning[] = [];\n  const newXpus: ProcessingUnitConfig[] = [];\n\n  // System-wide uniqueness checks for the host-supplied IDs:\n  //   - ProcessingUnitConfig.objectId (the XPU identifier)\n  //   - PartConfig.objectId           (referenced by MoverPositionEntry.partObjectId)\n  //   - ModuleEntry.globalNumber      (referenced by setModuleStatuses(array) index)\n  const seenXpuObjectIds = new Map<number, { xpuPosition: number }>();\n  const seenPartObjectIds = new Map<\n    number,\n    { xpuObjectId: number; partPosition: number }\n  >();\n  const seenModuleGlobalNumbers = new Map<\n    number,\n    { xpuObjectId: number; partObjectId: number; moduleIndex: number }\n  >();\n  for (let xi = 0; xi < config.processingUnits.length; xi++) {\n    const xpu = config.processingUnits[xi]!;\n    const xoid = (xpu as { objectId?: unknown }).objectId;\n    if (xoid === undefined || xoid === null) {\n      warnings.push({\n        code: 'missing-xpu-object-id',\n        message: `XPU at position ${xi} is missing required field 'objectId'.`,\n        details: { xpuPosition: xi },\n      });\n    } else if (!isValidUint32(xoid)) {\n      warnings.push({\n        code: 'invalid-xpu-object-id',\n        message: `XPU at position ${xi} has invalid objectId=${String(xoid)} (must be a non-negative integer ≤ 2^32-1).`,\n        details: { xpuPosition: xi, objectId: xoid },\n      });\n    } else {\n      const prev = seenXpuObjectIds.get(xoid);\n      if (prev) {\n        warnings.push({\n          code: 'duplicate-xpu-object-id',\n          message: `Duplicate XPU.objectId=${xoid} (first at position ${prev.xpuPosition}, again at position ${xi}).`,\n          details: { objectId: xoid, first: prev, second: { xpuPosition: xi } },\n        });\n      } else {\n        seenXpuObjectIds.set(xoid, { xpuPosition: xi });\n      }\n    }\n    const xpuObjectIdForMessages = isValidUint32(xoid) ? xoid : xi;\n    for (let pi = 0; pi < xpu.parts.length; pi++) {\n      const part = xpu.parts[pi]!;\n      const oid = (part as { objectId?: unknown }).objectId;\n      if (oid === undefined || oid === null) {\n        warnings.push({\n          code: 'missing-part-object-id',\n          message: `Part #${part.globalNumber} (XPU ${xpuObjectIdForMessages}, position ${pi}) is missing required field 'objectId'.`,\n          details: { xpuObjectId: xpuObjectIdForMessages, partPosition: pi },\n        });\n      } else if (!isValidUint32(oid)) {\n        warnings.push({\n          code: 'invalid-part-object-id',\n          message: `Part #${part.globalNumber} (XPU ${xpuObjectIdForMessages}, position ${pi}) has invalid objectId=${String(oid)} (must be a non-negative integer ≤ 2^32-1).`,\n          details: { xpuObjectId: xpuObjectIdForMessages, partPosition: pi, objectId: oid },\n        });\n      } else {\n        const prev = seenPartObjectIds.get(oid);\n        if (prev) {\n          warnings.push({\n            code: 'duplicate-part-object-id',\n            message: `Duplicate Part.objectId=${oid} (first at XPU ${prev.xpuObjectId} part ${prev.partPosition}, again at XPU ${xpuObjectIdForMessages} part ${pi}).`,\n            details: { objectId: oid, first: prev, second: { xpuObjectId: xpuObjectIdForMessages, partPosition: pi } },\n          });\n        } else {\n          seenPartObjectIds.set(oid, { xpuObjectId: xpuObjectIdForMessages, partPosition: pi });\n        }\n      }\n      const partObjectIdForMessages = isValidUint32(oid) ? oid : pi;\n      for (let mi = 0; mi < part.modules.length; mi++) {\n        const m = part.modules[mi]!;\n        const gn = (m as { globalNumber?: unknown }).globalNumber;\n        if (gn === undefined || gn === null) {\n          warnings.push({\n            code: 'missing-module-global-number',\n            message: `Module '${m.moduleType}' (XPU ${xpuObjectIdForMessages}, part ${partObjectIdForMessages}, index ${mi}) is missing required field 'globalNumber'.`,\n            details: { xpuObjectId: xpuObjectIdForMessages, partObjectId: partObjectIdForMessages, moduleIndex: mi, moduleType: m.moduleType },\n          });\n        } else if (!isValidUint32(gn)) {\n          warnings.push({\n            code: 'invalid-module-global-number',\n            message: `Module '${m.moduleType}' (XPU ${xpuObjectIdForMessages}, part ${partObjectIdForMessages}, index ${mi}) has invalid globalNumber=${String(gn)} (must be a non-negative integer ≤ 2^32-1).`,\n            details: { xpuObjectId: xpuObjectIdForMessages, partObjectId: partObjectIdForMessages, moduleIndex: mi, globalNumber: gn },\n          });\n        } else {\n          const prev = seenModuleGlobalNumbers.get(gn);\n          if (prev) {\n            warnings.push({\n              code: 'duplicate-module-global-number',\n              message: `Duplicate ModuleEntry.globalNumber=${gn} (first at XPU ${prev.xpuObjectId} part ${prev.partObjectId} module ${prev.moduleIndex}, again at XPU ${xpuObjectIdForMessages} part ${partObjectIdForMessages} module ${mi}).`,\n              details: { globalNumber: gn, first: prev, second: { xpuObjectId: xpuObjectIdForMessages, partObjectId: partObjectIdForMessages, moduleIndex: mi } },\n            });\n          } else {\n            seenModuleGlobalNumbers.set(gn, { xpuObjectId: xpuObjectIdForMessages, partObjectId: partObjectIdForMessages, moduleIndex: mi });\n          }\n        }\n      }\n    }\n  }\n\n  for (const xpu of config.processingUnits) {\n    if (!isKnownMoverType(xpu.moverType)) {\n      throw new XtsViewerErrorException(\n        'unknown-mover-type',\n        `Unknown moverType \"${xpu.moverType}\" in XPU ${xpu.objectId}`,\n        { xpuObjectId: xpu.objectId, moverType: xpu.moverType },\n      );\n    }\n    const newParts: PartConfig[] = [];\n    const partsByOid = new Map<number, PartConfig>();\n    const partTrackLengths = new Map<number, number>();\n\n    for (const part of xpu.parts) {\n      // Merge halves first, then validate.\n      const mergedModules = mergeHalves(part.modules);\n      const newPart: PartConfig = { ...part, modules: mergedModules };\n      warnings.push(...validatePart(newPart));\n      newParts.push(newPart);\n      partsByOid.set(newPart.globalNumber, newPart);\n      partTrackLengths.set(\n        newPart.globalNumber,\n        trackLengthAfterMerge(mergedModules),\n      );\n    }\n\n    const { movers, warnings: moverWarnings } = validateMovers(\n      { ...xpu, parts: newParts },\n      partsByOid,\n      partTrackLengths,\n    );\n    warnings.push(...moverWarnings);\n\n    newXpus.push({ ...xpu, parts: newParts, movers });\n  }\n\n  return {\n    ...config,\n    processingUnits: newXpus,\n    __warnings: warnings,\n  };\n}\n","/**\n * Memoized `normalizeXtsConfig` pass with onError surfacing.\n *\n * Runs the normalization during render itself (useMemo) so errors are\n * captured into a ref and reported via a separate effect — collapses\n * the legacy \"useState + useEffect\" double-render into one.\n */\n\nimport { useEffect, useMemo, useRef } from 'react';\nimport {\n  normalizeXtsConfig,\n  type NormalizedXtsConfig,\n} from '../../geometry/normalizeXtsConfig.js';\nimport {\n  XtsViewerErrorException,\n  type XtsConfig,\n  type XtsViewerError,\n} from '../../types.js';\n\nexport function useNormalizedConfig(\n  config: XtsConfig,\n  onError?: (err: XtsViewerError) => void,\n): NormalizedXtsConfig | null {\n  const errorRef = useRef<XtsViewerError | null>(null);\n\n  const normalized = useMemo<NormalizedXtsConfig | null>(() => {\n    try {\n      errorRef.current = null;\n      return normalizeXtsConfig(config);\n    } catch (err) {\n      errorRef.current =\n        err instanceof XtsViewerErrorException\n          ? { code: err.code, message: err.message, details: err.details }\n          : {\n              code: 'invalid-config',\n              message: (err as Error)?.message ?? String(err),\n              details: err,\n            };\n      return null;\n    }\n  }, [config]);\n\n  useEffect(() => {\n    if (errorRef.current && onError) {\n      onError(errorRef.current);\n    }\n  }, [normalized, onError]);\n\n  return normalized;\n}\n","/**\n * Beckhoff XTS coordinate-convention transform.\n *\n * The Beckhoff XTS `OriginTransform` parameter uses a Y-axis sign that is\n * opposite to the viewer's right-handed Z-up world frame. When\n * `coordinateSystem === 'beckhoff-xts'`, this module negates:\n *\n *   - `PartTransformation.offsetMm[1]`        (Y translation)\n *   - `PartTransformation.rotationDegEuler[2]` (Z-Euler rotation)\n *   - `TrackTransform.positionMm[1]`           (Y translation)\n *   - `TrackTransform.rotationDegEuler[2]`     (Z-Euler rotation)\n *\n * Applied as a post-normalization pass so every downstream consumer\n * (rendering, imperative API, bounding-box) sees the corrected values.\n */\n\nimport type { NormalizedXtsConfig } from './normalizeXtsConfig.js';\nimport type {\n  PartTransformation,\n  TrackTransform,\n  Vec3,\n} from '../types.js';\n\nconst negateY = ([x, y, z]: Vec3): Vec3 => [x, -y, z];\nconst negateZEuler = ([rx, ry, rz]: Vec3): Vec3 => [rx, ry, -rz];\n\nfunction flipPartTransformation(\n  pt: PartTransformation | undefined,\n): PartTransformation | undefined {\n  if (!pt) return pt;\n  const out: PartTransformation = { ...pt };\n  if (pt.offsetMm) out.offsetMm = negateY(pt.offsetMm);\n  if (pt.rotationDegEuler) out.rotationDegEuler = negateZEuler(pt.rotationDegEuler);\n  return out;\n}\n\nfunction flipTrackTransform(\n  tt: TrackTransform | undefined,\n): TrackTransform | undefined {\n  if (!tt) return tt;\n  const out: TrackTransform = { ...tt };\n  if (tt.positionMm) out.positionMm = negateY(tt.positionMm);\n  if (tt.rotationDegEuler) out.rotationDegEuler = negateZEuler(tt.rotationDegEuler);\n  return out;\n}\n\nexport function applyBeckhoffXtsConvention(\n  config: NormalizedXtsConfig,\n): NormalizedXtsConfig {\n  return {\n    ...config,\n    processingUnits: config.processingUnits.map((xpu) => ({\n      ...xpu,\n      trackTransform: flipTrackTransform(xpu.trackTransform),\n      parts: xpu.parts.map((part) => ({\n        ...part,\n        partTransformation: flipPartTransformation(part.partTransformation),\n      })),\n    })),\n  };\n}\n","/**\n * SelectionManager — pure state container for the viewer's selection.\n *\n * The XtsViewer3D owns a SelectionManager instance internally and exposes\n * selection updates through the controlled `selection` prop and the\n * `onSelectionChange` callback.\n *\n * Selection modes:\n *   - Off    → ignore clicks\n *   - Single → click replaces selection with one item\n *   - Multi  → ctrl/meta-click adds, shift-click range-selects (modules\n *             within the same part only)\n *\n * Range-select is module-only. For movers, shift-click behaves as a\n * plain replacing click — there is no natural \"range\" along the mover\n * list. Use ctrl/meta for additive mover selection.\n */\n\nimport type {\n  ModuleRef,\n  MoverRef,\n  SelectionMode,\n  SelectionState,\n} from '../types.js';\n\nexport type ClickModifiers = {\n  ctrl?: boolean;\n  shift?: boolean;\n  meta?: boolean;\n};\n\nexport const EMPTY_SELECTION: SelectionState = Object.freeze({\n  modules: [],\n  movers: [],\n});\n\nconst moduleKey = (m: ModuleRef) =>\n  `${m.processingUnitObjectId}/${m.partObjectId}/${m.moduleIndex}`;\n\nconst moverKey = (m: MoverRef) =>\n  `${m.processingUnitObjectId}/${m.moverIndex}`;\n\nexport function isModuleSelected(\n  selection: SelectionState,\n  ref: ModuleRef,\n): boolean {\n  return selection.modules.some(\n    (m) =>\n      m.processingUnitObjectId === ref.processingUnitObjectId &&\n      m.partObjectId === ref.partObjectId &&\n      m.moduleIndex === ref.moduleIndex,\n  );\n}\n\nexport function isMoverSelected(\n  selection: SelectionState,\n  ref: MoverRef,\n): boolean {\n  return selection.movers.some(\n    (m) =>\n      m.processingUnitObjectId === ref.processingUnitObjectId &&\n      m.moverIndex === ref.moverIndex,\n  );\n}\n\nexport function deselectAll(): SelectionState {\n  return EMPTY_SELECTION;\n}\n\nexport function applyModuleClick(\n  selection: SelectionState,\n  ref: ModuleRef,\n  mode: SelectionMode,\n  modifiers: ClickModifiers = {},\n): SelectionState {\n  if (mode === 'Off') return selection;\n  if (mode === 'Single') {\n    return { modules: [ref], movers: [] };\n  }\n  // Multi\n  const additive = modifiers.ctrl || modifiers.meta;\n  if (modifiers.shift) {\n    return rangeSelectModules(selection, ref);\n  }\n  if (additive) {\n    return toggleModuleInSelection(selection, ref);\n  }\n  // Plain click in Multi mode = replace.\n  return { modules: [ref], movers: [] };\n}\n\nexport function applyMoverClick(\n  selection: SelectionState,\n  ref: MoverRef,\n  mode: SelectionMode,\n  modifiers: ClickModifiers = {},\n): SelectionState {\n  if (mode === 'Off') return selection;\n  if (mode === 'Single') {\n    return { modules: [], movers: [ref] };\n  }\n  const additive = modifiers.ctrl || modifiers.meta;\n  if (additive) {\n    return toggleMoverInSelection(selection, ref);\n  }\n  return { modules: [], movers: [ref] };\n}\n\nexport function applyEmptyClick(\n  selection: SelectionState,\n  mode: SelectionMode,\n): SelectionState {\n  if (mode === 'Off') return selection;\n  return EMPTY_SELECTION;\n}\n\nfunction toggleModuleInSelection(\n  selection: SelectionState,\n  ref: ModuleRef,\n): SelectionState {\n  if (isModuleSelected(selection, ref)) {\n    return {\n      ...selection,\n      modules: selection.modules.filter((m) => moduleKey(m) !== moduleKey(ref)),\n    };\n  }\n  return { ...selection, modules: [...selection.modules, ref] };\n}\n\nfunction toggleMoverInSelection(\n  selection: SelectionState,\n  ref: MoverRef,\n): SelectionState {\n  if (isMoverSelected(selection, ref)) {\n    return {\n      ...selection,\n      movers: selection.movers.filter((m) => moverKey(m) !== moverKey(ref)),\n    };\n  }\n  return { ...selection, movers: [...selection.movers, ref] };\n}\n\n/**\n * Range-select within the most recently selected part: extend the selection\n * to cover all modules from the previous selection's lowest moduleIndex to\n * the new ref's moduleIndex (within the same part).\n *\n * If the selection is empty or spans different parts, falls back to a\n * single-target replace.\n */\nfunction rangeSelectModules(\n  selection: SelectionState,\n  ref: ModuleRef,\n): SelectionState {\n  if (selection.modules.length === 0) {\n    return { modules: [ref], movers: [] };\n  }\n  const last = selection.modules[selection.modules.length - 1]!;\n  if (\n    last.processingUnitObjectId !== ref.processingUnitObjectId ||\n    last.partObjectId !== ref.partObjectId\n  ) {\n    return { modules: [ref], movers: [] };\n  }\n  const lo = Math.min(last.moduleIndex, ref.moduleIndex);\n  const hi = Math.max(last.moduleIndex, ref.moduleIndex);\n  const range: ModuleRef[] = [];\n  for (let i = lo; i <= hi; i++) {\n    range.push({\n      processingUnitObjectId: ref.processingUnitObjectId,\n      partObjectId: ref.partObjectId,\n      moduleIndex: i,\n    });\n  }\n  // Preserve modules from OTHER parts in the previous selection; replace this\n  // part's selection with the new range.\n  const otherParts = selection.modules.filter(\n    (m) =>\n      m.processingUnitObjectId !== ref.processingUnitObjectId ||\n      m.partObjectId !== ref.partObjectId,\n  );\n  return { modules: [...otherParts, ...range], movers: [] };\n}\n","/**\n * Selection state machine: controlled-or-internal selection plus click\n * handlers (module / mover / empty-canvas). Hoisted out of XtsViewer3D so\n * the host component reads as a flat dependency-injection of props →\n * sub-features.\n */\n\nimport { useCallback, useMemo, useState } from 'react';\nimport {\n  EMPTY_SELECTION,\n  applyEmptyClick,\n  applyModuleClick,\n  applyMoverClick,\n} from '../../interaction/SelectionManager.js';\nimport type {\n  ModuleRef,\n  MoverRef,\n  SelectionMode,\n  SelectionState,\n} from '../../types.js';\n\nexport interface UseSelectionStateProps {\n  /** Controlled selection. When supplied, internal state is bypassed. */\n  selection?: SelectionState;\n  selectionMode?: SelectionMode;\n  selectionLocked?: boolean;\n  onSelectionChange?: (s: SelectionState) => void;\n  onModuleClick?: (ref: ModuleRef) => void;\n  onMoverClick?: (ref: MoverRef) => void;\n}\n\nexport interface SelectionHandles {\n  effectiveSelection: SelectionState;\n  selectionMode: SelectionMode;\n  handleModuleClick: (\n    ref: ModuleRef,\n    e: { nativeEvent?: MouseEvent },\n  ) => void;\n  handleMoverClick: (\n    ref: MoverRef,\n    e: { nativeEvent?: MouseEvent },\n  ) => void;\n  handlePointerMissed: () => void;\n}\n\nexport function useSelectionState(\n  props: UseSelectionStateProps,\n): SelectionHandles {\n  const [internal, setInternal] = useState<SelectionState>(EMPTY_SELECTION);\n  const selectionMode: SelectionMode = props.selectionMode ?? 'Off';\n  const isControlled = props.selection !== undefined;\n  const effectiveSelection = isControlled\n    ? (props.selection as SelectionState)\n    : internal;\n\n  const updateSelection = useCallback(\n    (next: SelectionState) => {\n      if (!isControlled) setInternal(next);\n      props.onSelectionChange?.(next);\n    },\n    [isControlled, props.onSelectionChange],\n  );\n\n  const handleModuleClick = useMemo(\n    () => (ref: ModuleRef, e: { nativeEvent?: MouseEvent }) => {\n      if (props.selectionLocked) return;\n      const ev = e.nativeEvent;\n      const next = applyModuleClick(effectiveSelection, ref, selectionMode, {\n        ctrl: ev?.ctrlKey,\n        shift: ev?.shiftKey,\n        meta: ev?.metaKey,\n      });\n      updateSelection(next);\n      props.onModuleClick?.(ref);\n    },\n    [\n      effectiveSelection,\n      selectionMode,\n      props.selectionLocked,\n      props.onModuleClick,\n      updateSelection,\n    ],\n  );\n\n  const handleMoverClick = useMemo(\n    () => (ref: MoverRef, e: { nativeEvent?: MouseEvent }) => {\n      if (props.selectionLocked) return;\n      const ev = e.nativeEvent;\n      const next = applyMoverClick(effectiveSelection, ref, selectionMode, {\n        ctrl: ev?.ctrlKey,\n        shift: ev?.shiftKey,\n        meta: ev?.metaKey,\n      });\n      updateSelection(next);\n      props.onMoverClick?.(ref);\n    },\n    [\n      effectiveSelection,\n      selectionMode,\n      props.selectionLocked,\n      props.onMoverClick,\n      updateSelection,\n    ],\n  );\n\n  const handlePointerMissed = useCallback(() => {\n    if (props.selectionLocked) return;\n    const next = applyEmptyClick(effectiveSelection, selectionMode);\n    if (next !== effectiveSelection) {\n      updateSelection(next);\n    }\n  }, [\n    effectiveSelection,\n    selectionMode,\n    props.selectionLocked,\n    updateSelection,\n  ]);\n\n  return {\n    effectiveSelection,\n    selectionMode,\n    handleModuleClick,\n    handleMoverClick,\n    handlePointerMissed,\n  };\n}\n","/**\n * Pure helpers for composing per-XPU `trackTransform` and root\n * `XtsConfig.orientation` into Three.js Matrix4 instances. Lives in geometry/\n * so the component layer (XtsViewer3D, XtsScene) and the test suite share a\n * single source of truth — no duplicated math.\n *\n * Composition order:\n *\n *     world = orientation ⊗ trackTransform ⊗ partTransformation ⊗ chain\n *\n * `partTransformation` is applied inside the per-XPU group by XtsScene, so\n * the helpers here only cover the outermost two layers.\n */\n\nimport { Euler, Matrix4, Quaternion, Vector3 } from 'three';\nimport type {\n  Orientation,\n  PartTransformation,\n  TrackTransform,\n} from '../types.js';\n\nconst DEG2RAD = Math.PI / 180;\n\n/**\n * Default Z lift for a track that does not specify `positionMm`. The XTS\n * track sits on a base plate / table top in real installations, so 0 mm\n * (= floor) is rarely what the user wants. 200 mm matches the standard\n * Beckhoff table height used throughout the demo configs and renders\n * correctly under the default shadow-casting ground plane.\n */\nexport const DEFAULT_TRACK_Z_MM = 200;\n\n/** Build the Matrix4 of the root orientation (defaults to identity). */\nexport function orientationMatrix(o: Orientation | undefined): Matrix4 {\n  if (!o) return new Matrix4();\n  const pos = o.positionMm ?? [0, 0, 0];\n  const rot = o.rotationDegEuler ?? [0, 0, 0];\n  return new Matrix4().compose(\n    new Vector3(pos[0], pos[1], pos[2]),\n    new Quaternion().setFromEuler(\n      new Euler(rot[0] * DEG2RAD, rot[1] * DEG2RAD, rot[2] * DEG2RAD, 'XYZ'),\n    ),\n    new Vector3(1, 1, 1),\n  );\n}\n\n/**\n * Build the Matrix4 for a per-XPU `trackTransform`. Uniform scale only —\n * non-uniform would distort path radii and break GLB lighting.\n *\n * When `positionMm` is omitted (or `tt` itself is null/undefined), the\n * track lifts to `DEFAULT_TRACK_Z_MM` in Z so it sits on a notional\n * table top rather than the floor.\n */\nexport function trackTransformMatrix(\n  tt: TrackTransform | null | undefined,\n): Matrix4 {\n  if (!tt) return new Matrix4().makeTranslation(0, 0, DEFAULT_TRACK_Z_MM);\n  const pos = tt.positionMm ?? [0, 0, DEFAULT_TRACK_Z_MM];\n  const rot = tt.rotationDegEuler ?? [0, 0, 0];\n  const s = tt.scaleUniform ?? 1;\n  return new Matrix4().compose(\n    new Vector3(pos[0], pos[1], pos[2]),\n    new Quaternion().setFromEuler(\n      new Euler(rot[0] * DEG2RAD, rot[1] * DEG2RAD, rot[2] * DEG2RAD, 'XYZ'),\n    ),\n    new Vector3(s, s, s),\n  );\n}\n\n/**\n * Build the Matrix4 for a `PartTransformation`. Returns identity when\n * `pt` is null/undefined — parts without an explicit transform sit in\n * their XPU's track-transform frame.\n */\nexport function partTransformationMatrix(\n  pt: PartTransformation | null | undefined,\n): Matrix4 {\n  if (!pt) return new Matrix4();\n  const pos = pt.offsetMm ?? [0, 0, 0];\n  const rot = pt.rotationDegEuler ?? [0, 0, 0];\n  return new Matrix4().compose(\n    new Vector3(pos[0], pos[1], pos[2]),\n    new Quaternion().setFromEuler(\n      new Euler(rot[0] * DEG2RAD, rot[1] * DEG2RAD, rot[2] * DEG2RAD, 'XYZ'),\n    ),\n    new Vector3(1, 1, 1),\n  );\n}\n\n/**\n * Compose orientation ⊗ trackTransform — returns the world-frame matrix\n * applied to the entire XPU subtree (modules + movers + tools + stations +\n * info bars + mover-bound custom assets).\n */\nexport function composeWorldMatrix(\n  orientation: Orientation | undefined,\n  trackTransform: TrackTransform | null | undefined,\n): Matrix4 {\n  return new Matrix4()\n    .copy(orientationMatrix(orientation))\n    .multiply(trackTransformMatrix(trackTransform));\n}\n\n/**\n * Compose orientation ⊗ trackTransform ⊗ partTransformation — the full\n * world-frame matrix applied to a point sampled in the part's chain frame.\n * Equivalent to `composeWorldMatrix` followed by the part transform.\n */\nexport function composePartWorldMatrix(\n  orientation: Orientation | undefined,\n  trackTransform: TrackTransform | null | undefined,\n  partTransformation: PartTransformation | null | undefined,\n): Matrix4 {\n  return new Matrix4()\n    .copy(composeWorldMatrix(orientation, trackTransform))\n    .multiply(partTransformationMatrix(partTransformation));\n}\n","{\"moduleType\": \"AT2050_180_Combined\", \"comment\": \"Combined 180 degree U-turn = AT2050-0500 + AT2050-0501 chained. Coordinates in mm, 2D Y-axis DOWN, sampling 0.1mm.\", \"lengthMm\": 500.0, \"samplingMm\": 0.1, \"axisYDirection\": \"down\", \"halves\": [\"AT2050_0500\", \"AT2050_0501\"], \"points\": [[0.0, 0.0], [0.1, 0.0], [0.2, 0.0], [0.3, 0.0], [0.4, 0.0], [0.5, 0.0], [0.6, 0.0], [0.7, 0.0], [0.8, 0.0], [0.9, 0.0], [1.0, 0.0], [1.1, 0.0], [1.2, 0.0], [1.3, 0.0], [1.4, 0.0], [1.5, 0.0], [1.6, 1e-07], [1.7, 1e-07], [1.8, 1e-07], [1.9, 1e-07], [2.0, 2e-07], [2.1, 2e-07], [2.2, 3e-07], [2.3, 4e-07], [2.4, 5e-07], [2.5, 6e-07], [2.6, 7e-07], [2.7, 9e-07], [2.8, 1e-06], [2.9, 1.2e-06], [3.0, 1.5e-06], [3.1, 1.7e-06], [3.2, 2e-06], [3.3, 2.4e-06], [3.4, 2.8e-06], [3.5, 3.2e-06], [3.6, 3.7e-06], [3.7, 4.2e-06], [3.8, 4.8e-06], [3.9, 5.5e-06], [4.0, 6.2e-06], [4.1, 7e-06], [4.2, 7.9e-06], [4.3, 8.9e-06], [4.4, 1e-05], [4.5, 1.11e-05], [4.6, 1.24e-05], [4.7, 1.38e-05], [4.8, 1.53e-05], [4.9, 1.69e-05], [5.0, 1.87e-05], [5.1, 2.07e-05], [5.2, 2.27e-05], [5.3, 2.5e-05], [5.4, 2.74e-05], [5.5, 3e-05], [5.6, 3.28e-05], [5.7, 3.58e-05], [5.8, 3.9e-05], [5.9, 4.24e-05], [6.0, 4.61e-05], [6.099999999, 5e-05], [6.199999999, 5.41e-05], [6.299999999, 5.86e-05], [6.399999999, 6.33e-05], [6.499999999, 6.83e-05], [6.599999999, 7.36e-05], [6.699999999, 7.93e-05], [6.799999999, 8.53e-05], [6.899999998, 9.16e-05], [6.999999998, 9.83e-05], [7.099999998, 0.0001054], [7.199999998, 0.0001129], [7.299999997, 0.0001209], [7.399999997, 0.0001292], [7.499999997, 0.000138], [7.599999996, 0.0001473], [7.699999996, 0.000157], [7.799999995, 0.0001673], [7.899999995, 0.0001781], [7.999999994, 0.0001894], [8.099999993, 0.0002013], [8.199999992, 0.0002138], [8.299999992, 0.0002268], [8.399999991, 0.0002405], [8.49999999, 0.0002549], [8.599999988, 0.0002699], [8.699999987, 0.0002856], [8.799999986, 0.000302], [8.899999984, 0.0003192], [8.999999983, 0.0003371], [9.099999981, 0.0003558], [9.199999979, 0.0003753], [9.299999977, 0.0003957], [9.399999975, 0.0004169], [9.499999972, 0.000439], [9.59999997, 0.000462], [9.699999967, 0.000486], [9.799999964, 0.0005109], [9.89999996, 0.0005368], [9.999999957, 0.0005638], [10.09999995, 0.0005918], [10.19999995, 0.0006209], [10.29999994, 0.0006511], [10.39999994, 0.0006825], [10.49999993, 0.0007151], [10.59999993, 0.0007488], [10.69999992, 0.0007838], [10.79999992, 0.0008201], [10.89999991, 0.0008577], [10.9999999, 0.0008967], [11.09999989, 0.000937], [11.19999988, 0.0009787], [11.29999987, 0.0010219], [11.39999986, 0.0010666], [11.49999985, 0.0011128], [11.59999984, 0.0011606], [11.69999983, 0.0012099], [11.79999982, 0.0012609], [11.8999998, 0.0013136], [11.99999979, 0.001368], [12.09999977, 0.0014242], [12.19999976, 0.0014821], [12.29999974, 0.0015419], [12.39999972, 0.0016036], [12.4999997, 0.0016672], [12.59999968, 0.0017327], [12.69999965, 0.0018003], [12.79999963, 0.0018699], [12.8999996, 0.0019416], [12.99999958, 0.0020155], [13.09999955, 0.0020916], [13.19999952, 0.0021699], [13.29999949, 0.0022504], [13.39999945, 0.0023333], [13.49999941, 0.0024186], [13.59999938, 0.0025063], [13.69999934, 0.0025965], [13.79999929, 0.0026892], [13.89999925, 0.0027845], [13.9999992, 0.0028825], [14.09999915, 0.0029831], [14.1999991, 0.0030864], [14.29999904, 0.0031925], [14.39999898, 0.0033015], [14.49999892, 0.0034133], [14.59999885, 0.0035281], [14.69999878, 0.0036459], [14.79999871, 0.0037668], [14.89999863, 0.0038908], [14.99999855, 0.0040179], [15.09999847, 0.0041483], [15.19999838, 0.004282], [15.29999828, 0.004419], [15.39999818, 0.0045595], [15.49999808, 0.0047034], [15.59999797, 0.0048508], [15.69999786, 0.0050018], [15.79999774, 0.0051565], [15.89999761, 0.0053148], [15.99999748, 0.005477], [16.09999734, 0.005643], [16.1999972, 0.0058129], [16.29999705, 0.0059868], [16.39999689, 0.0061647], [16.49999672, 0.0063467], [16.59999655, 0.0065329], [16.69999637, 0.0067233], [16.79999618, 0.0069181], [16.89999598, 0.0071172], [16.99999577, 0.0073207], [17.09999556, 0.0075288], [17.19999533, 0.0077414], [17.2999951, 0.0079587], [17.39999485, 0.0081807], [17.49999459, 0.0084076], [17.59999432, 0.0086393], [17.69999404, 0.0088759], [17.79999375, 0.0091176], [17.89999345, 0.0093643], [17.99999313, 0.0096163], [18.0999928, 0.0098735], [18.19999245, 0.010136], [18.2999921, 0.0104039], [18.39999172, 0.0106772], [18.49999133, 0.0109562], [18.59999093, 0.0112408], [18.69999051, 0.0115311], [18.79999007, 0.0118272], [18.89998961, 0.0121291], [18.99998914, 0.0124371], [19.09998865, 0.012751], [19.19998813, 0.0130711], [19.2999876, 0.0133974], [19.39998705, 0.01373], [19.49998647, 0.014069], [19.59998588, 0.0144145], [19.69998526, 0.0147665], [19.79998461, 0.0151251], [19.89998395, 0.0154904], [19.99998325, 0.0158626], [20.09998253, 0.0162417], [20.19998179, 0.0166277], [20.29998102, 0.0170208], [20.39998022, 0.0174211], [20.49997939, 0.0178287], [20.59997852, 0.0182436], [20.69997763, 0.0186659], [20.79997671, 0.0190958], [20.89997575, 0.0195333], [20.99997476, 0.0199786], [21.09997373, 0.0204316], [21.19997267, 0.0208926], [21.29997157, 0.0213616], [21.39997043, 0.0218387], [21.49996926, 0.0223239], [21.59996804, 0.0228175], [21.69996678, 0.0233195], [21.79996547, 0.02383], [21.89996413, 0.024349], [21.99996274, 0.0248768], [22.0999613, 0.0254134], [22.19995981, 0.0259588], [22.29995827, 0.0265133], [22.39995668, 0.0270768], [22.49995504, 0.0276496], [22.59995335, 0.0282317], [22.6999516, 0.0288231], [22.79994979, 0.0294241], [22.89994793, 0.0300347], [22.999946, 0.0306551], [23.09994402, 0.0312852], [23.19994197, 0.0319253], [23.29993986, 0.0325755], [23.39993768, 0.0332358], [23.49993543, 0.0339064], [23.59993311, 0.0345873], [23.69993072, 0.0352788], [23.79992825, 0.0359808], [23.89992571, 0.0366935], [23.9999231, 0.0374171], [24.0999204, 0.0381515], [24.19991762, 0.038897], [24.29991476, 0.0396537], [24.39991181, 0.0404216], [24.49990877, 0.0412009], [24.59990565, 0.0419918], [24.69990243, 0.0427942], [24.79989911, 0.0436083], [24.8998957, 0.0444343], [24.99989219, 0.0452723], [25.09988858, 0.0461223], [25.19988486, 0.0469845], [25.29988104, 0.0478591], [25.3998771, 0.048746], [25.49987306, 0.0496456], [25.59986889, 0.0505578], [25.69986462, 0.0514828], [25.79986022, 0.0524207], [25.8998557, 0.0533716], [25.99985105, 0.0543358], [26.09984627, 0.0553132], [26.19984136, 0.056304], [26.29983632, 0.0573083], [26.39983114, 0.0583263], [26.49982581, 0.0593581], [26.59982035, 0.0604038], [26.69981473, 0.0614635], [26.79980897, 0.0625373], [26.89980304, 0.0636255], [26.99979697, 0.0647281], [27.09979073, 0.0658452], [27.19978432, 0.066977], [27.29977775, 0.0681235], [27.399771, 0.069285], [27.49976408, 0.0704616], [27.59975698, 0.0716534], [27.69974969, 0.0728604], [27.79974222, 0.074083], [27.89973455, 0.0753211], [27.99972669, 0.0765749], [28.09971863, 0.0778446], [28.19971037, 0.0791302], [28.29970189, 0.080432], [28.39969321, 0.08175], [28.4996843, 0.0830844], [28.59967518, 0.0844353], [28.69966583, 0.0858029], [28.79965624, 0.0871873], [28.89964643, 0.0885886], [28.99963637, 0.0900069], [29.09962606, 0.0914425], [29.19961551, 0.0928954], [29.29960469, 0.0943658], [29.39959362, 0.0958538], [29.49958229, 0.0973596], [29.59957068, 0.0988833], [29.69955879, 0.100425], [29.79954663, 0.1019848], [29.89953417, 0.103563], [29.99952142, 0.1051597], [30.09950838, 0.106775], [30.19949503, 0.108409], [30.29948136, 0.1100619], [30.39946739, 0.1117338], [30.49945309, 0.1134249], [30.59943846, 0.1151353], [30.69942349, 0.1168652], [30.79940819, 0.1186147], [30.89939254, 0.1203839], [30.99937653, 0.1221731], [31.09936016, 0.1239823], [31.19934343, 0.1258116], [31.29932632, 0.1276613], [31.39930883, 0.1295315], [31.49929095, 0.1314224], [31.59927268, 0.133334], [31.699254, 0.1352665], [31.79923492, 0.1372201], [31.89921542, 0.139195], [31.99919549, 0.1411912], [32.09917513, 0.1432089], [32.19915433, 0.1452483], [32.29913309, 0.1473096], [32.39911138, 0.1493928], [32.49908922, 0.1514981], [32.59906658, 0.1536257], [32.69904347, 0.1557758], [32.79901986, 0.1579484], [32.89899576, 0.1601438], [32.99897115, 0.162362], [33.09894603, 0.1646033], [33.19892039, 0.1668678], [33.29889422, 0.1691557], [33.3988675, 0.171467], [33.49884024, 0.173802], [33.59881241, 0.1761608], [33.69878402, 0.1785436], [33.79875505, 0.1809505], [33.89872549, 0.1833816], [33.99869534, 0.1858372], [34.09866458, 0.1883174], [34.1986332, 0.1908224], [34.29860119, 0.1933522], [34.39856855, 0.1959071], [34.49853526, 0.1984872], [34.59850131, 0.2010927], [34.69846669, 0.2037237], [34.79843139, 0.2063804], [34.89839541, 0.209063], [34.99835872, 0.2117716], [35.09832132, 0.2145063], [35.19828319, 0.2172674], [35.29824433, 0.2200549], [35.39820472, 0.2228691], [35.49816436, 0.2257101], [35.59812322, 0.2285781], [35.69808131, 0.2314732], [35.7980386, 0.2343955], [35.89799508, 0.2373454], [35.99795074, 0.2403228], [36.09790558, 0.243328], [36.19785957, 0.2463611], [36.2978127, 0.2494223], [36.39776496, 0.2525118], [36.49771635, 0.2556297], [36.59766683, 0.2587762], [36.69761641, 0.2619514], [36.79756506, 0.2651555], [36.89751278, 0.2683887], [36.99745955, 0.2716512], [37.09740535, 0.274943], [37.19735018, 0.2782644], [37.29729402, 0.2816155], [37.39723684, 0.2849964], [37.49717865, 0.2884075], [37.59711942, 0.2918487], [37.69705914, 0.2953203], [37.7969978, 0.2988225], [37.89693537, 0.3023554], [37.99687185, 0.3059191], [38.09680722, 0.3095139], [38.19674145, 0.3131399], [38.29667455, 0.3167973], [38.39660649, 0.3204862], [38.49653725, 0.3242068], [38.59646682, 0.3279592], [38.69639518, 0.3317437], [38.79632232, 0.3355604], [38.89624822, 0.3394094], [38.99617285, 0.343291], [39.09609622, 0.3472053], [39.19601829, 0.3511524], [39.29593905, 0.3551325], [39.39585848, 0.3591459], [39.49577657, 0.3631926], [39.59569329, 0.3672728], [39.69560863, 0.3713868], [39.79552257, 0.3755346], [39.89543509, 0.3797164], [39.99534618, 0.3839324], [40.09525581, 0.3881828], [40.19516397, 0.3924677], [40.29507063, 0.3967873], [40.39497577, 0.4011418], [40.49487939, 0.4055313], [40.59478145, 0.409956], [40.69468194, 0.414416], [40.79458084, 0.4189116], [40.89447812, 0.4234429], [40.99437377, 0.4280101], [41.09426776, 0.4326133], [41.19416008, 0.4372527], [41.29405071, 0.4419285], [41.39393962, 0.4466408], [41.49382679, 0.4513899], [41.5937122, 0.4561758], [41.69359582, 0.4609987], [41.79347765, 0.4658589], [41.89335765, 0.4707564], [41.9932358, 0.4756915], [42.09311208, 0.4806643], [42.19298646, 0.485675], [42.29285893, 0.4907237], [42.39272946, 0.4958106], [42.49259803, 0.5009359], [42.59246461, 0.5060998], [42.69232919, 0.5113024], [42.79219173, 0.5165439], [42.89205221, 0.5218244], [42.99191061, 0.5271442], [43.0917669, 0.5325033], [43.19162106, 0.537902], [43.29147307, 0.5433404], [43.3913229, 0.5488187], [43.49117052, 0.5543371], [43.59101591, 0.5598957], [43.69085904, 0.5654947], [43.79069989, 0.5711342], [43.89053844, 0.5768145], [43.99037464, 0.5825357], [44.09020849, 0.5882979], [44.19003995, 0.5941013], [44.28986899, 0.5999461], [44.38969559, 0.6058325], [44.48951972, 0.6117606], [44.58934136, 0.6177306], [44.68916047, 0.6237427], [44.78897703, 0.629797], [44.88879101, 0.6358936], [44.98860238, 0.6420328], [45.08841112, 0.6482148], [45.18821719, 0.6544396], [45.28802056, 0.6607075], [45.38782121, 0.6670185], [45.48761911, 0.673373], [45.58741423, 0.679771], [45.68720653, 0.6862127], [45.786996, 0.6926983], [45.88678259, 0.6992279], [45.98656628, 0.7058017], [46.08634704, 0.7124199], [46.18612483, 0.7190826], [46.28589963, 0.72579], [46.3856714, 0.7325423], [46.48544012, 0.7393396], [46.58520575, 0.746182], [46.68496826, 0.7530698], [46.78472761, 0.7600032], [46.88448378, 0.7669821], [46.98423674, 0.774007], [47.08398644, 0.7810778], [47.18373286, 0.7881947], [47.28347597, 0.795358], [47.38321572, 0.8025678], [47.4829521, 0.8098242], [47.58268506, 0.8171274], [47.68241457, 0.8244775], [47.78214059, 0.8318748], [47.8818631, 0.8393194], [47.98158205, 0.8468114], [48.08129742, 0.854351], [48.18100916, 0.8619384], [48.28071724, 0.8695737], [48.38042163, 0.8772571], [48.48012229, 0.8849887], [48.57981919, 0.8927687], [48.67951229, 0.9005973], [48.77920155, 0.9084745], [48.87888693, 0.9164007], [48.97856841, 0.9243758], [49.07824593, 0.9324002], [49.17791948, 0.9404739], [49.277589, 0.9485971], [49.37725446, 0.95677], [49.47691583, 0.9649926], [49.57657305, 0.9732652], [49.67622611, 0.981588], [49.77587496, 0.989961], [49.87551955, 0.9983845], [49.97515986, 1.0068585], [50.07479583, 1.0153833], [50.17442744, 1.0239589], [50.27405465, 1.0325856], [50.3736774, 1.0412636], [50.47329568, 1.0499928], [50.57290942, 1.0587736], [50.6725186, 1.067606], [50.77212317, 1.0764902], [50.87172309, 1.0854264], [50.97131832, 1.0944147], [51.07090882, 1.1034552], [51.17049456, 1.1125482], [51.27007547, 1.1216937], [51.36965154, 1.1308919], [51.4692227, 1.140143], [51.56878893, 1.1494471], [51.66835018, 1.1588043], [51.7679064, 1.1682149], [51.86745755, 1.1776789], [51.9670036, 1.1871965], [52.06654449, 1.1967678], [52.16608019, 1.206393], [52.26561064, 1.2160723], [52.36513582, 1.2258058], [52.46465566, 1.2355935], [52.56417013, 1.2454358], [52.66367919, 1.2553326], [52.76318278, 1.2652842], [52.86268087, 1.2752908], [52.9621734, 1.2853523], [53.06166034, 1.2954691], [53.16114164, 1.3056412], [53.26061725, 1.3158687], [53.36008712, 1.3261519], [53.45955122, 1.3364908], [53.55900949, 1.3468856], [53.65846189, 1.3573365], [53.75790836, 1.3678435], [53.85734888, 1.3784069], [53.95678338, 1.3890267], [54.05621181, 1.3997031], [54.15563415, 1.4104362], [54.25505032, 1.4212262], [54.35446029, 1.4320731], [54.45386402, 1.4429773], [54.55326144, 1.4539387], [54.65265251, 1.4649575], [54.75203719, 1.4760338], [54.85141542, 1.4871678], [54.95078716, 1.4983597], [55.05015236, 1.5096095], [55.14951096, 1.5209173], [55.24886292, 1.5322834], [55.34820819, 1.5437078], [55.44754672, 1.5551907], [55.54687845, 1.5667322], [55.64620334, 1.5783324], [55.74552134, 1.5899915], [55.8448324, 1.6017096], [55.94413646, 1.6134868], [56.04343348, 1.6253233], [56.1427234, 1.6372192], [56.24200618, 1.6491745], [56.34128175, 1.6611895], [56.44055008, 1.6732642], [56.5398111, 1.6853989], [56.63906476, 1.6975935], [56.73831102, 1.7098483], [56.83754982, 1.7221634], [56.93678111, 1.7345388], [57.03600483, 1.7469747], [57.13522094, 1.7594713], [57.23442938, 1.7720286], [57.33363009, 1.7846468], [57.43282302, 1.7973259], [57.53200813, 1.8100662], [57.63118535, 1.8228677], [57.73035463, 1.8357306], [57.82951592, 1.8486549], [57.92866916, 1.8616409], [58.0278143, 1.8746885], [58.12695128, 1.8877979], [58.22608006, 1.9009693], [58.32520057, 1.9142028], [58.42431276, 1.9274984], [58.52341658, 1.9408563], [58.62251196, 1.9542766], [58.72159886, 1.9677594], [58.82067722, 1.9813048], [58.91974698, 1.994913], [59.01880809, 2.008584], [59.11786048, 2.022318], [59.21690412, 2.036115], [59.31593893, 2.0499752], [59.41496486, 2.0638987], [59.51398186, 2.0778857], [59.61298987, 2.0919361], [59.71198883, 2.1060501], [59.81097869, 2.1202278], [59.90995938, 2.1344694], [60.00893085, 2.1487749], [60.10789305, 2.1631444], [60.20684591, 2.1775781], [60.30578938, 2.192076], [60.4047234, 2.2066382], [60.50364792, 2.2212649], [60.60256286, 2.2359562], [60.70146819, 2.2507121], [60.80036383, 2.2655327], [60.89924973, 2.2804182], [60.99812583, 2.2953687], [61.09699207, 2.3103842], [61.1958484, 2.3254649], [61.29469475, 2.3406108], [61.39353107, 2.355822], [61.4923573, 2.3710987], [61.59117337, 2.3864409], [61.68997923, 2.4018487], [61.78877482, 2.4173223], [61.88756007, 2.4328617], [61.98633494, 2.448467], [62.08509936, 2.4641383], [62.18385327, 2.4798757], [62.2825966, 2.4956792], [62.38132931, 2.5115491], [62.48005133, 2.5274853], [62.5787626, 2.543488], [62.67746305, 2.5595572], [62.77615264, 2.575693], [62.87483129, 2.5918956], [62.97349896, 2.6081649], [63.07215557, 2.6245012], [63.17080106, 2.6409044], [63.26943538, 2.6573747], [63.36805847, 2.6739121], [63.46667026, 2.6905168], [63.56527069, 2.7071887], [63.66385971, 2.7239281], [63.76243725, 2.7407349], [63.86100324, 2.7576092], [63.95955763, 2.7745512], [64.05810036, 2.791561], [64.15663136, 2.8086385], [64.25515058, 2.8257838], [64.35365795, 2.8429971], [64.4521534, 2.8602785], [64.55063689, 2.8776279], [64.64910834, 2.8950455], [64.7475677, 2.9125313], [64.84601489, 2.9300855], [64.94444987, 2.9477081], [65.04287257, 2.9653991], [65.14128292, 2.9831587], [65.23968087, 3.0009868], [65.33806634, 3.0188837], [65.43643929, 3.0368493], [65.53479965, 3.0548837], [65.63314734, 3.072987], [65.73148232, 3.0911593], [65.82980452, 3.1094006], [65.92811388, 3.127711], [66.02641033, 3.1460905], [66.12469382, 3.1645392], [66.22296427, 3.1830573], [66.32122163, 3.2016446], [66.41946584, 3.2203014], [66.51769682, 3.2390277], [66.61591453, 3.2578235], [66.71411889, 3.2766889], [66.81230984, 3.2956239], [66.91048733, 3.3146287], [67.00865128, 3.3337033], [67.10680164, 3.3528476], [67.20493833, 3.3720619], [67.30306131, 3.3913461], [67.4011705, 3.4107003], [67.49926585, 3.4301246], [67.59734728, 3.449619], [67.69541475, 3.4691836], [67.79346817, 3.4888184], [67.8915075, 3.5085234], [67.98953267, 3.5282988], [68.08754361, 3.5481446], [68.18554026, 3.5680608], [68.28352256, 3.5880475], [68.38149045, 3.6081048], [68.47944386, 3.6282326], [68.57738273, 3.648431], [68.675307, 3.6687001], [68.7732166, 3.68904], [68.87111148, 3.7094506], [68.96899156, 3.7299321], [69.06685678, 3.7504843], [69.16470709, 3.7711076], [69.26254242, 3.7918017], [69.36036271, 3.8125669], [69.45816788, 3.8334031], [69.55595789, 3.8543103], [69.65373267, 3.8752887], [69.75149215, 3.8963383], [69.84923627, 3.917459], [69.94696497, 3.938651], [70.04467819, 3.9599143], [70.14237586, 3.9812489], [70.24005792, 4.0026548], [70.33772431, 4.0241321], [70.43537497, 4.0456809], [70.53300982, 4.0673011], [70.63062882, 4.0889928], [70.7282319, 4.1107561], [70.82581899, 4.1325909], [70.92339003, 4.1544973], [71.02094496, 4.1764754], [71.11848372, 4.1985251], [71.21600625, 4.2206465], [71.31351248, 4.2428396], [71.41100234, 4.2651045], [71.50847579, 4.2874412], [71.60593275, 4.3098497], [71.70337317, 4.33233], [71.80079698, 4.3548822], [71.89820411, 4.3775063], [71.99559452, 4.4002023], [72.09296813, 4.4229702], [72.19032488, 4.4458102], [72.28766471, 4.4687221], [72.38498757, 4.491706], [72.48229338, 4.514762], [72.57958209, 4.5378901], [72.67685363, 4.5610902], [72.77410795, 4.5843624], [72.87134498, 4.6077068], [72.96856465, 4.6311234], [73.06576692, 4.6546121], [73.16295171, 4.6781729], [73.26011897, 4.701806], [73.35726863, 4.7255114], [73.45440064, 4.7492889], [73.55151493, 4.7731388], [73.64861144, 4.7970609], [73.74569011, 4.8210553], [73.84275088, 4.845122], [73.93979369, 4.869261], [74.03681848, 4.8934724], [74.13382518, 4.9177561], [74.23081374, 4.9421122], [74.3277841, 4.9665406], [74.42473619, 4.9910415], [74.52166996, 5.0156147], [74.61858534, 5.0402604], [74.71548227, 5.0649785], [74.8123607, 5.089769], [74.90922057, 5.1146319], [75.00606181, 5.1395673], [75.10288436, 5.1645752], [75.19968817, 5.1896555], [75.29647317, 5.2148083], [75.3932393, 5.2400336], [75.48998652, 5.2653313], [75.58671474, 5.2907016], [75.68342393, 5.3161443], [75.78011401, 5.3416596], [75.87678493, 5.3672473], [75.97343662, 5.3929076], [76.07006904, 5.4186403], [76.16668212, 5.4444456], [76.26327579, 5.4703235], [76.35985001, 5.4962738], [76.45640471, 5.5222966], [76.55293984, 5.548392], [76.64945533, 5.5745599], [76.74595114, 5.6008003], [76.84242719, 5.6271133], [76.93888343, 5.6534988], [77.0353198, 5.6799568], [77.13173625, 5.7064873], [77.22813271, 5.7330903], [77.32450913, 5.7597659], [77.42086545, 5.7865139], [77.51720161, 5.8133345], [77.61351756, 5.8402276], [77.70981323, 5.8671932], [77.80608857, 5.8942313], [77.90234353, 5.9213418], [77.99857803, 5.9485249], [78.09479204, 5.9757805], [78.19098548, 6.0031085], [78.2871583, 6.030509], [78.38331045, 6.057982], [78.47944187, 6.0855274], [78.5755525, 6.1131452], [78.67164228, 6.1408356], [78.76771116, 6.1685983], [78.86375908, 6.1964335], [78.95978598, 6.2243411], [79.05579181, 6.2523211], [79.15177651, 6.2803735], [79.24774002, 6.3084982], [79.34368229, 6.3366954], [79.43960327, 6.3649649], [79.53550289, 6.3933068], [79.63138109, 6.4217211], [79.72723783, 6.4502076], [79.82307305, 6.4787665], [79.91888669, 6.5073977], [80.0146787, 6.5361012], [80.11044901, 6.564877], [80.20619758, 6.5937251], [80.30192434, 6.6226455], [80.39762925, 6.651638], [80.49331225, 6.6807029], [80.58897328, 6.7098399], [80.68461228, 6.7390492], [80.78022921, 6.7683306], [80.875824, 6.7976842], [80.9713966, 6.82711], [81.06694696, 6.856608], [81.16247502, 6.886178], [81.25798072, 6.9158202], [81.35346402, 6.9455345], [81.44892485, 6.9753209], [81.54436316, 7.0051794], [81.6397789, 7.0351099], [81.73517201, 7.0651125], [81.83054243, 7.0951871], [81.92589012, 7.1253337], [82.02121501, 7.1555523], [82.11651706, 7.1858429], [82.21179621, 7.2162054], [82.3070524, 7.2466399], [82.40228558, 7.2771463], [82.49749569, 7.3077246], [82.59268269, 7.3383749], [82.68784651, 7.3690969], [82.7829871, 7.3998909], [82.87810441, 7.4307567], [82.97319839, 7.4616943], [83.06826897, 7.4927037], [83.16331611, 7.5237849], [83.25833975, 7.5549379], [83.35333983, 7.5861626], [83.44831631, 7.617459], [83.54326913, 7.6488272], [83.63819823, 7.6802671], [83.73310356, 7.7117786], [83.82798506, 7.7433619], [83.92284269, 7.7750167], [84.01767638, 7.8067432], [84.11248609, 7.8385413], [84.20727176, 7.870411], [84.30203333, 7.9023522], [84.39677076, 7.934365], [84.49148398, 7.9664494], [84.58617294, 7.9986053], [84.68083759, 8.0308326], [84.77547788, 8.0631315], [84.87009375, 8.0955018], [84.96468515, 8.1279435], [85.05925202, 8.1604567], [85.15379431, 8.1930413], [85.24831196, 8.2256973], [85.34280493, 8.2584246], [85.43727315, 8.2912233], [85.53171658, 8.3240933], [85.62613516, 8.3570346], [85.72052883, 8.3900473], [85.81489755, 8.4231312], [85.90924126, 8.4562863], [86.0035599, 8.4895127], [86.09785342, 8.5228103], [86.19212177, 8.5561792], [86.28636489, 8.5896192], [86.38058274, 8.6231303], [86.47477524, 8.6567126], [86.56894236, 8.690366], [86.66308404, 8.7240906], [86.75720022, 8.7578862], [86.85129085, 8.7917529], [86.94535588, 8.8256906], [87.03939526, 8.8596994], [87.13340892, 8.8937792], [87.22739681, 8.9279299], [87.32135889, 8.9621517], [87.41529509, 8.9964444], [87.50920537, 9.030808], [87.60308968, 9.0652425], [87.69694795, 9.099748], [87.79078014, 9.1343242], [87.88458619, 9.1689714], [87.97836605, 9.2036894], [88.07211967, 9.2384781], [88.16584699, 9.2733377], [88.25954796, 9.308268], [88.35322252, 9.3432691], [88.44687063, 9.3783409], [88.54049223, 9.4134834], [88.63408726, 9.4486966], [88.72765567, 9.4839805], [88.82119741, 9.519335], [88.91471243, 9.5547601], [89.00820068, 9.5902558], [89.10166208, 9.6258222], [89.19509658, 9.6614592], [89.28850414, 9.6971667], [89.38188471, 9.7329448], [89.47523825, 9.7687933], [89.56856467, 9.8047123], [89.66186393, 9.8407019], [89.75513599, 9.8767619], [89.84838079, 9.9128923], [89.94159828, 9.9490931], [90.0347884, 9.9853643], [90.12795111, 10.0217059], [90.22108634, 10.0581178], [90.31419405, 10.0946001], [90.40727425, 10.1311524], [90.50032674, 10.1677753], [90.59335155, 10.2044684], [90.68634863, 10.2412317], [90.77931796, 10.2780652], [90.87225941, 10.3149689], [90.96517299, 10.3519428], [91.05805858, 10.3889869], [91.15091618, 10.4261012], [91.24374572, 10.4632855], [91.33654715, 10.5005399], [91.42932043, 10.5378644], [91.5220655, 10.575259], [91.6147823, 10.6127236], [91.70747091, 10.6502578], [91.80013103, 10.6878624], [91.89276272, 10.7255369], [91.98536593, 10.7632813], [92.07794062, 10.8010957], [92.17048672, 10.83898], [92.26300429, 10.8769339], [92.35549305, 10.9149579], [92.44795306, 10.9530518], [92.54038428, 10.9912156], [92.63278665, 11.0294491], [92.72516012, 11.0677524], [92.81750464, 11.1061254], [92.90982016, 11.1445681], [93.00210662, 11.1830806], [93.09436398, 11.2216627], [93.18659218, 11.2603144], [93.27879116, 11.2990359], [93.37096087, 11.3378269], [93.46310127, 11.3766875], [93.55521231, 11.4156176], [93.64729412, 11.4546168], [93.73934626, 11.493686], [93.83136886, 11.5328247], [93.9233619, 11.5720329], [94.01532526, 11.6113106], [94.10725892, 11.6506578], [94.19916284, 11.6900744], [94.29103697, 11.7295604], [94.38288125, 11.7691158], [94.47469564, 11.8087406], [94.56648003, 11.8484347], [94.65823446, 11.8881981], [94.74995883, 11.9280307], [94.8416531, 11.9679326], [94.93331721, 12.0079037], [95.02495112, 12.0479441], [95.11655477, 12.0880536], [95.20812821, 12.128232], [95.29967132, 12.1684794], [95.39118383, 12.2087964], [95.48266587, 12.2491825], [95.57411726, 12.289638], [95.66553817, 12.3301623], [95.75692844, 12.3707556], [95.84828804, 12.4114179], [95.9396169, 12.4521492], [96.03091497, 12.4929495], [96.12218253, 12.533818], [96.2134189, 12.5747561], [96.30462432, 12.615763], [96.39579875, 12.6568389], [96.48694214, 12.6979835], [96.57805444, 12.739197], [96.66913589, 12.7804785], [96.76018585, 12.8218295], [96.85120455, 12.8632492], [96.94219193, 12.9047377], [97.03314797, 12.9462949], [97.12407261, 12.9879207], [97.21496579, 13.0296152], [97.30582746, 13.0713783], [97.39665758, 13.11321], [97.48745609, 13.1551102], [97.57822273, 13.1970794], [97.66895779, 13.2391169], [97.75966112, 13.2812227], [97.85033264, 13.323397], [97.94097228, 13.3656398], [98.03158006, 13.4079509], [98.12215634, 13.4503293], [98.21270008, 13.4927772], [98.30321172, 13.5352936], [98.39369122, 13.5778783], [98.48413857, 13.6205312], [98.57455366, 13.6632526], [98.6649364, 13.7060423], [98.75528684, 13.7489001], [98.8456049, 13.7918262], [98.93589051, 13.8348205], [99.02614363, 13.8778829], [99.1163642, 13.9210135], [99.20655218, 13.9642122], [99.2967075, 14.007479], [99.38683013, 14.0508139], [99.47692028, 14.0942161], [99.56697731, 14.1376872], [99.65700146, 14.1812263], [99.74699272, 14.2248334], [99.83695102, 14.2685084], [99.92687629, 14.3122514], [100.0167685, 14.3560623], [100.1066276, 14.3999411], [100.1964535, 14.4438877], [100.2862462, 14.4879022], [100.3760057, 14.5319844], [100.4657318, 14.5761344], [100.5554246, 14.6203521], [100.645084, 14.6646376], [100.7347094, 14.7089917], [100.8243015, 14.7534132], [100.9138606, 14.7979008], [101.0033857, 14.8424571], [101.0928772, 14.8870808], [101.1823352, 14.9317715], [101.27176, 14.9765286], [101.3611502, 15.0213549], [101.4505065, 15.0662487], [101.539829, 15.1112097], [101.6291174, 15.1562384], [101.7183718, 15.2013346], [101.8075913, 15.2464996], [101.8967774, 15.2917307], [101.9859293, 15.337029], [102.075047, 15.3823946], [102.1641314, 15.4278256], [102.2531805, 15.4733256], [102.3421952, 15.5188929], [102.4311756, 15.5645271], [102.5201215, 15.6102288], [102.6090328, 15.6559976], [102.6979095, 15.7018334], [102.7867516, 15.7477364], [102.8755588, 15.7937068], [102.9643315, 15.8397438], [103.0530693, 15.885848], [103.1417724, 15.9320191], [103.2304405, 15.9782571], [103.3190737, 16.0245621], [103.407672, 16.0709338], [103.4962353, 16.1173724], [103.5847633, 16.1638781], [103.6732562, 16.2104507], [103.7617139, 16.2570901], [103.8501364, 16.3037962], [103.9385221, 16.3505722], [104.0268738, 16.397412], [104.1151902, 16.4443184], [104.2034711, 16.4912915], [104.2917181, 16.5383282], [104.379928, 16.5854345], [104.4681024, 16.6326074], [104.5562411, 16.6798468], [104.6443441, 16.7271528], [104.7324115, 16.7745248], [104.820443, 16.8219637], [104.9084389, 16.8694685], [104.996398, 16.9170418], [105.0843216, 16.9646804], [105.1722092, 17.0123853], [105.2600608, 17.0601567], [105.3478763, 17.1079943], [105.4356557, 17.1558982], [105.5233988, 17.2038684], [105.611107, 17.2519021], [105.6987776, 17.3000046], [105.7864119, 17.3481734], [105.8740098, 17.3964083], [105.9615713, 17.4447094], [106.0490962, 17.4930766], [106.1365846, 17.5415098], [106.2240364, 17.5900092], [106.3114515, 17.6385745], [106.3988305, 17.6872046], [106.4861721, 17.7359021], [106.573477, 17.7846654], [106.660745, 17.8334946], [106.7479761, 17.8823897], [106.8351703, 17.9313507], [106.9223276, 17.9803773], [107.0094477, 18.02947], [107.0965307, 18.0786284], [107.1835747, 18.1278564], [107.2705833, 18.1771465], [107.3575547, 18.2265022], [107.4444887, 18.2759236], [107.5313874, 18.3254066], [107.6182468, 18.3749591], [107.7050687, 18.4245772], [107.7918532, 18.4742608], [107.8786001, 18.52401], [107.9653096, 18.5738243], [108.0519813, 18.6237044], [108.1386152, 18.67365], [108.2252114, 18.7236611], [108.3117693, 18.7737386], [108.3982898, 18.8238805], [108.4847724, 18.8740877], [108.5712171, 18.9243603], [108.657623, 18.9746995], [108.7439916, 19.0251025], [108.8303231, 19.0755693], [108.9166159, 19.126102], [109.0028701, 19.1767005], [109.0890861, 19.2273642], [109.1752642, 19.2780924], [109.2614036, 19.3288862], [109.3475046, 19.3797451], [109.4335672, 19.4306689], [109.5195913, 19.4816577], [109.6055769, 19.5327115], [109.6915212, 19.5838348], [109.7774295, 19.6350184], [109.8633016, 19.6862628], [109.9491325, 19.737576], [110.0349248, 19.788954], [110.1206785, 19.8403961], [110.206393, 19.8919037], [110.2920687, 19.9434757], [110.3777053, 19.9951126], [110.4633029, 20.0468142], [110.5488614, 20.0985804], [110.6343804, 20.1504123], [110.7198606, 20.2023079], [110.8053015, 20.2542679], [110.8907032, 20.3062925], [110.9760657, 20.3583815], [111.0613887, 20.4105349], [111.1466723, 20.4627528], [111.2319166, 20.5150349], [111.3171225, 20.5673785], [111.4022878, 20.6197892], [111.4874133, 20.6722644], [111.5724992, 20.7248036], [111.657543, 20.777412], [111.7425495, 20.8300799], [111.8275165, 20.8828109], [111.9124393, 20.935614], [111.997329, 20.9884687], [112.0821801, 21.041386], [112.1669871, 21.0943743], [112.2517541, 21.1474266], [112.336481, 21.2005429], [112.4211678, 21.2537232], [112.5058144, 21.3069674], [112.5904204, 21.360276], [112.6749865, 21.413648], [112.7595123, 21.4670838], [112.8439973, 21.5205842], [112.9284425, 21.5741473], [113.012847, 21.6277743], [113.0972104, 21.6814662], [113.1815338, 21.7352207], [113.2658167, 21.7890389], [113.3500594, 21.8429192], [113.4342613, 21.8968637], [113.5184225, 21.9508717], [113.6025424, 22.0049442], [113.6866213, 22.0590802], [113.7706594, 22.1132798], [113.8546566, 22.1675427], [113.9386127, 22.2218691], [114.0225278, 22.2762589], [114.1064015, 22.3307126], [114.1902343, 22.3852291], [114.274026, 22.4398089], [114.3577763, 22.4944519], [114.4414854, 22.5491582], [114.5251532, 22.6039277], [114.6087796, 22.6587604], [114.6923645, 22.7136562], [114.7759075, 22.7686159], [114.8594094, 22.8236379], [114.9428702, 22.8787221], [115.0262889, 22.9338702], [115.1096665, 22.9890804], [115.1930018, 23.0443544], [115.2762898, 23.0997011], [115.3595414, 23.1551012], [115.442757, 23.210554], [115.525925, 23.2660796], [115.609051, 23.321668], [115.692135, 23.3773192], [115.7751769, 23.4330331], [115.8581767, 23.4888097], [115.9411344, 23.544649], [116.0240499, 23.600551], [116.1069231, 23.6565156], [116.189754, 23.7125427], [116.2725426, 23.7686325], [116.3552889, 23.8247847], [116.4379926, 23.8809994], [116.520654, 23.9372766], [116.6032727, 23.9936162], [116.6858489, 24.0500182], [116.7683825, 24.1064825], [116.8508732, 24.1630095], [116.9333214, 24.2195985], [117.0157268, 24.2762498], [117.0980895, 24.3329632], [117.1804092, 24.389739], [117.262686, 24.4465769], [117.3449198, 24.503477], [117.4271107, 24.5604391], [117.5092554, 24.6174697], [117.59136, 24.6745561], [117.6734208, 24.7317058], [117.7554386, 24.7889174], [117.8374171, 24.8461827], [117.9193485, 24.9035175], [118.001237, 24.9609135], [118.0830822, 25.0183713], [118.164885, 25.0758891], [118.2466425, 25.1334717], [118.3283552, 25.1911177], [118.4100301, 25.2488159], [118.4916578, 25.3065821], [118.5732426, 25.3644088], [118.6547825, 25.4222992], [118.7362791, 25.4802502], [118.8177319, 25.5382627], [118.899141, 25.5963365], [118.9805061, 25.654472], [119.0618273, 25.7126689], [119.1431046, 25.7709272], [119.2243378, 25.8292469], [119.3055275, 25.8876267], [119.3866666, 25.9460775], [119.4677674, 26.0045811], [119.5488301, 26.0631373], [119.6298425, 26.1217633], [119.7108106, 26.1804503], [119.7917344, 26.2391986], [119.8726138, 26.2980079], [119.9534414, 26.356891], [120.0342318, 26.4158225], [120.1149852, 26.474802], [120.1956859, 26.5338563], [120.2763428, 26.5929704], [120.3569549, 26.6521455], [120.437523, 26.7113804], [120.518046, 26.7706763], [120.5985238, 26.8300339], [120.6789568, 26.8894523], [120.7593449, 26.9489314], [120.839688, 27.0084712], [120.9199861, 27.0680717], [121.0002393, 27.1277327], [121.0804473, 27.1874543], [121.1606103, 27.2472364], [121.2407281, 27.3070791], [121.3208004, 27.3669828], [121.4008277, 27.4269464], [121.4808097, 27.4869704], [121.5607463, 27.5470547], [121.6406376, 27.6071994], [121.7204732, 27.6674189], [121.8002838, 27.7276694], [121.8800387, 27.7879948], [121.959748, 27.8483803], [122.0394124, 27.9088242], [122.1190304, 27.96933], [122.1986031, 28.0298949], [122.2781297, 28.0905209], [122.3576103, 28.1512071], [122.4370452, 28.211953], [122.5164342, 28.2727589], [122.5957774, 28.3336246], [122.6750745, 28.3945503], [122.7543256, 28.4555358], [122.8335306, 28.5165812], [122.9126885, 28.577688], [122.9918012, 28.6388529], [123.0708677, 28.7000775], [123.149888, 28.7613618], [123.228862, 28.8227057], [123.3077905, 28.8841077], [123.3866718, 28.9455708], [123.4655062, 29.007094], [123.5442945, 29.0686761], [123.6230355, 29.1303193], [123.7017301, 29.1920213], [123.7803788, 29.2537816], [123.8589808, 29.3156014], [123.9375369, 29.3774793], [124.0160454, 29.4394178], [124.094508, 29.501414], [124.1729228, 29.5634711], [124.2512908, 29.6255874], [124.3296118, 29.6877628], [124.4078858, 29.7499974], [124.4861128, 29.8122911], [124.5642928, 29.8746439], [124.6424256, 29.9370557], [124.7205113, 29.9995265], [124.798546, 30.0620638], [124.8765371, 30.1246528], [124.9544809, 30.1873006], [125.0323773, 30.2500074], [125.1102264, 30.3127728], [125.1880179, 30.375609], [125.2657722, 30.4384919], [125.3434935, 30.5014127], [125.4211528, 30.564413], [125.4987644, 30.6274718], [125.5763284, 30.6905893], [125.6538446, 30.7537654], [125.7313125, 30.8170009], [125.8087332, 30.880294], [125.8860971, 30.9436613], [125.963422, 31.007072], [126.0406989, 31.0705407], [126.1179374, 31.1340515], [126.1951186, 31.1976366], [126.2722517, 31.2612801], [126.3493367, 31.3249818], [126.4263736, 31.3887416], [126.5033623, 31.4525596], [126.5803029, 31.5164359], [126.657195, 31.5803704], [126.7340388, 31.644363], [126.8108343, 31.7084136], [126.8875814, 31.7725222], [126.9642801, 31.8366887], [127.0409302, 31.9009131], [127.1175319, 31.9651955], [127.194085, 32.0295356], [127.2705913, 32.0939294], [127.3470471, 32.158385], [127.4234543, 32.2228984], [127.4998127, 32.2874694], [127.5761224, 32.3520981], [127.6523832, 32.4167845], [127.7285951, 32.4815284], [127.8047581, 32.5463299], [127.8808719, 32.611189], [127.956937, 32.6761055], [128.032953, 32.7410793], [128.1089199, 32.8061106], [128.1848376, 32.8711993], [128.2607062, 32.9363453], [128.3365255, 33.0015486], [128.4122943, 33.066811], [128.488015, 33.1321287], [128.5636865, 33.1975036], [128.6393085, 33.2629356], [128.7148822, 33.328423], [128.7904053, 33.3939692], [128.8658789, 33.45957243], [128.9413016, 33.52523468], [129.0166755, 33.59095242], [129.0920003, 33.65672635], [129.1672758, 33.72255677], [129.2425, 33.78844583], [129.3176769, 33.85438812], [129.3928026, 33.92038942], [129.4678785, 33.98644745], [129.5429053, 34.05256105], [129.6178812, 34.11873251], [129.6928071, 34.18496053], [129.7676831, 34.2512451], [129.8425089, 34.31758616], [129.9172847, 34.38398376], [129.9919913, 34.45046471], [130.0666804, 34.51695404], [130.1413055, 34.58352084], [130.2158851, 34.65013897], [130.2904096, 34.71681849], [130.3648837, 34.78355425], [130.4393073, 34.85034621], [130.5136805, 34.91719432], [130.5880032, 34.9840986], [130.6622754, 35.05105898], [130.7364969, 35.1180754], [130.8106679, 35.18514783], [130.8847882, 35.25227622], [130.9588581, 35.31945945], [131.0328764, 35.38670062], [131.1068443, 35.45399693], [131.1807614, 35.52134907], [131.2546131, 35.58877329], [131.3284422, 35.65622148], [131.4022066, 35.72374079], [131.4759206, 35.791315], [131.549584, 35.85894381], [131.6231951, 35.92663009], [131.6967552, 35.99437192], [131.7702641, 36.0621693], [131.8437217, 36.13002213], [131.9171281, 36.19793048], [131.9904832, 36.26589414], [132.0637869, 36.33391315], [132.1370393, 36.40198751], [132.2102403, 36.4701171], [132.2833898, 36.53830192], [132.3564878, 36.60654191], [132.4295343, 36.67483704], [132.5025292, 36.74318728], [132.5754733, 36.81159053], [132.6483649, 36.88005087], [132.7212048, 36.94856622], [132.7939928, 37.01713663], [132.8667292, 37.08576182], [132.9394137, 37.15444201], [133.0120463, 37.22317699], [133.084627, 37.29196682], [133.1571557, 37.36081136], [133.2296323, 37.42971076], [133.3020461, 37.49868364], [133.3744185, 37.56769247], [133.446739, 37.63675582], [133.5189937, 37.70588213], [133.5912099, 37.77505437], [133.6633987, 37.84425311], [133.7355057, 37.91354346], [133.8075648, 37.98287944], [133.8795715, 38.05226976], [133.9515258, 38.12171438], [134.0234263, 38.19121502], [134.0952809, 38.26075769], [134.1670779, 38.33036473], [134.2388224, 38.40002593], [134.3105153, 38.46973972], [134.3821541, 38.53950964], [134.4537389, 38.60933554], [134.5252729, 38.67921279], [134.5967538, 38.74914433], [134.6681819, 38.81912979], [134.7395585, 38.8891671], [134.8108797, 38.95926164], [134.8821491, 39.02940869], [134.9533647, 39.09961111], [135.0245289, 39.16986469], [135.0956391, 39.24017309], [135.1666963, 39.31053513], [135.2377001, 39.3809509], [135.3086509, 39.45142015], [135.3795485, 39.52194294], [135.4503927, 39.59251934], [135.5211845, 39.66314745], [135.5919221, 39.73383065], [135.6626063, 39.80456724], [135.7332371, 39.87535717], [135.8038144, 39.94620041], [135.8743382, 40.01709692], [135.9448085, 40.08804666], [136.0152017, 40.159083], [136.0855645, 40.23013924], [136.1558974, 40.30121492], [136.226153, 40.37237721], [136.2963549, 40.44359257], [136.3665014, 40.51486332], [136.4365956, 40.58618469], [136.5066359, 40.65755895], [136.5766223, 40.72898609], [136.6465541, 40.80046668], [136.716434, 40.87199711], [136.7862583, 40.94358261], [136.8560292, 41.01522029], [136.9257453, 41.08691132], [136.9954072, 41.15865492], [137.0649796, 41.23049095], [137.1345677, 41.30230173], [137.2040668, 41.37420332], [137.2735116, 41.44615733], [137.3429021, 41.51816376], [137.4122382, 41.59022257], [137.4815198, 41.66233372], [137.550747, 41.73449716], [137.6199196, 41.80671285], [137.6890377, 41.87898076], [137.7581012, 41.95130084], [137.8271123, 42.0236681], [137.8960665, 42.09609231], [137.9649661, 42.16856856], [138.0338109, 42.24109683], [138.102601, 42.31367701], [138.1713361, 42.38630924], [138.2400164, 42.4589934], [138.3086417, 42.53172935], [138.3772122, 42.60451709], [138.4457277, 42.67735664], [138.514188, 42.75024804], [138.5825933, 42.82319102], [138.6509435, 42.89618566], [138.7192386, 42.9692319], [138.7874784, 43.04232988], [138.855663, 43.11547939], [138.9237924, 43.18868028], [138.9918664, 43.26193261], [139.0598852, 43.33523636], [139.1278486, 43.40859144], [139.1957565, 43.48199791], [139.2636089, 43.55545568], [139.3314057, 43.62896491], [139.3991471, 43.70252514], [139.4668329, 43.77613654], [139.5344632, 43.84979903], [139.6020365, 43.92351411], [139.6695553, 43.99727878], [139.7370185, 44.07109444], [139.804427, 44.14495969], [139.8717784, 44.2188773], [139.9390728, 44.29284803], [140.0063125, 44.36686737], [140.0734947, 44.44093967], [140.1406226, 44.51508185], [140.2076935, 44.58925304], [140.2747094, 44.66347475], [140.3416707, 44.73774703], [140.4085763, 44.81206992], [140.4754238, 44.8864432], [140.542215, 44.96086822], [140.6089501, 45.03534398], [140.6756285, 45.10986868], [140.742251, 45.18444365], [140.8088171, 45.25906899], [140.8753269, 45.33374535], [140.9417803, 45.4084696], [141.0081772, 45.48324432], [141.0745176, 45.55807038], [141.1408016, 45.63294809], [141.2070289, 45.70787422], [141.2731997, 45.78285029], [141.3393137, 45.85787633], [141.4053711, 45.93295083], [141.4713718, 46.00807584], [141.5373163, 46.08325168], [141.6032034, 46.15847818], [141.6690334, 46.23375326], [141.7348068, 46.30907815], [141.8004775, 46.38448646], [141.8661351, 46.45987628], [141.9317835, 46.53535003], [141.9973289, 46.61087329], [142.0628174, 46.68644744], [142.1282488, 46.76206954], [142.1936116, 46.83774053], [142.2589284, 46.91346138], [142.324188, 46.98923034], [142.3894041, 47.06504982], [142.4545494, 47.14091791], [142.5196374, 47.21683585], [142.584668, 47.2928029], [142.6496413, 47.36884315], [142.7145571, 47.44490845], [142.7794155, 47.52101094], [142.8442164, 47.59717423], [142.9089596, 47.67338641], [142.9736454, 47.7496345], [143.0382735, 47.82594423], [143.102844, 47.90230281], [143.1673568, 47.97871008], [143.2318123, 48.05516602], [143.2962096, 48.13167151], [143.3605206, 48.20822619], [143.4248021, 48.28482822], [143.4890542, 48.36147862], [143.5532201, 48.43817648], [143.6173279, 48.51492384], [143.6813779, 48.59171957], [143.7453697, 48.66856394], [143.8093036, 48.74545541], [143.8731794, 48.82240106], [143.936997, 48.89938253], [144.0007565, 48.97641945], [144.0644578, 49.05350445], [144.128101, 49.13063757], [144.1916805, 49.2078187], [144.2552069, 49.28504785], [144.3186749, 49.36232491], [144.3820845, 49.43966419], [144.4454357, 49.51702281], [144.5087344, 49.59444348], [144.5719688, 49.67191191], [144.6351448, 49.74942807], [144.6982621, 49.8269919], [144.7613219, 49.90460337], [144.824322, 49.98226243], [144.8872624, 50.05996978], [144.9501453, 50.13772386], [145.0129694, 50.21552973], [145.0757012, 50.29337893], [145.1384417, 50.37127539], [145.2010877, 50.44921929], [145.2636768, 50.52721047], [145.3262058, 50.6052489], [145.3886767, 50.68332883], [145.4510887, 50.76146149], [145.5134416, 50.83970429], [145.5757355, 50.91790684], [145.6379704, 50.996142], [145.7001462, 51.07446284], [145.7622643, 51.15283217], [145.8243216, 51.2312481], [145.8863198, 51.30970967], [145.9482597, 51.38821793], [146.0101391, 51.46677467], [146.0719594, 51.54537484], [146.1337201, 51.62402315], [146.1954215, 51.702719], [146.2570635, 51.78145935], [146.318646, 51.86024598], [146.3801691, 51.93908066], [146.4416325, 52.01796188], [146.5030365, 52.09688962], [146.5643807, 52.17586342], [146.6256652, 52.2548851], [146.6868901, 52.33395099], [146.7480552, 52.41306355], [146.8091607, 52.49222176], [146.8702065, 52.57142536], [146.9311923, 52.65067641], [146.9921184, 52.7299735], [147.0529846, 52.80931653], [147.1137907, 52.8887055], [147.1745369, 52.96817435], [147.2352232, 53.04762129], [147.2957902, 53.12714785], [147.3564135, 53.20672016], [147.4169196, 53.2863382], [147.4773656, 53.36602878], [147.5377514, 53.44573816], [147.5980787, 53.52546734], [147.6583439, 53.60526595], [147.7184917, 53.68511186], [147.7786937, 53.7650032], [147.838778, 53.84493996], [147.898802, 53.92492198], [147.9587655, 54.00494941], [148.0186686, 54.0850348], [148.0785113, 54.16515306], [148.1382935, 54.24531625], [148.1980151, 54.32551212], [148.2576761, 54.40576472], [148.3172765, 54.48606312], [148.3768163, 54.56640652], [148.4362954, 54.64682321], [148.4957137, 54.72725556], [148.5550713, 54.80773275], [148.6143681, 54.88825473], [148.673604, 54.96882142], [148.7327792, 55.0494328], [148.7918934, 55.1300888], [148.8509467, 55.21078939], [148.9099391, 55.29153453], [148.9688704, 55.37232424], [149.0277408, 55.4531583], [149.0865502, 55.53403676], [149.1452976, 55.61496157], [149.2039846, 55.695929], [149.2626105, 55.77694069], [149.321175, 55.85799686], [149.3796783, 55.9390971], [149.4381205, 56.02024129], [149.4965015, 56.10142955], [149.5548213, 56.1826618], [149.6130796, 56.26393812], [149.6712758, 56.34525903], [149.7294113, 56.42662311], [149.7874879, 56.5080254], [149.8455009, 56.58947673], [149.903452, 56.67097217], [149.9613416, 56.75251135], [150.0191695, 56.83409421], [150.0769359, 56.91572071], [150.1346405, 56.99739087], [150.192282, 57.07910726], [150.2498632, 57.16086446], [150.3073826, 57.24266517], [150.3648403, 57.32450928], [150.4222361, 57.40639673], [150.4795677, 57.48833088], [150.5368399, 57.57030483], [150.5940516, 57.65231936], [150.6511158, 57.73444975], [150.7082849, 57.81648462], [150.7653113, 57.8986282], [150.8222735, 57.98081782], [150.8791748, 58.0630493], [150.9360128, 58.14532496], [150.9927886, 58.22764353], [151.0495023, 58.31000496], [151.1061537, 58.3924092], [151.1627429, 58.47485622], [151.2192699, 58.55734585], [151.2757345, 58.6398783], [151.3321367, 58.72245339], [151.3884766, 58.80507106], [151.444754, 58.8877314], [151.500969, 58.9704341], [151.5571215, 59.05317913], [151.6132115, 59.13596669], [151.669239, 59.21879659], [151.7252039, 59.30166879], [151.7811062, 59.38458325], [151.8369459, 59.46753992], [151.8926891, 59.55058688], [151.9484032, 59.63362803], [152.0040546, 59.7167112], [152.0596775, 59.79978773], [152.1152035, 59.88295473], [152.1706667, 59.96616367], [152.226067, 60.0494145], [152.281389, 60.1327337], [152.3366633, 60.21606848], [152.3918743, 60.29944522], [152.4470226, 60.38286348], [152.5021241, 60.46629566], [152.5571461, 60.54979781], [152.6121034, 60.63334297], [152.6669998, 60.71692713], [152.721833, 60.80055272], [152.7766048, 60.88421761], [152.8313116, 60.96792607], [152.8859551, 61.05167583], [152.9405355, 61.1354668], [152.9950525, 61.21929895], [153.0495061, 61.3031724], [153.1038964, 61.38715506], [153.158223, 61.47110946], [153.2124864, 61.55510715], [153.2666863, 61.63914524], [153.3208235, 61.72321099], [153.3748964, 61.80733054], [153.4289058, 61.89149112], [153.4828516, 61.9756922], [153.5367338, 62.05993429], [153.5905523, 62.14421712], [153.6443072, 62.22854045], [153.6979983, 62.31290438], [153.7516258, 62.39730879], [153.8051892, 62.48175385], [153.8586892, 62.56623918], [153.9121253, 62.65076483], [153.9654976, 62.73537726], [154.0188061, 62.8199373], [154.0720505, 62.90458391], [154.1252309, 62.98927071], [154.1783474, 63.07399781], [154.2313999, 63.15876485], [154.2843883, 63.24357191], [154.3373126, 63.32841896], [154.3901729, 63.41330595], [154.442969, 63.49823283], [154.4957009, 63.58319956], [154.5483686, 63.66820608], [154.6009722, 63.75325235], [154.6534421, 63.83833832], [154.7059865, 63.92346398], [154.7583972, 64.0086292], [154.8107436, 64.09383835], [154.8630256, 64.17908281], [154.9152432, 64.26436619], [154.9673964, 64.34968943], [155.0194852, 64.43511234], [155.0713985, 64.52045401], [155.1234671, 64.60589006], [155.1753625, 64.69137038], [155.2271928, 64.77688986], [155.2789583, 64.86244846], [155.3306597, 64.94804611], [155.3822984, 65.03368278], [155.4338708, 65.11935847], [155.485378, 65.20507309], [155.5368205, 65.29082658], [155.5881982, 65.3766189], [155.6395087, 65.46244998], [155.6907568, 65.54831972], [155.741934, 65.63422821], [155.7930522, 65.72017566], [155.8441075, 65.80616145], [155.8950957, 65.89218933], [155.946019, 65.97825395], [155.9968773, 66.06435507], [156.0476775, 66.15049455], [156.0984058, 66.23667232], [156.1490687, 66.32289056], [156.1996667, 66.40914171], [156.2501996, 66.49543423], [156.3006673, 66.58176368], [156.3510698, 66.66813091], [156.4014072, 66.75453924], [156.4516791, 66.84098314], [156.5018858, 66.92746585], [156.5520271, 67.01398608], [156.6021029, 67.10054324], [156.6521141, 67.18713954], [156.7020593, 67.27377201], [156.751939, 67.36044472], [156.8017523, 67.44715399], [156.851501, 67.53390048], [156.9011841, 67.62068406], [156.9508016, 67.70750619], [157.0003535, 67.79436619], [157.0498399, 67.88126297], [157.0992606, 67.96819709], [157.1486156, 68.05516826], [157.197905, 68.142177], [157.2471286, 68.2292229], [157.2962865, 68.31633305], [157.3453797, 68.40345324], [157.3944043, 68.49058324], [157.4433648, 68.57777744], [157.4922595, 68.66500853], [157.5410896, 68.75227659], [157.5898523, 68.8395815], [157.6385491, 68.9269232], [157.6871799, 69.01430165], [157.7357447, 69.10171668], [157.7842438, 69.1891685], [157.8326764, 69.27665666], [157.8810344, 69.3641939], [157.9293353, 69.45175552], [157.9775702, 69.53935357], [158.0257462, 69.62697539], [158.0738487, 69.71464607], [158.1218851, 69.80235299], [158.1698555, 69.89009605], [158.2177592, 69.97787549], [158.2655967, 70.06569109], [158.3133677, 70.15354293], [158.3609469, 70.24154804], [158.4087109, 70.3293544], [158.4562828, 70.41731416], [158.5037883, 70.50530981], [158.5512274, 70.59334131], [158.5985998, 70.68140868], [158.6459061, 70.76951159], [158.6931456, 70.85765035], [158.7403185, 70.94582476], [158.7874247, 71.03403476], [158.8344624, 71.1222843], [158.8814353, 71.21056579], [158.9283415, 71.29888243], [158.9751811, 71.38723446], [159.0219539, 71.47562181], [159.06866, 71.56404444], [159.1152992, 71.6525023], [159.1618742, 71.74099039], [159.2083797, 71.82951876], [159.2548186, 71.91808198], [159.3011905, 72.00668022], [159.3474955, 72.09531345], [159.3937336, 72.18398161], [159.4399052, 72.27268349], [159.4860094, 72.36142134], [159.5320464, 72.45019408], [159.578017, 72.53900118], [159.6239204, 72.62784293], [159.6697562, 72.71671976], [159.7155249, 72.80563107], [159.7612264, 72.89457684], [159.8068606, 72.98355733], [159.8524275, 73.07257282], [159.8979274, 73.16162201], [159.9433603, 73.25070512], [159.9887257, 73.33982289], [160.0340238, 73.42897494], [160.0792545, 73.51816117], [160.1244179, 73.60738153], [160.1695139, 73.69663596], [160.214542, 73.7859255], [160.2595031, 73.87524796], [160.3043295, 73.96464016], [160.3492233, 74.0539938], [160.393982, 74.1434178], [160.4386721, 74.23287725], [160.4832956, 74.32236885], [160.5278515, 74.41189412], [160.5723391, 74.50145374], [160.6167598, 74.59104616], [160.6611128, 74.6806721], [160.7053975, 74.77033209], [160.7496149, 74.86002508], [160.7937659, 74.94974958], [160.8378466, 75.03951068], [160.881861, 75.12930335], [160.9258069, 75.21912953], [160.9696856, 75.30898856], [161.0134983, 75.39887897], [161.0572417, 75.48880343], [161.1009174, 75.57876086], [161.1445243, 75.66875219], [161.1880633, 75.75877642], [161.2315342, 75.8488335], [161.2749374, 75.93892266], [161.3182722, 76.02904531], [161.361539, 76.11920066], [161.4047378, 76.2093886], [161.4478683, 76.29960921], [161.4909313, 76.38986207], [161.5339255, 76.48014773], [161.5768515, 76.57046585], [161.6197093, 76.66081643], [161.6624988, 76.75119929], [161.7051265, 76.84166436], [161.7478731, 76.93206184], [161.7904389, 77.02256829], [161.832955, 77.11308031], [161.8753126, 77.20369923], [161.9178015, 77.29417286], [161.9601127, 77.38478071], [162.0023555, 77.4754204], [162.0445232, 77.56610335], [162.0866274, 77.65681008], [162.1286647, 77.74754518], [162.1706402, 77.83830051], [162.2125404, 77.92909914], [162.254372, 78.01992938], [162.2961347, 78.11079128], [162.3378291, 78.20168458], [162.3794565, 78.29260567], [162.4210139, 78.38356164], [162.4625024, 78.474549], [162.5039223, 78.5655672], [162.5452731, 78.65661725], [162.5865554, 78.74769806], [162.6277231, 78.83886178], [162.6689131, 78.92995401], [162.7099887, 79.02112855], [162.7509955, 79.1123341], [162.7919343, 79.20357011], [162.8328031, 79.29483775], [162.8736039, 79.38613566], [162.9143351, 79.4774646], [162.9549972, 79.56882437], [162.9955902, 79.6602149], [163.0361139, 79.75163659], [163.0765689, 79.84308828], [163.1169548, 79.9345705], [163.1572712, 80.02608338], [163.1975187, 80.11762663], [163.2376971, 80.20920021], [163.2778065, 80.30080399], [163.3178467, 80.39243802], [163.357818, 80.48410153], [163.3977198, 80.57579589], [163.4375523, 80.66752036], [163.4771974, 80.75933737], [163.5170097, 80.85105889], [163.5566343, 80.94287335], [163.5961896, 81.0347177], [163.6356762, 81.12659149], [163.6750927, 81.2184955], [163.714441, 81.31042868], [163.7537187, 81.40239209], [163.7929269, 81.49438513], [163.8320653, 81.58640803], [163.8711345, 81.6784602], [163.910134, 81.77054199], [163.9490641, 81.86265308], [163.9879245, 81.95479366], [164.0267154, 82.04696347], [164.0654367, 82.13916252], [164.1040884, 82.23139078], [164.1426704, 82.32364818], [164.1811834, 82.41593354], [164.219626, 82.50824913], [164.2579989, 82.60059372], [164.2963021, 82.69296725], [164.3345346, 82.78537113], [164.3726979, 82.8778026], [164.4107918, 82.97026262], [164.4488153, 83.0627515], [164.4867695, 83.15526891], [164.5246525, 83.24781751], [164.5624665, 83.34039275], [164.6002116, 83.43299475], [164.6378859, 83.5256266], [164.6754891, 83.61828869], [164.7130235, 83.71097728], [164.7504878, 83.80367411], [164.7878832, 83.89641724], [164.8252077, 83.98918858], [164.8624631, 84.08198806], [164.8996475, 84.17481563], [164.9367608, 84.26767152], [164.9738051, 84.36055494], [165.010779, 84.45346647], [165.0476846, 84.5464058], [165.0845191, 84.63937594], [165.1212836, 84.732371], [165.1579767, 84.82539211], [165.1945994, 84.9184427], [165.2311518, 85.01152091], [165.2676341, 85.10462669], [165.304046, 85.19776], [165.3402895, 85.29091705], [165.3766585, 85.38410534], [165.4128591, 85.47732101], [165.4489895, 85.57056409], [165.4850435, 85.66383435], [165.52089, 85.75713183], [165.5569519, 85.85045648], [165.5928004, 85.94380822], [165.6285845, 86.03718706], [165.6642923, 86.1305929], [165.6999292, 86.2240257], [165.7354956, 86.31748539], [165.770973, 86.41097203], [165.8063984, 86.50448536], [165.8417529, 86.5980258], [165.8769045, 86.69173], [165.9122684, 86.78518593], [165.947411, 86.8788059], [165.9824828, 86.97245238], [166.0174847, 87.06612534], [166.0524151, 87.1598241], [166.0872734, 87.25354989], [166.122062, 87.34730186], [166.1567798, 87.44108026], [166.1914267, 87.53488487], [166.2260026, 87.62871564], [166.2605315, 87.72257265], [166.2949667, 87.81645546], [166.3293307, 87.91036446], [166.3636239, 88.0042994], [166.3978461, 88.09826024], [166.4319973, 88.1922469], [166.4660774, 88.2862594], [166.5000866, 88.38029763], [166.5340246, 88.47436162], [166.5678917, 88.56845118], [166.6016877, 88.66256632], [166.6354126, 88.75670698], [166.6690664, 88.85087311], [166.702649, 88.94506466], [166.7361606, 89.03938916], [166.7696009, 89.13363241], [166.8029701, 89.22790099], [166.8362681, 89.32219519], [166.8694948, 89.41651427], [166.9026504, 89.51085811], [166.9357347, 89.60522622], [166.9687406, 89.69962001], [167.0016809, 89.7940387], [167.0345503, 89.8884831], [167.0673491, 89.98295106], [167.1000754, 90.07744418], [167.1327314, 90.17196254], [167.1653178, 90.26650329], [167.1978392, 90.36107031], [167.2302811, 90.45566184], [167.2626516, 90.55027784], [167.2949506, 90.64491773], [167.3271782, 90.7395825], [167.3593356, 90.83427092], [167.3914202, 90.92898482], [167.4234332, 91.02372236], [167.4553747, 91.11848227], [167.4872482, 91.213268], [167.5190465, 91.30807895], [167.5507733, 91.40291272], [167.5824284, 91.49777032], [167.6140119, 91.59265159], [167.6455244, 91.68755658], [167.6769644, 91.78248577], [167.7083328, 91.87743868], [167.7393758, 91.97241404], [167.7708531, 92.06741443], [167.8020062, 92.16243813], [167.8330841, 92.2574869], [167.8640936, 92.35255766], [167.8950313, 92.44765206], [167.9258959, 92.54276953], [167.95669, 92.63791026], [167.9874122, 92.73307411], [168.0180603, 92.82826122], [168.048639, 92.92346965], [168.0791494, 93.01870458], [168.1095854, 93.11397013], [168.1399481, 93.20924946], [168.1702413, 93.30455166], [168.20046, 93.39987668], [168.2306067, 93.49521568], [168.2606815, 93.5905847], [168.2906843, 93.68597831], [168.3206149, 93.78139408], [168.3504733, 93.8768301], [168.3802597, 93.97229078], [168.4099737, 94.06777412], [168.4396157, 94.16328154], [168.4691857, 94.25880958], [168.4986835, 94.35435952], [168.5281086, 94.44993332], [168.557462, 94.54552984], [168.5867433, 94.64114521], [168.6159523, 94.73687059], [168.645089, 94.83244416], [168.6741536, 94.92812783], [168.7031427, 95.02383142], [168.7320627, 95.11955828], [168.7609105, 95.21530695], [168.7896859, 95.31107737], [168.818389, 95.40686965], [168.8470197, 95.50268344], [168.8755808, 95.5985188], [168.904067, 95.69437552], [168.9324804, 95.79025317], [168.9608223, 95.88615278], [168.9890908, 95.98207403], [169.0172869, 96.0780408], [169.0454111, 96.17400468], [169.0734622, 96.2699654], [169.1014407, 96.36597157], [169.1293467, 96.46200016], [169.1571802, 96.55804849], [169.1849406, 96.65411782], [169.2126232, 96.75021107], [169.2402388, 96.84632215], [169.2677818, 96.94245421], [169.2952522, 97.03860703], [169.3226499, 97.13478055], [169.3498781, 97.23097473], [169.3771308, 97.32718793], [169.4044074, 97.42342325], [169.4315211, 97.51967596], [169.4585556, 97.61595133], [169.4855174, 97.71224797], [169.5124065, 97.80856493], [169.5392228, 97.90490217], [169.5659663, 98.00125983], [169.5925907, 98.09763762], [169.6191885, 98.19403533], [169.64576, 98.29045308], [169.6722124, 98.38689082], [169.698592, 98.4833485], [169.7248987, 98.5798256], [169.7511335, 98.676323], [169.7772943, 98.77284038], [169.8033837, 98.86937659], [169.8293987, 98.9659332], [169.8553383, 99.06256186], [169.8812073, 99.15910817], [169.9070032, 99.255724], [169.9327276, 99.3523588], [169.9583776, 99.44912032], [169.9839545, 99.54569345], [170.0094585, 99.64238642], [170.0348894, 99.73909848], [170.0602472, 99.83582231], [170.085532, 99.93257279], [170.1107438, 100.0293423], [170.1358824, 100.1261309], [170.160948, 100.222938], [170.1859404, 100.3197641], [170.21084, 100.4166089], [170.2356911, 100.5134691], [170.2604649, 100.6103518], [170.2851656, 100.7072532], [170.3097931, 100.8041732], [170.3343474, 100.9011117], [170.3588285, 100.9980688], [170.3832315, 101.0950461], [170.407566, 101.1920401], [170.4318273, 101.2890524], [170.4560153, 101.386083], [170.4801308, 101.4831316], [170.5041721, 101.5801988], [170.5281402, 101.6772839], [170.552035, 101.7743873], [170.5758622, 101.8715066], [170.5996104, 101.9686458], [170.6232852, 102.0658028], [170.6468871, 102.1629766], [170.6704142, 102.2601707], [170.6938689, 102.3573812], [170.71725, 102.4546096], [170.7405576, 102.5518555], [170.7637921, 102.6491189], [170.7869531, 102.7463997], [170.8100416, 102.8436966], [170.8330564, 102.9410119], [170.8559968, 103.038345], [170.8788637, 103.1356955], [170.9016573, 103.2330631], [170.9243767, 103.3304481], [170.9470223, 103.4278502], [170.969595, 103.5252693], [170.9920941, 103.6227054], [171.0145196, 103.7201585], [171.0368715, 103.8176285], [171.0591476, 103.9151193], [171.0813504, 104.0126267], [171.1034814, 104.1101473], [171.1255387, 104.2076845], [171.1475211, 104.3052399], [171.1694335, 104.4028062], [171.1912696, 104.5003936], [171.2130323, 104.5979968], [171.2347234, 104.6956121], [171.2563395, 104.793247], [171.2778814, 104.890899], [171.2993499, 104.9885674], [171.3207439, 105.0862521], [171.342064, 105.183953], [171.3633103, 105.28167], [171.3843734, 105.3794945], [171.4055641, 105.4771761], [171.426589, 105.5749409], [171.4475543, 105.6727008], [171.4684318, 105.7704968], [171.4892373, 105.8683067], [171.5099667, 105.9661346], [171.5306223, 106.0639781], [171.5512041, 106.1618373], [171.5717111, 106.2597133], [171.592146, 106.3576028], [171.6125061, 106.4555082], [171.6327919, 106.5534295], [171.652973, 106.6513723], [171.6731427, 106.7493159], [171.6932017, 106.8472844], [171.7131888, 106.9452671], [171.7331046, 107.0432641], [171.7529465, 107.141276], [171.7727134, 107.2393043], [171.7924072, 107.3373461], [171.8120287, 107.4354024], [171.8315744, 107.5334738], [171.851047, 107.6315585], [171.8704515, 107.7296569], [171.8896891, 107.8277895], [171.9090251, 107.9259014], [171.9282006, 108.0240459], [171.9472975, 108.1222056], [171.9663247, 108.2203789], [171.985069, 108.3186778], [172.004157, 108.4167677], [172.0229661, 108.5149819], [172.0416967, 108.6132122], [172.0603579, 108.7114555], [172.0789402, 108.8097139], [172.0974483, 108.9079863], [172.115882, 109.0062729], [172.1342417, 109.1045731], [172.1525272, 109.2028872], [172.1707371, 109.3012155], [172.1888731, 109.3995574], [172.2069359, 109.4979125], [172.2249219, 109.5962853], [172.2428355, 109.6946684], [172.2606753, 109.7930644], [172.2784407, 109.8914737], [172.2961318, 109.9898965], [172.313751, 110.0883285], [172.3312489, 110.186828], [172.3485702, 110.285321], [172.366155, 110.3837166], [172.3834744, 110.4822054], [172.4007128, 110.5807086], [172.4178829, 110.679224], [172.434979, 110.7777519], [172.4520007, 110.8762925], [172.4689491, 110.9748457], [172.4858221, 111.0734117], [172.5026287, 111.1719886], [172.5193527, 111.2705803], [172.5360031, 111.3691835], [172.5525781, 111.4678004], [172.5690787, 111.5664297], [172.5855048, 111.6650714], [172.6018564, 111.7637255], [172.6181331, 111.862393], [172.6343357, 111.9610717], [172.6504637, 112.0597627], [172.6665172, 112.1584659], [172.6824961, 112.2571811], [172.6984005, 112.3559084], [172.7142303, 112.4546476], [172.7299856, 112.5533988], [172.7456663, 112.6521618], [172.7612724, 112.7509366], [172.7768047, 112.8497229], [172.7922616, 112.9485212], [172.8076438, 113.0473311], [172.8229514, 113.1461526], [172.8381844, 113.2449856], [172.8533439, 113.3438273], [172.8684274, 113.4426832], [172.8834365, 113.5415505], [172.8983709, 113.6404288], [172.9132306, 113.7393186], [172.9280153, 113.83822], [172.9427257, 113.9371321], [172.9571433, 114.0361162], [172.9719024, 114.1350102], [172.9863849, 114.2339618], [173.0007972, 114.3329023], [173.0151337, 114.4318693], [173.0293956, 114.5308471], [173.0435825, 114.6298349], [173.057691, 114.7288399], [173.0717284, 114.82785], [173.085702, 114.9268683], [173.0996009, 115.0258909], [173.1134183, 115.1249252], [173.1271568, 115.223977], [173.1408206, 115.3230391], [173.1544095, 115.4221115], [173.167925, 115.5211937], [173.1813643, 115.6202865], [173.1947293, 115.7193894], [173.2080188, 115.8185024], [173.2212336, 115.9176253], [173.2343735, 116.0167583], [173.2474385, 116.1159011], [173.2604272, 116.2150546], [173.2733415, 116.314218], [173.2861807, 116.4133916], [173.2989478, 116.5125725], [173.3116383, 116.6117639], [173.3242531, 116.710965], [173.3367958, 116.8101739], [173.349261, 116.9093947], [173.3616518, 117.0086241], [173.3738563, 117.1079557], [173.3862078, 117.2071114], [173.3983728, 117.3063687], [173.4104639, 117.4056349], [173.4224803, 117.5049103], [173.4344216, 117.6041947], [173.4462876, 117.7034882], [173.4580819, 117.8027898], [173.4697981, 117.902101], [173.4814393, 118.001421], [173.4930056, 118.1007497], [173.5044974, 118.2000857], [173.5159163, 118.2994304], [173.527258, 118.3987842], [173.5385242, 118.4981475], [173.54949, 118.5976386], [173.5608318, 118.6968984], [173.5718728, 118.7962869], [173.5828388, 118.8956837], [173.5937297, 118.9950887], [173.6045455, 119.094502], [173.6152863, 119.1939234], [173.625952, 119.2933528], [173.6365426, 119.3927903], [173.6470447, 119.4922385], [173.657485, 119.5916919], [173.6678502, 119.6911531], [173.6781403, 119.7906221], [173.6883551, 119.8900993], [173.698495, 119.9895837], [173.7085738, 120.089073], [173.7185635, 120.1885727], [173.728478, 120.2880798], [173.7383174, 120.3875945], [173.7480816, 120.4871165], [173.7577694, 120.5866462], [173.7673832, 120.6861829], [173.7769219, 120.7857269], [173.7863854, 120.885278], [173.7957737, 120.9848362], [173.8050866, 121.0844017], [173.8143229, 121.1839744], [173.8234761, 121.2835672], [173.8325637, 121.3831534], [173.8415442, 121.4827794], [173.8504808, 121.5823799], [173.8593841, 121.6819398], [173.8681708, 121.7815529], [173.8768842, 121.8811715], [173.8855204, 121.9807978], [173.8940814, 122.0804306], [173.9025671, 122.1800698], [173.9109789, 122.2797151], [173.9193146, 122.3793663], [173.9275745, 122.4790245], [173.9357592, 122.5786889], [173.9438554, 122.6783718], [173.9518889, 122.7780492], [173.9598475, 122.8777321], [173.9677307, 122.9774211], [173.9755388, 123.0771158], [173.9832774, 123.1768064], [173.9909341, 123.276514], [173.9985163, 123.3762261], [174.0060237, 123.4759434], [174.0134554, 123.5756668], [174.0208209, 123.6753928], [174.0281021, 123.7751273], [174.0353087, 123.8748663], [174.0424392, 123.9746118], [174.0494943, 124.0743626], [174.0564752, 124.1741182], [174.0633797, 124.2738795], [174.0702081, 124.3736464], [174.0769618, 124.4734182], [174.0836402, 124.573195], [174.0902431, 124.6729769], [174.0967708, 124.7727637], [174.1032231, 124.8725554], [174.1096, 124.9723519], [174.1159015, 125.0721533], [174.1221276, 125.1719594], [174.1282784, 125.2717702], [174.1343535, 125.371586], [174.1403522, 125.4714064], [174.1462768, 125.5712309], [174.152126, 125.6710598], [174.1578998, 125.7708931], [174.1635983, 125.8707307], [174.1692052, 125.9705759], [174.1747526, 126.0704219], [174.1802247, 126.1702722], [174.1856215, 126.2701266], [174.190937, 126.3699933], [174.1961808, 126.4698564], [174.2013683, 126.5697194], [174.2064705, 126.6695809], [174.2114903, 126.769455], [174.2164348, 126.8693327], [174.2213015, 126.9692163], [174.2260949, 127.0691015], [174.2308146, 127.1689896], [174.2354572, 127.268882], [174.2400236, 127.3687779], [174.2445163, 127.4686761], [174.2489341, 127.5685785], [174.2532749, 127.6684845], [174.2575402, 127.7683938], [174.26173, 127.8683063], [174.2658444, 127.9682219], [174.2698821, 128.0681458], [174.2738455, 128.1680676], [174.2777341, 128.2679923], [174.2815447, 128.3679206], [174.2852817, 128.4678511], [174.2889419, 128.5677863], [174.2925322, 128.6677204], [174.2960414, 128.7676614], [174.2994767, 128.8676027], [174.3028382, 128.9675421], [174.3061222, 129.0674891], [174.3093319, 129.1672686], [174.3124674, 129.2672171], [174.3155252, 129.3671679], [174.3185077, 129.467121], [174.3214146, 129.5671529], [174.3242486, 129.6671107], [174.3268918, 129.7670704], [174.329681, 129.866955], [174.332286, 129.966919], [174.3348122, 130.0668848], [174.3372699, 130.1668525], [174.3396484, 130.2668221], [174.3419551, 130.3667932], [174.3441827, 130.4667631], [174.3463348, 130.5667378], [174.3484115, 130.6667142], [174.3504133, 130.7666928], [174.3523382, 130.8666719], [174.3541878, 130.9666528], [174.3559532, 131.0666351], [174.3576522, 131.1666216], [174.3592758, 131.2666064], [174.3608244, 131.3665925], [174.3623074, 131.4665797], [174.3637045, 131.5665677], [174.365026, 131.6665548], [174.366272, 131.7665457], [174.3674425, 131.8665371], [174.3685375, 131.9665295], [174.3695571, 132.0665226], [174.3705011, 132.1665165], [174.3713696, 132.2665111], [174.3721257, 132.3665064], [174.3728438, 132.4665023], [174.3735225, 132.5664979], [174.3740889, 132.6664948], [174.3745653, 132.7664927], [174.3749805, 132.8664904], [174.3753203, 132.9664884], [174.3755904, 133.0664867], [174.3757766, 133.1667342], [174.3758897, 133.2667343], [174.3759272, 133.3667345], [174.37592679998656, 133.46673467118126], [174.37548572845003, 133.5668108636193], [174.37569929988595, 133.66673485955607], [174.37548239845674, 133.7667312959249], [174.3751435999412, 133.8667355250056], [174.37476549961568, 133.9667349348241], [174.37430450389687, 134.0667466447292], [174.37377530333745, 134.16674545921012], [174.373188502361, 134.2667431722911], [174.3725084014417, 134.36674105535948], [174.3717723988216, 134.46673441339064], [174.37094889257767, 134.56671812423494], [174.3700416913001, 134.6667150944657], [174.36905978933666, 134.76671024970906], [174.36800228708267, 134.86670464430242], [174.36686928452949, 134.96669825520826], [174.3656607816456, 135.06669099842662], [174.36437817837356, 135.1666827204325], [174.36301857474655, 135.26667351031338], [174.36158407038383, 135.36666235228182], [174.3600731656826, 135.4666503059003], [174.35848696082164, 135.56663784775623], [174.3568237557175, 135.66662475548716], [174.35508644990867, 135.76660979800565], [174.35327374359403, 135.8665935057992], [174.35138543674358, 135.96657579894276], [174.34942172934007, 136.0665566313614], [174.3473820215654, 136.16653648828003], [174.34526731298712, 136.26651421632377], [174.3430770038618, 136.36649049971754], [174.34081129403, 136.4664649133864], [174.33846918394374, 136.56643866270522], [174.33605357252387, 136.66640886958677], [174.3335617604745, 136.76637741204337], [174.33099414786682, 136.866344479925], [174.32835093451558, 136.96630957915673], [174.32563302006636, 137.06627176440108], [174.32283880519202, 137.166232830258], [174.31996908950697, 137.26619174842747], [174.31702387298986, 137.36614846190955], [174.31400455565446, 137.46610300717924], [174.3109063376181, 137.56605569803648], [174.30773461849418, 137.6660055024564], [174.3044874984673, 137.7659529131514], [174.30116597731651, 137.86589734074659], [174.29776785539525, 137.96583972806684], [174.2942698327843, 138.06578029484965], [174.29072070886477, 138.16571738179513], [174.28709628387844, 138.2656516379783], [174.28339625788303, 138.36558321751158], [174.27963503603456, 138.46552586699406], [174.2757842078984, 138.56545176607762], [174.27185777864668, 138.66537470451135], [174.26786644274628, 138.76527992528378], [174.2637890112683, 138.8651969553428], [174.25963697860982, 138.96511085137698], [174.25540874470983, 139.06502145098636], [174.25110500958854, 139.16492880790838], [174.24672587322866, 139.2648328761056], [174.24227173502754, 139.3647320484281], [174.23774189604916, 139.46462916213818], [174.23313645583258, 139.56452298819846], [174.2284558139443, 139.66441237045896], [174.22369957104655, 139.76429907506963], [174.21886572685793, 139.86418235178044], [174.21395768158814, 139.96406275931645], [174.20897503461657, 140.06393864282768], [174.20391708613795, 140.16381052157664], [174.19878373620665, 140.26367854060084], [174.19357508480124, 140.3635426428627], [174.1882919315962, 140.4634019600624], [174.1829322771992, 140.56325811294974], [174.17749742120358, 140.66311001703733], [174.17198886366518, 140.76295782076267], [174.16640910353377, 140.8627987231884], [174.16074754301286, 140.9626386022892], [174.1550102806954, 141.06247370477772], [174.1491984167437, 141.1623044632415], [174.14331105113567, 141.26213081901807], [174.1374445838833, 141.3619527859574], [174.1314026148973, 141.46177016270948], [174.12528894477893, 141.5615845333492], [174.1186464723469, 141.66139283328894], [174.1128354980789, 141.76119608141718], [174.10649572206458, 141.86099477184533], [174.10008054421846, 141.96078859154878], [174.09359006453636, 142.06057752949], [174.08702429604244, 142.16039631666655], [174.08038311260333, 142.26017526412087], [174.07366651426142, 142.35991448485294], [174.06687472634155, 142.45968151178297], [174.06001083717234, 142.5594452207507], [174.05306824604145, 142.6592037132312], [174.04604885292622, 142.75895692851205], [174.03895559096173, 142.8587932264995], [174.03178689318898, 142.9585340497686], [174.02454296165624, 143.05818486024395], [174.01722366039422, 143.1579164069886], [174.00982565703924, 143.25764238724605], [174.0023537537982, 143.35736868521596], [173.9948068465642, 143.45708434931154], [173.98718763681268, 143.55679331352005], [173.97949192488775, 143.6564964964164], [173.97172091106316, 143.75619462755054], [173.96387459469386, 143.8558859869226], [173.95595387442228, 143.95556695419535], [173.94795685356735, 144.05524638008063], [173.93988462964643, 144.15491764416646], [173.93174000422312, 144.2545849154025], [173.92351717769904, 144.3542492659637], [173.9152190476253, 144.45390416476297], [173.9068457149806, 144.5535522217627], [173.89840038015467, 144.65319447576277], [173.88987644295307, 144.75283040923821], [173.88127750328547, 144.85245978083907], [173.8726030611632, 144.95208262075286], [173.8638532163087, 145.05169818894205], [173.85502826922828, 145.15130783529415], [173.84612801963314, 145.25091078988413], [173.8371526660833, 145.3505032126373], [173.8281020113875, 145.45009259362814], [173.81895205413744, 145.54967518185688], [173.809750794266, 145.6492507893236], [173.8004742317711, 145.7488194150282], [173.79112266663398, 145.84838100885827], [173.7816957988359, 145.94793552092628], [173.7722189283826, 146.04748296174475], [173.76264185519886, 146.14702314013866], [173.7529740792615, 146.2465559925455], [173.74324640342584, 146.34608912741479], [173.73344352207175, 146.44560756048503], [173.72356543792168, 146.54511855175576], [173.71361215095692, 146.64462205122697], [173.70358376115868, 146.74411800886114], [173.69348026850074, 146.84360635465828], [173.68330157301682, 146.9430871786559], [173.67304787458696, 147.04256016077903], [173.66271907328613, 147.14202550106512], [173.65226486593411, 147.24147472837726], [173.64180406639005, 147.34094477816294], [173.63124995611633, 147.44038623293804], [173.62062084285162, 147.53981972583864], [173.60996741875866, 147.63922434785377], [173.59918819940702, 147.73864163704292], [173.58833387694443, 147.83805064439508], [173.57740455153964, 147.93745181987273], [173.5664000229226, 148.03684444355093], [173.55532049117588, 148.13622873535468], [173.5441658562469, 148.23560455532146], [173.5329362183945, 148.3349725934137], [173.5216315771086, 148.43433148963157], [173.51024943262567, 148.53368187491247], [173.49879478490783, 148.6330236473814], [173.4872020342897, 148.7323577116383], [173.47566018003053, 148.8316820568084], [173.4639803224773, 148.930997643729], [173.45219036160182, 149.03030439193765], [173.4403602030729, 149.12961740522084], [173.4284525355382, 149.22890641756817], [173.41647236478363, 149.32818685710353], [173.40441919046793, 149.4274578140145], [173.39228901271517, 149.52671961980104], [173.38008402542766, 149.62595601363935], [173.36784114050158, 149.72519871168967], [173.35548635230214, 149.82443270170302], [173.34305666058668, 149.92365732980446], [173.33055206562153, 150.02287330599395], [173.31797256700915, 150.12207957027158], [173.3053180744395, 150.221301962673], [173.29258876820643, 150.32048793312697], [173.27978454860613, 150.41963827167086], [173.2669054351236, 150.51880493830103], [173.25395141824882, 150.6179625730193], [173.2409224975168, 150.71710993582573], [173.22781607365528, 150.8162489676952], [173.21463714569634, 150.91537708675287], [173.2013831141577, 151.01449567397367], [173.1880574786866, 151.11360378804514], [173.17465403942597, 151.21270181129225], [173.16117569597438, 151.31178867262759], [173.14762264907802, 151.41086636197605], [173.13399469833195, 151.50993379941264], [173.12029204370614, 151.60899090486242], [173.10648718520628, 151.70803769863784], [173.09263602276468, 151.80707398977646], [173.07871005639086, 151.90609980896576], [173.06470928605856, 152.00511508620576], [173.0506338117415, 152.10411975145894], [173.0364858333533, 152.20311357390034], [173.02225925128064, 152.30209758581734], [173.00795926491566, 152.4010701652601], [172.9935844744759, 152.50003189275358], [172.9791364785851, 152.59897909769802], [172.96461237992838, 152.69791894118043], [172.95001357714443, 152.79684779267606], [172.93534007021074, 152.8957655921849], [172.92059165917235, 152.99467245978195], [172.90576904378915, 153.09356775520476], [172.89087152427874, 153.1924520587158], [172.87589930054358, 153.29132511024005], [172.86085237254994, 153.39018681977754], [172.8457308402828, 153.4890371472908], [172.83053480365592, 153.5878758627423], [172.81526386277807, 153.68670325628204], [172.7999182175367, 153.78551902783508], [172.7844981679506, 153.88432322728883], [172.76900351397848, 153.98311574471836], [172.7534321555493, 154.08189639091117], [172.73776939383026, 154.18066828137952], [172.7220509265914, 154.27942546273638], [172.7062577548841, 154.37817074210653], [172.69039017868573, 154.47690405937743], [172.67444979768877, 154.5756245939492], [172.65843321239967, 154.6743336970967], [172.64234182267586, 154.77303098829498], [172.62620062646428, 154.87171098816944], [172.60996212754833, 154.97038379453184], [172.593647323984, 155.06904421950753], [172.57725741575618, 155.16769222264656], [172.5607935029211, 155.2663279535364], [172.544255285385, 155.36495116228954], [172.5276395632156, 155.463562030106], [172.51095243625872, 155.56216014469834], [172.4941896052572, 155.66074748767883], [172.4772551995089, 155.75940220500448], [172.46044312754216, 155.85788031644262], [172.44344468748972, 155.95644356777467], [172.42638533660784, 156.05497795194617], [172.40926577491894, 156.15348352869466], [172.39205771431625, 156.25199201863038], [172.37477524882132, 156.35048747646695], [172.35742207774388, 156.44896806081704], [172.3399909023857, 156.54743724441784], [172.32248532212398, 156.6458933659195], [172.30490533688751, 156.74433623532207], [172.28725094665754, 156.8427658026255], [172.2692680023093, 156.94131778314508], [172.25171815188835, 157.03958682123488], [172.23383064805853, 157.1379801659532], [172.2158789376595, 157.23635600474768], [172.19785292215445, 157.33471824140557], [172.17975270149464, 157.43306674588936], [172.1615781757213, 157.53140162823658], [172.14332984461691, 157.62972230825972], [172.12500680849652, 157.72802962629623], [172.10660856767896, 157.8263244325336], [172.08813852028894, 157.92460172569713], [172.069592868498, 158.0228672972114], [172.0509730114398, 158.12111883655166], [172.03228944752732, 158.2193521097806], [172.01352088008085, 158.3175759748852], [171.99467850706705, 158.41578500766573], [171.9757630282797, 158.5139786578598], [171.95677254455506, 158.61215915617976], [171.9377078554582, 158.71032534232563], [171.9185643629094, 158.80848233802212], [171.89935146294795, 158.90661957974496], [171.88006525758044, 159.00474241895623], [171.86070924452287, 159.1028447643439], [171.8412739281221, 159.20093820946963], [171.82176470617657, 159.29901688230882], [171.80218127872374, 159.39708088297402], [171.7824805461904, 159.49513135762757], [171.7627488075768, 159.59316562390725], [171.74291667286275, 159.69121030783612], [171.72303702304706, 159.78921472958027], [171.70308336757782, 159.88720408907542], [171.68312099862047, 159.9851574818356], [171.66301943178416, 160.0831165567953], [171.64284225944442, 160.18106097010596], [171.622597179392, 160.2789848288805], [171.60227149556147, 160.3768986278807], [171.58187400579226, 160.47479660380696], [171.56140261023077, 160.57267914744673], [171.54085740885446, 160.67054619876257], [171.52023820163714, 160.7683976878294], [171.49954508856376, 160.86623357460982], [171.47877816961184, 160.96405379906625], [171.45793734475512, 161.06185829123626], [171.4370014123751, 161.15964273907008], [171.4160129756638, 161.2574156465922], [171.3949506329877, 161.35517266182785], [171.37383318589423, 161.4529179077268], [171.35262263134106, 161.55064327853958], [171.33133887066558, 161.64835233680347], [171.309981503924, 161.74604523266842], [171.28855263092498, 161.84372145534698], [171.26704765205133, 161.9413820265641], [171.24546886707037, 162.03902632545731], [171.2238150759222, 162.1366541924766], [171.2020893782316, 162.2342646264596], [171.1802914748536, 162.33185990751858], [171.15841776525966, 162.4294386270037], [171.13646984976097, 162.52700161431483], [171.11444882774245, 162.62454722903965], [171.09235249937296, 162.72207592200309], [171.0701841648248, 162.81958815196762], [171.04794222398183, 162.9170836095333], [171.02561208299508, 163.01457870017396], [171.00322252964128, 163.11204082309186], [170.98077366398414, 163.20947014824952], [170.95824019758297, 163.30689750513227], [170.93563032492844, 163.40430820066612], [170.91294844585525, 163.50170179320114], [170.89019146034107, 163.59907822389977], [170.86736156808206, 163.69643668193714], [170.84445856893194, 163.79377677738825], [170.82148096398583, 163.89110143081538], [170.79842995251238, 163.98840869176868], [170.77530543448913, 164.08569850028564], [170.7520723071173, 164.18296339952929], [170.7288006760169, 164.2802183632111], [170.70545583822792, 164.3774555043441], [170.682074696324, 164.47468167909037], [170.65858294526288, 164.57188345531324], [170.6350181874119, 164.66906713891237], [170.61137952304864, 164.76623347022513], [170.58766765192928, 164.8633817989891], [170.56388237409138, 164.96051222527927], [170.54002368948986, 165.05762462909567], [170.51609169812477, 165.15471901040078], [170.49208639996613, 165.2517952891946], [170.46800779498386, 165.34885338547716], [170.44385248326452, 165.44589353052342], [170.4196273645976, 165.54291516174592], [170.39532893904337, 165.63991844045717], [170.37095730659053, 165.73690333661963], [170.34651226721286, 165.83386978030836], [170.32199412089534, 165.9308177314108], [170.2974028676155, 166.02774712992704], [170.2727384073508, 166.1246579158945], [170.24800074008252, 166.22155003931323], [170.22318996578437, 166.31842343014569], [170.19827928666328, 166.41528397844152], [170.17332549746524, 166.5121176629017], [170.14829500201012, 166.60893467612547], [170.12319129944262, 166.70573273680054], [170.09801448975531, 166.8025118248894], [170.07276467290689, 166.8992718303545], [170.0474418488936, 166.99601274319593], [170.02207241572236, 167.09272924351401], [169.99660357733813, 167.18943186110803], [169.97106193166155, 167.28611504600335], [169.94544717875635, 167.38277896831244], [169.91975931862257, 167.47942362803536], [169.89399875111016, 167.5760486250221], [169.86816497632415, 167.67265423946014], [169.8422583942008, 167.76924030119952], [169.8161909321212, 167.86587984327252], [169.79013873516186, 167.96242636961455], [169.76410080361907, 168.0588806706006], [169.73790259194377, 168.15538798169527], [169.71163137288613, 168.2518756201663], [169.68528744631485, 168.34834323590115], [169.65887531145714, 168.44478876721251], [169.63237477700315, 168.54123539167375], [169.60581242797352, 168.63764315931266], [169.57912476750772, 168.73402045394113], [169.55241690333088, 168.83038785614525], [169.52563793123153, 168.92673414501334], [169.49878445192618, 169.0230612318202], [169.47189507191837, 169.11938645208966], [169.44489617728203, 169.21567268342432], [169.41782467498206, 169.3119384919853], [169.39070475445303, 169.40815569869972], [169.36348783676206, 169.50438049178848], [169.33614641535237, 169.60059539156538], [169.30878388225918, 169.69677913925693], [169.28134854140112, 169.79294219424992], [169.25384079274443, 169.88908446639428], [169.22587330579887, 169.985124720933], [169.1986576715216, 170.08130528353738], [169.17093229938277, 170.17738497728598], [169.14313141931424, 170.27344353934853], [169.11526103140562, 170.369481207475], [169.0873167362497, 170.46549956331523], [169.05930652862594, 170.56148468387028], [169.03121871686767, 170.65745879352602], [169.00305849712322, 170.75341162033322], [168.97482586940015, 170.84934318429188], [168.94652063369094, 170.94525346547698], [168.91813289125255, 171.04114581760075], [168.88968633893708, 171.13701184177634], [168.8611637790332, 171.2328576444533], [168.83231506191717, 171.328817609447], [168.80390113513954, 171.42448506137407], [168.77516135096226, 171.5202661755054], [168.74634755954142, 171.61602798738804], [168.7174633589718, 171.71176541567235], [168.68850715008978, 171.80748069095816], [168.6594784331016, 171.90317436343292], [168.63037760782726, 171.9988459529467], [168.6012043743418, 172.09449565961197], [168.57197103102055, 172.1901191488165], [168.54265348094026, 172.28572462959727], [168.5132652217562, 172.3813058468922], [168.48380225500242, 172.47686689220097], [168.4542671803862, 172.57240698454865], [168.42466109691003, 172.66792346352295], [168.3949827050202, 172.76341751961127], [168.36523150529797, 172.858890703001], [168.33540909656205, 172.95433986309237], [168.30551467935246, 173.0497664401853], [168.27554955334284, 173.14516956379228], [168.24551091916342, 173.24055091496325], [168.21540017646157, 173.33590955317328], [168.1852175252148, 173.43124541834734], [168.15496286539687, 173.52655844052296], [168.1246335972817, 173.62184935067506], [168.09423512025765, 173.7171165167788], [168.06376443461747, 173.8123607199591], [168.0332219403461, 173.90758192006595], [168.00260763740226, 174.00278000709937], [167.97192132577104, 174.0979549411344], [167.94116160564374, 174.19310723269592], [167.9103314766264, 174.2882358306591], [167.8794297388166, 174.38334099547384], [167.84845699162184, 174.47842114691528], [167.81740843639992, 174.5734799067832], [167.78629127223533, 174.66851483237772], [167.75510209923334, 174.76352620497386], [167.72377741258714, 174.85850121838493], [167.69244502190276, 174.95346546468426], [167.66104102227965, 175.0484058878352], [167.62963171835943, 175.14333485297448], [167.59808420091147, 175.23822776994115], [167.56646517451355, 175.33309683372198], [167.5347745391282, 175.42794194435442], [167.50301219477788, 175.522763161876], [167.47117824141012, 175.61756034624918], [167.43924939150654, 175.71236678620917], [167.4072753199349, 175.80711545312317], [167.3752266394548, 175.9018403780138], [167.3431056499873, 175.99654135001856], [167.31044829979265, 176.09108048314678], [167.27867613064058, 176.185835564348], [167.24633891351334, 176.28046281743278], [167.21393278735346, 176.37506599635668], [167.18145525200362, 176.46964468205726], [167.14890620745632, 176.56419885457203], [167.11628585367782, 176.65872842382595], [167.0835926915232, 176.7532356703814], [167.0508257193013, 176.8477160846137], [167.01799123768288, 176.94217145416016], [166.9850843466496, 177.03660173085837], [166.9521092465161, 177.13100775313322], [166.91906083690782, 177.22538852289728], [166.8859411179183, 177.31974428940055], [166.85275018955505, 177.41407507260556], [166.81948735205063, 177.50838149277467], [166.78615410480495, 177.6026619493456], [166.75275104725168, 177.6969149320934], [166.7192762811722, 177.7911451917302], [166.6857327054451, 177.8853497371688], [166.652114820217, 177.97952896047164], [166.61842612531137, 178.0736823903262], [166.58466582108832, 178.16781098703248], [166.55083450725527, 178.2619139703655], [166.51693208382352, 178.35599137036274], [166.48295865077424, 178.45004313698678], [166.44891430808875, 178.54406922020004], [166.41469149339446, 178.63816998034542], [166.38057890887134, 178.73208450914146], [166.3463564223047, 178.82599360915032], [166.31202794096174, 178.9199166589081], [166.27762864986255, 179.01381370521767], [166.2431583490146, 179.10768476815403], [166.20861723839164, 179.20152977764218], [166.17400521797123, 179.29534867371956], [166.13932238773077, 179.38914139634875], [166.10404258877725, 179.48301766284663], [166.06974429773737, 179.57664818126253], [166.03484903793193, 179.6703621035471], [165.999883068224, 179.76404963234597], [165.96481939068167, 179.85771628778375], [165.92971180113122, 179.95135092968624], [165.894533401622, 180.04495902814054], [165.85928439213154, 180.13854052307167], [165.8239647726448, 180.2320953744796], [165.78857454313555, 180.32562351236436], [165.75311360360004, 180.41912492676346], [165.71760695182027, 180.5125936983023], [165.6820072903008, 180.6060365147179], [165.64633492048773, 180.69945722839753], [165.6105920405696, 180.7928510085165], [165.57477865050524, 180.8862177450748], [165.53889485027207, 180.97955737803494], [165.50288474075907, 181.07287228835924], [165.46685972018838, 181.16615771427308], [165.43076408938518, 181.2594158666638], [165.3945982483532, 181.3526467553814], [165.3583646970922, 181.44585037948835], [165.32211263496507, 181.53902503053482], [165.28573556312674, 181.63217380845802], [165.24928818098462, 181.7252951227456], [165.21277058848622, 181.81838883336007], [165.17618268563152, 181.91145494033893], [165.1395245724093, 182.00449341364467], [165.1027960487783, 182.09750414335232], [165.0659974147197, 182.19048707934937], [165.02912847024112, 182.28344224171082], [164.99211210950915, 182.37635408935017], [164.95510284412296, 182.46925352432794], [164.9180234682042, 182.56212488559513], [164.88087408176793, 182.65496821311422], [164.84373149064365, 182.74779903808422], [164.80644158310102, 182.84058610829464], [164.76908176501834, 182.93334508471952], [164.73165663554403, 183.02607369563398], [164.69415699624244, 183.11877611448773], [164.6565855462172, 183.21144995026845], [164.61894748531415, 183.30409479102613], [164.58123781411118, 183.39671217863568], [164.54345843218437, 183.4893009823847], [164.50560883956751, 183.58186129246067], [164.46709738955107, 183.6742686607219], [164.4297003220311, 183.76689581110602], [164.39164119711904, 183.8593700397504], [164.35351346153183, 183.95181581412172], [164.31531481499962, 184.04423241508255], [164.2770462576536, 184.13662019225782], [164.23870798944125, 184.2289790055726], [164.20030001038134, 184.32130890502685], [164.16182222044011, 184.4136098006581], [164.12327471958005, 184.50588159242884], [164.08465760779364, 184.59812426030157], [164.04597078508093, 184.6903378043138], [164.00721415143062, 184.782522194503], [163.96838820673773, 184.87467715068175], [163.92949265103223, 184.9668027529625], [163.8905271842992, 185.05889896145777], [163.85149250652353, 185.15096573590506], [163.81238551749175, 185.2430025074669], [163.77321181757466, 185.33501026404323], [163.73396870653247, 185.4269883666466], [163.69465468493155, 185.5189383258394], [163.6552622529974, 185.61086074443406], [163.6158106085537, 185.70274981523104], [163.57604621375563, 185.79477133331847], [163.53669898603974, 185.8864383249436], [163.4970394079845, 185.97823780370925], [163.45731391830512, 186.07000629718948], [163.41751561775214, 186.1617458079717], [163.37764800591657, 186.2534552447435], [163.3377110827609, 186.34513450750484], [163.29770354912895, 186.4367858467431], [163.25762830332556, 186.5284047413711], [163.21748404618327, 186.61999341187618], [163.17728267605128, 186.71154745379613], [163.1369983969139, 186.80307749680523], [163.0966467135625, 186.89459631509007], [163.05622601068976, 186.9860630892535], [163.01573529635817, 187.07749931966902], [162.9751763705002, 187.16890482566166], [162.9344932503922, 187.26032568822814], [162.89379680145515, 187.3516696757875], [162.8530874238541, 187.44293722818972], [162.8122526518681, 187.5342197776158], [162.77134966831068, 187.625471482619], [162.73037807314435, 187.7166922433493], [162.6893337666169, 187.8078827213442], [162.64822334818786, 187.89904147412878], [162.6070441185662, 187.9901703927154], [162.56579257703214, 188.0812675584167], [162.5244758241102, 188.1723343685701], [162.48309045895684, 188.2633685744507], [162.44163608208586, 188.35437154620848], [162.40011269348227, 188.4453432438434], [162.35852089308227, 188.53628349713048], [162.3168605808896, 188.6271923161072], [162.27513155687802, 188.71806963084862], [162.23333212128767, 188.80891608199212], [162.1914658739158, 188.8997311281878], [162.14953111436128, 188.99051370007322], [162.10752774289034, 189.0812645076858], [162.06545595900423, 189.17198222095067], [162.023318863089, 189.26266786870525], [161.98111265563617, 189.35332276237443], [161.93883133653736, 189.44394661420824], [161.89648550538686, 189.53453834023173], [161.85407146279996, 189.62509958183236], [161.81158910758037, 189.71562714904778], [161.7690382403169, 189.8061226119529], [161.72641906097945, 189.89658589047275], [161.6837316695531, 189.98701694456983], [161.64097596601533, 190.07741571428159], [161.5981518503474, 190.1677821496456], [161.55525962255678, 190.25811627054932], [161.51229918260222, 190.3484179670303], [161.46927052991748, 190.43868572908855], [161.42617676545112, 190.5289220855615], [161.38301178859226, 190.61912540873672], [161.33977989976063, 190.70929681700164], [161.296477498544, 190.7994352117063], [161.25310838562834, 190.88954242142563], [161.20967106003124, 190.97961582672227], [161.16616552211644, 191.06965639759616], [161.1225922718277, 191.15966398385984], [161.0789513092625, 191.24963884551326], [161.0352421342821, 191.33958061274396], [160.99137505281783, 191.42950511918824], [160.94748585314892, 191.51938108392343], [160.90357304089667, 191.60922349751095], [160.8596802101593, 191.69901661360197], [160.81567767301718, 191.78879267083158], [160.77156122342555, 191.87853555077598], [160.72737716129123, 191.96824499607266], [160.68312148655824, 192.05792085822162], [160.63880209989722, 192.1475649242603], [160.59441500009726, 192.2371739656889], [160.54996028771706, 192.32674947246977], [160.50543886252032, 192.41629081426552], [160.46085052492708, 192.50579911115102], [160.4161797745034, 192.5952732089389], [160.37142905730173, 192.6845692467017], [160.3266616360298, 192.77412110074653], [160.28180134728328, 192.86349303960392], [160.23687654635006, 192.95283249265105], [160.19188123262307, 193.04213784213803], [160.14683220612366, 193.1314091417649], [160.1016685771123, 193.2206737643671], [160.05647252483075, 193.30987633912363], [160.01124104954926, 193.39901758715948], [159.96590877186733, 193.4881524529957], [159.9205092813352, 193.57725306403427], [159.87503862134798, 193.66643514176707], [159.82944977130174, 193.75537708380415], [159.78384844210262, 193.84437462052483], [159.73817989997823, 193.93333770244786], [159.6924163470718, 194.02227204999787], [159.64667257401527, 194.11115266012663], [159.60080249302513, 194.2000121376193], [159.5548654990197, 194.28883692020187], [159.50886129199907, 194.37762700798683], [159.4627900719294, 194.46638231089918], [159.41665183879945, 194.55510279893892], [159.37044658774929, 194.64377551210697], [159.3242038261905, 194.73242020933947], [159.27786475371477, 194.82103581268643], [159.23145896811877, 194.9096164410483], [159.18498626938748, 194.9981620545001], [159.1384466574647, 195.08667250304183], [159.0918402323466, 195.17514777663595], [159.04516679398077, 195.26358773535753], [158.99842724241586, 195.35199250886905], [158.9516187778208, 195.4403625482204], [158.90474510006038, 195.5286974920242], [158.8578016085499, 195.61699578200555], [158.81079460437266, 195.7052603058017], [158.76369258644712, 195.79348818522536], [158.71655214560596, 195.88112162901578], [158.66934530009533, 195.96927596774452], [158.6220716412132, 196.05739466152573], [158.57476046893873, 196.14547764937194], [158.52734188227558, 196.23352228749576], [158.47988098325916, 196.32153399148433], [158.43234427072562, 196.4095096639004], [158.3847384447195, 196.49744942223145], [158.33706590523678, 196.58535325557747], [158.28932665223633, 196.67322105393845], [158.241521685733, 196.76105285693944], [158.19365050298669, 196.84910802478717], [158.14571463032652, 196.93665676685796], [158.09771092327725, 197.0243804843789], [158.04962700262115, 197.11206793197732], [158.001490868345, 197.19971906915325], [157.95330252042257, 197.2873338259067], [157.905034353122, 197.37489692258873], [157.85669195897674, 197.46238844710072], [157.80830356994218, 197.54989360886174], [157.75983677289565, 197.6373774200242], [157.7113040564213, 197.72480943590273], [157.66270532620038, 197.81220480653383], [157.61404038505663, 197.8995710619919], [157.56530452733162, 197.98689311404053], [157.5165078577947, 198.0741836788913], [157.46764527240367, 198.16143197845753], [157.41871677316482, 198.2486433627388], [157.36972246006312, 198.3358177916976], [157.3206625540331, 198.42354442529253], [157.27153661356573, 198.5106459036064], [157.22230595655697, 198.59770329118575], [157.17304868822512, 198.68473048874222], [157.12372570060793, 198.77170627093977], [157.07437591230638, 198.85868023318739], [157.02492740201805, 198.94559558245157], [156.97540727772105, 199.03247358856834], [156.92582173937367, 199.1193141392127], [156.87617048696467, 199.2061172044971], [156.8264538204828, 199.29288275430912], [156.77644428539776, 199.37973208395255], [156.72682394521803, 199.46630108762844], [156.67691083639755, 199.55295377109826], [156.62693321342542, 199.63956872875815], [156.57688707606937, 199.72614534210823], [156.52677782474905, 199.81268472912336], [156.47660325949835, 199.89918698062854], [156.42636227974356, 199.9856505670364], [156.3760571857396, 200.0720761674844], [156.32568687748272, 200.15846377238498], [156.27525125494674, 200.24481331177572], [156.2247401210986, 200.331132699481], [156.17414047001793, 200.41740615037696], [156.12351070475694, 200.5036417925631], [156.07284832492573, 200.58983858697687], [156.02208693071654, 200.6759970585183], [155.9712602221645, 200.76211729454985], [155.92036679921713, 200.84819915559655], [155.86941026183675, 200.93424254030845], [155.81838891000845, 201.02024740932296], [155.76730244371726, 201.10621372275264], [155.71615016294822, 201.19214144085998], [155.66493386552997, 201.2780247729704], [155.61366495418045, 201.36387096480843], [155.5623191298201, 201.4496824754863], [155.51090859090687, 201.53545519042933], [155.45936652378788, 201.62115271469008], [155.40772487172467, 201.70689040629793], [155.35612037994264, 201.79252217396328], [155.3045172961705, 201.8781753011021], [155.25288487737177, 201.96373502923495], [155.20108615076973, 202.04927397973168], [155.14922290946475, 202.1347737344186], [155.09729135367462, 202.22023487472066], [155.04530058353365, 202.30565775722536], [154.99324089832632, 202.39104047557038], [154.9411192980634, 202.47638305713065], [154.88893358355497, 202.561687662731], [154.83668345380363, 202.64695163248422], [154.78436890920685, 202.73217602639016], [154.7319910497833, 202.8173608940363], [154.67955141396925, 202.90234206483427], [154.6270360864528, 202.98761204403684], [154.57446448307044, 203.07267972432862], [154.52182856411142, 203.15770587873573], [154.4691286297144, 203.24269087714572], [154.4163644809182, 203.32763748963333], [154.3635375171714, 203.41254424567373], [154.31064503845553, 203.49741109627936], [154.25768844507044, 203.5822388409252], [154.20466783635237, 203.66702570957386], [154.15158311212136, 203.7517712222629], [154.09843417270363, 203.83647624902972], [154.04522791854495, 203.92114197728677], [153.99195134961627, 204.00576833190905], [153.93861086558334, 204.09035442049657], [153.88520536628127, 204.17489980346195], [153.83173705201364, 204.25940528998007], [153.77820512266803, 204.34387058035097], [153.72460947804566, 204.42829514461218], [153.6709500182291, 204.51267920280117], [153.61722284313228, 204.5970225263805], [153.56343605354596, 204.68132722231252], [153.50958544797413, 204.76558930217246], [153.45567232702052, 204.8498103754727], [153.40169509086516, 204.93399092281334], [153.34765313962816, 205.0181312644192], [153.29354837297183, 205.1022304995779], [153.23938019078, 205.18628831851444], [153.18514849344643, 205.2703057712663], [153.13085517999596, 205.35428025712116], [153.07650005198113, 205.43821591615364], [153.02207800849476, 205.52211033027652], [152.96759244955916, 205.60596355821474], [152.91304377520052, 205.6897756698183], [152.8584318853926, 205.7735465951247], [152.80375678008292, 205.857276194134], [152.7490184592902, 205.9409645168461], [152.69421692298073, 206.02461147326107], [152.63935227113194, 206.10821700334145], [152.58442440380017, 206.19178125712463], [152.5293409145606, 206.2752871192618], [152.47428731600021, 206.3587681201883], [152.4192626081303, 206.44222429027903], [152.3640827783601, 206.52562208853624], [152.30878063294602, 206.6089781926588], [152.25347297186113, 206.69229250884678], [152.1981632951089, 206.77556504578774], [152.1427317026678, 206.858795768444], [152.08723369432386, 206.9419840960032], [152.03161427114227, 207.0251328790901], [151.97599414158196, 207.10826465244068], [151.9203112861924, 207.19132755930858], [151.86456581501224, 207.27434836965438], [151.80875932803016, 207.35732705287808], [151.75288851557517, 207.44023782021904], [151.6970180960739, 207.52312979741131], [151.64102346094765, 207.6059801311814], [151.5849650105934, 207.68878986887933], [151.5287895445387, 207.7715577604551], [151.47260606238208, 207.85428271503386], [151.41641726429586, 207.93696519160312], [151.3601086502656, 208.01960517310027], [151.30319316393044, 208.10231912217927], [151.24730467430078, 208.18475742611594], [151.19080921234752, 208.26726964767192], [151.1342512343524, 208.34973910266837], [151.07763114034918, 208.4321658809553], [151.0209200371724, 208.51456821336885], [150.96417531110802, 208.59690951838667], [150.9073685690318, 208.67920813665745], [150.8504996107787, 208.76146362825625], [150.7935686363938, 208.843676113108], [150.73657554586575, 208.92584556125018], [150.67951863942724, 209.00797259332035], [150.62240141192925, 209.09004347800695], [150.56525217034854, 209.17207681469614], [150.50801271481672, 209.25407296521286], [150.45070974335187, 209.33602663954503], [150.39334495564268, 209.41793700705517], [150.3359183516816, 209.49980404774334], [150.27842983143492, 209.58162767164703], [150.22087960570633, 209.66343668868916], [150.16326775268212, 209.74517292883638], [150.10559408333853, 209.82686566216162], [150.0478562974095, 209.9085141795274], [149.9900593953559, 209.99011970905872], [149.9322007769342, 210.0716816017305], [149.87428074209933, 210.15319973743033], [149.81629909084756, 210.23467410623317], [149.75825592316016, 210.31610465810155], [149.70015133901836, 210.39749134299802], [149.64198533840343, 210.4788341109225], [149.5837597214877, 210.56013342119996], [149.52547088787023, 210.64138820518053], [149.46712063772708, 210.72259893218916], [149.40870917104328, 210.80376556215083], [149.35024058708726, 210.88488614352818], [149.29170658726215, 210.96596441943348], [149.2331113708476, 211.04699846829183], [149.17445493785118, 211.12798831010326], [149.11573768820153, 211.20893375471778], [149.056959221865, 211.28983471228534], [148.99811943888278, 211.3706912928435], [148.93921863924365, 211.45150346627972], [148.88025692291006, 211.53227113255656], [148.82103183029125, 211.6131020876037], [148.76214954079722, 211.6936746440818], [148.70300497432788, 211.77430864891787], [148.64379949108533, 211.85489793659457], [148.58453309106585, 211.9354424971118], [148.5252059742432, 212.0159422603947], [148.4658178406961, 212.09639743655566], [148.40625136615162, 212.1767433195867], [148.3467422988631, 212.25710854109138], [148.28717251476385, 212.3374289453617], [148.22765903767691, 212.4177680385182], [148.16796781969003, 212.49799809831978], [148.108215684735, 212.57818292096198], [148.04840333288672, 212.6583227061823], [147.9885306640627, 212.73841723401827], [147.92859737829673, 212.81846659458236], [147.86849106709923, 212.8984481700261], [147.8084361471869, 212.9784064961965], [147.74832181039253, 213.05831981464502], [147.68814635681372, 213.13818838600912], [147.62802369442997, 213.21803346757494], [147.56772840647216, 213.2978103838704], [147.50737290141865, 213.37754172274407], [147.44695977714667, 213.45722182322123], [147.38648393783043, 213.53686181721372], [147.32594878133963, 213.61645602344686], [147.2653527077344, 213.69600460252065], [147.20469651695842, 213.77550740413514], [147.1439804089892, 213.8549643682153], [147.08320428380046, 213.93437542479865], [147.02236814139974, 214.01374059388516], [146.96147208176828, 214.09305982543736], [146.90051630481605, 214.1723328793803], [146.8394999106106, 214.25155993605136], [146.77842429914438, 214.33074097492567], [146.71727877169306, 214.4098794000154], [146.65608192660918, 214.48897081434592], [146.5948269631919, 214.5680133504673], [146.53351228239384, 214.64700954897938], [146.47213788424128, 214.7259594798822], [146.41070396869296, 214.80486303310073], [146.34921043573007, 214.88372015867247], [146.28765738534145, 214.96253082655994], [146.22604481750076, 215.04129496676316], [146.16437283219682, 215.12001254924456], [146.10264142941455, 215.19868353400426], [146.04085130897772, 215.2773074507797], [145.9789988724578, 215.35588849092056], [145.9171011156161, 215.4344153480527], [145.85513244272943, 215.51289943177537], [145.79310455228196, 215.59133669770125], [145.73101884327232, 215.66972447530554], [145.66887251765826, 215.74806798563793], [145.60658260062675, 215.82643440981857], [145.54431694023611, 215.90468520489486], [145.48207723554503, 215.9828178602295], [145.41969653825882, 216.06097028843766], [145.35725482442444, 216.13907859952383], [145.29475419289423, 216.2171397327008], [145.23219464364945, 216.29515363796853], [145.1695734764503, 216.37311967633957], [145.10689609175012, 216.4510390557889], [145.04415988930162, 216.52891111729144], [144.9813648690523, 216.60673572084733], [144.9185038313664, 216.68451383915644], [144.85559107548542, 216.7622434468564], [144.79261990180356, 216.83992559645964], [144.72959011027964, 216.9175601780412], [144.66650170088363, 216.99514711160106], [144.60335467361176, 217.07268638713924], [144.5401491284453, 217.15017795461821], [144.47688516536547, 217.2276217640005], [144.4135627843123, 217.30501765528615], [144.35018028557462, 217.38236639911253], [144.28674096867223, 217.4596667142423], [144.223246733605, 217.53691859996292], [144.15968638066246, 217.61412283047434], [144.09607590970847, 217.6912790397766], [144.03240342080386, 217.76838739233216], [143.96867271385466, 217.84544763671607], [143.90488368889459, 217.92245986296584], [143.84103674580737, 217.99942376093145], [143.7771342843866, 218.07633877971293], [143.71317110510137, 218.15320617126025], [143.64914930774904, 218.23002539478588], [143.58506999220205, 218.30679610987738], [143.52093275849793, 218.38351841668475], [143.45674110668517, 218.4601924438955], [143.392487936588, 218.5368177241721], [143.32817704830745, 218.61339452608956], [143.26380834179474, 218.6899227196854], [143.19947981704675, 218.76640227820974], [143.1349938740511, 218.8428332057623], [143.07045021278205, 218.91921541495577], [143.00584893322085, 218.99554885575265], [142.94118993513123, 219.07183289819045], [142.87647341894444, 219.1480686921941], [142.81158180225623, 219.22430318186022], [142.74674984942516, 219.30044127914564], [142.6818604782156, 219.37653037795945], [142.6169087595506, 219.45249294014468], [142.55190465134046, 219.52848339197783], [142.48696193567852, 219.60445396078745], [142.42184329079402, 219.68034663556492], [142.3566674274636, 219.75619013179582], [142.29143424584095, 219.83198485951758], [142.22497944562554, 219.9077302353419], [142.1607962267479, 219.98342541932146], [142.09539088942748, 220.05907165159104], [142.0299290335861, 220.13466850505156], [141.96435505916386, 220.21021583055295], [141.8987782761581, 220.28574026710598], [141.83314476468263, 220.36118879492682], [141.76745443460746, 220.43658773405105], [141.7017070860113, 220.51193729455372], [141.63590291868798, 220.5872369263599], [141.57004193329738, 220.6624883894694], [141.5041241286396, 220.73768848388244], [141.4381477947585, 220.81281066023848], [141.3721789529156, 220.8879116037835], [141.30609109253362, 220.96296313195685], [141.23994021241987, 221.03796205375892], [141.17373921514218, 221.1129152143516], [141.10748169817725, 221.18781588613547], [141.0411675624551, 221.2626665491478], [140.9747970079232, 221.33746706331362], [140.9083699345478, 221.41221733867047], [140.84188644238515, 221.48691752518073], [140.77534643157028, 221.561567982882], [140.70875020091813, 221.63616555166192], [140.6420977522025, 221.71071496152018], [140.57539418460172, 221.78521402054446], [140.50862893190777, 221.8597528427034], [140.44180749266792, 221.934060885916], [140.37492966829328, 222.00840858027578], [140.30799592498886, 222.08270580560156], [140.24100622614827, 222.15712161191897], [140.17396028143693, 222.2311484393012], [140.1068583811482, 222.30529373767504], [140.03970046189215, 222.3793884670524], [139.97248674651382, 222.453493547354], [139.905216994007, 222.5274996286625], [139.83789151705787, 222.60144054086305], [139.77051002092398, 222.67533030406716], [139.7030728065353, 222.74917139816213], [139.6355798731043, 222.82296172314815], [139.56803122040978, 222.89670068902524], [139.50042684857544, 222.97038862579336], [139.4327668526776, 223.04401240341593], [139.36505134020118, 223.1175919818541], [139.2972802107487, 223.1911263011454], [139.22938406218003, 223.2646096673152], [139.16150169433547, 223.33804162831365], [139.0935636073061, 223.4114224402031], [139.02557050091562, 223.48475163272116], [138.95752197537035, 223.5580297560178], [138.88949183054132, 223.631256452418], [138.82133286642386, 223.70443173712175], [138.7531186830166, 223.7775555925291], [138.6848492802445, 223.85062781864002], [138.61652475812633, 223.92364846541702], [138.5481450166508, 223.9966175028976], [138.4797104557917, 224.0695348609318], [138.41122057554898, 224.14240053970707], [138.34267577580644, 224.21521422907347], [138.2740753567441, 224.28797640929344], [138.20542061829065, 224.3606868898795], [138.1367102603336, 224.4333453713192], [138.06794578290666, 224.50595194304998], [137.99912648599485, 224.57850656533435], [137.93025246957944, 224.6510091881349], [137.8613236244767, 224.72343532149074], [137.79234018641654, 224.79588024532023], [137.72330131136658, 224.86822653993164], [137.65420711678306, 224.94052075528413], [137.58505979439707, 225.0127408405543], [137.5158580606562, 225.08493065622656], [137.44660170730668, 225.1570681923775], [137.37729093433356, 225.229153408932], [137.30792584171803, 225.3011862558527], [137.2385826294435, 225.37316667456457], [137.16911059756933, 225.44509485158005], [137.09958424594402, 225.51697036896167], [137.03000367462377, 225.58879337667193], [136.96036878358242, 225.66056380474836], [136.8906797728049, 225.73228161311596], [136.82093664228373, 225.8039467817747], [136.75113821828288, 225.87536268115093], [136.68128802194292, 225.9471190199657], [136.6113827320858, 226.01862598942296], [136.54142342242122, 226.09008014913388], [136.47141009293424, 226.16148145909847], [136.40134294360234, 226.23282985924175], [136.33122187442177, 226.3041253396012], [136.26104698536625, 226.37536783013934], [136.19081837642835, 226.44655731081866], [136.12053594758922, 226.51769373167667], [136.05019989883394, 226.58877705263842], [135.97974073015234, 226.6598072597663], [135.90929744152342, 226.7307842709354], [135.83880053292955, 226.8017080522082], [135.76831930434338, 226.87257851759728], [135.69771535578212, 226.94339573900248], [135.62705788721465, 227.01415962047395], [135.55633779981915, 227.08487330542386], [135.48557339288178, 227.15553488698993], [135.41475566426945, 227.22613867854747], [135.34388471556844, 227.29668891005878], [135.27296034678244, 227.3671855915988], [135.20198285771647, 227.43762820305506], [135.1309532485392, 227.5080171940526], [135.05986951940454, 227.57835297534132], [134.98856693627414, 227.64854480868996], [134.91737748949566, 227.71883355961944], [134.84602587738502, 227.78894812134848], [134.7748929013339, 227.859158801096], [134.7036528713392, 227.92922565097848], [134.63225111920087, 227.9992334815025], [134.56080754733682, 228.06918871770523], [134.48930045662598, 228.13909370772393], [134.41774034565393, 228.20894467762136], [134.34612731440563, 228.27874158736006], [134.2744607628324, 228.34848430716505], [134.2027426909828, 228.41817296628628], [134.1309717988045, 228.48780742521132], [134.05914848628615, 228.5573876537901], [133.98727255343155, 228.62691366209765], [133.91534610020304, 228.69638534934649], [133.84336602653335, 228.76580253669914], [133.77133273254617, 228.83516555400553], [133.69924691813648, 228.9044741210032], [133.62710888331176, 228.9737282575797], [133.55491862804575, 229.04292789373494], [133.4826761523272, 229.11207299946904], [133.41038135613738, 229.1811635248194], [133.33803443946127, 229.25019942971107], [133.26563310228775, 229.31918068500653], [133.19318214462027, 229.3881072989058], [133.12067906640277, 229.45697912234638], [133.04812356753771, 229.5257958954408], [132.97550994830306, 229.5945583603265], [132.90272363388428, 229.66333369997366], [132.8301400480514, 229.73191856358437], [132.75737726697858, 229.80051615439402], [132.68455686592986, 229.8690604868074], [132.61169054364444, 229.93754819643723], [132.5387725020314, 230.00598437545813], [132.46579823851116, 230.0743621455581], [132.39277695421174, 230.14268451328695], [132.31970414992097, 230.210953580332], [132.24657982421388, 230.2791655466935], [132.1734039777842, 230.34732226237136], [132.10018371061645, 230.4154236847031], [132.02690512269658, 230.48346977890117], [131.95357071393443, 230.55146030402807], [131.88018858464815, 230.61939610704633], [131.80675583522424, 230.68727821904326], [131.73327206416647, 230.7551026501693], [131.65973717172233, 230.82287006046175], [131.58615115839808, 230.8905817999206], [131.5125213245832, 230.95823890580823], [131.4388330701662, 231.02584108359974], [131.3650937944191, 231.09338639052015], [131.29130359823438, 231.1608772065319], [131.2174648803256, 231.22831010073514], [131.1435686420809, 231.29568877650468], [131.06962938315803, 231.36301231840304], [130.99563560383152, 231.4302814607427], [130.9215909026274, 231.49749227217393], [130.8474972805655, 231.5646474719465], [130.77335123770985, 231.63174723137297], [130.699154473854, 231.6987909998158], [130.6249071888218, 231.7657783072001], [130.5506092829057, 231.83270993356325], [130.4762616552806, 231.89958367856795], [130.40180058140362, 231.96633410610622], [130.32741713835733, 232.03316673453878], [130.2529173481518, 232.09987362659263], [130.17836413653015, 232.16652341867538], [130.10376360351054, 232.23311615849963], [130.02911584979432, 232.29965371602776], [129.95441497504814, 232.36613520347225], [129.87966287913684, 232.43256026012068], [129.80486176204153, 232.4989288351481], [129.73000992366482, 232.5652406691919], [129.65510846405917, 232.63149590183968], [129.58015758289451, 232.69769365301644], [129.50515618095469, 232.76383601313455], [129.43010685803705, 232.82992244121908], [129.35500551357936, 232.89595143880763], [129.27985324767528, 232.96192325548765], [129.20465226086094, 233.027839320434], [129.12940165252135, 233.0936979939844], [129.05410122285906, 233.15949981621378], [128.97875117186283, 233.22524475704705], [128.9031780274137, 233.29074053152272], [128.82790180571845, 233.3565635946756], [128.75240299054406, 233.42213742128334], [128.6768547541069, 233.48765455642], [128.60125759629824, 233.55311470989818], [128.52561041700565, 233.61851758213032], [128.4498480170212, 233.68386529756623], [128.3741020049606, 233.74918080685444], [128.29830666132858, 233.81441213463603], [128.22246329621242, 233.87958618042163], [128.1465697096499, 233.9447030450362], [128.07062679132835, 234.00973522814417], [127.99469986100573, 234.07473540525442], [127.91865890984116, 234.13968002511848], [127.84256903711758, 234.20456716332404], [127.76643004287249, 234.26939691994613], [127.69024222699338, 234.3341689948722], [127.61400548959276, 234.3988836881398], [127.53772093055804, 234.4635406993364], [127.46138654992686, 234.528140129212], [127.38500324766166, 234.59268187742913], [127.30857132372493, 234.6571658438753], [127.23209067815417, 234.721592128588], [127.15548392640478, 234.7860019605892], [127.07898352199803, 234.85027135270042], [127.00181865318791, 234.91463579399192], [126.92568217900572, 234.97871904961647], [126.84895912496472, 235.04285612521184], [126.77218734917719, 235.1069352190737], [126.6953671515306, 235.17095603108964], [126.61847133427688, 235.2349245714592], [126.54154549778778, 235.29884182308234], [126.46458053493902, 235.3626887893729], [126.38756735030617, 235.42647767374248], [126.31050614381425, 235.49020827611616], [126.23339671550077, 235.55388069656885], [126.15623926536571, 235.61749493502566], [126.07903369333408, 235.68105079152397], [126.00178759468034, 235.74453566321478], [125.9245148766785, 235.80796894488418], [125.8471657389571, 235.8713496552072], [125.76976877933909, 235.93467198345934], [125.69232369767451, 235.99793552975308], [125.61483149411329, 236.06114069371336], [125.5372911686555, 236.1242874757152], [125.45970332122609, 236.18737567553364], [125.38206775182508, 236.25040529324366], [125.30438466045246, 236.31337632877026], [125.2266541470332, 236.37628858207594], [125.14887591167987, 236.4391423532732], [125.07092084450152, 236.50191129077632], [124.99273477073942, 236.56466271490552], [124.91481526909614, 236.6273397390651], [124.83693011990053, 236.68988995033362], [124.75914529387283, 236.75250192398542], [124.68121203583064, 236.81502855329308], [124.60310264585088, 236.87747004864408], [124.52494613378698, 236.9398526616617], [124.44674259952644, 237.00217609230845], [124.36849194314425, 237.06444054062183], [124.29019446464041, 237.1266460064893], [124.21184986390242, 237.18879219002338], [124.13345834096776, 237.25087919114912], [124.05499220138839, 237.31292182025288], [123.97653502839596, 237.37487534598796], [123.89800313879633, 237.4367845997386], [123.819424426925, 237.49863447104337], [123.74077041459668, 237.5602164705669], [123.66212713640485, 237.6221561660903], [123.58340845771852, 237.68382788986997], [123.504643356723, 237.74544013105378], [123.42582333450636, 237.80699579282907], [123.3469631903551, 237.86849296964593], [123.26805782254458, 237.92992706341718], [123.18908682290123, 237.99127628179434], [123.11007541309823, 238.0525984153234], [123.03106548469518, 238.11387094829342], [122.9519757273103, 238.17506621119384], [122.87283964746621, 238.23620159146094], [122.79365724516293, 238.29727708909468], [122.7144292205879, 238.35829320383255], [122.63515477344117, 238.41924913597467], [122.55583440379772, 238.48014508533345], [122.47646801169506, 238.5409811519464], [122.39705579709566, 238.60175723573855], [122.3176096570362, 238.66246543224793], [122.23810539736836, 238.72312135054844], [122.15855571524126, 238.78371738587813], [122.07896021065494, 238.84425353838702], [121.99931918342185, 238.90472930796258], [121.91963243361702, 238.96514489467984], [121.83990016124045, 239.02550029846384], [121.76012226629211, 239.08579551935202], [121.68029894873453, 239.1460304572694], [121.60043010853019, 239.20620501225346], [121.52042102712329, 239.26626971982017], [121.44050123386013, 239.3263027939017], [121.36055105211159, 239.386366579381], [121.28050132090766, 239.44629850218203], [121.2004082670193, 239.50616994122475], [121.12026769085934, 239.5659819980841], [121.0400818920526, 239.6257336718977], [120.95943789884097, 239.6849670174974], [120.87957512616126, 239.7450549702001], [120.79925435896415, 239.80462429461392], [120.71888896904522, 239.86413303575694], [120.63847825644203, 239.9235812938917], [120.55802262107953, 239.98296886886817], [120.47752206295775, 240.0422957606864], [120.39697678200164, 240.10156176927137], [120.31638687821123, 240.16076689458555], [120.23575205169902, 240.21991143674148], [120.15507280212748, 240.27899449555173], [120.07434743005922, 240.33801757165367], [119.99357893485654, 240.39697896392235], [119.91276561708207, 240.45588017299528], [119.83190817613576, 240.51471959861], [119.75100631228008, 240.573497940879], [119.67006012547759, 240.63221509976475], [119.58906961576575, 240.69087117526726], [119.50803508295705, 240.74946566727408], [119.42695672757648, 240.8079999757101], [119.34583434887406, 240.86647210065047], [119.26466704729984, 240.92488324243254], [119.18345552277879, 240.9832332007939], [119.10220007519834, 241.0415216756221], [119.02090060459605, 241.09974876695455], [118.93955721097188, 241.1579144747538], [118.85816989428838, 241.2160186990198], [118.77673625480816, 241.27406214065255], [118.6952611920059, 241.3320433978147], [118.61374180655679, 241.38996427159347], [118.53217949756078, 241.44782236146415], [118.45057326546787, 241.50561886780167], [118.36892361027806, 241.56335379041846], [118.2872302319164, 241.62102692942705], [118.2053321988192, 241.67855414517078], [118.12355297400116, 241.73610341636302], [118.04188965772494, 241.79367544409126], [117.96002038675081, 241.8511016490421], [117.87810989252964, 241.90846586944724], [117.79615507577412, 241.96577000646909], [117.71415803517161, 242.02301055932037], [117.6321177713222, 242.080189128376], [117.55003428426338, 242.13730581363595], [117.4679077739201, 242.19436041502524], [117.38573364044274, 242.25135333426877], [117.30352118356811, 242.3082838678792], [117.22126490367162, 242.36515301791894], [117.13896650019063, 242.42195928375054], [117.05662757316254, 242.47870276477403], [116.97424332303768, 242.53538466278928], [116.8918117494787, 242.59200407854644], [116.80934165274746, 242.64856170874538], [116.72682823269434, 242.70505715518618], [116.64427328913166, 242.76148991719387], [116.56167882209682, 242.81786009401839], [116.47903833170275, 242.87416798809727], [116.39635261704943, 242.93041119913067], [116.3136276798989, 242.98659442486826], [116.23086271980122, 243.0427164656101], [116.14805293574426, 243.09877462315643], [116.06519972802789, 243.15476969698219], [115.9823032962396, 243.2107005870124], [115.89936914244151, 243.26657279118416], [115.81639046445912, 243.32238051204797], [115.73336966296722, 243.37812554870365], [115.65030743781578, 243.43380750088875], [115.5672037887798, 243.48942576860327], [115.48406031687166, 243.54498305124707], [115.40087192096675, 243.6004763507328], [115.31764200140228, 243.65590656578547], [115.23436995874083, 243.7112751966299], [115.15105749260726, 243.76658124262875], [115.06770120262684, 243.821823705057], [114.9843030890244, 243.87700318316467], [114.90086335179993, 243.93211967687674], [114.81738209091591, 243.9871730861557], [114.7338592064099, 244.04216351103906], [114.6502951979818, 244.0970901513394], [114.5666908658566, 244.1519536067566], [114.48304371029694, 244.20675457822819], [114.39935503111525, 244.26149256526665], [114.31562512816151, 244.31616716775957], [114.23185480184819, 244.37077948540684], [114.14804255142533, 244.4253275187711], [114.06418897726792, 244.47981226762727], [113.98029427937595, 244.53423373190034], [113.89635855771193, 244.58859181155285], [113.8123823121258, 244.64288610639733], [113.72836464288014, 244.6971173167712], [113.6443059498624, 244.75128514252447], [113.56020633299758, 244.80538938361974], [113.47606599228568, 244.8594300399819], [113.39188442776423, 244.9134072117985], [113.30766243943316, 244.96732089876957], [113.22339982721749, 245.02117090097005], [113.13909649111724, 245.07495721843748], [113.05475263113239, 245.12867985109688], [112.97023708430979, 245.1821709481224], [112.88571919549972, 245.23581674603707], [112.80134804532946, 245.28929888891332], [112.71697215215943, 245.3429330335789], [112.63236017339366, 245.39633896676037], [112.54775467992746, 245.4497056975071], [112.46312765256286, 245.50298203632263], [112.37825335876578, 245.55608126785046], [112.29345631161317, 245.6093048704196], [112.2087098121821, 245.66238905402358], [112.12374053147914, 245.71552322117387], [112.03947694448931, 245.7683738236696], [111.95460977299187, 245.82126585251203], [111.86970267749729, 245.87409389632137], [111.78475575789307, 245.92685765506025], [111.69974321620599, 245.97956253840317], [111.61470995273291, 246.03220932951268], [111.52964336091225, 246.084780533115], [111.44453034588238, 246.1372898541216], [111.35938280711748, 246.18973588807017], [111.27419734300531, 246.24211433623594], [111.18897255467095, 246.29442819914368], [111.10370854222691, 246.346677776756], [111.01841150128523, 246.39885136674857], [110.93309503851998, 246.45096676402022], [110.8477125536344, 246.503023186046], [110.76229034445166, 246.55501482296378], [110.67682941115919, 246.60694217439857], [110.59132905368205, 246.65880504061283], [110.5057896719452, 246.71060322145667], [110.42021126598614, 246.76233681692997], [110.33459383576738, 246.8140057270328], [110.24893927986378, 246.86560615105293], [110.16325190015002, 246.9171430873775], [110.07751779715211, 246.96861794121887], [109.99174506978194, 247.02002780953978], [109.90593311811462, 247.07137289256525], [109.82008244218754, 247.12265329010773], [109.73419324185072, 247.17386860209226], [109.64826541714167, 247.22501892855632], [109.56229886824786, 247.2761047695374], [109.47629439486931, 247.3271253247355], [109.39025079723105, 247.37808119460067], [109.30416877510802, 247.42897177887036], [109.21786853803788, 247.4798225449677], [109.13170976724535, 247.530583358009], [109.04551277200558, 247.58127898537984], [108.95932323319036, 247.63185840994635], [108.8731837993216, 247.68245101572447], [108.78687203085252, 247.73295138612144], [108.70052213793618, 247.78338657081048], [108.61413412057257, 247.83375656979155], [108.52770897853662, 247.88406078268974], [108.44124511220346, 247.93430021010494], [108.3547433213855, 247.98447435173722], [108.26820350615775, 248.03458340762404], [108.18162666618265, 248.08462647739046], [108.09501140183531, 248.13460456156145], [108.00835851289067, 248.184517059837], [107.92166779946122, 248.2343642722921], [107.834939461397, 248.2841457988518], [107.7481196174019, 248.3336448597063], [107.66136891181415, 248.38351299465992], [107.57452810007048, 248.43309806338334], [107.4876495639545, 248.48261814624885], [107.40073470350362, 248.53207334273134], [107.31378161793049, 248.58146155354353], [107.22679140772249, 248.63078407827282], [107.1397635728422, 248.68004081710671], [107.05269891332705, 248.72923186974515], [106.9655981295895, 248.77835833592565], [106.87845882080468, 248.82741801654834], [106.79128268731002, 248.87641181097558], [106.70406972906801, 248.92533961920742], [106.61681994611611, 248.97420154124393], [106.52953313849187, 249.02299767716], [106.44220960608277, 249.07172772684316], [106.35484934896381, 249.1203918902935], [106.26745226705998, 249.1689899675484], [106.18001866044625, 249.2175221584954], [106.09254862874765, 249.26598746309713], [106.00504177252668, 249.31438738150337], [105.91749839155834, 249.36272131360175], [105.8299184857676, 249.41098905939228], [105.74230225515448, 249.4591906187999], [105.65464959971895, 249.50732599186216], [105.56667586360619, 249.5552462853143], [105.4789519584883, 249.60324918508582], [105.39147398421552, 249.65133429263926], [105.30367752930283, 249.69920441960755], [105.2158437496053, 249.74700846056797], [105.12797384504785, 249.79474621507052], [105.04006801559298, 249.84241758304023], [104.9521261612032, 249.89002246451457], [104.86414838195348, 249.93756105945604], [104.7761353775813, 249.98503266760218], [104.68808584846175, 250.03243828944045], [104.60000059436976, 250.07977732467089], [104.51187961538031, 250.12704997329348], [104.42372421115583, 250.17425533482074], [104.33553158214653, 250.22139461030264], [104.24730372820227, 250.26846739898917], [104.15903804947318, 250.31547410185533], [104.07073914550902, 250.36241351717618], [103.98240461664739, 250.4092865458517], [103.8940348626633, 250.4560925877319], [103.80562988366921, 250.50283194281673], [103.71718957959018, 250.54950441114374], [103.62871395053868, 250.59611029271298], [103.5402046972646, 250.64265158688664], [103.45165891800562, 250.6891235947527], [103.36307811369917, 250.7355288157484], [103.27446218430772, 250.7818671499113], [103.1858113298313, 250.82813859716637], [103.09712555015736, 250.87434285751362], [103.00840494539844, 250.9204802309156], [102.91964951551702, 250.9665506173722], [102.83085936047559, 251.01255391684603], [102.74203438031164, 251.0584902293745], [102.6531747749502, 251.10435935488272], [102.56428064442872, 251.15016139333312], [102.47535178870973, 251.1958962448007], [102.38638920738067, 251.24156280891057], [102.29739360107898, 251.28716278540008], [102.20836186972988, 251.3326959754318], [102.1192952131083, 251.3781617785557], [102.03019423132667, 251.4235604945468], [101.94105912430999, 251.4688919233301], [101.85188979205827, 251.51415606494308], [101.76268613453401, 251.55935281942328], [101.67344455181248, 251.60448238812072], [101.58417204430565, 251.64954586841026], [101.49486621100124, 251.6945405611921], [101.40552665234925, 251.73946766661618], [101.31615326838717, 251.78432728471998], [101.22674595907753, 251.829119315541], [101.13730482445783, 251.87384385904176], [101.04782956456557, 251.9185010153347], [100.95832097928822, 251.9630904841199], [100.86877366930112, 252.00761406742217], [100.77919663426617, 252.05207086186664], [100.68958717287106, 252.09645736846602], [100.59994418612834, 252.14077628763263], [100.51026757415055, 252.18502791940395], [100.42055773660014, 252.22921136363004], [100.33081557317706, 252.27332581997345], [100.24103858470649, 252.31737348937153], [100.15122757085084, 252.36135347152435], [100.06138463161, 252.4052657656444], [99.97150736758412, 252.44911197263158], [99.88159826742303, 252.49288849155238], [99.7916561518018, 252.53659712284917], [99.70167978049555, 252.580237266987], [99.61167163637909, 252.62378992303348], [99.5216318239274, 252.6672936909521], [99.43156439515269, 252.71072726922188], [99.34145809166829, 252.75409496206504], [99.2513190426487, 252.79739456718295], [99.16114278801932, 252.84062588624812], [99.07093958792937, 252.88378931541308], [98.98070283230433, 252.9268846571565], [98.89043351106912, 252.96991171110722], [98.80013287411117, 253.01287017679653], [98.70979338150602, 253.05576025705182], [98.6194267234778, 253.09858254748937], [98.5290282199519, 253.1413368498642], [98.43859716077831, 253.18402276444255], [98.34813404599456, 253.22664039103688], [98.2576386655631, 253.26918962972604], [98.16711286955885, 253.31167067981622], [98.07655331749451, 253.35408224256], [97.98596615169467, 253.39643051565446], [97.89534495897227, 253.43870700150396], [97.80469057030226, 253.48091429979704], [97.71400313534713, 253.5230515104775], [97.62328939680638, 253.56512583101738], [97.53253835111832, 253.60712776554234], [97.44175561970755, 253.64906111194458], [97.35094218313648, 253.69092736985652], [97.26009617031775, 253.73272363997958], [97.16921869170129, 253.77445112189747], [97.0783096573621, 253.81611001564391], [96.98736916730016, 253.85770032118143], [96.89639734144048, 253.899221838465], [96.80539326993312, 253.94067496783583], [96.71359279008183, 253.98202599585198], [96.62253016671619, 254.02334084717], [96.53197325335263, 254.06449560883593], [96.44106787427593, 254.10579520118637], [96.34990881370474, 254.14690418865382], [96.25871873737326, 254.1879444877473], [96.16747501689561, 254.22892040695274], [96.07621705885651, 254.26982283149212], [95.98493401494424, 254.3106562654338], [95.89327658910854, 254.3511646397456], [95.80193357378808, 254.3918609961669], [95.7109005080832, 254.4327429363704], [95.61949464067975, 254.4733004163514], [95.52805817740352, 254.51378890780103], [95.43659117825449, 254.55420841069667], [95.34512353135554, 254.59455391383005], [95.25359571034839, 254.6348351395241], [95.16203772343091, 254.67504727652556], [95.07044918056563, 254.7151902249806], [94.97883027175254, 254.755263984818], [94.88718120699161, 254.79526855595893], [94.79550193628289, 254.83520393842224], [94.7037925596263, 254.87507013217038], [94.61198957770135, 254.91486896101569], [94.5202016790379, 254.95459648419975], [94.42840228438781, 254.99425471168996], [94.33657273375239, 255.03384365048376], [94.24471429709405, 255.0733632001049], [94.15282504433794, 255.1128131612772], [94.06098847495318, 255.15219210268825], [93.96888891168685, 255.19164074272672], [93.8769113608246, 255.23088243699607], [93.78505346251659, 255.26991758638127], [93.69301596960865, 255.3090205031191], [93.60094897056534, 255.34805373091677], [93.50811724592586, 255.38701884548118], [93.4167266642976, 255.425911719613], [93.32457146703564, 255.4647363804703], [93.23238738367577, 255.503491452155], [93.14017359418055, 255.54217683497453], [93.04792753873765, 255.58079302988892], [92.95565408704672, 255.61933923507195], [92.86335235910784, 255.6578154508536], [92.77102198510852, 255.69622217737265], [92.67866267489879, 255.73455901473784], [92.58627438859115, 255.77282626296417], [92.4938572261481, 255.81102382201408], [92.4014112474571, 255.84915139186518], [92.30893650263069, 255.88720927249864], [92.21643291159386, 255.92519726394454], [92.1239007643841, 255.963115466094], [92.0313400109264, 256.0009636789659], [91.93877447133158, 256.0387421936277], [91.84615718537796, 256.0764504276894], [91.75351125328892, 256.1140889724885], [91.6608369349519, 256.15165752792745], [91.56813800987919, 256.1891547925889], [91.47540710904626, 256.22658336923644], [91.38264793192788, 256.2639418564826], [91.28986057852403, 256.30123025429], [91.19704509887221, 256.3384486626397], [91.10420159289743, 256.37559688149435], [91.01132997067465, 256.4126751108877], [90.91843038212892, 256.44968315076335], [90.82550287726018, 256.4866210011027], [90.73254749610597, 256.52348876189075], [90.63956430859125, 256.56028623310124], [90.54641629448818, 256.5969861661147], [90.45337768432749, 256.6336432580987], [90.36031147776876, 256.6702299604264], [90.26721768488704, 256.70674647309403], [90.1740963756073, 256.74319259607535], [90.08108240053257, 256.7795965788035], [89.98790595853181, 256.81590212244964], [89.89470213013303, 256.8521372763607], [89.80147096533624, 256.88830204051794], [89.70821272429139, 256.92439681482387], [89.61492675662356, 256.96042059952225], [89.52161389255765, 256.9963739943018], [89.42827642370602, 257.0322612983035], [89.33490943715647, 257.0681814133766], [89.24151540400894, 257.10392393857967], [89.14809441442586, 257.13959597388646], [89.0546465683697, 257.1751974192594], [88.9611706360281, 257.21072877515974], [88.86766898721334, 257.2461895406988], [88.77414009177555, 257.28157931645035], [88.68058501978966, 257.3168983020131], [88.5870033114057, 257.35214689755946], [88.49339502639866, 257.38732450306713], [88.39976020491854, 257.42243151852097], [88.30609850647784, 257.45746664404857], [88.21241077163904, 257.4924313793349], [88.11869667051464, 257.52732602450357], [88.02495101269254, 257.562149481501], [87.93118420850945, 257.59690264642336], [87.83739000774086, 257.63158492161443], [87.74357032072409, 257.66619720635794], [87.64972462682172, 257.7007378008489], [87.5558532161837, 257.73520710497866], [87.46195730895998, 257.7696055182896], [87.3680328153008, 257.8039334423155], [87.27408356501842, 257.8381903756201], [87.1801084783754, 257.8723770186084], [87.08610761488427, 257.90649207125796], [86.99208102413249, 257.9405344335501], [86.89803057735742, 257.97450740478337], [86.80395268395937, 258.0084093863041], [86.70985736393757, 258.04224037435483], [86.6157284472557, 258.0760002749993], [86.52157406387568, 258.10968898518865], [86.42739428387247, 258.14330670489676], [86.33318911717113, 258.1768532341199], [86.23895754249669, 258.2103251732408], [86.144701802399, 258.24372932141887], [86.0504214555281, 258.2770620788194], [85.95611537203405, 258.31032384586626], [85.86178421157933, 258.34351372231185], [85.7674293746513, 258.3766330076312], [85.67304870170017, 258.4096829026341], [85.57864260133837, 258.44265970716714], [85.48421164420337, 258.4755651210164], [85.38975586037019, 258.5083993441707], [85.29527530972628, 258.5411620766074], [85.20077141234655, 258.57385351779425], [85.1062420183437, 258.6064739685372], [85.0116871173427, 258.63902242884024], [84.91710803013093, 258.6715009982082], [84.82250441554595, 258.70390657676876], [84.72787638426274, 258.73624096448054], [84.63322376616881, 258.76850386140734], [84.53854702115164, 258.80069496737667], [84.44384593943623, 258.83281488246723], [84.34912068087256, 258.864863206619], [84.25437125534816, 258.8968396398284], [84.15959770320049, 258.92874508208024], [84.06480081390453, 258.9605781330784], [83.96997918798536, 258.9923401933478], [83.87513354521792, 259.02403066261843], [83.78026406560222, 259.05564954082286], [83.68537049895077, 259.0871963280548], [83.5902189469427, 259.1184622120113], [83.49502738451235, 259.1497803109754], [83.40029579897445, 259.1814100374704], [83.3055618447995, 259.21267006482765], [83.21055030405662, 259.24385929627465], [83.11551493612797, 259.27497603665176], [83.02045275131374, 259.3060210870801], [82.925370240176, 259.3369959451259], [82.83026459147744, 259.3678973118431], [82.73513558589309, 259.39872698731403], [82.63998333331041, 259.42948467149756], [82.54480788395442, 259.4601709643748], [82.44960900752514, 259.4907850660321], [82.35438642409758, 259.52132717657446], [82.25914157355915, 259.5517969954619], [82.16387387617236, 259.5821952229119], [82.06858325178723, 259.61252145895435], [81.97326975044129, 259.64277580357066], [81.87756094916062, 259.67303039642405], [81.78257037484214, 259.7030634199274], [81.68718856242614, 259.7331015901451], [81.59178020244957, 259.7630662703129], [81.4963569760366, 259.79296045605065], [81.40088846468937, 259.82278815876555], [81.30541629772995, 259.85254756284655], [81.20992304017206, 259.8822253748307], [81.1144060556159, 259.9118311957074], [81.01886629398639, 259.94136482512044], [80.9233071953208, 259.9708263617798], [80.82772335961951, 260.00021580771045], [80.73211737684481, 260.02953306194115], [80.63648929699674, 260.0587781244531], [80.54083918003776, 260.08795089522397], [80.44516715274288, 260.11704277420546], [80.3494916899108, 260.14606655447045], [80.25377599116909, 260.17502124981905], [80.158038326029, 260.2039055534001], [80.06228254355273, 260.23271696377003], [79.9665013740408, 260.261456283655], [79.87069853749293, 260.29012351166], [79.77487403372166, 260.31871814778503], [79.67902798201445, 260.3472382919854], [79.5831604439463, 260.3756881442381], [79.48727146884221, 260.4040659045246], [79.39135691658998, 260.4323712743975], [79.29542520718901, 260.4606042506992], [79.19947221131459, 260.48876663497833], [79.10350039016654, 260.5168616263122], [79.0075050793577, 260.5448775264491], [78.91148866140041, 260.5728210344961], [78.81544791580737, 260.6006908516607], [78.7193927056529, 260.62849517424496], [78.6233134467002, 260.6562227058421], [78.52720844992434, 260.6838760470856], [78.43108754618714, 260.7114574942892], [78.334945895939, 260.7389682492678], [78.23878354734232, 260.7664034120029], [78.14260405208444, 260.793767481163], [78.04616243349506, 260.821016048611], [77.94993883382787, 260.84823503430005], [77.85369316652478, 260.8753803282592], [77.75766475870644, 260.9024975407443], [77.66138184819359, 260.92950094865967], [77.56507599981992, 260.9564300651715], [77.4687499036977, 260.98328518927104], [77.37240053095219, 261.0100693220943], [77.27603756120767, 261.03678146001135], [77.17965101408988, 261.06342060676474], [77.08324446974855, 261.089987161012], [76.98681782822118, 261.1164812227906], [76.89037142950775, 261.14290279197303], [76.79390520360828, 261.1692518685855], [76.69741920059775, 261.1955286526093], [76.60091350032616, 261.2217327440145], [76.50438846328097, 261.2478654426659], [76.40784350863724, 261.2739245487812], [76.31127901680746, 261.2999111622179], [76.21469777775391, 261.32582518192964], [76.11809432143944, 261.35166650996774], [76.0214717380139, 261.3774355451734], [75.9248295674398, 261.40313218771917], [75.82816810926708, 261.42875523749257], [75.73148770417077, 261.454306494366], [75.63478990185074, 261.4797851577582], [75.53807103245724, 261.5051916290456], [75.44127421655675, 261.5305274295579], [75.34451726182851, 261.55581301511864], [75.24774141091419, 261.58100210775876], [75.15094752277616, 261.60611860715767], [75.05413144490228, 261.63115581487216], [74.95729893231709, 261.65612712874497], [74.86044803350828, 261.68100184950583], [74.7636381160591, 261.70582685489524], [74.66675016202797, 261.73058098954334], [74.5698437408482, 261.7552627311115], [74.47291890300727, 261.77987337958086], [74.37597609783018, 261.80441113478287], [74.27901456516693, 261.8288755970025], [74.18203480539252, 261.8532677660522], [74.085036418507, 261.87758764208206], [73.98801480447314, 261.9018351268169], [73.89098056441524, 261.92601321628155], [73.79392839604614, 261.9501158124641], [73.69685830060335, 261.97414621536416], [73.5997702780869, 261.9981044249818], [73.50266452845925, 262.02199034124203], [73.40554105168289, 262.04580386414483], [73.30839974783282, 262.06954519372766], [73.21124091687155, 262.0932142298781], [73.11406475917406, 262.11681197252096], [73.01687067226658, 262.1387318217694], [72.91956196020352, 262.1621846141099], [72.82233322120989, 262.1855655764556], [72.72508705521753, 262.2088745453312], [72.62792066225711, 262.23211158428694], [72.53064016394224, 262.2553343660312], [72.43334261702866, 262.2784275541595], [72.33603454307837, 262.30144864623037], [72.23870624220454, 262.3243979458813], [72.14135721433226, 262.3472752532997], [72.04399185953615, 262.3700807668357], [71.94661017777877, 262.39281438648925], [71.84921126909761, 262.4154762125978], [71.75179564170521, 262.4380881449723], [71.65436337917653, 262.46060638357847], [71.55691448972406, 262.48305282841466], [71.45944917327283, 262.5054272794058], [71.36196743192279, 262.5277353365517], [71.2644230618147, 262.54996671717794], [71.16690856485458, 262.57212648659674], [71.06937840455699, 262.59571736198984], [70.97183049035043, 262.61623114382434], [70.87426741284388, 262.6381761314457], [70.77673536963408, 262.66154590752933], [70.6791402377924, 262.6833460071608], [70.5815289789519, 262.7050741128349], [70.48390199341254, 262.7267310244015], [70.38625918106187, 262.748316441898], [70.28860064178737, 262.7698300652871], [70.19092797656388, 262.79127449396856], [70.09323784876898, 262.80961872898047], [69.99553366470805, 262.83394626968425], [69.89781261860065, 262.85517501649326], [69.80007614586938, 262.87633276908235], [69.70232574636414, 262.8974191268889], [69.60455851989764, 262.9184335910005], [69.50677616703227, 262.9393776607796], [69.40884227739011, 262.96022368737795], [69.31102729107708, 262.9810785693882], [69.21291758014733, 263.0018678619154], [69.11535399957933, 263.022471349631], [69.01749539439462, 263.0430092479761], [68.91975849220134, 263.0635551006832], [68.82187085326872, 263.08400300990957], [68.72396988767461, 263.10437982412844], [68.62603859658267, 263.1246886497145], [68.52784215329719, 263.144591674704], [68.42989694638126, 263.1648583055055], [68.33193723746656, 263.1848529417262], [68.23422406533425, 263.2052122855214], [68.13623454100919, 263.22516583291997], [68.03823049006019, 263.245048385761], [67.94021231267473, 263.26486044389446], [67.84217970862785, 263.2846014074329], [67.74413347664448, 263.30426787607655], [67.64608781871111, 263.32386514450013], [67.54801323599234, 263.34339632376583], [67.44974614464982, 263.3626378752017], [67.35182459154524, 263.382247997087], [67.25370822962954, 263.40156799200497], [67.15557834213988, 263.42081979199025], [67.05743472806371, 263.44000069711797], [66.95927738770106, 263.4591115073881], [66.86110642112693, 263.47815242276323], [66.76292282826624, 263.49712324286827], [66.66472490949411, 263.5160249683406], [66.56651386481046, 263.53485759873024], [66.46826949365419, 263.5536196416124], [66.37003509609728, 263.5723112807495], [66.27178557221649, 263.590932725554], [66.17352192309926, 263.60948687565076], [66.07524554848294, 263.6279730305147], [65.97695574739264, 263.64638859040866], [65.87864971712852, 263.6647263563831], [65.78033416414013, 263.6830035259243], [65.6820056853152, 263.70121180030776], [65.58366458061622, 263.71935107942113], [65.48531075008066, 263.73742146330176], [65.38694429374605, 263.7554230519123], [65.28856881389962, 263.7733619439022], [65.19017260671721, 263.79122794365975], [65.09176867321041, 263.80902374630966], [64.99335241401701, 263.8267510535769], [64.89492463018696, 263.8444126651613], [64.79648391965787, 263.86200308158817], [64.69803088351722, 263.8795252026323], [64.59956572180246, 263.8969791282188], [64.50108833455111, 263.914364958385], [64.40259912161316, 263.931682292981], [64.30409878317604, 263.9489316317443], [64.20558581946484, 263.96611357523733], [64.10706103029203, 263.98322762316013], [64.00852431520761, 264.0002725755503], [63.909976575974014, 264.01725313207], [63.81141671071633, 264.034164293132], [63.71284541995949, 264.0510074584738], [63.61426270407851, 264.0677836280953], [63.51567406202301, 264.0844899999342], [63.41706849555622, 264.1011312781152], [63.31845130389033, 264.1177053606508], [63.21982318710023, 264.13421244727874], [63.12118354458599, 264.150650938224], [63.02252987856032, 264.16702673442353], [62.92387309044739, 264.18334363178985], [62.82520007428565, 264.19958573523627], [62.72651663202471, 264.2157582425877], [62.627822364939576, 264.2318645539937], [62.52911717291775, 264.24790436949195], [62.43040055592178, 264.2638775892698], [62.331674114251555, 264.27978501272725], [62.232936747757165, 264.2956262402769], [62.1341893564385, 264.3114012715812], [62.03543114029567, 264.32711010694004], [61.936662399403616, 264.3427529462411], [61.83696365162777, 264.35731093421776], [61.73909334228438, 264.3738377366699], [61.64029352725716, 264.38928288760974], [61.541484788230605, 264.4046640418917], [61.44266542366735, 264.4199771001534], [61.34383823502972, 264.4352259613446], [61.244998723368, 264.4504134271526], [61.14614718425713, 264.46552769746575], [61.047286722196986, 264.48058077112074], [60.948416736175034, 264.4955699483427], [60.84953662547886, 264.51049332935673], [60.7506469904834, 264.52535191393787], [60.65174703122621, 264.54014580238595], [60.55283784774471, 264.5548750942887], [60.45391914000146, 264.56953968975836], [60.35498990803396, 264.5841396891702], [60.25605215202961, 264.59867559177394], [60.15710407045107, 264.61314329824495], [60.05797848108499, 264.6275902712798], [59.95918243968336, 264.6418984207247], [59.86020728768183, 264.6561783373339], [59.761223111943494, 264.6703949573226], [59.66222941156839, 264.68454588087843], [59.563226787681444, 264.6986341077761], [59.46420644062081, 264.71266054131564], [59.36518377087286, 264.7266264757219], [59.26615227708808, 264.7405283134327], [59.167114158591346, 264.75436425362307], [59.0680664160203, 264.76813599741797], [58.9690104498999, 264.7818449442923], [58.86994576015513, 264.79549089443356], [58.770868346823846, 264.8090739493417], [58.671786510055384, 264.82259450590425], [58.57269495041268, 264.83605406610855], [58.47359846515785, 264.8494453281552], [58.374498957215806, 264.86277609133106], [58.275383826887364, 264.87604716036117], [58.176259473422164, 264.88925653284554], [58.077127496520006, 264.90240340818434], [57.97798709636851, 264.9154882866774], [57.87883867311763, 264.9285115681749], [57.77968452519218, 264.94146905181447], [57.68052005570502, 264.95436903932057], [57.58134836285589, 264.9672067295311], [57.482168447507405, 264.9799844228208], [57.38298340913431, 264.9927007180273], [57.28378874777444, 265.00535571683815], [57.18458466354029, 265.0179497191782], [57.08537295650672, 265.03048292437256], [56.98615352667373, 265.04295533245875], [56.88692507104143, 265.05535894392466], [56.7876906965096, 265.0677121576067], [56.68844960105325, 265.0800095738051], [56.58919618047284, 265.09223999462074], [56.489688286560465, 265.1042749108499], [56.39026279906709, 265.1165935961967], [56.290975820251646, 265.12866872958574], [56.19205108291085, 265.1405877271235], [56.09276494994546, 265.1525184601852], [55.99346989508075, 265.16439079658846], [55.89416901797898, 265.1762038351709], [55.794876109939224, 265.1879343707591], [55.69561588929719, 265.19963129408734], [55.596295145671945, 265.2112669401072], [55.49696937890961, 265.22284088800643], [55.39763479178542, 265.23436053920943], [55.29823858891562, 265.2458382135154], [55.19895195281319, 265.25722724672767], [55.099596999690576, 265.2685709055555], [55.00023552478096, 265.27985646682504], [54.90086752872185, 265.29108563053603], [54.80149291042575, 265.3022554967261], [54.702108670755365, 265.3133683665202], [54.602720009597846, 265.32442393796833], [54.503325324028296, 265.3354144116711], [54.40392601910911, 265.3463532871024], [54.3045203958154, 265.35724316489967], [54.20510784844721, 265.3680688452889], [54.10568897985455, 265.3788379280447], [54.00626148591252, 265.3895394140302], [53.906792453610976, 265.4001386155853], [53.8073554214572, 265.4107382051405], [53.70795048735117, 265.4213325826585], [53.60850471263559, 265.4318186754842], [53.50904981718318, 265.4422494717262], [53.409584502681554, 265.4526294718718], [53.31011486459278, 265.4629465736342], [53.21064250647923, 265.473210276413], [53.11116412744116, 265.48341818144564], [53.01168032774099, 265.49357098850726], [52.91219100741627, 265.5036687976351], [52.81269506440455, 265.51370610924226], [52.71319500541814, 265.52370082238986], [52.61368952404467, 265.53363583756675], [52.51417832155916, 265.543514554885], [52.41466179871155, 265.5533389741946], [52.315141455951746, 265.5631102949329], [52.21561589226734, 265.57282581762524], [52.11608350844597, 265.58248764287123], [52.016546004487495, 265.59209577003355], [51.917003581666904, 265.60165359903687], [51.817456636984176, 265.61115312973175], [51.717904073439385, 265.62060236253024], [51.618352788144534, 265.62999359484525], [51.518791485525426, 265.6393386309136], [51.41911680063947, 265.64846430948467], [51.31964971590122, 265.65785701022463], [51.22007164964592, 265.66703235256733], [51.12048926602846, 265.6761613965258], [51.020907268611, 265.6852536403368], [50.92131564674426, 265.69428068775244], [50.821714805303216, 265.7032555386217], [50.722113844099724, 265.71217768953215], [50.62250826354659, 265.72104824217126], [50.52260572333965, 265.7294931061401], [50.422783846926734, 265.7383747398908], [50.32337466720996, 265.7469808188611], [50.22404124885007, 265.7560171694513], [50.1244175714359, 265.7646294288585], [50.02478527568488, 265.77319279149424], [49.925148460734206, 265.781704955821], [49.825507526996375, 265.7901670216887], [49.725867074021025, 265.79857778737266], [49.626217702633866, 265.8069394563976], [49.526562407809635, 265.81523862763925], [49.426905703648046, 265.8235128994078], [49.32724537927426, 265.8317332725301], [49.22757913307592, 265.8398954478689], [49.127912870190116, 265.84801312321093], [49.0282388871299, 265.8560770014442], [48.928561085544985, 265.8640914811059], [48.82887939519803, 265.8718692622093], [48.729193721888606, 265.87995914482826], [48.62950516439206, 265.88782452851297], [48.52981188848338, 265.8956408139636], [48.43011359783759, 265.90341780129205], [48.330411786004575, 265.91113828993696], [48.230707356021796, 265.9188103795602], [48.130999308001805, 265.926434370537], [48.03128724396963, 265.9340156630166], [47.93157196028771, 265.94154455669997], [47.83185056033126, 265.94903005267383], [47.73212793929993, 265.9564593491017], [47.63240140559391, 265.9638548469944], [47.53267175133813, 265.97119554605354], [47.43293897934514, 265.9784889462784], [47.333202589877416, 265.9857357478566], [47.23346268297249, 265.9929360507506], [47.13371935874281, 266.00009015492276], [47.0339728207134, 266.00720746029754], [46.934225360034105, 266.014264366014], [46.8343406840645, 266.02128052318335], [46.73453983312663, 266.0280967489042], [46.63478032336077, 266.0350227591299], [46.53501786830752, 266.0420946704704], [46.43507163305483, 266.0489527507132], [46.33552574418661, 266.0556677808164], [46.23588266702521, 266.0624140473674], [46.13610847194809, 266.0691125630841], [46.03632995977125, 266.07576548041646], [45.93655003289456, 266.0823791982766], [45.83675648959391, 266.08894912123986], [45.73696962866774, 266.09547204169394], [45.63717935120442, 266.10195086342605], [45.537386857428714, 266.1083861859862], [45.43759122566587, 266.11472020971604], [45.3377928993782, 266.12106883445733], [45.23799185366573, 266.12736566021476], [45.13818939816588, 266.133636386499], [45.03838294484132, 266.13991291428283], [44.93857375041705, 266.1460798430869], [44.83876184744295, 266.15222397290506], [44.73894112826949, 266.1583249060262], [44.63913848381986, 266.1643584323647], [44.53931872973391, 266.1703662651174], [44.439499060498036, 266.1763336978355], [44.33967557498744, 266.1822577319816], [44.23984827398962, 266.1881404675556], [44.14002106331682, 266.19399740309393], [44.04018873134444, 266.19979754054873], [43.94035408384724, 266.205556278869], [43.84051701898778, 266.21126871809247], [43.74067764291598, 266.2169512581806], [43.640835749256865, 266.22258689920943], [43.54099174127296, 266.2281843410285], [43.4411455178392, 266.2337405836755], [43.34129682689348, 266.2388501272163], [43.24144592627235, 266.2447338716403], [43.14159425791408, 266.25017031632063], [43.041739274743605, 266.25556726224124], [42.941882075073295, 266.26092020899006], [42.842023164190635, 266.2662432563784], [42.74216173688319, 266.2715225047074], [42.64229829498842, 266.276762853789], [42.54243279076891, 266.2818370036323], [42.44256536739934, 266.2871267542105], [42.34269568170507, 266.29225030562543], [42.2428241820235, 266.29733655771787], [42.14295076839207, 266.30238561052545], [42.04307534021078, 266.30739586408583], [41.94319609736732, 266.31236701907386], [41.84331384543677, 266.3170472751699], [41.74343857585558, 266.321947128663], [41.64355598221226, 266.3270494849168], [41.54367107966931, 266.33186144201613], [41.44378476726399, 266.3366470996422], [41.343897646571236, 266.3414106575699], [41.24400650690376, 266.3461236170011], [41.1441149536239, 266.3508002765849], [41.04422338676906, 266.3554407361712], [40.94432860352697, 266.36003749696056], [40.844432109597506, 266.3646057583895], [40.74453400205567, 266.36913772042095], [40.64463438138901, 266.3736346830173], [40.54473314722247, 266.37809564621625], [40.444830300081065, 266.3825220100176], [40.344927439289705, 266.38691197382155], [40.245021265861084, 266.39126823886534], [40.145113979420074, 266.39558980432406], [40.04520508000422, 266.39987677038516], [39.94529480461358, 266.40396113694817], [39.84538328134795, 266.40818450398876], [39.74547004889493, 266.4123833716686], [39.64555576001692, 266.41669843975274], [39.54564019437663, 266.42080880830133], [39.44571691827443, 266.42489127973937], [39.345798032834466, 266.42894884952915], [39.24588003224443, 266.4329660189843], [39.14595841864215, 266.43694848979186], [39.0460350709526, 266.4408400612433], [38.94606753290367, 266.4447573492679], [38.84587894922052, 266.44828632015714], [38.746151472492244, 266.4521004181517], [38.64626334566245, 266.45631427641797], [38.546332360923515, 266.4601070507264], [38.4464015631346, 266.4638650249623], [38.34648244719489, 266.467574594814], [38.24658442562867, 266.4712691567543], [38.14665139198996, 266.4749315318219], [38.04671734668884, 266.4785628072666], [37.94678188863787, 266.4821600832388], [37.84684572019947, 266.48572965947534], [37.74690824028616, 266.4892686362016], [37.64696964818546, 266.4927751133426], [37.547025447947675, 266.49625989258516], [37.4470858335346, 266.49970687010534], [37.34714480929662, 266.5031276481524], [37.24720166743384, 266.5065014269902], [37.1472723194201, 266.50985880065423], [37.0473286667949, 266.51320387968156], [36.947394294219066, 266.51649575522515], [36.847448113956574, 266.5197671351952], [36.74750333118149, 266.5230318146407], [36.6475594266189, 266.5262383937528], [36.547610713994175, 266.52942347466643], [36.44766109071949, 266.53258015591956], [36.34771646301948, 266.53572503529847], [36.24776511882001, 266.538825917193], [36.14781296389555, 266.5418981993895], [36.04786009854624, 266.54494268185056], [35.947906022697, 266.5479591647635], [35.84795273646023, 266.5509479473784], [35.74799734017361, 266.55390993078265], [35.64804113364957, 266.5568446144889], [35.548084117000656, 266.55975229849696], [35.448126890264234, 266.562633082582], [35.34816846405286, 266.5655152671169], [35.24820881717915, 266.5683423521057], [35.14824886115548, 266.5711450372086], [35.04828819279439, 266.57391482257646], [34.94832731558333, 266.5766610080209], [34.848364628997416, 266.5793821941421], [34.74840193247405, 266.58207688026516], [34.64843840205077, 266.5846811666946], [34.54847178655268, 266.58732525428377], [34.44850676104201, 266.5899426412748], [34.34853692638171, 266.59253563006746], [34.24857040657113, 266.5951682176199], [34.14860265361071, 266.5977124056286], [34.04863549116274, 266.600231293414], [33.948667719152354, 266.60272468142625], [33.84870083821693, 266.60519426910264], [33.74873185409416, 266.6076553575671], [33.64876125455902, 266.6100753466345], [33.548789045686505, 266.6124704363036], [33.44878942849098, 266.61484333624935], [33.348817702593465, 266.61719302573414], [33.24884676690843, 266.6195166149208], [33.14887282297363, 266.62181820523404], [33.04889877078884, 266.6240977955863], [32.94892420971661, 266.6263536861277], [32.84894903964445, 266.62858557689583], [32.74875856261244, 266.63079894840257], [32.648674010060404, 266.6330775801923], [32.54869941475076, 266.6352421707402], [32.448833877021, 266.6372936203835], [32.34909195878254, 266.6393970236734], [32.24911383857318, 266.6414952155383], [32.14913611723878, 266.64359040725355], [32.049157180979506, 266.6456457994216], [31.94917873632022, 266.6476787914037], [31.849196579248712, 266.6496786847756], [31.749216318539595, 266.65166887743567], [31.649237355580368, 266.6536530696087], [31.54925627960884, 266.65560256257163], [31.449156536670785, 266.65737350002206], [31.349175848436715, 266.65929029283734], [31.249190316740624, 266.6610911874607], [31.149327192773143, 266.66317933620155], [31.049342478476945, 266.66502663052165], [30.949358856080664, 266.66685232443086], [30.84937492625943, 266.6686582184539], [30.749388688788372, 266.6704437133409], [30.649404344454695, 266.67221090751667], [30.54934058662664, 266.6739421314699], [30.449354520468148, 266.6756511262873], [30.349369253447065, 266.6773578208048], [30.249387085713266, 266.67906261416], [30.14940090556732, 266.68073430901745], [30.04949362492829, 266.68240467428757], [29.94950652978241, 266.6840363694854], [29.84951932826158, 266.6856510647219], [29.749305764631544, 266.6873668448511], [29.649319650323122, 266.68894743967746], [29.54929747521757, 266.6900992479965], [29.449570454753257, 266.6919300456805], [29.349583019369987, 266.6934544409984], [29.249594978811757, 266.69496503654216], [29.149605930453617, 266.69645483246245], [29.049616575570525, 266.6979272284965], [28.949626810637454, 266.6993728246823], [28.849636642816932, 266.7008107210188], [28.749646571846398, 266.70224021731826], [28.649617859803868, 266.70329352808176], [28.549367894139124, 266.70473722184255], [28.44970490662044, 266.70638919550163], [28.349710160162886, 266.7076173935403], [28.24971820269252, 266.7090828905498], [28.149727398384584, 266.7104234871181], [28.049735178626833, 266.71172288421417], [27.949729149345018, 266.71299688648713], [27.849736127974836, 266.71429198388364], [27.74974289336714, 266.7155517813576], [27.64974945298451, 266.7167961789076], [27.549755806864397, 266.7180252765337], [27.44976195508181, 266.71923927423586], [27.349767597599254, 266.7204380721266], [27.249773826241693, 266.72159986979494], [27.149779266134146, 266.72279166776116], [27.049784692039168, 266.72394616573], [26.949789913144173, 266.7250878637748], [26.84979492828674, 266.7262136618956], [26.74981163630352, 266.7273204556303], [26.649816119833645, 266.7283619539446], [26.549823146526023, 266.72951855131333], [26.449829840443527, 266.73058774880064], [26.34983412307369, 266.7316268471901], [26.24983820660384, 266.7326683456544], [26.149842189646563, 266.73370854415634], [26.049846065189286, 266.7347287426971], [25.949849733869513, 266.73573064131415], [25.84985329763728, 266.73671943996965], [25.749856956755025, 266.73769583858854], [25.64985881096041, 266.73865913788336], [25.54986185961576, 266.73960763672915], [25.449864904146068, 266.74054513557576], [25.349867443801458, 266.7414696346108], [25.24986997888186, 266.7423819336467], [25.14987270938724, 266.74328203260836], [25.049875302542688, 266.7440825316146], [24.949877757835566, 266.7450487306842], [24.84988027476598, 266.7459126297235], [24.749882587346434, 266.74676492883856], [24.64988539621436, 266.7476073277669], [24.54988770001981, 266.7484362268836], [24.44985529959021, 266.7492538390136], [24.34984789983386, 266.7500732417685], [24.249849890776915, 266.7508678410002], [24.149852177519904, 266.7516512401201], [24.049731324521616, 266.7523286854099], [23.94969135548004, 266.753230000384], [23.84970317618499, 266.75383729591636], [23.749738441250713, 266.75456288266537], [23.649739807743828, 266.75529228212656], [23.549783092608948, 266.7560706658719], [23.449906865580914, 266.756817319432], [23.34990862033652, 266.75751541874547], [23.249910264104642, 266.75818421809845], [23.14990991034793, 266.758859618201], [23.04991306131592, 266.7595476169902], [22.949917401596394, 266.7602071153313], [22.849918937677046, 266.7608554147232], [22.7499205701952, 266.7614942140783], [22.649922099113383, 266.7621234134716], [22.549918121356967, 266.76273481492865], [22.449925007824817, 266.7632508123049], [22.349927729317898, 266.76386021124955], [22.24992915227361, 266.76447351068146], [22.149925263717194, 266.765056112103], [22.04992739792283, 266.7656994112703], [21.949929502803514, 266.7662645104431], [21.84899200370026, 266.76681916196594], [21.749932201952475, 266.76736640935314], [21.649933397120748, 266.76790560886525], [21.549934789101513, 266.76843630830297], [21.449921582545784, 266.7689709132154], [21.34992296830154, 266.7694850126543], [21.24992385124486, 266.76999161228116], [21.149925230963106, 266.77048961172113], [21.049926547344057, 266.7708187111731], [20.949927968387215, 266.7714269106053], [20.849929249343035, 266.77192821008254], [20.74993071732382, 266.7723949094873], [20.64993222766725, 266.7727079088653], [20.549933289198037, 266.7731574084212], [20.449937545253675, 266.77359230677814], [20.349941302471848, 266.7740303053224], [20.249981057512485, 266.774462490367], [20.149981509555857, 266.77488669014974], [20.049982059049256, 266.77530408989537], [19.949983005842626, 266.7757142894916], [19.849983851586018, 266.7761216891255], [19.749983893616985, 266.77651918906], [19.64998613013529, 266.7769019881706], [19.54999576616558, 266.77728348450637], [19.449996204109, 266.7776700842917], [19.349996735752427, 266.7780398840407], [19.249997365895865, 266.77840568375245], [19.149999093414237, 266.77876448305227], [19.050001619057525, 266.7791182820524], [18.950002081075922, 266.77956908183324], [18.85000266168194, 266.77980278155434], [18.7500029901004, 266.78016398137896], [18.65000343531881, 266.7805699811629], [18.550004844312213, 266.78087938057865], [18.450005155668208, 266.7811950804065], [18.350004769386743, 266.7815170804964], [18.250007184605124, 266.781843079536], [18.150006890036167, 266.78214297958993], [18.050007193592137, 266.7824378794192], [17.95000769561065, 266.7827286791737], [17.85000789504167, 266.7830125790413], [17.75000585828542, 266.78319997974063], [17.650011992103458, 266.7835755773893], [17.550012185984485, 266.7838446772579], [17.45001237802802, 266.78410887712687], [17.350012568271552, 266.78436827699613], [17.24993000647106, 266.7844889078876], [17.149930493114567, 266.78473870764503], [17.05001322853974, 266.7851185765684], [16.950013411883276, 266.785359576439], [16.849898045585036, 266.7854682196313], [16.750013873845376, 266.78582897614353], [16.650014152351446, 266.7860570759775], [16.55001492928247, 266.78628097562427], [16.45001510463854, 266.7865006754963], [16.349998278008314, 266.78671508174375], [16.249919443957452, 266.7869097112425], [16.149919514813547, 266.78711741115296], [16.049919584244634, 266.78732131106364], [15.949918144713365, 266.7875013115385], [15.849918411069439, 266.7876970113748], [15.749918282750542, 266.78790691136], [15.649994752251246, 266.78811098262076], [15.549698239703162, 266.7883629937528], [15.450011976037246, 266.7884785760325], [15.350012436318337, 266.78865807579484], [15.250012895211938, 266.78883387555754], [15.150013152455557, 266.7890052753955], [15.050013408199163, 266.7891726752338], [14.94999725640642, 266.78931998122334], [14.849997309712563, 266.7894808811371], [14.749997270593639, 266.78966198108685], [14.649995616662437, 266.78980358163943], [14.549995666518555, 266.78995528155383], [14.449992405162448, 266.79007708270774], [14.349998069155646, 266.79026648051945], [14.249998316199282, 266.7904106803593], [14.149992765343313, 266.79056048237385], [14.049405264240846, 266.79057640260976], [13.949993454630572, 266.7908360819795], [13.849991397361833, 266.7909687826827], [13.750008438104317, 266.79109617622373], [13.650007267973052, 266.7911945765918], [13.550014304478736, 266.7913106738837], [13.450016055647268, 266.7914658731603], [13.35001619402837, 266.79158697303933], [13.250016331547045, 266.7917057729185], [13.150017968090566, 266.7918219722353], [13.05001820380923, 266.79193597207734], [12.950014838890667, 266.7920482732694], [12.85001227025947, 266.79215067416226], [12.750012203278146, 266.79225747411726], [12.650013939409206, 266.79237257339673], [12.5500151701778, 266.7924733728646], [12.450015301171476, 266.79257477274507], [12.350015331490113, 266.79267437266304], [12.250015361058814, 266.7927719725812], [12.149954360706857, 266.7927897953799], [12.049953888963046, 266.79288389548583], [11.949955106156665, 266.7929484949563], [11.850015461896021, 266.7931158722571], [11.750017198102086, 266.7932311715365], [11.65001712388326, 266.7933186714929], [11.550018849026856, 266.79340447077436], [11.450018472633047, 266.7934861708436], [11.350018397064247, 266.79357007080023], [11.249972216661178, 266.7936410880452], [11.150017541576688, 266.7937262709768], [11.050004755133813, 266.793781175698], [10.950004476452506, 266.7938567757302], [10.850003584571283, 266.79389717598985], [10.75000360551499, 266.79397177590965], [10.650000538983875, 266.7940797769895], [10.550000258465076, 266.7941504770221], [10.44999987749631, 266.7942199770922], [10.349999496040027, 266.79428817716246], [10.250010214432962, 266.7943559730702], [10.150009833464168, 266.79442547314034], [10.050009350882931, 266.7944906732482], [9.950008767589168, 266.7945539733938], [9.850008384182928, 266.7946169734644], [9.750007200926717, 266.794680373835], [9.650006317257976, 266.79474267409313], [9.550009631113966, 266.79479837277677], [9.450010147670099, 266.7948612725098], [9.350003320014395, 266.7948062749887], [9.250008779057595, 266.79498247287637], [9.150010800188682, 266.79505757204606], [9.050010514157378, 266.7951135720797], [8.949876299073082, 266.7950921223311], [8.849874613454432, 266.7951492228896], [8.749874726598136, 266.7952030227733], [8.64987433962935, 266.7952565228446], [8.549974062628536, 266.79533658537656], [8.449971174609942, 266.79538728638556], [8.349970686591206, 266.79543798649445], [8.250008614582185, 266.79553137220046], [8.15000832682594, 266.79558277223435], [8.050008138019678, 266.79563137223096], [7.9500078490633825, 266.79567957226504], [7.850007655419631, 266.7957152722626], [7.750007364663389, 266.79575867229704], [7.6500108796068105, 266.79581727090545], [7.5500113896380014, 266.7958627706398], [7.450012299594135, 266.7959080702241], [7.3498987715334465, 266.7958520127155], [7.249645584732434, 266.7959060075865], [7.149644064463843, 266.79587070807656], [7.050011173644208, 266.7959138703363], [6.950011182662934, 266.7959566702583], [6.850011091606689, 266.79599927021786], [6.74999559545148, 266.7960282759533], [6.649987491233304, 266.79603577891527], [6.549989504339379, 266.7960894780865], [6.450010421531601, 266.7961540701695], [6.349770229742205, 266.7961947601665], [6.250011038181469, 266.79623596978877], [6.149983146189697, 266.79627608017347], [6.0499820468834855, 266.7962966805095], [5.9499798549273635, 266.7963368812567], [5.849978261733696, 266.79637378177915], [5.7499762764900595, 266.79643188245007], [5.649974375271398, 266.7964473830865], [5.549972482640271, 266.7964857837213], [5.449968500396778, 266.7965518851417], [5.34996741192802, 266.7966013854757], [5.249965719821887, 266.79664118603546], [5.1499633071658195, 266.79662618686154], [5.049961729309615, 266.7967039873811], [4.949959542753476, 266.7967585881272], [4.849957550572327, 266.79679818879947], [4.749957051941095, 266.7968205889104], [4.649945358898151, 266.79685789322036], [4.549943872829459, 266.7969137937039], [4.449942381210775, 266.7969548941885], [4.349929988430375, 266.7969928987609], [4.24993957798597, 266.7969837950865], [4.149938385167275, 266.79702169545885], [4.049938592385956, 266.7970596953062], [3.9499376168547258, 266.7971436956003], [3.8499488239226594, 266.7971812913228], [3.7499478243914837, 266.7972012916213], [3.649946531422785, 266.7972387920312], [3.5499456375540603, 266.7972738922913], [3.449944644660377, 266.7973115925887], [3.3499436372166826, 266.79731049288876], [3.2499419436480252, 266.7973463934487], [3.1499378653795134, 266.79742309490587], [3.0499380723357206, 266.7974603947533], [2.9499318795923557, 266.79749849700056], [2.8499408875979384, 266.7975385935478], [2.749940494554181, 266.7975758936202], [2.649940207997929, 266.79763049365386], [2.550021214985975, 266.79766786320135], [2.4500196183047933, 266.7976954637244], [2.35002142863587, 266.79774176297116], [2.250021435442079, 266.79777866289356], [2.1499135371559532, 266.79780200327934], [2.049913743999639, 266.7978390031268], [1.9499144509182713, 266.7978762027867], [1.8499146577619854, 266.79791320263416], [1.7499514628406416, 266.7979454887569], [1.6499515696093567, 266.79798228864183], [1.5500214808356532, 266.798030962351], [1.450021487566886, 266.7980676622734], [1.349973190176513, 266.7980933803091], [1.2499591911712287, 266.79811478548265], [1.1500042997742526, 266.7981564684922], [1.0500042906178066, 266.79841746843636], [0.9500044975365256, 266.7984546682838], [0.8500041144677652, 266.7985185683543], [0.7496608798483919, 266.79817839696545], [0.6499476965842348, 266.798508389355], [0.5500559037953394, 266.7985463487024], [0.4500490112770592, 266.7985850512123], [0.3500419483462167, 266.7987026537915], [0.2500344533529528, 266.79873475652676], [0.15002654553475736, 266.79873265941444], [0.050018452679069014, 266.79877046237425]]}","{\"moduleType\": \"AT2050_0500\", \"comment\": \"First 90 degree half. Coordinates in mm. 2D Y-axis points DOWN. Sampling: 0.1mm.\", \"lengthMm\": 250.0, \"samplingMm\": 0.1, \"axisYDirection\": \"down\", \"points\": [[0.0, 0.0], [0.1, 0.0], [0.2, 0.0], [0.3, 0.0], [0.4, 0.0], [0.5, 0.0], [0.6, 0.0], [0.7, 0.0], [0.8, 0.0], [0.9, 0.0], [1.0, 0.0], [1.1, 0.0], [1.2, 0.0], [1.3, 0.0], [1.4, 0.0], [1.5, 0.0], [1.6, 1e-07], [1.7, 1e-07], [1.8, 1e-07], [1.9, 1e-07], [2.0, 2e-07], [2.1, 2e-07], [2.2, 3e-07], [2.3, 4e-07], [2.4, 5e-07], [2.5, 6e-07], [2.6, 7e-07], [2.7, 9e-07], [2.8, 1e-06], [2.9, 1.2e-06], [3.0, 1.5e-06], [3.1, 1.7e-06], [3.2, 2e-06], [3.3, 2.4e-06], [3.4, 2.8e-06], [3.5, 3.2e-06], [3.6, 3.7e-06], [3.7, 4.2e-06], [3.8, 4.8e-06], [3.9, 5.5e-06], [4.0, 6.2e-06], [4.1, 7e-06], [4.2, 7.9e-06], [4.3, 8.9e-06], [4.4, 1e-05], [4.5, 1.11e-05], [4.6, 1.24e-05], [4.7, 1.38e-05], [4.8, 1.53e-05], [4.9, 1.69e-05], [5.0, 1.87e-05], [5.1, 2.07e-05], [5.2, 2.27e-05], [5.3, 2.5e-05], [5.4, 2.74e-05], [5.5, 3e-05], [5.6, 3.28e-05], [5.7, 3.58e-05], [5.8, 3.9e-05], [5.9, 4.24e-05], [6.0, 4.61e-05], [6.099999999, 5e-05], [6.199999999, 5.41e-05], [6.299999999, 5.86e-05], [6.399999999, 6.33e-05], [6.499999999, 6.83e-05], [6.599999999, 7.36e-05], [6.699999999, 7.93e-05], [6.799999999, 8.53e-05], [6.899999998, 9.16e-05], [6.999999998, 9.83e-05], [7.099999998, 0.0001054], [7.199999998, 0.0001129], [7.299999997, 0.0001209], [7.399999997, 0.0001292], [7.499999997, 0.000138], [7.599999996, 0.0001473], [7.699999996, 0.000157], [7.799999995, 0.0001673], [7.899999995, 0.0001781], [7.999999994, 0.0001894], [8.099999993, 0.0002013], [8.199999992, 0.0002138], [8.299999992, 0.0002268], [8.399999991, 0.0002405], [8.49999999, 0.0002549], [8.599999988, 0.0002699], [8.699999987, 0.0002856], [8.799999986, 0.000302], [8.899999984, 0.0003192], [8.999999983, 0.0003371], [9.099999981, 0.0003558], [9.199999979, 0.0003753], [9.299999977, 0.0003957], [9.399999975, 0.0004169], [9.499999972, 0.000439], [9.59999997, 0.000462], [9.699999967, 0.000486], [9.799999964, 0.0005109], [9.89999996, 0.0005368], [9.999999957, 0.0005638], [10.09999995, 0.0005918], [10.19999995, 0.0006209], [10.29999994, 0.0006511], [10.39999994, 0.0006825], [10.49999993, 0.0007151], [10.59999993, 0.0007488], [10.69999992, 0.0007838], [10.79999992, 0.0008201], [10.89999991, 0.0008577], [10.9999999, 0.0008967], [11.09999989, 0.000937], [11.19999988, 0.0009787], [11.29999987, 0.0010219], [11.39999986, 0.0010666], [11.49999985, 0.0011128], [11.59999984, 0.0011606], [11.69999983, 0.0012099], [11.79999982, 0.0012609], [11.8999998, 0.0013136], [11.99999979, 0.001368], [12.09999977, 0.0014242], [12.19999976, 0.0014821], [12.29999974, 0.0015419], [12.39999972, 0.0016036], [12.4999997, 0.0016672], [12.59999968, 0.0017327], [12.69999965, 0.0018003], [12.79999963, 0.0018699], [12.8999996, 0.0019416], [12.99999958, 0.0020155], [13.09999955, 0.0020916], [13.19999952, 0.0021699], [13.29999949, 0.0022504], [13.39999945, 0.0023333], [13.49999941, 0.0024186], [13.59999938, 0.0025063], [13.69999934, 0.0025965], [13.79999929, 0.0026892], [13.89999925, 0.0027845], [13.9999992, 0.0028825], [14.09999915, 0.0029831], [14.1999991, 0.0030864], [14.29999904, 0.0031925], [14.39999898, 0.0033015], [14.49999892, 0.0034133], [14.59999885, 0.0035281], [14.69999878, 0.0036459], [14.79999871, 0.0037668], [14.89999863, 0.0038908], [14.99999855, 0.0040179], [15.09999847, 0.0041483], [15.19999838, 0.004282], [15.29999828, 0.004419], [15.39999818, 0.0045595], [15.49999808, 0.0047034], [15.59999797, 0.0048508], [15.69999786, 0.0050018], [15.79999774, 0.0051565], [15.89999761, 0.0053148], [15.99999748, 0.005477], [16.09999734, 0.005643], [16.1999972, 0.0058129], [16.29999705, 0.0059868], [16.39999689, 0.0061647], [16.49999672, 0.0063467], [16.59999655, 0.0065329], [16.69999637, 0.0067233], [16.79999618, 0.0069181], [16.89999598, 0.0071172], [16.99999577, 0.0073207], [17.09999556, 0.0075288], [17.19999533, 0.0077414], [17.2999951, 0.0079587], [17.39999485, 0.0081807], [17.49999459, 0.0084076], [17.59999432, 0.0086393], [17.69999404, 0.0088759], [17.79999375, 0.0091176], [17.89999345, 0.0093643], [17.99999313, 0.0096163], [18.0999928, 0.0098735], [18.19999245, 0.010136], [18.2999921, 0.0104039], [18.39999172, 0.0106772], [18.49999133, 0.0109562], [18.59999093, 0.0112408], [18.69999051, 0.0115311], [18.79999007, 0.0118272], [18.89998961, 0.0121291], [18.99998914, 0.0124371], [19.09998865, 0.012751], [19.19998813, 0.0130711], [19.2999876, 0.0133974], [19.39998705, 0.01373], [19.49998647, 0.014069], [19.59998588, 0.0144145], [19.69998526, 0.0147665], [19.79998461, 0.0151251], [19.89998395, 0.0154904], [19.99998325, 0.0158626], [20.09998253, 0.0162417], [20.19998179, 0.0166277], [20.29998102, 0.0170208], [20.39998022, 0.0174211], [20.49997939, 0.0178287], [20.59997852, 0.0182436], [20.69997763, 0.0186659], [20.79997671, 0.0190958], [20.89997575, 0.0195333], [20.99997476, 0.0199786], [21.09997373, 0.0204316], [21.19997267, 0.0208926], [21.29997157, 0.0213616], [21.39997043, 0.0218387], [21.49996926, 0.0223239], [21.59996804, 0.0228175], [21.69996678, 0.0233195], [21.79996547, 0.02383], [21.89996413, 0.024349], [21.99996274, 0.0248768], [22.0999613, 0.0254134], [22.19995981, 0.0259588], [22.29995827, 0.0265133], [22.39995668, 0.0270768], [22.49995504, 0.0276496], [22.59995335, 0.0282317], [22.6999516, 0.0288231], [22.79994979, 0.0294241], [22.89994793, 0.0300347], [22.999946, 0.0306551], [23.09994402, 0.0312852], [23.19994197, 0.0319253], [23.29993986, 0.0325755], [23.39993768, 0.0332358], [23.49993543, 0.0339064], [23.59993311, 0.0345873], [23.69993072, 0.0352788], [23.79992825, 0.0359808], [23.89992571, 0.0366935], [23.9999231, 0.0374171], [24.0999204, 0.0381515], [24.19991762, 0.038897], [24.29991476, 0.0396537], [24.39991181, 0.0404216], [24.49990877, 0.0412009], [24.59990565, 0.0419918], [24.69990243, 0.0427942], [24.79989911, 0.0436083], [24.8998957, 0.0444343], [24.99989219, 0.0452723], [25.09988858, 0.0461223], [25.19988486, 0.0469845], [25.29988104, 0.0478591], [25.3998771, 0.048746], [25.49987306, 0.0496456], [25.59986889, 0.0505578], [25.69986462, 0.0514828], [25.79986022, 0.0524207], [25.8998557, 0.0533716], [25.99985105, 0.0543358], [26.09984627, 0.0553132], [26.19984136, 0.056304], [26.29983632, 0.0573083], [26.39983114, 0.0583263], [26.49982581, 0.0593581], [26.59982035, 0.0604038], [26.69981473, 0.0614635], [26.79980897, 0.0625373], [26.89980304, 0.0636255], [26.99979697, 0.0647281], [27.09979073, 0.0658452], [27.19978432, 0.066977], [27.29977775, 0.0681235], [27.399771, 0.069285], [27.49976408, 0.0704616], [27.59975698, 0.0716534], [27.69974969, 0.0728604], [27.79974222, 0.074083], [27.89973455, 0.0753211], [27.99972669, 0.0765749], [28.09971863, 0.0778446], [28.19971037, 0.0791302], [28.29970189, 0.080432], [28.39969321, 0.08175], [28.4996843, 0.0830844], [28.59967518, 0.0844353], [28.69966583, 0.0858029], [28.79965624, 0.0871873], [28.89964643, 0.0885886], [28.99963637, 0.0900069], [29.09962606, 0.0914425], [29.19961551, 0.0928954], [29.29960469, 0.0943658], [29.39959362, 0.0958538], [29.49958229, 0.0973596], [29.59957068, 0.0988833], [29.69955879, 0.100425], [29.79954663, 0.1019848], [29.89953417, 0.103563], [29.99952142, 0.1051597], [30.09950838, 0.106775], [30.19949503, 0.108409], [30.29948136, 0.1100619], [30.39946739, 0.1117338], [30.49945309, 0.1134249], [30.59943846, 0.1151353], [30.69942349, 0.1168652], [30.79940819, 0.1186147], [30.89939254, 0.1203839], [30.99937653, 0.1221731], [31.09936016, 0.1239823], [31.19934343, 0.1258116], [31.29932632, 0.1276613], [31.39930883, 0.1295315], [31.49929095, 0.1314224], [31.59927268, 0.133334], [31.699254, 0.1352665], [31.79923492, 0.1372201], [31.89921542, 0.139195], [31.99919549, 0.1411912], [32.09917513, 0.1432089], [32.19915433, 0.1452483], [32.29913309, 0.1473096], [32.39911138, 0.1493928], [32.49908922, 0.1514981], [32.59906658, 0.1536257], [32.69904347, 0.1557758], [32.79901986, 0.1579484], [32.89899576, 0.1601438], [32.99897115, 0.162362], [33.09894603, 0.1646033], [33.19892039, 0.1668678], [33.29889422, 0.1691557], [33.3988675, 0.171467], [33.49884024, 0.173802], [33.59881241, 0.1761608], [33.69878402, 0.1785436], [33.79875505, 0.1809505], [33.89872549, 0.1833816], [33.99869534, 0.1858372], [34.09866458, 0.1883174], [34.1986332, 0.1908224], [34.29860119, 0.1933522], [34.39856855, 0.1959071], [34.49853526, 0.1984872], [34.59850131, 0.2010927], [34.69846669, 0.2037237], [34.79843139, 0.2063804], [34.89839541, 0.209063], [34.99835872, 0.2117716], [35.09832132, 0.2145063], [35.19828319, 0.2172674], [35.29824433, 0.2200549], [35.39820472, 0.2228691], [35.49816436, 0.2257101], [35.59812322, 0.2285781], [35.69808131, 0.2314732], [35.7980386, 0.2343955], [35.89799508, 0.2373454], [35.99795074, 0.2403228], [36.09790558, 0.243328], [36.19785957, 0.2463611], [36.2978127, 0.2494223], [36.39776496, 0.2525118], [36.49771635, 0.2556297], [36.59766683, 0.2587762], [36.69761641, 0.2619514], [36.79756506, 0.2651555], [36.89751278, 0.2683887], [36.99745955, 0.2716512], [37.09740535, 0.274943], [37.19735018, 0.2782644], [37.29729402, 0.2816155], [37.39723684, 0.2849964], [37.49717865, 0.2884075], [37.59711942, 0.2918487], [37.69705914, 0.2953203], [37.7969978, 0.2988225], [37.89693537, 0.3023554], [37.99687185, 0.3059191], [38.09680722, 0.3095139], [38.19674145, 0.3131399], [38.29667455, 0.3167973], [38.39660649, 0.3204862], [38.49653725, 0.3242068], [38.59646682, 0.3279592], [38.69639518, 0.3317437], [38.79632232, 0.3355604], [38.89624822, 0.3394094], [38.99617285, 0.343291], [39.09609622, 0.3472053], [39.19601829, 0.3511524], [39.29593905, 0.3551325], [39.39585848, 0.3591459], [39.49577657, 0.3631926], [39.59569329, 0.3672728], [39.69560863, 0.3713868], [39.79552257, 0.3755346], [39.89543509, 0.3797164], [39.99534618, 0.3839324], [40.09525581, 0.3881828], [40.19516397, 0.3924677], [40.29507063, 0.3967873], [40.39497577, 0.4011418], [40.49487939, 0.4055313], [40.59478145, 0.409956], [40.69468194, 0.414416], [40.79458084, 0.4189116], [40.89447812, 0.4234429], [40.99437377, 0.4280101], [41.09426776, 0.4326133], [41.19416008, 0.4372527], [41.29405071, 0.4419285], [41.39393962, 0.4466408], [41.49382679, 0.4513899], [41.5937122, 0.4561758], [41.69359582, 0.4609987], [41.79347765, 0.4658589], [41.89335765, 0.4707564], [41.9932358, 0.4756915], [42.09311208, 0.4806643], [42.19298646, 0.485675], [42.29285893, 0.4907237], [42.39272946, 0.4958106], [42.49259803, 0.5009359], [42.59246461, 0.5060998], [42.69232919, 0.5113024], [42.79219173, 0.5165439], [42.89205221, 0.5218244], [42.99191061, 0.5271442], [43.0917669, 0.5325033], [43.19162106, 0.537902], [43.29147307, 0.5433404], [43.3913229, 0.5488187], [43.49117052, 0.5543371], [43.59101591, 0.5598957], [43.69085904, 0.5654947], [43.79069989, 0.5711342], [43.89053844, 0.5768145], [43.99037464, 0.5825357], [44.09020849, 0.5882979], [44.19003995, 0.5941013], [44.28986899, 0.5999461], [44.38969559, 0.6058325], [44.48951972, 0.6117606], [44.58934136, 0.6177306], [44.68916047, 0.6237427], [44.78897703, 0.629797], [44.88879101, 0.6358936], [44.98860238, 0.6420328], [45.08841112, 0.6482148], [45.18821719, 0.6544396], [45.28802056, 0.6607075], [45.38782121, 0.6670185], [45.48761911, 0.673373], [45.58741423, 0.679771], [45.68720653, 0.6862127], [45.786996, 0.6926983], [45.88678259, 0.6992279], [45.98656628, 0.7058017], [46.08634704, 0.7124199], [46.18612483, 0.7190826], [46.28589963, 0.72579], [46.3856714, 0.7325423], [46.48544012, 0.7393396], [46.58520575, 0.746182], [46.68496826, 0.7530698], [46.78472761, 0.7600032], [46.88448378, 0.7669821], [46.98423674, 0.774007], [47.08398644, 0.7810778], [47.18373286, 0.7881947], [47.28347597, 0.795358], [47.38321572, 0.8025678], [47.4829521, 0.8098242], [47.58268506, 0.8171274], [47.68241457, 0.8244775], [47.78214059, 0.8318748], [47.8818631, 0.8393194], [47.98158205, 0.8468114], [48.08129742, 0.854351], [48.18100916, 0.8619384], [48.28071724, 0.8695737], [48.38042163, 0.8772571], [48.48012229, 0.8849887], [48.57981919, 0.8927687], [48.67951229, 0.9005973], [48.77920155, 0.9084745], [48.87888693, 0.9164007], [48.97856841, 0.9243758], [49.07824593, 0.9324002], [49.17791948, 0.9404739], [49.277589, 0.9485971], [49.37725446, 0.95677], [49.47691583, 0.9649926], [49.57657305, 0.9732652], [49.67622611, 0.981588], [49.77587496, 0.989961], [49.87551955, 0.9983845], [49.97515986, 1.0068585], [50.07479583, 1.0153833], [50.17442744, 1.0239589], [50.27405465, 1.0325856], [50.3736774, 1.0412636], [50.47329568, 1.0499928], [50.57290942, 1.0587736], [50.6725186, 1.067606], [50.77212317, 1.0764902], [50.87172309, 1.0854264], [50.97131832, 1.0944147], [51.07090882, 1.1034552], [51.17049456, 1.1125482], [51.27007547, 1.1216937], [51.36965154, 1.1308919], [51.4692227, 1.140143], [51.56878893, 1.1494471], [51.66835018, 1.1588043], [51.7679064, 1.1682149], [51.86745755, 1.1776789], [51.9670036, 1.1871965], [52.06654449, 1.1967678], [52.16608019, 1.206393], [52.26561064, 1.2160723], [52.36513582, 1.2258058], [52.46465566, 1.2355935], [52.56417013, 1.2454358], [52.66367919, 1.2553326], [52.76318278, 1.2652842], [52.86268087, 1.2752908], [52.9621734, 1.2853523], [53.06166034, 1.2954691], [53.16114164, 1.3056412], [53.26061725, 1.3158687], [53.36008712, 1.3261519], [53.45955122, 1.3364908], [53.55900949, 1.3468856], [53.65846189, 1.3573365], [53.75790836, 1.3678435], [53.85734888, 1.3784069], [53.95678338, 1.3890267], [54.05621181, 1.3997031], [54.15563415, 1.4104362], [54.25505032, 1.4212262], [54.35446029, 1.4320731], [54.45386402, 1.4429773], [54.55326144, 1.4539387], [54.65265251, 1.4649575], [54.75203719, 1.4760338], [54.85141542, 1.4871678], [54.95078716, 1.4983597], [55.05015236, 1.5096095], [55.14951096, 1.5209173], [55.24886292, 1.5322834], [55.34820819, 1.5437078], [55.44754672, 1.5551907], [55.54687845, 1.5667322], [55.64620334, 1.5783324], [55.74552134, 1.5899915], [55.8448324, 1.6017096], [55.94413646, 1.6134868], [56.04343348, 1.6253233], [56.1427234, 1.6372192], [56.24200618, 1.6491745], [56.34128175, 1.6611895], [56.44055008, 1.6732642], [56.5398111, 1.6853989], [56.63906476, 1.6975935], [56.73831102, 1.7098483], [56.83754982, 1.7221634], [56.93678111, 1.7345388], [57.03600483, 1.7469747], [57.13522094, 1.7594713], [57.23442938, 1.7720286], [57.33363009, 1.7846468], [57.43282302, 1.7973259], [57.53200813, 1.8100662], [57.63118535, 1.8228677], [57.73035463, 1.8357306], [57.82951592, 1.8486549], [57.92866916, 1.8616409], [58.0278143, 1.8746885], [58.12695128, 1.8877979], [58.22608006, 1.9009693], [58.32520057, 1.9142028], [58.42431276, 1.9274984], [58.52341658, 1.9408563], [58.62251196, 1.9542766], [58.72159886, 1.9677594], [58.82067722, 1.9813048], [58.91974698, 1.994913], [59.01880809, 2.008584], [59.11786048, 2.022318], [59.21690412, 2.036115], [59.31593893, 2.0499752], [59.41496486, 2.0638987], [59.51398186, 2.0778857], [59.61298987, 2.0919361], [59.71198883, 2.1060501], [59.81097869, 2.1202278], [59.90995938, 2.1344694], [60.00893085, 2.1487749], [60.10789305, 2.1631444], [60.20684591, 2.1775781], [60.30578938, 2.192076], [60.4047234, 2.2066382], [60.50364792, 2.2212649], [60.60256286, 2.2359562], [60.70146819, 2.2507121], [60.80036383, 2.2655327], [60.89924973, 2.2804182], [60.99812583, 2.2953687], [61.09699207, 2.3103842], [61.1958484, 2.3254649], [61.29469475, 2.3406108], [61.39353107, 2.355822], [61.4923573, 2.3710987], [61.59117337, 2.3864409], [61.68997923, 2.4018487], [61.78877482, 2.4173223], [61.88756007, 2.4328617], [61.98633494, 2.448467], [62.08509936, 2.4641383], [62.18385327, 2.4798757], [62.2825966, 2.4956792], [62.38132931, 2.5115491], [62.48005133, 2.5274853], [62.5787626, 2.543488], [62.67746305, 2.5595572], [62.77615264, 2.575693], [62.87483129, 2.5918956], [62.97349896, 2.6081649], [63.07215557, 2.6245012], [63.17080106, 2.6409044], [63.26943538, 2.6573747], [63.36805847, 2.6739121], [63.46667026, 2.6905168], [63.56527069, 2.7071887], [63.66385971, 2.7239281], [63.76243725, 2.7407349], [63.86100324, 2.7576092], [63.95955763, 2.7745512], [64.05810036, 2.791561], [64.15663136, 2.8086385], [64.25515058, 2.8257838], [64.35365795, 2.8429971], [64.4521534, 2.8602785], [64.55063689, 2.8776279], [64.64910834, 2.8950455], [64.7475677, 2.9125313], [64.84601489, 2.9300855], [64.94444987, 2.9477081], [65.04287257, 2.9653991], [65.14128292, 2.9831587], [65.23968087, 3.0009868], [65.33806634, 3.0188837], [65.43643929, 3.0368493], [65.53479965, 3.0548837], [65.63314734, 3.072987], [65.73148232, 3.0911593], [65.82980452, 3.1094006], [65.92811388, 3.127711], [66.02641033, 3.1460905], [66.12469382, 3.1645392], [66.22296427, 3.1830573], [66.32122163, 3.2016446], [66.41946584, 3.2203014], [66.51769682, 3.2390277], [66.61591453, 3.2578235], [66.71411889, 3.2766889], [66.81230984, 3.2956239], [66.91048733, 3.3146287], [67.00865128, 3.3337033], [67.10680164, 3.3528476], [67.20493833, 3.3720619], [67.30306131, 3.3913461], [67.4011705, 3.4107003], [67.49926585, 3.4301246], [67.59734728, 3.449619], [67.69541475, 3.4691836], [67.79346817, 3.4888184], [67.8915075, 3.5085234], [67.98953267, 3.5282988], [68.08754361, 3.5481446], [68.18554026, 3.5680608], [68.28352256, 3.5880475], [68.38149045, 3.6081048], [68.47944386, 3.6282326], [68.57738273, 3.648431], [68.675307, 3.6687001], [68.7732166, 3.68904], [68.87111148, 3.7094506], [68.96899156, 3.7299321], [69.06685678, 3.7504843], [69.16470709, 3.7711076], [69.26254242, 3.7918017], [69.36036271, 3.8125669], [69.45816788, 3.8334031], [69.55595789, 3.8543103], [69.65373267, 3.8752887], [69.75149215, 3.8963383], [69.84923627, 3.917459], [69.94696497, 3.938651], [70.04467819, 3.9599143], [70.14237586, 3.9812489], [70.24005792, 4.0026548], [70.33772431, 4.0241321], [70.43537497, 4.0456809], [70.53300982, 4.0673011], [70.63062882, 4.0889928], [70.7282319, 4.1107561], [70.82581899, 4.1325909], [70.92339003, 4.1544973], [71.02094496, 4.1764754], [71.11848372, 4.1985251], [71.21600625, 4.2206465], [71.31351248, 4.2428396], [71.41100234, 4.2651045], [71.50847579, 4.2874412], [71.60593275, 4.3098497], [71.70337317, 4.33233], [71.80079698, 4.3548822], [71.89820411, 4.3775063], [71.99559452, 4.4002023], [72.09296813, 4.4229702], [72.19032488, 4.4458102], [72.28766471, 4.4687221], [72.38498757, 4.491706], [72.48229338, 4.514762], [72.57958209, 4.5378901], [72.67685363, 4.5610902], [72.77410795, 4.5843624], [72.87134498, 4.6077068], [72.96856465, 4.6311234], [73.06576692, 4.6546121], [73.16295171, 4.6781729], [73.26011897, 4.701806], [73.35726863, 4.7255114], [73.45440064, 4.7492889], [73.55151493, 4.7731388], [73.64861144, 4.7970609], [73.74569011, 4.8210553], [73.84275088, 4.845122], [73.93979369, 4.869261], [74.03681848, 4.8934724], [74.13382518, 4.9177561], [74.23081374, 4.9421122], [74.3277841, 4.9665406], [74.42473619, 4.9910415], [74.52166996, 5.0156147], [74.61858534, 5.0402604], [74.71548227, 5.0649785], [74.8123607, 5.089769], [74.90922057, 5.1146319], [75.00606181, 5.1395673], [75.10288436, 5.1645752], [75.19968817, 5.1896555], [75.29647317, 5.2148083], [75.3932393, 5.2400336], [75.48998652, 5.2653313], [75.58671474, 5.2907016], [75.68342393, 5.3161443], [75.78011401, 5.3416596], [75.87678493, 5.3672473], [75.97343662, 5.3929076], [76.07006904, 5.4186403], [76.16668212, 5.4444456], [76.26327579, 5.4703235], [76.35985001, 5.4962738], [76.45640471, 5.5222966], [76.55293984, 5.548392], [76.64945533, 5.5745599], [76.74595114, 5.6008003], [76.84242719, 5.6271133], [76.93888343, 5.6534988], [77.0353198, 5.6799568], [77.13173625, 5.7064873], [77.22813271, 5.7330903], [77.32450913, 5.7597659], [77.42086545, 5.7865139], [77.51720161, 5.8133345], [77.61351756, 5.8402276], [77.70981323, 5.8671932], [77.80608857, 5.8942313], [77.90234353, 5.9213418], [77.99857803, 5.9485249], [78.09479204, 5.9757805], [78.19098548, 6.0031085], [78.2871583, 6.030509], [78.38331045, 6.057982], [78.47944187, 6.0855274], [78.5755525, 6.1131452], [78.67164228, 6.1408356], [78.76771116, 6.1685983], [78.86375908, 6.1964335], [78.95978598, 6.2243411], [79.05579181, 6.2523211], [79.15177651, 6.2803735], [79.24774002, 6.3084982], [79.34368229, 6.3366954], [79.43960327, 6.3649649], [79.53550289, 6.3933068], [79.63138109, 6.4217211], [79.72723783, 6.4502076], [79.82307305, 6.4787665], [79.91888669, 6.5073977], [80.0146787, 6.5361012], [80.11044901, 6.564877], [80.20619758, 6.5937251], [80.30192434, 6.6226455], [80.39762925, 6.651638], [80.49331225, 6.6807029], [80.58897328, 6.7098399], [80.68461228, 6.7390492], [80.78022921, 6.7683306], [80.875824, 6.7976842], [80.9713966, 6.82711], [81.06694696, 6.856608], [81.16247502, 6.886178], [81.25798072, 6.9158202], [81.35346402, 6.9455345], [81.44892485, 6.9753209], [81.54436316, 7.0051794], [81.6397789, 7.0351099], [81.73517201, 7.0651125], [81.83054243, 7.0951871], [81.92589012, 7.1253337], [82.02121501, 7.1555523], [82.11651706, 7.1858429], [82.21179621, 7.2162054], [82.3070524, 7.2466399], [82.40228558, 7.2771463], [82.49749569, 7.3077246], [82.59268269, 7.3383749], [82.68784651, 7.3690969], [82.7829871, 7.3998909], [82.87810441, 7.4307567], [82.97319839, 7.4616943], [83.06826897, 7.4927037], [83.16331611, 7.5237849], [83.25833975, 7.5549379], [83.35333983, 7.5861626], [83.44831631, 7.617459], [83.54326913, 7.6488272], [83.63819823, 7.6802671], [83.73310356, 7.7117786], [83.82798506, 7.7433619], [83.92284269, 7.7750167], [84.01767638, 7.8067432], [84.11248609, 7.8385413], [84.20727176, 7.870411], [84.30203333, 7.9023522], [84.39677076, 7.934365], [84.49148398, 7.9664494], [84.58617294, 7.9986053], [84.68083759, 8.0308326], [84.77547788, 8.0631315], [84.87009375, 8.0955018], [84.96468515, 8.1279435], [85.05925202, 8.1604567], [85.15379431, 8.1930413], [85.24831196, 8.2256973], [85.34280493, 8.2584246], [85.43727315, 8.2912233], [85.53171658, 8.3240933], [85.62613516, 8.3570346], [85.72052883, 8.3900473], [85.81489755, 8.4231312], [85.90924126, 8.4562863], [86.0035599, 8.4895127], [86.09785342, 8.5228103], [86.19212177, 8.5561792], [86.28636489, 8.5896192], [86.38058274, 8.6231303], [86.47477524, 8.6567126], [86.56894236, 8.690366], [86.66308404, 8.7240906], [86.75720022, 8.7578862], [86.85129085, 8.7917529], [86.94535588, 8.8256906], [87.03939526, 8.8596994], [87.13340892, 8.8937792], [87.22739681, 8.9279299], [87.32135889, 8.9621517], [87.41529509, 8.9964444], [87.50920537, 9.030808], [87.60308968, 9.0652425], [87.69694795, 9.099748], [87.79078014, 9.1343242], [87.88458619, 9.1689714], [87.97836605, 9.2036894], [88.07211967, 9.2384781], [88.16584699, 9.2733377], [88.25954796, 9.308268], [88.35322252, 9.3432691], [88.44687063, 9.3783409], [88.54049223, 9.4134834], [88.63408726, 9.4486966], [88.72765567, 9.4839805], [88.82119741, 9.519335], [88.91471243, 9.5547601], [89.00820068, 9.5902558], [89.10166208, 9.6258222], [89.19509658, 9.6614592], [89.28850414, 9.6971667], [89.38188471, 9.7329448], [89.47523825, 9.7687933], [89.56856467, 9.8047123], [89.66186393, 9.8407019], [89.75513599, 9.8767619], [89.84838079, 9.9128923], [89.94159828, 9.9490931], [90.0347884, 9.9853643], [90.12795111, 10.0217059], [90.22108634, 10.0581178], [90.31419405, 10.0946001], [90.40727425, 10.1311524], [90.50032674, 10.1677753], [90.59335155, 10.2044684], [90.68634863, 10.2412317], [90.77931796, 10.2780652], [90.87225941, 10.3149689], [90.96517299, 10.3519428], [91.05805858, 10.3889869], [91.15091618, 10.4261012], [91.24374572, 10.4632855], [91.33654715, 10.5005399], [91.42932043, 10.5378644], [91.5220655, 10.575259], [91.6147823, 10.6127236], [91.70747091, 10.6502578], [91.80013103, 10.6878624], [91.89276272, 10.7255369], [91.98536593, 10.7632813], [92.07794062, 10.8010957], [92.17048672, 10.83898], [92.26300429, 10.8769339], [92.35549305, 10.9149579], [92.44795306, 10.9530518], [92.54038428, 10.9912156], [92.63278665, 11.0294491], [92.72516012, 11.0677524], [92.81750464, 11.1061254], [92.90982016, 11.1445681], [93.00210662, 11.1830806], [93.09436398, 11.2216627], [93.18659218, 11.2603144], [93.27879116, 11.2990359], [93.37096087, 11.3378269], [93.46310127, 11.3766875], [93.55521231, 11.4156176], [93.64729412, 11.4546168], [93.73934626, 11.493686], [93.83136886, 11.5328247], [93.9233619, 11.5720329], [94.01532526, 11.6113106], [94.10725892, 11.6506578], [94.19916284, 11.6900744], [94.29103697, 11.7295604], [94.38288125, 11.7691158], [94.47469564, 11.8087406], [94.56648003, 11.8484347], [94.65823446, 11.8881981], [94.74995883, 11.9280307], [94.8416531, 11.9679326], [94.93331721, 12.0079037], [95.02495112, 12.0479441], [95.11655477, 12.0880536], [95.20812821, 12.128232], [95.29967132, 12.1684794], [95.39118383, 12.2087964], [95.48266587, 12.2491825], [95.57411726, 12.289638], [95.66553817, 12.3301623], [95.75692844, 12.3707556], [95.84828804, 12.4114179], [95.9396169, 12.4521492], [96.03091497, 12.4929495], [96.12218253, 12.533818], [96.2134189, 12.5747561], [96.30462432, 12.615763], [96.39579875, 12.6568389], [96.48694214, 12.6979835], [96.57805444, 12.739197], [96.66913589, 12.7804785], [96.76018585, 12.8218295], [96.85120455, 12.8632492], [96.94219193, 12.9047377], [97.03314797, 12.9462949], [97.12407261, 12.9879207], [97.21496579, 13.0296152], [97.30582746, 13.0713783], [97.39665758, 13.11321], [97.48745609, 13.1551102], [97.57822273, 13.1970794], [97.66895779, 13.2391169], [97.75966112, 13.2812227], [97.85033264, 13.323397], [97.94097228, 13.3656398], [98.03158006, 13.4079509], [98.12215634, 13.4503293], [98.21270008, 13.4927772], [98.30321172, 13.5352936], [98.39369122, 13.5778783], [98.48413857, 13.6205312], [98.57455366, 13.6632526], [98.6649364, 13.7060423], [98.75528684, 13.7489001], [98.8456049, 13.7918262], [98.93589051, 13.8348205], [99.02614363, 13.8778829], [99.1163642, 13.9210135], [99.20655218, 13.9642122], [99.2967075, 14.007479], [99.38683013, 14.0508139], [99.47692028, 14.0942161], [99.56697731, 14.1376872], [99.65700146, 14.1812263], [99.74699272, 14.2248334], [99.83695102, 14.2685084], [99.92687629, 14.3122514], [100.0167685, 14.3560623], [100.1066276, 14.3999411], [100.1964535, 14.4438877], [100.2862462, 14.4879022], [100.3760057, 14.5319844], [100.4657318, 14.5761344], [100.5554246, 14.6203521], [100.645084, 14.6646376], [100.7347094, 14.7089917], [100.8243015, 14.7534132], [100.9138606, 14.7979008], [101.0033857, 14.8424571], [101.0928772, 14.8870808], [101.1823352, 14.9317715], [101.27176, 14.9765286], [101.3611502, 15.0213549], [101.4505065, 15.0662487], [101.539829, 15.1112097], [101.6291174, 15.1562384], [101.7183718, 15.2013346], [101.8075913, 15.2464996], [101.8967774, 15.2917307], [101.9859293, 15.337029], [102.075047, 15.3823946], [102.1641314, 15.4278256], [102.2531805, 15.4733256], [102.3421952, 15.5188929], [102.4311756, 15.5645271], [102.5201215, 15.6102288], [102.6090328, 15.6559976], [102.6979095, 15.7018334], [102.7867516, 15.7477364], [102.8755588, 15.7937068], [102.9643315, 15.8397438], [103.0530693, 15.885848], [103.1417724, 15.9320191], [103.2304405, 15.9782571], [103.3190737, 16.0245621], [103.407672, 16.0709338], [103.4962353, 16.1173724], [103.5847633, 16.1638781], [103.6732562, 16.2104507], [103.7617139, 16.2570901], [103.8501364, 16.3037962], [103.9385221, 16.3505722], [104.0268738, 16.397412], [104.1151902, 16.4443184], [104.2034711, 16.4912915], [104.2917181, 16.5383282], [104.379928, 16.5854345], [104.4681024, 16.6326074], [104.5562411, 16.6798468], [104.6443441, 16.7271528], [104.7324115, 16.7745248], [104.820443, 16.8219637], [104.9084389, 16.8694685], [104.996398, 16.9170418], [105.0843216, 16.9646804], [105.1722092, 17.0123853], [105.2600608, 17.0601567], [105.3478763, 17.1079943], [105.4356557, 17.1558982], [105.5233988, 17.2038684], [105.611107, 17.2519021], [105.6987776, 17.3000046], [105.7864119, 17.3481734], [105.8740098, 17.3964083], [105.9615713, 17.4447094], [106.0490962, 17.4930766], [106.1365846, 17.5415098], [106.2240364, 17.5900092], [106.3114515, 17.6385745], [106.3988305, 17.6872046], [106.4861721, 17.7359021], [106.573477, 17.7846654], [106.660745, 17.8334946], [106.7479761, 17.8823897], [106.8351703, 17.9313507], [106.9223276, 17.9803773], [107.0094477, 18.02947], [107.0965307, 18.0786284], [107.1835747, 18.1278564], [107.2705833, 18.1771465], [107.3575547, 18.2265022], [107.4444887, 18.2759236], [107.5313874, 18.3254066], [107.6182468, 18.3749591], [107.7050687, 18.4245772], [107.7918532, 18.4742608], [107.8786001, 18.52401], [107.9653096, 18.5738243], [108.0519813, 18.6237044], [108.1386152, 18.67365], [108.2252114, 18.7236611], [108.3117693, 18.7737386], [108.3982898, 18.8238805], [108.4847724, 18.8740877], [108.5712171, 18.9243603], [108.657623, 18.9746995], [108.7439916, 19.0251025], [108.8303231, 19.0755693], [108.9166159, 19.126102], [109.0028701, 19.1767005], [109.0890861, 19.2273642], [109.1752642, 19.2780924], [109.2614036, 19.3288862], [109.3475046, 19.3797451], [109.4335672, 19.4306689], [109.5195913, 19.4816577], [109.6055769, 19.5327115], [109.6915212, 19.5838348], [109.7774295, 19.6350184], [109.8633016, 19.6862628], [109.9491325, 19.737576], [110.0349248, 19.788954], [110.1206785, 19.8403961], [110.206393, 19.8919037], [110.2920687, 19.9434757], [110.3777053, 19.9951126], [110.4633029, 20.0468142], [110.5488614, 20.0985804], [110.6343804, 20.1504123], [110.7198606, 20.2023079], [110.8053015, 20.2542679], [110.8907032, 20.3062925], [110.9760657, 20.3583815], [111.0613887, 20.4105349], [111.1466723, 20.4627528], [111.2319166, 20.5150349], [111.3171225, 20.5673785], [111.4022878, 20.6197892], [111.4874133, 20.6722644], [111.5724992, 20.7248036], [111.657543, 20.777412], [111.7425495, 20.8300799], [111.8275165, 20.8828109], [111.9124393, 20.935614], [111.997329, 20.9884687], [112.0821801, 21.041386], [112.1669871, 21.0943743], [112.2517541, 21.1474266], [112.336481, 21.2005429], [112.4211678, 21.2537232], [112.5058144, 21.3069674], [112.5904204, 21.360276], [112.6749865, 21.413648], [112.7595123, 21.4670838], [112.8439973, 21.5205842], [112.9284425, 21.5741473], [113.012847, 21.6277743], [113.0972104, 21.6814662], [113.1815338, 21.7352207], [113.2658167, 21.7890389], [113.3500594, 21.8429192], [113.4342613, 21.8968637], [113.5184225, 21.9508717], [113.6025424, 22.0049442], [113.6866213, 22.0590802], [113.7706594, 22.1132798], [113.8546566, 22.1675427], [113.9386127, 22.2218691], [114.0225278, 22.2762589], [114.1064015, 22.3307126], [114.1902343, 22.3852291], [114.274026, 22.4398089], [114.3577763, 22.4944519], [114.4414854, 22.5491582], [114.5251532, 22.6039277], [114.6087796, 22.6587604], [114.6923645, 22.7136562], [114.7759075, 22.7686159], [114.8594094, 22.8236379], [114.9428702, 22.8787221], [115.0262889, 22.9338702], [115.1096665, 22.9890804], [115.1930018, 23.0443544], [115.2762898, 23.0997011], [115.3595414, 23.1551012], [115.442757, 23.210554], [115.525925, 23.2660796], [115.609051, 23.321668], [115.692135, 23.3773192], [115.7751769, 23.4330331], [115.8581767, 23.4888097], [115.9411344, 23.544649], [116.0240499, 23.600551], [116.1069231, 23.6565156], [116.189754, 23.7125427], [116.2725426, 23.7686325], [116.3552889, 23.8247847], [116.4379926, 23.8809994], [116.520654, 23.9372766], [116.6032727, 23.9936162], [116.6858489, 24.0500182], [116.7683825, 24.1064825], [116.8508732, 24.1630095], [116.9333214, 24.2195985], [117.0157268, 24.2762498], [117.0980895, 24.3329632], [117.1804092, 24.389739], [117.262686, 24.4465769], [117.3449198, 24.503477], [117.4271107, 24.5604391], [117.5092554, 24.6174697], [117.59136, 24.6745561], [117.6734208, 24.7317058], [117.7554386, 24.7889174], [117.8374171, 24.8461827], [117.9193485, 24.9035175], [118.001237, 24.9609135], [118.0830822, 25.0183713], [118.164885, 25.0758891], [118.2466425, 25.1334717], [118.3283552, 25.1911177], [118.4100301, 25.2488159], [118.4916578, 25.3065821], [118.5732426, 25.3644088], [118.6547825, 25.4222992], [118.7362791, 25.4802502], [118.8177319, 25.5382627], [118.899141, 25.5963365], [118.9805061, 25.654472], [119.0618273, 25.7126689], [119.1431046, 25.7709272], [119.2243378, 25.8292469], [119.3055275, 25.8876267], [119.3866666, 25.9460775], [119.4677674, 26.0045811], [119.5488301, 26.0631373], [119.6298425, 26.1217633], [119.7108106, 26.1804503], [119.7917344, 26.2391986], [119.8726138, 26.2980079], [119.9534414, 26.356891], [120.0342318, 26.4158225], [120.1149852, 26.474802], [120.1956859, 26.5338563], [120.2763428, 26.5929704], [120.3569549, 26.6521455], [120.437523, 26.7113804], [120.518046, 26.7706763], [120.5985238, 26.8300339], [120.6789568, 26.8894523], [120.7593449, 26.9489314], [120.839688, 27.0084712], [120.9199861, 27.0680717], [121.0002393, 27.1277327], [121.0804473, 27.1874543], [121.1606103, 27.2472364], [121.2407281, 27.3070791], [121.3208004, 27.3669828], [121.4008277, 27.4269464], [121.4808097, 27.4869704], [121.5607463, 27.5470547], [121.6406376, 27.6071994], [121.7204732, 27.6674189], [121.8002838, 27.7276694], [121.8800387, 27.7879948], [121.959748, 27.8483803], [122.0394124, 27.9088242], [122.1190304, 27.96933], [122.1986031, 28.0298949], [122.2781297, 28.0905209], [122.3576103, 28.1512071], [122.4370452, 28.211953], [122.5164342, 28.2727589], [122.5957774, 28.3336246], [122.6750745, 28.3945503], [122.7543256, 28.4555358], [122.8335306, 28.5165812], [122.9126885, 28.577688], [122.9918012, 28.6388529], [123.0708677, 28.7000775], [123.149888, 28.7613618], [123.228862, 28.8227057], [123.3077905, 28.8841077], [123.3866718, 28.9455708], [123.4655062, 29.007094], [123.5442945, 29.0686761], [123.6230355, 29.1303193], [123.7017301, 29.1920213], [123.7803788, 29.2537816], [123.8589808, 29.3156014], [123.9375369, 29.3774793], [124.0160454, 29.4394178], [124.094508, 29.501414], [124.1729228, 29.5634711], [124.2512908, 29.6255874], [124.3296118, 29.6877628], [124.4078858, 29.7499974], [124.4861128, 29.8122911], [124.5642928, 29.8746439], [124.6424256, 29.9370557], [124.7205113, 29.9995265], [124.798546, 30.0620638], [124.8765371, 30.1246528], [124.9544809, 30.1873006], [125.0323773, 30.2500074], [125.1102264, 30.3127728], [125.1880179, 30.375609], [125.2657722, 30.4384919], [125.3434935, 30.5014127], [125.4211528, 30.564413], [125.4987644, 30.6274718], [125.5763284, 30.6905893], [125.6538446, 30.7537654], [125.7313125, 30.8170009], [125.8087332, 30.880294], [125.8860971, 30.9436613], [125.963422, 31.007072], [126.0406989, 31.0705407], [126.1179374, 31.1340515], [126.1951186, 31.1976366], [126.2722517, 31.2612801], [126.3493367, 31.3249818], [126.4263736, 31.3887416], [126.5033623, 31.4525596], [126.5803029, 31.5164359], [126.657195, 31.5803704], [126.7340388, 31.644363], [126.8108343, 31.7084136], [126.8875814, 31.7725222], [126.9642801, 31.8366887], [127.0409302, 31.9009131], [127.1175319, 31.9651955], [127.194085, 32.0295356], [127.2705913, 32.0939294], [127.3470471, 32.158385], [127.4234543, 32.2228984], [127.4998127, 32.2874694], [127.5761224, 32.3520981], [127.6523832, 32.4167845], [127.7285951, 32.4815284], [127.8047581, 32.5463299], [127.8808719, 32.611189], [127.956937, 32.6761055], [128.032953, 32.7410793], [128.1089199, 32.8061106], [128.1848376, 32.8711993], [128.2607062, 32.9363453], [128.3365255, 33.0015486], [128.4122943, 33.066811], [128.488015, 33.1321287], [128.5636865, 33.1975036], [128.6393085, 33.2629356], [128.7148822, 33.328423], [128.7904053, 33.3939692], [128.8658789, 33.45957243], [128.9413016, 33.52523468], [129.0166755, 33.59095242], [129.0920003, 33.65672635], [129.1672758, 33.72255677], [129.2425, 33.78844583], [129.3176769, 33.85438812], [129.3928026, 33.92038942], [129.4678785, 33.98644745], [129.5429053, 34.05256105], [129.6178812, 34.11873251], [129.6928071, 34.18496053], [129.7676831, 34.2512451], [129.8425089, 34.31758616], [129.9172847, 34.38398376], [129.9919913, 34.45046471], [130.0666804, 34.51695404], [130.1413055, 34.58352084], [130.2158851, 34.65013897], [130.2904096, 34.71681849], [130.3648837, 34.78355425], [130.4393073, 34.85034621], [130.5136805, 34.91719432], [130.5880032, 34.9840986], [130.6622754, 35.05105898], [130.7364969, 35.1180754], [130.8106679, 35.18514783], [130.8847882, 35.25227622], [130.9588581, 35.31945945], [131.0328764, 35.38670062], [131.1068443, 35.45399693], [131.1807614, 35.52134907], [131.2546131, 35.58877329], [131.3284422, 35.65622148], [131.4022066, 35.72374079], [131.4759206, 35.791315], [131.549584, 35.85894381], [131.6231951, 35.92663009], [131.6967552, 35.99437192], [131.7702641, 36.0621693], [131.8437217, 36.13002213], [131.9171281, 36.19793048], [131.9904832, 36.26589414], [132.0637869, 36.33391315], [132.1370393, 36.40198751], [132.2102403, 36.4701171], [132.2833898, 36.53830192], [132.3564878, 36.60654191], [132.4295343, 36.67483704], [132.5025292, 36.74318728], [132.5754733, 36.81159053], [132.6483649, 36.88005087], [132.7212048, 36.94856622], [132.7939928, 37.01713663], [132.8667292, 37.08576182], [132.9394137, 37.15444201], [133.0120463, 37.22317699], [133.084627, 37.29196682], [133.1571557, 37.36081136], [133.2296323, 37.42971076], [133.3020461, 37.49868364], [133.3744185, 37.56769247], [133.446739, 37.63675582], [133.5189937, 37.70588213], [133.5912099, 37.77505437], [133.6633987, 37.84425311], [133.7355057, 37.91354346], [133.8075648, 37.98287944], [133.8795715, 38.05226976], [133.9515258, 38.12171438], [134.0234263, 38.19121502], [134.0952809, 38.26075769], [134.1670779, 38.33036473], [134.2388224, 38.40002593], [134.3105153, 38.46973972], [134.3821541, 38.53950964], [134.4537389, 38.60933554], [134.5252729, 38.67921279], [134.5967538, 38.74914433], [134.6681819, 38.81912979], [134.7395585, 38.8891671], [134.8108797, 38.95926164], [134.8821491, 39.02940869], [134.9533647, 39.09961111], [135.0245289, 39.16986469], [135.0956391, 39.24017309], [135.1666963, 39.31053513], [135.2377001, 39.3809509], [135.3086509, 39.45142015], [135.3795485, 39.52194294], [135.4503927, 39.59251934], [135.5211845, 39.66314745], [135.5919221, 39.73383065], [135.6626063, 39.80456724], [135.7332371, 39.87535717], [135.8038144, 39.94620041], [135.8743382, 40.01709692], [135.9448085, 40.08804666], [136.0152017, 40.159083], [136.0855645, 40.23013924], [136.1558974, 40.30121492], [136.226153, 40.37237721], [136.2963549, 40.44359257], [136.3665014, 40.51486332], [136.4365956, 40.58618469], [136.5066359, 40.65755895], [136.5766223, 40.72898609], [136.6465541, 40.80046668], [136.716434, 40.87199711], [136.7862583, 40.94358261], [136.8560292, 41.01522029], [136.9257453, 41.08691132], [136.9954072, 41.15865492], [137.0649796, 41.23049095], [137.1345677, 41.30230173], [137.2040668, 41.37420332], [137.2735116, 41.44615733], [137.3429021, 41.51816376], [137.4122382, 41.59022257], [137.4815198, 41.66233372], [137.550747, 41.73449716], [137.6199196, 41.80671285], [137.6890377, 41.87898076], [137.7581012, 41.95130084], [137.8271123, 42.0236681], [137.8960665, 42.09609231], [137.9649661, 42.16856856], [138.0338109, 42.24109683], [138.102601, 42.31367701], [138.1713361, 42.38630924], [138.2400164, 42.4589934], [138.3086417, 42.53172935], [138.3772122, 42.60451709], [138.4457277, 42.67735664], [138.514188, 42.75024804], [138.5825933, 42.82319102], [138.6509435, 42.89618566], [138.7192386, 42.9692319], [138.7874784, 43.04232988], [138.855663, 43.11547939], [138.9237924, 43.18868028], [138.9918664, 43.26193261], [139.0598852, 43.33523636], [139.1278486, 43.40859144], [139.1957565, 43.48199791], [139.2636089, 43.55545568], [139.3314057, 43.62896491], [139.3991471, 43.70252514], [139.4668329, 43.77613654], [139.5344632, 43.84979903], [139.6020365, 43.92351411], [139.6695553, 43.99727878], [139.7370185, 44.07109444], [139.804427, 44.14495969], [139.8717784, 44.2188773], [139.9390728, 44.29284803], [140.0063125, 44.36686737], [140.0734947, 44.44093967], [140.1406226, 44.51508185], [140.2076935, 44.58925304], [140.2747094, 44.66347475], [140.3416707, 44.73774703], [140.4085763, 44.81206992], [140.4754238, 44.8864432], [140.542215, 44.96086822], [140.6089501, 45.03534398], [140.6756285, 45.10986868], [140.742251, 45.18444365], [140.8088171, 45.25906899], [140.8753269, 45.33374535], [140.9417803, 45.4084696], [141.0081772, 45.48324432], [141.0745176, 45.55807038], [141.1408016, 45.63294809], [141.2070289, 45.70787422], [141.2731997, 45.78285029], [141.3393137, 45.85787633], [141.4053711, 45.93295083], [141.4713718, 46.00807584], [141.5373163, 46.08325168], [141.6032034, 46.15847818], [141.6690334, 46.23375326], [141.7348068, 46.30907815], [141.8004775, 46.38448646], [141.8661351, 46.45987628], [141.9317835, 46.53535003], [141.9973289, 46.61087329], [142.0628174, 46.68644744], [142.1282488, 46.76206954], [142.1936116, 46.83774053], [142.2589284, 46.91346138], [142.324188, 46.98923034], [142.3894041, 47.06504982], [142.4545494, 47.14091791], [142.5196374, 47.21683585], [142.584668, 47.2928029], [142.6496413, 47.36884315], [142.7145571, 47.44490845], [142.7794155, 47.52101094], [142.8442164, 47.59717423], [142.9089596, 47.67338641], [142.9736454, 47.7496345], [143.0382735, 47.82594423], [143.102844, 47.90230281], [143.1673568, 47.97871008], [143.2318123, 48.05516602], [143.2962096, 48.13167151], [143.3605206, 48.20822619], [143.4248021, 48.28482822], [143.4890542, 48.36147862], [143.5532201, 48.43817648], [143.6173279, 48.51492384], [143.6813779, 48.59171957], [143.7453697, 48.66856394], [143.8093036, 48.74545541], [143.8731794, 48.82240106], [143.936997, 48.89938253], [144.0007565, 48.97641945], [144.0644578, 49.05350445], [144.128101, 49.13063757], [144.1916805, 49.2078187], [144.2552069, 49.28504785], [144.3186749, 49.36232491], [144.3820845, 49.43966419], [144.4454357, 49.51702281], [144.5087344, 49.59444348], [144.5719688, 49.67191191], [144.6351448, 49.74942807], [144.6982621, 49.8269919], [144.7613219, 49.90460337], [144.824322, 49.98226243], [144.8872624, 50.05996978], [144.9501453, 50.13772386], [145.0129694, 50.21552973], [145.0757012, 50.29337893], [145.1384417, 50.37127539], [145.2010877, 50.44921929], [145.2636768, 50.52721047], [145.3262058, 50.6052489], [145.3886767, 50.68332883], [145.4510887, 50.76146149], [145.5134416, 50.83970429], [145.5757355, 50.91790684], [145.6379704, 50.996142], [145.7001462, 51.07446284], [145.7622643, 51.15283217], [145.8243216, 51.2312481], [145.8863198, 51.30970967], [145.9482597, 51.38821793], [146.0101391, 51.46677467], [146.0719594, 51.54537484], [146.1337201, 51.62402315], [146.1954215, 51.702719], [146.2570635, 51.78145935], [146.318646, 51.86024598], [146.3801691, 51.93908066], [146.4416325, 52.01796188], [146.5030365, 52.09688962], [146.5643807, 52.17586342], [146.6256652, 52.2548851], [146.6868901, 52.33395099], [146.7480552, 52.41306355], [146.8091607, 52.49222176], [146.8702065, 52.57142536], [146.9311923, 52.65067641], [146.9921184, 52.7299735], [147.0529846, 52.80931653], [147.1137907, 52.8887055], [147.1745369, 52.96817435], [147.2352232, 53.04762129], [147.2957902, 53.12714785], [147.3564135, 53.20672016], [147.4169196, 53.2863382], [147.4773656, 53.36602878], [147.5377514, 53.44573816], [147.5980787, 53.52546734], [147.6583439, 53.60526595], [147.7184917, 53.68511186], [147.7786937, 53.7650032], [147.838778, 53.84493996], [147.898802, 53.92492198], [147.9587655, 54.00494941], [148.0186686, 54.0850348], [148.0785113, 54.16515306], [148.1382935, 54.24531625], [148.1980151, 54.32551212], [148.2576761, 54.40576472], [148.3172765, 54.48606312], [148.3768163, 54.56640652], [148.4362954, 54.64682321], [148.4957137, 54.72725556], [148.5550713, 54.80773275], [148.6143681, 54.88825473], [148.673604, 54.96882142], [148.7327792, 55.0494328], [148.7918934, 55.1300888], [148.8509467, 55.21078939], [148.9099391, 55.29153453], [148.9688704, 55.37232424], [149.0277408, 55.4531583], [149.0865502, 55.53403676], [149.1452976, 55.61496157], [149.2039846, 55.695929], [149.2626105, 55.77694069], [149.321175, 55.85799686], [149.3796783, 55.9390971], [149.4381205, 56.02024129], [149.4965015, 56.10142955], [149.5548213, 56.1826618], [149.6130796, 56.26393812], [149.6712758, 56.34525903], [149.7294113, 56.42662311], [149.7874879, 56.5080254], [149.8455009, 56.58947673], [149.903452, 56.67097217], [149.9613416, 56.75251135], [150.0191695, 56.83409421], [150.0769359, 56.91572071], [150.1346405, 56.99739087], [150.192282, 57.07910726], [150.2498632, 57.16086446], [150.3073826, 57.24266517], [150.3648403, 57.32450928], [150.4222361, 57.40639673], [150.4795677, 57.48833088], [150.5368399, 57.57030483], [150.5940516, 57.65231936], [150.6511158, 57.73444975], [150.7082849, 57.81648462], [150.7653113, 57.8986282], [150.8222735, 57.98081782], [150.8791748, 58.0630493], [150.9360128, 58.14532496], [150.9927886, 58.22764353], [151.0495023, 58.31000496], [151.1061537, 58.3924092], [151.1627429, 58.47485622], [151.2192699, 58.55734585], [151.2757345, 58.6398783], [151.3321367, 58.72245339], [151.3884766, 58.80507106], [151.444754, 58.8877314], [151.500969, 58.9704341], [151.5571215, 59.05317913], [151.6132115, 59.13596669], [151.669239, 59.21879659], [151.7252039, 59.30166879], [151.7811062, 59.38458325], [151.8369459, 59.46753992], [151.8926891, 59.55058688], [151.9484032, 59.63362803], [152.0040546, 59.7167112], [152.0596775, 59.79978773], [152.1152035, 59.88295473], [152.1706667, 59.96616367], [152.226067, 60.0494145], [152.281389, 60.1327337], [152.3366633, 60.21606848], [152.3918743, 60.29944522], [152.4470226, 60.38286348], [152.5021241, 60.46629566], [152.5571461, 60.54979781], [152.6121034, 60.63334297], [152.6669998, 60.71692713], [152.721833, 60.80055272], [152.7766048, 60.88421761], [152.8313116, 60.96792607], [152.8859551, 61.05167583], [152.9405355, 61.1354668], [152.9950525, 61.21929895], [153.0495061, 61.3031724], [153.1038964, 61.38715506], [153.158223, 61.47110946], [153.2124864, 61.55510715], [153.2666863, 61.63914524], [153.3208235, 61.72321099], [153.3748964, 61.80733054], [153.4289058, 61.89149112], [153.4828516, 61.9756922], [153.5367338, 62.05993429], [153.5905523, 62.14421712], [153.6443072, 62.22854045], [153.6979983, 62.31290438], [153.7516258, 62.39730879], [153.8051892, 62.48175385], [153.8586892, 62.56623918], [153.9121253, 62.65076483], [153.9654976, 62.73537726], [154.0188061, 62.8199373], [154.0720505, 62.90458391], [154.1252309, 62.98927071], [154.1783474, 63.07399781], [154.2313999, 63.15876485], [154.2843883, 63.24357191], [154.3373126, 63.32841896], [154.3901729, 63.41330595], [154.442969, 63.49823283], [154.4957009, 63.58319956], [154.5483686, 63.66820608], [154.6009722, 63.75325235], [154.6534421, 63.83833832], [154.7059865, 63.92346398], [154.7583972, 64.0086292], [154.8107436, 64.09383835], [154.8630256, 64.17908281], [154.9152432, 64.26436619], [154.9673964, 64.34968943], [155.0194852, 64.43511234], [155.0713985, 64.52045401], [155.1234671, 64.60589006], [155.1753625, 64.69137038], [155.2271928, 64.77688986], [155.2789583, 64.86244846], [155.3306597, 64.94804611], [155.3822984, 65.03368278], [155.4338708, 65.11935847], [155.485378, 65.20507309], [155.5368205, 65.29082658], [155.5881982, 65.3766189], [155.6395087, 65.46244998], [155.6907568, 65.54831972], [155.741934, 65.63422821], [155.7930522, 65.72017566], [155.8441075, 65.80616145], [155.8950957, 65.89218933], [155.946019, 65.97825395], [155.9968773, 66.06435507], [156.0476775, 66.15049455], [156.0984058, 66.23667232], [156.1490687, 66.32289056], [156.1996667, 66.40914171], [156.2501996, 66.49543423], [156.3006673, 66.58176368], [156.3510698, 66.66813091], [156.4014072, 66.75453924], [156.4516791, 66.84098314], [156.5018858, 66.92746585], [156.5520271, 67.01398608], [156.6021029, 67.10054324], [156.6521141, 67.18713954], [156.7020593, 67.27377201], [156.751939, 67.36044472], [156.8017523, 67.44715399], [156.851501, 67.53390048], [156.9011841, 67.62068406], [156.9508016, 67.70750619], [157.0003535, 67.79436619], [157.0498399, 67.88126297], [157.0992606, 67.96819709], [157.1486156, 68.05516826], [157.197905, 68.142177], [157.2471286, 68.2292229], [157.2962865, 68.31633305], [157.3453797, 68.40345324], [157.3944043, 68.49058324], [157.4433648, 68.57777744], [157.4922595, 68.66500853], [157.5410896, 68.75227659], [157.5898523, 68.8395815], [157.6385491, 68.9269232], [157.6871799, 69.01430165], [157.7357447, 69.10171668], [157.7842438, 69.1891685], [157.8326764, 69.27665666], [157.8810344, 69.3641939], [157.9293353, 69.45175552], [157.9775702, 69.53935357], [158.0257462, 69.62697539], [158.0738487, 69.71464607], [158.1218851, 69.80235299], [158.1698555, 69.89009605], [158.2177592, 69.97787549], [158.2655967, 70.06569109], [158.3133677, 70.15354293], [158.3609469, 70.24154804], [158.4087109, 70.3293544], [158.4562828, 70.41731416], [158.5037883, 70.50530981], [158.5512274, 70.59334131], [158.5985998, 70.68140868], [158.6459061, 70.76951159], [158.6931456, 70.85765035], [158.7403185, 70.94582476], [158.7874247, 71.03403476], [158.8344624, 71.1222843], [158.8814353, 71.21056579], [158.9283415, 71.29888243], [158.9751811, 71.38723446], [159.0219539, 71.47562181], [159.06866, 71.56404444], [159.1152992, 71.6525023], [159.1618742, 71.74099039], [159.2083797, 71.82951876], [159.2548186, 71.91808198], [159.3011905, 72.00668022], [159.3474955, 72.09531345], [159.3937336, 72.18398161], [159.4399052, 72.27268349], [159.4860094, 72.36142134], [159.5320464, 72.45019408], [159.578017, 72.53900118], [159.6239204, 72.62784293], [159.6697562, 72.71671976], [159.7155249, 72.80563107], [159.7612264, 72.89457684], [159.8068606, 72.98355733], [159.8524275, 73.07257282], [159.8979274, 73.16162201], [159.9433603, 73.25070512], [159.9887257, 73.33982289], [160.0340238, 73.42897494], [160.0792545, 73.51816117], [160.1244179, 73.60738153], [160.1695139, 73.69663596], [160.214542, 73.7859255], [160.2595031, 73.87524796], [160.3043295, 73.96464016], [160.3492233, 74.0539938], [160.393982, 74.1434178], [160.4386721, 74.23287725], [160.4832956, 74.32236885], [160.5278515, 74.41189412], [160.5723391, 74.50145374], [160.6167598, 74.59104616], [160.6611128, 74.6806721], [160.7053975, 74.77033209], [160.7496149, 74.86002508], [160.7937659, 74.94974958], [160.8378466, 75.03951068], [160.881861, 75.12930335], [160.9258069, 75.21912953], [160.9696856, 75.30898856], [161.0134983, 75.39887897], [161.0572417, 75.48880343], [161.1009174, 75.57876086], [161.1445243, 75.66875219], [161.1880633, 75.75877642], [161.2315342, 75.8488335], [161.2749374, 75.93892266], [161.3182722, 76.02904531], [161.361539, 76.11920066], [161.4047378, 76.2093886], [161.4478683, 76.29960921], [161.4909313, 76.38986207], [161.5339255, 76.48014773], [161.5768515, 76.57046585], [161.6197093, 76.66081643], [161.6624988, 76.75119929], [161.7051265, 76.84166436], [161.7478731, 76.93206184], [161.7904389, 77.02256829], [161.832955, 77.11308031], [161.8753126, 77.20369923], [161.9178015, 77.29417286], [161.9601127, 77.38478071], [162.0023555, 77.4754204], [162.0445232, 77.56610335], [162.0866274, 77.65681008], [162.1286647, 77.74754518], [162.1706402, 77.83830051], [162.2125404, 77.92909914], [162.254372, 78.01992938], [162.2961347, 78.11079128], [162.3378291, 78.20168458], [162.3794565, 78.29260567], [162.4210139, 78.38356164], [162.4625024, 78.474549], [162.5039223, 78.5655672], [162.5452731, 78.65661725], [162.5865554, 78.74769806], [162.6277231, 78.83886178], [162.6689131, 78.92995401], [162.7099887, 79.02112855], [162.7509955, 79.1123341], [162.7919343, 79.20357011], [162.8328031, 79.29483775], [162.8736039, 79.38613566], [162.9143351, 79.4774646], [162.9549972, 79.56882437], [162.9955902, 79.6602149], [163.0361139, 79.75163659], [163.0765689, 79.84308828], [163.1169548, 79.9345705], [163.1572712, 80.02608338], [163.1975187, 80.11762663], [163.2376971, 80.20920021], [163.2778065, 80.30080399], [163.3178467, 80.39243802], [163.357818, 80.48410153], [163.3977198, 80.57579589], [163.4375523, 80.66752036], [163.4771974, 80.75933737], [163.5170097, 80.85105889], [163.5566343, 80.94287335], [163.5961896, 81.0347177], [163.6356762, 81.12659149], [163.6750927, 81.2184955], [163.714441, 81.31042868], [163.7537187, 81.40239209], [163.7929269, 81.49438513], [163.8320653, 81.58640803], [163.8711345, 81.6784602], [163.910134, 81.77054199], [163.9490641, 81.86265308], [163.9879245, 81.95479366], [164.0267154, 82.04696347], [164.0654367, 82.13916252], [164.1040884, 82.23139078], [164.1426704, 82.32364818], [164.1811834, 82.41593354], [164.219626, 82.50824913], [164.2579989, 82.60059372], [164.2963021, 82.69296725], [164.3345346, 82.78537113], [164.3726979, 82.8778026], [164.4107918, 82.97026262], [164.4488153, 83.0627515], [164.4867695, 83.15526891], [164.5246525, 83.24781751], [164.5624665, 83.34039275], [164.6002116, 83.43299475], [164.6378859, 83.5256266], [164.6754891, 83.61828869], [164.7130235, 83.71097728], [164.7504878, 83.80367411], [164.7878832, 83.89641724], [164.8252077, 83.98918858], [164.8624631, 84.08198806], [164.8996475, 84.17481563], [164.9367608, 84.26767152], [164.9738051, 84.36055494], [165.010779, 84.45346647], [165.0476846, 84.5464058], [165.0845191, 84.63937594], [165.1212836, 84.732371], [165.1579767, 84.82539211], [165.1945994, 84.9184427], [165.2311518, 85.01152091], [165.2676341, 85.10462669], [165.304046, 85.19776], [165.3402895, 85.29091705], [165.3766585, 85.38410534], [165.4128591, 85.47732101], [165.4489895, 85.57056409], [165.4850435, 85.66383435], [165.52089, 85.75713183], [165.5569519, 85.85045648], [165.5928004, 85.94380822], [165.6285845, 86.03718706], [165.6642923, 86.1305929], [165.6999292, 86.2240257], [165.7354956, 86.31748539], [165.770973, 86.41097203], [165.8063984, 86.50448536], [165.8417529, 86.5980258], [165.8769045, 86.69173], [165.9122684, 86.78518593], [165.947411, 86.8788059], [165.9824828, 86.97245238], [166.0174847, 87.06612534], [166.0524151, 87.1598241], [166.0872734, 87.25354989], [166.122062, 87.34730186], [166.1567798, 87.44108026], [166.1914267, 87.53488487], [166.2260026, 87.62871564], [166.2605315, 87.72257265], [166.2949667, 87.81645546], [166.3293307, 87.91036446], [166.3636239, 88.0042994], [166.3978461, 88.09826024], [166.4319973, 88.1922469], [166.4660774, 88.2862594], [166.5000866, 88.38029763], [166.5340246, 88.47436162], [166.5678917, 88.56845118], [166.6016877, 88.66256632], [166.6354126, 88.75670698], [166.6690664, 88.85087311], [166.702649, 88.94506466], [166.7361606, 89.03938916], [166.7696009, 89.13363241], [166.8029701, 89.22790099], [166.8362681, 89.32219519], [166.8694948, 89.41651427], [166.9026504, 89.51085811], [166.9357347, 89.60522622], [166.9687406, 89.69962001], [167.0016809, 89.7940387], [167.0345503, 89.8884831], [167.0673491, 89.98295106], [167.1000754, 90.07744418], [167.1327314, 90.17196254], [167.1653178, 90.26650329], [167.1978392, 90.36107031], [167.2302811, 90.45566184], [167.2626516, 90.55027784], [167.2949506, 90.64491773], [167.3271782, 90.7395825], [167.3593356, 90.83427092], [167.3914202, 90.92898482], [167.4234332, 91.02372236], [167.4553747, 91.11848227], [167.4872482, 91.213268], [167.5190465, 91.30807895], [167.5507733, 91.40291272], [167.5824284, 91.49777032], [167.6140119, 91.59265159], [167.6455244, 91.68755658], [167.6769644, 91.78248577], [167.7083328, 91.87743868], [167.7393758, 91.97241404], [167.7708531, 92.06741443], [167.8020062, 92.16243813], [167.8330841, 92.2574869], [167.8640936, 92.35255766], [167.8950313, 92.44765206], [167.9258959, 92.54276953], [167.95669, 92.63791026], [167.9874122, 92.73307411], [168.0180603, 92.82826122], [168.048639, 92.92346965], [168.0791494, 93.01870458], [168.1095854, 93.11397013], [168.1399481, 93.20924946], [168.1702413, 93.30455166], [168.20046, 93.39987668], [168.2306067, 93.49521568], [168.2606815, 93.5905847], [168.2906843, 93.68597831], [168.3206149, 93.78139408], [168.3504733, 93.8768301], [168.3802597, 93.97229078], [168.4099737, 94.06777412], [168.4396157, 94.16328154], [168.4691857, 94.25880958], [168.4986835, 94.35435952], [168.5281086, 94.44993332], [168.557462, 94.54552984], [168.5867433, 94.64114521], [168.6159523, 94.73687059], [168.645089, 94.83244416], [168.6741536, 94.92812783], [168.7031427, 95.02383142], [168.7320627, 95.11955828], [168.7609105, 95.21530695], [168.7896859, 95.31107737], [168.818389, 95.40686965], [168.8470197, 95.50268344], [168.8755808, 95.5985188], [168.904067, 95.69437552], [168.9324804, 95.79025317], [168.9608223, 95.88615278], [168.9890908, 95.98207403], [169.0172869, 96.0780408], [169.0454111, 96.17400468], [169.0734622, 96.2699654], [169.1014407, 96.36597157], [169.1293467, 96.46200016], [169.1571802, 96.55804849], [169.1849406, 96.65411782], [169.2126232, 96.75021107], [169.2402388, 96.84632215], [169.2677818, 96.94245421], [169.2952522, 97.03860703], [169.3226499, 97.13478055], [169.3498781, 97.23097473], [169.3771308, 97.32718793], [169.4044074, 97.42342325], [169.4315211, 97.51967596], [169.4585556, 97.61595133], [169.4855174, 97.71224797], [169.5124065, 97.80856493], [169.5392228, 97.90490217], [169.5659663, 98.00125983], [169.5925907, 98.09763762], [169.6191885, 98.19403533], [169.64576, 98.29045308], [169.6722124, 98.38689082], [169.698592, 98.4833485], [169.7248987, 98.5798256], [169.7511335, 98.676323], [169.7772943, 98.77284038], [169.8033837, 98.86937659], [169.8293987, 98.9659332], [169.8553383, 99.06256186], [169.8812073, 99.15910817], [169.9070032, 99.255724], [169.9327276, 99.3523588], [169.9583776, 99.44912032], [169.9839545, 99.54569345], [170.0094585, 99.64238642], [170.0348894, 99.73909848], [170.0602472, 99.83582231], [170.085532, 99.93257279], [170.1107438, 100.0293423], [170.1358824, 100.1261309], [170.160948, 100.222938], [170.1859404, 100.3197641], [170.21084, 100.4166089], [170.2356911, 100.5134691], [170.2604649, 100.6103518], [170.2851656, 100.7072532], [170.3097931, 100.8041732], [170.3343474, 100.9011117], [170.3588285, 100.9980688], [170.3832315, 101.0950461], [170.407566, 101.1920401], [170.4318273, 101.2890524], [170.4560153, 101.386083], [170.4801308, 101.4831316], [170.5041721, 101.5801988], [170.5281402, 101.6772839], [170.552035, 101.7743873], [170.5758622, 101.8715066], [170.5996104, 101.9686458], [170.6232852, 102.0658028], [170.6468871, 102.1629766], [170.6704142, 102.2601707], [170.6938689, 102.3573812], [170.71725, 102.4546096], [170.7405576, 102.5518555], [170.7637921, 102.6491189], [170.7869531, 102.7463997], [170.8100416, 102.8436966], [170.8330564, 102.9410119], [170.8559968, 103.038345], [170.8788637, 103.1356955], [170.9016573, 103.2330631], [170.9243767, 103.3304481], [170.9470223, 103.4278502], [170.969595, 103.5252693], [170.9920941, 103.6227054], [171.0145196, 103.7201585], [171.0368715, 103.8176285], [171.0591476, 103.9151193], [171.0813504, 104.0126267], [171.1034814, 104.1101473], [171.1255387, 104.2076845], [171.1475211, 104.3052399], [171.1694335, 104.4028062], [171.1912696, 104.5003936], [171.2130323, 104.5979968], [171.2347234, 104.6956121], [171.2563395, 104.793247], [171.2778814, 104.890899], [171.2993499, 104.9885674], [171.3207439, 105.0862521], [171.342064, 105.183953], [171.3633103, 105.28167], [171.3843734, 105.3794945], [171.4055641, 105.4771761], [171.426589, 105.5749409], [171.4475543, 105.6727008], [171.4684318, 105.7704968], [171.4892373, 105.8683067], [171.5099667, 105.9661346], [171.5306223, 106.0639781], [171.5512041, 106.1618373], [171.5717111, 106.2597133], [171.592146, 106.3576028], [171.6125061, 106.4555082], [171.6327919, 106.5534295], [171.652973, 106.6513723], [171.6731427, 106.7493159], [171.6932017, 106.8472844], [171.7131888, 106.9452671], [171.7331046, 107.0432641], [171.7529465, 107.141276], [171.7727134, 107.2393043], [171.7924072, 107.3373461], [171.8120287, 107.4354024], [171.8315744, 107.5334738], [171.851047, 107.6315585], [171.8704515, 107.7296569], [171.8896891, 107.8277895], [171.9090251, 107.9259014], [171.9282006, 108.0240459], [171.9472975, 108.1222056], [171.9663247, 108.2203789], [171.985069, 108.3186778], [172.004157, 108.4167677], [172.0229661, 108.5149819], [172.0416967, 108.6132122], [172.0603579, 108.7114555], [172.0789402, 108.8097139], [172.0974483, 108.9079863], [172.115882, 109.0062729], [172.1342417, 109.1045731], [172.1525272, 109.2028872], [172.1707371, 109.3012155], [172.1888731, 109.3995574], [172.2069359, 109.4979125], [172.2249219, 109.5962853], [172.2428355, 109.6946684], [172.2606753, 109.7930644], [172.2784407, 109.8914737], [172.2961318, 109.9898965], [172.313751, 110.0883285], [172.3312489, 110.186828], [172.3485702, 110.285321], [172.366155, 110.3837166], [172.3834744, 110.4822054], [172.4007128, 110.5807086], [172.4178829, 110.679224], [172.434979, 110.7777519], [172.4520007, 110.8762925], [172.4689491, 110.9748457], [172.4858221, 111.0734117], [172.5026287, 111.1719886], [172.5193527, 111.2705803], [172.5360031, 111.3691835], [172.5525781, 111.4678004], [172.5690787, 111.5664297], [172.5855048, 111.6650714], [172.6018564, 111.7637255], [172.6181331, 111.862393], [172.6343357, 111.9610717], [172.6504637, 112.0597627], [172.6665172, 112.1584659], [172.6824961, 112.2571811], [172.6984005, 112.3559084], [172.7142303, 112.4546476], [172.7299856, 112.5533988], [172.7456663, 112.6521618], [172.7612724, 112.7509366], [172.7768047, 112.8497229], [172.7922616, 112.9485212], [172.8076438, 113.0473311], [172.8229514, 113.1461526], [172.8381844, 113.2449856], [172.8533439, 113.3438273], [172.8684274, 113.4426832], [172.8834365, 113.5415505], [172.8983709, 113.6404288], [172.9132306, 113.7393186], [172.9280153, 113.83822], [172.9427257, 113.9371321], [172.9571433, 114.0361162], [172.9719024, 114.1350102], [172.9863849, 114.2339618], [173.0007972, 114.3329023], [173.0151337, 114.4318693], [173.0293956, 114.5308471], [173.0435825, 114.6298349], [173.057691, 114.7288399], [173.0717284, 114.82785], [173.085702, 114.9268683], [173.0996009, 115.0258909], [173.1134183, 115.1249252], [173.1271568, 115.223977], [173.1408206, 115.3230391], [173.1544095, 115.4221115], [173.167925, 115.5211937], [173.1813643, 115.6202865], [173.1947293, 115.7193894], [173.2080188, 115.8185024], [173.2212336, 115.9176253], [173.2343735, 116.0167583], [173.2474385, 116.1159011], [173.2604272, 116.2150546], [173.2733415, 116.314218], [173.2861807, 116.4133916], [173.2989478, 116.5125725], [173.3116383, 116.6117639], [173.3242531, 116.710965], [173.3367958, 116.8101739], [173.349261, 116.9093947], [173.3616518, 117.0086241], [173.3738563, 117.1079557], [173.3862078, 117.2071114], [173.3983728, 117.3063687], [173.4104639, 117.4056349], [173.4224803, 117.5049103], [173.4344216, 117.6041947], [173.4462876, 117.7034882], [173.4580819, 117.8027898], [173.4697981, 117.902101], [173.4814393, 118.001421], [173.4930056, 118.1007497], [173.5044974, 118.2000857], [173.5159163, 118.2994304], [173.527258, 118.3987842], [173.5385242, 118.4981475], [173.54949, 118.5976386], [173.5608318, 118.6968984], [173.5718728, 118.7962869], [173.5828388, 118.8956837], [173.5937297, 118.9950887], [173.6045455, 119.094502], [173.6152863, 119.1939234], [173.625952, 119.2933528], [173.6365426, 119.3927903], [173.6470447, 119.4922385], [173.657485, 119.5916919], [173.6678502, 119.6911531], [173.6781403, 119.7906221], [173.6883551, 119.8900993], [173.698495, 119.9895837], [173.7085738, 120.089073], [173.7185635, 120.1885727], [173.728478, 120.2880798], [173.7383174, 120.3875945], [173.7480816, 120.4871165], [173.7577694, 120.5866462], [173.7673832, 120.6861829], [173.7769219, 120.7857269], [173.7863854, 120.885278], [173.7957737, 120.9848362], [173.8050866, 121.0844017], [173.8143229, 121.1839744], [173.8234761, 121.2835672], [173.8325637, 121.3831534], [173.8415442, 121.4827794], [173.8504808, 121.5823799], [173.8593841, 121.6819398], [173.8681708, 121.7815529], [173.8768842, 121.8811715], [173.8855204, 121.9807978], [173.8940814, 122.0804306], [173.9025671, 122.1800698], [173.9109789, 122.2797151], [173.9193146, 122.3793663], [173.9275745, 122.4790245], [173.9357592, 122.5786889], [173.9438554, 122.6783718], [173.9518889, 122.7780492], [173.9598475, 122.8777321], [173.9677307, 122.9774211], [173.9755388, 123.0771158], [173.9832774, 123.1768064], [173.9909341, 123.276514], [173.9985163, 123.3762261], [174.0060237, 123.4759434], [174.0134554, 123.5756668], [174.0208209, 123.6753928], [174.0281021, 123.7751273], [174.0353087, 123.8748663], [174.0424392, 123.9746118], [174.0494943, 124.0743626], [174.0564752, 124.1741182], [174.0633797, 124.2738795], [174.0702081, 124.3736464], [174.0769618, 124.4734182], [174.0836402, 124.573195], [174.0902431, 124.6729769], [174.0967708, 124.7727637], [174.1032231, 124.8725554], [174.1096, 124.9723519], [174.1159015, 125.0721533], [174.1221276, 125.1719594], [174.1282784, 125.2717702], [174.1343535, 125.371586], [174.1403522, 125.4714064], [174.1462768, 125.5712309], [174.152126, 125.6710598], [174.1578998, 125.7708931], [174.1635983, 125.8707307], [174.1692052, 125.9705759], [174.1747526, 126.0704219], [174.1802247, 126.1702722], [174.1856215, 126.2701266], [174.190937, 126.3699933], [174.1961808, 126.4698564], [174.2013683, 126.5697194], [174.2064705, 126.6695809], [174.2114903, 126.769455], [174.2164348, 126.8693327], [174.2213015, 126.9692163], [174.2260949, 127.0691015], [174.2308146, 127.1689896], [174.2354572, 127.268882], [174.2400236, 127.3687779], [174.2445163, 127.4686761], [174.2489341, 127.5685785], [174.2532749, 127.6684845], [174.2575402, 127.7683938], [174.26173, 127.8683063], [174.2658444, 127.9682219], [174.2698821, 128.0681458], [174.2738455, 128.1680676], [174.2777341, 128.2679923], [174.2815447, 128.3679206], [174.2852817, 128.4678511], [174.2889419, 128.5677863], [174.2925322, 128.6677204], [174.2960414, 128.7676614], [174.2994767, 128.8676027], [174.3028382, 128.9675421], [174.3061222, 129.0674891], [174.3093319, 129.1672686], [174.3124674, 129.2672171], [174.3155252, 129.3671679], [174.3185077, 129.467121], [174.3214146, 129.5671529], [174.3242486, 129.6671107], [174.3268918, 129.7670704], [174.329681, 129.866955], [174.332286, 129.966919], [174.3348122, 130.0668848], [174.3372699, 130.1668525], [174.3396484, 130.2668221], [174.3419551, 130.3667932], [174.3441827, 130.4667631], [174.3463348, 130.5667378], [174.3484115, 130.6667142], [174.3504133, 130.7666928], [174.3523382, 130.8666719], [174.3541878, 130.9666528], [174.3559532, 131.0666351], [174.3576522, 131.1666216], [174.3592758, 131.2666064], [174.3608244, 131.3665925], [174.3623074, 131.4665797], [174.3637045, 131.5665677], [174.365026, 131.6665548], [174.366272, 131.7665457], [174.3674425, 131.8665371], [174.3685375, 131.9665295], [174.3695571, 132.0665226], [174.3705011, 132.1665165], [174.3713696, 132.2665111], [174.3721257, 132.3665064], [174.3728438, 132.4665023], [174.3735225, 132.5664979], [174.3740889, 132.6664948], [174.3745653, 132.7664927], [174.3749805, 132.8664904], [174.3753203, 132.9664884], [174.3755904, 133.0664867], [174.3757766, 133.1667342], [174.3758897, 133.2667343], [174.3759272, 133.3667345]]}","{\"moduleType\": \"AT2050_0501\", \"comment\": \"Second 90 degree half. Coordinates in mm. 2D Y-axis points DOWN. Sampling: 0.1mm.\", \"lengthMm\": 250.0, \"samplingMm\": 0.1, \"axisYDirection\": \"down\", \"points\": [[0.0, 0.0], [0.100000164, 3.79e-05], [0.200076184, 0.0005165], [0.300000253, 0.0003404], [0.399996601, 0.0005948], [0.500000696, 0.0009711], [0.599999957, 0.0013867], [0.700011487, 0.0018852], [0.800010096, 0.0024519], [0.900007582, 0.0030762], [1.000005203, 0.0037938], [1.099998278, 0.0045673], [1.199981673, 0.0054283], [1.299978296, 0.006373], [1.399973076, 0.0073924], [1.499967067, 0.0084874], [1.599960246, 0.0096579], [1.699952529, 0.0109039], [1.799943763, 0.012224], [1.899934036, 0.0136211], [1.999922333, 0.0150931], [2.099909713, 0.0166415], [2.199896653, 0.0182652], [2.29988293, 0.0199659], [2.399867314, 0.0217407], [2.499850335, 0.0235909], [2.599831913, 0.0255167], [2.699812002, 0.0275179], [2.799791087, 0.0295951], [2.899768015, 0.0317473], [2.99974347, 0.0339751], [3.099717027, 0.0362783], [3.199689891, 0.0386579], [3.299659185, 0.041111], [3.399626786, 0.0436403], [3.499592884, 0.0462454], [3.599556985, 0.0489261], [3.699518144, 0.0516815], [3.799478155, 0.0545132], [3.89943599, 0.0574204], [3.999391592, 0.0604031], [4.099344998, 0.0634599], [4.19929652, 0.0665956], [4.299245128, 0.0698048], [4.399191314, 0.0730894], [4.499134489, 0.0764484], [4.599075595, 0.079884], [4.699014843, 0.0834195], [4.798950592, 0.0870061], [4.898883482, 0.090668], [4.998813667, 0.0944055], [5.098754899, 0.0982042], [5.198679347, 0.1020925], [5.298600806, 0.1060564], [5.398504523, 0.1100852], [5.498420017, 0.1142001], [5.598332349, 0.1183896], [5.698241356, 0.1226553], [5.798147092, 0.1269965], [5.898049511, 0.1314131], [5.997947006, 0.1359047], [6.097842414, 0.140472], [6.197734506, 0.1451149], [6.297622126, 0.149833], [6.39750704, 0.1546267], [6.497388497, 0.159498], [6.597267057, 0.1644435], [6.697141065, 0.1694636], [6.79701104, 0.174559], [6.896877127, 0.1797298], [6.996739269, 0.1849759], [7.096596598, 0.1902965], [7.196450734, 0.1956936], [7.296300593, 0.2011659], [7.396146324, 0.2067119], [7.495985127, 0.2123291], [7.595822876, 0.2180281], [7.69565582, 0.2238028], [7.795484392, 0.2296521], [7.895308533, 0.2355769], [7.995128293, 0.2414808], [8.094943397, 0.2475602], [8.194755468, 0.2537113], [8.29456127, 0.2603912], [8.394362332, 0.2662396], [8.494158638, 0.2726168], [8.593950045, 0.2790694], [8.693736542, 0.2855973], [8.79355286, 0.2922005], [8.89332931, 0.2988791], [8.993066005, 0.3056331], [9.092830478, 0.3124623], [9.192591606, 0.3193636], [9.292347488, 0.3263436], [9.392098064, 0.3334004], [9.491931695, 0.3405311], [9.591669823, 0.3477372], [9.69131791, 0.3550185], [9.791046705, 0.3623752], [9.890769904, 0.3698106], [9.990493393, 0.3773199], [10.09020622, 0.3849042], [10.18991232, 0.3925608], [10.28961261, 0.4002939], [10.38930782, 0.4081023], [10.48899623, 0.415986], [10.58867422, 0.4239441], [10.68835064, 0.4319785], [10.78801887, 0.4400881], [10.88768308, 0.4482701], [10.98734434, 0.4565303], [11.08699612, 0.4648658], [11.18664103, 0.4732765], [11.28628011, 0.4817592], [11.38591284, 0.4903205], [11.48553898, 0.4989568], [11.58515856, 0.5076686], [11.68477084, 0.5164558], [11.78437717, 0.5253181], [11.88397678, 0.5342557], [11.98356583, 0.5432684], [12.08315181, 0.5523564], [12.18273096, 0.5615437], [12.28230311, 0.5707823], [12.38186825, 0.5800962], [12.48142633, 0.5894851], [12.5809773, 0.5989493], [12.68052118, 0.6084635], [12.78005776, 0.6180779], [12.87958698, 0.627783], [12.97911646, 0.637548], [13.07863121, 0.6473882], [13.17813849, 0.6573036], [13.27763825, 0.6672942], [13.37713044, 0.6773599], [13.47661499, 0.6875007], [13.57609199, 0.6977167], [13.67556112, 0.7080077], [13.77502258, 0.7183738], [13.87446788, 0.7288653], [13.973934, 0.7393634], [14.07337149, 0.7499548], [14.17280099, 0.7606212], [14.27220161, 0.7713119], [14.37161485, 0.7821284], [14.47101978, 0.79302], [14.57041685, 0.8039866], [14.66980534, 0.8150284], [14.76918547, 0.8261452], [14.8685571, 0.8373371], [14.96792092, 0.848604], [15.06727557, 0.8599459], [15.16662168, 0.8713653], [15.26595915, 0.8828572], [15.36528886, 0.8944872], [15.46460887, 0.9060663], [15.56392007, 0.9177834], [15.66322239, 0.9296106], [15.76253096, 0.941478], [15.8618155, 0.9534229], [15.96109144, 0.9654403], [16.06035787, 0.9775307], [16.15961512, 0.9896981], [16.25884693, 1.0019403], [16.35808503, 1.0142204], [16.45731438, 1.0266124], [16.55653434, 1.0390793], [16.65574562, 1.0516211], [16.75494716, 1.0642378], [16.8541648, 1.0769295], [16.95334599, 1.089696], [17.05249152, 1.1025374], [17.15165335, 1.1154537], [17.25080612, 1.1284449], [17.34994859, 1.141511], [17.4490827, 1.1546546], [17.54820587, 1.1678707], [17.64731948, 1.1811619], [17.74642259, 1.1945247], [17.84551558, 1.2079653], [17.94459738, 1.2214808], [18.04366998, 1.235071], [18.1427323, 1.2487361], [18.24178426, 1.2624759], [18.34082587, 1.2763179], [18.43985696, 1.2902062], [18.53887755, 1.3041693], [18.63788757, 1.3182072], [18.73688695, 1.3323198], [18.83587546, 1.3465049], [18.93485413, 1.3607686], [19.03382134, 1.3751057], [19.13277767, 1.3895176], [19.23171945, 1.4040027], [19.33065384, 1.4185639], [19.42957721, 1.4331998], [19.5284895, 1.4479104], [19.62739083, 1.4626959], [19.72628056, 1.4775556], [19.82515927, 1.4924902], [19.9240267, 1.5074995], [20.02288276, 1.5225835], [20.12172741, 1.5377421], [20.22056042, 1.5529752], [20.31938208, 1.5682832], [20.41819209, 1.5836659], [20.5169905, 1.599123], [20.6157772, 1.6146547], [20.714552, 1.6302631], [20.81331801, 1.6459629], [20.91206929, 1.6617184], [21.01080864, 1.6775486], [21.109536, 1.6934532], [21.20825055, 1.7094306], [21.30695364, 1.7254842], [21.40564489, 1.7416126], [21.50431883, 1.7577908], [21.60298554, 1.7740663], [21.70163984, 1.7904181], [21.80028169, 1.806845], [21.89891124, 1.8233459], [21.99752824, 1.8399211], [22.09613287, 1.8565738], [22.19472472, 1.8732979], [22.29330577, 1.8900977], [22.39195413, 1.9070691], [22.49042593, 1.9239181], [22.5889828, 1.9409535], [22.68751078, 1.9580498], [22.78600993, 1.9752063], [22.88451196, 1.9924513], [22.98300093, 2.0097707], [23.081475, 2.0271608], [23.17993764, 2.0446289], [23.27838719, 2.0621714], [23.37682346, 2.0797883], [23.4752464, 2.0974796], [23.57379163, 2.1154995], [23.67205408, 2.1330862], [23.77044071, 2.1510106], [23.86880981, 2.1689992], [23.96716528, 2.1870621], [24.06550699, 2.2051992], [24.16383505, 2.2234106], [24.26214888, 2.2416958], [24.36044932, 2.2600557], [24.45873722, 2.2784908], [24.55700758, 2.2969977], [24.65526619, 2.3155802], [24.75351074, 2.3342369], [24.851737, 2.3529573], [24.94995382, 2.3717627], [25.04815578, 2.3906419], [25.14634233, 2.4095942], [25.2445157, 2.4286215], [25.34267473, 2.447723], [25.44082454, 2.4669033], [25.53895457, 2.486153], [25.63707017, 2.505476], [25.73516525, 2.5248688], [25.8332514, 2.5443409], [25.93132275, 2.5638869], [26.0293794, 2.5835071], [26.12742248, 2.6032446], [26.22544934, 2.6230131], [26.32348658, 2.642882], [26.42148354, 2.6627984], [26.51946541, 2.6827888], [26.61741131, 2.7027879], [26.71536284, 2.7229262], [26.81329968, 2.7431401], [26.91121594, 2.7634219], [27.00912211, 2.7837843], [27.10701243, 2.8042185], [27.20488729, 2.8247266], [27.30274663, 2.8453085], [27.40059038, 2.8659644], [27.4984185, 2.8866942], [27.59623093, 2.9074978], [27.6940276, 2.9283753], [27.79180419, 2.9493479], [27.88956922, 2.970373], [27.98731833, 2.991472], [28.08505565, 3.0126261], [28.18277306, 3.0338733], [28.28047413, 3.0551937], [28.37815901, 3.0765877], [28.47582719, 3.0980532], [28.57347969, 3.1195948], [28.67111589, 3.1412102], [28.76873563, 3.1629006], [28.86633791, 3.1846629], [28.96392501, 3.2064974], [29.06149552, 3.2284077], [29.15905027, 3.2503922], [29.25658762, 3.2724498], [29.35410802, 3.2945827], [29.45161193, 3.3167876], [29.54909904, 3.3390661], [29.64658575, 3.3614328], [29.74403947, 3.3838589], [29.84146037, 3.4063443], [29.93887927, 3.4289143], [30.03628148, 3.4515607], [30.13366656, 3.4742791], [30.23103445, 3.4970726], [30.32838434, 3.519939], [30.42571584, 3.5428785], [30.52303187, 3.5658926], [30.62033048, 3.5889801], [30.71761161, 3.6121411], [30.81486779, 3.6354107], [30.91211402, 3.6587188], [31.0093424, 3.6821001], [31.1065598, 3.7055177], [31.20375276, 3.7290459], [31.3009276, 3.7526471], [31.39808506, 3.7763222], [31.49522449, 3.8000705], [31.59234599, 3.8238922], [31.68944944, 3.8477873], [31.78653484, 3.8717557], [31.88360211, 3.8957974], [31.98065117, 3.9199124], [32.07768225, 3.9441041], [32.17469479, 3.9683656], [32.27168895, 3.9927004], [32.3686647, 4.0171084], [32.46562197, 4.0415898], [32.56256072, 4.0661443], [32.65948089, 4.0907719], [32.75638242, 4.1154727], [32.85326526, 4.1402467], [32.95012934, 4.1650938], [33.04698054, 4.1900408], [33.14380486, 4.2150309], [33.24061248, 4.2400977], [33.33740112, 4.2652377], [33.43417076, 4.2904508], [33.53092129, 4.3157369], [33.6276527, 4.341096], [33.72435968, 4.3665017], [33.82105274, 4.3920068], [33.91772634, 4.4175847], [34.01438065, 4.4432357], [34.11101567, 4.4689598], [34.207631, 4.4947566], [34.30422692, 4.5206266], [34.40080326, 4.5465694], [34.49743302, 4.5726731], [34.59396977, 4.5987615], [34.6904143, 4.6248356], [34.78691178, 4.65107], [34.88338956, 4.6773774], [34.97984729, 4.7037575], [35.07628291, 4.7302058], [35.17271959, 4.7567425], [35.26911739, 4.783341], [35.36548467, 4.8100648], [35.46184205, 4.8368088], [35.55817829, 4.8636239], [35.6544953, 4.8905135], [35.75081043, 4.917439], [35.84708653, 4.944474], [35.94334218, 4.9715816], [36.03954921, 4.9987376], [36.13576379, 5.0259906], [36.23196843, 5.0533681], [36.32814191, 5.0807667], [36.42429467, 5.1082381], [36.52042662, 5.1357819], [36.61645638, 5.1637854], [36.71262673, 5.1910371], [36.80869602, 5.2187985], [36.90474415, 5.2466354], [37.00077136, 5.2745418], [37.09677923, 5.3025221], [37.19275384, 5.3305683], [37.28871741, 5.3586921], [37.38465967, 5.3868883], [37.48058064, 5.4151569], [37.5764803, 5.4434981], [37.672362, 5.4719218], [37.76821735, 5.5004043], [37.86405245, 5.5289628], [37.96000159, 5.5578475], [38.05565838, 5.5862973], [38.15142871, 5.615073], [38.24717971, 5.6439227], [38.3429063, 5.6728428], [38.43861071, 5.7018349], [38.53429349, 5.7308995], [38.62995416, 5.7600362], [38.72559292, 5.7892453], [38.82120544, 5.8185145], [38.91679992, 5.8478679], [39.01237011, 5.877292], [39.1079201, 5.9067908], [39.20344911, 5.9363617], [39.29895448, 5.9660036], [39.3944374, 5.9957178], [39.48989942, 6.0255048], [39.58533739, 6.055363], [39.68075275, 6.0852932], [39.77614463, 6.1152941], [39.87151471, 6.1453685], [39.96686205, 6.175515], [40.06218659, 6.2057334], [40.15748826, 6.2360238], [40.25276779, 6.2663888], [40.34802355, 6.296823], [40.44325632, 6.3273294], [40.53846606, 6.3579076], [40.63365266, 6.3885576], [40.72881608, 6.4192796], [40.82395683, 6.450075], [40.91907386, 6.4809408], [41.01416743, 6.5118782], [41.10923596, 6.5428866], [41.20428307, 6.5739708], [41.29930632, 6.6051236], [41.39430599, 6.6363484], [41.48926925, 6.6677087], [41.58422174, 6.6990767], [41.67915038, 6.7305163], [41.77406756, 6.7619612], [41.86894864, 6.7935443], [41.96380584, 6.8251989], [42.05863906, 6.8569251], [42.15344836, 6.888723], [42.2482336, 6.9205925], [42.34302806, 6.9525569], [42.43776473, 6.9845665], [42.53247763, 7.0166507], [42.62716655, 7.0488072], [42.72169343, 7.0815], [42.81643659, 7.1133077], [42.91105171, 7.1456804], [43.00564273, 7.178122], [43.10020923, 7.210635], [43.19475119, 7.2432195], [43.28926852, 7.2758753], [43.3837635, 7.3086039], [43.47823162, 7.3414063], [43.57267467, 7.3742762], [43.6670926, 7.4072185], [43.76148625, 7.440229], [43.85585462, 7.4733128], [43.95019796, 7.5064679], [44.04451629, 7.5396942], [44.13881023, 7.5729924], [44.23307818, 7.606361], [44.32731863, 7.6397994], [44.42153633, 7.6733095], [44.51572829, 7.7068884], [44.6098949, 7.7405416], [44.70403569, 7.7742656], [44.79815162, 7.8080612], [44.89224191, 7.8419278], [44.98630659, 7.8758655], [45.08034561, 7.9098742], [45.17435892, 7.9439538], [45.26844684, 7.9782119], [45.36234857, 8.0123597], [45.45624483, 8.0466174], [45.550155, 8.0809811], [45.64403914, 8.1154156], [45.73789727, 8.1499211], [45.83172932, 8.1844974], [45.92553523, 8.2191446], [46.01931494, 8.2538626], [46.11317797, 8.2891776], [46.20679562, 8.323511], [46.30049645, 8.3584414], [46.39417086, 8.3934425], [46.48782436, 8.4285413], [46.58144583, 8.463684], [46.67504073, 8.4988975], [46.768609, 8.5341816], [46.8621506, 8.5695363], [46.95566546, 8.6049616], [47.04915357, 8.6404576], [47.14260902, 8.6759993], [47.23603848, 8.711634], [47.32944581, 8.7473414], [47.42282618, 8.7831193], [47.51617948, 8.8189677], [47.60950565, 8.8548865], [47.70280705, 8.8909316], [47.79607896, 8.9269916], [47.88932357, 8.9631222], [47.98254089, 8.999323], [48.07573092, 9.0355915], [48.16889197, 9.0718785], [48.2620271, 9.1082905], [48.35513474, 9.1447728], [48.44821475, 9.1813253], [48.54126713, 9.2179481], [48.63429185, 9.2546411], [48.7272888, 9.2914045], [48.82025793, 9.328238], [48.91319926, 9.3651418], [49.00609722, 9.402193], [49.09898277, 9.4392371], [49.19184022, 9.4763513], [49.28466961, 9.5135355], [49.3774865, 9.5507129], [49.47025958, 9.5880376], [49.56300454, 9.6254322], [49.65571911, 9.6628921], [49.74840746, 9.7004265], [49.8410672, 9.7380327], [49.93369792, 9.7757055], [50.02630116, 9.8134499], [50.11887579, 9.851264], [50.2114219, 9.8891483], [50.30381482, 9.9276944], [50.39642794, 9.9651262], [50.48888789, 10.00322], [50.58131936, 10.0413824], [50.67372163, 10.0796157], [50.76609505, 10.1179189], [50.85843948, 10.1562918], [50.95075497, 10.1947344], [51.04304143, 10.2332468], [51.13529876, 10.2718289], [51.22752694, 10.3104806], [51.31972597, 10.349202], [51.41189582, 10.3879932], [51.50403621, 10.4268537], [51.59614722, 10.4657838], [51.68822881, 10.5047838], [51.78028094, 10.543853], [51.87230304, 10.5829945], [51.9642961, 10.6222027], [52.05625948, 10.6614803], [52.14819469, 10.7008288], [52.24010233, 10.7402557], [52.3319766, 10.7797418], [52.4239832, 10.8195407], [52.51563543, 10.8589223], [52.60742003, 10.8986163], [52.69917362, 10.9383762], [52.7908982, 10.9782089], [52.88259268, 11.0181109], [52.97425696, 11.0580822], [53.06589329, 11.0981241], [53.15749715, 11.1382337], [53.24907076, 11.1784123], [53.34060972, 11.218648], [53.43212465, 11.2589666], [53.52362833, 11.2993526], [53.61507994, 11.3398076], [53.70650098, 11.3803326], [53.79789127, 11.4209258], [53.88929687, 11.4616432], [53.98062559, 11.5023739], [54.07187787, 11.5431175], [54.1631451, 11.5839865], [54.25438146, 11.6249237], [54.34558685, 11.6659295], [54.43676193, 11.707008], [54.52790526, 11.7481526], [54.61901873, 11.789366], [54.71010042, 11.8306517], [54.80115173, 11.8720026], [54.89217041, 11.9134221], [54.98315783, 11.9549106], [55.07411395, 11.9964681], [55.1650386, 12.038094], [55.25593179, 12.0797884], [55.34679345, 12.1215515], [55.43762422, 12.163385], [55.52842356, 12.2052853], [55.6191904, 12.2472541], [55.70992545, 12.2892915], [55.80062738, 12.3313973], [55.89129722, 12.3735684], [55.98193628, 12.4158086], [56.07254427, 12.4581239], [56.16312011, 12.5005037], [56.25366544, 12.5429517], [56.34417707, 12.585468], [56.43465657, 12.6280528], [56.52510386, 12.6707059], [56.6155189, 12.7134272], [56.70590163, 12.7562168], [56.796252, 12.7990748], [56.88657003, 12.8420009], [56.97685561, 12.8849952], [57.06710723, 12.9280577], [57.15732742, 12.9711853], [57.24751455, 13.0143841], [57.33766974, 13.0576498], [57.42779189, 13.100986], [57.51788283, 13.1443889], [57.60793994, 13.18786], [57.69796419, 13.2313993], [57.78795543, 13.2750063], [57.87791392, 13.318681], [57.96783929, 13.3624239], [58.05774734, 13.4063247], [58.14760684, 13.4502476], [58.23743278, 13.4941941], [58.32720943, 13.5381206], [58.41696898, 13.5821568], [58.50669531, 13.6263069], [58.59638818, 13.6705246], [58.68604744, 13.7148139], [58.77567488, 13.7591669], [58.86526727, 13.8035876], [58.9548261, 13.8480759], [59.04435074, 13.8926309], [59.13384231, 13.9372528], [59.22329965, 13.9819571], [59.3125789, 14.0267413], [59.40211396, 14.0715423], [59.49146907, 14.1164361], [59.58079167, 14.1613944], [59.67008014, 14.2064232], [59.75933454, 14.2515057], [59.84858222, 14.2967028], [59.93776784, 14.3419323], [60.02689212, 14.3871972], [60.11600998, 14.4325629], [60.20509356, 14.4779958], [60.29425858, 14.5234999], [60.38318342, 14.5691221], [60.47216385, 14.6147568], [60.5611098, 14.6604587], [60.65002698, 14.7062556], [60.73889043, 14.7520327], [60.8277327, 14.7979361], [60.91654025, 14.8439064], [61.00531308, 14.8899439], [61.0940511, 14.9360484], [61.18275428, 14.9822199], [61.27140966, 15.0284584], [61.36003701, 15.0747344], [61.44863523, 15.1211067], [61.53719845, 15.1675457], [61.62572663, 15.2140516], [61.71421962, 15.2606244], [61.80267741, 15.307264], [61.89109986, 15.3539706], [61.9794871, 15.4007433], [62.06783958, 15.4475849], [62.15615694, 15.4944917], [62.24443762, 15.5414683], [62.33268451, 15.5885084], [62.42089472, 15.6356435], [62.50851048, 15.6828168], [62.59664711, 15.7300567], [62.68474807, 15.7773634], [62.77281331, 15.8247076], [62.86084016, 15.8721592], [62.94883406, 15.9196531], [63.0367919, 15.9672228], [63.1247138, 16.0148616], [63.21259975, 16.0625671], [63.30044964, 16.1103393], [63.38826351, 16.1581772], [63.47630072, 16.2060814], [63.56383148, 16.2540501], [63.65153719, 16.3020867], [63.7392066, 16.3502035], [63.82683968, 16.3983725], [63.91443636, 16.4465937], [64.00198135, 16.4948947], [64.08945474, 16.5432699], [64.17694175, 16.5916911], [64.26440738, 16.6401907], [64.35182119, 16.6887562], [64.43919833, 16.7373877], [64.52654633, 16.7860854], [64.6138501, 16.834854], [64.70112236, 16.8836834], [64.78835233, 16.9325787], [64.87554536, 16.9815399], [64.96270141, 17.0305669], [65.05040964, 17.0796597], [65.13749269, 17.1288183], [65.22453161, 17.1780816], [65.31154033, 17.2273715], [65.39849761, 17.2767271], [65.48545306, 17.3261095], [65.57234986, 17.3755906], [65.65920929, 17.4251433], [65.74603124, 17.4747614], [65.83281568, 17.5244452], [65.91956258, 17.5741944], [66.00639315, 17.6242365], [66.09294354, 17.6738893], [66.1795775, 17.7238349], [66.26617371, 17.773845], [66.35273155, 17.8239236], [66.43925214, 17.8740653], [66.52573557, 17.9242723], [66.61218031, 17.9745457], [66.69858704, 18.0248832], [66.78495575, 18.0752859], [66.87128637, 18.1257539], [66.95758681, 18.1762974], [67.04384128, 18.2269294], [67.13005793, 18.2775915], [67.21623572, 18.3282862], [67.30237515, 18.3790799], [67.38847632, 18.4299389], [67.47453909, 18.4808646], [67.56056336, 18.5318534], [67.64654909, 18.582907], [67.73249624, 18.6340257], [67.81840477, 18.6852102], [67.90426889, 18.7364587], [67.99009585, 18.7877598], [68.0758881, 18.8391378], [68.16164153, 18.8905805], [68.24731972, 18.9421547], [68.33303804, 18.9938285], [68.41865045, 19.0454651], [68.50428422, 19.0971003], [68.58982458, 19.1487648], [68.6753441, 19.2005956], [68.7608244, 19.2524909], [68.84626606, 19.3044545], [68.93166944, 19.3564773], [69.01703263, 19.408569], [69.10235566, 19.4607226], [69.18764069, 19.5129403], [69.27288506, 19.5652224], [69.35808983, 19.6175689], [69.44325505, 19.6699787], [69.52821655, 19.7224502], [69.61346683, 19.7749975], [69.69851479, 19.827601], [69.7835212, 19.8802688], [69.86848643, 19.9330006], [69.95341325, 19.9857966], [70.03830019, 20.0386554], [70.1231472, 20.0915797], [70.20795508, 20.1445681], [70.29272206, 20.1976205], [70.37744766, 20.250737], [70.46213275, 20.3039177], [70.54677852, 20.3571557], [70.63138489, 20.410464], [70.71595097, 20.4638362], [70.80047632, 20.5172734], [70.88496175, 20.5707734], [70.96940696, 20.624337], [71.05381142, 20.6779643], [71.13817535, 20.7316554], [71.22249852, 20.7854142], [71.30678304, 20.8392326], [71.39102492, 20.8931148], [71.47522577, 20.9470595], [71.55938607, 21.0010683], [71.64350614, 21.0551418], [71.72758508, 21.1092781], [71.81162258, 21.1634778], [71.89561969, 21.217741], [71.97957381, 21.2720658], [72.06348908, 21.3264524], [72.14736308, 21.3809059], [72.23119587, 21.4354229], [72.31498752, 21.490003], [72.39873796, 21.5446463], [72.48244705, 21.5993528], [72.56611484, 21.6541225], [72.64974124, 21.7089554], [72.73332619, 21.7638514], [72.81686984, 21.8188106], [72.90035504, 21.8739254], [72.98381539, 21.9290103], [73.06725092, 21.9840663], [73.15062802, 22.0392774], [73.23396338, 22.0946108], [73.31725695, 22.1499497], [73.40050874, 22.2052906], [73.48371867, 22.2607534], [73.56688618, 22.3162826], [73.6500141, 22.3719332], [73.73312501, 22.4275845], [73.81616703, 22.4832985], [73.89916693, 22.5390751], [73.98212468, 22.5949127], [74.06501449, 22.6508146], [74.14788551, 22.7067161], [74.23071484, 22.7627418], [74.31350355, 22.8188313], [74.39625037, 22.8750378], [74.47895425, 22.9312523], [74.56161565, 22.9874721], [74.64423451, 23.0438117], [74.72692711, 23.1007582], [74.80934445, 23.1566776], [74.89183548, 23.213204], [74.97428372, 23.2697929], [75.05668926, 23.3264439], [75.13907032, 23.3831859], [75.22139034, 23.4399615], [75.30366765, 23.4967991], [75.38590181, 23.5536989], [75.46809294, 23.6106607], [75.55024101, 23.6676846], [75.63234664, 23.7247723], [75.7143961, 23.7819203], [75.796408, 23.8391003], [75.87838268, 23.8963705], [75.96031486, 23.9537042], [76.04220371, 24.0110997], [76.12404921, 24.068557], [76.20585127, 24.1260762], [76.2876387, 24.1836571], [76.36935333, 24.2412996], [76.45102443, 24.2990039], [76.53265129, 24.3567723], [76.61423514, 24.4145998], [76.69577533, 24.472489], [76.77727174, 24.5304396], [76.85872436, 24.5884518], [76.94013314, 24.6465255], [77.02149803, 24.7046606], [77.10281898, 24.7628571], [77.18409645, 24.8211132], [77.26532937, 24.8794325], [77.34651821, 24.9378132], [77.42766293, 24.9962551], [77.50876158, 25.0547541], [77.5898179, 25.1133185], [77.67082997, 25.1719441], [77.75179781, 25.2306309], [77.83272123, 25.2893785], [77.91360014, 25.3481873], [77.99443465, 25.4070574], [78.07522473, 25.4659885], [78.15597028, 25.5249805], [78.23677902, 25.5842359], [78.31732949, 25.6431484], [78.39794131, 25.7023232], [78.47850839, 25.7615589], [78.55903072, 25.8208555], [78.63950823, 25.8802128], [78.71994113, 25.9396311], [78.80026467, 25.9992277], [78.88060757, 26.0587669], [78.96090563, 26.1183668], [79.0412224, 26.1779104], [79.12143007, 26.2376317], [79.20159248, 26.2974139], [79.28170983, 26.3572563], [79.3617819, 26.417159], [79.44180878, 26.4771223], [79.52176781, 26.5372586], [79.60170361, 26.5973435], [79.68159438, 26.6574878], [79.76144038, 26.7176932], [79.84126291, 26.7778458], [79.92101721, 26.838171], [80.00072591, 26.8985564], [80.08038335, 26.9589994], [80.16000066, 27.0195051], [80.23957216, 27.0800701], [80.31909801, 27.140696], [80.39857806, 27.201382], [80.47801225, 27.2621279], [80.55740051, 27.3229338], [80.63674286, 27.3837997], [80.71603925, 27.4447255], [80.79528944, 27.505711], [80.87449361, 27.5667571], [80.95365174, 27.6278624], [81.03276723, 27.6890376], [81.11183569, 27.7502641], [81.19085525, 27.8115487], [81.26982845, 27.872893], [81.34875536, 27.934297], [81.42763587, 27.9957605], [81.50646993, 28.0572836], [81.58525751, 28.1188662], [81.66399854, 28.1805083], [81.74269299, 28.2422098], [81.82134082, 28.3039707], [81.89994156, 28.3657903], [81.9784994, 28.4276722], [82.05700304, 28.4895994], [82.13546388, 28.5515975], [82.21387788, 28.6136548], [82.29224237, 28.6757699], [82.37056257, 28.7379456], [82.44890563, 28.8002649], [82.52713307, 28.8625599], [82.60524238, 28.9248289], [82.68337141, 28.9872389], [82.7614563, 29.0497099], [82.83949399, 29.1122398], [82.91748443, 29.1748286], [82.99542698, 29.237479], [83.07332285, 29.3001856], [83.15117138, 29.362951], [83.22897243, 29.4257752], [83.30672697, 29.4886654], [83.38443298, 29.5516073], [83.46209151, 29.6146076], [83.53970245, 29.6776665], [83.61726572, 29.740784], [83.69478131, 29.8039601], [83.77224917, 29.8671947], [83.84966925, 29.9304877], [83.92704139, 29.9938391], [84.00436636, 30.0572506], [84.08164288, 30.1207189], [84.15887095, 30.1842421], [84.23605134, 30.2478314], [84.31318369, 30.3114708], [84.39026816, 30.3751722], [84.4673045, 30.4389318], [84.5442928, 30.5027497], [84.62123275, 30.5666255], [84.6981238, 30.6305568], [84.7749672, 30.6945488], [84.85176241, 30.7585994], [84.92850909, 30.8227075], [85.00520734, 30.8868735], [85.08185729, 30.9510939], [85.15845847, 31.0153758], [85.23501115, 31.0797154], [85.3115152, 31.1441128], [85.38797063, 31.20847], [85.46437737, 31.2729846], [85.54073537, 31.3375569], [85.61704458, 31.4021868], [85.69330437, 31.4668744], [85.76951589, 31.5316195], [85.84572604, 31.5965397], [85.92183982, 31.6614002], [85.99790458, 31.7263181], [86.07384278, 31.7912983], [86.14980885, 31.8563309], [86.22575506, 31.9213021], [86.30162331, 31.9864492], [86.37744236, 32.0516535], [86.45321262, 32.1169151], [86.52893307, 32.1833983], [86.60460418, 32.2476099], [86.68022588, 32.3130436], [86.75579818, 32.3785338], [86.83132091, 32.4441361], [86.90682075, 32.5097412], [86.98224466, 32.575403], [87.05761896, 32.6411216], [87.13294386, 32.7068972], [87.20821881, 32.7727296], [87.28344557, 32.8386188], [87.35862094, 32.9045648], [87.43371837, 32.9705693], [87.50879457, 33.0365663], [87.58382131, 33.1026823], [87.65879542, 33.1688613], [87.73372375, 33.2350904], [87.80859957, 33.301376], [87.88342536, 33.3677182], [87.95820098, 33.4341168], [88.03292634, 33.5005719], [88.10760159, 33.5670834], [88.18222709, 33.6336514], [88.25679968, 33.7002756], [88.33132409, 33.766956], [88.40579813, 33.8336875], [88.48031191, 33.9004807], [88.55459489, 33.96733], [88.6289175, 34.0342357], [88.70318962, 34.1011973], [88.7775803, 34.1682149], [88.85158198, 34.2352886], [88.92570211, 34.3024183], [88.99977165, 34.369604], [89.07385152, 34.4368455], [89.14783237, 34.504143], [89.22174803, 34.5714962], [89.29561252, 34.6389054], [89.36942832, 34.7063703], [89.44319333, 34.7738909], [89.51690696, 34.8414672], [89.59056954, 34.9090992], [89.66416794, 34.9767868], [89.73772212, 35.0445299], [89.81123102, 35.1123286], [89.88468892, 35.1802523], [89.95809542, 35.2481622], [90.03145075, 35.3161278], [90.10475444, 35.3841484], [90.17800704, 35.4522244], [90.25120822, 35.520282], [90.32435794, 35.5884684], [90.39745621, 35.65671], [90.47050283, 35.7250068], [90.54349785, 35.7933587], [90.61644124, 35.8617658], [90.68933293, 35.9302277], [90.76217292, 35.9987449], [90.8349609, 36.067317], [90.90769735, 36.1359447], [90.98038208, 36.2046267], [91.05301479, 36.2733643], [91.12559557, 36.342156], [91.19812438, 36.4110025], [91.27060117, 36.4799037], [91.34300145, 36.5488597], [91.4154205, 36.6178703], [91.4877409, 36.6869363], [91.5600092, 36.7560576], [91.63220335, 36.825232], [91.70436721, 36.8944608], [91.77647877, 36.9637442], [91.84853799, 37.033082], [91.92054482, 37.1024741], [91.99249923, 37.1718443], [92.06440135, 37.2413433], [92.13625079, 37.3108966], [92.2080477, 37.3805041], [92.27979201, 37.4501659], [92.35148368, 37.5198818], [92.42312269, 37.5896518], [92.49451241, 37.659477], [92.56624255, 37.7293541], [92.6377233, 37.7992862], [92.70915122, 37.8692723], [92.78052627, 37.9393124], [92.85184839, 38.0094063], [92.92311757, 38.0795541], [92.99433374, 38.1497557], [93.06549688, 38.220011], [93.13660694, 38.2903201], [93.20766388, 38.3606828], [93.27866766, 38.4311686], [93.34961825, 38.5016385], [93.42051559, 38.572162], [93.49135962, 38.6426698], [93.56215036, 38.7133003], [93.63288774, 38.7839843], [93.7035749, 38.8547309], [93.77420994, 38.9255218], [93.84478717, 38.996366], [93.91531082, 39.0672634], [93.9857809, 39.1382142], [94.05619689, 39.2092181], [94.12655924, 39.2802741], [94.19686836, 39.3513842], [94.26703345, 39.4227131], [94.3372955, 39.4939289], [94.4073833, 39.5653068], [94.4775673, 39.6364661], [94.54760743, 39.7077324], [94.61758848, 39.7791604], [94.68751692, 39.8506302], [94.75739509, 39.9221635], [94.82721922, 39.9937498], [94.89698927, 40.065389], [94.96670511, 40.1370817], [95.03636687, 40.2088259], [95.10597441, 40.2806229], [95.1755277, 40.3524723], [95.24502675, 40.4243743], [95.31447146, 40.4963268], [95.38386165, 40.5683329], [95.45319765, 40.6403922], [95.52247918, 40.712504], [95.59170626, 40.784668], [95.66087882, 40.8568842], [95.72999683, 40.9291526], [95.79906024, 41.0014733], [95.86806901, 41.0738461], [95.93702311, 41.1462733], [96.00592255, 41.2187501], [96.07476718, 41.291279], [96.14355674, 41.3638603], [96.21229197, 41.4364997], [96.28104001, 41.5093118], [96.34959765, 41.5819211], [96.41816795, 41.6547096], [96.48668497, 41.7275557], [96.55514535, 41.8004477], [96.62355418, 41.8733914], [96.69190458, 41.9463913], [96.76019956, 42.0194382], [96.82844122, 42.0925366], [96.89662576, 42.1656865], [96.96475503, 42.2388879], [97.03282899, 42.3121337], [97.1008476, 42.3854378], [97.16881062, 42.4587977], [97.2367189, 42.5322053], [97.30457347, 42.6056635], [97.37237034, 42.6791727], [97.44011017, 42.752733], [97.50779431, 42.8263444], [97.5754238, 42.8999996], [97.64299834, 42.9737132], [97.71051599, 43.0474778], [97.77797913, 43.1212933], [97.84538433, 43.1951573], [97.91273529, 43.2690788], [97.9800311, 43.3430433], [98.04727249, 43.4170623], [98.11445553, 43.4911322], [98.18158294, 43.565251], [98.24865489, 43.6394222], [98.31567083, 43.7136441], [98.38263029, 43.7879165], [98.44953405, 43.8622395], [98.51637991, 43.9366122], [98.58310241, 44.0110983], [98.64990714, 44.0855068], [98.71658609, 44.1600316], [98.78320792, 44.2346098], [98.84977268, 44.3092353], [98.91628224, 44.383908], [98.98273571, 44.4586338], [99.04913273, 44.5334108], [99.11547325, 44.6082368], [99.18175701, 44.6831135], [99.24798415, 44.7580398], [99.31415379, 44.8330155], [99.38026802, 44.9080417], [99.4463263, 44.9831158], [99.51232713, 45.0582419], [99.57827076, 45.1334189], [99.64415862, 45.2086446], [99.70998907, 45.2839199], [99.77576265, 45.359245], [99.84147933, 45.4346197], [99.90694676, 45.5102174], [99.97274159, 45.5855183], [100.0382871, 45.6610417], [100.1037759, 45.7366145], [100.1692077, 45.8122362], [100.2345822, 45.8879079], [100.2999015, 45.9636948], [100.3651886, 46.0394653], [100.4303915, 46.1152851], [100.4955371, 46.1911529], [100.5606255, 46.2670709], [100.6256292, 46.3430382], [100.6906009, 46.4189895], [100.755517, 46.4950548], [100.8203756, 46.571169], [100.8851768, 46.6473323], [100.9499203, 46.7235444], [101.0146064, 46.7998054], [101.0792348, 46.8761142], [101.1438056, 46.9524728], [101.2083187, 47.0288803], [101.272774, 47.1053364], [101.3371716, 47.1818412], [101.4015527, 47.2584721], [101.4657934, 47.3349966], [101.5301289, 47.4121856], [101.5941836, 47.4883461], [101.6582919, 47.5650932], [101.7223422, 47.641889], [101.7863342, 47.7187332], [101.8502739, 47.795653], [101.9141623, 47.8726028], [101.9779804, 47.9495917], [102.0417404, 48.0266288], [102.1054421, 48.1037139], [102.1690856, 48.1808472], [102.2326709, 48.2580285], [102.2961978, 48.3352579], [102.3596537, 48.4125278], [102.423058, 48.4898243], [102.4864097, 48.5671972], [102.549703, 48.6446179], [102.6129375, 48.7220867], [102.6761136, 48.7996026], [102.7392313, 48.8771666], [102.8022904, 48.9547781], [102.8652909, 49.0324373], [102.9282328, 49.110144], [102.9911159, 49.1878981], [103.0539405, 49.2656999], [103.1166802, 49.3436785], [103.1794023, 49.4218881], [103.2420501, 49.4998311], [103.3045711, 49.5777397], [103.3671539, 49.655548], [103.4296513, 49.7335047], [103.4920635, 49.8116375], [103.5544168, 49.8898174], [103.6167109, 49.9680443], [103.678946, 50.0463183], [103.7411221, 50.1246391], [103.8032389, 50.203007], [103.8652965, 50.2814218], [103.9273097, 50.3599112], [103.9892338, 50.4383916], [104.0511136, 50.5169467], [104.112934, 50.5955486], [104.1744865, 50.6742257], [104.2363967, 50.7528922], [104.2980389, 50.831634], [104.3596216, 50.9104222], [104.4211477, 50.9892653], [104.4826153, 51.0681485], [104.5440198, 51.1470769], [104.6053394, 51.2260709], [104.6666319, 51.3051053], [104.7278748, 51.3841382], [104.7890404, 51.4632509], [104.8501461, 51.5424099], [104.9111919, 51.6216152], [104.9721783, 51.7008661], [105.0331045, 51.7801634], [105.0939707, 51.8595066], [105.154777, 51.9388958], [105.2155233, 52.0183308], [105.2762017, 52.0977997], [105.3368278, 52.1773267], [105.397394, 52.2568991], [105.4579003, 52.3365173], [105.5183462, 52.416181], [105.5787319, 52.4958904], [105.6390574, 52.5756453], [105.6993227, 52.6554458], [105.7595277, 52.7352917], [105.8196723, 52.8151831], [105.879707, 52.8952147], [105.9397101, 52.975157], [105.9997439, 53.0551297], [106.0596458, 53.1352019], [106.1194872, 53.2153174], [106.1792692, 53.2954804], [106.2389908, 53.3756886], [106.2981939, 53.4563548], [106.3582519, 53.5362401], [106.4177911, 53.6165832], [106.4772697, 53.6969709], [106.5366878, 53.7774039], [106.5960452, 53.8578818], [106.6553419, 53.9384046], [106.7145777, 54.0189721], [106.7737526, 54.0995842], [106.8328669, 54.1802412], [106.8919197, 54.2609426], [106.9509125, 54.3416901], [107.0098436, 54.4224807], [107.0687145, 54.5033161], [107.1275236, 54.5841956], [107.1862716, 54.6651195], [107.2449584, 54.7460877], [107.3035841, 54.8271002], [107.3621482, 54.9081567], [107.4206521, 54.989257], [107.4790938, 55.0704013], [107.5374745, 55.1515905], [107.595794, 55.2328239], [107.654052, 55.3141012], [107.7122486, 55.3954225], [107.7703838, 55.4767877], [107.8284575, 55.5581968], [107.8864704, 55.6396522], [107.9444211, 55.721149], [108.0023114, 55.8026901], [108.0601389, 55.8842741], [108.1179048, 55.965902], [108.1756091, 56.0475733], [108.2332516, 56.1292883], [108.2907481, 56.2112079], [108.3482667, 56.2930087], [108.4058081, 56.3746936], [108.4632036, 56.4565844], [108.5205371, 56.5385164], [108.5778105, 56.6204927], [108.6350203, 56.7025112], [108.6921681, 56.7845729], [108.749254, 56.8666778], [108.8062778, 56.9488257], [108.8632399, 57.0310212], [108.9201396, 57.113255], [108.9769779, 57.1955326], [109.0337533, 57.2778523], [109.0904659, 57.3602125], [109.1471169, 57.442618], [109.2037054, 57.5250708], [109.2602321, 57.6075621], [109.3166966, 57.6900967], [109.3730984, 57.7726728], [109.4294376, 57.8552884], [109.4857145, 57.93795], [109.5419267, 58.0206568], [109.5980789, 58.1034028], [109.6541699, 58.1861888], [109.710197, 58.2690196], [109.766161, 58.3518938], [109.8220608, 58.4348112], [109.8779019, 58.5177663], [109.9336785, 58.6007659], [109.9893924, 58.6838076], [110.0450432, 58.7668907], [110.1006303, 58.8500152], [110.1561564, 58.9331795], [110.2116185, 59.0163887], [110.2670175, 59.0996394], [110.3223549, 59.1829322], [110.3776297, 59.2662654], [110.4328409, 59.3496424], [110.4879891, 59.4330612], [110.5430743, 59.5165216], [110.5980964, 59.6000235], [110.6530555, 59.683567], [110.7079508, 59.7671516], [110.7627829, 59.8507765], [110.8175525, 59.9344442], [110.8722591, 60.0181534], [110.9269023, 60.1019038], [110.9814832, 60.1856946], [111.0359998, 60.2695273], [111.0904531, 60.3534013], [111.1448431, 60.4373164], [111.1991697, 60.5212725], [111.2534325, 60.6052691], [111.3076322, 60.6893071], [111.3617685, 60.7733861], [111.4158412, 60.857506], [111.4698503, 60.9416666], [111.5237959, 61.0258684], [111.577678, 61.1101106], [111.6314964, 61.1943934], [111.6852511, 61.2787169], [111.7389421, 61.3630809], [111.7924015, 61.4476165], [111.8460156, 61.5321545], [111.8994661, 61.6165457], [111.9530686, 61.7009417], [112.0064428, 61.7855737], [112.0597778, 61.8701992], [112.1130224, 61.9548462], [112.1660898, 62.0397404], [112.2192816, 62.1245574], [112.272334, 62.2093238], [112.3254363, 62.294313], [112.3782553, 62.3785964], [112.4311155, 62.4634834], [112.4839117, 62.5484103], [112.5366436, 62.633377], [112.5893166, 62.7184093], [112.6419315, 62.8034623], [112.6944708, 62.8885486], [112.7469482, 62.9736813], [112.7993623, 63.0588485], [112.8517088, 63.1440536], [112.9039907, 63.229298], [112.9562083, 63.3145816], [113.0083499, 63.3998982], [113.0604333, 63.4852342], [113.1124577, 63.5706362], [113.1644173, 63.6560779], [113.2163126, 63.7415583], [113.2681434, 63.8270781], [113.3199095, 63.9126369], [113.371611, 63.9982347], [113.4232478, 64.0838715], [113.4748161, 64.1695454], [113.5263209, 64.2552521], [113.5777636, 64.3410055], [113.6291413, 64.4267975], [113.6804542, 64.5126287], [113.7317024, 64.5984986], [113.7828855, 64.684407], [113.8340036, 64.770354], [113.8850572, 64.8563397], [113.9360455, 64.9423633], [113.9869691, 65.028426], [114.0378274, 65.1145271], [114.0886458, 65.2008464], [114.1393743, 65.2870242], [114.1900376, 65.3732402], [114.2405847, 65.4594487], [114.291145, 65.5456071], [114.341613, 65.6319378], [114.3920158, 65.7183066], [114.4423534, 65.8047135], [114.4926252, 65.8911575], [114.5428322, 65.9776402], [114.5929739, 66.0641608], [114.6430505, 66.1507194], [114.6930611, 66.237315], [114.7430067, 66.323949], [114.7928867, 66.4106206], [114.8427014, 66.49733], [114.8924504, 66.584077], [114.9419169, 66.6709154], [114.9917525, 66.7576848], [115.041305, 66.8445442], [115.0907925, 66.9314413], [115.1402151, 67.0183747], [115.1895707, 67.1053463], [115.2388606, 67.192355], [115.2880847, 67.2794013], [115.3372431, 67.3664844], [115.3863369, 67.4536036], [115.4353639, 67.5407613], [115.484325, 67.6279558], [115.5332201, 67.7151871], [115.5820493, 67.8024552], [115.6308127, 67.8897603], [115.67951, 67.9771021], [115.7281414, 68.0644806], [115.7767067, 68.1518959], [115.8252061, 68.2393477], [115.8736386, 68.3268359], [115.9220057, 68.4143609], [115.9703068, 68.5019224], [116.0185417, 68.5895204], [116.0667104, 68.6771547], [116.1148129, 68.7648254], [116.1627002, 68.8528171], [116.2106702, 68.940559], [116.2587225, 69.028055], [116.3065597, 69.1158694], [116.3543308, 69.2037211], [116.4020356, 69.2916089], [116.449674, 69.3795326], [116.4972459, 69.4674923], [116.5447515, 69.5554879], [116.5921901, 69.6435187], [116.6395627, 69.731586], [116.6868687, 69.819689], [116.7341083, 69.9078277], [116.7812806, 69.9960008], [116.8283868, 70.0842111], [116.8754265, 70.1724566], [116.9224001, 70.2607399], [116.9693064, 70.3490564], [117.0161463, 70.4374085], [117.0629192, 70.5257958], [117.1096254, 70.6142183], [117.1562647, 70.7026761], [117.2028374, 70.7911692], [117.2493455, 70.8796959], [117.2957843, 70.9682591], [117.3421563, 71.0568573], [117.3884614, 71.1454906], [117.4346996, 71.2341588], [117.4808706, 71.3228619], [117.5269747, 71.4115998], [117.5730118, 71.5003725], [117.6189818, 71.5891799], [117.6648848, 71.6780221], [117.7107206, 71.7668989], [117.7564893, 71.8558102], [117.8021908, 71.9447562], [117.847824, 72.0337359], [117.8933906, 72.1227486], [117.9388904, 72.2117974], [117.9843228, 72.3008811], [118.0296881, 72.3899991], [118.0749861, 72.4791512], [118.1202168, 72.5683375], [118.1653801, 72.6575581], [118.2104762, 72.7468166], [118.2555062, 72.836106], [118.3004674, 72.9254287], [118.345361, 73.0147851], [118.3901871, 73.1041753], [118.4349456, 73.1935994], [118.4796366, 73.2830573], [118.5242602, 73.3725493], [118.5688161, 73.4620746], [118.6133061, 73.5516386], [118.6577293, 73.6412323], [118.7020822, 73.7308584], [118.7463675, 73.820518], [118.7905855, 73.9102112], [118.8347353, 73.9999376], [118.8788161, 74.0896963], [118.9228301, 74.1794898], [118.9667764, 74.2693173], [119.010655, 74.3591767], [119.0544675, 74.4490704], [119.0982103, 74.53899591], [119.1418852, 74.62895441], [119.1854916, 74.71894714], [119.2290105, 74.80897161], [119.2724805, 74.89902773], [119.3158803, 74.98911144], [119.3592142, 75.079234], [119.40248, 75.16938928], [119.4456775, 75.25958174], [119.4888071, 75.34980112], [119.5318686, 75.44005403], [119.5748618, 75.53033948], [119.6177864, 75.62065622], [119.6606426, 75.71101179], [119.703431, 75.8013945], [119.7461514, 75.89180903], [119.7888034, 75.98225609], [119.8313871, 76.07273518], [119.8739024, 76.16324651], [119.9163495, 76.25378823], [119.9587271, 76.34436368], [120.0010414, 76.43496672], [120.0432839, 76.52560376], [120.0854572, 76.61627397], [120.1275604, 76.7069772], [120.1696007, 76.79770671], [120.2115686, 76.8884735], [120.2534679, 76.97927195], [120.2953001, 77.07010108], [120.3370623, 77.16096276], [120.3787557, 77.25185588], [120.4203805, 77.34278053], [120.4619367, 77.43373661], [120.5034241, 77.524724], [120.5448431, 77.61574361], [120.5861597, 77.70755959], [120.6274404, 77.7986377], [120.6685612, 77.88921004], [120.7098267, 77.9801309], [120.7509015, 78.07130537], [120.7919076, 78.16251083], [120.8328493, 78.25376991], [120.8737175, 78.3450432], [120.9145167, 78.43634155], [120.9549907, 78.52801416], [120.9956528, 78.61937243], [121.0365006, 78.71042082], [121.0770238, 78.80184189], [121.117478, 78.89329353], [121.1578632, 78.98477568], [121.1981744, 79.07625845], [121.2384213, 79.16780137], [121.2785991, 79.25937443], [121.3187077, 79.35097802], [121.3587471, 79.44261195], [121.3987173, 79.53427601], [121.4386183, 79.62597025], [121.4784501, 79.71769457], [121.5182145, 79.80951247], [121.5579076, 79.90131526], [121.5975314, 79.99312952], [121.6370859, 80.08497391], [121.676571, 80.17684716], [121.7159865, 80.2687512], [121.755331, 80.36060253], [121.7947451, 80.45271688], [121.8339523, 80.54470914], [121.872953, 80.63658167], [121.9120214, 80.72863382], [121.9510201, 80.82071545], [121.9899504, 80.91356178], [122.028809, 81.00496694], [122.0675991, 81.09713669], [122.1063196, 81.1893353], [122.1449704, 81.28156359], [122.183552, 81.37382412], [122.2220636, 81.46611202], [122.2605052, 81.55842817], [122.2988773, 81.65077294], [122.3371795, 81.74314662], [122.3754121, 81.83554925], [122.413575, 81.92798073], [122.4516679, 82.020441], [122.4896911, 82.11293001], [122.5276444, 82.20544784], [122.5655279, 82.2979942], [122.6033414, 82.39056914], [122.6410852, 82.48314884], [122.6787587, 82.57578026], [122.7163625, 82.6684403], [122.7538963, 82.7611287], [122.7913588, 82.85384168], [122.8287526, 82.94658661], [122.8660763, 83.03935979], [122.9033299, 83.13216112], [122.9405135, 83.22499055], [122.9776269, 83.31784798], [123.0146703, 83.4107335], [123.0516435, 83.50364696], [123.0885465, 83.59658831], [123.1253794, 83.68955751], [123.162142, 83.78255449], [123.198807, 83.87571626], [123.2354292, 83.96876861], [123.271981, 84.06184853], [123.3084626, 84.15495601], [123.3448738, 84.24809098], [123.3812429, 84.3411186], [123.4175135, 84.43430865], [123.4537137, 84.52752606], [123.4898435, 84.62077078], [123.5259033, 84.71404255], [123.5618921, 84.80734202], [123.5978105, 84.90066836], [123.6336628, 84.99401928], [123.6695479, 85.08739973], [123.7052554, 85.18080716], [123.7408924, 85.27424152], [123.7764588, 85.36770271], [123.8119551, 85.46119196], [123.8473808, 85.5547069], [123.8827355, 85.64824906], [123.9180194, 85.74181737], [123.9532329, 85.83541229], [123.9883754, 85.92903376], [124.0234473, 86.02268174], [124.0584473, 86.11635657], [124.0933769, 86.21005741], [124.1282364, 86.30378459], [124.1630247, 86.3975433], [124.1977427, 86.49132313], [124.2323898, 86.58513033], [124.2669669, 86.67896299], [124.3014723, 86.77282163], [124.3359064, 86.86670596], [124.3702696, 86.96061476], [124.4045623, 87.05455212], [124.438784, 87.14851421], [124.4729354, 87.24250211], [124.5070152, 87.33651576], [124.5410223, 87.43055511], [124.57496, 87.52461829], [124.6088267, 87.61870889], [124.6426224, 87.71281689], [124.676347, 87.80695846], [124.7100004, 87.90112547], [124.7435828, 87.99531785], [124.777094, 88.08953559], [124.8105306, 88.18377971], [124.8438994, 88.27804797], [124.8771968, 88.37234081], [124.9104232, 88.46665936], [124.9435777, 88.56100296], [124.9766616, 88.65537021], [125.0096761, 88.74976327], [125.0426175, 88.84418173], [125.0754875, 88.93862502], [125.1082863, 89.03309311], [125.1410136, 89.12758594], [125.1736696, 89.22210209], [125.2062546, 89.31664371], [125.2387676, 89.41121081], [125.2712107, 89.50580207], [125.3035808, 89.60041783], [125.3358797, 89.69505798], [125.3681071, 89.78972269], [125.4002627, 89.8844115], [125.4323471, 89.97912462], [125.4643599, 90.07386189], [125.4963008, 90.1686233], [125.5281707, 90.26340881], [125.5599682, 90.35821763], [125.5916947, 90.45305116], [125.6233496, 90.54790868], [125.6549329, 90.64279001], [125.6864441, 90.7376954], [125.7176743, 90.83285867], [125.7489567, 90.92806197], [125.7805509, 91.02280541], [125.8117754, 91.11755108], [125.842929, 91.21257431], [125.8740101, 91.30762134], [125.9050195, 91.40269516], [125.9359587, 91.49778928], [125.9668244, 91.59290651], [125.9976184, 91.68804707], [126.0283404, 91.78321085], [126.058991, 91.8783978], [126.0895694, 91.97360815], [126.1200758, 92.06884218], [126.1505099, 92.16409845], [126.1808724, 92.25937754], [126.2111629, 92.35467953], [126.2413815, 92.45000437], [126.2716002, 92.54572451], [126.3015976, 92.64072634], [126.3316, 92.73611941], [126.3615289, 92.831539], [126.3913873, 92.92697343], [126.4211792, 93.02245312], [126.4509028, 93.11793644], [126.4805448, 93.21344082], [126.5101148, 93.3089689], [126.5396126, 93.40451973], [126.5690383, 93.50008987], [126.5983919, 93.59568472], [126.6276733, 93.69130169], [126.6568825, 93.78694073], [126.6860194, 93.88260178], [126.7150754, 93.97828471], [126.7440633, 94.07397105], [126.7729821, 94.1696976], [126.8018305, 94.26544609], [126.830606, 94.36121267], [126.8593094, 94.45700461], [126.8879407, 94.55281819], [126.9164994, 94.64865341], [126.9449836, 94.74451015], [126.9733975, 94.84038835], [127.0017393, 94.93628796], [127.0300087, 95.03221312], [127.0582057, 95.12815541], [127.0863321, 95.22411896], [127.1143911, 95.32010131], [127.142371, 95.41610712], [127.1702785, 95.51213401], [127.1981123, 95.6081852], [127.2258806, 95.70425083], [127.2535721, 95.80034048], [127.2811894, 95.89645584], [127.3087348, 95.99258708], [127.3362095, 96.08873904], [127.3636086, 96.18491167], [127.3909366, 96.28110142], [127.418149, 96.37755325], [127.4453319, 96.47378705], [127.4724411, 96.57004289], [127.4995223, 96.66608146], [127.5264896, 96.76237449], [127.5533826, 96.85869043], [127.5802016, 96.95502659], [127.6069496, 97.051386], [127.6336256, 97.14775898], [127.6602286, 97.24415551], [127.686759, 97.34057201], [127.7132169, 97.43700858], [127.7396023, 97.53346488], [127.7659152, 97.62994098], [127.7921558, 97.72643683], [127.8183237, 97.82295235], [127.8444202, 97.91948718], [127.8704431, 98.0160419], [127.8963935, 98.11261613], [127.9222713, 98.20920708], [127.9480764, 98.30582022], [127.9738092, 98.40245246], [127.9994696, 98.49910426], [128.0250564, 98.59577532], [128.0505714, 98.6924653], [128.0760138, 98.78917265], [128.101384, 98.88590104], [128.1266835, 98.98270735], [128.1519328, 99.07947378], [128.1770856, 99.17625907], [128.2021658, 99.27306237], [128.2271667, 99.36988783], [128.2521017, 99.4667297], [128.2769401, 99.56358992], [128.3017288, 99.66040914], [128.3264466, 99.75730637], [128.351092, 99.85422204], [128.3756663, 99.9511561], [128.4001677, 100.0481081], [128.4245958, 100.1450788], [128.4489516, 100.2420677], [128.4732351, 100.3390752], [128.4974462, 100.4361059], [128.5215879, 100.5331492], [128.5456541, 100.6302104], [128.5696481, 100.7272895], [128.5935699, 100.8243865], [128.6174194, 100.9215012], [128.6411965, 101.0186336], [128.6649014, 101.1157838], [128.688534, 101.2129515], [128.7120953, 101.3101365], [128.7339787, 101.4073388], [128.757395, 101.5046563], [128.7807395, 101.6018938], [128.804012, 101.6991487], [128.8272126, 101.7963238], [128.8503989, 101.893613], [128.8734556, 101.9909192], [128.8964402, 102.0882359], [128.919353, 102.1855728], [128.9421938, 102.2829304], [128.9649628, 102.3803043], [128.9876599, 102.4776945], [129.0102852, 102.5751019], [129.0328606, 102.672526], [129.0553423, 102.7699667], [129.0777522, 102.867424], [129.1000901, 102.9648977], [129.1223616, 103.0623878], [129.1445564, 103.1599405], [129.1666796, 103.2574633], [129.1902339, 103.3550023], [129.2107111, 103.4525579], [129.2326195, 103.5501292], [129.2559527, 103.64767], [129.2777162, 103.7452733], [129.2994077, 103.8428927], [129.321028, 103.9405278], [129.3425768, 104.0381787], [129.3640538, 104.1358453], [129.3854616, 104.233526], [129.4037692, 104.331223], [129.4280601, 104.4289363], [129.4492522, 104.5266653], [129.4703733, 104.6244097], [129.491423, 104.722168], [129.5124008, 104.8199431], [129.5333082, 104.9177333], [129.5541175, 105.015675], [129.5749357, 105.1134978], [129.5956882, 105.2116153], [129.6162551, 105.3091866], [129.6367563, 105.4070529], [129.6572655, 105.5047975], [129.6776767, 105.6026928], [129.6980168, 105.7006014], [129.7182889, 105.7985403], [129.7381551, 105.8967442], [129.758385, 105.994697], [129.7783429, 106.0926642], [129.7986656, 106.190385], [129.8185824, 106.288382], [129.8384282, 106.3863935], [129.8582035, 106.4844191], [129.8779077, 106.5824591], [129.8975374, 106.6805127], [129.9170979, 106.7785657], [129.9365923, 106.8766476], [129.955797, 106.9749219], [129.9753704, 107.0728508], [129.9946536, 107.1709744], [130.0138686, 107.2691115], [130.0330127, 107.3672623], [130.0520867, 107.4654268], [130.0710908, 107.5636049], [130.0900248, 107.6617956], [130.1088897, 107.7600006], [130.1276855, 107.8582187], [130.1464107, 107.9564701], [130.1650655, 108.0547115], [130.1836501, 108.152968], [130.2021674, 108.2512386], [130.2206167, 108.3495219], [130.2389954, 108.4478186], [130.2572963, 108.5461315], [130.2755366, 108.6444539], [130.293708, 108.7427892], [130.3118104, 108.8411371], [130.3298439, 108.9394977], [130.3478086, 109.0378709], [130.3657106, 109.1362531], [130.3835397, 109.234656], [130.4012986, 109.3330666], [130.418989, 109.4314895], [130.4366137, 109.5299239], [130.4541672, 109.6283712], [130.4716524, 109.7268308], [130.4890694, 109.8253025], [130.5064183, 109.9237864], [130.5236987, 110.0222821], [130.5409111, 110.1207889], [130.5580561, 110.2193083], [130.5751332, 110.3178395], [130.5921412, 110.4163826], [130.6090848, 110.5149367], [130.625959, 110.6135029], [130.6427652, 110.7120805], [130.6595044, 110.8106695], [130.6761738, 110.9092644], [130.6927781, 111.0078762], [130.7093152, 111.1064996], [130.7257853, 111.2051339], [130.7421868, 111.3037797], [130.7585256, 111.4024395], [130.7748055, 111.5011024], [130.7910106, 111.5997815], [130.8071461, 111.698471], [130.8232154, 111.7971713], [130.8392182, 111.8958825], [130.8551544, 111.9946051], [130.8710248, 112.0933375], [130.886829, 112.1920808], [130.902567, 112.2908341], [130.9182388, 112.3895982], [130.9338446, 112.4883728], [130.9483652, 112.588077], [130.9648553, 112.6859535], [130.9802634, 112.7847591], [130.9956075, 112.8835736], [131.0108835, 112.9823987], [131.0260953, 113.0812316], [131.0412457, 113.1800768], [131.0563229, 113.278934], [131.0713389, 113.3778001], [131.086291, 113.4766757], [131.1011773, 113.5755614], [131.1159988, 113.6744566], [131.1307556, 113.7733621], [131.1454478, 113.8722768], [131.1600753, 113.971201], [131.1746382, 114.0701357], [131.189137, 114.1690789], [131.2035676, 114.2680324], [131.2179774, 114.3671634], [131.2322485, 114.4659648], [131.2464913, 114.5649453], [131.2606708, 114.6639348], [131.2747846, 114.7629338], [131.2888357, 114.8619417], [131.302825, 114.9609673], [131.3167538, 115.0599952], [131.3306185, 115.1590319], [131.3444173, 115.2580752], [131.3581519, 115.3571281], [131.3718237, 115.4561892], [131.3854325, 115.555259], [131.3989784, 115.6543415], [131.4124618, 115.7534284], [131.4258842, 115.852525], [131.4392383, 115.9516265], [131.4525319, 116.050731], [131.4657658, 116.1498511], [131.478938, 116.2489804], [131.4920477, 116.3481173], [131.5050954, 116.4472626], [131.5180815, 116.5464159], [131.5310018, 116.6455749], [131.5438646, 116.7447442], [131.5566651, 116.8439207], [131.5694056, 116.9431054], [131.5820847, 117.0422952], [131.5947025, 117.1414946], [131.6072593, 117.2407034], [131.6197553, 117.3399198], [131.6321905, 117.4391439], [131.6445569, 117.538377], [131.6568729, 117.637616], [131.6691331, 117.7368617], [131.6813263, 117.8361197], [131.6933239, 117.9356321], [131.7056053, 118.0350622], [131.7176432, 118.1343537], [131.7295251, 118.2332829], [131.7414186, 118.3325735], [131.7532537, 118.431873], [131.7650295, 118.5311783], [131.7767228, 118.6304756], [131.7883825, 118.7297402], [131.7999809, 118.8290653], [131.8115176, 118.9283954], [131.823, 119.0277343], [131.8344404, 119.1271348], [131.8457922, 119.2264257], [131.8570986, 119.3257849], [131.8683469, 119.4251506], [131.8795388, 119.5245228], [131.8906714, 119.6239016], [131.901747, 119.72329], [131.9127653, 119.8226828], [131.9237185, 119.9220816], [131.9346201, 120.021485], [131.9454727, 120.1208947], [131.9562611, 120.2203113], [131.9669929, 120.3197342], [131.9776571, 120.4191657], [131.988219, 120.5186387], [131.9987813, 120.6180797], [132.0093384, 120.7174886], [132.0197872, 120.8169383], [132.0301807, 120.9163971], [132.0405234, 121.0158663], [132.0508032, 121.1153398], [132.0610296, 121.214816], [132.0712002, 121.3142982], [132.0813157, 121.4137858], [132.0913762, 121.5132789], [132.1013762, 121.6127786], [132.1113336, 121.7122824], [132.1212313, 121.8117916], [132.1310727, 121.9113065], [132.1408598, 122.0108267], [132.1505938, 122.1103507], [132.160272, 122.2098799], [132.1698965, 122.3094159], [132.1794673, 122.408957], [132.1889878, 122.508503], [132.19845, 122.6080535], [132.2078619, 122.7076096], [132.2172158, 122.8071644], [132.2265235, 122.9067292], [132.2356118, 123.0064073], [132.2449672, 123.1058779], [132.2541052, 123.2054594], [132.2631969, 123.3050452], [132.2722518, 123.4046306], [132.2812415, 123.5042256], [132.290179, 123.6038298], [132.2990638, 123.7034341], [132.307897, 123.803043], [132.3163044, 123.9029487], [132.3251486, 124.0027739], [132.3337174, 124.1021863], [132.3427165, 124.2015231], [132.3512914, 124.30115], [132.3598174, 124.4007855], [132.3682922, 124.5004255], [132.3767169, 124.6000696], [132.3850903, 124.6997132], [132.3934146, 124.7993657], [132.4016764, 124.8990241], [132.4099133, 124.9986839], [132.4180963, 125.0983473], [132.4262211, 125.1980166], [132.4343014, 125.2976859], [132.4423279, 125.3973629], [132.450305, 125.4970437], [132.4580454, 125.5967283], [132.4660979, 125.696417], [132.4739259, 125.7961085], [132.4817048, 125.8958047], [132.4894444, 125.9955059], [132.4971275, 126.0952106], [132.5047622, 126.1949179], [132.5123488, 126.2946288], [132.5198927, 126.3943437], [132.5273842, 126.4940618], [132.5348323, 126.593786], [132.5422242, 126.6935114], [132.5495823, 126.7932407], [132.5568856, 126.8929731], [132.5641416, 126.9927086], [132.571351, 127.0924477], [132.5785139, 127.1921903], [132.5856306, 127.2919363], [132.5927105, 127.3916855], [132.59973, 127.4914356], [132.6067087, 127.5913229], [132.6134875, 127.6911263], [132.6203761, 127.7908884], [132.6274106, 127.8906535], [132.6342312, 127.9906023], [132.6409089, 128.0901507], [132.6476178, 128.1897963], [132.6542789, 128.289573], [132.6608944, 128.389354], [132.6674707, 128.4891364], [132.6740032, 128.5889324], [132.6804887, 128.6887217], [132.6869301, 128.7885144], [132.693328, 128.8883093], [132.6996246, 128.9881073], [132.7059358, 129.087908], [132.7121952, 129.1877114], [132.7184285, 129.2875162], [132.7246676, 129.387325], [132.7307971, 129.4871365], [132.7369038, 129.5869507], [132.7429673, 129.6867737], [132.7489634, 129.7865786], [132.7549338, 129.8864006], [132.7608638, 129.9862225], [132.7667504, 130.0860482], [132.7725957, 130.1858777], [132.7784152, 130.2857071], [132.7841779, 130.3855416], [132.7898992, 130.4853784], [132.7955742, 130.5852176], [132.8012193, 130.6850591], [132.8068175, 130.7849031], [132.8123775, 130.8847492], [132.8178963, 130.9845975], [132.8229684, 131.0844481], [132.8288147, 131.1843012], [132.8342137, 131.2841549], [132.8395732, 131.3840119], [132.8448887, 131.4838711], [132.8501743, 131.583732], [132.8554161, 131.6835954], [132.860619, 131.7834608], [132.8656557, 131.8833282], [132.870908, 131.9831976], [132.8759941, 132.0830692], [132.8810429, 132.1829426], [132.8860545, 132.2828179], [132.8910273, 132.3826952], [132.895961, 132.4825763], [132.9006038, 132.5824603], [132.9054662, 132.6823374], [132.9105311, 132.7822219], [132.9153056, 132.8821086], [132.9200538, 132.9819967], [132.9247799, 133.0818856], [132.9294554, 133.1817785], [132.9340946, 133.2816718], [132.9386976, 133.3815651], [132.9432569, 133.4814616], [132.9477877, 133.5813598], [132.9522822, 133.6812596], [132.9567417, 133.7811609], [132.9611652, 133.8810638], [132.9655541, 133.9809683], [132.9699066, 134.0808728], [132.9742254, 134.1807806], [132.9785095, 134.2806895], [132.982759, 134.3806], [132.9868059, 134.4805118], [132.9909918, 134.5804249], [132.9951532, 134.6803397], [132.9994308, 134.7802556], [133.0035037, 134.8801727], [133.0075487, 134.9800975], [133.0115688, 135.0800179], [133.0155485, 135.1799374], [133.0194935, 135.2798605], [133.0233476, 135.3797853], [133.0272274, 135.4797543], [133.0307188, 135.5799442], [133.0344955, 135.6796731], [133.0386719, 135.7795628], [133.0424272, 135.8794952], [133.0461477, 135.9794274], [133.0498198, 136.0793479], [133.0534769, 136.1792473], [133.0571018, 136.2791817], [133.0606956, 136.3791171], [133.0642554, 136.4790539], [133.0677875, 136.5789914], [133.071289, 136.6789302], [133.074758, 136.7788701], [133.0782053, 136.8788156], [133.0816148, 136.9787565], [133.0849981, 137.0786988], [133.0883344, 137.1786432], [133.0916543, 137.2785738], [133.0949619, 137.3785187], [133.0982163, 137.4784543], [133.1014502, 137.5784017], [133.1046774, 137.6783477], [133.1078465, 137.7782928], [133.1109941, 137.8782427], [133.1141133, 137.9781935], [133.1172207, 138.0781393], [133.1202841, 138.1780918], [133.1233189, 138.2780451], [133.1263259, 138.3779991], [133.1293049, 138.4779543], [133.1322562, 138.5779087], [133.1351807, 138.6778652], [133.1380779, 138.7778225], [133.1409481, 138.8777806], [133.1437914, 138.9777389], [133.1466361, 139.0776984], [133.1494257, 139.1776591], [133.1521909, 139.2776201], [133.1549232, 139.3775818], [133.1576319, 139.4775437], [133.1603156, 139.5775074], [133.1629728, 139.6774711], [133.1655396, 139.7774356], [133.1681462, 139.8774032], [133.1707261, 139.9773692], [133.1732816, 140.07734], [133.1758767, 140.1773075], [133.1783834, 140.2772762], [133.1808648, 140.3772443], [133.1833207, 140.477213], [133.1857528, 140.5771808], [133.1881764, 140.6771507], [133.1905589, 140.7771222], [133.1929165, 140.8770953], [133.1952519, 140.9770958], [133.1975641, 141.0770684], [133.1998502, 141.1770402], [133.2021143, 141.277015], [133.2043564, 141.3769899], [133.2065748, 141.4769653], [133.2087692, 141.5769413], [133.210945, 141.6771326], [133.2131861, 141.777218], [133.2153132, 141.8771934], [133.2173272, 141.9770597], [133.2193932, 142.0768024], [133.2214539, 142.1767813], [133.2235116, 142.2767598], [133.2255295, 142.3767395], [133.227525, 142.4767187], [133.2294874, 142.5767016], [133.2314401, 142.6766826], [133.2333868, 142.7766623], [133.2352988, 142.8766441], [133.2370322, 142.9767445], [133.2389115, 143.0767259], [133.2406749, 143.1767121], [133.2427256, 143.276576], [133.2445354, 143.3765614], [133.2463236, 143.4765457], [133.248092, 143.5765303], [133.24984, 143.6765172], [133.2515697, 143.7765022], [133.2532634, 143.8765666], [133.2549349, 143.9765533], [133.2566041, 144.0765392], [133.2582714, 144.176522], [133.2599056, 144.2765088], [133.2615385, 144.3764167], [133.2631327, 144.4764044], [133.2647099, 144.5763922], [133.2663881, 144.6766064], [133.2679312, 144.7765931], [133.2690455, 144.8766157], [133.2708389, 144.9763434], [133.2723258, 145.0763314], [133.2737989, 145.17632], [133.2752512, 145.2763096], [133.2766861, 145.3762995], [133.2780942, 145.4762898], [133.2794946, 145.5762805], [133.2808866, 145.6762711], [133.2819024, 145.7763002], [133.2833085, 145.8765507], [133.2849231, 145.9762143], [133.2861138, 146.0762095], [133.2875418, 146.176202], [133.2888449, 146.2761933], [133.2901068, 146.376186], [133.2913433, 146.4761925], [133.2926009, 146.576186], [133.2938232, 146.6761797], [133.2950301, 146.7761736], [133.2962217, 146.8761677], [133.2973982, 146.976162], [133.2985595, 147.0761568], [133.2996838, 147.176151], [133.3008381, 147.276146], [133.3019551, 147.376141], [133.3030593, 147.4761362], [133.3041476, 147.5761316], [133.3052169, 147.6761153], [133.3062209, 147.7761112], [133.30734, 147.8761046], [133.3083717, 147.9760983], [133.3093733, 148.0760944], [133.3103773, 148.1760907], [133.31138, 148.2760871], [133.3123627, 148.3760836], [133.3133271, 148.4760803], [133.3142784, 148.5760771], [133.3152173, 148.6760738], [133.3161431, 148.7760723], [133.3170541, 148.8760696], [133.3179541, 148.9760669], [133.3188411, 149.0760647], [133.3197159, 149.1760625], [133.3205785, 149.2760601], [133.3213415, 149.3760578], [133.3222702, 149.4760557], [133.3230966, 149.5760535], [133.3239114, 149.6760515], [133.3247163, 149.776049], [133.3255077, 149.876047], [133.3262878, 149.9760797], [133.3270697, 150.0760874], [133.3278268, 150.1760857], [133.3285727, 150.2760837], [133.3292126, 150.3762048], [133.3300764, 150.4762451], [133.3306462, 150.5762335], [133.3313343, 150.6761985], [133.3320262, 150.7761974], [133.3327671, 150.8761544], [133.3334763, 150.9760309], [133.3341369, 151.0760294], [133.3347682, 151.176028], [133.3354061, 151.2760286], [133.3360566, 151.3760257], [133.3366786, 151.4760216], [133.3372894, 151.5760203], [133.3378907, 151.6760189], [133.3384824, 151.7760176], [133.3390563, 151.8760218], [133.3395348, 151.9760151], [133.3401067, 152.0760126], [133.3406825, 152.1760114], [133.3412276, 152.2760155], [133.3418334, 152.3760136], [133.342361, 152.4760117], [133.3428778, 152.5769494], [133.3433879, 152.6760094], [133.3438896, 152.7760084], [133.3443828, 152.8760072], [133.3448799, 152.9760206], [133.3453565, 153.0760194], [133.3458256, 153.1760187], [133.3462861, 153.2760175], [133.3465777, 153.3760163], [133.3471484, 153.4760151], [133.3476122, 153.576014], [133.3480414, 153.6760127], [133.3483169, 153.7760113], [133.3487289, 153.8760104], [133.3491263, 153.9760063], [133.3495268, 154.0760027], [133.3499215, 154.1759631], [133.3503082, 154.2759628], [133.3506881, 154.3759624], [133.3510608, 154.4759616], [133.3514307, 154.5759609], [133.3517907, 154.675961], [133.352136, 154.7759589], [133.35248, 154.8759494], [133.3528291, 154.9759491], [133.3531614, 155.0759487], [133.3534897, 155.1759482], [133.353811, 155.2759466], [133.3541273, 155.3759442], [133.3545406, 155.4759439], [133.3547368, 155.5759434], [133.3550605, 155.6759432], [133.355429, 155.7759429], [133.3557009, 155.8759416], [133.3559791, 155.9759414], [133.3562636, 156.0759419], [133.3565521, 156.1759396], [133.3568145, 156.27594], [133.3570719, 156.3759398], [133.3573252, 156.4759394], [133.3575716, 156.5759393], [133.3577215, 156.6759414], [133.3580596, 156.7759354], [133.3582912, 156.8759353], [133.3585179, 156.9759352], [133.3587398, 157.0759351], [133.3588229, 157.1760177], [133.3590352, 157.2760173], [133.3593776, 157.3759347], [133.3595811, 157.4759346], [133.3596522, 157.57605], [133.3599755, 157.6759343], [133.3601661, 157.7759341], [133.3603525, 157.8759334], [133.3605347, 157.9759333], [133.3607116, 158.0759502], [133.3608687, 158.1760291], [133.3610389, 158.2760291], [133.3612053, 158.3760291], [133.3613478, 158.4760306], [133.361506, 158.5760304], [133.3616784, 158.6760306], [133.361845, 158.7759542], [133.3620594, 158.8762508], [133.3621376, 158.9759371], [133.3622796, 159.0759367], [133.3624179, 159.1759363], [133.3625518, 159.2759361], [133.3626817, 159.3759359], [133.3627915, 159.4759521], [133.3629149, 159.5759521], [133.3630585, 159.6759522], [133.3631626, 159.7759539], [133.3632768, 159.8759539], [133.3633611, 159.9759572], [133.363513, 160.0759516], [133.3636197, 160.1759514], [133.363732, 160.275957], [133.3637102, 160.3765445], [133.3639326, 160.4759564], [133.3640278, 160.5759585], [133.3641177, 160.6759415], [133.3641786, 160.7759427], [133.3642572, 160.8759357], [133.3643749, 160.975934], [133.3644585, 161.0759339], [133.3645398, 161.1759338], [133.3646185, 161.2759322], [133.364695, 161.375932], [133.3647698, 161.4759354], [133.3648347, 161.575938], [133.364904, 161.6759381], [133.3649816, 161.7759364], [133.3650449, 161.8759352], [133.3651088, 161.9759351], [133.3651709, 162.0759351], [133.365231, 162.1759351], [133.3652113, 162.2759961], [133.3652679, 162.3759966], [133.365295, 162.4759954], [133.3654249, 162.5759351], [133.3655027, 162.6759334], [133.3655527, 162.7759335], [133.365601, 162.8759318], [133.3656452, 162.9759322], [133.3656916, 163.0759323], [133.3657251, 163.1759785], [133.3657728, 163.2759332], [133.3657902, 163.375946], [133.3658283, 163.4759463], [133.3658312, 163.5759472], [133.3658683, 163.6759472], [133.3659388, 163.7759503], [133.365972, 163.8759506], [133.366004, 163.975951], [133.3660347, 164.0759514], [133.366065, 164.1759407], [133.366097, 164.2759411], [133.3661247, 164.3759416], [133.3661505, 164.4759422], [133.366176, 164.5759426], [133.3662019, 164.6759438], [133.3662267, 164.7759447], [133.3662449, 164.8759414], [133.3662703, 164.9759409], [133.3661778, 165.0759477], [133.3663165, 165.1759423], [133.3663541, 165.2759403], [133.3663726, 165.3759406], [133.3663136, 165.4760748], [133.3663332, 165.5760765], [133.3663495, 165.6760764], [133.3663655, 165.7760768], [133.3664081, 165.8759771], [133.3664213, 165.97598], [133.3664345, 166.0759805], [133.3664904, 166.1759426], [133.3665043, 166.2759429], [133.3665154, 166.3759431], [133.3665261, 166.4759434], [133.3665243, 166.5759436], [133.3665302, 166.6759439], [133.3665513, 166.7759404], [133.3665593, 166.8759399], [133.3665671, 166.975939], [133.3664735, 167.0760525], [133.3664899, 167.1763057], [133.3664171, 167.2763072], [133.3664229, 167.3759401], [133.3664282, 167.4759401], [133.3664333, 167.5759402], [133.3664248, 167.6759557], [133.3663948, 167.7759638], [133.366411, 167.8759618], [133.3664381, 167.9759409], [133.3664412, 168.0761811], [133.366445, 168.1759403], [133.3664476, 168.2759682], [133.3664307, 168.3759693], [133.3664334, 168.4759715], [133.3664328, 168.5759731], [133.3664534, 168.6759751], [133.3664314, 168.775977], [133.3664323, 168.8759789], [133.3664609, 168.9759829], [133.3664729, 169.075984], [133.3664752, 169.1759857], [133.3664227, 169.2759881], [133.366463, 169.3759897], [133.3664801, 169.4759919], [133.3664822, 169.5759939], [133.3664671, 169.6759944], [133.3664669, 169.7760061], [133.3664853, 169.8760076], [133.3664889, 169.9760091], [133.3664894, 170.0760215], [133.3664428, 170.1760119], [133.3664432, 170.2760131], [133.3664437, 170.3760129], [133.3664902, 170.4760139], [133.3664903, 170.5760027], [133.3664728, 170.6760037], [133.3664728, 170.776005], [133.3664704, 170.8760059], [133.3664706, 170.9760069], [133.366432, 171.0760079], [133.3664304, 171.1760096], [133.3664696, 171.2760137], [133.3664694, 171.3760135], [133.36647, 171.4760197], [133.3664726, 171.5760107], [133.3664724, 171.6760111], [133.3664895, 171.7760114], [133.3664894, 171.8759304], [133.3664795, 171.975932], [133.3664883, 172.0759302], [133.3664877, 172.1759302], [133.3664735, 172.2760381], [133.366473, 172.3760379], [133.3664727, 172.4760372], [133.3664722, 172.576037], [133.366467, 172.6760002], [133.3664663, 172.7760001], [133.3664775, 172.8759302], [133.3664767, 172.9759302], [133.3664649, 173.0759785], [133.3664488, 173.1759925], [133.366453, 173.2759474], [133.3666765, 173.3759475], [133.3666762, 173.4759473], [133.3667026, 173.5759477], [133.3663248, 173.6762908], [133.3666174, 173.7760041], [133.3666179, 173.8758959], [133.3666191, 173.9759028], [133.3666992, 174.0759099], [133.3666938, 174.1759174], [133.3666542, 174.2759253], [133.3666545, 174.3759334]]}","/**\n * Point-cloud registry for Free-path modules.\n *\n * The AT2050 / ATH2050 180° U-turn is sampled at Δs = 0.1 mm with 5001\n * points covering [0..500] mm of arc length. The data ships as JSON files\n * co-located with this module under ./data/ — they're imported via\n * JSON-resolution so consumers don't have to fetch them at runtime.\n *\n * Y-axis convention in the JSON is 2D-canvas-down (positive = \"into the\n * curve\"). XtsPointCloudCurve3 applies the Y-flip when projecting into the\n * 3D RH-Z-up frame.\n *\n * Build note: `tsc` does not emit imported .json files. A postbuild copy\n * step (scripts/copy-runtime-data.mjs) mirrors src/geometry/data/*.json\n * into dist/geometry/data/ so the relative imports in the compiled output\n * resolve against the published tarball.\n */\n\nimport combined from './data/at2050-180-combined.path.json' with { type: 'json' };\nimport half0 from './data/at2050-0500-half.path.json' with { type: 'json' };\nimport half1 from './data/at2050-0501-half.path.json' with { type: 'json' };\n\nexport interface PointCloud {\n  /** Total arc length in mm (= (N-1) × samplingMm). */\n  lengthMm: number;\n  /** Constant arc-length spacing between samples, in mm (always 0.1 here). */\n  samplingMm: number;\n  /** [x_i, y_i] in mm; canvas Y-down convention. */\n  points: ReadonlyArray<readonly [number, number]>;\n}\n\ninterface RawPathFile {\n  lengthMm: number;\n  samplingMm: number;\n  axisYDirection: 'down' | 'up';\n  points: number[][];\n}\n\nfunction freeze(p: RawPathFile): PointCloud {\n  // Defensive: ensure every entry is a tuple-of-two numbers.\n  const pts: Array<readonly [number, number]> = p.points.map((pt) => {\n    if (!pt || pt.length < 2) {\n      throw new Error('PointCloud entry must be [x, y]');\n    }\n    return [pt[0]!, pt[1]!] as const;\n  });\n  return Object.freeze({\n    lengthMm: p.lengthMm,\n    samplingMm: p.samplingMm,\n    points: Object.freeze(pts),\n  });\n}\n\nconst REGISTRY: Record<string, PointCloud> = {\n  AT2050_180_COMBINED: freeze(combined as RawPathFile),\n  AT2050_0500_HALF: freeze(half0 as RawPathFile),\n  AT2050_0501_HALF: freeze(half1 as RawPathFile),\n};\n\nexport function getPointCloud(id: string): PointCloud | undefined {\n  return REGISTRY[id];\n}\n\nexport function registerPointCloud(id: string, cloud: PointCloud): void {\n  REGISTRY[id] = cloud;\n}\n\n/**\n * Remove a previously-registered cloud. Returns `true` when an entry was\n * removed, `false` when the id was not registered. Useful for test cleanup\n * and hot-reload scenarios where a calibration tool re-registers clouds.\n */\nexport function unregisterPointCloud(id: string): boolean {\n  if (!(id in REGISTRY)) return false;\n  delete REGISTRY[id];\n  return true;\n}\n\nexport const POINT_CLOUDS: Readonly<Record<string, PointCloud>> = REGISTRY;\n","/**\n * Module-local path math.\n *\n * Pure functions, no Three.js dependency. Returns position + tangent + yaw\n * in the module-local 3D frame after originCorrection (centerline on Z=0).\n *\n * Coordinate conventions:\n *   - Y-flip: 3D-Y = -2D-canvas-Y, so positive endAngle (2D-positive)\n *     curves toward −Y in 3D.\n *   - 1 unit = 1 mm.\n */\n\nimport type { ModuleCatalogEntry } from './ModuleCatalog.js';\nimport { getPointCloud } from './PointClouds.js';\nimport { XtsViewerErrorException } from '../types.js';\nimport type { Vec3 } from '../types.js';\n\nexport interface PathSample {\n  /** Position in module-local 3D frame, mm. */\n  positionMm: Vec3;\n  /** Unit tangent in module-local 3D frame. */\n  tangent: Vec3;\n  /** Yaw around +Z in degrees (0 at module start). */\n  yawDeg: number;\n}\n\nconst X_AXIS: Vec3 = [1, 0, 0];\n\n/** Sample point and tangent on a Straight module's centerline. */\nfunction sampleStraight(s: number): PathSample {\n  return {\n    positionMm: [s, 0, 0],\n    tangent: X_AXIS,\n    yawDeg: 0,\n  };\n}\n\n/**\n * Sample point and tangent on a Curve (analytic) module's centerline.\n * Y-flipped formulas:\n *   pfi = s / R\n *   pathPoint(s)   = ( R·sin(pfi), -sgn·R·(1 - cos(pfi)), 0 )\n *   pathTangent(s) = ( cos(pfi),   -sgn·sin(pfi),         0 )\n *   yaw_z(s)       = -sgn · pfi · 180/π   [degrees]\n */\nfunction sampleCurve(\n  s: number,\n  endAngleDeg: number,\n  radiusMm: number,\n): PathSample {\n  const sgn = Math.sign(endAngleDeg) || 1;\n  const pfi = s / radiusMm;\n  const cos = Math.cos(pfi);\n  const sin = Math.sin(pfi);\n  return {\n    positionMm: [radiusMm * sin, -sgn * radiusMm * (1 - cos), 0],\n    tangent: [cos, -sgn * sin, 0],\n    yawDeg: (-sgn * pfi * 180) / Math.PI,\n  };\n}\n\n/**\n * Sample point and tangent on a Free path (point-cloud-based).\n * Free-path sampling plus critical clamp fix at s == ModuleLength.\n */\nfunction sampleFree(\n  s: number,\n  freePathId: string,\n): PathSample {\n  const cloud = getPointCloud(freePathId);\n  if (!cloud) {\n    throw new XtsViewerErrorException(\n      'invalid-config',\n      `Unknown point-cloud id \"${freePathId}\". Did you forget to register it via registerPointCloud()?`,\n      { freePathId },\n    );\n  }\n  const ds = cloud.samplingMm;\n  const N = cloud.points.length;\n  const idxFloat = s / ds;\n  // CRITICAL: clamp to N-2 (not N-1) so P[i+1] always exists.\n  const i = Math.max(0, Math.min(Math.floor(idxFloat), N - 2));\n  const a = idxFloat - i;\n  const p0 = cloud.points[i]!;\n  const p1 = cloud.points[i + 1]!;\n  const x = p0[0] + (p1[0] - p0[0]) * a;\n  const y2d = p0[1] + (p1[1] - p0[1]) * a;\n  const tx2d = p1[0] - p0[0];\n  const ty2d = p1[1] - p0[1];\n  const tlen = Math.hypot(tx2d, ty2d) || 1;\n  const tx = tx2d / tlen;\n  const ty2dNorm = ty2d / tlen;\n  return {\n    positionMm: [x, -y2d, 0],\n    tangent: [tx, -ty2dNorm, 0],\n    // atan2( -ty2d, tx2d ) gives the 3D yaw after Y-flip.\n    yawDeg: (Math.atan2(-ty2dNorm, tx) * 180) / Math.PI,\n  };\n}\n\n/**\n * Sample a module's centerline at arc length s (mm).\n * `s` is clamped to `[0, moduleLengthMm]`.\n */\nexport function sampleModulePath(\n  module: ModuleCatalogEntry,\n  sMm: number,\n): PathSample {\n  const s = Math.max(0, Math.min(sMm, module.moduleLengthMm));\n  switch (module.pathType) {\n    case 'Straight':\n      return sampleStraight(s);\n    case 'Curve': {\n      if (module.centerlineRadiusMm == null) {\n        // Catalog invariant violation — a Curve entry MUST declare its\n        // radius. Throw so the bug is surfaced instead of silently\n        // returning origin (which would render the mover at the part\n        // start and hide the underlying data error).\n        throw new XtsViewerErrorException(\n          'invalid-config',\n          `Curve module \"${module.moduleType}\" is missing centerlineRadiusMm.`,\n          { moduleType: module.moduleType },\n        );\n      }\n      return sampleCurve(s, module.endAngleDeg, module.centerlineRadiusMm);\n    }\n    case 'Free': {\n      if (!module.freePathId) {\n        throw new XtsViewerErrorException(\n          'invalid-config',\n          `Free module \"${module.moduleType}\" is missing freePathId.`,\n          { moduleType: module.moduleType },\n        );\n      }\n      return sampleFree(s, module.freePathId);\n    }\n  }\n}\n\n/**\n * End-of-module local transform:\n * Δ_local = T( ΔX, -ΔY_canvas, 0 ) ⊗ R_z( -θ )\n *\n * We return the position delta and yaw delta separately so callers can compose\n * them with chain.startWorldMatrix as they prefer (matrix-based or pose-based).\n */\nexport interface EndDelta {\n  /** End-of-module position relative to startWorldMatrix, in mm. */\n  deltaPositionMm: Vec3;\n  /** End-of-module yaw delta in degrees (sign-flipped per Y-flip). */\n  deltaYawDeg: number;\n}\n\nexport function moduleEndDelta(module: ModuleCatalogEntry): EndDelta {\n  switch (module.pathType) {\n    case 'Straight':\n      return {\n        deltaPositionMm: [module.moduleLengthMm, 0, 0],\n        deltaYawDeg: 0,\n      };\n    case 'Curve': {\n      const theta = module.endAngleDeg;\n      const R = module.centerlineRadiusMm!;\n      const tRad = (Math.abs(theta) * Math.PI) / 180;\n      const sgn = Math.sign(theta) || 1;\n      // Curve end transform with analytic endpoint (overrides metadata).\n      return {\n        deltaPositionMm: [R * Math.sin(tRad), -sgn * R * (1 - Math.cos(tRad)), 0],\n        deltaYawDeg: -theta,\n      };\n    }\n    case 'Free': {\n      // Free end transform: ΔX, ΔY = last point of point cloud.\n      if (!module.freePathId) {\n        throw new XtsViewerErrorException(\n          'invalid-config',\n          `Free module \"${module.moduleType}\" is missing freePathId.`,\n          { moduleType: module.moduleType },\n        );\n      }\n      const cloud = getPointCloud(module.freePathId);\n      if (!cloud) {\n        throw new XtsViewerErrorException(\n          'invalid-config',\n          `Unknown point-cloud id \"${module.freePathId}\" for module \"${module.moduleType}\".`,\n          { moduleType: module.moduleType, freePathId: module.freePathId },\n        );\n      }\n      const last = cloud.points[cloud.points.length - 1]!;\n      return {\n        deltaPositionMm: [last[0], -last[1], 0],\n        deltaYawDeg: -module.endAngleDeg,\n      };\n    }\n  }\n}\n","/**\n * ChainBuilder — builds the per-module `startWorldMatrix` for a Part.\n *\n * Chain composition (simplified — modules butt up edge-to-edge in this build):\n *   chain_world = Identity\n *   for each module_i:\n *     module_i.startWorldMatrix       = chain_world\n *     module_i.startPositionInPartMm  = cumulative\n *     module_i.trackLengthMm          = module_i.moduleLengthMm\n *     cumulative                     += trackLengthMm\n *     end_local = T( ΔX, -ΔY_canvas, 0 ) ⊗ R_z( -θ )\n *     chain_world = chain_world ⊗ end_local\n *\n * `chain_world` is a planar pose: 2D translation (X,Y) + Z-yaw. We carry it as\n * a tiny struct rather than a full 4×4 to keep the pure-math layer free of\n * Three.js. A Three.js helper in PathBuilder.ts converts to Matrix4 on demand.\n */\n\nimport { moduleEndDelta, sampleModulePath } from './pathMath.js';\nimport { getModuleEntry, type ModuleCatalogEntry } from './ModuleCatalog.js';\nimport type { ModuleEntry, ModuleType3D, Vec3 } from '../types.js';\nimport { XtsViewerErrorException } from '../types.js';\n\n/** Planar pose (X,Y,yaw) in a 3D-RH-Z-up frame. Z is always 0 here. */\nexport interface PlanarPose {\n  positionMm: Vec3;\n  yawDeg: number;\n}\n\nexport const IDENTITY_POSE: PlanarPose = Object.freeze({\n  positionMm: [0, 0, 0] as Vec3,\n  yawDeg: 0,\n});\n\nexport interface BuiltModule {\n  moduleType: ModuleType3D;\n  catalog: ModuleCatalogEntry;\n  /** Pose of the module-local origin (= path entry). */\n  startWorldPose: PlanarPose;\n  /** Distance along the part where this module starts (mm). */\n  startPositionInPartMm: number;\n  /** moduleLength (mm). Used for findModuleContaining. */\n  trackLengthMm: number;\n  /** Forwarded from `ModuleEntry.globalNumber` — index into the runtime\n   *  `ModuleStatusStore` so renderers can subscribe per module. */\n  globalNumber?: number;\n  /** Forwarded from `ModuleEntry.status` so the renderer can light up\n   *  the per-module drive-status overlay without an extra lookup. */\n  status?: { warning?: boolean; error?: boolean };\n}\n\nexport interface BuiltChain {\n  modules: BuiltModule[];\n  /** Σ moduleLength_i. */\n  trackLengthMm: number;\n  /** End-of-chain pose; useful for closure-checks. */\n  endPose: PlanarPose;\n}\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\nfunction rotateXY(x: number, y: number, yawDeg: number): [number, number] {\n  const c = Math.cos(yawDeg * DEG2RAD);\n  const s = Math.sin(yawDeg * DEG2RAD);\n  return [c * x - s * y, s * x + c * y];\n}\n\n/** Compose two planar poses: out = a ⊗ b (b in a's frame). */\nfunction composePose(a: PlanarPose, b: PlanarPose): PlanarPose {\n  const [bx, by] = rotateXY(b.positionMm[0], b.positionMm[1], a.yawDeg);\n  return {\n    positionMm: [\n      a.positionMm[0] + bx,\n      a.positionMm[1] + by,\n      a.positionMm[2] + b.positionMm[2],\n    ],\n    yawDeg: a.yawDeg + b.yawDeg,\n  };\n}\n\n/**\n * Build a chain from a part's module list.\n *\n * Throws XtsViewerErrorException with code `unknown-module-type` on lookup\n * miss.\n */\nexport function buildChain(modules: ReadonlyArray<ModuleEntry>): BuiltChain {\n  let cumulative = 0;\n  let chain: PlanarPose = IDENTITY_POSE;\n  const out: BuiltModule[] = [];\n\n  for (let i = 0; i < modules.length; i++) {\n    const m = modules[i]!;\n    const catalog = getModuleEntry(m.moduleType);\n    if (!catalog) {\n      throw new XtsViewerErrorException(\n        'unknown-module-type',\n        `Unknown moduleType \"${m.moduleType}\" at index ${i}`,\n        { index: i, moduleType: m.moduleType },\n      );\n    }\n\n    const trackLengthMm = catalog.moduleLengthMm;\n    const startWorldPose = chain;\n\n    out.push({\n      moduleType: m.moduleType,\n      catalog,\n      status: m.status,\n      globalNumber: m.globalNumber,\n      startWorldPose,\n      startPositionInPartMm: cumulative,\n      trackLengthMm,\n    });\n\n    cumulative += trackLengthMm;\n\n    // End-of-module local transform: T(ΔX, -ΔY_canvas, 0) ⊗ R_z(-θ).\n    const end = moduleEndDelta(catalog);\n    const endLocal: PlanarPose = {\n      positionMm: end.deltaPositionMm,\n      yawDeg: end.deltaYawDeg,\n    };\n    chain = composePose(chain, endLocal);\n  }\n\n  return {\n    modules: out,\n    trackLengthMm: cumulative,\n    endPose: chain,\n  };\n}\n\n/**\n * Locate the module containing `partPositionMm` along the chain.\n * First module with partPosition < startInPart + trackLength; at boundary\n * `partPosition == trackLength` the LAST module is returned with\n * `localPos = trackLength`.\n */\nexport function findModuleAt(\n  chain: BuiltChain,\n  partPositionMm: number,\n): { module: BuiltModule; localPosMm: number } | null {\n  if (chain.modules.length === 0) return null;\n  const pos = Math.max(0, Math.min(partPositionMm, chain.trackLengthMm));\n  if (pos >= chain.trackLengthMm) {\n    const last = chain.modules[chain.modules.length - 1]!;\n    return { module: last, localPosMm: last.trackLengthMm };\n  }\n  for (const m of chain.modules) {\n    if (pos < m.startPositionInPartMm + m.trackLengthMm) {\n      return { module: m, localPosMm: pos - m.startPositionInPartMm };\n    }\n  }\n  // Invariant: the loop above must hit, because we already clamped `pos`\n  // to [0, trackLengthMm) by the `pos >= chain.trackLengthMm` check.\n  // Reaching here means the chain's per-module startPositionInPartMm /\n  // trackLengthMm fields are inconsistent — surface it.\n  throw new XtsViewerErrorException(\n    'invalid-config',\n    `findModuleAt: pos=${pos} did not land in any module; chain.modules is inconsistent.`,\n    { pos, trackLengthMm: chain.trackLengthMm, moduleCount: chain.modules.length },\n  );\n}\n\n/**\n * Mover world pose at `partPositionMm`.\n *\n * The module's startWorldPose is composed with the local path sample at\n * `localPosMm` along that module's path.\n */\nexport function moverWorldAt(\n  chain: BuiltChain,\n  partPositionMm: number,\n): PlanarPose | null {\n  const found = findModuleAt(chain, partPositionMm);\n  if (!found) return null;\n  const { module, localPosMm } = found;\n  const sample = sampleModulePath(module.catalog, localPosMm);\n  const local: PlanarPose = {\n    positionMm: sample.positionMm,\n    yawDeg: sample.yawDeg,\n  };\n  return composePose(module.startWorldPose, local);\n}\n\n/** Convenience: chain from full ModuleEntry[] returning trackLength alone. */\nexport function trackLengthOf(modules: ReadonlyArray<ModuleEntry>): number {\n  return buildChain(modules).trackLengthMm;\n}\n\nexport const _internals = { composePose, rotateXY, DEG2RAD, RAD2DEG };\n","/**\n * positionFrame — translate user-frame partPosition values into the\n * chain's intrinsic frame.\n *\n * Every `partPositionMm`-style value the host writes (mover position,\n * station start/end/stops, area start/end) is interpreted in the user's\n * frame and run through `userToChainPositionMm` before being fed to\n * `moverWorldAt` / `sampleChainPoint` / `sampleChainRange`. The opposite\n * direction (`chainToUserPositionMm`) lets the imperative\n * `getMoverPosition` API and the screenshot metadata report values back\n * in the host's frame.\n *\n * The transform is its own inverse when applied with the same frame, so\n * round-tripping through `chainToUser(userToChain(x))` always returns x.\n */\n\nimport type { PositionFrame, StationConfig } from '../types.js';\n\n/** `chainPos = originMm + (direction === 'negative' ? -userPos : userPos)` */\nexport function userToChainPositionMm(\n  userPos: number,\n  frame?: PositionFrame,\n): number {\n  if (!frame) return userPos;\n  const sign = frame.direction === 'negative' ? -1 : 1;\n  return (frame.originMm ?? 0) + sign * userPos;\n}\n\n/** Inverse of `userToChainPositionMm`. */\nexport function chainToUserPositionMm(\n  chainPos: number,\n  frame?: PositionFrame,\n): number {\n  if (!frame) return chainPos;\n  const sign = frame.direction === 'negative' ? -1 : 1;\n  return sign * (chainPos - (frame.originMm ?? 0));\n}\n\n/**\n * Resolve a `StationConfig.stopPositions[i]` to an absolute (chain-frame)\n * partPosition value.\n *\n * Order of operations:\n *   1. If `stopPositionsRelativeTo === 'station'`, the value is treated\n *      as an offset from the station's `startPositionOnPart` first.\n *   2. The resulting value is then passed through `userToChainPositionMm`\n *      using the part's XPU `positionFrame` (if any).\n *\n * The user can therefore say \"second stop is 100 mm into station 'Pickup',\n * regardless of where Pickup starts\" while still benefiting from the\n * track's overall direction / origin convention.\n */\nexport function resolveStopPositionMm(\n  stopValue: number,\n  station: StationConfig,\n  frame?: PositionFrame,\n): number {\n  const userMm =\n    station.stopPositionsRelativeTo === 'station'\n      ? station.startPositionOnPart + stopValue\n      : stopValue;\n  return userToChainPositionMm(userMm, frame);\n}\n\n/**\n * Chain-frame `s`-values that mark the user-frame START and END of a part\n * with the given `trackLengthMm`.\n *\n * For `direction: 'positive'` (default) this is the obvious\n * `[0, trackLengthMm]`. For `direction: 'negative'` the user's \"forward\"\n * runs from chain-frame `trackLengthMm` down to `0`, so the user-frame\n * start lands on `trackLengthMm` and the user-frame end on `0`.\n *\n * Used by multi-part Station / Area renderers so intermediate parts cover\n * their entire chain and the first/last segments terminate on the correct\n * end of the chain regardless of direction. Returning both endpoints in\n * one shot keeps the call sites tiny + obviously symmetric.\n */\nexport function chainEndpointsForPart(\n  trackLengthMm: number,\n  frame?: PositionFrame,\n): { userStartChainMm: number; userEndChainMm: number } {\n  const negative = frame?.direction === 'negative';\n  return {\n    userStartChainMm: negative ? trackLengthMm : 0,\n    userEndChainMm: negative ? 0 : trackLengthMm,\n  };\n}\n","/**\n * Shared closed-loop detection for built chains.\n *\n * A closed loop (oval track, U-turn pair) returns to the origin pose after\n * one full revolution: end-pose translation ≈ 0 and accumulated yaw ≈ a\n * multiple of 360°. Both the mover collision (wrap-around seam on the same\n * chain) and the module collision (excluding the first/last module seam)\n * need the identical predicate — keeping it in one place avoids the two\n * tolerances silently drifting apart.\n */\n\nimport type { BuiltChain } from './ChainBuilder.js';\n\nexport const CLOSED_LOOP_TOLERANCE_MM = 0.1;\nexport const CLOSED_LOOP_TOLERANCE_DEG = 0.1;\n\n/**\n * True when `chain` forms a closed loop — its end pose coincides with the\n * identity start pose within sub-mm / sub-tenth-degree tolerance.\n */\nexport function isChainClosed(chain: BuiltChain): boolean {\n  const [ex, ey] = chain.endPose.positionMm;\n  if (\n    Math.abs(ex) > CLOSED_LOOP_TOLERANCE_MM ||\n    Math.abs(ey) > CLOSED_LOOP_TOLERANCE_MM\n  ) {\n    return false;\n  }\n  const yawMod360 = ((chain.endPose.yawDeg % 360) + 360) % 360;\n  const yawDelta = Math.min(yawMod360, 360 - yawMod360);\n  return yawDelta < CLOSED_LOOP_TOLERANCE_DEG;\n}\n","/**\n * Mover collision detection.\n *\n * Sub-millimetre accurate for the dominant XTS case: two movers travelling\n * along the same chain. Each mover occupies a 1D footprint of\n * `pathLengthMm` centred on `partPositionMm`, so the collision predicate\n * collapses to one subtraction in path-space:\n *\n *     centerDistance = arc-length |pos_a − pos_b|\n *     requiredGap    = (pathLength_a + pathLength_b) / 2\n *     penetration    = requiredGap − centerDistance\n *     collision iff  penetration > 0  (≥ 0 for \"touching\")\n *\n * For closed-loop chains (oval tracks, U-turn pairs) the arc-length is\n * taken as the *minimum* of the forward and the wrap-around path so two\n * movers near the seam (e.g. 50 mm and trackLength − 50 mm) are treated\n * as physically adjacent. Open chains are detected by comparing the\n * chain's start- and end-pose; for those the wrap-around distance is\n * simply not considered.\n *\n * Floating-point precision: positions are kept in mm in float64. A typical\n * XTS layout has trackLength ≤ 20 m → < 2×10⁴ mm, well inside the\n * 2⁵³-mantissa range, so subtractive cancellation costs at most ~10⁻¹²\n * mm — orders of magnitude below sub-millimetre.\n *\n * Multi-XPU (different chains): not handled here. Cross-track collisions\n * are dominated by track-transform layout and would need an OBB / mesh\n * test in 3D space; that's a different concern from \"two movers on the\n * same line about to crash\".\n */\n\nimport type { BuiltChain } from './ChainBuilder.js';\nimport type { MoverRef, MoverType3D } from '../types.js';\nimport { getMoverEntry } from './MoverCatalog.js';\nimport { isChainClosed } from './chainClosure.js';\n\n/**\n * One detected pair. Result list is symmetric (a/b is reported once per\n * pair, with `a` carrying the lower index pair-canonical).\n */\nexport interface MoverCollision {\n  a: MoverRef;\n  b: MoverRef;\n  /**\n   * Stable IDs of the two movers (mirrors `MoverConfig.id`). Useful when\n   * the consumer keys by id rather than by `moverIndex`.\n   */\n  idA: number;\n  idB: number;\n  /**\n   * Penetration along the 1D path:\n   *   • `> 0` — movers overlap by this many mm.\n   *   • `= 0` — touching exactly.\n   *   • `< 0` — closest-approach gap (only present in result when\n   *             `warningGapMm` is set; the magnitude is the free-space\n   *             distance between the closer footprint edges).\n   */\n  penetrationMm: number;\n  /**\n   * Both `partPositionMm` values at the time of the test. Lets the\n   * consumer recompute or visualise without re-querying.\n   */\n  positionAMm: number;\n  positionBMm: number;\n  /** Mover lengths (catalog `pathLengthMm`). */\n  pathLengthAMm: number;\n  pathLengthBMm: number;\n  /** True when measurement wrapped around the chain end (closed-loop seam). */\n  viaWraparound: boolean;\n}\n\nexport interface CheckMoverCollisionsOptions {\n  /**\n   * When `> 0`, near-misses with closest-approach gap up to this many mm\n   * are also returned (with `penetrationMm < 0`). Default 0 — only actual\n   * collisions / contacts.\n   */\n  warningGapMm?: number;\n  /**\n   * Force-treat the chain as closed (consider wrap-around distance) or\n   * open (don't). When omitted, auto-detected by comparing\n   * `chain.endPose` to `startPose ≈ identity` within ~0.1 mm tolerance.\n   */\n  forceClosedLoop?: boolean;\n}\n\n/**\n * Effective mover state passed into the predicate. Decoupled from\n * MoverConfig so consumers can plug in live positions from the\n * MoverPositionStore (60-Hz tick) without round-tripping through React\n * state.\n */\nexport interface MoverProbe {\n  ref: MoverRef;\n  id: number;\n  partOid: number;\n  moverType: MoverType3D;\n  partPositionMm: number;\n  /**\n   * Override the catalog `pathLengthMm`. Use for `Custom` movers where\n   * the layout's `pathLengthMm` is the source of truth.\n   */\n  pathLengthMm?: number;\n}\n\nconst DEFAULT_WARNING_GAP_MM = 0;\n\n/**\n * Pair-wise 1D collision test for movers on the same chain.\n *\n * `chain` is the BuiltChain corresponding to the partOid all probed\n * movers travel on. `probes` may contain movers from *any* part — this\n * function only considers pairs where `partOid` matches the chain.\n *\n * Returns one entry per colliding (or near-miss, when `warningGapMm > 0`)\n * pair, sorted by `penetrationMm` descending so the deepest collisions\n * appear first.\n */\nexport function checkSamePathCollisions(\n  chain: BuiltChain,\n  partOid: number,\n  probes: ReadonlyArray<MoverProbe>,\n  opts: CheckMoverCollisionsOptions = {},\n): MoverCollision[] {\n  const warningGapMm = opts.warningGapMm ?? DEFAULT_WARNING_GAP_MM;\n  const closed = opts.forceClosedLoop ?? isChainClosed(chain);\n  const trackLengthMm = chain.trackLengthMm;\n\n  const onChain = probes.filter((p) => p.partOid === partOid);\n  const out: MoverCollision[] = [];\n\n  for (let i = 0; i < onChain.length; i++) {\n    const a = onChain[i]!;\n    const lenA =\n      a.pathLengthMm ?? getMoverEntry(a.moverType)?.pathLengthMm ?? 0;\n    if (lenA <= 0) continue;\n    for (let j = i + 1; j < onChain.length; j++) {\n      const b = onChain[j]!;\n      const lenB =\n        b.pathLengthMm ?? getMoverEntry(b.moverType)?.pathLengthMm ?? 0;\n      if (lenB <= 0) continue;\n\n      const linear = Math.abs(a.partPositionMm - b.partPositionMm);\n      let centerDist = linear;\n      let viaWraparound = false;\n      if (closed) {\n        const wrap = trackLengthMm - linear;\n        if (wrap < linear) {\n          centerDist = wrap;\n          viaWraparound = true;\n        }\n      }\n      const requiredGap = (lenA + lenB) / 2;\n      const penetrationMm = requiredGap - centerDist;\n      // `>= -warningGapMm` so an exact contact (penetrationMm === 0) is\n      // always reported, regardless of warningGapMm.\n      if (penetrationMm >= -warningGapMm) {\n        out.push({\n          a: a.ref,\n          b: b.ref,\n          idA: a.id,\n          idB: b.id,\n          penetrationMm,\n          positionAMm: a.partPositionMm,\n          positionBMm: b.partPositionMm,\n          pathLengthAMm: lenA,\n          pathLengthBMm: lenB,\n          viaWraparound,\n        });\n      }\n    }\n  }\n\n  out.sort((a, b) => b.penetrationMm - a.penetrationMm);\n  return out;\n}\n","/**\n * XtsArcCurve3 — Three.js Curve3 wrapper around the analytic Curve sample.\n *\n * Each module exposes a THREE.Curve<Vector3> that the part-level CurvePath\n * chains together. For analytic Curves we just wrap the math from\n * pathMath.ts; for Free paths see XtsPointCloudCurve3.\n *\n * Note: CurvePath delegates to subcurve length-proportional, so `getLength()`\n * MUST return the actual arc length so subcurves are weighted correctly.\n * Our subcurves are arc-length parametrised (t = s / L), so this just-works.\n */\n\nimport { Curve, Vector3 } from 'three';\nimport type { ModuleCatalogEntry } from './ModuleCatalog.js';\nimport { sampleModulePath } from './pathMath.js';\n\nexport class XtsArcCurve3 extends Curve<Vector3> {\n  public readonly module: ModuleCatalogEntry;\n\n  constructor(module: ModuleCatalogEntry) {\n    super();\n    if (module.pathType !== 'Curve') {\n      throw new Error(\n        `XtsArcCurve3 requires pathType='Curve', got \"${module.pathType}\"`,\n      );\n    }\n    this.module = module;\n  }\n\n  override getPoint(t: number, optionalTarget = new Vector3()): Vector3 {\n    const s = t * this.module.moduleLengthMm;\n    const sample = sampleModulePath(this.module, s);\n    return optionalTarget.set(\n      sample.positionMm[0],\n      sample.positionMm[1],\n      sample.positionMm[2],\n    );\n  }\n\n  override getTangent(t: number, optionalTarget = new Vector3()): Vector3 {\n    const s = t * this.module.moduleLengthMm;\n    const sample = sampleModulePath(this.module, s);\n    return optionalTarget\n      .set(sample.tangent[0], sample.tangent[1], sample.tangent[2])\n      .normalize();\n  }\n\n  override getLength(): number {\n    return this.module.moduleLengthMm;\n  }\n}\n","/**\n * XtsPointCloudCurve3 — Three.js Curve3 wrapper around the Free-path sample.\n *\n * The off-by-one clamp at s == ModuleLength is handled in\n * pathMath.sampleModulePath.\n */\n\nimport { Curve, Vector3 } from 'three';\nimport type { ModuleCatalogEntry } from './ModuleCatalog.js';\nimport { sampleModulePath } from './pathMath.js';\n\nexport class XtsPointCloudCurve3 extends Curve<Vector3> {\n  public readonly module: ModuleCatalogEntry;\n\n  constructor(module: ModuleCatalogEntry) {\n    super();\n    if (module.pathType !== 'Free') {\n      throw new Error(\n        `XtsPointCloudCurve3 requires pathType='Free', got \"${module.pathType}\"`,\n      );\n    }\n    this.module = module;\n  }\n\n  override getPoint(t: number, optionalTarget = new Vector3()): Vector3 {\n    const s = t * this.module.moduleLengthMm;\n    const sample = sampleModulePath(this.module, s);\n    return optionalTarget.set(\n      sample.positionMm[0],\n      sample.positionMm[1],\n      sample.positionMm[2],\n    );\n  }\n\n  override getTangent(t: number, optionalTarget = new Vector3()): Vector3 {\n    const s = t * this.module.moduleLengthMm;\n    const sample = sampleModulePath(this.module, s);\n    return optionalTarget\n      .set(sample.tangent[0], sample.tangent[1], sample.tangent[2])\n      .normalize();\n  }\n\n  override getLength(): number {\n    return this.module.moduleLengthMm;\n  }\n}\n","/**\n * PathBuilder — assemble a `THREE.CurvePath<Vector3>` for a Part.\n *\n * One CurvePath per part, chaining all module curves end-to-end.\n * Per module:\n *   - Straight → THREE.LineCurve3 (module geometry baked in)\n *   - Curve    → XtsArcCurve3 (analytic)\n *   - Free     → XtsPointCloudCurve3\n *\n * Each subcurve here is expressed in **module-local coordinates** (origin at\n * module entry). The world transform of the module = chain.startWorldPose\n * (planar) is applied at render time by the `<XtsModule>` group node.\n *\n * Helper `chainPoseToMatrix4` converts a planar pose to a Three.js Matrix4\n * (Z-up world).\n */\n\nimport {\n  CurvePath,\n  LineCurve3,\n  Matrix4,\n  Quaternion,\n  Vector3,\n} from 'three';\nimport { XtsArcCurve3 } from './XtsArcCurve3.js';\nimport { XtsPointCloudCurve3 } from './XtsPointCloudCurve3.js';\nimport {\n  buildChain,\n  type BuiltChain,\n  type BuiltModule,\n  type PlanarPose,\n} from './ChainBuilder.js';\nimport type { ModuleEntry } from '../types.js';\n\nexport interface PartPath {\n  chain: BuiltChain;\n  /** A CurvePath chaining all modules (in module-local frames per subcurve). */\n  curvePath: CurvePath<Vector3>;\n}\n\n/**\n * Build a Part path. Returns the BuiltChain plus a CurvePath for visual\n * debug splines (continuity overlay). The CurvePath subcurves live in\n * MODULE-LOCAL coordinates; the consumer is responsible for placing each\n * module under a parent group with `startWorldPose` applied.\n */\nexport function buildPartPath(\n  modules: ReadonlyArray<ModuleEntry>,\n): PartPath {\n  const chain = buildChain(modules);\n  const path = new CurvePath<Vector3>();\n  for (const built of chain.modules) {\n    pushModuleCurves(path, built);\n  }\n  // Auto-update segment lengths so getPointAt is correctly arc-length-weighted.\n  path.updateArcLengths();\n  return { chain, curvePath: path };\n}\n\nfunction pushModuleCurves(\n  path: CurvePath<Vector3>,\n  built: BuiltModule,\n): void {\n  switch (built.catalog.pathType) {\n    case 'Straight': {\n      path.add(\n        new LineCurve3(\n          new Vector3(0, 0, 0),\n          new Vector3(built.catalog.moduleLengthMm, 0, 0),\n        ),\n      );\n      break;\n    }\n    case 'Curve': {\n      path.add(new XtsArcCurve3(built.catalog));\n      break;\n    }\n    case 'Free': {\n      path.add(new XtsPointCloudCurve3(built.catalog));\n      break;\n    }\n  }\n}\n\n/**\n * Convert a planar pose (X,Y,yaw around +Z) to a Three.js Matrix4\n * (Z-up world).\n */\nexport function poseToMatrix4(\n  pose: PlanarPose,\n  out = new Matrix4(),\n): Matrix4 {\n  const q = new Quaternion().setFromAxisAngle(\n    new Vector3(0, 0, 1),\n    (pose.yawDeg * Math.PI) / 180,\n  );\n  out.compose(\n    new Vector3(pose.positionMm[0], pose.positionMm[1], pose.positionMm[2]),\n    q,\n    new Vector3(1, 1, 1),\n  );\n  return out;\n}\n","/**\n * Module collision / overlap detection.\n *\n * The mover collision (moverCollision.ts) is a 1D arc-length test for two\n * movers on the *same* chain; its header explicitly declines cross-XPU /\n * cross-track cases, which \"would need an OBB / mesh test in 3D space\".\n * This file is exactly that test, for the physical track *modules*.\n *\n * Each module is modelled as a chain of oriented bounding boxes (OBBs) that\n * follow its real centerline: the path is sampled (sampleModulePath) and each\n * segment becomes a small box (±halfWidth in Y, 0..height in Z) oriented along\n * the local tangent, then transformed into world space by\n *\n *     world = orientation ⊗ trackTransform ⊗ partTransformation ⊗ chainPose\n *\n * Sampling the path (rather than a single straight box per module) is what\n * keeps curves and U-turns faithful — a single straight box would poke\n * outside the arc and produce both false positives and false negatives on a\n * closed oval. Straights collapse to one box; curves / free paths use several.\n *\n * Pairs are tested with the Separating Axis Theorem (15 axes) over their\n * segment boxes, yielding a penetration depth (minimum translation distance)\n * as `overlapMm`:\n *\n *     overlapMm  > 0  — boxes overlap by this many mm (deepest sub-box pair).\n *     overlapMm  = 0  — touching exactly.\n *     overlapMm  < 0  — closest-approach gap (only reported when\n *                       `warningGapMm` is set).\n *\n * Adjacent modules in the same part butt up edge-to-edge (ChainBuilder), so\n * consecutive `(i, i+1)` pairs — and the `(N-1, 0)` seam of a closed loop —\n * are excluded; everything else (cross-part, cross-XPU, same-part\n * non-adjacent) is tested.\n *\n * The box cross-section (`halfWidthMm` 50, `heightMm` 100) is a coarse but\n * deterministic, asset-independent envelope. Real per-module CAD bounds live\n * in the GLB sidecars (`approximateBoundsMm`) and could refine it later.\n * Likewise the `warningGapMm` near-miss is an axis-projected SAT separation,\n * not a true Euclidean (GJK) distance — slightly conservative for\n * corner-to-corner cases.\n */\n\nimport { Matrix4, Vector3 } from 'three';\nimport type { BuiltModule } from './ChainBuilder.js';\nimport { poseToMatrix4 } from './PathBuilder.js';\nimport { sampleModulePath } from './pathMath.js';\nimport { composePartWorldMatrix } from './trackTransform.js';\nimport { isChainClosed } from './chainClosure.js';\nimport type { BuiltChain } from './ChainBuilder.js';\nimport type {\n  ModuleRef,\n  ModuleType3D,\n  Orientation,\n  PartTransformation,\n  TrackTransform,\n  Vec3,\n} from '../types.js';\n\n/** Default box half-width (Y) — matches `approximateModuleBounds`. */\nexport const DEFAULT_MODULE_HALF_WIDTH_MM = 50;\n/** Default box height (Z) — matches `approximateModuleBounds`. */\nexport const DEFAULT_MODULE_HEIGHT_MM = 100;\n\nconst DEFAULT_WARNING_GAP_MM = 0;\nconst EPS = 1e-9;\n/** Target arc length per sampled segment box on a curved/free module (mm). */\nconst SEGMENT_LENGTH_MM = 50;\nconst DEG2RAD = Math.PI / 180;\n\n/**\n * One detected pair. Symmetric: `a`/`b` are canonicalised so the lower\n * `(processingUnitObjectId, partObjectId, moduleIndex)` tuple is always `a`.\n */\nexport interface ModuleCollision {\n  a: ModuleRef;\n  b: ModuleRef;\n  moduleTypeA: ModuleType3D;\n  moduleTypeB: ModuleType3D;\n  /** Forwarded `ModuleEntry.globalNumber` (status-store key), if present. */\n  globalNumberA?: number;\n  globalNumberB?: number;\n  /**\n   * Penetration depth along the minimum-translation axis of the deepest\n   * sub-box pair:\n   *   • `> 0` — overlap (mm).\n   *   • `= 0` — touching.\n   *   • `< 0` — closest-approach gap (only when `warningGapMm` is set).\n   */\n  overlapMm: number;\n  /** Centre-to-centre distance of the deepest sub-box pair (mm). */\n  centerDistanceMm: number;\n  /** Unit world-space axis of least penetration (the MTV direction). */\n  axis: Vec3;\n}\n\nexport interface CheckModuleCollisionsOptions {\n  /**\n   * When `> 0`, near-misses with an axis-projected gap up to this many mm\n   * are also returned (with `overlapMm < 0`). Default 0 — only actual\n   * overlaps / contacts.\n   */\n  warningGapMm?: number;\n  /**\n   * Also test non-adjacent module pairs within the SAME part. Default true.\n   * Consecutive `(i, i+1)` pairs and the closed-loop `(N-1, 0)` seam are\n   * ALWAYS excluded regardless of this flag.\n   */\n  includeSamePart?: boolean;\n  /** Box half-width in Y (mm). Default 50. */\n  halfWidthMm?: number;\n  /** Box height in Z (mm). Default 100. */\n  heightMm?: number;\n}\n\n/** Oriented bounding box in world space (unit axes + scaled half-extents). */\ninterface Obb {\n  center: Vector3;\n  axes: [Vector3, Vector3, Vector3];\n  halfExtents: [number, number, number];\n  /** Bounding-sphere radius (broad-phase reject). */\n  radius: number;\n}\n\n/** Pre-built per-module probe consumed by `checkModuleCollisions`. */\nexport interface ModuleProbe {\n  ref: ModuleRef;\n  moduleType: ModuleType3D;\n  globalNumber?: number;\n  /** Adjacency grouping key (part.globalNumber — system-wide unique). */\n  partKey: number;\n  /** Index of this module within its part's chain. */\n  moduleIndex: number;\n  /** Segment boxes following the module centerline (≥ 1). */\n  obbs: Obb[];\n  /** Module-level bounding sphere enclosing all segment boxes. */\n  sphereCenter: Vector3;\n  sphereRadius: number;\n}\n\n/** A part fed to `buildModuleProbes`. */\nexport interface ModuleCollisionPartInput {\n  /** ModuleRef.partObjectId (`PartConfig.objectId`). */\n  partObjectId: number;\n  /** Adjacency key (`PartConfig.globalNumber`). */\n  partKey: number;\n  partTransformation?: PartTransformation | null;\n  chain: BuiltChain;\n}\n\n/** An XPU fed to `buildModuleProbes`. */\nexport interface ModuleCollisionXpuInput {\n  xpuObjectId: number;\n  /** Effective (override-resolved) per-XPU track transform. */\n  trackTransform?: TrackTransform | null;\n  parts: ReadonlyArray<ModuleCollisionPartInput>;\n}\n\n/**\n * Build a world OBB for a box centred at the given world matrix's origin,\n * with the supplied local half-extents. Returns `null` if any world axis is\n * degenerate (zero scale).\n */\nfunction obbFromCenteredMatrix(\n  world: Matrix4,\n  hx: number,\n  hy: number,\n  hz: number,\n): Obb | null {\n  const e = world.elements; // column-major\n  const col0 = new Vector3(e[0], e[1], e[2]);\n  const col1 = new Vector3(e[4], e[5], e[6]);\n  const col2 = new Vector3(e[8], e[9], e[10]);\n  const sx = col0.length();\n  const sy = col1.length();\n  const sz = col2.length();\n  if (sx < EPS || sy < EPS || sz < EPS) return null;\n\n  const axisX = col0.multiplyScalar(1 / sx);\n  const axisY = col1.multiplyScalar(1 / sy);\n  const axisZ = col2.multiplyScalar(1 / sz);\n  const center = new Vector3(e[12], e[13], e[14]);\n  const halfExtents: [number, number, number] = [hx * sx, hy * sy, hz * sz];\n  const radius = Math.hypot(halfExtents[0], halfExtents[1], halfExtents[2]);\n  return { center, axes: [axisX, axisY, axisZ], halfExtents, radius };\n}\n\n/**\n * Sample a built module's centerline into world-space segment OBBs. A\n * Straight uses one box; a Curve / Free path uses several so the boxes hug\n * the real arc instead of poking outside it. Returns `[]` for a degenerate\n * (zero-length) module — mirroring the mover predicate's `length <= 0` guard.\n */\nfunction buildModuleObbs(\n  builtModule: BuiltModule,\n  worldBase: Matrix4,\n  halfWidthMm: number,\n  heightMm: number,\n): Obb[] {\n  const cat = builtModule.catalog;\n  const length = cat.moduleLengthMm;\n  if (length <= EPS) return [];\n\n  const startMat = worldBase\n    .clone()\n    .multiply(poseToMatrix4(builtModule.startWorldPose));\n\n  const segs =\n    cat.pathType === 'Straight'\n      ? 1\n      : Math.max(1, Math.ceil(length / SEGMENT_LENGTH_MM));\n\n  const halfHeight = heightMm / 2;\n  const out: Obb[] = [];\n  for (let k = 0; k < segs; k++) {\n    const s0 = (length * k) / segs;\n    const s1 = (length * (k + 1)) / segs;\n    const a = sampleModulePath(cat, s0).positionMm;\n    const b = sampleModulePath(cat, s1).positionMm;\n    const dx = b[0] - a[0];\n    const dy = b[1] - a[1];\n    const chord = Math.hypot(dx, dy);\n    if (chord < EPS) continue;\n    const yawDeg = Math.atan2(dy, dx) / DEG2RAD;\n    // Segment-local pose: centred between the two samples, lifted to the box\n    // mid-height, oriented along the chord (about +Z).\n    const segLocal = poseToMatrix4({\n      positionMm: [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, halfHeight],\n      yawDeg,\n    });\n    const world = startMat.clone().multiply(segLocal);\n    // Box spans exactly the chord between the two samples; consecutive\n    // segments share a sample point, so they meet without a seam gap and a\n    // straight module collapses to its exact [0, length] box.\n    const halfLen = chord / 2;\n    const obb = obbFromCenteredMatrix(world, halfLen, halfWidthMm, halfHeight);\n    if (obb) out.push(obb);\n  }\n  return out;\n}\n\n/**\n * Turn a list of XPUs (with effective track transforms) + parts (with built\n * chains) into flat module probes plus a per-part adjacency map. Shared by\n * the imperative ref and the reactive monitor so the world-matrix\n * composition lives in one place.\n *\n * Hidden XPUs / parts (`visible === false`) are skipped to match the scene.\n */\nexport function buildModuleProbes(\n  orientation: Orientation | undefined,\n  xpus: ReadonlyArray<ModuleCollisionXpuInput>,\n  opts: CheckModuleCollisionsOptions = {},\n): {\n  probes: ModuleProbe[];\n  adjacency: Map<number, { count: number; closed: boolean }>;\n} {\n  const halfWidthMm = opts.halfWidthMm ?? DEFAULT_MODULE_HALF_WIDTH_MM;\n  const heightMm = opts.heightMm ?? DEFAULT_MODULE_HEIGHT_MM;\n\n  const probes: ModuleProbe[] = [];\n  const adjacency = new Map<number, { count: number; closed: boolean }>();\n\n  for (const xpu of xpus) {\n    if (xpu.trackTransform?.visible === false) continue;\n    for (const part of xpu.parts) {\n      if (part.partTransformation?.visible === false) continue;\n      const worldBase = composePartWorldMatrix(\n        orientation,\n        xpu.trackTransform,\n        part.partTransformation,\n      );\n      adjacency.set(part.partKey, {\n        count: part.chain.modules.length,\n        closed: isChainClosed(part.chain),\n      });\n      for (let i = 0; i < part.chain.modules.length; i++) {\n        const m = part.chain.modules[i]!;\n        const obbs = buildModuleObbs(m, worldBase, halfWidthMm, heightMm);\n        if (obbs.length === 0) continue;\n        const { center, radius } = boundingSphere(obbs);\n        const probe: ModuleProbe = {\n          ref: {\n            processingUnitObjectId: xpu.xpuObjectId,\n            partObjectId: part.partObjectId,\n            moduleIndex: i,\n          },\n          moduleType: m.moduleType,\n          partKey: part.partKey,\n          moduleIndex: i,\n          obbs,\n          sphereCenter: center,\n          sphereRadius: radius,\n        };\n        if (m.globalNumber !== undefined) probe.globalNumber = m.globalNumber;\n        probes.push(probe);\n      }\n    }\n  }\n\n  return { probes, adjacency };\n}\n\n/** Bounding sphere enclosing a set of segment OBBs. */\nfunction boundingSphere(obbs: ReadonlyArray<Obb>): {\n  center: Vector3;\n  radius: number;\n} {\n  const center = new Vector3();\n  for (const o of obbs) center.add(o.center);\n  center.multiplyScalar(1 / obbs.length);\n  let radius = 0;\n  for (const o of obbs) {\n    radius = Math.max(radius, center.distanceTo(o.center) + o.radius);\n  }\n  return { center, radius };\n}\n\n/** Projected radius of an OBB onto a unit axis L. */\nfunction projectRadius(obb: Obb, L: Vector3): number {\n  return (\n    obb.halfExtents[0] * Math.abs(obb.axes[0].dot(L)) +\n    obb.halfExtents[1] * Math.abs(obb.axes[1].dot(L)) +\n    obb.halfExtents[2] * Math.abs(obb.axes[2].dot(L))\n  );\n}\n\n/**\n * OBB-vs-OBB SAT with penetration depth. `t = centerB − centerA`.\n * Returns the minimum-translation overlap and its axis, or `null` when the\n * boxes are separated by more than `gapThreshold` on some axis.\n */\nfunction obbOverlap(\n  a: Obb,\n  b: Obb,\n  t: Vector3,\n  gapThreshold: number,\n): { overlapMm: number; axis: Vector3 } | null {\n  const candidates: Vector3[] = [\n    a.axes[0],\n    a.axes[1],\n    a.axes[2],\n    b.axes[0],\n    b.axes[1],\n    b.axes[2],\n  ];\n  for (const ai of a.axes) {\n    for (const bj of b.axes) {\n      const c = new Vector3().crossVectors(ai, bj);\n      if (c.lengthSq() > EPS) candidates.push(c.normalize());\n    }\n  }\n\n  let maxSeparation = -Infinity;\n  let mtvAxis = candidates[0]!;\n  for (const L of candidates) {\n    const dist = Math.abs(t.dot(L));\n    const separation = dist - (projectRadius(a, L) + projectRadius(b, L));\n    if (separation > gapThreshold) return null; // separated beyond the band\n    if (separation > maxSeparation) {\n      maxSeparation = separation;\n      mtvAxis = L;\n    }\n  }\n  return { overlapMm: -maxSeparation, axis: mtvAxis };\n}\n\nfunction refLess(p: ModuleRef, q: ModuleRef): boolean {\n  if (p.processingUnitObjectId !== q.processingUnitObjectId) {\n    return p.processingUnitObjectId < q.processingUnitObjectId;\n  }\n  if (p.partObjectId !== q.partObjectId) {\n    return p.partObjectId < q.partObjectId;\n  }\n  return p.moduleIndex < q.moduleIndex;\n}\n\n/**\n * Pairwise OBB overlap test over all module probes. Same-part consecutive\n * and closed-loop-seam pairs are excluded; everything else is tested.\n * Returns one entry per overlapping (or near-miss, when `warningGapMm > 0`)\n * pair, sorted deepest-overlap-first.\n */\nexport function checkModuleCollisions(\n  probes: ReadonlyArray<ModuleProbe>,\n  adjacency: ReadonlyMap<number, { count: number; closed: boolean }>,\n  opts: CheckModuleCollisionsOptions = {},\n): ModuleCollision[] {\n  const warningGapMm = opts.warningGapMm ?? DEFAULT_WARNING_GAP_MM;\n  const includeSamePart = opts.includeSamePart ?? true;\n  const gap = Math.max(0, warningGapMm);\n\n  const out: ModuleCollision[] = [];\n\n  for (let i = 0; i < probes.length; i++) {\n    const a = probes[i]!;\n    for (let j = i + 1; j < probes.length; j++) {\n      const b = probes[j]!;\n\n      if (a.partKey === b.partKey) {\n        if (!includeSamePart) continue;\n        const di = Math.abs(a.moduleIndex - b.moduleIndex);\n        if (di === 1) continue; // consecutive seam (butt edge-to-edge)\n        const info = adjacency.get(a.partKey);\n        if (info?.closed) {\n          const lo = Math.min(a.moduleIndex, b.moduleIndex);\n          const hi = Math.max(a.moduleIndex, b.moduleIndex);\n          if (lo === 0 && hi === info.count - 1) continue; // wrap seam\n        }\n      }\n\n      // Module-level broad phase: bounding-sphere reject.\n      if (\n        a.sphereCenter.distanceTo(b.sphereCenter) >\n        a.sphereRadius + b.sphereRadius + gap\n      ) {\n        continue;\n      }\n\n      // Narrow phase: deepest overlap over all segment-box pairs.\n      let bestOverlap = -Infinity;\n      let bestAxis: Vector3 | null = null;\n      let bestCenterDist = 0;\n      for (const sa of a.obbs) {\n        for (const sb of b.obbs) {\n          const tVec = new Vector3().subVectors(sb.center, sa.center);\n          const d = tVec.length();\n          if (d > sa.radius + sb.radius + gap) continue; // sub-box reject\n          const hit = obbOverlap(sa, sb, tVec, gap);\n          if (!hit) continue;\n          if (hit.overlapMm > bestOverlap) {\n            bestOverlap = hit.overlapMm;\n            bestAxis = hit.axis;\n            bestCenterDist = d;\n          }\n        }\n      }\n      if (!bestAxis || bestOverlap < -gap) continue;\n\n      const aFirst = refLess(a.ref, b.ref);\n      const lo = aFirst ? a : b;\n      const hi = aFirst ? b : a;\n      const collision: ModuleCollision = {\n        a: lo.ref,\n        b: hi.ref,\n        moduleTypeA: lo.moduleType,\n        moduleTypeB: hi.moduleType,\n        overlapMm: bestOverlap,\n        centerDistanceMm: bestCenterDist,\n        axis: [bestAxis.x, bestAxis.y, bestAxis.z],\n      };\n      if (lo.globalNumber !== undefined) {\n        collision.globalNumberA = lo.globalNumber;\n      }\n      if (hi.globalNumber !== undefined) {\n        collision.globalNumberB = hi.globalNumber;\n      }\n      out.push(collision);\n    }\n  }\n\n  out.sort((x, y) => y.overlapMm - x.overlapMm);\n  return out;\n}\n","/**\n * Path-sample helpers — convert a chain + a [startMm, endMm] range into a\n * world-frame polyline of Vector3s. Used by Stations, Dimensions and\n * InfoBars to build TubeGeometries that follow the path.\n */\n\nimport { Vector3 } from 'three';\nimport { moverWorldAt, type BuiltChain } from './ChainBuilder.js';\n\nconst DEG2RAD = Math.PI / 180;\n\n/**\n * Sample a chain in part-local coords from startMm to endMm at approx.\n * `stepMm` spacing. Returns at least 2 points; clamps to [0, trackLength].\n *\n * Offsets:\n *   - `liftZ`     : vertical displacement (mm), added to Z. Used for tubes\n *                   that should sit above/below the path centerline.\n *   - `lateralMm` : lateral displacement (mm) along the path's left-hand\n *                   normal in the XY plane (+Y in path-frame). Lets you\n *                   render a parallel offset tube that, on curves, faithfully\n *                   tracks the centerline arc-by-arc — i.e. each sample at\n *                   centerline position `s` becomes the perpendicular point\n *                   at the same `s`, so labels still match centerline mm.\n */\nexport function sampleChainRange(\n  chain: BuiltChain,\n  startMm: number,\n  endMm: number,\n  stepMm = 5,\n  liftZ = 0,\n  lateralMm = 0,\n): Vector3[] {\n  const total = chain.trackLengthMm;\n  if (total === 0) return [new Vector3(), new Vector3()];\n  const start = Math.max(0, Math.min(startMm, total));\n  const end = Math.max(0, Math.min(endMm, total));\n  const range = Math.abs(end - start);\n  const direction = end >= start ? 1 : -1;\n  const steps = Math.max(2, Math.ceil(range / stepMm) + 1);\n  const out: Vector3[] = new Array(steps);\n  for (let i = 0; i < steps; i++) {\n    const t = i / (steps - 1);\n    const s = start + direction * t * range;\n    const pose = moverWorldAt(chain, s);\n    if (!pose) {\n      out[i] = new Vector3();\n      continue;\n    }\n    const yaw = pose.yawDeg * DEG2RAD;\n    // Left-hand normal in XY plane: rotate tangent +90° around Z.\n    const nx = lateralMm === 0 ? 0 : -Math.sin(yaw) * lateralMm;\n    const ny = lateralMm === 0 ? 0 : Math.cos(yaw) * lateralMm;\n    out[i] = new Vector3(\n      pose.positionMm[0] + nx,\n      pose.positionMm[1] + ny,\n      pose.positionMm[2] + liftZ,\n    );\n  }\n  return out;\n}\n\n/**\n * Sample at a single position; returns part-local position + tangent.\n * Used by markers (Diamond / Tick) to orient themselves along the path.\n *\n * `liftZ` and `lateralMm` semantics match sampleChainRange — see there.\n */\nexport function sampleChainPoint(\n  chain: BuiltChain,\n  positionMm: number,\n  liftZ = 0,\n  lateralMm = 0,\n): { position: Vector3; tangent: Vector3 } | null {\n  const pose = moverWorldAt(chain, positionMm);\n  if (!pose) return null;\n  const yaw = pose.yawDeg * DEG2RAD;\n  const tangent = new Vector3(Math.cos(yaw), Math.sin(yaw), 0);\n  // Left-hand normal in XY plane: rotate tangent +90° around Z.\n  const nx = lateralMm === 0 ? 0 : -Math.sin(yaw) * lateralMm;\n  const ny = lateralMm === 0 ? 0 : Math.cos(yaw) * lateralMm;\n  const position = new Vector3(\n    pose.positionMm[0] + nx,\n    pose.positionMm[1] + ny,\n    pose.positionMm[2] + liftZ,\n  );\n  return { position, tangent };\n}\n","/**\n * Pure helpers for <XtsViewer3D>. Lives outside the component file so the\n * top-level component can focus on the React + r3f wiring.\n */\n\nimport {\n  ACESFilmicToneMapping,\n  AgXToneMapping,\n  Box3,\n  CineonToneMapping,\n  LinearToneMapping,\n  Matrix4,\n  NoToneMapping,\n  ReinhardToneMapping,\n  type ToneMapping,\n  Vector3,\n} from 'three';\nimport { buildChain, moverWorldAt } from '../../geometry/ChainBuilder.js';\nimport {\n  orientationMatrix,\n  partTransformationMatrix,\n  trackTransformMatrix,\n} from '../../geometry/trackTransform.js';\nimport { sampleChainRange } from '../../geometry/sampleChain.js';\nimport {\n  chainEndpointsForPart,\n  userToChainPositionMm,\n} from '../../geometry/positionFrame.js';\nimport type { NormalizedXtsConfig } from '../../geometry/normalizeXtsConfig.js';\nimport { INFEED_MODULE_TYPES } from '../../geometry/ModuleCatalog.js';\nimport type {\n  ModuleHighlight,\n  ModuleRef,\n  MoverRef,\n  PartConfig,\n  ProcessingUnitConfig,\n  TrackTransform,\n  XtsConfig,\n  XtsRuntimeState,\n} from '../../types.js';\n\n/** Default tint for the `highlightInfeedModules` convenience boolean. */\nexport const DEFAULT_INFEED_HIGHLIGHT_COLOR = '#FF6600';\n\n/**\n * Merge the declarative `moduleHighlights` prop with the\n * `highlightInfeedModules` convenience boolean into the single\n * `moduleHighlights` array the renderer consumes.\n *\n * Explicit entries come first so they keep priority on overlapping module\n * types (downstream: first matching entry per type wins). Returns `undefined`\n * when nothing should be highlighted, so callers can omit the prop entirely.\n */\nexport function resolveModuleHighlights(\n  moduleHighlights: ModuleHighlight[] | undefined,\n  highlightInfeedModules: boolean | undefined,\n  infeedHighlightColor: string | undefined,\n): ModuleHighlight[] | undefined {\n  const base = moduleHighlights ?? [];\n  if (!highlightInfeedModules) {\n    return base.length > 0 ? base : undefined;\n  }\n  return [\n    ...base,\n    {\n      moduleTypes: [...INFEED_MODULE_TYPES],\n      color: infeedHighlightColor ?? DEFAULT_INFEED_HIGHLIGHT_COLOR,\n    },\n  ];\n}\n\n/**\n * AABB of the rendered scene. Samples each part chain (≥ 20 / ≥ 5×modules\n * samples) and applies the per-XPU `trackTransform` so the box matches the\n * actual world geometry. Used by `zoomToFit` and the `top-down` screenshot\n * mode.\n */\nexport function computeBoundingBox(\n  config: NormalizedXtsConfig,\n  trackOverrides?: Record<number, TrackTransform>,\n): Box3 {\n  const box = new Box3();\n  const tmpVec = new Vector3();\n  for (const xpu of config.processingUnits) {\n    const tt = trackOverrides?.[xpu.objectId] ?? xpu.trackTransform ?? null;\n    if (tt && tt.visible === false) continue;\n    const trackM = trackTransformMatrix(tt);\n    for (const part of xpu.parts) {\n      // Skip parts that the renderer would hide.\n      if (part.partTransformation?.visible === false) continue;\n      // Compose track ⊗ part so the bbox tracks lifts / live-moved parts.\n      const partM = partTransformationMatrix(part.partTransformation);\n      const m = new Matrix4().copy(trackM).multiply(partM);\n      const chain = buildChain(part.modules);\n      const samples = Math.max(20, chain.modules.length * 5);\n      for (let i = 0; i <= samples; i++) {\n        const s = (i / samples) * chain.trackLengthMm;\n        const pose = moverWorldAt(chain, s);\n        if (pose) {\n          tmpVec.set(\n            pose.positionMm[0],\n            pose.positionMm[1],\n            pose.positionMm[2],\n          );\n          tmpVec.applyMatrix4(m);\n          box.expandByPoint(tmpVec);\n        }\n      }\n    }\n  }\n  // Margin so movers/tools aren't flush with the AABB edge.\n  if (!box.isEmpty()) {\n    box.expandByScalar(200);\n  }\n  return box;\n}\n\n// ─── Orthographic top-down framing ───────────────────────────────────────────\n\n/** Near plane for the top-down ortho camera (mm). */\nexport const TOP_DOWN_NEAR = 1;\n/** Far plane for the top-down ortho camera (mm). */\nexport const TOP_DOWN_FAR = 1_000_000;\n/** Extra clearance added above the scene so nothing clips the near plane (mm). */\nexport const TOP_DOWN_CAMERA_LIFT_MM = 1000;\n\n/**\n * Fully-resolved orthographic top-down camera framing. The shared source of\n * truth for both the live 2D view (`projection='orthographic'`) and the\n * `exportScreenshot({ mode: 'top-down' })` path, so the two stay pixel-\n * consistent.\n */\nexport interface TopDownOrtho {\n  /** Camera position: directly above the AABB centre on +Z. */\n  position: [number, number, number];\n  /** Camera up vector — always world +Y (well-defined looking straight down). */\n  up: [number, number, number];\n  left: number;\n  right: number;\n  top: number;\n  bottom: number;\n  near: number;\n  far: number;\n  /** Look-at target = AABB centre. */\n  target: [number, number, number];\n}\n\n/**\n * Compute the orthographic frustum + pose that frames `bbox` straight from\n * above (+Z), up = +Y, fitted to `viewportAspect` (width / height) plus a\n * `paddingFactor` margin. Mirrors the math in the screenshot `'top-down'`\n * branch exactly.\n */\nexport function computeTopDownOrtho(\n  bbox: Box3,\n  viewportAspect: number,\n  paddingFactor = 1.1,\n): TopDownOrtho {\n  const center = bbox.getCenter(new Vector3());\n  const size = bbox.getSize(new Vector3());\n  const sx = Math.max(1, size.x);\n  const sy = Math.max(1, size.y);\n  const sz = Math.max(1, size.z);\n  const aspect =\n    Number.isFinite(viewportAspect) && viewportAspect > 0 ? viewportAspect : 1;\n\n  // Pick the dominant frustum axis so the entire bbox fits inside.\n  let halfW = (sx * paddingFactor) / 2;\n  let halfH = (sy * paddingFactor) / 2;\n  if (halfW / halfH < aspect) halfW = halfH * aspect;\n  else halfH = halfW / aspect;\n\n  const camZ = center.z + sz / 2 + TOP_DOWN_CAMERA_LIFT_MM;\n  return {\n    position: [center.x, center.y, camZ],\n    up: [0, 1, 0],\n    left: -halfW,\n    right: halfW,\n    top: halfH,\n    bottom: -halfH,\n    near: TOP_DOWN_NEAR,\n    far: TOP_DOWN_FAR,\n    target: [center.x, center.y, center.z],\n  };\n}\n\n// ─── Scoped bounding boxes (for `focusOn`) ───────────────────────────────────\n\n/** Clearance added around a focused object so it isn't flush with the frame. */\nconst FOCUS_MARGIN_MM = 150;\n/** Approximate mover footprint half-extent used when framing a single mover. */\nconst MOVER_HALF_EXTENT_MM = 175;\n\n/** world = orientation ⊗ trackTransform ⊗ partTransformation for one part. */\nfunction partWorldMatrix(\n  config: XtsConfig,\n  xpu: ProcessingUnitConfig,\n  part: PartConfig,\n  overrides?: Record<number, TrackTransform>,\n): Matrix4 {\n  const tt = overrides?.[xpu.objectId] ?? xpu.trackTransform ?? null;\n  return new Matrix4()\n    .copy(orientationMatrix(config.orientation))\n    .multiply(trackTransformMatrix(tt))\n    .multiply(partTransformationMatrix(part.partTransformation));\n}\n\n/** Find the XPU + part owning the given part `globalNumber`. */\nfunction findPartByGlobalNumber(\n  config: NormalizedXtsConfig,\n  globalNumber: number,\n): { xpu: ProcessingUnitConfig; part: PartConfig } | null {\n  for (const xpu of config.processingUnits) {\n    const part = xpu.parts.find((p) => p.globalNumber === globalNumber);\n    if (part) return { xpu, part };\n  }\n  return null;\n}\n\n/**\n * AABB of a track region spanning `partOids` from `startUser`..`endUser`\n * (user-frame positions). Mirrors the segment math used by <XtsStations> /\n * <XtsAreas>: the region is anchored to the first partOid's transform and\n * each partOid contributes a sampled polyline.\n */\nfunction regionBoundingBox(\n  config: NormalizedXtsConfig,\n  partOids: number[],\n  startUser: number,\n  endUser: number,\n  overrides?: Record<number, TrackTransform>,\n): Box3 {\n  const box = new Box3();\n  const anchorOid = partOids[0];\n  if (anchorOid === undefined) return box;\n  const anchor = findPartByGlobalNumber(config, anchorOid);\n  if (!anchor) return box;\n  const { xpu, part: anchorPart } = anchor;\n  const m = partWorldMatrix(config, xpu, anchorPart, overrides);\n  const pf = xpu.positionFrame;\n\n  // Build chains for this XPU keyed by globalNumber.\n  const chainsByGlobal = new Map(\n    xpu.parts.map((p) => [p.globalNumber, buildChain(p.modules)] as const),\n  );\n\n  // Closed single-part loop (end < start) → duplicate the partOid, matching\n  // the renderer's segment closure.\n  const parts =\n    partOids.length === 1 && endUser < startUser\n      ? [partOids[0]!, partOids[0]!]\n      : partOids;\n\n  for (let i = 0; i < parts.length; i++) {\n    const chain = chainsByGlobal.get(parts[i]!);\n    if (!chain) continue;\n    const isFirst = i === 0;\n    const isLast = i === parts.length - 1;\n    const ep = chainEndpointsForPart(chain.trackLengthMm, pf);\n    const start = isFirst\n      ? userToChainPositionMm(startUser, pf)\n      : ep.userStartChainMm;\n    const end = isLast\n      ? userToChainPositionMm(endUser, pf)\n      : ep.userEndChainMm;\n    for (const p of sampleChainRange(chain, start, end, 20)) {\n      box.expandByPoint(p.applyMatrix4(m));\n    }\n  }\n  if (!box.isEmpty()) box.expandByScalar(FOCUS_MARGIN_MM);\n  return box;\n}\n\n/** World AABB of a station (by `stationId`). Empty box if not found. */\nexport function computeStationBoundingBox(\n  config: NormalizedXtsConfig,\n  stationId: number,\n  overrides?: Record<number, TrackTransform>,\n): Box3 {\n  const s = config.stations?.find((st) => st.stationId === stationId);\n  if (!s) return new Box3();\n  return regionBoundingBox(\n    config,\n    s.partOids,\n    s.startPositionOnPart,\n    s.endPositionOnPart,\n    overrides,\n  );\n}\n\n/** World AABB of an area (by `areaId`). Empty box if not found. */\nexport function computeAreaBoundingBox(\n  config: NormalizedXtsConfig,\n  areaId: number,\n  overrides?: Record<number, TrackTransform>,\n): Box3 {\n  const a = config.areas?.find((ar) => ar.areaId === areaId);\n  if (!a) return new Box3();\n  return regionBoundingBox(\n    config,\n    a.partOids,\n    a.startPositionOnPart,\n    a.endPositionOnPart,\n    overrides,\n  );\n}\n\n/** World AABB of a single module (by `ModuleRef`). Empty box if not found. */\nexport function computeModuleBoundingBox(\n  config: NormalizedXtsConfig,\n  ref: ModuleRef,\n  overrides?: Record<number, TrackTransform>,\n): Box3 {\n  const box = new Box3();\n  const xpu = config.processingUnits.find(\n    (x) => x.objectId === ref.processingUnitObjectId,\n  );\n  if (!xpu) return box;\n  const part = xpu.parts.find((p) => p.objectId === ref.partObjectId);\n  if (!part) return box;\n  const chain = buildChain(part.modules);\n  const mod = chain.modules[ref.moduleIndex];\n  if (!mod) return box;\n  const m = partWorldMatrix(config, xpu, part, overrides);\n  const start = mod.startPositionInPartMm;\n  const end = start + mod.trackLengthMm;\n  for (const p of sampleChainRange(chain, start, end, 10)) {\n    box.expandByPoint(p.applyMatrix4(m));\n  }\n  if (!box.isEmpty()) box.expandByScalar(FOCUS_MARGIN_MM);\n  return box;\n}\n\n/**\n * World AABB of a single mover (by `MoverRef`). Uses the live position from\n * `getLivePositionMm(moverId)` when provided, else the config-time position.\n * Empty box if not found.\n */\nexport function computeMoverBoundingBox(\n  config: NormalizedXtsConfig,\n  ref: MoverRef,\n  overrides?: Record<number, TrackTransform>,\n  getLivePositionMm?: (moverId: number) => number | undefined,\n): Box3 {\n  const box = new Box3();\n  const xpu = config.processingUnits.find(\n    (x) => x.objectId === ref.processingUnitObjectId,\n  );\n  if (!xpu) return box;\n  const mover = xpu.movers.find((m) => m.index === ref.moverIndex);\n  if (!mover) return box;\n  const part = xpu.parts.find((p) => p.globalNumber === mover.partOid);\n  if (!part) return box;\n  const userPos = getLivePositionMm?.(mover.id) ?? mover.partPositionMm;\n  const chainPos = userToChainPositionMm(userPos, xpu.positionFrame);\n  const pose = moverWorldAt(buildChain(part.modules), chainPos);\n  if (!pose) return box;\n  const m = partWorldMatrix(config, xpu, part, overrides);\n  const p = new Vector3(\n    pose.positionMm[0],\n    pose.positionMm[1],\n    pose.positionMm[2],\n  ).applyMatrix4(m);\n  box.setFromCenterAndSize(\n    p,\n    new Vector3(\n      MOVER_HALF_EXTENT_MM * 2,\n      MOVER_HALF_EXTENT_MM * 2,\n      MOVER_HALF_EXTENT_MM * 2,\n    ),\n  );\n  return box;\n}\n\nexport function resolveToneMapping(\n  mode: 'aces' | 'linear' | 'reinhard' | 'cineon' | 'agx' | 'none' | undefined,\n): ToneMapping {\n  switch (mode) {\n    case 'linear':\n      return LinearToneMapping;\n    case 'reinhard':\n      return ReinhardToneMapping;\n    case 'cineon':\n      return CineonToneMapping;\n    case 'agx':\n      return AgXToneMapping;\n    case 'none':\n      return NoToneMapping;\n    case 'aces':\n    default:\n      return ACESFilmicToneMapping;\n  }\n}\n\n/** Snapshot of runtime-only mover state for `exportModel` / `getRuntimeState`. */\nexport function buildRuntimeState(config: XtsConfig): XtsRuntimeState {\n  const movers: XtsRuntimeState['movers'] = [];\n  for (const xpu of config.processingUnits) {\n    for (const m of xpu.movers) {\n      movers.push({\n        processingUnitObjectId: xpu.objectId,\n        moverIndex: m.index,\n        id: m.id,\n        partOid: m.partOid,\n        partPositionMm: m.partPositionMm,\n        ...(m.status ? { status: m.status } : {}),\n      });\n    }\n  }\n  return { movers };\n}\n","/**\n * cameraAnimation — a tiny requestAnimationFrame tween for the imperative\n * `focusOn` camera fly-to. No animation dependency: the repo drives all motion\n * through r3f's render loop, so a hand-rolled lerp keeps the bundle lean.\n *\n * It lerps the camera position + the OrbitControls target (and, for an\n * orthographic camera, the frustum bounds) over `durationMs`. Each frame calls\n * `controls.update()`, which — exactly like `setCamera` / `zoomToFit` — emits\n * the OrbitControls `change` event that drei turns into an `invalidate()`, so\n * the tween renders correctly under `frameloop='demand'`.\n *\n * The clock / scheduler are injectable so the tween is unit-testable without a\n * real animation frame.\n */\n\nimport { Vector3 } from 'three';\nimport type { OrthographicCamera, PerspectiveCamera } from 'three';\nimport type { OrbitControls as OrbitControlsImpl } from 'three-stdlib';\n\nexport type EasingName = 'linear' | 'easeInOutCubic';\n\n/** Smooth acceleration + deceleration. `f(0)=0`, `f(0.5)=0.5`, `f(1)=1`. */\nexport function easeInOutCubic(t: number): number {\n  return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;\n}\n\nexport function resolveEasing(name: EasingName | undefined): (t: number) => number {\n  return name === 'linear' ? (t) => t : easeInOutCubic;\n}\n\nexport interface OrthoFrustum {\n  left: number;\n  right: number;\n  top: number;\n  bottom: number;\n}\n\nexport interface AnimateCameraArgs {\n  camera: PerspectiveCamera | OrthographicCamera;\n  controls: OrbitControlsImpl;\n  toPosition: Vector3;\n  toTarget: Vector3;\n  /** Target ortho frustum — only applied when `camera` is orthographic. */\n  toFrustum?: OrthoFrustum;\n  /** Duration in ms. `0` applies the end state immediately (no animation). */\n  durationMs: number;\n  easing?: (t: number) => number;\n  /** Injectable clock (default `performance.now`). */\n  now?: () => number;\n  /** Injectable scheduler (default `requestAnimationFrame`). */\n  raf?: (cb: (t: number) => void) => number;\n  /** Injectable canceller (default `cancelAnimationFrame`). */\n  caf?: (handle: number) => void;\n}\n\n/**\n * Animate the camera to `toPosition` / `toTarget` (+ optional ortho frustum).\n * Returns a cancel function that stops the tween in place.\n */\nexport function animateCamera(args: AnimateCameraArgs): () => void {\n  const { camera, controls, toPosition, toTarget, toFrustum } = args;\n  const duration = Math.max(0, args.durationMs);\n  const ease = args.easing ?? easeInOutCubic;\n  const now = args.now ?? (() => performance.now());\n  const raf =\n    args.raf ?? ((cb: (t: number) => void) => requestAnimationFrame(cb));\n  const caf = args.caf ?? ((h: number) => cancelAnimationFrame(h));\n\n  const fromPos = camera.position.clone();\n  const fromTarget = controls.target.clone();\n  const oc = camera as OrthographicCamera;\n  const isOrtho = !!toFrustum && oc.isOrthographicCamera === true;\n  const fromFrustum = isOrtho\n    ? { left: oc.left, right: oc.right, top: oc.top, bottom: oc.bottom }\n    : null;\n\n  const apply = (t: number) => {\n    camera.position.lerpVectors(fromPos, toPosition, t);\n    controls.target.lerpVectors(fromTarget, toTarget, t);\n    if (isOrtho && fromFrustum && toFrustum) {\n      oc.left = fromFrustum.left + (toFrustum.left - fromFrustum.left) * t;\n      oc.right = fromFrustum.right + (toFrustum.right - fromFrustum.right) * t;\n      oc.top = fromFrustum.top + (toFrustum.top - fromFrustum.top) * t;\n      oc.bottom =\n        fromFrustum.bottom + (toFrustum.bottom - fromFrustum.bottom) * t;\n      oc.updateProjectionMatrix();\n    }\n    controls.update();\n  };\n\n  if (duration === 0) {\n    apply(1);\n    return () => {};\n  }\n\n  let handle = 0;\n  let cancelled = false;\n  const start = now();\n  const tick = () => {\n    if (cancelled) return;\n    const raw = Math.min(1, (now() - start) / duration);\n    apply(ease(raw));\n    if (raw < 1) handle = raf(tick);\n  };\n  handle = raf(tick);\n  return () => {\n    cancelled = true;\n    caf(handle);\n  };\n}\n","/**\n * captureScreenshot — render the live r3f scene into an offscreen\n * WebGLRenderTarget at any resolution, in any of three camera modes:\n *\n *   • 'current'  — clone the live perspective camera at its current pose\n *                  (image aspect adjusted to the requested width/height).\n *   • 'top-down' — orthographic camera placed above the scene's AABB\n *                  centre, looking straight down -Z, with up = world +Y.\n *                  Frustum sized to fit the AABB plus padding. Mirrors\n *                  the 2D viewer convention (path along image X,\n *                  encoder-side along image Y).\n *   • 'custom'   — caller supplies a CameraState (positionMm, targetMm).\n *                  Lets you reproduce a saved shot exactly.\n *\n * Why an offscreen target instead of `gl.domElement.toBlob()`:\n *   - Live canvas is created with `preserveDrawingBuffer: false` for\n *     perf — `toBlob` would race with the next frame's clear.\n *   - The screenshot resolution decouples from the live canvas DPR;\n *     export 4K PNGs even from a 1× display.\n *   - Switching the camera doesn't require disturbing OrbitControls.\n *\n * Result:\n *   { blob, widthPx, heightPx, camera, boundingBoxMm, mode }\n *\n * Caller composes the URL via URL.createObjectURL() or downloads\n * directly with an <a download=\"…\"> trick. The blob mime is\n * `image/png` by default; jpeg / webp also supported with `quality`.\n *\n * Caveats:\n *   - Assumes the scene has finished loading (GLBs in cache). When\n *     called during a Suspense fallback, only what's currently in the\n *     scene graph gets rendered.\n *   - The renderer's pixel ratio, clear colour, and current render\n *     target are saved + restored, so live rendering is not disturbed.\n */\n\nimport {\n  Box3,\n  Color,\n  type ColorRepresentation,\n  type Light,\n  OrthographicCamera,\n  PerspectiveCamera,\n  Scene,\n  SRGBColorSpace,\n  Vector3,\n  WebGLRenderTarget,\n  WebGLRenderer,\n} from 'three';\nimport type { CameraState, Vec3 } from '../../types.js';\nimport { computeTopDownOrtho } from './viewerHelpers.js';\n\nexport type ScreenshotMode = 'current' | 'top-down' | 'custom';\nexport type ScreenshotFormat = 'png' | 'jpeg' | 'webp';\n\nexport interface ScreenshotOptions {\n  /** Camera mode. Default: `'current'`. */\n  mode?: ScreenshotMode;\n  /** Required when `mode === 'custom'`. Ignored otherwise. */\n  camera?: CameraState;\n  /**\n   * Image dimensions in pixels.\n   * - Both supplied: the rendered frustum (top-down) is adjusted to\n   *   match the resulting aspect; the perspective camera (current /\n   *   custom) gets its `aspect` set to `width / height`.\n   * - One supplied: the other is derived to keep the scene's aspect\n   *   ratio (top-down) or the live canvas aspect (current / custom).\n   * - Neither: canvas CSS dimensions × `pixelRatio`.\n   */\n  width?: number;\n  height?: number;\n  format?: ScreenshotFormat;\n  /** 0..1 — JPEG / WebP quality. Default 0.92. Ignored for PNG. */\n  quality?: number;\n  /**\n   * Padding factor around the scene AABB in `top-down` mode. Default\n   * 1.1 (10 % margin on each side). Higher = more whitespace.\n   */\n  paddingFactor?: number;\n  /**\n   * Background colour:\n   *   - `null` (default) → transparent PNG, matches the live canvas\n   *     contract. JPEG falls back to white because the format has no\n   *     alpha channel.\n   *   - `'#RRGGBB'` / any three.js ColorRepresentation → solid fill.\n   */\n  backgroundColor?: ColorRepresentation | null;\n  /**\n   * Pixel ratio for offscreen renders. Default = renderer's current\n   * pixel ratio (matches the live canvas sharpness on high-DPI\n   * displays). Set explicitly for fixed-resolution exports.\n   */\n  pixelRatio?: number;\n  /**\n   * Multiplier applied to every Light in the scene during the offscreen\n   * render. Default 1.35 — screenshots tend to feel dim compared to\n   * the live canvas because the live tone-mapping pipeline picks up\n   * the surrounding monitor luminance, which the offscreen render\n   * doesn't. Pass 1 to disable, > 1 for a brighter result. Restored\n   * after capture.\n   */\n  exposureBoost?: number;\n}\n\nexport interface ScreenshotResult {\n  blob: Blob;\n  widthPx: number;\n  heightPx: number;\n  /** Effective camera state used for the render. Useful to log + reproduce. */\n  camera: CameraState;\n  /** Scene AABB at capture time. Useful to overlay annotations later. */\n  boundingBoxMm: { min: Vec3; max: Vec3 };\n  mode: ScreenshotMode;\n}\n\nconst DEFAULT_QUALITY = 0.92;\nconst DEFAULT_PADDING_FACTOR = 1.1;\n\ninterface CaptureContext {\n  gl: WebGLRenderer;\n  scene: Scene;\n  liveCamera: PerspectiveCamera | OrthographicCamera | null;\n  /**\n   * Live OrbitControls target — reported back in the result for\n   * `'current'` mode so the caller can save + replay. Optional; omitting\n   * it just means the result's `targetMm` is `[0, 0, 0]` for current\n   * mode.\n   */\n  liveTargetMm?: Vec3;\n  bbox: Box3;\n}\n\nexport async function captureScreenshot(\n  ctx: CaptureContext,\n  opts: ScreenshotOptions = {},\n): Promise<ScreenshotResult> {\n  const { gl, scene, liveCamera, bbox } = ctx;\n  const mode: ScreenshotMode = opts.mode ?? 'current';\n  const format: ScreenshotFormat = opts.format ?? 'png';\n  const quality = opts.quality ?? DEFAULT_QUALITY;\n  const padding = opts.paddingFactor ?? DEFAULT_PADDING_FACTOR;\n  const dpr = opts.pixelRatio ?? gl.getPixelRatio();\n\n  const canvas = gl.domElement;\n  const cssW = Math.max(1, canvas.clientWidth || canvas.width / dpr);\n  const cssH = Math.max(1, canvas.clientHeight || canvas.height / dpr);\n\n  let width = opts.width;\n  let height = opts.height;\n\n  let renderCamera: PerspectiveCamera | OrthographicCamera;\n  let resultCameraState: CameraState;\n\n  if (mode === 'top-down') {\n    if (bbox.isEmpty()) {\n      throw new Error(\"captureScreenshot('top-down'): scene bounding box is empty\");\n    }\n    const size = bbox.getSize(new Vector3());\n    const sceneAspect = Math.max(1, size.x) / Math.max(1, size.y);\n\n    if (width !== undefined && height === undefined) {\n      height = Math.max(1, Math.round(width / sceneAspect));\n    } else if (height !== undefined && width === undefined) {\n      width = Math.max(1, Math.round(height * sceneAspect));\n    } else if (width === undefined && height === undefined) {\n      width = Math.max(1, Math.round(cssW * dpr));\n      height = Math.max(1, Math.round(width / sceneAspect));\n    }\n    const imageAspect = width! / height!;\n\n    // Shared framing math — keeps the screenshot pixel-consistent with the\n    // live `projection='orthographic'` top-down view.\n    const f = computeTopDownOrtho(bbox, imageAspect, padding);\n    const ortho = new OrthographicCamera(\n      f.left,\n      f.right,\n      f.top,\n      f.bottom,\n      f.near,\n      f.far,\n    );\n    ortho.up.set(...f.up);\n    ortho.position.set(...f.position);\n    ortho.lookAt(new Vector3(...f.target));\n    ortho.updateMatrixWorld();\n    renderCamera = ortho;\n    resultCameraState = {\n      positionMm: [...f.position],\n      targetMm: [...f.target],\n      upAxis: 'Z',\n    };\n  } else if (mode === 'custom') {\n    const cs = opts.camera;\n    if (!cs) {\n      throw new Error(\"captureScreenshot('custom'): `opts.camera` is required\");\n    }\n    if (!liveCamera) {\n      throw new Error('captureScreenshot: no active camera to clone from');\n    }\n    width ??= Math.max(1, Math.round(cssW * dpr));\n    height ??= Math.max(1, Math.round(cssH * dpr));\n    const persp = liveCamera.clone() as PerspectiveCamera;\n    persp.position.set(...cs.positionMm);\n    persp.up.set(0, 0, 1);\n    persp.lookAt(new Vector3(...cs.targetMm));\n    persp.aspect = width / height;\n    persp.updateProjectionMatrix();\n    renderCamera = persp;\n    resultCameraState = {\n      positionMm: [...cs.positionMm],\n      targetMm: [...cs.targetMm],\n      upAxis: cs.upAxis,\n    };\n  } else {\n    if (!liveCamera) {\n      throw new Error('captureScreenshot: no active camera');\n    }\n    width ??= Math.max(1, Math.round(cssW * dpr));\n    height ??= Math.max(1, Math.round(cssH * dpr));\n    const persp = liveCamera.clone() as PerspectiveCamera;\n    persp.aspect = width / height;\n    persp.updateProjectionMatrix();\n    renderCamera = persp;\n    resultCameraState = {\n      positionMm: [persp.position.x, persp.position.y, persp.position.z],\n      targetMm: ctx.liveTargetMm ?? [0, 0, 0],\n      upAxis: 'Z',\n    };\n  }\n\n  // Allocate target. depthBuffer required for proper occlusion; stencil\n  // not used by any of our materials, so skip it for memory.\n  //\n  // colorSpace = sRGB: critical for screenshots. The live canvas runs\n  // through an sRGB framebuffer, so what the user sees is gamma-encoded.\n  // A render target without explicit colorSpace stores linear pixels —\n  // when we readback into a canvas2D ImageData (which is sRGB), the\n  // image looks much darker than the live view (mid-greys land at ~22 %\n  // instead of 50 %). Marking the target sRGB tells the renderer to\n  // encode on write, so readRenderTargetPixels yields the right bytes.\n  const target = new WebGLRenderTarget(width!, height!, {\n    depthBuffer: true,\n    stencilBuffer: false,\n    colorSpace: SRGBColorSpace,\n  });\n\n  // Boost lights for the offscreen render so the result reads as bright\n  // as the live canvas (which benefits from the user's surrounding UI\n  // luminance). Tracked + restored in the finally block.\n  const exposureBoost = opts.exposureBoost ?? 1.35;\n  const boostedLights: Array<{ light: Light; orig: number }> = [];\n  if (exposureBoost !== 1) {\n    scene.traverse((obj) => {\n      const maybeLight = obj as Partial<Light> & { intensity?: number };\n      if (\n        typeof maybeLight.intensity === 'number' &&\n        (obj as Light).isLight\n      ) {\n        boostedLights.push({\n          light: obj as Light,\n          orig: maybeLight.intensity,\n        });\n        (obj as Light).intensity = maybeLight.intensity * exposureBoost;\n      }\n    });\n  }\n\n  // Save renderer state so live rendering doesn't get disturbed.\n  const prevTarget = gl.getRenderTarget();\n  const prevAlpha = gl.getClearAlpha();\n  const prevColor = new Color();\n  gl.getClearColor(prevColor);\n  const prevBg = scene.background;\n\n  try {\n    if (opts.backgroundColor === null || opts.backgroundColor === undefined) {\n      gl.setClearColor(0x000000, 0);\n      scene.background = null;\n    } else {\n      const bg = new Color(opts.backgroundColor);\n      gl.setClearColor(bg, 1);\n      scene.background = bg;\n    }\n    gl.setRenderTarget(target);\n    gl.clear(true, true, false);\n    gl.render(scene, renderCamera);\n\n    const buffer = new Uint8Array(width! * height! * 4);\n    gl.readRenderTargetPixels(target, 0, 0, width!, height!, buffer);\n\n    // WebGL's framebuffer is bottom-left origin; canvas2D is top-left.\n    // Flip rows in place into a copy with the right Y orientation.\n    const flipped = new Uint8ClampedArray(width! * height! * 4);\n    const rowBytes = width! * 4;\n    for (let y = 0; y < height!; y++) {\n      const srcOff = (height! - 1 - y) * rowBytes;\n      const dstOff = y * rowBytes;\n      flipped.set(buffer.subarray(srcOff, srcOff + rowBytes), dstOff);\n    }\n\n    const imageData = new ImageData(flipped, width!, height!);\n    const blob = await encodeImageData(imageData, format, quality);\n\n    return {\n      blob,\n      widthPx: width!,\n      heightPx: height!,\n      camera: resultCameraState,\n      boundingBoxMm: {\n        min: [bbox.min.x, bbox.min.y, bbox.min.z],\n        max: [bbox.max.x, bbox.max.y, bbox.max.z],\n      },\n      mode,\n    };\n  } finally {\n    // Restore mutated state in reverse order of mutation.\n    for (const { light, orig } of boostedLights) light.intensity = orig;\n    target.dispose();\n    gl.setRenderTarget(prevTarget);\n    gl.setClearColor(prevColor, prevAlpha);\n    scene.background = prevBg;\n  }\n}\n\nfunction mimeFor(format: ScreenshotFormat): string {\n  return format === 'png'\n    ? 'image/png'\n    : format === 'jpeg'\n      ? 'image/jpeg'\n      : 'image/webp';\n}\n\nasync function encodeImageData(\n  imageData: ImageData,\n  format: ScreenshotFormat,\n  quality: number,\n): Promise<Blob> {\n  const w = imageData.width;\n  const h = imageData.height;\n  const mime = mimeFor(format);\n\n  // Prefer OffscreenCanvas — works in workers + avoids DOM mutation\n  // during a screenshot taken on a render-loop tick.\n  if (typeof OffscreenCanvas !== 'undefined') {\n    const oc = new OffscreenCanvas(w, h);\n    const cx = oc.getContext('2d');\n    if (!cx) throw new Error('Failed to acquire OffscreenCanvas 2D context');\n    cx.putImageData(imageData, 0, 0);\n    return oc.convertToBlob(format === 'png' ? { type: mime } : { type: mime, quality });\n  }\n\n  const c = document.createElement('canvas');\n  c.width = w;\n  c.height = h;\n  const cx = c.getContext('2d');\n  if (!cx) throw new Error('Failed to acquire HTMLCanvasElement 2D context');\n  cx.putImageData(imageData, 0, 0);\n  return new Promise<Blob>((resolve, reject) => {\n    c.toBlob(\n      (blob) => (blob ? resolve(blob) : reject(new Error('canvas.toBlob returned null'))),\n      mime,\n      format === 'png' ? undefined : quality,\n    );\n  });\n}\n","/**\n * Imperative ref API for <XtsViewer3D>.\n *\n * Encapsulates everything the host can call through `viewerRef.current.*`:\n * camera + zoomToFit, getMoverWorldTransform, exportModel, exportScreenshot,\n * mover-position channel writes, and the on-demand collision query.\n *\n * Pulled out of XtsViewer3D so the top-level component stays a thin\n * `<Canvas>` shell instead of a ~700-line handle definition.\n */\n\nimport { useImperativeHandle, useRef, type RefObject } from 'react';\nimport {\n  Box3,\n  Euler,\n  Matrix4,\n  OrthographicCamera,\n  PerspectiveCamera,\n  Quaternion,\n  Scene,\n  Vector3,\n  WebGLRenderer,\n} from 'three';\nimport type { OrbitControls as OrbitControlsImpl } from 'three-stdlib';\nimport {\n  orientationMatrix,\n  partTransformationMatrix,\n  trackTransformMatrix,\n} from '../../geometry/trackTransform.js';\nimport { buildChain, moverWorldAt } from '../../geometry/ChainBuilder.js';\nimport { userToChainPositionMm } from '../../geometry/positionFrame.js';\nimport {\n  checkSamePathCollisions,\n  type CheckMoverCollisionsOptions,\n  type MoverCollision,\n  type MoverProbe,\n} from '../../geometry/moverCollision.js';\nimport {\n  buildModuleProbes,\n  checkModuleCollisions,\n  type CheckModuleCollisionsOptions,\n  type ModuleCollision,\n  type ModuleCollisionPartInput,\n  type ModuleCollisionXpuInput,\n} from '../../geometry/moduleCollision.js';\nimport type { NormalizedXtsConfig } from '../../geometry/normalizeXtsConfig.js';\nimport {\n  buildRuntimeState,\n  computeAreaBoundingBox,\n  computeBoundingBox,\n  computeModuleBoundingBox,\n  computeMoverBoundingBox,\n  computeStationBoundingBox,\n  computeTopDownOrtho,\n} from './viewerHelpers.js';\nimport { animateCamera, resolveEasing } from './cameraAnimation.js';\nimport {\n  captureScreenshot,\n  type ScreenshotOptions,\n  type ScreenshotResult,\n} from './screenshot.js';\nimport type { MoverPositionStore } from './MoverPositionStore.js';\nimport type { ModuleStatusStore } from './ModuleStatusStore.js';\nimport { VERSION } from '../../version.js';\nimport type {\n  CameraState,\n  FocusOptions,\n  FocusTarget,\n  ModuleStatusEntry,\n  MoverPositionEntry,\n  MoverRef,\n  TrackTransform,\n  XtsConfig,\n  XtsModelDocument,\n  XtsRuntimeState,\n} from '../../types.js';\n\nexport interface XtsViewer3DRef {\n  zoomToFit(paddingFactor?: number): void;\n  /**\n   * Re-fit the orthographic top-down frustum to the current scene AABB.\n   * No-op unless the live camera is orthographic (`projection='orthographic'`).\n   */\n  frameTopDown(paddingFactor?: number): void;\n  /**\n   * Animate the camera so the given target (station / area / mover / module /\n   * the whole scene) fits the frame. In perspective the current view angle is\n   * preserved; in orthographic top-down the frustum is re-framed and the\n   * camera pans straight over the target.\n   */\n  focusOn(target: FocusTarget, opts?: FocusOptions): void;\n  setCamera(cam: CameraState): void;\n  getCamera(): CameraState | null;\n  setOrientation(orientation: XtsConfig['orientation']): void;\n  getMoverWorldTransform(ref: MoverRef): {\n    positionMm: [number, number, number];\n    rotationDegEuler: [number, number, number];\n  } | null;\n  getBoundingBox(): {\n    min: [number, number, number];\n    max: [number, number, number];\n  };\n  getConfig(): XtsConfig;\n  getRuntimeState(): XtsRuntimeState;\n  exportModel(opts?: { includeRuntime?: boolean }): XtsModelDocument;\n  exportScreenshot(opts?: ScreenshotOptions): Promise<ScreenshotResult>;\n  reloadAssets(): Promise<void>;\n  setMoverPosition(moverId: number, partPositionMm: number): void;\n  /**\n   * Push mover positions in bulk. Two accepted forms:\n   *\n   *  1. `Record<moverId, partPositionMm>` — backwards-compatible single-\n   *     part-per-mover update. The mover stays on its config-time part.\n   *  2. `MoverPositionEntry[]` — array indexed by `MoverConfig.index`\n   *     (entry `i` targets the mover with `index === i`); each entry\n   *     supplies the `partObjectId` (= `PartConfig.objectId`) the mover is\n   *     currently on plus its position. `null` / `undefined` entries are\n   *     skipped — leave them untouched in the store.\n   */\n  setMoverPositions(\n    update:\n      | Record<number, number>\n      | ReadonlyArray<MoverPositionEntry | null | undefined>,\n  ): void;\n  getMoverPosition(moverId: number): number | null;\n  /**\n   * Push live drive-status (warning / error) onto motor modules. The\n   * `statuses` array is indexed by `ModuleEntry.globalNumber` — i.e.\n   * `statuses[m.globalNumber] === { warning, error }`. `null` clears a\n   * slot; `undefined` leaves it unchanged.\n   */\n  setModuleStatuses(\n    statuses: ReadonlyArray<ModuleStatusEntry | null | undefined>,\n  ): void;\n  /** Clear all live module statuses (revert to config-time `ModuleEntry.status`). */\n  clearModuleStatuses(): void;\n  checkMoverCollisions(opts?: CheckMoverCollisionsOptions): MoverCollision[];\n  /**\n   * On-demand check for physically overlapping track MODULES across the\n   * whole layout — different XPUs / parts placed via `trackTransform` /\n   * `orientation` / `partTransformation`, plus non-adjacent modules of the\n   * same part. Adjacent (seam) modules and the closed-loop seam are\n   * excluded. Override-aware: reflects any `trackTransform` set imperatively\n   * via the `trackTransformOverrides` prop. Returns the overlapping pairs\n   * sorted deepest-overlap-first.\n   */\n  checkModuleCollisions(opts?: CheckModuleCollisionsOptions): ModuleCollision[];\n}\n\nexport interface UseXtsViewerHandleArgs {\n  ref: React.Ref<XtsViewer3DRef>;\n  config: XtsConfig;\n  normalized: NormalizedXtsConfig | null;\n  cameraRef: RefObject<PerspectiveCamera | OrthographicCamera | null>;\n  orbitRef: RefObject<OrbitControlsImpl | null>;\n  glRef: RefObject<WebGLRenderer | null>;\n  sceneRef: RefObject<Scene | null>;\n  moverStoreRef: RefObject<MoverPositionStore>;\n  moduleStatusStoreRef: RefObject<ModuleStatusStore>;\n  trackTransformOverrides?: Record<number, TrackTransform>;\n}\n\nconst RAD2DEG = 180 / Math.PI;\n\nexport function useXtsViewerHandle({\n  ref,\n  config,\n  normalized,\n  cameraRef,\n  orbitRef,\n  glRef,\n  sceneRef,\n  moverStoreRef,\n  moduleStatusStoreRef,\n  trackTransformOverrides,\n}: UseXtsViewerHandleArgs): void {\n  // Cancel handle for an in-flight `focusOn` tween, so a new focus call (or a\n  // manual camera write) supersedes the previous animation instead of fighting it.\n  const cancelFocusRef = useRef<(() => void) | null>(null);\n  useImperativeHandle(\n    ref,\n    (): XtsViewer3DRef => {\n      const isOrtho = (cam: PerspectiveCamera | OrthographicCamera): boolean =>\n        (cam as OrthographicCamera).isOrthographicCamera === true;\n\n      /** Live canvas aspect (width / height) for ortho frustum fitting. */\n      const canvasAspect = (): number => {\n        const c = glRef.current?.domElement;\n        const w = c?.clientWidth || c?.width || 1;\n        const h = c?.clientHeight || c?.height || 1;\n        return h > 0 ? w / h : 1;\n      };\n\n      /** Apply a computed top-down ortho framing to an ortho camera. */\n      const applyTopDown = (\n        cam: OrthographicCamera,\n        ctrl: OrbitControlsImpl,\n        box: Box3,\n        paddingFactor: number,\n      ) => {\n        const f = computeTopDownOrtho(box, canvasAspect(), paddingFactor);\n        cam.left = f.left;\n        cam.right = f.right;\n        cam.top = f.top;\n        cam.bottom = f.bottom;\n        cam.up.set(...f.up);\n        cam.position.set(...f.position);\n        cam.updateProjectionMatrix();\n        ctrl.target.set(...f.target);\n        cam.lookAt(new Vector3(...f.target));\n        ctrl.update();\n      };\n\n      /** Resolve the world AABB for a focus target. */\n      const boxForTarget = (target: FocusTarget): Box3 => {\n        if (!normalized) return new Box3();\n        switch (target.kind) {\n          case 'scene':\n            return computeBoundingBox(normalized, trackTransformOverrides);\n          case 'station':\n            return computeStationBoundingBox(\n              normalized,\n              target.stationId,\n              trackTransformOverrides,\n            );\n          case 'area':\n            return computeAreaBoundingBox(\n              normalized,\n              target.areaId,\n              trackTransformOverrides,\n            );\n          case 'module':\n            return computeModuleBoundingBox(\n              normalized,\n              target.ref,\n              trackTransformOverrides,\n            );\n          case 'mover':\n            return computeMoverBoundingBox(\n              normalized,\n              target.ref,\n              trackTransformOverrides,\n              (id) => moverStoreRef.current?.get(id) ?? undefined,\n            );\n        }\n      };\n\n      return {\n      zoomToFit: (paddingFactor = 1.2) => {\n        const cam = cameraRef.current;\n        const ctrl = orbitRef.current;\n        if (!cam || !ctrl || !normalized) return;\n        const box = computeBoundingBox(normalized, trackTransformOverrides);\n        if (box.isEmpty()) return;\n        if (isOrtho(cam)) {\n          applyTopDown(cam as OrthographicCamera, ctrl, box, paddingFactor);\n          return;\n        }\n        const center = box.getCenter(new Vector3());\n        const size = box.getSize(new Vector3());\n        const maxDim = Math.max(size.x, size.y, size.z) * paddingFactor;\n        const persp = cam as PerspectiveCamera;\n        const fov = persp.fov * (Math.PI / 180);\n        const dist = (maxDim / 2) / Math.tan(fov / 2);\n        const dir = new Vector3(1, -1, 1).normalize();\n        persp.position.copy(center).addScaledVector(dir, dist);\n        persp.lookAt(center);\n        ctrl.target.copy(center);\n        ctrl.update();\n      },\n      frameTopDown: (paddingFactor = 1.1) => {\n        const cam = cameraRef.current;\n        const ctrl = orbitRef.current;\n        if (!cam || !ctrl || !normalized || !isOrtho(cam)) return;\n        const box = computeBoundingBox(normalized, trackTransformOverrides);\n        if (box.isEmpty()) return;\n        applyTopDown(cam as OrthographicCamera, ctrl, box, paddingFactor);\n      },\n      focusOn: (target, opts) => {\n        const cam = cameraRef.current;\n        const ctrl = orbitRef.current;\n        if (!cam || !ctrl || !normalized) return;\n        const box = boxForTarget(target);\n        if (box.isEmpty()) return;\n        // Supersede any running focus animation.\n        cancelFocusRef.current?.();\n        const center = box.getCenter(new Vector3());\n        const size = box.getSize(new Vector3());\n        const durationMs = opts?.durationMs ?? 700;\n        const easing = resolveEasing(opts?.easing);\n\n        if (isOrtho(cam)) {\n          const padding = opts?.paddingFactor ?? 1.1;\n          const f = computeTopDownOrtho(box, canvasAspect(), padding);\n          cancelFocusRef.current = animateCamera({\n            camera: cam,\n            controls: ctrl,\n            toPosition: new Vector3(...f.position),\n            toTarget: new Vector3(...f.target),\n            toFrustum: {\n              left: f.left,\n              right: f.right,\n              top: f.top,\n              bottom: f.bottom,\n            },\n            durationMs,\n            easing,\n          });\n          return;\n        }\n\n        // Perspective: keep the current view direction, only dolly + re-centre.\n        const persp = cam as PerspectiveCamera;\n        const padding = opts?.paddingFactor ?? 1.2;\n        const maxDim = Math.max(size.x, size.y, size.z) * padding;\n        const fov = persp.fov * (Math.PI / 180);\n        const dist = (maxDim / 2) / Math.tan(fov / 2);\n        const dir = new Vector3().subVectors(persp.position, ctrl.target);\n        if (dir.lengthSq() < 1e-6) dir.set(1, -1, 1);\n        dir.normalize();\n        const toPosition = new Vector3()\n          .copy(center)\n          .addScaledVector(dir, dist);\n        cancelFocusRef.current = animateCamera({\n          camera: persp,\n          controls: ctrl,\n          toPosition,\n          toTarget: center,\n          durationMs,\n          easing,\n        });\n      },\n      setCamera: (cam) => {\n        const c = cameraRef.current;\n        const ctrl = orbitRef.current;\n        if (!c || !ctrl) return;\n        c.position.set(...cam.positionMm);\n        c.lookAt(new Vector3(...cam.targetMm));\n        ctrl.target.set(...cam.targetMm);\n        ctrl.update();\n      },\n      getCamera: () => {\n        const c = cameraRef.current;\n        const ctrl = orbitRef.current;\n        if (!c || !ctrl) return null;\n        return {\n          positionMm: [c.position.x, c.position.y, c.position.z],\n          targetMm: [ctrl.target.x, ctrl.target.y, ctrl.target.z],\n          upAxis: 'Z',\n        };\n      },\n      setOrientation: () => {\n        // Phase-1 stub: orientation is a static prop in this build. A future\n        // phase persists it via React state for live updates.\n      },\n      getMoverWorldTransform: (moverRef) => {\n        if (!normalized) return null;\n        const xpu = normalized.processingUnits.find(\n          (x) => x.objectId === moverRef.processingUnitObjectId,\n        );\n        if (!xpu) return null;\n        const mover = xpu.movers.find(\n          (m) => m.index === moverRef.moverIndex,\n        );\n        if (!mover) return null;\n        const part = xpu.parts.find((p) => p.globalNumber === mover.partOid);\n        if (!part) return null;\n        const userPos =\n          moverStoreRef.current!.get(mover.id) ?? mover.partPositionMm;\n        const chainPos = userToChainPositionMm(userPos, xpu.positionFrame);\n        const pose = moverWorldAt(buildChain(part.modules), chainPos);\n        if (!pose) return null;\n        const tt =\n          trackTransformOverrides?.[xpu.objectId] ?? xpu.trackTransform ?? null;\n        const m = new Matrix4()\n          .copy(orientationMatrix(config.orientation))\n          .multiply(trackTransformMatrix(tt))\n          .multiply(partTransformationMatrix(part.partTransformation));\n        const p = new Vector3(\n          pose.positionMm[0],\n          pose.positionMm[1],\n          pose.positionMm[2],\n        ).applyMatrix4(m);\n        const yawQ = new Quaternion().setFromEuler(\n          new Euler(0, 0, (pose.yawDeg * Math.PI) / 180, 'XYZ'),\n        );\n        const localTrans = new Vector3();\n        const localQ = new Quaternion();\n        const localScale = new Vector3();\n        m.decompose(localTrans, localQ, localScale);\n        const finalQ = localQ.multiply(yawQ);\n        const e = new Euler().setFromQuaternion(finalQ, 'XYZ');\n        return {\n          positionMm: [p.x, p.y, p.z],\n          rotationDegEuler: [e.x * RAD2DEG, e.y * RAD2DEG, e.z * RAD2DEG],\n        };\n      },\n      getBoundingBox: () => {\n        const box = normalized\n          ? computeBoundingBox(normalized, trackTransformOverrides)\n          : new Box3();\n        return {\n          min: [box.min.x, box.min.y, box.min.z],\n          max: [box.max.x, box.max.y, box.max.z],\n        };\n      },\n      getConfig: () => config,\n      getRuntimeState: () => buildRuntimeState(config),\n      exportModel: (opts) => ({\n        schemaVersion: 1,\n        meta: {\n          generatedAt: new Date().toISOString(),\n          generator: `beckhoff-xts-viewer-3d@${VERSION}`,\n        },\n        config,\n        ...(opts?.includeRuntime !== false\n          ? { runtime: buildRuntimeState(config) }\n          : {}),\n      }),\n      exportScreenshot: async (opts) => {\n        const gl = glRef.current;\n        const scene = sceneRef.current;\n        if (!gl || !scene) {\n          throw new Error(\n            'exportScreenshot: renderer not ready (call after the component has mounted)',\n          );\n        }\n        const orbitTarget = orbitRef.current?.target;\n        const liveTargetMm: [number, number, number] | undefined = orbitTarget\n          ? [orbitTarget.x, orbitTarget.y, orbitTarget.z]\n          : undefined;\n        const bbox = normalized\n          ? computeBoundingBox(normalized, trackTransformOverrides)\n          : new Box3();\n        return captureScreenshot(\n          {\n            gl,\n            scene,\n            liveCamera: cameraRef.current,\n            ...(liveTargetMm ? { liveTargetMm } : {}),\n            bbox,\n          },\n          opts,\n        );\n      },\n      setMoverPosition: (moverId, partPositionMm) => {\n        moverStoreRef.current!.set(moverId, partPositionMm);\n      },\n      setMoverPositions: (update) => {\n        const store = moverStoreRef.current!;\n        if (Array.isArray(update)) {\n          // Array form: entry `i` targets the mover with `index === i`.\n          // Look up the mover by index across all XPUs to find its id, then\n          // push `{partObjectId, partPosition}` into the store.\n          if (!normalized) return;\n          const moversByIndex = new Map<number, number>();\n          for (const xpu of normalized.processingUnits) {\n            for (const m of xpu.movers) moversByIndex.set(m.index, m.id);\n          }\n          for (let i = 0; i < update.length; i++) {\n            const entry = update[i];\n            if (entry === null || entry === undefined) continue;\n            const id = moversByIndex.get(i);\n            if (id === undefined) continue;\n            store.setEntry(id, entry.partObjectId, entry.partPosition);\n          }\n        } else {\n          store.setMany(update as Record<number, number>);\n        }\n      },\n      getMoverPosition: (moverId) => {\n        const v = moverStoreRef.current!.get(moverId);\n        return v === undefined ? null : v;\n      },\n      setModuleStatuses: (statuses) => {\n        moduleStatusStoreRef.current!.setMany(statuses);\n      },\n      clearModuleStatuses: () => {\n        moduleStatusStoreRef.current!.clearAll();\n      },\n      checkMoverCollisions: (opts) => {\n        if (!normalized) return [];\n        const store = moverStoreRef.current!;\n        const results: MoverCollision[] = [];\n        for (const xpu of normalized.processingUnits) {\n          const probes: MoverProbe[] = xpu.movers.map((m) => {\n            const live = store.get(m.id);\n            return {\n              ref: {\n                processingUnitObjectId: xpu.objectId,\n                moverIndex: m.index,\n              },\n              id: m.id,\n              partOid: m.partOid,\n              moverType: xpu.moverType,\n              partPositionMm: live ?? m.partPositionMm,\n              ...(xpu.moverType === 'Custom' &&\n              xpu.customMoverLayout?.pathLengthMm !== undefined\n                ? { pathLengthMm: xpu.customMoverLayout.pathLengthMm }\n                : {}),\n            };\n          });\n          const byPart = new Map<number, MoverProbe[]>();\n          for (const p of probes) {\n            const arr = byPart.get(p.partOid);\n            if (arr) arr.push(p);\n            else byPart.set(p.partOid, [p]);\n          }\n          for (const [partOid, list] of byPart) {\n            if (list.length < 2) continue;\n            const part = xpu.parts.find((pp) => pp.globalNumber === partOid);\n            if (!part) continue;\n            const chain = buildChain(part.modules);\n            results.push(\n              ...checkSamePathCollisions(chain, partOid, list, opts),\n            );\n          }\n        }\n        // Aggregate sort so the deepest collision in the scene comes first.\n        results.sort((a, b) => b.penetrationMm - a.penetrationMm);\n        return results;\n      },\n      checkModuleCollisions: (opts) => {\n        if (!normalized) return [];\n        const xpus: ModuleCollisionXpuInput[] = [];\n        for (const xpu of normalized.processingUnits) {\n          // Override-aware effective track transform (same precedence the\n          // scene uses: imperative override wins over the config value).\n          const effective =\n            trackTransformOverrides?.[xpu.objectId] ?? xpu.trackTransform;\n          const parts: ModuleCollisionPartInput[] = [];\n          for (const part of xpu.parts) {\n            try {\n              parts.push({\n                partObjectId: part.objectId,\n                partKey: part.globalNumber,\n                ...(part.partTransformation\n                  ? { partTransformation: part.partTransformation }\n                  : {}),\n                chain: buildChain(part.modules),\n              });\n            } catch {\n              // already validated by normalizeXtsConfig — defensive.\n            }\n          }\n          xpus.push({\n            xpuObjectId: xpu.objectId,\n            ...(effective ? { trackTransform: effective } : {}),\n            parts,\n          });\n        }\n        const { probes, adjacency } = buildModuleProbes(\n          normalized.orientation,\n          xpus,\n          opts,\n        );\n        return checkModuleCollisions(probes, adjacency, opts);\n      },\n      reloadAssets: async () => {\n        // Caching lives in useGLTF's global cache; full clear is not yet\n        // wired in r3f without a per-instance handle. Stub for now.\n      },\n      };\n    },\n    [config, normalized, trackTransformOverrides],\n  );\n}\n","/**\n * MoverPositionStore — out-of-React channel for mover-position updates.\n *\n * The component's old animation contract was:\n *   1. Consumer holds positions in React state.\n *   2. State change → new config object → XtsViewer3D normalize +\n *      reconcile + per-XPU re-render → mover groups update.\n *\n * For 60-Hz updates that's 60 full reconciliations per second across\n * the entire scene tree. The store turns this into a one-line\n * imperative call that bypasses React entirely:\n *\n *   viewerRef.current.setMoverPosition(42, 1234);\n *\n * The store is read by `<XtsMover>` inside `useFrame` — Three.js\n * group transforms get mutated in place, no React render scheduled.\n *\n * Backward compat: when no entry exists for a mover.id, the\n * `<XtsMover>` falls back to the prop-driven `partPositionMm` from\n * config. So the existing config-only contract still works.\n *\n * Each entry tracks both the user-frame position AND (optionally) the\n * `partObjectId` of the part the mover is currently on. The latter is\n * populated by the array form of\n * `XtsViewer3DRef.setMoverPositions(MoverPositionEntry[])`; the\n * single-arg `set(moverId, mm)` form leaves it undefined (the mover\n * stays on its config-time part).\n */\n\nimport React from 'react';\n\nexport interface MoverPositionStoreEntry {\n  partPositionMm: number;\n  /** = PartConfig.objectId. Optional — undefined means \"stay on config part\". */\n  partObjectId?: number;\n}\n\nexport class MoverPositionStore {\n  private readonly entries = new Map<number, MoverPositionStoreEntry>();\n  /** Monotonic counter incremented on every write. Used by demand rendering\n   *  to detect activity without comparing all positions. */\n  version = 0;\n  /** Optional callback invoked after any position write. Set by the\n   *  demand-rendering hook to trigger frame invalidation. */\n  onWrite: (() => void) | null = null;\n\n  set(moverId: number, partPositionMm: number): void {\n    const existing = this.entries.get(moverId);\n    if (existing) {\n      existing.partPositionMm = partPositionMm;\n    } else {\n      this.entries.set(moverId, { partPositionMm });\n    }\n    this.version++;\n    this.onWrite?.();\n  }\n\n  setMany(record: Record<number, number>): void {\n    for (const [id, mm] of Object.entries(record)) {\n      const existing = this.entries.get(Number(id));\n      if (existing) {\n        existing.partPositionMm = mm;\n      } else {\n        this.entries.set(Number(id), { partPositionMm: mm });\n      }\n    }\n    this.version++;\n    this.onWrite?.();\n  }\n\n  /** Set both position and current part (from the array-form API). */\n  setEntry(\n    moverId: number,\n    partObjectId: number,\n    partPositionMm: number,\n  ): void {\n    const existing = this.entries.get(moverId);\n    if (existing) {\n      existing.partPositionMm = partPositionMm;\n      existing.partObjectId = partObjectId;\n    } else {\n      this.entries.set(moverId, { partPositionMm, partObjectId });\n    }\n    this.version++;\n    this.onWrite?.();\n  }\n\n  get(moverId: number): number | undefined {\n    return this.entries.get(moverId)?.partPositionMm;\n  }\n\n  getEntry(moverId: number): MoverPositionStoreEntry | undefined {\n    return this.entries.get(moverId);\n  }\n\n  getPartObjectId(moverId: number): number | undefined {\n    return this.entries.get(moverId)?.partObjectId;\n  }\n\n  has(moverId: number): boolean {\n    return this.entries.has(moverId);\n  }\n\n  clear(moverId: number): void {\n    this.entries.delete(moverId);\n  }\n\n  clearAll(): void {\n    this.entries.clear();\n  }\n}\n\n/**\n * React context the scene tree uses to find the active store. Set up\n * by `<XtsViewer3D>` so every `<XtsMover>` reads the same instance.\n */\nexport const MoverPositionStoreContext =\n  React.createContext<MoverPositionStore | null>(null);\n","/**\n * ModuleStatusStore — out-of-React channel for live module drive-status\n * updates (mirror of MoverPositionStore, but for warning/error overlays\n * on motor modules).\n *\n * The host pushes an array of `ModuleStatusEntry` values via\n * `XtsViewer3DRef.setModuleStatuses(array)`; the array is indexed by\n * `ModuleEntry.globalNumber`. Internally we store one entry per\n * globalNumber and let `<XtsModule>` subscribe via React context — the\n * store takes precedence over the config-time `ModuleEntry.status` so\n * PLC-streamed alarm data drives the visuals without forcing a re-render\n * of the whole config tree.\n *\n * Re-render trigger: status changes are infrequent compared to mover\n * positions (alarms, not motion). The store calls registered listeners\n * synchronously on each write so a single `useSyncExternalStore` per\n * module re-renders only when its own globalNumber changes.\n */\n\nimport React from 'react';\n\nexport interface ModuleStatusStoreEntry {\n  warning?: boolean;\n  error?: boolean;\n}\n\ntype Listener = () => void;\n\nexport class ModuleStatusStore {\n  private readonly entries = new Map<number, ModuleStatusStoreEntry>();\n  private readonly listeners = new Map<number, Set<Listener>>();\n\n  set(globalNumber: number, status: ModuleStatusStoreEntry | null): void {\n    if (status === null) {\n      this.entries.delete(globalNumber);\n    } else {\n      this.entries.set(globalNumber, status);\n    }\n    this.notify(globalNumber);\n  }\n\n  /**\n   * Bulk update from a sparse array. `array[i]` corresponds to module\n   * `globalNumber === i`; `undefined` / `null` entries are skipped (no\n   * change). Use `clear(globalNumber)` to explicitly clear a slot.\n   */\n  setMany(array: ReadonlyArray<ModuleStatusStoreEntry | null | undefined>): void {\n    const touched: number[] = [];\n    for (let i = 0; i < array.length; i++) {\n      const v = array[i];\n      if (v === undefined) continue;\n      if (v === null) {\n        if (this.entries.delete(i)) touched.push(i);\n      } else {\n        const prev = this.entries.get(i);\n        if (\n          !prev ||\n          prev.warning !== v.warning ||\n          prev.error !== v.error\n        ) {\n          this.entries.set(i, v);\n          touched.push(i);\n        }\n      }\n    }\n    for (const gn of touched) this.notify(gn);\n  }\n\n  get(globalNumber: number): ModuleStatusStoreEntry | undefined {\n    return this.entries.get(globalNumber);\n  }\n\n  clear(globalNumber: number): void {\n    if (this.entries.delete(globalNumber)) this.notify(globalNumber);\n  }\n\n  clearAll(): void {\n    const all = Array.from(this.entries.keys());\n    this.entries.clear();\n    for (const gn of all) this.notify(gn);\n  }\n\n  subscribe(globalNumber: number, listener: Listener): () => void {\n    let set = this.listeners.get(globalNumber);\n    if (!set) {\n      set = new Set();\n      this.listeners.set(globalNumber, set);\n    }\n    set.add(listener);\n    return () => {\n      set!.delete(listener);\n      if (set!.size === 0) this.listeners.delete(globalNumber);\n    };\n  }\n\n  private notify(globalNumber: number): void {\n    const set = this.listeners.get(globalNumber);\n    if (!set) return;\n    for (const l of set) l();\n  }\n}\n\n/**\n * React context the scene tree uses to find the active store. Set up by\n * `<XtsViewer3D>` so every `<XtsModule>` reads the same instance.\n */\nexport const ModuleStatusStoreContext =\n  React.createContext<ModuleStatusStore | null>(null);\n","/**\n * SidecarSourceContext — toggle between compiled-in sidecars and live HTTP\n * fetches.\n *\n * Default behaviour (`useBuiltins: true`) reads `BUILTIN_*_SIDECARS` from\n * `builtinSidecars.ts` synchronously — zero round-trips, calibration data\n * version-locked to the JS that consumes it. That's right for production.\n *\n * Setting `useBuiltins: false` (via the `useBuiltinSidecars` prop on\n * `<XtsViewer3D>`) makes every sidecar hook fall through to the HTTP fetch\n * against `<assetsBaseUrl>/<id>.meta.json`. That's the dev-loop mode used\n * by the playground / calibration tool: edit a JSON file in\n * `public/models/`, refresh, see the change, no bundle regeneration.\n */\n\nimport { createContext, useContext } from 'react';\n\nexport interface SidecarSourceConfig {\n  /**\n   * When true (default), the sidecar hooks return the compiled-in\n   * BUILTIN_*_SIDECARS entry without an HTTP fetch. When false, every\n   * hook always fetches from `<assetsBaseUrl>/<id>.meta.json` so live\n   * edits to those JSON files are picked up on reload.\n   */\n  useBuiltins: boolean;\n}\n\nconst DEFAULT: SidecarSourceConfig = Object.freeze({ useBuiltins: true });\n\nexport const SidecarSourceContext =\n  createContext<SidecarSourceConfig>(DEFAULT);\n\nexport function useSidecarSource(): SidecarSourceConfig {\n  return useContext(SidecarSourceContext);\n}\n","/**\n * useAutoPauseOnHidden — switches r3f to stopped frameloop while the page\n * is hidden. Saves CPU when the viewer is in a background tab.\n *\n * Respects the demand-rendering mode: when visible, restores to 'demand'\n * if demand rendering is active, otherwise 'always'.\n *\n * When `enabled = false`, no listener is attached.\n */\n\nimport { useEffect } from 'react';\nimport { useThree } from '@react-three/fiber';\n\nexport function useAutoPauseOnHidden(enabled: boolean, demandMode = false): void {\n  const setFrameloop = useThree((s) => s.setFrameloop);\n\n  useEffect(() => {\n    if (!enabled || typeof document === 'undefined') return;\n    const activeMode = demandMode ? 'demand' : 'always';\n    const handler = () => {\n      setFrameloop(document.hidden ? 'never' : activeMode);\n    };\n    handler();\n    document.addEventListener('visibilitychange', handler);\n    return () => {\n      document.removeEventListener('visibilitychange', handler);\n      setFrameloop(activeMode);\n    };\n  }, [enabled, demandMode, setFrameloop]);\n}\n","import { useEffect } from 'react';\nimport { useThree } from '@react-three/fiber';\nimport type { MoverPositionStore } from './MoverPositionStore.js';\n\n/**\n * On-demand frame invalidation for the `frameloop=\"demand\"` canvas mode.\n *\n * When enabled, frames are only rendered in response to:\n *   - OrbitControls interaction (r3f handles this automatically)\n *   - Mover position changes (via store.onWrite → invalidate)\n *   - React re-renders that touch the scene (r3f handles this)\n *\n * Wires up the MoverPositionStore's `onWrite` callback to r3f's\n * `invalidate()` so position changes outside React trigger a frame.\n */\nexport function useDemandRendering(\n  enabled: boolean,\n  moverStore: MoverPositionStore | null,\n): void {\n  const invalidate = useThree((s) => s.invalidate);\n\n  useEffect(() => {\n    if (!enabled || !moverStore) return;\n    moverStore.onWrite = invalidate;\n    return () => {\n      moverStore.onWrite = null;\n    };\n  }, [enabled, moverStore, invalidate]);\n}\n","import { useEffect } from 'react';\nimport { useThree } from '@react-three/fiber';\n\n/**\n * Disables automatic per-frame shadow map updates and only marks the\n * shadow map dirty when controls change (camera movement). Saves the\n * full shadow-pass cost on frames where only mover positions change\n * (movers are too small relative to the shadow frustum to need updates\n * every frame).\n *\n * When `enabled` is false, reverts to Three.js default auto-update.\n */\nexport function useShadowAutoUpdate(enabled: boolean): void {\n  const gl = useThree((s) => s.gl);\n  const controls = useThree((s) => s.controls) as\n    | { addEventListener?: (type: string, fn: () => void) => void; removeEventListener?: (type: string, fn: () => void) => void }\n    | null;\n\n  useEffect(() => {\n    if (!enabled) {\n      gl.shadowMap.autoUpdate = true;\n      return;\n    }\n\n    gl.shadowMap.autoUpdate = false;\n    gl.shadowMap.needsUpdate = true;\n\n    const handleChange = () => {\n      gl.shadowMap.needsUpdate = true;\n    };\n\n    controls?.addEventListener?.('change', handleChange);\n    return () => {\n      controls?.removeEventListener?.('change', handleChange);\n      gl.shadowMap.autoUpdate = true;\n    };\n  }, [enabled, gl, controls]);\n}\n","import React, { lazy, Suspense } from 'react';\nimport type { PostProcessingEffectsProps } from './PostProcessingEffects.js';\n\nconst LazyEffects = lazy(() =>\n  import('./PostProcessingEffects.js').then((m) => ({ default: m.PostProcessingEffects })),\n);\n\nexport const ScenePostProcessing: React.FC<PostProcessingEffectsProps> = (props) => {\n  if (!props.ssao && !props.bloom) return null;\n\n  return (\n    <Suspense fallback={null}>\n      <LazyEffects {...props} />\n    </Suspense>\n  );\n};\n","/**\n * Default asset manifest (UPPERCASE-hyphen filenames).\n *\n * URLs are relative to `assetsBaseUrl` (default `/models`). The viewer can\n * override entries via the `assetManifest` prop (e.g. for tests, alternative\n * skins, or to plug in user GLBs).\n *\n * Hygienic ATH modules carry per-RailSystem URLs. Standard AT/Eco modules\n * only set `Beckhoff`; the loader silently falls back to that variant when\n * `HepcoGfx` is requested but unavailable.\n *\n * `null` for `Beckhoff` marks \"prepared but not delivered\"\n * (AT2042 / AT2140) — the loader renders a placeholder AABB mesh.\n */\n\nimport type {\n  AssetManifest,\n  ModuleAssetEntry,\n  ModuleType3D,\n  MoverType3D,\n  MoverToolType3D,\n  RailSystem,\n  RailType3D,\n} from '../types.js';\n\nconst beckhoff = (filename: string): ModuleAssetEntry => ({\n  glbByRailSystem: { Beckhoff: filename },\n});\n\nconst dual = (\n  beckhoffFile: string,\n  hepcoFile: string,\n): ModuleAssetEntry => ({\n  glbByRailSystem: {\n    Beckhoff: beckhoffFile,\n    HepcoGfx: hepcoFile,\n  },\n});\n\n/** Filename mapping per ModuleType3D (relative to assetsBaseUrl). */\nexport const DEFAULT_MODULE_MANIFEST: Readonly<\n  Record<ModuleType3D, ModuleAssetEntry>\n> = Object.freeze({\n  // Standard AT\n  AT2000_0250: beckhoff('AT2000-0250.glb'),\n  AT2001_0250: beckhoff('AT2001-0250.glb'),\n  AT2002_0250: beckhoff('AT2002-0250.glb'),\n  // No standalone AT2002-0249 GLB — only the encoder-adapter variant\n  // AT2002_0249_ZX2002_0001 has a delivered STP. Render as placeholder.\n  AT2002_0249: { glbByRailSystem: { Beckhoff: null } },\n  AT2002_0249_ZX2002_0001: beckhoff('AT2002-0249-ZX2002-0001.glb'),\n  AT2000_0233: beckhoff('AT2000-0233.glb'),\n  AT2000_0249: beckhoff('AT2000-0249.glb'),\n  AT2100_0250: beckhoff('AT2100-0250.glb'),\n  AT2102_0250: beckhoff('AT2102-0250.glb'),\n  AT2020_0250: beckhoff('AT2020-0250.glb'),\n  AT2021_0250: beckhoff('AT2021-0250.glb'),\n  AT2025_0250: beckhoff('AT2025-0250.glb'),\n  AT2026_0250: beckhoff('AT2026-0250.glb'),\n  AT2040_0250: beckhoff('AT2040-0250.glb'),\n  AT2041_0250: beckhoff('AT2041-0250.glb'),\n  // Prepared but not delivered — loader renders placeholder.\n  AT2042_0250: { glbByRailSystem: { Beckhoff: null } },\n  AT2140_0250: { glbByRailSystem: { Beckhoff: null } },\n\n  // 0500/0501 are merged to 0500_180 in normalizeXtsConfig; we still expose\n  // direct asset entries because the merge can be skipped for half-clothoid\n  // visualization in debug paths.\n  AT2050_0500: beckhoff('AT2050-0500.glb'),\n  AT2050_0501: beckhoff('AT2050-0500.glb'),\n  AT2050_0500_180: beckhoff('AT2050-0500.glb'),\n\n  // Eco\n  AT2200_0500: beckhoff('AT2200-0500.glb'),\n  AT2202_0500: beckhoff('AT2202-0500.glb'),\n\n  // Hygienic ATH — Beckhoff + Hepco GFX rail variants.\n  ATH2000_0250: dual('ATH2000-0250.glb', 'ATH2000-0250-0002.glb'),\n  ATH2001_0250: dual('ATH2001-0250.glb', 'ATH2001-0250-0002.glb'),\n  ATH2002_0250: dual('ATH2002-0250.glb', 'ATH2002-0250-0002.glb'),\n  ATH2020_0250: dual('ATH2020-0250.glb', 'ATH2020-0250-0002.glb'),\n  ATH2040_0250: dual('ATH2040-0250.glb', 'ATH2040-0250-0002.glb'),\n  ATH2041_0250: dual('ATH2041-0250.glb', 'ATH2041-0250-0002.glb'),\n  ATH2042_0250: dual('ATH2042-0250.glb', 'ATH2042-0250-0002.glb'),\n  ATH2050_0500: dual('ATH2050-0500.glb', 'ATH2050-0500-0002.glb'),\n  ATH2050_0501: dual('ATH2050-0500.glb', 'ATH2050-0500-0002.glb'),\n  ATH2050_0500_180: dual('ATH2050-0500.glb', 'ATH2050-0500-0002.glb'),\n});\n\nexport const DEFAULT_MOVER_MANIFEST: Readonly<\n  Record<MoverType3D, { glbUrl: string }>\n> = Object.freeze({\n  AT9011_0050: { glbUrl: 'AT9011-0050.glb' },\n  AT9011_0070: { glbUrl: 'AT9011-0070.glb' },\n  AT9012_0050: { glbUrl: 'AT9012-0050.glb' },\n  AT9014_0055: { glbUrl: 'AT9014-0055-0550.glb' },\n  AT9014_0070: { glbUrl: 'AT9014-0070-0550.glb' },\n  ATH9011_0075: { glbUrl: 'ATH9011-0075-0550.glb' },\n  ATH9013_0075: { glbUrl: 'ATH9013-0075.glb' },\n  // Hepco GFX2 1-Track Carrier (S25). Custom remains user-supplied.\n  Hepco_GFX2_1TC_S25: { glbUrl: 'GFX2-1TC-S25.glb' },\n  Custom: { glbUrl: '' },\n});\n\nexport const DEFAULT_TOOL_MANIFEST: Readonly<\n  Record<MoverToolType3D, { glbUrl: string }>\n> = Object.freeze({\n  AT8200_1000_0100: { glbUrl: 'AT8200-1000-0100.glb' },\n  AT8200_2000_0100: { glbUrl: 'AT8200-2000-0100.glb' },\n  Custom: { glbUrl: '' },\n});\n\n/**\n * Beckhoff guiding-rail GLBs (the outer rail profile that the mover wheels\n * engage). Rendered per module when `RailSystem === 'Beckhoff'`;\n * Hepco GFX uses a different profile and is handled separately.\n */\nexport const DEFAULT_RAIL_MANIFEST: Readonly<\n  Record<RailType3D, { glbUrl: string }>\n> = Object.freeze({\n  AT9000_0249: { glbUrl: 'AT9000-0249-rail.glb' },\n  AT9000_0250: { glbUrl: 'AT9000-0250-rail.glb' },\n  AT9000_0500: { glbUrl: 'AT9000-0500-rail.glb' },\n  AT9020_1250: { glbUrl: 'AT9020-1250-rail.glb' },\n  AT9025_1466: { glbUrl: 'AT9025-1466-rail.glb' },\n  AT9040_0750: { glbUrl: 'AT9040-0750-rail.glb' },\n  AT9050_0500: { glbUrl: 'AT9050-0500-rail.glb' },\n});\n\n/**\n * ModuleType → guiding-rail mapping.\n *\n * Picks the rail GLB by curve sign + arc length:\n *   - Straights pick the matching-length AT9000 rail (0249 / 0250 / 0500).\n *   - +22.5° curves (AT2020 / AT2021) use AT9020.\n *   - −22.5° curves (AT2025 / AT2026) use AT9025.\n *   - 45° curves  (AT2040 / AT2041 / AT2042 / AT2140) use AT9040.\n *   - The 180° clothoid pair (AT2050 0500/0501 + merged 0500_180) uses\n *     AT9050, whose GLB already covers the full 500 mm path.\n *   - Hygienic ATH modules already include the rail in their module GLB\n *     and therefore map to `null` (no extra rail mesh).\n */\nexport const MODULE_GUIDING_RAIL_MAP: Readonly<\n  Partial<Record<ModuleType3D, RailType3D | null>>\n> = Object.freeze({\n  // Standard AT — Straights\n  AT2000_0250: 'AT9000_0250',\n  AT2001_0250: 'AT9000_0250',\n  AT2002_0250: 'AT9000_0250',\n  AT2002_0249: 'AT9000_0249',\n  AT2002_0249_ZX2002_0001: 'AT9000_0249',\n  AT2000_0233: 'AT9000_0250',\n  AT2000_0249: 'AT9000_0249',\n  AT2100_0250: 'AT9000_0250',\n  AT2102_0250: 'AT9000_0250',\n\n  // Standard AT — Curves (sign-specific)\n  AT2020_0250: 'AT9020_1250', // +22.5°\n  AT2021_0250: 'AT9020_1250', // +22.5°\n  AT2025_0250: 'AT9025_1466', // −22.5°\n  AT2026_0250: 'AT9025_1466', // −22.5°\n  AT2040_0250: 'AT9040_0750', // +45°\n  AT2041_0250: 'AT9040_0750', // +45°\n  AT2042_0250: 'AT9040_0750', // +45°\n  AT2140_0250: 'AT9040_0750', // +45°\n\n  // Standard AT — Free-path clothoid halves + merged 180°. AT9050 covers\n  // the full 500 mm clothoid in one GLB; the half-types map to it too so\n  // a non-normalised config still produces a rail mesh.\n  AT2050_0500: 'AT9050_0500',\n  AT2050_0501: 'AT9050_0500',\n  AT2050_0500_180: 'AT9050_0500',\n\n  // Eco\n  AT2200_0500: 'AT9000_0500',\n  AT2202_0500: 'AT9000_0500',\n\n  // Hygienic ATH — rail is part of the module GLB.\n  ATH2000_0250: null,\n  ATH2001_0250: null,\n  ATH2002_0250: null,\n  ATH2020_0250: null,\n  ATH2040_0250: null,\n  ATH2041_0250: null,\n  ATH2042_0250: null,\n  ATH2050_0500: null,\n  ATH2050_0501: null,\n  ATH2050_0500_180: null,\n});\n\n/** Resolve a module's GLB URL with manifest override + rail-system fallback. */\nexport function resolveModuleGlbUrl(\n  moduleType: ModuleType3D,\n  rail: RailSystem,\n  override?: AssetManifest['modules'],\n): string | null {\n  const entry = override?.[moduleType] ?? DEFAULT_MODULE_MANIFEST[moduleType];\n  if (!entry) return null;\n  if (rail === 'HepcoGfx' && entry.glbByRailSystem.HepcoGfx) {\n    return entry.glbByRailSystem.HepcoGfx;\n  }\n  return entry.glbByRailSystem.Beckhoff ?? null;\n}\n\nexport function resolveMoverGlbUrl(\n  moverType: MoverType3D,\n  override?: AssetManifest['movers'],\n): string {\n  const entry = override?.[moverType] ?? DEFAULT_MOVER_MANIFEST[moverType];\n  return entry?.glbUrl ?? '';\n}\n\nexport function resolveToolGlbUrl(\n  toolType: MoverToolType3D,\n  override?: AssetManifest['tools'],\n): string {\n  const entry = override?.[toolType] ?? DEFAULT_TOOL_MANIFEST[toolType];\n  return entry?.glbUrl ?? '';\n}\n\n/**\n * Pick the guiding-rail RailType for a module, or `null` if no separate\n * rail mesh should render (ATH variants, undeclared module types).\n */\nexport function resolveGuidingRailType(\n  moduleType: ModuleType3D,\n): RailType3D | null {\n  const entry = MODULE_GUIDING_RAIL_MAP[moduleType];\n  return entry ?? null;\n}\n\n/**\n * Resolve the GLB filename for a guiding-rail type, honoring user-supplied\n * manifest overrides. Returns empty string when the rail is unknown.\n */\nexport function resolveGuidingRailGlbUrl(\n  railType: RailType3D,\n  override?: AssetManifest['guidingRails'],\n): string {\n  const entry = override?.[railType] ?? DEFAULT_RAIL_MANIFEST[railType];\n  return entry?.glbUrl ?? '';\n}\n","/**\n * configureGltfLoaders — wire compression decoders onto a GLTFLoader.\n *\n * The viewer ships Meshopt-compressed geometry (EXT_meshopt_compression)\n * and KTX2/Basis-compressed textures (KHR_texture_basisu). Neither decodes\n * unless the GLTFLoader has the matching decoder attached, so this module\n * centralises that wiring for both load paths:\n *\n *   - the render hot-path via drei's `useGLTF` (see `useGltfClone.ts`), and\n *   - the public preload API (`AssetLoader`).\n *\n * Design: pure, framework-free functions so the wiring is unit-testable with\n * fake loader / renderer objects (node has no WebGL2, so KTX2 transcoding\n * itself is exercised in the browser — see docs/performance-analysis.md).\n *\n * Meshopt geometry decodes headless (no GPU needed) and is therefore always\n * attached. KTX2 transcoding needs the live `WebGLRenderer` to detect the\n * GPU's supported compressed-texture formats, so it is only attached when a\n * renderer is provided. A loader configured this way still loads plain,\n * uncompressed GLBs unchanged — attaching decoders is backward-compatible.\n */\n\nimport { KTX2Loader, MeshoptDecoder } from 'three-stdlib';\nimport type { GLTFLoader } from 'three-stdlib';\nimport type { WebGLRenderer } from 'three';\nimport { REVISION } from 'three';\n\n/**\n * Build the default KTX2 transcoder (basis) path, pinned to the three.js\n * revision this build links against. The basis transcoder is shipped inside\n * the `three` npm package under `examples/jsm/libs/basis/`, so jsDelivr\n * serves a version-matched copy without bloating our own bundle.\n */\nexport function buildTranscoderUrl(revision: string | number = REVISION): string {\n  return `https://cdn.jsdelivr.net/npm/three@0.${revision}.0/examples/jsm/libs/basis/`;\n}\n\n// Module-level override for the transcoder path (set via the public option /\n// <XtsViewer3D> prop). `null` means \"use the version-pinned default\".\nlet transcoderUrlOverride: string | null = null;\n\n/**\n * Override the KTX2 transcoder path globally. Passing `null` restores the\n * version-pinned default. Resets the cached KTX2Loader so the new path is\n * picked up on the next load.\n */\nexport function setKtx2TranscoderUrl(url: string | null): void {\n  transcoderUrlOverride = url;\n  ktx2Loader = null;\n}\n\nfunction resolveTranscoderUrl(explicit?: string): string {\n  return explicit ?? transcoderUrlOverride ?? buildTranscoderUrl();\n}\n\n// Single shared KTX2Loader. Building one per GLB would spawn redundant\n// transcoder worker pools; a singleton keeps memory + startup cost flat.\nlet ktx2Loader: KTX2Loader | null = null;\n\n/**\n * Return the shared KTX2Loader, lazily constructing it on first use.\n * Idempotent: repeated calls return the same instance (until the transcoder\n * URL is changed via `setKtx2TranscoderUrl`).\n */\nexport function getKtx2Loader(transcoderUrl?: string): KTX2Loader {\n  if (!ktx2Loader) {\n    ktx2Loader = new KTX2Loader();\n    ktx2Loader.setTranscoderPath(resolveTranscoderUrl(transcoderUrl));\n  }\n  return ktx2Loader;\n}\n\nexport interface ConfigureLoaderOptions {\n  /**\n   * The live WebGLRenderer. Required for KTX2 textures — the loader must\n   * detect which GPU-compressed formats the device supports. When omitted\n   * (SSR / node tests), only Meshopt geometry decoding is wired up.\n   */\n  gl?: WebGLRenderer | null;\n  /** Override the KTX2 transcoder (basis) path for this call. */\n  transcoderUrl?: string;\n}\n\n/**\n * Attach the Meshopt decoder (always) and, when a renderer is available, the\n * KTX2 texture loader to `loader`. Returns the same loader for chaining.\n */\nexport function configureLoader(\n  loader: GLTFLoader,\n  options: ConfigureLoaderOptions = {},\n): GLTFLoader {\n  // Mirror drei's handling: MeshoptDecoder may be exported as a factory.\n  const decoder =\n    typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder;\n  loader.setMeshoptDecoder(decoder);\n\n  if (options.gl) {\n    const ktx2 = getKtx2Loader(options.transcoderUrl);\n    ktx2.detectSupport(options.gl);\n    loader.setKTX2Loader(ktx2);\n  }\n\n  return loader;\n}\n\n/** Test-only: drop the cached KTX2Loader + transcoder override. */\nexport function resetGltfLoadersForTests(): void {\n  ktx2Loader = null;\n  transcoderUrlOverride = null;\n}\n","/**\n * AssetLoader — promise-cached GLB loader for the viewer.\n *\n * Performance strategy: exactly one GLB is loaded per module / mover type,\n * then `clone()` is called per instance. The loader is keyed by absolute URL\n * (concat of assetsBaseUrl + entry filename), and concurrent loads of the\n * same URL share a single in-flight Promise.\n *\n * Asset failure: a 404 (or any fetch error) surfaces as\n * XtsViewerErrorException(code='asset-load-failed'). The renderer is\n * expected to fall back to a wireframe-AABB placeholder.\n *\n * Concurrent-cancel: when `cancel()` is called for a URL, future awaiters\n * receive an AbortError. The cache entry is cleared so a fresh `load()`\n * triggers a new fetch.\n */\n\nimport { GLTFLoader } from 'three-stdlib';\nimport type { GLTF } from 'three-stdlib';\nimport type { WebGLRenderer } from 'three';\nimport { XtsViewerErrorException } from '../types.js';\nimport {\n  configureLoader,\n  type ConfigureLoaderOptions,\n} from './configureGltfLoaders.js';\n\ninterface CacheEntry {\n  url: string;\n  promise: Promise<GLTF>;\n  controller?: AbortController;\n}\n\nexport class AssetLoader {\n  private readonly cache = new Map<string, CacheEntry>();\n  private readonly loader = new GLTFLoader();\n\n  /**\n   * Wire compression decoders (Meshopt always; KTX2 when a renderer is\n   * supplied) onto the underlying GLTFLoader so Meshopt/KTX2-compressed GLBs\n   * parse. Safe to call repeatedly and before/after loads — it only attaches\n   * decoders and does not touch the cache. Without `gl`, only Meshopt\n   * geometry is wired (KTX2 needs the renderer for GPU-format detection).\n   */\n  configure(options: ConfigureLoaderOptions & { gl?: WebGLRenderer | null } = {}): void {\n    configureLoader(this.loader, options);\n  }\n\n  /**\n   * Load a GLB. Repeated calls for the same URL return the cached Promise.\n   * Returns the parsed GLTF object — the consumer is responsible for\n   * cloning the scene per instance.\n   */\n  load(url: string): Promise<GLTF> {\n    const existing = this.cache.get(url);\n    if (existing) return existing.promise;\n\n    const controller = new AbortController();\n    const promise = this.fetchAndParse(url, controller.signal).catch((err) => {\n      // Drop the cache entry on failure so retries can happen.\n      this.cache.delete(url);\n      throw err;\n    });\n    this.cache.set(url, { url, promise, controller });\n    return promise;\n  }\n\n  /**\n   * Pre-load multiple URLs in parallel. Resolves once all complete, even\n   * if some failed (failed entries appear as `null`).\n   */\n  async preload(urls: ReadonlyArray<string>): Promise<Array<GLTF | null>> {\n    return Promise.all(\n      urls.map((u) =>\n        this.load(u).catch(() => null),\n      ),\n    );\n  }\n\n  /** Cancel an in-flight load and remove the cache entry. */\n  cancel(url: string): void {\n    const entry = this.cache.get(url);\n    if (!entry) return;\n    entry.controller?.abort();\n    this.cache.delete(url);\n  }\n\n  /** Clear all cache entries. In-flight loads are NOT aborted. */\n  clear(): void {\n    this.cache.clear();\n  }\n\n  /** Returns true if a load is in progress / completed for this URL. */\n  has(url: string): boolean {\n    return this.cache.has(url);\n  }\n\n  private async fetchAndParse(\n    url: string,\n    signal: AbortSignal,\n  ): Promise<GLTF> {\n    let arrayBuffer: ArrayBuffer;\n    try {\n      const res = await fetch(url, { signal });\n      if (!res.ok) {\n        throw new XtsViewerErrorException(\n          'asset-load-failed',\n          `Failed to fetch GLB at \"${url}\" (status ${res.status})`,\n          { url, status: res.status },\n        );\n      }\n      arrayBuffer = await res.arrayBuffer();\n    } catch (err) {\n      if (err instanceof XtsViewerErrorException) throw err;\n      if ((err as Error)?.name === 'AbortError') {\n        throw err;\n      }\n      throw new XtsViewerErrorException(\n        'asset-load-failed',\n        `Network error while fetching GLB \"${url}\": ${(err as Error)?.message}`,\n        { url, cause: err },\n      );\n    }\n\n    return new Promise<GLTF>((resolve, reject) => {\n      try {\n        this.loader.parse(\n          arrayBuffer,\n          // resourcePath: GLB embeds bin/textures, no external resources expected\n          '',\n          (gltf) => resolve(gltf),\n          (err: unknown) =>\n            reject(\n              new XtsViewerErrorException(\n                'asset-load-failed',\n                `Failed to parse GLB \"${url}\": ${(err as Error)?.message ?? err}`,\n                { url, cause: err },\n              ),\n            ),\n        );\n      } catch (err) {\n        reject(\n          new XtsViewerErrorException(\n            'asset-load-failed',\n            `Threw while parsing GLB \"${url}\": ${(err as Error)?.message}`,\n            { url, cause: err },\n          ),\n        );\n      }\n    });\n  }\n}\n\n/** Module-level singleton for the most common case. */\nlet SHARED: AssetLoader | undefined;\nexport function getSharedAssetLoader(): AssetLoader {\n  if (!SHARED) SHARED = new AssetLoader();\n  return SHARED;\n}\n\n/** Compose a URL from a base + a filename, normalising trailing slashes. */\nexport function composeAssetUrl(baseUrl: string, filename: string): string {\n  if (!filename) return '';\n  if (/^https?:\\/\\//.test(filename) || filename.startsWith('/')) return filename;\n  const trimmed = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\n  return `${trimmed}/${filename}`;\n}\n","/**\n * <PathTube> — renders a Tube along a polyline of Vector3 samples. Used by\n * Stations / Dimensions / InfoBars.\n *\n * We use CatmullRomCurve3 to smooth the polyline before generating the\n * TubeGeometry. The tube radius is half of the configured thickness.\n */\n\nimport React, { useMemo } from 'react';\nimport {\n  CatmullRomCurve3,\n  TubeGeometry,\n  type Vector3,\n  Color,\n  DoubleSide,\n} from 'three';\n\ninterface PathTubeProps {\n  points: Vector3[];\n  thicknessMm: number;\n  color: string | number;\n  opacity?: number;\n  segmentsPerStep?: number;\n  radialSegments?: number;\n}\n\nexport const PathTube: React.FC<PathTubeProps> = ({\n  points,\n  thicknessMm,\n  color,\n  opacity = 1,\n  segmentsPerStep = 1,\n  radialSegments = 8,\n}) => {\n  const geometry = useMemo(() => {\n    if (points.length < 2) return null;\n    const curve = new CatmullRomCurve3(points, false, 'catmullrom', 0.0);\n    const segments = Math.max(8, points.length * segmentsPerStep);\n    return new TubeGeometry(curve, segments, thicknessMm / 2, radialSegments, false);\n  }, [points, thicknessMm, segmentsPerStep, radialSegments]);\n\n  const colorObj = useMemo(() => new Color(color as string), [color]);\n\n  if (!geometry) return null;\n  return (\n    <mesh geometry={geometry}>\n      <meshStandardMaterial\n        color={colorObj}\n        transparent={opacity < 1}\n        opacity={opacity}\n        side={DoubleSide}\n        roughness={0.6}\n        metalness={0.1}\n      />\n    </mesh>\n  );\n};\n","/**\n * <PathMarker> — Marker geometry placed at a path point with sensible\n * default orientation per shape.\n *\n * Centroid invariant: every shape is rendered with its CENTRE at the\n * path point (the `position` argument). This keeps stop-position\n * markers visually anchored on the path tube regardless of geometry\n * — cones and cylinders straddle the path half above / half below\n * rather than sitting on top of it.\n *\n * Shape semantics:\n *   - Diamond  : OctahedronGeometry, +X aligned with tangent\n *   - Tick     : narrow BoxGeometry across the path\n *   - Sphere   : isotropic, no orientation\n *   - Cone     : axis = world +Z, apex up, centre on path\n *   - Cube     : cube oriented along path tangent (chunkier than Tick)\n *   - Cylinder : pillar with axis = world +Z, centre on path\n *   - None     : nothing rendered\n */\n\nimport React, { useMemo } from 'react';\nimport { Quaternion, Vector3 } from 'three';\nimport type { MarkerShape } from '../../types.js';\n\ninterface PathMarkerProps {\n  position: Vector3;\n  tangent: Vector3;\n  shape: MarkerShape;\n  sizeMm: number;\n  color: string | number;\n}\n\nexport const PathMarker: React.FC<PathMarkerProps> = ({\n  position,\n  tangent,\n  shape,\n  sizeMm,\n  color,\n}) => {\n  const tangentQuat = useMemo(() => {\n    const q = new Quaternion();\n    q.setFromUnitVectors(new Vector3(1, 0, 0), tangent.clone().normalize());\n    return q;\n  }, [tangent]);\n\n  if (shape === 'None') return null;\n\n  const half = sizeMm / 2;\n\n  // Pick geometry + a per-shape lift so the marker visually sits \"on\" the\n  // path point rather than passing through it (cones/cylinders have their\n  // mass above the base).\n  switch (shape) {\n    case 'Diamond':\n      return (\n        <mesh position={position} quaternion={tangentQuat}>\n          <octahedronGeometry args={[half, 0]} />\n          <meshStandardMaterial color={color as string} />\n        </mesh>\n      );\n    case 'Tick':\n      return (\n        <mesh position={position} quaternion={tangentQuat}>\n          <boxGeometry args={[sizeMm * 0.4, sizeMm * 1.5, sizeMm * 0.6]} />\n          <meshStandardMaterial color={color as string} />\n        </mesh>\n      );\n    case 'Sphere':\n      return (\n        <mesh position={position}>\n          <sphereGeometry args={[half, 16, 12]} />\n          <meshStandardMaterial color={color as string} />\n        </mesh>\n      );\n    case 'Cube':\n      return (\n        <mesh position={position} quaternion={tangentQuat}>\n          <boxGeometry args={[sizeMm, sizeMm, sizeMm]} />\n          <meshStandardMaterial color={color as string} />\n        </mesh>\n      );\n    case 'Cone': {\n      // ConeGeometry's default axis is +Y; rotate so the apex points +Z.\n      // Centre on the path — the cone straddles the path half above /\n      // half below so the geometric centre lines up with the tube.\n      return (\n        <mesh position={position} rotation={[Math.PI / 2, 0, 0]}>\n          <coneGeometry args={[half, sizeMm, 16]} />\n          <meshStandardMaterial color={color as string} />\n        </mesh>\n      );\n    }\n    case 'Cylinder': {\n      // CylinderGeometry's default axis is +Y; rotate so it stands along\n      // world +Z (a pillar). Centred on the path for the same reason as\n      // Cone — keeps the marker symmetric around the path tube.\n      return (\n        <mesh position={position} rotation={[Math.PI / 2, 0, 0]}>\n          <cylinderGeometry\n            args={[half * 0.6, half * 0.6, sizeMm, 16]}\n          />\n          <meshStandardMaterial color={color as string} />\n        </mesh>\n      );\n    }\n    default:\n      return null;\n  }\n};\n","/**\n * <DimensionLabel> — camera-facing text used by the Dimensions overlay\n * (and re-usable elsewhere). Wraps drei's `<Billboard>` + `<Text>` so the\n * label always reads horizontally regardless of camera orbit, and is\n * placed at a small +Z offset above the dimension tick so the text and\n * the marker don't z-fight.\n */\n\nimport React from 'react';\nimport { Billboard, Text } from '@react-three/drei';\n\n/**\n * Default 3D-text font: Roboto Condensed (Latin, regular weight) served\n * from jsDelivr's @fontsource mirror. Pinned to a fixed major version so\n * the stack stays reproducible; the URL responds with a long\n * Cache-Control TTL so repeated reads come from the browser cache.\n *\n * `font` on troika-three-text expects an OTF / TTF / WOFF URL — NOT a CSS\n * font-family name. Consumers can override via `<DimensionLabel\n * fontFamily=\"https://…/whatever.woff\" />` to swap in a brand font.\n */\nexport const DEFAULT_LABEL_FONT_URL =\n  'https://cdn.jsdelivr.net/npm/@fontsource/roboto-condensed@5.2.7/files/roboto-condensed-latin-400-normal.woff' as const;\n\ninterface DimensionLabelProps {\n  positionMm: [number, number, number];\n  text: string;\n  sizeMm?: number;\n  color?: string;\n  /** Vertical lift above `positionMm` (mm). Default: sizeMm. */\n  liftMm?: number;\n  /**\n   * Font URL passed straight to troika-three-text. Defaults to\n   * `DEFAULT_LABEL_FONT_URL` (Roboto Condensed). Pass any OTF / TTF / WOFF\n   * URL to override.\n   */\n  fontFamily?: string;\n}\n\nexport const DimensionLabel: React.FC<DimensionLabelProps> = ({\n  positionMm,\n  text,\n  sizeMm = 30,\n  color = '#88AAFF',\n  liftMm,\n  fontFamily,\n}) => {\n  const lift = liftMm ?? sizeMm;\n  return (\n    <Billboard\n      position={[positionMm[0], positionMm[1], positionMm[2] + lift]}\n      follow\n      lockX={false}\n      lockY={false}\n      lockZ={false}\n    >\n      <Text\n        fontSize={sizeMm}\n        color={color}\n        anchorX=\"center\"\n        anchorY=\"middle\"\n        // Thin outline — just enough contrast against busy backgrounds\n        // (mover plates, GLB highlights) without the chunky 2D-game\n        // halo effect a thicker stroke produces. ~1.2 % of font size,\n        // softened by 50 % opacity.\n        outlineWidth={sizeMm * 0.012}\n        outlineColor=\"#000000\"\n        outlineOpacity={0.5}\n        font={fontFamily ?? DEFAULT_LABEL_FONT_URL}\n      >\n        {text}\n      </Text>\n    </Billboard>\n  );\n};\n","/**\n * <PartTransformGroup> — wraps children with a per-part 3D pose group.\n *\n * The renderer composes orientation ⊗ trackTransform ⊗ partTransformation\n * ⊗ chain. The part transform sits inside the per-XPU `<group>` (which\n * carries the trackTransform) and applies to everything anchored to the\n * part: modules, guiding rails, movers, stations, areas, dimensions,\n * info bars, stop-position ghost movers, stator heatmap.\n *\n * Used both by `<ProcessingUnitRoot>` (for modules + movers) and by the\n * per-part path overlays in `<XtsScene>`. Centralising the math here\n * keeps every component agreeing on the same transform composition.\n */\n\nimport React from 'react';\nimport type { PartTransformation } from '../../types.js';\n\nconst DEG2RAD = Math.PI / 180;\n\ninterface PartTransformGroupProps {\n  /** Per-part transform; `undefined` / `null` renders as identity. */\n  partTransformation?: PartTransformation | null;\n  /** Group name (debug aid in the Three.js scene graph). */\n  name?: string;\n  children?: React.ReactNode;\n}\n\nexport const PartTransformGroup: React.FC<PartTransformGroupProps> = ({\n  partTransformation,\n  name,\n  children,\n}) => {\n  const pos = partTransformation?.offsetMm ?? [0, 0, 0];\n  const rot = partTransformation?.rotationDegEuler ?? [0, 0, 0];\n  const visible = partTransformation?.visible !== false;\n  return (\n    <group\n      {...(name ? { name } : {})}\n      position={pos}\n      rotation={[rot[0] * DEG2RAD, rot[1] * DEG2RAD, rot[2] * DEG2RAD, 'XYZ']}\n      visible={visible}\n    >\n      {children}\n    </group>\n  );\n};\n","/**\n * <XtsStations> — Renders the configured StationConfig[].\n *\n * Per station:\n *   1) Build a polyline from start..end position along the part's path.\n *   2) Render a PathTube colored with the station color.\n *   3) Render markers at stopPositions[] — geometry chosen per-station via\n *      `StationConfig.stopMarkerShape` (falls back to the global\n *      `display.stationMarkerOptions.shape`).\n *   4) Optionally render the station description as a camera-facing\n *      billboard at the centre of the tube\n *      (`StationOptions.showStationDescription`).\n *   5) Optionally render the mm-value of each stop position next to its\n *      marker (`StationOptions.showStopPositionValues`).\n *\n * Lateral / vertical offsets (`StationOptions.lateralDisplacementMm` +\n * `displacementMm`) move the entire overlay (tube + markers + labels)\n * sideways and up/down. Mirrors the Dimensions overlay convention: each\n * sample at centerline s is rendered perpendicular to that point, so\n * displayed values stay aligned with the actual track.\n *\n * Multi-part stations: spec says iterate partOids[] and accumulate. The\n * single-part loop closure (endPos < startPos) duplicates partOid.\n */\n\nimport React, { useMemo } from 'react';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport {\n  sampleChainPoint,\n  sampleChainRange,\n} from '../../geometry/sampleChain.js';\nimport {\n  chainEndpointsForPart,\n  resolveStopPositionMm,\n  userToChainPositionMm,\n} from '../../geometry/positionFrame.js';\nimport { PathTube } from './PathTube.js';\nimport { PathMarker } from './PathMarker.js';\nimport { DimensionLabel } from './DimensionLabel.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport type {\n  DisplayOptions,\n  MarkerShape,\n  PartTransformation,\n  PositionFrame,\n  StationConfig,\n} from '../../types.js';\n\ninterface XtsStationsProps {\n  stations: StationConfig[];\n  chainsByPartOid: Map<number, BuiltChain>;\n  /**\n   * Per-part transforms keyed by `PartConfig.globalNumber`. Each station\n   * is rendered inside the transform group of its FIRST partOid so it\n   * follows the part as it moves (e.g. lift parts).\n   */\n  partTransformsByPartOid?: Map<number, PartTransformation | undefined>;\n  display?: DisplayOptions;\n  /** XPU position frame applied to start/end/stops. */\n  positionFrame?: PositionFrame;\n}\n\nconst XtsStationsImpl: React.FC<XtsStationsProps> = ({\n  stations,\n  chainsByPartOid,\n  partTransformsByPartOid,\n  display,\n  positionFrame,\n}) => {\n  const stationOpts = display?.stationOptions;\n  const thickness = stationOpts?.thicknessMm ?? 8;\n  const liftZ = stationOpts?.displacementMm ?? 60;\n  const lateralMm = stationOpts?.lateralDisplacementMm ?? 0;\n  const defaultMarkerShape: MarkerShape =\n    display?.stationMarkerOptions?.shape ?? 'Diamond';\n  const defaultMarkerSize = display?.stationMarkerOptions?.sizeMm ?? 12;\n  const showDescription = stationOpts?.showStationDescription ?? false;\n  const showStopValues = stationOpts?.showStopPositionValues ?? false;\n  const labelSize = stationOpts?.textOptions?.sizeMm ?? 30;\n  const labelColorOverride = stationOpts?.labelColorOverride;\n  const fontFamily = stationOpts?.textOptions?.fontFamily;\n\n  return (\n    <group name=\"xts-stations\">\n      {stations\n        .filter((s) => s.isEnabled)\n        .map((s) => {\n          // Anchor multi-part stations to their FIRST partOid — chain\n          // math is part-local, can't stitch across differently-\n          // transformed parts.\n          const anchorOid = s.partOids[0];\n          const partTransform =\n            anchorOid !== undefined\n              ? partTransformsByPartOid?.get(anchorOid)\n              : undefined;\n          return (\n            <PartTransformGroup\n              key={s.stationId}\n              name={`station-wrap-${s.stationId}`}\n              partTransformation={partTransform}\n            >\n              <Station\n                station={s}\n                chainsByPartOid={chainsByPartOid}\n                thickness={thickness}\n                liftZ={liftZ}\n                lateralMm={lateralMm}\n                defaultMarkerShape={defaultMarkerShape}\n                defaultMarkerSize={defaultMarkerSize}\n                showDescription={showDescription}\n                showStopValues={showStopValues}\n                labelSize={labelSize}\n                labelColorOverride={labelColorOverride}\n                fontFamily={fontFamily}\n                positionFrame={positionFrame}\n              />\n            </PartTransformGroup>\n          );\n        })}\n    </group>\n  );\n};\n\nexport const XtsStations = React.memo(XtsStationsImpl);\nXtsStations.displayName = 'XtsStations';\n\nconst Station: React.FC<{\n  station: StationConfig;\n  chainsByPartOid: Map<number, BuiltChain>;\n  thickness: number;\n  liftZ: number;\n  lateralMm: number;\n  defaultMarkerShape: MarkerShape;\n  defaultMarkerSize: number;\n  showDescription: boolean;\n  showStopValues: boolean;\n  labelSize: number;\n  labelColorOverride?: string;\n  fontFamily?: string;\n  positionFrame?: PositionFrame;\n}> = ({\n  station,\n  chainsByPartOid,\n  thickness,\n  liftZ,\n  lateralMm,\n  defaultMarkerShape,\n  defaultMarkerSize,\n  showDescription,\n  showStopValues,\n  labelSize,\n  labelColorOverride,\n  fontFamily,\n  positionFrame,\n}) => {\n  const colorHex = useMemo(\n    () => argbIntToHex(station.stationColor),\n    [station.stationColor],\n  );\n  // Label colour: explicit override beats per-station tube colour.\n  const labelColor = labelColorOverride ?? colorHex;\n  const markerShape: MarkerShape =\n    station.stopMarkerShape ?? defaultMarkerShape;\n  const markerSize = station.stopMarkerSizeMm ?? defaultMarkerSize;\n\n  // Build segments. For multi-part: each partOid contributes a polyline.\n  // start/end values come from user-frame; transform once per render\n  // through the XPU's positionFrame so the rest of the segment math\n  // stays in chain-frame.\n  const segments = useMemo(() => {\n    const parts =\n      station.partOids.length === 1 &&\n      station.endPositionOnPart < station.startPositionOnPart\n        ? [station.partOids[0]!, station.partOids[0]!]\n        : station.partOids;\n\n    const out: Array<{ chain: BuiltChain; start: number; end: number }> = [];\n    for (let i = 0; i < parts.length; i++) {\n      const chain = chainsByPartOid.get(parts[i]!);\n      if (!chain) continue;\n      const isFirst = i === 0;\n      const isLast = i === parts.length - 1;\n      // For non-first / non-last parts the segment spans the entire\n      // chain. For direction='negative' the user-frame start is at\n      // chain.trackLengthMm and the user-frame end at 0, so the segment\n      // terminates on the correct end of the chain instead of overshooting\n      // by one full part.\n      const ep = chainEndpointsForPart(chain.trackLengthMm, positionFrame);\n      const start = isFirst\n        ? userToChainPositionMm(station.startPositionOnPart, positionFrame)\n        : ep.userStartChainMm;\n      const end = isLast\n        ? userToChainPositionMm(station.endPositionOnPart, positionFrame)\n        : ep.userEndChainMm;\n      out.push({ chain, start, end });\n    }\n    return out;\n  }, [station, chainsByPartOid, positionFrame]);\n\n  // Description label sits at the midpoint of the (first) segment.\n  const descriptionAnchor = useMemo(() => {\n    if (!showDescription || segments.length === 0) return null;\n    const seg = segments[0]!;\n    const mid = (seg.start + seg.end) / 2;\n    return sampleChainPoint(seg.chain, mid, liftZ, lateralMm);\n  }, [showDescription, segments, liftZ, lateralMm]);\n\n  return (\n    <group name={`station-${station.stationId}`}>\n      {segments.map((seg, i) => {\n        const points = sampleChainRange(\n          seg.chain,\n          seg.start,\n          seg.end,\n          20,\n          liftZ,\n          lateralMm,\n        );\n        return (\n          <PathTube\n            key={i}\n            points={points}\n            thicknessMm={thickness}\n            color={colorHex}\n          />\n        );\n      })}\n\n      {/* Stop markers + optional value labels.\n       *  Stop values are interpreted via `resolveStopPositionMm` —\n       *  station-relative or track-relative depending on\n       *  `stopPositionsRelativeTo`, then through the XPU's\n       *  positionFrame. The label still shows the raw user-frame value\n       *  (so \"300 mm\" stays \"300 mm\" regardless of how the chain\n       *  internally addresses that point). */}\n      {(station.stopPositions ?? []).map((pos, i) => {\n        const chain = chainsByPartOid.get(station.partOids[0]!);\n        if (!chain) return null;\n        const chainPos = resolveStopPositionMm(pos, station, positionFrame);\n        // Sample at the SAME (lift, lateral) as the station tube so the\n        // marker sits centred on the path. The previous +4 mm Z bias\n        // left the marker hovering just above the tube.\n        const sample = sampleChainPoint(\n          chain,\n          chainPos,\n          liftZ,\n          lateralMm,\n        );\n        if (!sample) return null;\n        return (\n          <React.Fragment key={i}>\n            <PathMarker\n              position={sample.position}\n              tangent={sample.tangent}\n              shape={markerShape}\n              sizeMm={markerSize}\n              color={colorHex}\n            />\n            {showStopValues && (\n              <DimensionLabel\n                positionMm={[\n                  sample.position.x,\n                  sample.position.y,\n                  sample.position.z,\n                ]}\n                text={`${Math.round(pos)} mm`}\n                sizeMm={labelSize * 0.85}\n                color={labelColor}\n                fontFamily={fontFamily}\n                liftMm={markerSize * 0.6 + labelSize * 0.4}\n              />\n            )}\n          </React.Fragment>\n        );\n      })}\n\n      {/* Station description billboard at tube midpoint */}\n      {descriptionAnchor && station.description && (\n        <DimensionLabel\n          positionMm={[\n            descriptionAnchor.position.x,\n            descriptionAnchor.position.y,\n            descriptionAnchor.position.z,\n          ]}\n          text={station.description}\n          sizeMm={labelSize}\n          color={labelColor}\n          fontFamily={fontFamily}\n          liftMm={thickness * 1.5 + labelSize * 0.3}\n        />\n      )}\n    </group>\n  );\n};\n\n/**\n * 2D-canvas storage uses 32-bit ARGB ints. We strip alpha and emit\n * `#RRGGBB`. (Three.js MeshStandardMaterial.transparent handles opacity\n * separately so we don't need the alpha channel here.)\n */\nexport function argbIntToHex(argb: number): string {\n  const r = (argb >> 16) & 0xff;\n  const g = (argb >> 8) & 0xff;\n  const b = argb & 0xff;\n  const hex = ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');\n  return `#${hex}`;\n}\n","/**\n * <XtsAreas> — renders configured AreaConfig[].\n *\n * Areas are the stop-position-free sibling of Stations: a coloured tube\n * along [start..end] of one or more parts, with an optional description\n * billboard at the tube's midpoint. No stop markers, no per-station\n * marker overrides. Use them to mark zones (cleanroom, safety area,\n * manual access, …) that don't drive any mover behaviour.\n *\n * Geometry / placement / multi-part semantics mirror <XtsStations> 1:1 so\n * the two overlays read consistently when both are visible at once.\n */\n\nimport React, { useMemo } from 'react';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport {\n  sampleChainPoint,\n  sampleChainRange,\n} from '../../geometry/sampleChain.js';\nimport {\n  chainEndpointsForPart,\n  userToChainPositionMm,\n} from '../../geometry/positionFrame.js';\nimport { PathTube } from './PathTube.js';\nimport { DimensionLabel } from './DimensionLabel.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport type {\n  AreaConfig,\n  DisplayOptions,\n  PartTransformation,\n  PositionFrame,\n} from '../../types.js';\nimport { argbIntToHex } from './XtsStations.js';\n\ninterface XtsAreasProps {\n  areas: AreaConfig[];\n  chainsByPartOid: Map<number, BuiltChain>;\n  /** Per-part transforms keyed by `PartConfig.globalNumber`. */\n  partTransformsByPartOid?: Map<number, PartTransformation | undefined>;\n  display?: DisplayOptions;\n  /** XPU position frame applied to start / end. */\n  positionFrame?: PositionFrame;\n}\n\nconst XtsAreasImpl: React.FC<XtsAreasProps> = ({\n  areas,\n  chainsByPartOid,\n  partTransformsByPartOid,\n  display,\n  positionFrame,\n}) => {\n  const opts = display?.areaOptions;\n  const thickness = opts?.thicknessMm ?? 8;\n  const liftZ = opts?.displacementMm ?? 60;\n  const lateralMm = opts?.lateralDisplacementMm ?? 0;\n  const showDescription = opts?.showAreaDescription ?? true;\n  const labelSize = opts?.textOptions?.sizeMm ?? 30;\n  const labelColorOverride = opts?.labelColorOverride;\n  const fontFamily = opts?.textOptions?.fontFamily;\n  const opacity = opts?.opacity ?? 1;\n\n  return (\n    <group name=\"xts-areas\">\n      {areas\n        .filter((a) => a.isEnabled)\n        .map((a) => {\n          const anchorOid = a.partOids[0];\n          const partTransform =\n            anchorOid !== undefined\n              ? partTransformsByPartOid?.get(anchorOid)\n              : undefined;\n          return (\n            <PartTransformGroup\n              key={a.areaId}\n              name={`area-wrap-${a.areaId}`}\n              partTransformation={partTransform}\n            >\n              <Area\n                area={a}\n                chainsByPartOid={chainsByPartOid}\n                thickness={thickness}\n                liftZ={liftZ}\n                lateralMm={lateralMm}\n                opacity={opacity}\n                showDescription={showDescription}\n                labelSize={labelSize}\n                labelColorOverride={labelColorOverride}\n                fontFamily={fontFamily}\n                positionFrame={positionFrame}\n              />\n            </PartTransformGroup>\n          );\n        })}\n    </group>\n  );\n};\n\nexport const XtsAreas = React.memo(XtsAreasImpl);\nXtsAreas.displayName = 'XtsAreas';\n\nconst Area: React.FC<{\n  area: AreaConfig;\n  chainsByPartOid: Map<number, BuiltChain>;\n  thickness: number;\n  liftZ: number;\n  lateralMm: number;\n  opacity: number;\n  showDescription: boolean;\n  labelSize: number;\n  labelColorOverride?: string;\n  fontFamily?: string;\n  positionFrame?: PositionFrame;\n}> = ({\n  area,\n  chainsByPartOid,\n  thickness,\n  liftZ,\n  lateralMm,\n  opacity,\n  showDescription,\n  labelSize,\n  labelColorOverride,\n  fontFamily,\n  positionFrame,\n}) => {\n  const colorHex = useMemo(() => argbIntToHex(area.color), [area.color]);\n  const labelColor = labelColorOverride ?? colorHex;\n\n  // Multi-part: identical logic to <XtsStations>. With a single partOid and\n  // end<start we wrap around the track end (= closed-loop area).\n  const segments = useMemo(() => {\n    const parts =\n      area.partOids.length === 1 &&\n      area.endPositionOnPart < area.startPositionOnPart\n        ? [area.partOids[0]!, area.partOids[0]!]\n        : area.partOids;\n\n    const out: Array<{ chain: BuiltChain; start: number; end: number }> = [];\n    for (let i = 0; i < parts.length; i++) {\n      const chain = chainsByPartOid.get(parts[i]!);\n      if (!chain) continue;\n      const isFirst = i === 0;\n      const isLast = i === parts.length - 1;\n      // Same direction-aware part-spanning rule as <XtsStations>: for\n      // intermediate parts the segment covers the entire chain in the\n      // user's \"forward\" direction, so direction='negative' lands on\n      // chain-frame trackLengthMm → 0 instead of overshooting.\n      const ep = chainEndpointsForPart(chain.trackLengthMm, positionFrame);\n      const start = isFirst\n        ? userToChainPositionMm(area.startPositionOnPart, positionFrame)\n        : ep.userStartChainMm;\n      const end = isLast\n        ? userToChainPositionMm(area.endPositionOnPart, positionFrame)\n        : ep.userEndChainMm;\n      out.push({ chain, start, end });\n    }\n    return out;\n  }, [area, chainsByPartOid, positionFrame]);\n\n  const descriptionAnchor = useMemo(() => {\n    if (!showDescription || segments.length === 0) return null;\n    const seg = segments[0]!;\n    const mid = (seg.start + seg.end) / 2;\n    return sampleChainPoint(seg.chain, mid, liftZ, lateralMm);\n  }, [showDescription, segments, liftZ, lateralMm]);\n\n  return (\n    <group name={`area-${area.areaId}`}>\n      {segments.map((seg, i) => {\n        const points = sampleChainRange(\n          seg.chain,\n          seg.start,\n          seg.end,\n          20,\n          liftZ,\n          lateralMm,\n        );\n        return (\n          <PathTube\n            key={i}\n            points={points}\n            thicknessMm={thickness}\n            color={colorHex}\n            opacity={opacity}\n          />\n        );\n      })}\n\n      {descriptionAnchor && area.description && (\n        <DimensionLabel\n          positionMm={[\n            descriptionAnchor.position.x,\n            descriptionAnchor.position.y,\n            descriptionAnchor.position.z,\n          ]}\n          text={area.description}\n          sizeMm={labelSize}\n          color={labelColor}\n          fontFamily={fontFamily}\n          liftMm={thickness * 1.5 + labelSize * 0.3}\n        />\n      )}\n    </group>\n  );\n};\n","/**\n * useGltfClone — load a GLB and return a per-instance scene clone.\n *\n * Wraps `useGLTF` from `@react-three/drei` (which already handles Suspense\n * + global caching) and clones the scene so multiple `<XtsModule>`s of the\n * same type don't share mutated transforms.\n *\n * Per-clone post-processing (cheap, runs once when the GLB joins the scene):\n *   - `castShadow = receiveShadow = true` on every mesh. Three.js only\n *     runs shadow passes when the WebGLRenderer's `shadowMap.enabled` is\n *     true (controlled by `<Canvas shadows>` at the component root), so\n *     these flags cost nothing when shadows are off.\n *   - Anisotropic filtering on every texture, bumped to the renderer's\n *     hardware max (typically 16). Crisper texels at grazing camera\n *     angles — meaningful for the long aluminium-extruded module rails\n *     viewed from a 3/4 perspective. Negligible per-frame cost; pure\n *     sampler state.\n *   - `envMapIntensity` defaults to 1.0 on PBR materials so they pick up\n *     `scene.environment` (set by `<SceneEnvironment>`). Glb authors who\n *     want a different default still win — we only touch materials whose\n *     intensity matches the three.js default of 1.\n *\n * For an empty URL, returns `null` so the caller can render a placeholder.\n */\n\nimport { useMemo } from 'react';\nimport { useGLTF } from '@react-three/drei';\nimport { useThree } from '@react-three/fiber';\nimport { Mesh, Texture } from 'three';\nimport type { Material, MeshStandardMaterial, WebGLRenderer } from 'three';\nimport { clone as cloneSkeleton } from 'three/examples/jsm/utils/SkeletonUtils.js';\nimport type { GLTF, GLTFLoader } from 'three-stdlib';\nimport { configureLoader } from '../../assets/configureGltfLoaders.js';\n\n/**\n * Build the `extendLoader` callback drei's `useGLTF` runs against the\n * underlying GLTFLoader. drei already wires Draco + Meshopt; we add the KTX2\n * texture loader (needs the renderer for GPU-format detection). Exported as a\n * pure factory so the wiring can be unit-tested without rendering.\n */\nexport function makeExtendLoader(\n  gl: WebGLRenderer | null | undefined,\n): (loader: GLTFLoader) => void {\n  return (loader: GLTFLoader) => {\n    configureLoader(loader, { gl });\n  };\n}\n\nconst TEXTURE_KEYS = [\n  'map',\n  'normalMap',\n  'roughnessMap',\n  'metalnessMap',\n  'aoMap',\n  'emissiveMap',\n] as const;\n\nexport function useGltfClone(url: string): GLTF | null {\n  // Skip the entire load when no URL.\n  if (!url) {\n    return null;\n  }\n  // useGLTF caches the parsed GLTF globally. We only ever read its scene\n  // here; cloning preserves skinned meshes correctly via SkeletonUtils.\n  // `extendLoader` attaches the KTX2 texture loader so Basis-compressed\n  // textures decode; drei wires Draco + Meshopt itself.\n  const gl = useThree((s) => s.gl);\n  const gltf = useGLTF(\n    url,\n    true,\n    true,\n    makeExtendLoader(gl),\n  ) as GLTF;\n  const maxAnisotropy = gl.capabilities.getMaxAnisotropy();\n  return useMemo(() => {\n    const cloned = cloneSkeleton(gltf.scene);\n    cloned.traverse((obj) => {\n      const mesh = obj as Mesh;\n      if (!mesh.isMesh) return;\n      mesh.castShadow = true;\n      mesh.receiveShadow = true;\n      const mats = Array.isArray(mesh.material)\n        ? mesh.material\n        : mesh.material\n          ? [mesh.material]\n          : [];\n      for (const m of mats) {\n        applyMaterialPbrTuning(m, maxAnisotropy);\n      }\n    });\n    return { ...gltf, scene: cloned } as GLTF;\n  }, [gltf, maxAnisotropy]);\n}\n\nfunction applyMaterialPbrTuning(material: Material, maxAnisotropy: number): void {\n  // Bump anisotropy on every bound texture. Pure sampler state — no\n  // re-upload, no rebuild.\n  for (const key of TEXTURE_KEYS) {\n    const tex = (material as unknown as Record<string, unknown>)[key];\n    if (tex && (tex as Texture).isTexture) {\n      const t = tex as Texture;\n      if (t.anisotropy < maxAnisotropy) t.anisotropy = maxAnisotropy;\n    }\n  }\n  // PBR materials with the three.js-default envMapIntensity of 1 inherit\n  // `scene.environment` automatically; we just leave them. Authoring\n  // pipelines that exported a non-1 value win — don't override.\n  const std = material as Partial<MeshStandardMaterial>;\n  if (typeof std.envMapIntensity === 'number' && std.envMapIntensity === 0) {\n    // GLBs occasionally export envMapIntensity = 0, which mutes IBL\n    // entirely. Bump to the default so the PBR pipeline behaves.\n    std.envMapIntensity = 1;\n  }\n}\n","/**\n * SidecarLoader — fetches per-asset JSON sidecars.\n *\n * Sidecars carry origin-correction (translateMm + rotationDegEuler) plus\n * path metadata. They live next to the GLB at <baseUrl>/<id>.meta.json (or\n * <id>.tool.meta.json for mover tools).\n *\n * On 404 the loader falls back to default origin-correction `(0,0,0)` /\n * `(0,0,0)`. The renderer can still place the GLB; the calibration tool is\n * the authoritative source for sidecar values.\n */\n\nimport type {\n  ModuleType3D,\n  MoverToolType3D,\n  MoverType3D,\n  RailSystem,\n  RailType3D,\n  Vec3,\n} from '../types.js';\n\nexport interface OriginCorrection {\n  translateMm: Vec3;\n  rotationDegEuler: Vec3;\n}\n\nexport interface ModuleSidecar {\n  moduleType: ModuleType3D;\n  glbByRailSystem: {\n    Beckhoff: string | null;\n    HepcoGfx?: string | null;\n  };\n  originCorrection: OriginCorrection;\n  pathType: 'Straight' | 'Curve' | 'Free';\n  moduleLengthMm: number;\n  endAngleDeg: number;\n  freePathFile?: string;\n  approximateBoundsMm?: { min: Vec3; max: Vec3 };\n}\n\nexport interface MoverSidecar {\n  moverType: MoverType3D;\n  glb: string;\n  originCorrection: OriginCorrection;\n  magnetPlateCenterMm: Vec3;\n  pathLengthMm: number;\n}\n\nexport interface MoverToolSidecar {\n  toolType: MoverToolType3D;\n  glbUrl: string;\n  originCorrection: OriginCorrection;\n  defaultOffsetMm: Vec3;\n  approximateBoundsMm?: { min: Vec3; max: Vec3 };\n  label: string;\n}\n\n/**\n * Calibration sidecar for a guiding-rail GLB. The rail is rendered in the\n * same module-local frame as the module (i.e. under the module's\n * `startWorldPose`) with this correction applied to the GLB scene.\n */\nexport interface RailSidecar {\n  railType: RailType3D;\n  glb: string;\n  originCorrection: OriginCorrection;\n  approximateBoundsMm?: { min: Vec3; max: Vec3 };\n}\n\nexport const DEFAULT_ORIGIN_CORRECTION: OriginCorrection = Object.freeze({\n  translateMm: [0, 0, 0] as Vec3,\n  rotationDegEuler: [0, 0, 0] as Vec3,\n});\n\n/**\n * Generic sidecar fetch with promise caching + graceful fallback. Returns\n * `undefined` on 404 (caller substitutes a default), and surfaces network or\n * parse errors as `Error` (caller is expected to forward to onError).\n */\nexport class SidecarLoader {\n  private readonly cache = new Map<string, Promise<unknown>>();\n\n  fetchModule(url: string): Promise<ModuleSidecar | undefined> {\n    return this.fetchJson<ModuleSidecar>(url);\n  }\n\n  fetchMover(url: string): Promise<MoverSidecar | undefined> {\n    return this.fetchJson<MoverSidecar>(url);\n  }\n\n  fetchTool(url: string): Promise<MoverToolSidecar | undefined> {\n    return this.fetchJson<MoverToolSidecar>(url);\n  }\n\n  fetchRail(url: string): Promise<RailSidecar | undefined> {\n    return this.fetchJson<RailSidecar>(url);\n  }\n\n  clear(): void {\n    this.cache.clear();\n  }\n\n  private fetchJson<T>(url: string): Promise<T | undefined> {\n    if (!url) return Promise.resolve(undefined);\n    const cached = this.cache.get(url) as Promise<T | undefined> | undefined;\n    if (cached) return cached;\n    const promise: Promise<T | undefined> = (async () => {\n      try {\n        const res = await fetch(url);\n        if (res.status === 404) return undefined;\n        if (!res.ok) {\n          throw new Error(\n            `Sidecar \"${url}\" failed with status ${res.status}`,\n          );\n        }\n        return (await res.json()) as T;\n      } catch (err) {\n        // Network error: drop from cache so a retry can succeed.\n        this.cache.delete(url);\n        throw err;\n      }\n    })();\n    this.cache.set(url, promise);\n    return promise;\n  }\n}\n\n/**\n * Resolve the effective origin correction for a module sidecar — falls back\n * to identity when the sidecar is absent.\n */\nexport function resolveOriginCorrection(\n  sidecar: { originCorrection?: OriginCorrection } | undefined,\n): OriginCorrection {\n  return sidecar?.originCorrection ?? DEFAULT_ORIGIN_CORRECTION;\n}\n\n/** Standard sidecar filename from a base id. */\nexport function moduleSidecarFilename(moduleType: ModuleType3D): string {\n  // The merged 180° clothoid lives in a single GLB whose calibration is\n  // edited via the base half's sidecar (AT2050-0500.meta.json /\n  // ATH2050-0500.meta.json). normalizeXtsConfig replaces the halves with\n  // the merged id at render time, so route the sidecar lookup back here.\n  if (moduleType === 'AT2050_0500_180') return 'AT2050-0500.meta.json';\n  if (moduleType === 'ATH2050_0500_180') return 'ATH2050-0500.meta.json';\n  return `${moduleType.replace(/_/g, '-')}.meta.json`;\n}\n\nexport function moverSidecarFilename(moverType: MoverType3D): string {\n  return `${moverType.replace(/_/g, '-')}.meta.json`;\n}\n\nexport function toolSidecarFilename(toolType: MoverToolType3D): string {\n  return `${toolType.replace(/_/g, '-')}.tool.meta.json`;\n}\n\nexport function railSidecarFilename(railType: RailType3D): string {\n  return `${railType.replace(/_/g, '-')}.rail.meta.json`;\n}\n\n/**\n * Pure helper: pick the GLB filename for a moduleSidecar with rail-system\n * fallback. Returns null when the sidecar marks the module 'prepared but\n * not delivered'.\n */\nexport function pickGlbForRail(\n  sidecar: ModuleSidecar | undefined,\n  rail: RailSystem,\n): string | null {\n  if (!sidecar) return null;\n  if (rail === 'HepcoGfx' && sidecar.glbByRailSystem.HepcoGfx) {\n    return sidecar.glbByRailSystem.HepcoGfx;\n  }\n  return sidecar.glbByRailSystem.Beckhoff ?? null;\n}\n","/**\n * AUTO-GENERATED — do not edit by hand.\n *\n * Source: public/models/*.meta.json\n * Generator: scripts/bundle-sidecars.mjs\n *\n * Run `npm run assets:bundle-sidecars` to regenerate after editing a\n * sidecar in public/models/. Bundled sidecars ship inside the npm package\n * so the viewer renders correctly without a matching CDN mirror.\n *\n * Module count: 27\n * Mover count:  4\n * Tool count:   2\n * Rail count:   8\n */\n\nimport type {\n  ModuleSidecar,\n  MoverSidecar,\n  MoverToolSidecar,\n  RailSidecar,\n} from './SidecarLoader.js';\nimport type {\n  ModuleType3D,\n  MoverToolType3D,\n  MoverType3D,\n  RailType3D,\n} from '../types.js';\n\n/**\n * Built-in module sidecars. Generated from public/models/*.meta.json.\n * Identity-corrected entries are intentionally retained so the lookup\n * still resolves to a sidecar object (consumers can rely on truthy\n * results without a 404 fallback dance).\n */\nexport const BUILTIN_MODULE_SIDECARS: Readonly<\n  Partial<Record<ModuleType3D, ModuleSidecar>>\n> = Object.freeze({\n  \"AT2000_0233\": {\n    \"moduleType\": \"AT2000_0233\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2000-0233.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        233,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 233,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.550000000000015,\n        -96,\n        -13.5000000000001\n      ],\n      \"max\": [\n        17.549999999999915,\n        1.18329135783152e-29,\n        233.3\n      ]\n    }\n  },\n  \"AT2000_0249\": {\n    \"moduleType\": \"AT2000_0249\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2000-0249.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        249,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 249,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.550000000000015,\n        -96,\n        0\n      ],\n      \"max\": [\n        17.549999999999915,\n        0,\n        249\n      ]\n    }\n  },\n  \"AT2000_0250\": {\n    \"moduleType\": \"AT2000_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2000-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        250,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.550000000000015,\n        -96,\n        -13.5000000000001\n      ],\n      \"max\": [\n        17.549999999999915,\n        0,\n        250\n      ]\n    }\n  },\n  \"AT2001_0250\": {\n    \"moduleType\": \"AT2001_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2001-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        250,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.550000000000015,\n        -122.35567697317887,\n        0\n      ],\n      \"max\": [\n        17.549999999999915,\n        0,\n        250\n      ]\n    }\n  },\n  \"AT2002_0249_ZX2002_0001\": {\n    \"moduleType\": \"AT2002_0249_ZX2002_0001\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2002-0249-ZX2002-0001.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        249,\n        19.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 249,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -55.47512492230701,\n        -140.43398400853,\n        0\n      ],\n      \"max\": [\n        19.0498750776926,\n        0,\n        249\n      ]\n    }\n  },\n  \"AT2002_0250\": {\n    \"moduleType\": \"AT2002_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2002-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        346,\n        -76.5,\n        -34\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        180,\n        90\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -53.1496800886791,\n        -346,\n        -95.9999999999999\n      ],\n      \"max\": [\n        21.375319911320506,\n        -95.9999999999999,\n        44.4339840085297\n      ]\n    }\n  },\n  \"AT2020_0250\": {\n    \"moduleType\": \"AT2020_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2020-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -636.6198,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 22.5,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -8.5265128291212e-13,\n        517.945133211544,\n        -22.55\n      ],\n      \"max\": [\n        251.27750824841,\n        656.619772367581,\n        17.55\n      ]\n    }\n  },\n  \"AT2021_0250\": {\n    \"moduleType\": \"AT2021_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2021-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -636.6198,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 22.5,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -8.5265128291212e-13,\n        496.745254405928,\n        -22.55\n      ],\n      \"max\": [\n        251.27750824841,\n        656.619772367581,\n        17.55\n      ]\n    }\n  },\n  \"AT2025_0250\": {\n    \"moduleType\": \"AT2025_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2025-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        636.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        180,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": -22.5,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -1.77635683940025e-13,\n        569.682387032176,\n        -17.55\n      ],\n      \"max\": [\n        281.802589752422,\n        712.61977236758,\n        22.55\n      ]\n    }\n  },\n  \"AT2026_0250\": {\n    \"moduleType\": \"AT2026_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2026-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        636.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        180,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": -22.5,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -1.77635683940025e-13,\n        569.682387032176,\n        -18.7\n      ],\n      \"max\": [\n        272.707780460855,\n        712.61977236758,\n        23.7\n      ]\n    }\n  },\n  \"AT2040_0250\": {\n    \"moduleType\": \"AT2040_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2040-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -318.3099,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 45,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -3.19744231092045e-13,\n        168.03356351737,\n        -22.55\n      ],\n      \"max\": [\n        239.221214663007,\n        338.309886183791,\n        17.55\n      ]\n    }\n  },\n  \"AT2041_0250\": {\n    \"moduleType\": \"AT2041_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2041-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -318.3099,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 45,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -3.19744231092045e-13,\n        160.255535677803,\n        -22.55\n      ],\n      \"max\": [\n        239.221214663007,\n        338.309886183791,\n        17.55\n      ]\n    }\n  },\n  \"AT2050_0500\": {\n    \"moduleType\": \"AT2050_0500\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2050-0500.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -133,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        180\n      ]\n    },\n    \"pathType\": \"Free\",\n    \"moduleLengthMm\": 500,\n    \"endAngleDeg\": 90,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.55,\n        -153.35062038607114,\n        -13.6\n      ],\n      \"max\": [\n        17.55,\n        153.35,\n        194.4\n      ]\n    }\n  },\n  \"AT2050_0500_180\": {\n    \"moduleType\": \"AT2050_0500_180\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2050-0500.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -133,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        180\n      ]\n    },\n    \"pathType\": \"Free\",\n    \"moduleLengthMm\": 500,\n    \"endAngleDeg\": 90,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.55,\n        -153.35062038607114,\n        -13.6\n      ],\n      \"max\": [\n        17.55,\n        153.35,\n        194.4\n      ]\n    }\n  },\n  \"AT2100_0250\": {\n    \"moduleType\": \"AT2100_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2100-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        250,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.550000000000015,\n        -96,\n        -13.5000000000001\n      ],\n      \"max\": [\n        29.1499999999999,\n        0,\n        250\n      ]\n    }\n  },\n  \"AT2102_0250\": {\n    \"moduleType\": \"AT2102_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2102-0250.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        250,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -55.47512492230701,\n        -140.43398400853,\n        0\n      ],\n      \"max\": [\n        29.15,\n        0,\n        250\n      ]\n    }\n  },\n  \"AT2200_0500\": {\n    \"moduleType\": \"AT2200_0500\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2200-0500.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        500,\n        19.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 500,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -22.550000000000015,\n        -96,\n        -13.5000000000001\n      ],\n      \"max\": [\n        17.549999999999915,\n        0,\n        500\n      ]\n    }\n  },\n  \"AT2202_0500\": {\n    \"moduleType\": \"AT2202_0500\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"AT2202-0500.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        500,\n        19.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 500,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -55.578940058985644,\n        -140.254,\n        0\n      ],\n      \"max\": [\n        18.9499999999756,\n        0,\n        500\n      ]\n    }\n  },\n  \"ATH2000_0250\": {\n    \"moduleType\": \"ATH2000_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2000-0250.glb\",\n      \"HepcoGfx\": \"ATH2000-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        125,\n        -72,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -162.5,\n        -27.5,\n        -1.11022302462516e-15\n      ],\n      \"max\": [\n        125,\n        17,\n        96\n      ]\n    }\n  },\n  \"ATH2001_0250\": {\n    \"moduleType\": \"ATH2001_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2001-0250.glb\",\n      \"HepcoGfx\": \"ATH2001-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        125,\n        -72,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -162.5,\n        -177,\n        -1.11022302462516e-15\n      ],\n      \"max\": [\n        125,\n        17,\n        96\n      ]\n    }\n  },\n  \"ATH2002_0250\": {\n    \"moduleType\": \"ATH2002_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2002-0250.glb\",\n      \"HepcoGfx\": \"ATH2002-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        125,\n        -72,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        0\n      ]\n    },\n    \"pathType\": \"Straight\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 0,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -162.5,\n        -64,\n        -113.1356458286208\n      ],\n      \"max\": [\n        125,\n        17,\n        96\n      ]\n    }\n  },\n  \"ATH2020_0250\": {\n    \"moduleType\": \"ATH2020_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2020-0250.glb\",\n      \"HepcoGfx\": \"ATH2020-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -636.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        -90\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 22.5,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -17,\n        -37.5,\n        521.64065134159\n      ],\n      \"max\": [\n        27.5,\n        252.80824197787,\n        660.619772367582\n      ]\n    }\n  },\n  \"ATH2040_0250\": {\n    \"moduleType\": \"ATH2040_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2040-0250.glb\",\n      \"HepcoGfx\": \"ATH2040-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -318.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        -90\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 45,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -17,\n        -37.5000000000001,\n        174.167390793845\n      ],\n      \"max\": [\n        27.5,\n        242.049641787754,\n        342.309886183791\n      ]\n    }\n  },\n  \"ATH2041_0250\": {\n    \"moduleType\": \"ATH2041_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2041-0250.glb\",\n      \"HepcoGfx\": \"ATH2041-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -318.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        -90\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 45,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -17,\n        -37.5000000000001,\n        174.167390793845\n      ],\n      \"max\": [\n        177,\n        242.049641787754,\n        342.309886183791\n      ]\n    }\n  },\n  \"ATH2042_0250\": {\n    \"moduleType\": \"ATH2042_0250\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2042-0250.glb\",\n      \"HepcoGfx\": \"ATH2042-0250-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -318.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        -90\n      ]\n    },\n    \"pathType\": \"Curve\",\n    \"moduleLengthMm\": 250,\n    \"endAngleDeg\": 45,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -17,\n        -37.5000000000001,\n        133.1742403551702\n      ],\n      \"max\": [\n        64,\n        242.049641787754,\n        342.309886183791\n      ]\n    }\n  },\n  \"ATH2050_0500\": {\n    \"moduleType\": \"ATH2050_0500\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2050-0500.glb\",\n      \"HepcoGfx\": \"ATH2050-0500-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -133.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        180,\n        90\n      ]\n    },\n    \"pathType\": \"Free\",\n    \"moduleLengthMm\": 500,\n    \"endAngleDeg\": 90,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -157.350063377838,\n        -37.6000000000002,\n        -27.500000000000004\n      ],\n      \"max\": [\n        157.350063377838,\n        198.10008108029504,\n        22.500000000000014\n      ]\n    }\n  },\n  \"ATH2050_0500_180\": {\n    \"moduleType\": \"ATH2050_0500_180\",\n    \"glbByRailSystem\": {\n      \"Beckhoff\": \"ATH2050-0500.glb\",\n      \"HepcoGfx\": \"ATH2050-0500-0002.glb\"\n    },\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -133.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        180,\n        90\n      ]\n    },\n    \"pathType\": \"Free\",\n    \"moduleLengthMm\": 500,\n    \"endAngleDeg\": 90,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -157.350063377838,\n        -37.6000000000002,\n        -27.500000000000004\n      ],\n      \"max\": [\n        157.350063377838,\n        198.10008108029504,\n        22.500000000000014\n      ]\n    }\n  }\n} as Partial<\n  Record<ModuleType3D, ModuleSidecar>\n>);\n\n/** Built-in mover sidecars. Generated from public/models/*.meta.json. */\nexport const BUILTIN_MOVER_SIDECARS: Readonly<\n  Partial<Record<MoverType3D, MoverSidecar>>\n> = Object.freeze({\n  \"AT9014_0055\": {\n    \"moverType\": \"AT9014_0055\",\n    \"glb\": \"AT9014-0055-0550.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        38.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        0\n      ]\n    },\n    \"magnetPlateCenterMm\": [\n      0,\n      0,\n      0\n    ],\n    \"pathLengthMm\": 55,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -35.0000000000003,\n        -93.35,\n        -27.5\n      ],\n      \"max\": [\n        35,\n        31.5,\n        27.5\n      ]\n    }\n  },\n  \"AT9014_0070\": {\n    \"moverType\": \"AT9014_0070\",\n    \"glb\": \"AT9014-0070-0550.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        41,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        0\n      ]\n    },\n    \"magnetPlateCenterMm\": [\n      0,\n      0,\n      0\n    ],\n    \"pathLengthMm\": 70,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -37.0000000000002,\n        -93.3499999999993,\n        -35.00000000000011\n      ],\n      \"max\": [\n        37.0000000000002,\n        32.5000000000003,\n        35.00000000000032\n      ]\n    }\n  },\n  \"ATH9011_0075\": {\n    \"moverType\": \"ATH9011_0075\",\n    \"glb\": \"ATH9011-0075-0550.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        49.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        -90,\n        0\n      ]\n    },\n    \"magnetPlateCenterMm\": [\n      0,\n      0,\n      0\n    ],\n    \"pathLengthMm\": 75,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -46,\n        -70.45,\n        -37.48754345581859\n      ],\n      \"max\": [\n        46,\n        41.2,\n        37.48754345581859\n      ]\n    }\n  },\n  \"Hepco_GFX2_1TC_S25\": {\n    \"moverType\": \"Hepco_GFX2_1TC_S25\",\n    \"glb\": \"GFX2-1TC-S25.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        40,\n        30\n      ],\n      \"rotationDegEuler\": [\n        -90,\n        0,\n        0\n      ]\n    },\n    \"magnetPlateCenterMm\": [\n      0,\n      0,\n      0\n    ],\n    \"pathLengthMm\": 100,\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -41.6,\n        0,\n        -106.44\n      ],\n      \"max\": [\n        41.6,\n        85.5,\n        0\n      ]\n    }\n  }\n} as Partial<\n  Record<MoverType3D, MoverSidecar>\n>);\n\n/** Built-in tool sidecars. Generated from public/models/*.tool.meta.json. */\nexport const BUILTIN_TOOL_SIDECARS: Readonly<\n  Partial<Record<MoverToolType3D, MoverToolSidecar>>\n> = Object.freeze({\n  \"AT8200_1000_0100\": {\n    \"toolType\": \"AT8200_1000_0100\",\n    \"glbUrl\": \"AT8200-1000-0100.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        0,\n        20\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        90\n      ]\n    },\n    \"defaultOffsetMm\": [\n      0,\n      0,\n      30\n    ],\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -85.1,\n        -31.85,\n        -23.000000000000004\n      ],\n      \"max\": [\n        66.2,\n        30.15000000000001,\n        19.5499999999999\n      ]\n    },\n    \"label\": \"AT8200-1000-0100\"\n  },\n  \"AT8200_2000_0100\": {\n    \"toolType\": \"AT8200_2000_0100\",\n    \"glbUrl\": \"AT8200-2000-0100.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        0,\n        20\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        90\n      ]\n    },\n    \"defaultOffsetMm\": [\n      0,\n      0,\n      30\n    ],\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -97.1,\n        -34.50000000000002,\n        -4.800000000000022\n      ],\n      \"max\": [\n        21,\n        34.5,\n        36.85\n      ]\n    },\n    \"label\": \"AT8200-2000-0100\"\n  }\n} as Partial<\n  Record<MoverToolType3D, MoverToolSidecar>\n>);\n\n/** Built-in rail sidecars. Generated from public/models/*.rail.meta.json. */\nexport const BUILTIN_RAIL_SIDECARS: Readonly<\n  Partial<Record<RailType3D, RailSidecar>>\n> = Object.freeze({\n  \"AT9000_0249\": {\n    \"railType\": \"AT9000_0249\",\n    \"glb\": \"AT9000-0249-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        -25.5,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        0\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -11.1,\n        0,\n        0\n      ],\n      \"max\": [\n        11.1,\n        39,\n        274.5\n      ]\n    }\n  },\n  \"AT9000_0250\": {\n    \"railType\": \"AT9000_0250\",\n    \"glb\": \"AT9000-0250-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        -26,\n        20,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        0\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -11.1,\n        0,\n        0\n      ],\n      \"max\": [\n        11.1,\n        39,\n        276.1\n      ]\n    }\n  },\n  \"AT9000_0500\": {\n    \"railType\": \"AT9000_0500\",\n    \"glb\": \"AT9000-0500-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        -26,\n        19.5,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        90,\n        0\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -11.1,\n        0,\n        0\n      ],\n      \"max\": [\n        11.1,\n        39,\n        526.1\n      ]\n    }\n  },\n  \"AT9020_1250\": {\n    \"railType\": \"AT9020_1250\",\n    \"glb\": \"AT9020-1250-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        560,\n        -559.5,\n        27\n      ],\n      \"rotationDegEuler\": [\n        180,\n        0,\n        90\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -618.58,\n        -135.7,\n        15.96\n      ],\n      \"max\": [\n        324.44,\n        588.62,\n        38.16\n      ]\n    }\n  },\n  \"AT9025_1466\": {\n    \"railType\": \"AT9025_1466\",\n    \"glb\": \"AT9025-1466-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        0,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -624.05,\n        -246.57,\n        86.39\n      ],\n      \"max\": [\n        223.27,\n        632.05,\n        108.59\n      ]\n    }\n  },\n  \"AT9040_0750\": {\n    \"railType\": \"AT9040_0750\",\n    \"glb\": \"AT9040-0750-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        0,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -377.31,\n        -19.5,\n        -14.6\n      ],\n      \"max\": [\n        247.4,\n        386.51,\n        7.6\n      ]\n    }\n  },\n  \"AT9050_0500\": {\n    \"railType\": \"AT9050_0500\",\n    \"glb\": \"AT9050-0500-rail.glb\",\n    \"originCorrection\": {\n      \"translateMm\": [\n        0,\n        -133,\n        0\n      ],\n      \"rotationDegEuler\": [\n        0,\n        0,\n        0\n      ]\n    },\n    \"approximateBoundsMm\": {\n      \"min\": [\n        -28.8,\n        -192.35,\n        -11.1\n      ],\n      \"max\": [\n        234.3,\n        192.35,\n        11.1\n      ]\n    }\n  },\n  \"HepcoGfx\": {\n    \"railType\": \"HepcoGfx\",\n    \"kind\": \"procedural-rail-profile\",\n    \"profile\": {\n      \"baseplateWidthMm\": 134.45,\n      \"baseplateThicknessMm\": 30,\n      \"baseplateTopZMm\": -45,\n      \"railWidthMm\": 44,\n      \"railHeightMm\": 15,\n      \"railTopZMm\": -30,\n      \"spearProtrusionMm\": 5,\n      \"spearBaseHalfHeightMm\": 4,\n      \"undercutInsetMm\": 3,\n      \"stackYOffsetMm\": -13,\n      \"stackZOffsetMm\": -9\n    }\n  }\n} as Partial<\n  Record<RailType3D, RailSidecar>\n>);\n","/**\n * useMoverSidecar — same shape as useModuleSidecar but for movers.\n *\n * Lookup order: built-in compiled sidecar → HTTP fetch → identity. See the\n * useModuleSidecar comment for the rationale.\n */\n\nimport { useEffect, useState } from 'react';\nimport {\n  SidecarLoader,\n  type MoverSidecar,\n  type OriginCorrection,\n  DEFAULT_ORIGIN_CORRECTION,\n  moverSidecarFilename,\n} from '../../assets/SidecarLoader.js';\nimport { BUILTIN_MOVER_SIDECARS } from '../../assets/builtinSidecars.js';\nimport { useSidecarSource } from '../../assets/SidecarSourceContext.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport type { MoverType3D } from '../../types.js';\n\nconst SHARED = new SidecarLoader();\n\nexport function useMoverSidecar(\n  moverType: MoverType3D,\n  assetsBaseUrl: string,\n): { sidecar: MoverSidecar | undefined; correction: OriginCorrection } {\n  const { useBuiltins } = useSidecarSource();\n  const builtin =\n    moverType === 'Custom' || !useBuiltins\n      ? undefined\n      : BUILTIN_MOVER_SIDECARS[moverType];\n  const [sidecar, setSidecar] = useState<MoverSidecar | undefined>(builtin);\n\n  useEffect(() => {\n    if (moverType === 'Custom') {\n      // Custom movers carry their layout via XPU.customMoverLayout; no\n      // sidecar lookup makes sense.\n      setSidecar(undefined);\n      return;\n    }\n    if (builtin) {\n      setSidecar(builtin);\n      return;\n    }\n    let alive = true;\n    const url = composeAssetUrl(\n      assetsBaseUrl,\n      moverSidecarFilename(moverType),\n    );\n    SHARED.fetchMover(url)\n      .then((s) => {\n        if (alive) setSidecar(s);\n      })\n      .catch(() => {\n        if (alive) setSidecar(undefined);\n      });\n    return () => {\n      alive = false;\n    };\n  }, [moverType, assetsBaseUrl, builtin]);\n\n  return {\n    sidecar,\n    correction: sidecar?.originCorrection ?? DEFAULT_ORIGIN_CORRECTION,\n  };\n}\n","/**\n * <XtsStaticMover> — non-interactive ghost mover at a fixed\n * `partPositionMm` along a chain.\n *\n * Used by `<XtsStopPositionMovers>` to visualise station stop targets\n * without contaminating the runtime model: these ghosts never appear\n * in `MoverConfig[]`, never participate in collision detection, never\n * fire selection / hover events, and never read from the\n * `MoverPositionStore`. They're pure geometry pinned at a static pose.\n *\n * Materials are cloned on mount so the per-instance `opacity` /\n * `emissive` mutation doesn't bleed into other movers sharing the same\n * GLB cache entry. Disposed + restored on unmount.\n */\n\nimport React, { Suspense, useEffect } from 'react';\nimport { Color, Mesh } from 'three';\nimport type { Material, MeshStandardMaterial } from 'three';\nimport type { GLTF } from 'three-stdlib';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport { moverWorldAt } from '../../geometry/ChainBuilder.js';\nimport { useGltfClone } from './useGltfClone.js';\nimport { useMoverSidecar } from './useMoverSidecar.js';\nimport {\n  DEFAULT_ORIGIN_CORRECTION,\n  type OriginCorrection,\n} from '../../assets/SidecarLoader.js';\nimport type { MoverType3D } from '../../types.js';\n\nconst DEG2RAD = Math.PI / 180;\n\ninterface XtsStaticMoverProps {\n  chain: BuiltChain;\n  partPositionMm: number;\n  glbUrl: string;\n  moverType?: MoverType3D;\n  assetsBaseUrl?: string;\n  /** When set, overrides the fetched sidecar's correction. */\n  originCorrection?: OriginCorrection;\n  /** Material opacity applied to the cloned GLB. Default 0.45. */\n  opacity?: number;\n  /**\n   * Emissive tint hex (e.g. `'#38a355'`). When set, every standard\n   * material in the GLB picks up the colour as a soft glow at intensity\n   * 0.35 — useful to colour-code ghosts by their station.\n   */\n  tintColor?: string;\n  /** Fallback wireframe size when the GLB hasn't loaded. */\n  pathLengthMm?: number;\n  heightMm?: number;\n}\n\nconst XtsStaticMoverContent: React.FC<XtsStaticMoverProps> = ({\n  chain,\n  partPositionMm,\n  glbUrl,\n  moverType = 'AT9014_0055',\n  assetsBaseUrl = '/models',\n  originCorrection,\n  opacity = 0.45,\n  tintColor,\n  pathLengthMm = 70,\n  heightMm = 125,\n}) => {\n  const sidecar = useMoverSidecar(moverType, assetsBaseUrl);\n  const correction =\n    originCorrection ?? sidecar.correction ?? DEFAULT_ORIGIN_CORRECTION;\n  const gltf = useGltfClone(glbUrl ?? '');\n\n  // Clone-on-write: mutate copies of every material so the ghost\n  // opacity / tint never leaks into normal mover instances rendered\n  // from the same cache entry.\n  useEffect(() => {\n    if (!gltf) return;\n    type Swap = {\n      mesh: Mesh;\n      original: Material | Material[];\n      cloned: Material | Material[];\n    };\n    const swaps: Swap[] = [];\n    const tint = tintColor ? new Color(tintColor) : null;\n    const cloneOne = (m: Material): Material => {\n      const c = m.clone();\n      c.transparent = opacity < 1;\n      c.opacity = opacity;\n      c.depthWrite = opacity >= 0.99;\n      if (tint && 'emissive' in c) {\n        const std = c as MeshStandardMaterial;\n        std.emissive.copy(tint);\n        std.emissiveIntensity = 0.35;\n      }\n      return c;\n    };\n    gltf.scene.traverse((obj) => {\n      const mesh = obj as Mesh;\n      if (!mesh.isMesh || !mesh.material) return;\n      const next: Material | Material[] = Array.isArray(mesh.material)\n        ? mesh.material.map(cloneOne)\n        : cloneOne(mesh.material);\n      swaps.push({ mesh, original: mesh.material, cloned: next });\n      mesh.material = next;\n    });\n    return () => {\n      for (const { mesh, original, cloned } of swaps) {\n        mesh.material = original;\n        if (Array.isArray(cloned)) cloned.forEach((m) => m.dispose());\n        else cloned.dispose();\n      }\n    };\n  }, [gltf, opacity, tintColor]);\n\n  const pose = moverWorldAt(chain, partPositionMm);\n  if (!pose) return null;\n\n  return (\n    <group\n      position={pose.positionMm}\n      rotation={[0, 0, (pose.yawDeg * Math.PI) / 180]}\n      // Block raycasts so ghosts can't be selected / hovered. Raycast\n      // override is the cleanest opt-out — pointer-events on the GLB\n      // children would still bubble up.\n      raycast={() => null}\n    >\n      {!glbUrl || !gltf ? (\n        <mesh position={[0, 0, 50]}>\n          <boxGeometry args={[pathLengthMm, 50, heightMm]} />\n          <meshBasicMaterial\n            color=\"#3D88E0\"\n            wireframe\n            transparent\n            opacity={opacity}\n          />\n        </mesh>\n      ) : (\n        <group\n          position={correction.translateMm}\n          rotation={[\n            correction.rotationDegEuler[0] * DEG2RAD,\n            correction.rotationDegEuler[1] * DEG2RAD,\n            correction.rotationDegEuler[2] * DEG2RAD,\n            'XYZ',\n          ]}\n        >\n          <primitive object={(gltf as GLTF).scene} />\n        </group>\n      )}\n    </group>\n  );\n};\n\nexport const XtsStaticMover: React.FC<XtsStaticMoverProps> = (props) => (\n  <Suspense fallback={null}>\n    <XtsStaticMoverContent {...props} />\n  </Suspense>\n);\n","/**\n * <XtsStopPositionMovers> — render a static ghost mover at every stop\n * position of every enabled station belonging to the active XPU.\n *\n * Toggled by `display.showStopPositionMovers`. Visual options come from\n * `display.stopPositionMoverOptions`. Ghosts use the XPU's `moverType`\n * for their GLB and tint to the station colour by default.\n *\n * Architecture:\n *   - Mounted per-XPU inside `<XtsScene>`, mirroring `<XtsStations>`.\n *   - Each ghost is a fully decoupled `<XtsStaticMover>` — independent\n *     GLB instance, no useFrame, no MoverPositionStore subscription, no\n *     selection / hover / collision participation.\n */\n\nimport React from 'react';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport { resolveStopPositionMm } from '../../geometry/positionFrame.js';\nimport { argbIntToHex } from './XtsStations.js';\nimport { XtsStaticMover } from './XtsStaticMover.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport type {\n  MoverType3D,\n  PartTransformation,\n  PositionFrame,\n  StationConfig,\n  StopPositionMoverOptions,\n} from '../../types.js';\n\ninterface Props {\n  stations: StationConfig[];\n  chainsByPartOid: Map<number, BuiltChain>;\n  /** Per-part transforms keyed by `PartConfig.globalNumber`. */\n  partTransformsByPartOid?: Map<number, PartTransformation | undefined>;\n  moverType: MoverType3D;\n  glbUrl: string;\n  assetsBaseUrl: string;\n  options?: StopPositionMoverOptions;\n  /** XPU position frame applied to each stop position. */\n  positionFrame?: PositionFrame;\n}\n\nconst XtsStopPositionMoversImpl: React.FC<Props> = ({\n  stations,\n  chainsByPartOid,\n  partTransformsByPartOid,\n  moverType,\n  glbUrl,\n  assetsBaseUrl,\n  options,\n  positionFrame,\n}) => {\n  const opacity = options?.opacity ?? 0.45;\n  const tintByStation = options?.tintByStation !== false;\n\n  return (\n    <group name=\"xts-stop-position-movers\">\n      {stations\n        .filter((s) => s.isEnabled)\n        .flatMap((station) =>\n          (station.stopPositions ?? []).map((stopMm, i) => {\n            // Stop positions reference the FIRST partOid in the\n            // station — same convention as the stop-marker rendering\n            // in <XtsStations>. Multi-part stations dropping stops\n            // mid-way is out of scope for the v1 ghost overlay.\n            const partOid = station.partOids[0];\n            if (partOid === undefined) return null;\n            const chain = chainsByPartOid.get(partOid);\n            if (!chain) return null;\n            const tint = tintByStation\n              ? argbIntToHex(station.stationColor)\n              : undefined;\n            // Honour `stopPositionsRelativeTo` + the XPU positionFrame\n            // so ghosts always land on the same chain spot as the\n            // diamond / cone markers rendered by <XtsStations>.\n            const chainPos = resolveStopPositionMm(\n              stopMm,\n              station,\n              positionFrame,\n            );\n            return (\n              <PartTransformGroup\n                key={`s${station.stationId}-${i}`}\n                name={`stop-mover-wrap-${station.stationId}-${i}`}\n                partTransformation={partTransformsByPartOid?.get(partOid)}\n              >\n                <XtsStaticMover\n                  chain={chain}\n                  partPositionMm={chainPos}\n                  glbUrl={glbUrl}\n                  moverType={moverType}\n                  assetsBaseUrl={assetsBaseUrl}\n                  opacity={opacity}\n                  {...(tint ? { tintColor: tint } : {})}\n                />\n              </PartTransformGroup>\n            );\n          }),\n        )}\n    </group>\n  );\n};\n\nexport const XtsStopPositionMovers = React.memo(XtsStopPositionMoversImpl);\nXtsStopPositionMovers.displayName = 'XtsStopPositionMovers';\n","/**\n * Heatmap value interpolation along a 1D path.\n *\n * Pure numeric helper used by `<XtsStatorHeatmap>` to compute the value\n * at any partPositionMm along the chain, given the consumer's sample\n * points. Behaviour:\n *\n *   - Empty samples → `null`.\n *   - Single sample → that sample's value at every position.\n *   - Position before first sample → first sample's value (clamped).\n *   - Position after last sample → last sample's value (clamped).\n *   - Otherwise → linear interpolation between the two bracketing\n *     samples.\n *\n * Samples must be sorted by `positionMm` ascending — the helper does\n * not sort defensively. Use `sortHeatmapSamples` once when ingesting\n * data.\n */\n\nexport interface HeatmapSample {\n  positionMm: number;\n  value: number;\n}\n\nexport function sortHeatmapSamples(\n  samples: ReadonlyArray<HeatmapSample>,\n): HeatmapSample[] {\n  return [...samples].sort((a, b) => a.positionMm - b.positionMm);\n}\n\n/**\n * Return the linearly interpolated value at `positionMm`. Returns\n * `null` when the sample list is empty.\n */\nexport function interpolateHeatmapValue(\n  samples: ReadonlyArray<HeatmapSample>,\n  positionMm: number,\n): number | null {\n  if (samples.length === 0) return null;\n  if (samples.length === 1) return samples[0]!.value;\n\n  const first = samples[0]!;\n  const last = samples[samples.length - 1]!;\n  if (positionMm <= first.positionMm) return first.value;\n  if (positionMm >= last.positionMm) return last.value;\n\n  // Binary search for the bracket — heatmap tubes can have hundreds of\n  // segments × dozens of samples per part, linear scan dominates the\n  // per-frame time on busy scenes.\n  let lo = 0;\n  let hi = samples.length - 1;\n  while (hi - lo > 1) {\n    const mid = (lo + hi) >> 1;\n    if (samples[mid]!.positionMm <= positionMm) lo = mid;\n    else hi = mid;\n  }\n  const a = samples[lo]!;\n  const b = samples[hi]!;\n  const span = b.positionMm - a.positionMm;\n  if (span === 0) return a.value;\n  const t = (positionMm - a.positionMm) / span;\n  return a.value + t * (b.value - a.value);\n}\n\n/**\n * Map a value into [0..1] across the [min..max] window, clamped at the\n * edges. Used to feed the gradient lerp.\n */\nexport function normaliseToHeatmapRange(\n  value: number,\n  min: number,\n  max: number,\n): number {\n  if (max <= min) return 0;\n  const t = (value - min) / (max - min);\n  if (t < 0) return 0;\n  if (t > 1) return 1;\n  return t;\n}\n","/**\n * <XtsStatorHeatmap> — coloured tube along a part's centerline whose\n * vertex colours map a consumer-supplied `(positionMm, value)` series\n * onto a [minColor … maxColor] gradient.\n *\n * Implementation:\n *   1. Sample the chain centerline at `partLengthMm × segmentsPerModule`\n *      mm steps → polyline of Vector3.\n *   2. Build a single TubeGeometry from a CatmullRom curve through the\n *      polyline (one draw call, no per-segment overhead).\n *   3. For each path segment, look up the heatmap value at its\n *      parametric `s`, lerp `minColor` → `maxColor` by the normalised\n *      ratio, write the colour into all radial vertices of that\n *      segment's ring.\n *   4. Render with `vertexColors: true` so the gradient flows along the\n *      tube continuously.\n *\n * Sample positions are in user-frame (passed through\n * `chainToUserPositionMm`) so the heatmap moves with the XPU's\n * `positionFrame` like every other partPosition-keyed overlay.\n */\n\nimport React, { useMemo } from 'react';\nimport {\n  BufferAttribute,\n  CatmullRomCurve3,\n  Color,\n  DoubleSide,\n  TubeGeometry,\n  Vector3,\n} from 'three';\nimport { sampleChainRange } from '../../geometry/sampleChain.js';\nimport {\n  interpolateHeatmapValue,\n  normaliseToHeatmapRange,\n  sortHeatmapSamples,\n  type HeatmapSample,\n} from '../../geometry/heatmapInterpolation.js';\nimport { chainToUserPositionMm } from '../../geometry/positionFrame.js';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport type { PartTransformation, PositionFrame } from '../../types.js';\n\nconst DEFAULT_MIN_COLOR = '#22c55e'; // tailwind emerald-500\nconst DEFAULT_MAX_COLOR = '#ef4444'; // tailwind red-500\nconst DEFAULT_THICKNESS_MM = 6;\nconst DEFAULT_DISPLACEMENT_MM = -15;\nconst DEFAULT_LATERAL_MM = 0;\nconst DEFAULT_SEGMENTS_PER_MODULE = 8;\nconst DEFAULT_OPACITY = 0.85;\nconst RADIAL_SEGMENTS = 8;\n\ninterface PartHeatmapProps {\n  chain: BuiltChain;\n  samples: ReadonlyArray<HeatmapSample>;\n  min: number;\n  max: number;\n  minColor?: string;\n  maxColor?: string;\n  thicknessMm?: number;\n  displacementMm?: number;\n  lateralDisplacementMm?: number;\n  segmentsPerModule?: number;\n  opacity?: number;\n  positionFrame?: PositionFrame;\n}\n\nconst PartHeatmapImpl: React.FC<PartHeatmapProps> = ({\n  chain,\n  samples,\n  min,\n  max,\n  minColor = DEFAULT_MIN_COLOR,\n  maxColor = DEFAULT_MAX_COLOR,\n  thicknessMm = DEFAULT_THICKNESS_MM,\n  displacementMm = DEFAULT_DISPLACEMENT_MM,\n  lateralDisplacementMm = DEFAULT_LATERAL_MM,\n  segmentsPerModule = DEFAULT_SEGMENTS_PER_MODULE,\n  opacity = DEFAULT_OPACITY,\n  positionFrame,\n}) => {\n  // Sort once. The interpolation helper assumes monotonic input.\n  const sortedSamples = useMemo(\n    () => sortHeatmapSamples(samples),\n    [samples],\n  );\n\n  const geometry = useMemo(() => {\n    if (chain.modules.length === 0) return null;\n    if (sortedSamples.length === 0) return null;\n\n    // 1. Build a polyline along the chain centerline. stepMm is set\n    // implicitly by passing 0..trackLengthMm as the range to\n    // sampleChainRange with a step that yields ~`segmentsPerModule`\n    // points per module.\n    const meanModuleLengthMm =\n      chain.trackLengthMm / Math.max(1, chain.modules.length);\n    const stepMm = meanModuleLengthMm / segmentsPerModule;\n    const points = sampleChainRange(\n      chain,\n      0,\n      chain.trackLengthMm,\n      stepMm,\n      displacementMm,\n      lateralDisplacementMm,\n    );\n    if (points.length < 2) return null;\n\n    // 2. Smooth via Catmull-Rom + TubeGeometry. tubularSegments matches\n    // the polyline density so each ring lands on a real path sample.\n    const curve = new CatmullRomCurve3(points, false, 'catmullrom', 0);\n    const tubularSegments = points.length - 1;\n    const geo = new TubeGeometry(\n      curve,\n      tubularSegments,\n      thicknessMm / 2,\n      RADIAL_SEGMENTS,\n      false,\n    );\n\n    // 3. Per-vertex colour. TubeGeometry vertex layout (three.js\n    //    standard, stable across r150-r170):\n    //      vertex(i, j) lives at index `i * (radialSegments + 1) + j`\n    //    where i ∈ [0, tubularSegments] and j ∈ [0, radialSegments].\n    const vertexCount = geo.attributes.position!.count;\n    const colors = new Float32Array(vertexCount * 3);\n    const cMin = new Color(minColor);\n    const cMax = new Color(maxColor);\n    const tmpColor = new Color();\n    for (let i = 0; i <= tubularSegments; i++) {\n      // Parametric s along the chain — uniform because we sampled the\n      // polyline at uniform mm steps. CatmullRom keeps the parameter\n      // close to arc-length on smooth curves; module-edge kinks may\n      // drift up to a few percent, well below visible.\n      const t = i / tubularSegments;\n      const chainPos = t * chain.trackLengthMm;\n      const userPos = chainToUserPositionMm(chainPos, positionFrame);\n      const value = interpolateHeatmapValue(sortedSamples, userPos);\n      const ratio =\n        value !== null ? normaliseToHeatmapRange(value, min, max) : 0;\n      tmpColor.copy(cMin).lerp(cMax, ratio);\n      for (let j = 0; j <= RADIAL_SEGMENTS; j++) {\n        const vIdx = i * (RADIAL_SEGMENTS + 1) + j;\n        colors[vIdx * 3] = tmpColor.r;\n        colors[vIdx * 3 + 1] = tmpColor.g;\n        colors[vIdx * 3 + 2] = tmpColor.b;\n      }\n    }\n    geo.setAttribute('color', new BufferAttribute(colors, 3));\n    return geo;\n  }, [\n    chain,\n    sortedSamples,\n    min,\n    max,\n    minColor,\n    maxColor,\n    thicknessMm,\n    displacementMm,\n    lateralDisplacementMm,\n    segmentsPerModule,\n    positionFrame,\n  ]);\n\n  if (!geometry) return null;\n  return (\n    <mesh geometry={geometry} raycast={() => null}>\n      <meshStandardMaterial\n        vertexColors\n        transparent={opacity < 1}\n        opacity={opacity}\n        side={DoubleSide}\n        roughness={0.55}\n        metalness={0.05}\n        emissiveIntensity={0.3}\n      />\n    </mesh>\n  );\n};\n\nconst PartHeatmap = React.memo(PartHeatmapImpl);\nPartHeatmap.displayName = 'XtsStatorHeatmap.Part';\n\ninterface Props {\n  chainsByPartOid: Map<number, BuiltChain>;\n  /** Per-part transforms keyed by `PartConfig.globalNumber`. */\n  partTransformsByPartOid?: Map<number, PartTransformation | undefined>;\n  parts: ReadonlyArray<{\n    partOid: number;\n    samples: ReadonlyArray<HeatmapSample>;\n  }>;\n  min: number;\n  max: number;\n  minColor?: string;\n  maxColor?: string;\n  thicknessMm?: number;\n  displacementMm?: number;\n  lateralDisplacementMm?: number;\n  segmentsPerModule?: number;\n  opacity?: number;\n  positionFrame?: PositionFrame;\n}\n\nconst XtsStatorHeatmapImpl: React.FC<Props> = ({\n  chainsByPartOid,\n  partTransformsByPartOid,\n  parts,\n  positionFrame,\n  ...visual\n}) => {\n  return (\n    <group name=\"xts-stator-heatmap\">\n      {parts.map((p) => {\n        const chain = chainsByPartOid.get(p.partOid);\n        if (!chain) return null;\n        return (\n          <PartTransformGroup\n            key={p.partOid}\n            name={`heatmap-wrap-part-${p.partOid}`}\n            partTransformation={partTransformsByPartOid?.get(p.partOid)}\n          >\n            <PartHeatmap\n              chain={chain}\n              samples={p.samples}\n              {...visual}\n              {...(positionFrame ? { positionFrame } : {})}\n            />\n          </PartTransformGroup>\n        );\n      })}\n    </group>\n  );\n};\n\nexport const XtsStatorHeatmap = React.memo(XtsStatorHeatmapImpl);\nXtsStatorHeatmap.displayName = 'XtsStatorHeatmap';\n\n/** Vector3 import kept only for tree-shaking transparency. */\nexport type { Vector3 };\n","/**\n * Pure tick-position generator for the Dimensions overlay.\n *\n * Given a chain (per-Part track-length + module list), returns a list of\n * positions where dimension ticks should be drawn:\n *   - one tick per module boundary (kind: 'boundary')\n *   - additionally every `intermediateStepMm` along the path when > 0\n *     (kind: 'intermediate')\n *\n * Intermediate positions that coincide with a module boundary (within\n * EPSILON_MM) are dropped — the boundary tick wins. The result is sorted\n * by position ascending.\n */\n\nimport type { BuiltChain } from './ChainBuilder.js';\n\nexport type DimensionTickKind = 'boundary' | 'intermediate';\n\nexport interface DimensionTick {\n  /** Cumulative position along the part (mm). */\n  positionMm: number;\n  kind: DimensionTickKind;\n  /** Index of the containing module in chain.modules. */\n  moduleIndex: number;\n  /** Distance from the start of the containing module (mm). */\n  positionInModuleMm: number;\n}\n\nconst EPSILON_MM = 0.5;\n\nexport function buildDimensionTicks(\n  chain: BuiltChain,\n  options: {\n    invert?: boolean;\n    intermediateStepMm?: number;\n  } = {},\n): DimensionTick[] {\n  const { invert = false, intermediateStepMm = 0 } = options;\n  if (chain.modules.length === 0) return [];\n\n  const total = chain.trackLengthMm;\n  const ticks: DimensionTick[] = [];\n\n  // 1) Module-boundary ticks. Either at the START of each module (default)\n  //    or at the END (invert). Plus an extra closing tick so the FINAL\n  //    boundary of the chain is always labelled: end-of-chain when\n  //    counting from starts (default), start-of-chain when counting\n  //    from ends (invert). Without this the consumer sees N ticks for\n  //    N+1 boundaries.\n  for (let i = 0; i < chain.modules.length; i++) {\n    const mod = chain.modules[i]!;\n    const boundary = invert\n      ? mod.startPositionInPartMm + mod.trackLengthMm\n      : mod.startPositionInPartMm;\n    ticks.push({\n      positionMm: boundary,\n      kind: 'boundary',\n      moduleIndex: i,\n      positionInModuleMm: invert ? mod.trackLengthMm : 0,\n    });\n  }\n  const lastIdx = chain.modules.length - 1;\n  const lastMod = chain.modules[lastIdx]!;\n  if (invert) {\n    // First module's start is the missing closing tick.\n    const first = chain.modules[0]!;\n    ticks.push({\n      positionMm: first.startPositionInPartMm,\n      kind: 'boundary',\n      moduleIndex: 0,\n      positionInModuleMm: 0,\n    });\n  } else {\n    // Last module's end is the missing closing tick.\n    ticks.push({\n      positionMm: lastMod.startPositionInPartMm + lastMod.trackLengthMm,\n      kind: 'boundary',\n      moduleIndex: lastIdx,\n      positionInModuleMm: lastMod.trackLengthMm,\n    });\n  }\n\n  // 2) Intermediate ticks every intermediateStepMm.\n  if (intermediateStepMm > 0) {\n    for (\n      let p = intermediateStepMm;\n      p < total - EPSILON_MM;\n      p += intermediateStepMm\n    ) {\n      // Skip if this lands on a module boundary already in the list.\n      const onBoundary = ticks.some(\n        (t) => t.kind === 'boundary' && Math.abs(t.positionMm - p) < EPSILON_MM,\n      );\n      if (onBoundary) continue;\n      const mod = findModuleAt(chain, p);\n      if (!mod) continue;\n      ticks.push({\n        positionMm: p,\n        kind: 'intermediate',\n        moduleIndex: mod.idx,\n        positionInModuleMm: p - mod.module.startPositionInPartMm,\n      });\n    }\n  }\n\n  ticks.sort((a, b) => a.positionMm - b.positionMm);\n  return ticks;\n}\n\n/**\n * Format the value text shown at a tick, given a `valueMode`. Pure helper\n * so the renderer stays simple; tests cover all three modes.\n */\nexport function formatDimensionValue(\n  tick: DimensionTick,\n  mode: 'partPosition' | 'fromModule' | 'both' = 'partPosition',\n): string {\n  const round = (n: number) => Math.round(n);\n  if (mode === 'partPosition') return `${round(tick.positionMm)} mm`;\n  if (mode === 'fromModule') return `${round(tick.positionInModuleMm)} mm`;\n  return `${round(tick.positionMm)} (${round(tick.positionInModuleMm)}) mm`;\n}\n\nfunction findModuleAt(\n  chain: BuiltChain,\n  positionMm: number,\n): { idx: number; module: BuiltChain['modules'][number] } | null {\n  for (let i = 0; i < chain.modules.length; i++) {\n    const m = chain.modules[i]!;\n    if (positionMm < m.startPositionInPartMm + m.trackLengthMm)\n      return { idx: i, module: m };\n  }\n  // Past the end — clamp to last module.\n  const last = chain.modules[chain.modules.length - 1]!;\n  return { idx: chain.modules.length - 1, module: last };\n}\n","/**\n * <XtsDimensions> — Renders dimension markers per Part.\n *\n * Per Part:\n *   - thin tube along the entire centerline\n *   - tick markers at every module boundary (Tick / Diamond / None per\n *     `display.dimensionMarkerOptions` — same look as before)\n *   - intermediate tick markers every `intermediateStepMm` (when > 0),\n *     visually subordinate (smaller, alt color)\n *   - billboarded numeric labels at each tick when `showValues` is true\n *\n * `invertDimensions` iterates module boundaries from the END of the part\n * instead of the start.\n */\n\nimport React from 'react';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport {\n  buildDimensionTicks,\n  formatDimensionValue,\n  type DimensionTick,\n} from '../../geometry/dimensionTicks.js';\nimport {\n  sampleChainPoint,\n  sampleChainRange,\n} from '../../geometry/sampleChain.js';\nimport { chainToUserPositionMm } from '../../geometry/positionFrame.js';\nimport { PathTube } from './PathTube.js';\nimport { PathMarker } from './PathMarker.js';\nimport { DimensionLabel } from './DimensionLabel.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport type {\n  DisplayOptions,\n  MarkerShape,\n  PartTransformation,\n  PositionFrame,\n  RailSystem,\n} from '../../types.js';\n\ninterface XtsDimensionsProps {\n  chainsByPartOid: Map<number, BuiltChain>;\n  /** Per-part transforms keyed by `PartConfig.globalNumber`. */\n  partTransformsByPartOid?: Map<number, PartTransformation | undefined>;\n  /**\n   * Active rail system on the parent XPU. Drives the default lateral\n   * offset: the Beckhoff aluminium rail is wider than the Hepco GFX\n   * profile, so dimensions need to step further out (80 mm vs 40 mm)\n   * to clear it. Consumers can still override via\n   * `display.dimensionOptions.lateralDisplacementMm`.\n   */\n  railSystem?: RailSystem;\n  display?: DisplayOptions;\n  /**\n   * XPU position frame. Tick mm values are reported in user-frame\n   * (`chainToUserPositionMm`) so a label that reads \"300 mm\" matches a\n   * mover whose `partPositionMm` is 300, regardless of `direction` /\n   * `originMm`. Tick *placement* in 3D space is unchanged — only the\n   * label text follows the user's frame.\n   */\n  positionFrame?: PositionFrame;\n}\n\nconst XtsDimensionsImpl: React.FC<XtsDimensionsProps> = ({\n  chainsByPartOid,\n  partTransformsByPartOid,\n  railSystem,\n  display,\n  positionFrame,\n}) => {\n  const dim = display?.dimensionOptions;\n  const thickness = dim?.thicknessMm ?? 4;\n  // Default overlay placement: on the table plane (z = 0), shifted\n  // lateral so the dimensions sit beside the mover line instead of\n  // underneath it. Beckhoff rail = 80 mm clearance, Hepco GFX = 40 mm.\n  const liftZ = dim?.displacementMm ?? 0;\n  const defaultLateralMm = railSystem === 'HepcoGfx' ? 40 : 80;\n  const lateralMm = dim?.lateralDisplacementMm ?? defaultLateralMm;\n  const invert = display?.invertDimensions ?? false;\n  const color = dim?.textOptions?.color ?? '#88AAFF';\n  const showValues = dim?.showValues ?? false;\n  const showIntermediateValues = dim?.showIntermediateValues ?? true;\n  const intermediateStepMm = dim?.intermediateStepMm ?? 0;\n  const valueMode = dim?.valueMode ?? 'partPosition';\n  const labelSize = dim?.textOptions?.sizeMm ?? 30;\n  const fontFamily = dim?.textOptions?.fontFamily;\n  const intermediateMarker = dim?.intermediateMarkerOptions;\n\n  return (\n    <group name=\"xts-dimensions\">\n      {Array.from(chainsByPartOid.entries()).map(([oid, chain]) => (\n        <PartTransformGroup\n          key={oid}\n          name={`dim-wrap-part-${oid}`}\n          partTransformation={partTransformsByPartOid?.get(oid)}\n        >\n          <PartDimensions\n            chain={chain}\n            thickness={thickness}\n            liftZ={liftZ}\n            lateralMm={lateralMm}\n            invert={invert}\n            color={color}\n            showValues={showValues}\n            showIntermediateValues={showIntermediateValues}\n            intermediateStepMm={intermediateStepMm}\n            intermediateShape={intermediateMarker?.shape ?? 'Tick'}\n            intermediateSizeMm={intermediateMarker?.sizeMm}\n            valueMode={valueMode}\n            labelSize={labelSize}\n            fontFamily={fontFamily}\n            positionFrame={positionFrame}\n          />\n        </PartTransformGroup>\n      ))}\n    </group>\n  );\n};\n\nexport const XtsDimensions = React.memo(XtsDimensionsImpl);\nXtsDimensions.displayName = 'XtsDimensions';\n\nconst PartDimensions: React.FC<{\n  chain: BuiltChain;\n  thickness: number;\n  liftZ: number;\n  lateralMm: number;\n  invert: boolean;\n  color: string;\n  showValues: boolean;\n  showIntermediateValues: boolean;\n  intermediateStepMm: number;\n  intermediateShape: MarkerShape;\n  intermediateSizeMm?: number;\n  valueMode: 'partPosition' | 'fromModule' | 'both';\n  labelSize: number;\n  fontFamily?: string;\n  positionFrame?: PositionFrame;\n}> = ({\n  chain,\n  thickness,\n  liftZ,\n  lateralMm,\n  invert,\n  color,\n  showValues,\n  showIntermediateValues,\n  intermediateStepMm,\n  intermediateShape,\n  intermediateSizeMm,\n  valueMode,\n  labelSize,\n  fontFamily,\n  positionFrame,\n}) => {\n  // Continuous tube along the whole part. Apply lateral + vertical offsets\n  // so the tube can sit beside / above / below the centerline.\n  const tubePoints = sampleChainRange(\n    chain,\n    0,\n    chain.trackLengthMm,\n    20,\n    liftZ,\n    lateralMm,\n  );\n  const ticks = buildDimensionTicks(chain, { invert, intermediateStepMm });\n\n  const boundarySize = Math.max(thickness * 2, 8);\n  const intSize = intermediateSizeMm ?? boundarySize * 0.6;\n  // Slightly desaturate / dim the intermediate marker so it stays visually\n  // subordinate to the boundary ticks.\n  const intColor = mixWithBlack(color, 0.35);\n\n  type Resolved = {\n    tick: DimensionTick;\n    sample: NonNullable<ReturnType<typeof sampleChainPoint>>;\n  };\n  const resolved: Resolved[] = [];\n  for (const t of ticks) {\n    const sample = sampleChainPoint(chain, t.positionMm, liftZ, lateralMm);\n    if (sample) resolved.push({ tick: t, sample });\n  }\n\n  return (\n    <>\n      <PathTube\n        points={tubePoints}\n        thicknessMm={thickness}\n        color={color}\n        opacity={0.7}\n      />\n      {resolved.map(({ tick, sample }, i) => {\n        const isBoundary = tick.kind === 'boundary';\n        const showThisLabel =\n          showValues && (isBoundary || showIntermediateValues);\n        // Report the tick's mm value in the host's user-frame so the\n        // label matches the convention every other prop uses\n        // (mover.partPositionMm, station.startPositionOnPart, …). For\n        // direction='positive', originMm=0 this is identity, so legacy\n        // setups read identically.\n        const userTickMm = chainToUserPositionMm(tick.positionMm, positionFrame);\n        const labelText = formatDimensionValue(\n          { ...tick, positionMm: userTickMm },\n          valueMode,\n        );\n        return (\n          <React.Fragment key={i}>\n            <PathMarker\n              position={sample.position}\n              tangent={sample.tangent}\n              shape={isBoundary ? 'Tick' : intermediateShape}\n              sizeMm={isBoundary ? boundarySize : intSize}\n              color={isBoundary ? color : intColor}\n            />\n            {showThisLabel && (\n              <DimensionLabel\n                positionMm={[\n                  sample.position.x,\n                  sample.position.y,\n                  sample.position.z,\n                ]}\n                text={labelText}\n                sizeMm={isBoundary ? labelSize : labelSize * 0.8}\n                color={isBoundary ? color : intColor}\n                fontFamily={fontFamily}\n              />\n            )}\n          </React.Fragment>\n        );\n      })}\n    </>\n  );\n};\n\n/** Mix a hex CSS color with black by `t ∈ [0,1]` (0 → original, 1 → black). */\nfunction mixWithBlack(hex: string, t: number): string {\n  if (!hex.startsWith('#') || (hex.length !== 7 && hex.length !== 4))\n    return hex;\n  const expand = hex.length === 4\n    ? '#' + hex.slice(1).split('').map((c) => c + c).join('')\n    : hex;\n  const r = parseInt(expand.slice(1, 3), 16);\n  const g = parseInt(expand.slice(3, 5), 16);\n  const b = parseInt(expand.slice(5, 7), 16);\n  const k = (v: number) => Math.max(0, Math.min(255, Math.round(v * (1 - t))));\n  return `#${k(r).toString(16).padStart(2, '0')}${k(g).toString(16).padStart(2, '0')}${k(b).toString(16).padStart(2, '0')}`;\n}\n","/**\n * <XtsInfoBars> — Renders InfoBarConfig[].\n *\n * Like Stations but per-XPU/Part with custom range, color, thickness and\n * displacement. Z-stacking via zIndex (multiplied with a small Z step).\n *\n * `partStartPositionMm`, `partEndPositionMm`, and each marker's\n * `positionMm` are interpreted in the user's frame (subject to the\n * XPU's `positionFrame`) — same convention as Stations / Areas /\n * Movers, so an InfoBar that visually sits \"at the 250 mm tick\" matches\n * a mover whose `partPositionMm` is 250.\n */\n\nimport React from 'react';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport {\n  sampleChainPoint,\n  sampleChainRange,\n} from '../../geometry/sampleChain.js';\nimport { userToChainPositionMm } from '../../geometry/positionFrame.js';\nimport { PathTube } from './PathTube.js';\nimport { PathMarker } from './PathMarker.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport type {\n  InfoBarConfig,\n  PartTransformation,\n  PositionFrame,\n} from '../../types.js';\n\ninterface XtsInfoBarsProps {\n  /** Already filtered to bars whose XPU we're rendering. */\n  infoBars: InfoBarConfig[];\n  /** Map of part `objectId` (within XPU) → chain. */\n  chainsByPartObjectId: Map<number, BuiltChain>;\n  /** Per-part transforms keyed by `PartConfig.objectId`. */\n  partTransformsByPartObjectId?: Map<number, PartTransformation | undefined>;\n  /** XPU position frame applied to start / end / marker positions. */\n  positionFrame?: PositionFrame;\n}\n\nconst Z_STEP_PER_INDEX = 4;\n\nexport const XtsInfoBars: React.FC<XtsInfoBarsProps> = ({\n  infoBars,\n  chainsByPartObjectId,\n  partTransformsByPartObjectId,\n  positionFrame,\n}) => {\n  return (\n    <group name=\"xts-infobars\">\n      {infoBars\n        .filter((b) => b.visible)\n        .map((bar, i) => {\n          const chain = chainsByPartObjectId.get(bar.partObjectId);\n          if (!chain) return null;\n          const partTransform = partTransformsByPartObjectId?.get(\n            bar.partObjectId,\n          );\n          const liftZ = bar.displacement + bar.zIndex * Z_STEP_PER_INDEX;\n          const startChain = userToChainPositionMm(\n            bar.partStartPositionMm,\n            positionFrame,\n          );\n          const endChain = userToChainPositionMm(\n            bar.partEndPositionMm,\n            positionFrame,\n          );\n          const points = sampleChainRange(\n            chain,\n            startChain,\n            endChain,\n            15,\n            liftZ,\n          );\n          return (\n            <PartTransformGroup\n              key={i}\n              name={`infobar-${i}`}\n              partTransformation={partTransform}\n            >\n              <PathTube\n                points={points}\n                thicknessMm={Math.max(bar.thickness, 1)}\n                color={bar.color.color}\n              />\n              {(bar.markers ?? []).map((m, j) => {\n                const markerChainPos = userToChainPositionMm(\n                  m.positionMm,\n                  positionFrame,\n                );\n                const sample = sampleChainPoint(\n                  chain,\n                  markerChainPos,\n                  liftZ + 2,\n                );\n                if (!sample) return null;\n                return (\n                  <PathMarker\n                    key={j}\n                    position={sample.position}\n                    tangent={sample.tangent}\n                    shape={m.shape}\n                    sizeMm={m.sizeMm}\n                    color={m.color ?? bar.color.color}\n                  />\n                );\n              })}\n            </PartTransformGroup>\n          );\n        })}\n    </group>\n  );\n};\n","/**\n * useGltfHighlight — combined selection tint + drive-status blink for a\n * cloned glTF scene.\n *\n * Replaces the old `useSelectionTint` and the box-overlay\n * `DriveStatusGlow`. Both effects share the same per-mesh material\n * channel (`emissive` + `emissiveIntensity`), so they're consolidated\n * here to avoid two hooks fighting over the same uniform.\n *\n * Priority (when more than one effect is active simultaneously):\n *   driveStatus.error   →  red,    blink at 1 Hz (intensity 0.20–0.65)\n *   driveStatus.warning →  amber,  blink at 1 Hz (intensity 0.20–0.65)\n *   selected            →  user-color, **constant** intensity 0.45\n *   none                →  shared material left untouched (zero cost)\n *\n * Clone-on-write: drei's `useGLTF` cache + `cloneSkeleton` share\n * materials by reference across instances. We shallow-clone the\n * affected materials when an effect is active, mutate the clones, and\n * dispose + restore on cleanup so the highlight stays scoped.\n */\n\nimport { useEffect, useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Color, Mesh } from 'three';\nimport type { Material, MeshStandardMaterial } from 'three';\nimport type { GLTF } from 'three-stdlib';\n\ninterface MaterialWithEmissive extends Material {\n  emissive: Color;\n  emissiveIntensity: number;\n}\n\nconst WARNING_COLOR = '#FFB000';\nconst ERROR_COLOR = '#E03030';\nconst SELECTION_INTENSITY = 0.45;\nconst BLINK_LO = 0.2;\nconst BLINK_HI = 0.65;\nconst BLINK_HZ = 1;\n\ninterface DriveStatus {\n  warning?: boolean;\n  error?: boolean;\n}\n\ninterface UseGltfHighlightOpts {\n  selected?: boolean;\n  selectionColor?: string;\n  highlightColor?: string;\n  driveStatus?: DriveStatus;\n  showWarnings?: boolean;\n  showErrors?: boolean;\n}\n\ntype Mode =\n  | { kind: 'none' }\n  | { kind: 'selected'; color: string }\n  | { kind: 'blink'; color: string };\n\nfunction pickMode({\n  selected,\n  selectionColor,\n  highlightColor,\n  driveStatus,\n  showWarnings,\n  showErrors,\n}: UseGltfHighlightOpts): Mode {\n  if (driveStatus?.error && showErrors !== false) {\n    return { kind: 'blink', color: ERROR_COLOR };\n  }\n  if (driveStatus?.warning && showWarnings !== false) {\n    return { kind: 'blink', color: WARNING_COLOR };\n  }\n  if (selected && selectionColor) {\n    return { kind: 'selected', color: selectionColor };\n  }\n  if (highlightColor) {\n    return { kind: 'selected', color: highlightColor };\n  }\n  return { kind: 'none' };\n}\n\nexport function useGltfHighlight(\n  gltf: GLTF | null,\n  opts: UseGltfHighlightOpts,\n): void {\n  const mode = pickMode(opts);\n\n  // Stable mode signature drives the clone/restore lifecycle.\n  const signature =\n    mode.kind === 'none' ? 'none' : `${mode.kind}:${mode.color}`;\n\n  // List of cloned materials we currently own — read by the per-frame\n  // updater so it doesn't have to traverse the scene every frame.\n  const cloned = useRef<MaterialWithEmissive[]>([]);\n\n  useEffect(() => {\n    if (!gltf || mode.kind === 'none') return;\n    const tint = new Color(mode.color);\n    type Swap = {\n      mesh: Mesh;\n      original: Material | Material[];\n      cloned: Material | Material[];\n    };\n    const swaps: Swap[] = [];\n    const list: MaterialWithEmissive[] = [];\n    const cloneOne = (m: Material): Material => {\n      const c = m.clone();\n      if ('emissive' in c) {\n        const mat = c as MeshStandardMaterial;\n        mat.emissive.copy(tint);\n        mat.emissiveIntensity = SELECTION_INTENSITY;\n        list.push(mat as unknown as MaterialWithEmissive);\n      }\n      return c;\n    };\n    gltf.scene.traverse((obj) => {\n      const mesh = obj as Mesh;\n      if (!mesh.isMesh || !mesh.material) return;\n      const next: Material | Material[] = Array.isArray(mesh.material)\n        ? mesh.material.map(cloneOne)\n        : cloneOne(mesh.material);\n      swaps.push({ mesh, original: mesh.material, cloned: next });\n      mesh.material = next;\n    });\n    cloned.current = list;\n    return () => {\n      for (const { mesh, original, cloned: c } of swaps) {\n        mesh.material = original;\n        if (Array.isArray(c)) c.forEach((m) => m.dispose());\n        else c.dispose();\n      }\n      cloned.current = [];\n    };\n  }, [gltf, signature]);\n\n  // Per-frame blink loop. Runs only when in 'blink' mode; otherwise the\n  // emissiveIntensity set in the effect above stays put.\n  // Calls invalidate() to keep the render loop alive during blinking\n  // when the canvas uses `frameloop=\"demand\"`.\n  useFrame(({ clock, invalidate }) => {\n    if (mode.kind !== 'blink' || cloned.current.length === 0) return;\n    const t = clock.getElapsedTime();\n    const phase = 0.5 + 0.5 * Math.sin(2 * Math.PI * BLINK_HZ * t);\n    const intensity = BLINK_LO + (BLINK_HI - BLINK_LO) * phase;\n    for (const m of cloned.current) m.emissiveIntensity = intensity;\n    invalidate();\n  });\n}\n","/**\n * SelectionTintContext — broadcast a parent's selection state down the\n * scene-graph so child GLB consumers (mover-tool carriers, custom\n * assets bound to a mover) tint their own materials with the same\n * colour as the parent.\n *\n * Wired by `<XtsMover>` so when a mover is selected, every child\n * `<CustomAssetMesh>` underneath — AT8200 tools + custom assets —\n * picks up the highlight too. Modules don't need this because they\n * have no GLB-bound children today.\n */\n\nimport React from 'react';\n\nexport interface SelectionTintState {\n  selected: boolean;\n  color: string;\n}\n\nexport const SelectionTintContext =\n  React.createContext<SelectionTintState | null>(null);\n","/**\n * Shared GLB-instance renderer for custom assets and mover tools.\n *\n * Opacity propagates to all materials in the cloned hierarchy\n * (material.transparent = true, material.opacity = value, depthWrite =\n * (opacity == 1)).\n *\n * Clone-on-write: drei's `useGLTF` caches the parsed glTF globally, and\n * `cloneSkeleton` shares materials by reference across every instance\n * that uses the same URL. Mutating `material.opacity` directly would\n * leak this asset's opacity onto every other consumer of the same GLB\n * — e.g. setting `opacity: 0.95` on a custom asset that reuses the\n * `AT2000-0250.glb` as cargo would also turn the actual AT2000 modules\n * in the track translucent. We clone the material(s) before mutating\n * (only when opacity < 1, to keep the fully-opaque path zero-cost) and\n * restore + dispose on cleanup.\n */\n\nimport React, { useContext, useEffect, Suspense } from 'react';\nimport { Material, Mesh } from 'three';\nimport { useGltfClone } from './useGltfClone.js';\nimport { useGltfHighlight } from './useGltfHighlight.js';\nimport { SelectionTintContext } from './SelectionTintContext.js';\n\ninterface CustomAssetMeshProps {\n  glbUrl: string;\n  positionMm?: [number, number, number];\n  rotationDegEuler?: [number, number, number];\n  scale?: number;\n  opacity?: number;\n  visible?: boolean;\n  /** Wireframe placeholder size when GLB is unavailable. */\n  placeholderSizeMm?: [number, number, number];\n}\n\nconst DEG2RAD = Math.PI / 180;\n\nconst Inner: React.FC<CustomAssetMeshProps> = ({\n  glbUrl,\n  positionMm = [0, 0, 0],\n  rotationDegEuler = [0, 0, 0],\n  scale = 1,\n  opacity = 1,\n  visible = true,\n  placeholderSizeMm = [50, 50, 50],\n}) => {\n  const gltf = useGltfClone(glbUrl ?? '');\n\n  // Inherit the parent mover's selection tint when present (AT8200\n  // tools + assets bound under <XtsMover>). Top-level static custom\n  // assets sit outside any XtsMover and see `null` here, so they're\n  // never tinted — that's correct, only mover-bound children should\n  // pick up the parent's selection state. Drive-status blink stays\n  // on the parent mover's own GLB; we deliberately don't propagate\n  // it to children here.\n  const tint = useContext(SelectionTintContext);\n  useGltfHighlight(gltf, {\n    selected: tint?.selected ?? false,\n    selectionColor: tint?.color ?? '#FFE090',\n  });\n\n  useEffect(() => {\n    // Fully opaque → no mutation needed, the shared material is fine.\n    if (!gltf || opacity >= 1) return;\n    type Swap = {\n      mesh: Mesh;\n      original: Material | Material[];\n      cloned: Material | Material[];\n    };\n    const swaps: Swap[] = [];\n    const cloneOne = (m: Material): Material => {\n      const c = m.clone();\n      c.transparent = true;\n      c.opacity = opacity;\n      c.depthWrite = false;\n      c.needsUpdate = true;\n      return c;\n    };\n    gltf.scene.traverse((obj) => {\n      const mesh = obj as Mesh;\n      if (!mesh.isMesh || !mesh.material) return;\n      const cloned: Material | Material[] = Array.isArray(mesh.material)\n        ? mesh.material.map(cloneOne)\n        : cloneOne(mesh.material);\n      swaps.push({ mesh, original: mesh.material, cloned });\n      mesh.material = cloned;\n    });\n    return () => {\n      for (const { mesh, original, cloned } of swaps) {\n        mesh.material = original;\n        if (Array.isArray(cloned)) cloned.forEach((c) => c.dispose());\n        else cloned.dispose();\n      }\n    };\n  }, [gltf, opacity]);\n\n  if (!visible) return null;\n\n  return (\n    <group\n      position={positionMm}\n      rotation={[\n        rotationDegEuler[0] * DEG2RAD,\n        rotationDegEuler[1] * DEG2RAD,\n        rotationDegEuler[2] * DEG2RAD,\n        'XYZ',\n      ]}\n      scale={scale}\n    >\n      {gltf ? (\n        <primitive object={gltf.scene} />\n      ) : (\n        <mesh>\n          <boxGeometry args={placeholderSizeMm} />\n          <meshBasicMaterial color=\"#88FF88\" wireframe transparent opacity={0.6} />\n        </mesh>\n      )}\n    </group>\n  );\n};\n\nexport const CustomAssetMesh: React.FC<CustomAssetMeshProps> = (props) => (\n  <Suspense fallback={null}>\n    <Inner {...props} />\n  </Suspense>\n);\n","/**\n * <XtsCustomAssets> — Renders CustomAssetConfig[] with `binding.type =\n * 'static'`.\n *\n * Movement-bound bindings (`'mover'` and `'all-movers'`) are rendered\n * elsewhere — as children of `<XtsMover>` inside ProcessingUnitRoot —\n * so they automatically inherit the imperatively-driven mover transform\n * each frame, exactly like AT8200 tools. Keeping this component focused\n * on world-fixed assets means the static path stays cheap and the\n * mover-bound path doesn't pay the per-frame `moverWorldAt` cost twice.\n */\n\nimport React from 'react';\nimport { CustomAssetMesh } from './CustomAssetMesh.js';\nimport type { CustomAssetConfig } from '../../types.js';\n\ninterface XtsCustomAssetsProps {\n  assets: CustomAssetConfig[];\n}\n\nexport const XtsCustomAssets: React.FC<XtsCustomAssetsProps> = ({\n  assets,\n}) => {\n  return (\n    <group name=\"xts-custom-assets-static\">\n      {assets\n        .filter((a) => a.visible !== false && a.binding.type === 'static')\n        .map((asset) => {\n          // Type-narrow once for the static branch.\n          const binding = asset.binding as Extract<\n            CustomAssetConfig['binding'],\n            { type: 'static' }\n          >;\n          return (\n            <CustomAssetMesh\n              key={asset.id}\n              glbUrl={asset.glbUrl}\n              positionMm={binding.positionMm}\n              rotationDegEuler={binding.rotationDegEuler}\n              scale={binding.scale ?? 1}\n              opacity={asset.opacity}\n            />\n          );\n        })}\n    </group>\n  );\n};\n","/**\n * <SceneEnvironment> — apply a PBR environment map to `scene.environment`.\n *\n * Uses three's built-in `RoomEnvironment` (a tiny indoor scene of light\n * panels) processed through `PMREMGenerator` to create a pre-filtered\n * mip-mapped cube map. The map drives image-based lighting on every\n * `MeshStandardMaterial` / `MeshPhysicalMaterial` in the scene — metals\n * actually look reflective, plastics get a subtle roughness highlight,\n * and shadow-side surfaces pick up bounced ambient colour.\n *\n * Cost (one-time, on mount):\n *   - PMREMGenerator processes the RoomEnvironment scene once → ~256 px\n *     prefiltered cube (≈ 1.5 MB GPU, RGBA half-float).\n *   - No HTTP fetch, no asset shipped — the room scene is procedural.\n *\n * Per-frame cost: zero. The cube map is uploaded once and sampled by the\n * material shader. PBR materials do one extra texture lookup per fragment\n * — negligible on any GPU that can render the GLBs themselves.\n *\n * `intensity` writes through to `scene.environmentIntensity` (three ≥ 156)\n * with a manual fallback that traverses materials' `envMapIntensity` for\n * older runtimes. Default 0.4 — strong enough to pick up reflections\n * without blowing out the existing directional lighting.\n *\n * Cleans itself up on unmount: clears `scene.environment`, restores the\n * material `envMapIntensity` it touched, disposes the PMREMGenerator and\n * the generated cube target.\n */\n\nimport { useEffect } from 'react';\nimport { useThree } from '@react-three/fiber';\nimport { PMREMGenerator, type Texture } from 'three';\nimport { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment.js';\n\ninterface SceneEnvironmentProps {\n  /** Strength of the IBL contribution. 0 = off, 1 = full PBR. Default 0.4. */\n  intensity?: number;\n}\n\nexport const SceneEnvironment: React.FC<SceneEnvironmentProps> = ({\n  intensity = 0.4,\n}) => {\n  const gl = useThree((s) => s.gl);\n  const scene = useThree((s) => s.scene);\n\n  useEffect(() => {\n    const pmrem = new PMREMGenerator(gl);\n    pmrem.compileEquirectangularShader();\n    const room = new RoomEnvironment();\n    const target = pmrem.fromScene(room, 0.04);\n    const tex = target.texture as Texture;\n    const previous = scene.environment;\n    scene.environment = tex;\n    // three r156+ exposes a scene-level multiplier.\n    const sceneAny = scene as unknown as {\n      environmentIntensity?: number;\n    };\n    const previousIntensity = sceneAny.environmentIntensity;\n    if ('environmentIntensity' in scene) {\n      sceneAny.environmentIntensity = intensity;\n    }\n    return () => {\n      scene.environment = previous;\n      if ('environmentIntensity' in scene) {\n        sceneAny.environmentIntensity = previousIntensity ?? 1;\n      }\n      pmrem.dispose();\n      target.dispose();\n      // RoomEnvironment carries no GPU resources of its own.\n    };\n  }, [gl, scene, intensity]);\n\n  return null;\n};\n","/**\n * Lighting + shadow-catcher rig for the XTS scene.\n *\n * Two modes:\n *   - environmentLighting = true  → IBL via SceneEnvironment supplies most\n *     of the fill; ambient/hemisphere terms are dialled down so the scene\n *     doesn't over-brighten.\n *   - environmentLighting = false → no IBL; a brighter ambient + cool\n *     hemisphere fill keep shadow-side faces legible.\n *\n * The shadow-catcher plane is only mounted when `shadows` is true so the\n * scene graph stays minimal otherwise.\n */\n\nimport React from 'react';\nimport { SceneEnvironment } from './SceneEnvironment.js';\n\ninterface SceneLightingProps {\n  shadows: boolean;\n  environmentLighting: boolean;\n  environmentIntensity: number;\n}\n\nexport const SceneLighting: React.FC<SceneLightingProps> = ({\n  shadows,\n  environmentLighting,\n  environmentIntensity,\n}) => {\n  // With IBL on, drop the flat ambient term so the scene doesn't over-brighten.\n  // Without IBL, keep a brighter baseline so direct-light-only setups stay legible.\n  const ambientIntensity = environmentLighting ? 0.25 : 0.6;\n  const directionalIntensity = environmentLighting ? 1.1 : 0.8;\n\n  return (\n    <>\n      {environmentLighting && (\n        <SceneEnvironment intensity={environmentIntensity} />\n      )}\n      <ambientLight intensity={ambientIntensity} />\n      {/* Hemisphere fill — cheap bounce-light approximation. Skipped when\n       *  the IBL is on; it would double up. */}\n      {!environmentLighting && (\n        <hemisphereLight\n          color=\"#cfdfee\"\n          groundColor=\"#454c52\"\n          intensity={0.35}\n        />\n      )}\n      {/* Primary fill + shadow caster. Shadow camera sized for a typical\n       *  XTS line (≈ 5 m square at z=0). */}\n      <directionalLight\n        position={[1500, 1500, 3000]}\n        intensity={directionalIntensity}\n        castShadow={shadows}\n        shadow-mapSize-width={4096}\n        shadow-mapSize-height={4096}\n        shadow-radius={6}\n        shadow-blurSamples={16}\n        shadow-camera-near={500}\n        shadow-camera-far={8000}\n        shadow-camera-left={-3500}\n        shadow-camera-right={3500}\n        shadow-camera-top={3500}\n        shadow-camera-bottom={-3500}\n        shadow-bias={-0.0005}\n        shadow-normalBias={1.5}\n      />\n      {/* Cool rim light from the opposite side. Dimmed under IBL to avoid wash-out. */}\n      <directionalLight\n        position={[-1000, -1000, 1500]}\n        intensity={environmentLighting ? 0.18 : 0.3}\n        color=\"#dde7ff\"\n      />\n      {/* Shadow catcher: invisible plane that only renders the shadow.\n       *  Lives at -1 mm so module rails (z=0) never z-fight with it. */}\n      {shadows && (\n        <mesh position={[0, 0, -1]} receiveShadow renderOrder={-1}>\n          <planeGeometry args={[20000, 20000]} />\n          <shadowMaterial transparent opacity={0.32} />\n        </mesh>\n      )}\n    </>\n  );\n};\n","/**\n * HepcoGfxRailProfile — cross-section of the Hepco GFX guiding rail used by\n * the procedural extrusion in <HepcoGfxRail>.\n *\n * The profile is expressed in the Beckhoff path-frame convention:\n *   - path tangent = +X (extrusion direction)\n *   - lateral      = ±Y (left/right of the path)\n *   - vertical     = ±Z (Z-up, path origin at Z=0)\n *\n * THREE.ExtrudeGeometry maps a Shape's local X to the curve's Frenet normal\n * and Shape's local Y to the binormal. For a planar curve in the world XY\n * plane the initial Frenet frame computed by three.js is:\n *   normal   = (0, 0, -1)     -> shape.x maps to world  -Z\n *   binormal = lateral in XY  -> shape.y maps to world  ±Y\n * To keep this module's public dimensions in natural \"Z-up\" coordinates,\n * the Shape factory negates Z when emitting shape.x. Callers should think\n * in (lateral Y, vertical Z); the negation is an implementation detail.\n *\n * The Hepco GFX cross-section is TWO disconnected regions:\n *\n *  1. Baseplate — a wide flat plate at the bottom (134.45 mm × 30.1 mm).\n *     One per track; the two plates of an XTS oval sit side-by-side and\n *     together span the full ~268.9 mm system width.\n *\n *  2. Rail — a separate spear-profile bar (40 mm × 20 mm) sitting on top\n *     of the baseplate at its +Y edge. Has horizontally pointed apexes on\n *     both lateral sides; the mover's V-rollers engage these apexes.\n *\n * Two shape factories are exported so the consumer can extrude each region\n * as its own mesh; merging them into a single Shape would require a thin\n * connecting sliver that misrepresents the real geometry.\n *\n * The `stackYOffsetMm` / `stackZOffsetMm` fields shift both regions\n * together — used by the playground calibration UI to fine-tune position\n * relative to the path origin without changing the inherent geometry.\n */\n\nimport { Shape } from 'three';\n\nexport interface HepcoGfxRailProfileDims {\n  /** Baseplate Y-extent per track (mm). Half of the XTS oval's full\n   *  cross-section width. */\n  readonly baseplateWidthMm: number;\n  /** Baseplate Z-extent (mm). */\n  readonly baseplateThicknessMm: number;\n  /** Z-coordinate of the baseplate's top face in the path frame (before\n   *  stackZOffsetMm is applied). Also the Z of the rail's bottom face. */\n  readonly baseplateTopZMm: number;\n  /** Rail Y-extent, spear-apex to spear-apex (mm). */\n  readonly railWidthMm: number;\n  /** Rail Z-extent, main-body top to main-body bottom (mm). */\n  readonly railHeightMm: number;\n  /** Z-coordinate of the rail's main-body top in the path frame (before\n   *  stackZOffsetMm is applied). */\n  readonly railTopZMm: number;\n  /** Lateral protrusion of each spear apex beyond the rail's main body (mm). */\n  readonly spearProtrusionMm: number;\n  /** Half-height of the spear at its inner (main-body-side) edge (mm) —\n   *  measured from the apex Z toward both top and bottom shoulders. */\n  readonly spearBaseHalfHeightMm: number;\n  /** Concave-undercut inset on the rail's bottom face just inboard of\n   *  each spear (mm) — the rail's bottom edge is shorter than its top\n   *  edge by 2× this value. */\n  readonly undercutInsetMm: number;\n  /** Calibration shift in Y applied to baseplate + rail together (mm). */\n  readonly stackYOffsetMm: number;\n  /** Calibration shift in Z applied to baseplate + rail together (mm). */\n  readonly stackZOffsetMm: number;\n}\n\n/**\n * Scaffolding dimensions (mm). The stack offsets bake in the user-\n * requested calibration so the rendered geometry is correct out of the\n * box; the playground / a `*.meta.json` sidecar can override them.\n */\nexport const HEPCO_GFX_PROFILE: HepcoGfxRailProfileDims = Object.freeze({\n  baseplateWidthMm: 134.45,\n  baseplateThicknessMm: 30.1,\n  baseplateTopZMm: -45,\n  railWidthMm: 44,\n  railHeightMm: 15,\n  railTopZMm: -30,\n  spearProtrusionMm: 5,\n  spearBaseHalfHeightMm: 4,\n  undercutInsetMm: 3,\n  stackYOffsetMm: -10,\n  stackZOffsetMm: 0,\n});\n\n/**\n * Merge a partial profile override onto the default profile. Used by the\n * playground / sidecar loader so callers only need to supply the fields\n * they want to override.\n */\nexport function resolveHepcoGfxProfile(\n  override?: Partial<HepcoGfxRailProfileDims>,\n): HepcoGfxRailProfileDims {\n  if (!override) return HEPCO_GFX_PROFILE;\n  return Object.freeze({ ...HEPCO_GFX_PROFILE, ...override });\n}\n\n/**\n * Build the baseplate cross-section (mm). Simple rectangle positioned so\n * the rail's +Y spear apex sits flush with the baseplate's +Y edge; the\n * baseplate extends in -Y direction from there. Both axes are shifted by\n * `stackYOffsetMm` / `stackZOffsetMm` before being emitted.\n */\nexport function createHepcoGfxBaseplateShape(\n  dims: HepcoGfxRailProfileDims = HEPCO_GFX_PROFILE,\n): Shape {\n  const sx = (zWorld: number): number => -(zWorld + dims.stackZOffsetMm);\n  const sy = (yWorld: number): number => yWorld + dims.stackYOffsetMm;\n\n  const innerY = dims.railWidthMm / 2;\n  const outerY = innerY - dims.baseplateWidthMm;\n  const topZ = dims.baseplateTopZMm;\n  const bottomZ = topZ - dims.baseplateThicknessMm;\n\n  const s = new Shape();\n  s.moveTo(sx(bottomZ), sy(outerY));   // bottom-outer\n  s.lineTo(sx(bottomZ), sy(innerY));   // bottom-inner\n  s.lineTo(sx(topZ),    sy(innerY));   // top-inner\n  s.lineTo(sx(topZ),    sy(outerY));   // top-outer\n  s.closePath();\n  return s;\n}\n\n/**\n * Build the rail cross-section (mm). Symmetric spear-profile bar centered\n * on Y=0 (before stackYOffsetMm). The mover's V-rollers grip the two\n * spear apexes (at Y=±railWidth/2, Z=midZ).\n *\n * The profile's top edge is flush with the spear shoulder top — there is\n * NO rectangular section above the spear shoulders. `railHeightMm` therefore\n * spans only from the main-body bottom up to the spear shoulder top.\n */\nexport function createHepcoGfxRailShape(\n  dims: HepcoGfxRailProfileDims = HEPCO_GFX_PROFILE,\n): Shape {\n  const sx = (zWorld: number): number => -(zWorld + dims.stackZOffsetMm);\n  const sy = (yWorld: number): number => yWorld + dims.stackYOffsetMm;\n\n  const halfWidth = dims.railWidthMm / 2;\n  const mainHalfWidth = halfWidth - dims.spearProtrusionMm;\n  const bottomHalfWidth = mainHalfWidth - dims.undercutInsetMm;\n\n  // Rail top = spear shoulder top. The bottom-rectangle / undercut still\n  // sit at zBottom = railTopZ − railHeight; the spear apex is half-way\n  // between zBottom and (zSpearTop + spearBaseHalfHeight). Computing zMid\n  // from those keeps the apex visually centered between the shoulders.\n  const zSpearTop = dims.railTopZMm;\n  const zBottom = zSpearTop - dims.railHeightMm;\n  const zSpearBot = zSpearTop - 2 * dims.spearBaseHalfHeightMm;\n  const zMid = zSpearTop - dims.spearBaseHalfHeightMm;\n\n  const s = new Shape();\n  // CCW in (Y, Z), starting top-left at the +Y/−Y shoulder top edge.\n  s.moveTo(sx(zSpearTop), sy(-mainHalfWidth));   // 1: top-left (=−Y shoulder top)\n  s.lineTo(sx(zSpearTop), sy(+mainHalfWidth));   // 2: top-right (=+Y shoulder top)\n  s.lineTo(sx(zMid),      sy(+halfWidth));       // 3: +Y spear apex\n  s.lineTo(sx(zSpearBot), sy(+mainHalfWidth));   // 4: +Y spear shoulder bottom\n  s.lineTo(sx(zBottom),   sy(+bottomHalfWidth)); // 5: undercut → bottom-right\n  s.lineTo(sx(zBottom),   sy(-bottomHalfWidth)); // 6: bottom-left after undercut\n  s.lineTo(sx(zSpearBot), sy(-mainHalfWidth));   // 7: −Y spear shoulder bottom\n  s.lineTo(sx(zMid),      sy(-halfWidth));       // 8: −Y spear apex\n  s.closePath();\n  return s;\n}\n","/**\n * <HepcoGfxRail> — procedural extrusion of the Hepco GFX guiding rail along\n * a Part's chained module path.\n *\n * Mounted once per Part (inside the Part's transform group), so the rail\n * inherits Part-transform and shares its frame with the modules.\n *\n * Renders TWO meshes per part: the wide flat baseplate and the smaller\n * spear-profile rail sitting on top of it at the baseplate's outer (-Y)\n * edge. Both are extruded along the same module-chain spline.\n *\n * Scaffolding stage:\n *   - Baseplate is a plain rectangle (no T-slots, no mounting recesses)\n *   - Rail spear undercut approximated as a straight chamfer (not arc)\n *   - No inner-cavity carve-out yet\n *   - No fillets at any Strangpress transitions\n */\n\nimport React, { useMemo } from 'react';\nimport {\n  CatmullRomCurve3,\n  ExtrudeGeometry,\n  Vector3,\n  type BufferGeometry,\n  type Shape,\n} from 'three';\nimport type { BuiltChain, BuiltModule } from '../../geometry/ChainBuilder.js';\nimport { sampleModulePath } from '../../geometry/pathMath.js';\nimport {\n  createHepcoGfxBaseplateShape,\n  createHepcoGfxRailShape,\n  HEPCO_GFX_PROFILE,\n  type HepcoGfxRailProfileDims,\n} from '../../geometry/HepcoGfxRailProfile.js';\n\nconst DEG2RAD = Math.PI / 180;\n/** Samples per module along its local path used to fit the spline. */\nconst SAMPLES_PER_MODULE = 32;\n\ninterface HepcoGfxRailProps {\n  chain: BuiltChain;\n  /** Profile dimensions override (testing / future variants). */\n  profile?: HepcoGfxRailProfileDims;\n  /** Matte aluminium tint for the baseplate. */\n  baseplateColor?: string;\n  /** Polished steel tint for the V-rail. */\n  railColor?: string;\n}\n\n/**\n * Material parameters tuned to evoke the right surface feel without\n * needing PBR textures: roughness mostly drives the visual difference,\n * metalness keeps both surfaces reading as metal.\n */\nconst BASEPLATE_MATERIAL = {\n  color: '#A8ADB3',     // anodised-aluminium grey\n  metalness: 0.7,\n  roughness: 0.65,      // matte\n} as const;\nconst RAIL_MATERIAL = {\n  color: '#D4D8DC',     // polished-steel highlight\n  metalness: 1.0,\n  roughness: 0.12,      // highly reflective\n} as const;\n\n/**\n * Sample each module's local path in module-local frame, then transform every\n * sample by the module's startWorldPose to obtain a continuous polyline in\n * Part-local coordinates. Consecutive modules share a join point: the first\n * sample of every subsequent module is dropped to avoid a duplicate.\n */\nfunction samplePartLocalPoints(\n  chain: BuiltChain,\n  samplesPerModule: number,\n): Vector3[] {\n  const points: Vector3[] = [];\n  for (const m of chain.modules) {\n    appendModuleSamples(points, m, samplesPerModule);\n  }\n  return points;\n}\n\nfunction appendModuleSamples(\n  out: Vector3[],\n  m: BuiltModule,\n  samplesPerModule: number,\n): void {\n  const yawRad = m.startWorldPose.yawDeg * DEG2RAD;\n  const cos = Math.cos(yawRad);\n  const sin = Math.sin(yawRad);\n  const ox = m.startWorldPose.positionMm[0];\n  const oy = m.startWorldPose.positionMm[1];\n  const oz = m.startWorldPose.positionMm[2];\n  // First module: include i=0. Subsequent modules: skip i=0 (= previous\n  // module's last sample) so the polyline has no duplicate vertex at joins.\n  const startI = out.length === 0 ? 0 : 1;\n  for (let i = startI; i <= samplesPerModule; i++) {\n    const s = (i / samplesPerModule) * m.trackLengthMm;\n    const sample = sampleModulePath(m.catalog, s);\n    const lx = sample.positionMm[0];\n    const ly = sample.positionMm[1];\n    const lz = sample.positionMm[2];\n    const wx = cos * lx - sin * ly + ox;\n    const wy = sin * lx + cos * ly + oy;\n    const wz = lz + oz;\n    out.push(new Vector3(wx, wy, wz));\n  }\n}\n\nfunction extrudeShape(\n  curve: CatmullRomCurve3,\n  shape: Shape,\n  steps: number,\n): BufferGeometry {\n  const geometry = new ExtrudeGeometry(shape, {\n    steps,\n    bevelEnabled: false,\n    extrudePath: curve,\n  });\n  geometry.computeVertexNormals();\n  return geometry;\n}\n\ninterface RailGeometries {\n  baseplate: BufferGeometry;\n  rail: BufferGeometry;\n}\n\nfunction buildRailGeometries(\n  chain: BuiltChain,\n  profile: HepcoGfxRailProfileDims,\n): RailGeometries | null {\n  const points = samplePartLocalPoints(chain, SAMPLES_PER_MODULE);\n  if (points.length < 2) return null;\n\n  const curve = new CatmullRomCurve3(points, /* closed */ false, 'catmullrom');\n  // Steps along the spine: 1 per sample point is enough — the curve is\n  // already a spline through every sample, so one extrusion step per\n  // sample preserves the source curvature without inventing detail.\n  const steps = points.length - 1;\n\n  return {\n    baseplate: extrudeShape(curve, createHepcoGfxBaseplateShape(profile), steps),\n    rail: extrudeShape(curve, createHepcoGfxRailShape(profile), steps),\n  };\n}\n\nconst HepcoGfxRailImpl: React.FC<HepcoGfxRailProps> = ({\n  chain,\n  profile = HEPCO_GFX_PROFILE,\n  baseplateColor = BASEPLATE_MATERIAL.color,\n  railColor = RAIL_MATERIAL.color,\n}) => {\n  const geometries = useMemo(\n    () => buildRailGeometries(chain, profile),\n    [chain, profile],\n  );\n  if (!geometries) return null;\n  return (\n    <>\n      <mesh geometry={geometries.baseplate}>\n        <meshStandardMaterial\n          color={baseplateColor}\n          metalness={BASEPLATE_MATERIAL.metalness}\n          roughness={BASEPLATE_MATERIAL.roughness}\n        />\n      </mesh>\n      <mesh geometry={geometries.rail}>\n        <meshStandardMaterial\n          color={railColor}\n          metalness={RAIL_MATERIAL.metalness}\n          roughness={RAIL_MATERIAL.roughness}\n        />\n      </mesh>\n    </>\n  );\n};\n\nexport const HepcoGfxRail = React.memo(HepcoGfxRailImpl);\nHepcoGfxRail.displayName = 'HepcoGfxRail';\n","/**\n * <DriveStatusIcon> — small camera-facing 3D icon mounted above a\n * module / mover when its drive status is in warning or error.\n *\n * Two variants:\n *   - 'warning'  → orange triangle (▲) with a black \"!\" inside\n *   - 'error'    → red disc with a white \"!\" inside\n *\n * Built from primitive geometry (ShapeGeometry for the triangle,\n * CircleGeometry for the disc) plus drei `<Text>` for the glyph,\n * wrapped in `<Billboard>` so the icon always reads horizontally\n * regardless of the camera orbit. Rendered with depthTest off + a\n * high renderOrder so the icon stays visible even when sitting\n * inside a module's GLB bounds.\n */\n\nimport React, { useMemo } from 'react';\nimport { Billboard, Text } from '@react-three/drei';\nimport { Shape } from 'three';\n\nconst WARNING_FILL = '#FFA000';\nconst WARNING_GLYPH = '#1a1a1a';\nconst ERROR_FILL = '#E03030';\nconst ERROR_GLYPH = '#ffffff';\n\ninterface DriveStatusIconProps {\n  kind: 'warning' | 'error';\n  positionMm: [number, number, number];\n  /** Outer size (mm) — triangle base / disc diameter. Default 45. */\n  sizeMm?: number;\n}\n\nexport const DriveStatusIcon: React.FC<DriveStatusIconProps> = ({\n  kind,\n  positionMm,\n  sizeMm = 45,\n}) => {\n  const triangleShape = useMemo(() => {\n    if (kind !== 'warning') return null;\n    const r = sizeMm / 2;\n    // Equilateral-ish triangle pointing up, slightly squat for\n    // optical balance with the \"!\" glyph inside.\n    const s = new Shape();\n    s.moveTo(0, r);\n    s.lineTo(-r * 0.95, -r * 0.7);\n    s.lineTo(r * 0.95, -r * 0.7);\n    s.lineTo(0, r);\n    return s;\n  }, [kind, sizeMm]);\n\n  return (\n    <Billboard position={positionMm} follow>\n      {kind === 'warning' && triangleShape && (\n        <>\n          <mesh renderOrder={9990}>\n            <shapeGeometry args={[triangleShape]} />\n            <meshBasicMaterial\n              color={WARNING_FILL}\n              toneMapped={false}\n              depthTest={false}\n              transparent\n              opacity={0.95}\n            />\n          </mesh>\n          <Text\n            position={[0, -sizeMm * 0.05, 0.5]}\n            fontSize={sizeMm * 0.6}\n            color={WARNING_GLYPH}\n            anchorX=\"center\"\n            anchorY=\"middle\"\n            renderOrder={9991}\n            // Drei's <Text> sets these via its own material; passing\n            // them through keeps the glyph on top of the triangle.\n            depthOffset={-1}\n          >\n            !\n          </Text>\n        </>\n      )}\n      {kind === 'error' && (\n        <>\n          <mesh renderOrder={9990}>\n            <circleGeometry args={[sizeMm / 2, 32]} />\n            <meshBasicMaterial\n              color={ERROR_FILL}\n              toneMapped={false}\n              depthTest={false}\n              transparent\n              opacity={0.95}\n            />\n          </mesh>\n          <Text\n            position={[0, 0, 0.5]}\n            fontSize={sizeMm * 0.7}\n            color={ERROR_GLYPH}\n            anchorX=\"center\"\n            anchorY=\"middle\"\n            renderOrder={9991}\n            depthOffset={-1}\n          >\n            !\n          </Text>\n        </>\n      )}\n    </Billboard>\n  );\n};\n","/**\n * <ModuleCornerMarkers> — 8 red spheres at the GLB's CAD-frame AABB corners.\n *\n * Calibration helper: when two adjacent modules are placed correctly in the\n * chain (C0/C1 continuity), the corner sphere on Module N's exit face\n * overlaps the matching corner sphere on Module N+1's entry face. A\n * visible gap or overlap signals a bad origin-correction (or a bad chain\n * transform — but the latter is unit-tested).\n *\n * Lives inside the same group as the GLB <primitive>, so the markers move\n * along with the GLB through every transform (origin-correction, chain\n * start-world, layout-mode, orientation).\n *\n * `depthTest=false` keeps them visible even when sitting inside the stator\n * mesh — important for the U-turn module where the markers would otherwise\n * be hidden by the curved cover.\n */\n\nimport React, { useMemo } from 'react';\nimport type { Vec3 } from '../../types.js';\n\ninterface Props {\n  /** GLB-frame AABB. Pass the bounds BEFORE origin correction. */\n  bounds: { min: Vec3; max: Vec3 };\n  sizeMm?: number;\n  color?: string;\n}\n\nexport const ModuleCornerMarkers: React.FC<Props> = ({\n  bounds,\n  sizeMm = 10,\n  color = '#FF2030',\n}) => {\n  const corners = useMemo(() => cornersOfAabb(bounds), [bounds]);\n  const radius = sizeMm / 2;\n\n  return (\n    <group name=\"module-corner-markers\">\n      {corners.map((c, i) => (\n        <mesh key={i} position={c} renderOrder={9999}>\n          <sphereGeometry args={[radius, 12, 12]} />\n          <meshBasicMaterial\n            color={color}\n            toneMapped={false}\n            depthTest={false}\n            transparent\n            opacity={0.95}\n          />\n        </mesh>\n      ))}\n    </group>\n  );\n};\n\nfunction cornersOfAabb(b: { min: Vec3; max: Vec3 }): Vec3[] {\n  const [minX, minY, minZ] = b.min;\n  const [maxX, maxY, maxZ] = b.max;\n  return [\n    [minX, minY, minZ],\n    [maxX, minY, minZ],\n    [minX, maxY, minZ],\n    [maxX, maxY, minZ],\n    [minX, minY, maxZ],\n    [maxX, minY, maxZ],\n    [minX, maxY, maxZ],\n    [maxX, maxY, maxZ],\n  ];\n}\n","/**\n * useModuleSidecar — resolve a module's sidecar.\n *\n * Lookup order:\n *   1. `BUILTIN_MODULE_SIDECARS` — compiled-in calibration data, available\n *      synchronously with no HTTP fetch. This is the default path for every\n *      built-in module type.\n *   2. `<assetsBaseUrl>/<id>.meta.json` — only consulted when there is no\n *      built-in entry for the type (consumer registered a custom module via\n *      `assetManifest`, or hot-reloads sidecars during development).\n *   3. Identity correction — when both fail.\n *\n * Live edits via `<XtsViewer3D sidecarOverrides={...}>` are applied at the\n * call site (not here), so calibration overrides keep working unchanged.\n */\n\nimport { useEffect, useState } from 'react';\nimport {\n  SidecarLoader,\n  type ModuleSidecar,\n  type OriginCorrection,\n  DEFAULT_ORIGIN_CORRECTION,\n  moduleSidecarFilename,\n} from '../../assets/SidecarLoader.js';\nimport { BUILTIN_MODULE_SIDECARS } from '../../assets/builtinSidecars.js';\nimport { useSidecarSource } from '../../assets/SidecarSourceContext.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport type { ModuleType3D } from '../../types.js';\n\nconst SHARED = new SidecarLoader();\n\nexport function useModuleSidecar(\n  moduleType: ModuleType3D,\n  assetsBaseUrl: string,\n): { sidecar: ModuleSidecar | undefined; correction: OriginCorrection } {\n  const { useBuiltins } = useSidecarSource();\n  const builtin = useBuiltins ? BUILTIN_MODULE_SIDECARS[moduleType] : undefined;\n  const [sidecar, setSidecar] = useState<ModuleSidecar | undefined>(builtin);\n\n  useEffect(() => {\n    if (builtin) {\n      setSidecar(builtin);\n      return;\n    }\n    let alive = true;\n    const url = composeAssetUrl(\n      assetsBaseUrl,\n      moduleSidecarFilename(moduleType),\n    );\n    SHARED.fetchModule(url)\n      .then((s) => {\n        if (alive) setSidecar(s);\n      })\n      .catch(() => {\n        if (alive) setSidecar(undefined);\n      });\n    return () => {\n      alive = false;\n    };\n  }, [moduleType, assetsBaseUrl, builtin]);\n\n  return {\n    sidecar,\n    correction: sidecar?.originCorrection ?? DEFAULT_ORIGIN_CORRECTION,\n  };\n}\n","/**\n * useRailSidecar — fetch / resolve a guiding-rail calibration sidecar.\n *\n * Lookup order matches the other sidecar hooks: built-in compiled data →\n * HTTP fetch of `<assetsBaseUrl>/<id>.rail.meta.json` → identity correction.\n */\n\nimport { useEffect, useState } from 'react';\nimport {\n  SidecarLoader,\n  type RailSidecar,\n  type OriginCorrection,\n  DEFAULT_ORIGIN_CORRECTION,\n  railSidecarFilename,\n} from '../../assets/SidecarLoader.js';\nimport { BUILTIN_RAIL_SIDECARS } from '../../assets/builtinSidecars.js';\nimport { useSidecarSource } from '../../assets/SidecarSourceContext.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport type { RailType3D } from '../../types.js';\n\nconst SHARED = new SidecarLoader();\n\nexport function useRailSidecar(\n  railType: RailType3D,\n  assetsBaseUrl: string,\n): { sidecar: RailSidecar | undefined; correction: OriginCorrection } {\n  const { useBuiltins } = useSidecarSource();\n  const builtin = useBuiltins ? BUILTIN_RAIL_SIDECARS[railType] : undefined;\n  const [sidecar, setSidecar] = useState<RailSidecar | undefined>(builtin);\n\n  useEffect(() => {\n    if (builtin) {\n      setSidecar(builtin);\n      return;\n    }\n    let alive = true;\n    const url = composeAssetUrl(assetsBaseUrl, railSidecarFilename(railType));\n    SHARED.fetchRail(url)\n      .then((s) => {\n        if (alive) setSidecar(s);\n      })\n      .catch(() => {\n        if (alive) setSidecar(undefined);\n      });\n    return () => {\n      alive = false;\n    };\n  }, [railType, assetsBaseUrl, builtin]);\n\n  return {\n    sidecar,\n    correction: sidecar?.originCorrection ?? DEFAULT_ORIGIN_CORRECTION,\n  };\n}\n","/**\n * <XtsModule> — Renders a single module: GLB mesh placed under a group whose\n * transform matches the chain's startWorldPose for that module.\n *\n * Shows a wireframe AABB placeholder while no GLB has loaded (or the GLB\n * 404s). Origin correction is applied from the calibration sidecar when\n * available.\n *\n * Selection: forwards click events with the ModuleRef and applies an\n * emissive tint to the GLB's materials (via useGltfHighlight) when\n * `selected`. Drive status: the same hook pulses the emissive intensity\n * at 1 Hz when warning / error is set, plus a small billboard\n * <DriveStatusIcon> floats above the module.\n */\n\nimport React, { Suspense, useContext, useMemo, useSyncExternalStore } from 'react';\nimport { Box3, Vector3 } from 'three';\nimport type { ThreeEvent } from '@react-three/fiber';\nimport type { GLTF } from 'three-stdlib';\nimport type { BuiltModule } from '../../geometry/ChainBuilder.js';\nimport type { Vec3 } from '../../types.js';\nimport { poseToMatrix4 } from '../../geometry/PathBuilder.js';\nimport { useGltfClone } from './useGltfClone.js';\nimport { useGltfHighlight } from './useGltfHighlight.js';\nimport { DriveStatusIcon } from './DriveStatusIcon.js';\nimport { ModuleCornerMarkers } from './ModuleCornerMarkers.js';\nimport {\n  DEFAULT_ORIGIN_CORRECTION,\n  type OriginCorrection,\n} from '../../assets/SidecarLoader.js';\nimport { useModuleSidecar } from './useModuleSidecar.js';\nimport { useRailSidecar } from './useRailSidecar.js';\nimport { ModuleStatusStoreContext } from './ModuleStatusStore.js';\nimport type { RailType3D } from '../../types.js';\n\nconst DEG2RAD = Math.PI / 180;\n\ninterface XtsModuleProps {\n  module: BuiltModule;\n  glbUrl: string | null;\n  originCorrection?: OriginCorrection;\n  /** When set, overrides sidecar lookup and uses this URL as the sidecar. */\n  assetsBaseUrl?: string;\n  /** Skip sidecar lookup if true (consumers managing correction externally). */\n  noSidecar?: boolean;\n  showBoundingBox?: boolean;\n  selected?: boolean;\n  selectionColor?: string;\n  highlightColor?: string;\n  /**\n   * Module's `ModuleEntry.globalNumber` (see types.ts). When the runtime\n   * `ModuleStatusStore` carries an entry for this number, that entry\n   * overrides the config-time `driveStatus`.\n   */\n  moduleGlobalNumber?: number;\n  driveStatus?: { warning?: boolean; error?: boolean };\n  showWarnings?: boolean;\n  showErrors?: boolean;\n  /** Show 8 red AABB-corner spheres for calibration alignment. */\n  showCornerMarkers?: boolean;\n  cornerMarkerSizeMm?: number;\n  cornerMarkerColor?: string;\n  /**\n   * Beckhoff guiding-rail GLB URL + type to render alongside the module.\n   * When set, an additional GLB scene is mounted under the same\n   * module-local frame as the module, with its own origin-correction\n   * sidecar applied. `null` skips the rail (e.g. for ATH modules whose\n   * rail is baked into the module GLB, or for Hepco GFX rail systems).\n   */\n  guidingRail?: { railType: RailType3D; glbUrl: string } | null;\n  /** Optional sidecar override for the rail's origin correction. */\n  guidingRailCorrection?: OriginCorrection;\n  onClick?: (e: ThreeEvent<MouseEvent>) => void;\n}\n\nconst XtsModuleContent: React.FC<XtsModuleProps> = ({\n  module,\n  glbUrl,\n  originCorrection,\n  assetsBaseUrl = '/models',\n  noSidecar = false,\n  selected = false,\n  selectionColor = '#FFE090',\n  highlightColor,\n  moduleGlobalNumber,\n  driveStatus,\n  showWarnings = true,\n  showErrors = true,\n  showCornerMarkers = false,\n  cornerMarkerSizeMm = 10,\n  cornerMarkerColor = '#FF2030',\n  guidingRail,\n  guidingRailCorrection,\n  onClick,\n}) => {\n  // Subscribe to the imperative module-status store. When an entry\n  // exists for this module's globalNumber it overrides the config-time\n  // `driveStatus`. `useSyncExternalStore` keeps the subscription\n  // narrowly scoped — only this module re-renders on status changes.\n  const statusStore = useContext(ModuleStatusStoreContext);\n  const liveStatus = useSyncExternalStore(\n    useMemo(\n      () => (listener: () => void) => {\n        if (!statusStore || moduleGlobalNumber === undefined) return () => {};\n        return statusStore.subscribe(moduleGlobalNumber, listener);\n      },\n      [statusStore, moduleGlobalNumber],\n    ),\n    () =>\n      statusStore && moduleGlobalNumber !== undefined\n        ? statusStore.get(moduleGlobalNumber)\n        : undefined,\n    () => undefined,\n  );\n  const effectiveDriveStatus = liveStatus ?? driveStatus;\n  const matrix = useMemo(\n    () => poseToMatrix4(module.startWorldPose),\n    [module.startWorldPose],\n  );\n\n  const sidecar = useModuleSidecar(\n    noSidecar ? ('AT2000_0250' as const) : module.moduleType,\n    assetsBaseUrl,\n  );\n  const effectiveCorrection =\n    originCorrection ??\n    (noSidecar ? DEFAULT_ORIGIN_CORRECTION : sidecar.correction);\n\n  // Hooks must run unconditionally (rules-of-hooks). Pass empty string when\n  // no GLB to skip loading; the hook handles the empty case internally.\n  const gltf = useGltfClone(glbUrl ?? '');\n  const length = module.catalog.moduleLengthMm;\n  // Selection tint (constant) + drive-status blink (pulse) on the\n  // module's own GLB materials — clone-on-write so the shared cache\n  // material stays untouched.\n  useGltfHighlight(gltf, {\n    selected,\n    selectionColor,\n    highlightColor,\n    driveStatus: effectiveDriveStatus,\n    showWarnings,\n    showErrors,\n  });\n\n  // Pick which (if any) status icon to mount above the module.\n  const iconKind: 'warning' | 'error' | null =\n    effectiveDriveStatus?.error && showErrors !== false\n      ? 'error'\n      : effectiveDriveStatus?.warning && showWarnings !== false\n        ? 'warning'\n        : null;\n\n  return (\n    <group\n      matrixAutoUpdate={false}\n      matrix={matrix}\n      onClick={onClick}\n      // Pointer events bubble — child modules' clicks would hit the parent\n      // group otherwise. Stop propagation to keep selection precise.\n      onPointerDown={(e) => {\n        if (onClick) e.stopPropagation();\n      }}\n    >\n      {!glbUrl || !gltf ? (\n        <PlaceholderMesh moduleLengthMm={length} />\n      ) : (\n        <ModuleGltfGroup\n          gltf={gltf}\n          originCorrection={effectiveCorrection}\n          cornerMarkers={\n            showCornerMarkers && sidecar.sidecar?.approximateBoundsMm\n              ? {\n                  bounds: sidecar.sidecar.approximateBoundsMm,\n                  sizeMm: cornerMarkerSizeMm,\n                  color: cornerMarkerColor,\n                }\n              : null\n          }\n        />\n      )}\n      {guidingRail && (\n        <GuidingRailGltfGroup\n          railType={guidingRail.railType}\n          glbUrl={guidingRail.glbUrl}\n          assetsBaseUrl={assetsBaseUrl}\n          correctionOverride={guidingRailCorrection}\n        />\n      )}\n      {iconKind && (\n        <DriveStatusIcon\n          kind={iconKind}\n          positionMm={[length / 2, -48, 130]}\n        />\n      )}\n    </group>\n  );\n};\n\n/**\n * Module rows are stable for the lifetime of a configuration — only\n * sidecar overrides, selection and drive status flip during normal\n * use. React.memo with shallow-equal cuts the per-frame mover-position\n * cascade so static modules don't reconcile when only a mover moved.\n */\nexport const XtsModule: React.FC<XtsModuleProps> = React.memo((props) => (\n  <Suspense\n    fallback={\n      <group matrixAutoUpdate={false} matrix={poseToMatrix4(props.module.startWorldPose)}>\n        <PlaceholderMesh moduleLengthMm={props.module.catalog.moduleLengthMm} />\n      </group>\n    }\n  >\n    <XtsModuleContent {...props} />\n  </Suspense>\n));\nXtsModule.displayName = 'XtsModule';\n\nconst PlaceholderMesh: React.FC<{ moduleLengthMm: number }> = ({\n  moduleLengthMm,\n}) => {\n  return (\n    <mesh position={[moduleLengthMm / 2, -48, 50]}>\n      <boxGeometry args={[moduleLengthMm, 96, 100]} />\n      <meshBasicMaterial color=\"#FFB000\" wireframe />\n    </mesh>\n  );\n};\n\nconst ModuleGltfGroup: React.FC<{\n  gltf: GLTF;\n  originCorrection: OriginCorrection;\n  cornerMarkers: {\n    bounds: { min: Vec3; max: Vec3 };\n    sizeMm: number;\n    color: string;\n  } | null;\n}> = ({ gltf, originCorrection, cornerMarkers }) => {\n  return (\n    <group\n      position={originCorrection.translateMm}\n      rotation={[\n        originCorrection.rotationDegEuler[0] * DEG2RAD,\n        originCorrection.rotationDegEuler[1] * DEG2RAD,\n        originCorrection.rotationDegEuler[2] * DEG2RAD,\n        'XYZ',\n      ]}\n    >\n      <primitive object={gltf.scene} />\n      {cornerMarkers && (\n        <ModuleCornerMarkers\n          bounds={cornerMarkers.bounds}\n          sizeMm={cornerMarkers.sizeMm}\n          color={cornerMarkers.color}\n        />\n      )}\n    </group>\n  );\n};\n\n/**\n * Renders a Beckhoff guiding-rail GLB in the module-local frame, with its\n * own origin-correction sidecar applied. The rail sits next to the motor\n * module so the mover wheels visually engage it.\n */\nconst GuidingRailGltfGroup: React.FC<{\n  railType: RailType3D;\n  glbUrl: string;\n  assetsBaseUrl: string;\n  correctionOverride?: OriginCorrection;\n}> = ({ railType, glbUrl, assetsBaseUrl, correctionOverride }) => {\n  const sidecar = useRailSidecar(railType, assetsBaseUrl);\n  const gltf = useGltfClone(glbUrl);\n  const correction = correctionOverride ?? sidecar.correction;\n  if (!gltf) return null;\n  return (\n    <group\n      position={correction.translateMm}\n      rotation={[\n        correction.rotationDegEuler[0] * DEG2RAD,\n        correction.rotationDegEuler[1] * DEG2RAD,\n        correction.rotationDegEuler[2] * DEG2RAD,\n        'XYZ',\n      ]}\n    >\n      <primitive object={gltf.scene} />\n    </group>\n  );\n};\n\n/** Compute approximate AABB of a built module for zoomToFit aggregation. */\nexport function approximateModuleBounds(module: BuiltModule): Box3 {\n  const length = module.catalog.moduleLengthMm;\n  const min = new Vector3(0, -50, 0);\n  const max = new Vector3(length, 50, 100);\n  const m = poseToMatrix4(module.startWorldPose);\n  const box = new Box3(min, max);\n  box.applyMatrix4(m);\n  return box;\n}\n","/**\n * <MoverIdLabel> — Camera-facing 3D text label that shows a mover's\n * `id` above the mover GLB. Mounted by `<XtsMover>` when\n * `DisplayOptions.showMoverIds === true`.\n *\n * Renders via drei's `<Billboard>` + `<Text>` (troika-three-text under\n * the hood) so the label stays readable as the camera orbits. All\n * styling is driven by `MoverIdLabelOptions`; the component supplies\n * the documented defaults (15 mm black text, 55 mm above the mover's\n * magnet-plate origin, Roboto Condensed via jsDelivr).\n */\n\nimport React from 'react';\nimport { Billboard, Text } from '@react-three/drei';\nimport { DEFAULT_LABEL_FONT_URL } from './DimensionLabel.js';\nimport type { MoverIdLabelOptions, Vec3 } from '../../types.js';\n\nconst DEFAULT_OFFSET_MM: Vec3 = [0, 0, 55];\nconst DEFAULT_FONT_SIZE_MM = 15;\nconst DEFAULT_COLOR = '#000000';\nconst DEFAULT_OUTLINE_COLOR = '#FFFFFF';\n\ninterface MoverIdLabelProps {\n  /** The mover's `id` — rendered verbatim. */\n  text: string;\n  options?: MoverIdLabelOptions;\n}\n\nexport const MoverIdLabel: React.FC<MoverIdLabelProps> = ({\n  text,\n  options,\n}) => {\n  const fontSizeMm = options?.fontSizeMm ?? DEFAULT_FONT_SIZE_MM;\n  const color = options?.color ?? DEFAULT_COLOR;\n  const offset = options?.offsetMm ?? DEFAULT_OFFSET_MM;\n  const fontUrl = options?.fontUrl ?? DEFAULT_LABEL_FONT_URL;\n  const outlineWidthMm = options?.outlineWidthMm ?? 0;\n  const outlineColor = options?.outlineColor ?? DEFAULT_OUTLINE_COLOR;\n\n  return (\n    <Billboard\n      position={[offset[0], offset[1], offset[2]]}\n      follow\n      lockX={false}\n      lockY={false}\n      lockZ={false}\n    >\n      <Text\n        fontSize={fontSizeMm}\n        color={color}\n        anchorX=\"center\"\n        anchorY=\"middle\"\n        font={fontUrl}\n        {...(outlineWidthMm > 0\n          ? { outlineWidth: outlineWidthMm, outlineColor }\n          : {})}\n      >\n        {text}\n      </Text>\n    </Billboard>\n  );\n};\n","/**\n * <XtsMover> — Renders a single mover positioned along a Part's chain.\n *\n * Phase-1: GLB or Wireframe-AABB placeholder. The mover-world transform is\n * computed each render from `chain` + `partPositionMm`.\n *\n * Phase-6 (selection): forwards click events with the MoverRef and\n * applies an emissive tint to the GLB's materials (via useGltfHighlight)\n * when `selected`. Phase-7 (drive status): the same hook pulses the\n * emissive intensity at 1 Hz when warning / error is set, and a small\n * billboard <DriveStatusIcon> floats above the mover.\n *\n * Phase-7 (drive status): emissive glow when status.warning / status.error.\n */\n\nimport React, { Suspense, useContext, useRef } from 'react';\nimport { Group } from 'three';\nimport type { GLTF } from 'three-stdlib';\nimport { useFrame } from '@react-three/fiber';\nimport type { ThreeEvent } from '@react-three/fiber';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport { moverWorldAt } from '../../geometry/ChainBuilder.js';\nimport { useGltfClone } from './useGltfClone.js';\nimport { useGltfHighlight } from './useGltfHighlight.js';\nimport { SelectionTintContext } from './SelectionTintContext.js';\nimport { DriveStatusIcon } from './DriveStatusIcon.js';\nimport {\n  DEFAULT_ORIGIN_CORRECTION,\n  type OriginCorrection,\n} from '../../assets/SidecarLoader.js';\nimport { useMoverSidecar } from './useMoverSidecar.js';\nimport { MoverPositionStoreContext } from './MoverPositionStore.js';\nimport { MoverIdLabel } from './MoverIdLabel.js';\nimport { userToChainPositionMm } from '../../geometry/positionFrame.js';\nimport type {\n  MoverIdLabelOptions,\n  MoverType3D,\n  PositionFrame,\n} from '../../types.js';\n\nconst DEG2RAD = Math.PI / 180;\n\ninterface XtsMoverProps {\n  chain: BuiltChain;\n  partPositionMm: number;\n  glbUrl: string;\n  /**\n   * Mover-id used to look up the imperative position store. When the\n   * consumer drives positions via `XtsViewer3DRef.setMoverPosition`,\n   * the store entry beats `partPositionMm` (which then acts as a fallback\n   * for the very first frame and for movers that were never written to\n   * the store).\n   */\n  moverId?: number;\n  /** When set, overrides the fetched sidecar's correction (live calibration). */\n  originCorrection?: OriginCorrection;\n  /** Mover type for sidecar lookup. Required when no override is provided. */\n  moverType?: MoverType3D;\n  /** Base URL for sidecar lookups. */\n  assetsBaseUrl?: string;\n  pathLengthMm?: number;\n  heightMm?: number;\n  selected?: boolean;\n  selectionColor?: string;\n  driveStatus?: { warning?: boolean; error?: boolean };\n  showWarnings?: boolean;\n  showErrors?: boolean;\n  /**\n   * When true, render the mover's `id` as a 3D text label above the\n   * mover. Wired through from `DisplayOptions.showMoverIds`. Off by\n   * default to keep the scene clean unless the host opts in.\n   */\n  showMoverId?: boolean;\n  /** Style overrides for the mover-id label. */\n  moverIdLabelOptions?: MoverIdLabelOptions;\n  onClick?: (e: ThreeEvent<MouseEvent>) => void;\n  /**\n   * XPU positionFrame applied to `partPositionMm` (and to live store\n   * reads). When omitted, positions are taken as chain-frame values.\n   */\n  positionFrame?: PositionFrame;\n  /** Children rendered in the mover's frame (e.g. tools, custom assets). */\n  children?: React.ReactNode;\n}\n\nconst XtsMoverContent: React.FC<XtsMoverProps> = ({\n  chain,\n  partPositionMm,\n  moverId,\n  glbUrl,\n  originCorrection,\n  moverType = 'AT9014_0055',\n  assetsBaseUrl = '/models',\n  pathLengthMm = 70,\n  heightMm = 125,\n  selected = false,\n  selectionColor = '#FFE090',\n  driveStatus,\n  showWarnings = true,\n  showErrors = true,\n  showMoverId = false,\n  moverIdLabelOptions,\n  onClick,\n  positionFrame,\n  children,\n}) => {\n  const positionStore = useContext(MoverPositionStoreContext);\n  const groupRef = useRef<Group>(null);\n\n  // Imperative pose update — runs every frame, no React render\n  // scheduled. The store wins when an entry is present (the consumer\n  // drove the position via the ref API); otherwise we fall back to the\n  // prop-driven `partPositionMm` from config so the existing contract\n  // keeps working unchanged.\n  useFrame(({ invalidate }) => {\n    if (!groupRef.current) return;\n    const userPos =\n      moverId !== undefined && positionStore?.has(moverId)\n        ? (positionStore.get(moverId) as number)\n        : partPositionMm;\n    const chainPos = userToChainPositionMm(userPos, positionFrame);\n    const pose = moverWorldAt(chain, chainPos);\n    if (!pose) return;\n    groupRef.current.position.set(\n      pose.positionMm[0],\n      pose.positionMm[1],\n      pose.positionMm[2],\n    );\n    groupRef.current.rotation.set(0, 0, (pose.yawDeg * Math.PI) / 180);\n  });\n\n  const sidecar = useMoverSidecar(moverType, assetsBaseUrl);\n  const effectiveCorrection =\n    originCorrection ?? sidecar.correction ?? DEFAULT_ORIGIN_CORRECTION;\n\n  const gltf = useGltfClone(glbUrl ?? '');\n  // Selection tint (constant) + drive-status blink (pulse) consolidated\n  // on the same per-mesh emissive channel. Clone-on-write keeps the\n  // shared cache material untouched.\n  useGltfHighlight(gltf, {\n    selected,\n    selectionColor,\n    driveStatus,\n    showWarnings,\n    showErrors,\n  });\n\n  const iconKind: 'warning' | 'error' | null =\n    driveStatus?.error && showErrors !== false\n      ? 'error'\n      : driveStatus?.warning && showWarnings !== false\n        ? 'warning'\n        : null;\n\n  return (\n    <group\n      ref={groupRef}\n      onClick={onClick}\n      onPointerDown={(e) => {\n        if (onClick) e.stopPropagation();\n      }}\n    >\n      {!glbUrl || !gltf ? (\n        <mesh position={[0, 0, 50]}>\n          <boxGeometry args={[pathLengthMm, 50, heightMm]} />\n          <meshBasicMaterial color=\"#3D88E0\" wireframe />\n        </mesh>\n      ) : (\n        <group\n          position={effectiveCorrection.translateMm}\n          rotation={[\n            effectiveCorrection.rotationDegEuler[0] * DEG2RAD,\n            effectiveCorrection.rotationDegEuler[1] * DEG2RAD,\n            effectiveCorrection.rotationDegEuler[2] * DEG2RAD,\n            'XYZ',\n          ]}\n        >\n          <primitive object={(gltf as GLTF).scene} />\n        </group>\n      )}\n      {iconKind && (\n        <DriveStatusIcon\n          kind={iconKind}\n          positionMm={[0, 0, heightMm + 20]}\n        />\n      )}\n      {showMoverId && moverId !== undefined && (\n        <MoverIdLabel\n          text={String(moverId)}\n          {...(moverIdLabelOptions ? { options: moverIdLabelOptions } : {})}\n        />\n      )}\n      {/* Broadcast our selection state to mover-bound children\n       *  (AT8200 tools, custom assets) so they tint with the same\n       *  colour. CustomAssetMesh subscribes via SelectionTintContext. */}\n      <SelectionTintContext.Provider\n        value={{ selected, color: selectionColor }}\n      >\n        {children}\n      </SelectionTintContext.Provider>\n    </group>\n  );\n};\n\nexport const XtsMover: React.FC<XtsMoverProps> = (props) => (\n  <Suspense\n    fallback={\n      <group>\n        <mesh>\n          <boxGeometry args={[70, 50, 125]} />\n          <meshBasicMaterial color=\"#3D88E0\" wireframe />\n        </mesh>\n      </group>\n    }\n  >\n    <XtsMoverContent {...props} />\n  </Suspense>\n);\n","/**\n * useToolSidecar — same shape as useModuleSidecar but for mover tools.\n *\n * Lookup order: built-in compiled sidecar → HTTP fetch → identity.\n */\n\nimport { useEffect, useState } from 'react';\nimport {\n  SidecarLoader,\n  type MoverToolSidecar,\n  type OriginCorrection,\n  DEFAULT_ORIGIN_CORRECTION,\n  toolSidecarFilename,\n} from '../../assets/SidecarLoader.js';\nimport { BUILTIN_TOOL_SIDECARS } from '../../assets/builtinSidecars.js';\nimport { useSidecarSource } from '../../assets/SidecarSourceContext.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport type { MoverToolType3D } from '../../types.js';\n\nconst SHARED = new SidecarLoader();\n\nexport function useToolSidecar(\n  toolType: MoverToolType3D,\n  assetsBaseUrl: string,\n): { sidecar: MoverToolSidecar | undefined; correction: OriginCorrection } {\n  const { useBuiltins } = useSidecarSource();\n  const builtin =\n    toolType === 'Custom' || !useBuiltins\n      ? undefined\n      : BUILTIN_TOOL_SIDECARS[toolType];\n  const [sidecar, setSidecar] = useState<MoverToolSidecar | undefined>(\n    builtin,\n  );\n\n  useEffect(() => {\n    if (toolType === 'Custom') {\n      setSidecar(undefined);\n      return;\n    }\n    if (builtin) {\n      setSidecar(builtin);\n      return;\n    }\n    let alive = true;\n    const url = composeAssetUrl(assetsBaseUrl, toolSidecarFilename(toolType));\n    SHARED.fetchTool(url)\n      .then((s) => {\n        if (alive) setSidecar(s);\n      })\n      .catch(() => {\n        if (alive) setSidecar(undefined);\n      });\n    return () => {\n      alive = false;\n    };\n  }, [toolType, assetsBaseUrl, builtin]);\n\n  return {\n    sidecar,\n    correction: sidecar?.originCorrection ?? DEFAULT_ORIGIN_CORRECTION,\n  };\n}\n","/**\n * <XtsMoverTools> — Renders the NCT mover-tool carriers.\n *\n * Tools live in the mover-local frame: +X = travel direction, +Z = up.\n * Each tool's own GLB origin-correction (from <toolType>.tool.meta.json) is\n * applied INSIDE the offset specified by the user; the tool's offsetMm /\n * rotationDegEuler then position the corrected GLB on the mover.\n *\n * Custom tools accept a `customGlbUrl` instead of a predefined `toolType`,\n * with their own `customOriginCorrection`.\n */\n\nimport React from 'react';\nimport { CustomAssetMesh } from './CustomAssetMesh.js';\nimport { useToolSidecar } from './useToolSidecar.js';\nimport { resolveToolGlbUrl } from '../../assets/AssetManifest.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport {\n  DEFAULT_ORIGIN_CORRECTION,\n  type OriginCorrection,\n} from '../../assets/SidecarLoader.js';\nimport type {\n  AssetManifest,\n  MoverToolConfig,\n  MoverToolType3D,\n} from '../../types.js';\n\nconst DEG2RAD = Math.PI / 180;\n\ninterface XtsMoverToolsProps {\n  tools: MoverToolConfig[];\n  assetsBaseUrl: string;\n  assetManifest?: AssetManifest;\n  /** Live calibration overrides keyed by toolType. */\n  toolOverrides?: Partial<Record<MoverToolType3D, OriginCorrection>>;\n}\n\nexport const XtsMoverTools: React.FC<XtsMoverToolsProps> = ({\n  tools,\n  assetsBaseUrl,\n  assetManifest,\n  toolOverrides,\n}) => {\n  return (\n    <group name=\"xts-mover-tools\">\n      {tools.map((tool, i) => (\n        <ToolInstance\n          key={tool.id ?? `${tool.toolType}-${i}`}\n          tool={tool}\n          assetsBaseUrl={assetsBaseUrl}\n          assetManifest={assetManifest}\n          override={\n            tool.toolType !== 'Custom'\n              ? toolOverrides?.[tool.toolType]\n              : undefined\n          }\n        />\n      ))}\n    </group>\n  );\n};\n\nconst ToolInstance: React.FC<{\n  tool: MoverToolConfig;\n  assetsBaseUrl: string;\n  assetManifest?: AssetManifest;\n  override?: OriginCorrection;\n}> = ({ tool, assetsBaseUrl, assetManifest, override }) => {\n  const url =\n    tool.toolType === 'Custom'\n      ? tool.customGlbUrl ?? ''\n      : composeAssetUrl(\n          assetsBaseUrl,\n          resolveToolGlbUrl(tool.toolType, assetManifest?.tools),\n        );\n  // Default placement: 30 mm above the magnet plate so the tool sits\n  // visibly on top of the mover regardless of GLB origin choice.\n  const offset = tool.offsetMm ?? [0, 0, 30];\n\n  // Predefined tools pull origin-correction from <toolType>.tool.meta.json;\n  // Custom tools use the user-supplied customOriginCorrection. Live override\n  // beats both for the calibration tool.\n  const sidecar = useToolSidecar(\n    tool.toolType !== 'Custom' ? tool.toolType : ('AT8200_1000_0100' as const),\n    assetsBaseUrl,\n  );\n  const correction: OriginCorrection =\n    override ??\n    (tool.toolType === 'Custom'\n      ? tool.customOriginCorrection ?? DEFAULT_ORIGIN_CORRECTION\n      : sidecar.correction);\n\n  return (\n    <group\n      position={offset}\n      rotation={[\n        (tool.rotationDegEuler?.[0] ?? 0) * DEG2RAD,\n        (tool.rotationDegEuler?.[1] ?? 0) * DEG2RAD,\n        (tool.rotationDegEuler?.[2] ?? 0) * DEG2RAD,\n        'XYZ',\n      ]}\n    >\n      <CustomAssetMesh\n        glbUrl={url}\n        positionMm={correction.translateMm}\n        rotationDegEuler={correction.rotationDegEuler}\n        opacity={tool.opacity ?? 1}\n        visible={tool.visible !== false}\n        placeholderSizeMm={[120, 60, 40]}\n      />\n    </group>\n  );\n};\n","/**\n * <InstancedMoverBatch> — renders all movers of the same GLB type as a\n * single InstancedMesh. Reduces draw calls from N to 1 per mover-type.\n *\n * Per-instance transforms are updated imperatively every frame via the\n * MoverPositionStore. Per-instance colors encode selection state.\n *\n * Children (tools, custom assets) and hit-testing groups are still\n * rendered individually for event handling.\n */\n\nimport React, {\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n} from 'react';\nimport {\n  Color,\n  DynamicDrawUsage,\n  InstancedMesh,\n  Mesh,\n  Object3D,\n} from 'three';\nimport type { BufferGeometry, Material } from 'three';\nimport { useFrame } from '@react-three/fiber';\nimport { useGLTF } from '@react-three/drei';\nimport type { GLTF } from 'three-stdlib';\nimport { clone as cloneSkeleton } from 'three/examples/jsm/utils/SkeletonUtils.js';\nimport type { BuiltChain } from '../../geometry/ChainBuilder.js';\nimport { moverWorldAt } from '../../geometry/ChainBuilder.js';\nimport { MoverPositionStoreContext } from './MoverPositionStore.js';\nimport { userToChainPositionMm } from '../../geometry/positionFrame.js';\nimport type { PositionFrame } from '../../types.js';\n\nconst _obj = new Object3D();\nconst _color = new Color();\n\ninterface MoverInstance {\n  moverId: number;\n  partPositionMm: number;\n  chain: BuiltChain;\n  selected: boolean;\n  positionFrame?: PositionFrame;\n}\n\ninterface InstancedMoverBatchProps {\n  glbUrl: string;\n  movers: MoverInstance[];\n  selectionColor?: string;\n  defaultColor?: string;\n}\n\nexport const InstancedMoverBatch: React.FC<InstancedMoverBatchProps> = ({\n  glbUrl,\n  movers,\n  selectionColor = '#90E0FF',\n  defaultColor = '#ffffff',\n}) => {\n  const gltf = useGLTF(glbUrl) as GLTF;\n  const meshRef = useRef<InstancedMesh>(null);\n  const positionStore = useContext(MoverPositionStoreContext);\n\n  const { geometry, material } = useMemo(() => {\n    const scene = cloneSkeleton(gltf.scene);\n    let geo: BufferGeometry | null = null;\n    let mat: Material | Material[] | null = null;\n    scene.traverse((obj) => {\n      const m = obj as Mesh;\n      if (m.isMesh && !geo) {\n        geo = m.geometry;\n        mat = m.material;\n      }\n    });\n    return { geometry: geo, material: mat };\n  }, [gltf]);\n\n  const count = movers.length;\n\n  useEffect(() => {\n    const inst = meshRef.current;\n    if (!inst) return;\n    inst.instanceMatrix.setUsage(DynamicDrawUsage);\n    if (inst.instanceColor) {\n      inst.instanceColor.setUsage(DynamicDrawUsage);\n    }\n    inst.castShadow = true;\n    inst.receiveShadow = true;\n  }, [count]);\n\n  useFrame(() => {\n    const inst = meshRef.current;\n    if (!inst) return;\n\n    let dirty = false;\n    for (let i = 0; i < movers.length; i++) {\n      const mover = movers[i]!;\n      const userPos =\n        mover.moverId !== undefined && positionStore?.has(mover.moverId)\n          ? (positionStore.get(mover.moverId) as number)\n          : mover.partPositionMm;\n      const chainPos = userToChainPositionMm(userPos, mover.positionFrame);\n      const pose = moverWorldAt(mover.chain, chainPos);\n      if (!pose) continue;\n\n      _obj.position.set(pose.positionMm[0], pose.positionMm[1], pose.positionMm[2]);\n      _obj.rotation.set(0, 0, (pose.yawDeg * Math.PI) / 180);\n      _obj.updateMatrix();\n      inst.setMatrixAt(i, _obj.matrix);\n\n      _color.set(mover.selected ? selectionColor : defaultColor);\n      inst.setColorAt(i, _color);\n\n      dirty = true;\n    }\n\n    if (dirty) {\n      inst.instanceMatrix.needsUpdate = true;\n      if (inst.instanceColor) inst.instanceColor.needsUpdate = true;\n      inst.computeBoundingSphere();\n    }\n  });\n\n  if (!geometry || !material || count === 0) return null;\n\n  return (\n    <instancedMesh\n      ref={meshRef}\n      args={[geometry, material as Material, count]}\n      frustumCulled={false}\n    />\n  );\n};\n","/**\n * <ProcessingUnitRoot> — renders modules + movers (+ mover-bound custom\n * assets and tools) for one XPU.\n *\n * Memoized so updates that don't touch the structural xpu reference\n * short-circuit. Mover-position ticks update through the\n * MoverPositionStore inside <XtsMover>'s useFrame, bypassing React.\n */\n\nimport React, { Suspense, useMemo } from 'react';\nimport type { ThreeEvent } from '@react-three/fiber';\nimport {\n  buildChain,\n  type BuiltChain,\n} from '../../geometry/ChainBuilder.js';\nimport {\n  isModuleSelected,\n  isMoverSelected,\n} from '../../interaction/SelectionManager.js';\nimport {\n  resolveGuidingRailGlbUrl,\n  resolveGuidingRailType,\n  resolveModuleGlbUrl,\n  resolveMoverGlbUrl,\n} from '../../assets/AssetManifest.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport { getMoverEntry } from '../../geometry/MoverCatalog.js';\nimport { HepcoGfxRail } from './HepcoGfxRail.js';\nimport {\n  resolveHepcoGfxProfile,\n  type HepcoGfxRailProfileDims,\n} from '../../geometry/HepcoGfxRailProfile.js';\nimport { XtsModule } from './XtsModule.js';\nimport { XtsMover } from './XtsMover.js';\nimport { XtsMoverTools } from './XtsMoverTools.js';\nimport { CustomAssetMesh } from './CustomAssetMesh.js';\nimport { PartTransformGroup } from './PartTransformGroup.js';\nimport { InstancedMoverBatch } from './InstancedMoverBatch.js';\nimport type { NormalizedXtsConfig } from '../../geometry/normalizeXtsConfig.js';\nimport type {\n  AssetManifest,\n  DisplayOptions,\n  ModuleHighlight,\n  ModuleRef,\n  ModuleType3D,\n  MoverRef,\n  MoverToolType3D,\n  MoverType3D,\n  RailType3D,\n  SelectionState,\n} from '../../types.js';\nimport type { OriginCorrection } from '../../assets/SidecarLoader.js';\n\nconst DEG2RAD = Math.PI / 180;\n\nexport interface SceneSidecarOverrides {\n  modules?: Partial<Record<ModuleType3D, OriginCorrection>>;\n  movers?: Partial<Record<MoverType3D, OriginCorrection>>;\n  tools?: Partial<Record<MoverToolType3D, OriginCorrection>>;\n  rails?: Partial<Record<RailType3D, OriginCorrection>>;\n}\n\ninterface ProcessingUnitRootProps {\n  xpu: NormalizedXtsConfig['processingUnits'][number];\n  assetsBaseUrl: string;\n  assetManifest?: AssetManifest;\n  display?: DisplayOptions;\n  selection?: SelectionState;\n  selectionColors?: { module?: string; mover?: string };\n  onModuleClick?: (ref: ModuleRef, e: ThreeEvent<MouseEvent>) => void;\n  onMoverClick?: (ref: MoverRef, e: ThreeEvent<MouseEvent>) => void;\n  moduleHighlights?: ModuleHighlight[];\n  sidecarOverrides?: SceneSidecarOverrides;\n  /** All `customAssets` from the root config — mover-bound entries are\n   *  rendered as children of <XtsMover> so they ride along through the\n   *  imperative mover-position channel automatically. */\n  customAssets?: NormalizedXtsConfig['customAssets'];\n  /** Live override of the procedural Hepco-GFX rail profile dims. */\n  hepcoGfxProfile?: Partial<HepcoGfxRailProfileDims>;\n  /** Render mover bodies via InstancedMesh for reduced draw calls. */\n  instancing?: boolean;\n}\n\nconst ProcessingUnitRootImpl: React.FC<ProcessingUnitRootProps> = ({\n  xpu,\n  assetsBaseUrl,\n  assetManifest,\n  display,\n  selection,\n  selectionColors,\n  onModuleClick,\n  onMoverClick,\n  moduleHighlights,\n  sidecarOverrides,\n  customAssets,\n  hepcoGfxProfile,\n  instancing = false,\n}) => {\n  const resolvedHepcoProfile = useMemo(\n    () => resolveHepcoGfxProfile(hepcoGfxProfile),\n    [hepcoGfxProfile],\n  );\n  // Build chains per part once per render. ChainBuilder is cheap.\n  const chainsByPartOid = useMemo(() => {\n    const map = new Map<number, BuiltChain>();\n    for (const part of xpu.parts) {\n      map.set(part.globalNumber, buildChain(part.modules));\n    }\n    return map;\n  }, [xpu.parts]);\n\n  const highlightByType = useMemo(() => {\n    if (!moduleHighlights || moduleHighlights.length === 0) return null;\n    const map = new Map<ModuleType3D, string>();\n    for (const h of moduleHighlights) {\n      for (const t of h.moduleTypes) {\n        if (!map.has(t)) map.set(t, h.color);\n      }\n    }\n    return map;\n  }, [moduleHighlights]);\n\n  const railSystem = xpu.railSystem ?? 'Beckhoff';\n  const moverEntry = getMoverEntry(xpu.moverType);\n  const moverGlbUrl = composeAssetUrl(\n    assetsBaseUrl,\n    resolveMoverGlbUrl(xpu.moverType, assetManifest?.movers),\n  );\n\n  return (\n    <group name={`xpu-${xpu.objectId}`}>\n      {/* Modules */}\n      {xpu.parts.map((part) => {\n        const chain = chainsByPartOid.get(part.globalNumber);\n        if (!chain) return null;\n        return (\n          <PartTransformGroup\n            key={part.globalNumber}\n            name={`part-${part.globalNumber}`}\n            partTransformation={part.partTransformation}\n          >\n            {railSystem === 'HepcoGfx' && (\n              <HepcoGfxRail chain={chain} profile={resolvedHepcoProfile} />\n            )}\n            {chain.modules.map((built, idx) => {\n              const filename = resolveModuleGlbUrl(\n                built.moduleType,\n                railSystem,\n                assetManifest?.modules,\n              );\n              const url = filename\n                ? composeAssetUrl(assetsBaseUrl, filename)\n                : null;\n              // Beckhoff guide rails are rendered as a separate GLB next to\n              // each module. HepcoGfx swaps the rail look entirely (handled\n              // in a later iteration) — for now skip the rail mesh.\n              const railType =\n                railSystem === 'Beckhoff'\n                  ? resolveGuidingRailType(built.moduleType)\n                  : null;\n              const railGlbFile = railType\n                ? resolveGuidingRailGlbUrl(\n                    railType,\n                    assetManifest?.guidingRails,\n                  )\n                : '';\n              const guidingRail =\n                railType && railGlbFile\n                  ? {\n                      railType,\n                      glbUrl: composeAssetUrl(assetsBaseUrl, railGlbFile),\n                    }\n                  : null;\n              const moduleRef: ModuleRef = {\n                processingUnitObjectId: xpu.objectId,\n                partObjectId: part.objectId,\n                moduleIndex: idx,\n              };\n              const isSelected = selection\n                ? isModuleSelected(selection, moduleRef)\n                : false;\n              const moduleHighlightColor =\n                highlightByType?.get(built.moduleType) ?? undefined;\n              return (\n                <XtsModule\n                  key={`${built.moduleType}-${idx}`}\n                  module={built}\n                  glbUrl={url}\n                  assetsBaseUrl={assetsBaseUrl}\n                  originCorrection={\n                    sidecarOverrides?.modules?.[built.moduleType]\n                  }\n                  guidingRail={guidingRail}\n                  guidingRailCorrection={\n                    railType\n                      ? sidecarOverrides?.rails?.[railType]\n                      : undefined\n                  }\n                  selected={isSelected}\n                  selectionColor={selectionColors?.module ?? '#FFE090'}\n                  highlightColor={moduleHighlightColor}\n                  {...(built.globalNumber !== undefined\n                    ? { moduleGlobalNumber: built.globalNumber }\n                    : {})}\n                  driveStatus={built.status}\n                  showWarnings={display?.showDriveWarnings !== false}\n                  showErrors={display?.showDriveErrors !== false}\n                  showCornerMarkers={\n                    display?.showModuleCornerMarkers ?? false\n                  }\n                  cornerMarkerSizeMm={display?.moduleCornerMarkerSizeMm}\n                  cornerMarkerColor={display?.moduleCornerMarkerColor}\n                  onClick={\n                    onModuleClick\n                      ? (e) => onModuleClick(moduleRef, e)\n                      : undefined\n                  }\n                />\n              );\n            })}\n          </PartTransformGroup>\n        );\n      })}\n\n      {/* Movers — instanced fast-path for scenes with many movers of\n       *  the same type and no per-mover tools/assets. Falls back to\n       *  individual rendering when selection, tools, or custom assets\n       *  require per-mover scene nodes. */}\n      {instancing && moverGlbUrl && xpu.movers.length >= 4 && (\n        <Suspense fallback={null}>\n          <InstancedMoverBatch\n            glbUrl={moverGlbUrl}\n            selectionColor={selectionColors?.mover ?? '#90E0FF'}\n            movers={xpu.movers.map((m) => ({\n              moverId: m.id,\n              partPositionMm: m.partPositionMm,\n              chain: chainsByPartOid.get(m.partOid)!,\n              selected: selection\n                ? isMoverSelected(selection, {\n                    processingUnitObjectId: xpu.objectId,\n                    moverIndex: m.index,\n                  })\n                : false,\n              positionFrame: xpu.positionFrame,\n            })).filter((m) => m.chain !== undefined)}\n          />\n        </Suspense>\n      )}\n      <Suspense fallback={null}>\n        {xpu.movers.map((m) => {\n          const chain = chainsByPartOid.get(m.partOid);\n          if (!chain) return null;\n          // Apply same partTransformation as modules so movers stay aligned.\n          const part = xpu.parts.find((p) => p.globalNumber === m.partOid);\n          // When instancing handles the body, only render if this mover\n          // has tools, custom assets, or needs per-mover event handling.\n          const hasChildren =\n            (m.tools && m.tools.length > 0) ||\n            (customAssets ?? []).some(\n              (a) =>\n                a.visible !== false &&\n                (a.binding.type === 'all-movers' ||\n                  (a.binding.type === 'mover' &&\n                    a.binding.moverRef.processingUnitObjectId === xpu.objectId &&\n                    a.binding.moverRef.moverIndex === m.index)),\n            );\n          const skipBody =\n            instancing && moverGlbUrl && xpu.movers.length >= 4 && !hasChildren && !onMoverClick;\n          if (skipBody) return null;\n          return (\n            <PartTransformGroup\n              key={m.id}\n              name={`part-${m.partOid}-mover-${m.id}`}\n              partTransformation={part?.partTransformation}\n            >\n              <XtsMover\n                chain={chain}\n                partPositionMm={m.partPositionMm}\n                moverId={m.id}\n                glbUrl={moverGlbUrl}\n                moverType={xpu.moverType}\n                assetsBaseUrl={assetsBaseUrl}\n                originCorrection={sidecarOverrides?.movers?.[xpu.moverType]}\n                pathLengthMm={moverEntry?.pathLengthMm}\n                heightMm={moverEntry?.heightMm}\n                {...(xpu.positionFrame\n                  ? { positionFrame: xpu.positionFrame }\n                  : {})}\n                selected={\n                  selection\n                    ? isMoverSelected(selection, {\n                        processingUnitObjectId: xpu.objectId,\n                        moverIndex: m.index,\n                      })\n                    : false\n                }\n                selectionColor={selectionColors?.mover ?? '#90E0FF'}\n                driveStatus={m.status}\n                showWarnings={display?.showDriveWarnings !== false}\n                showErrors={display?.showDriveErrors !== false}\n                showMoverId={display?.showMoverIds === true}\n                {...(display?.moverIdLabelOptions\n                  ? { moverIdLabelOptions: display.moverIdLabelOptions }\n                  : {})}\n                onClick={\n                  onMoverClick\n                    ? (e) =>\n                        onMoverClick(\n                          {\n                            processingUnitObjectId: xpu.objectId,\n                            moverIndex: m.index,\n                          },\n                          e,\n                        )\n                    : undefined\n                }\n              >\n                {m.tools && m.tools.length > 0 ? (\n                  <XtsMoverTools\n                    tools={m.tools}\n                    assetsBaseUrl={assetsBaseUrl}\n                    assetManifest={assetManifest}\n                    toolOverrides={sidecarOverrides?.tools}\n                  />\n                ) : null}\n                {(customAssets ?? []).map((asset) => {\n                  if (asset.visible === false) return null;\n                  const isAllMovers = asset.binding.type === 'all-movers';\n                  const isThisMover =\n                    asset.binding.type === 'mover' &&\n                    asset.binding.moverRef.processingUnitObjectId === xpu.objectId &&\n                    asset.binding.moverRef.moverIndex === m.index;\n                  if (!isAllMovers && !isThisMover) return null;\n                  const binding = asset.binding as {\n                    offsetMm?: [number, number, number];\n                    rotationDegEuler?: [number, number, number];\n                    scale?: number;\n                  };\n                  return (\n                    <CustomAssetMesh\n                      key={asset.id}\n                      glbUrl={asset.glbUrl}\n                      positionMm={binding.offsetMm ?? [0, 0, 0]}\n                      rotationDegEuler={binding.rotationDegEuler ?? [0, 0, 0]}\n                      scale={binding.scale ?? 1}\n                      opacity={asset.opacity}\n                    />\n                  );\n                })}\n              </XtsMover>\n            </PartTransformGroup>\n          );\n        })}\n      </Suspense>\n    </group>\n  );\n};\n\nexport const ProcessingUnitRoot = React.memo(ProcessingUnitRootImpl);\nProcessingUnitRoot.displayName = 'ProcessingUnitRoot';\n","/**\n * <XtsScene> — Top-level r3f scene contents (everything inside <Canvas>).\n *\n * Wiring layer: lights (<SceneLighting>), navigation (OrbitControls +\n * optional ViewCube), the orientation root, and per-XPU groups that\n * mount <ProcessingUnitRoot> together with stations / areas / heatmap /\n * dimensions / info-bar overlays.\n *\n * Module/Mover GLBs are loaded via Suspense; `useGltfClone` handles caching.\n */\n\nimport React, {\n  useContext,\n  useEffect,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n} from 'react';\nimport {\n  OrbitControls,\n  OrthographicCamera,\n  GizmoHelper,\n  GizmoViewcube,\n  Grid,\n  Stats,\n} from '@react-three/drei';\nimport type { ThreeEvent } from '@react-three/fiber';\nimport { useThree } from '@react-three/fiber';\nimport {\n  Box3,\n  Vector3,\n  type OrthographicCamera as ThreeOrthographicCamera,\n  type PerspectiveCamera as ThreePerspectiveCamera,\n} from 'three';\nimport type { OrbitControls as OrbitControlsImpl } from 'three-stdlib';\nimport { useAutoPauseOnHidden } from './useAutoPauseOnHidden.js';\nimport { useDemandRendering } from './useDemandRendering.js';\nimport { useShadowAutoUpdate } from './useShadowAutoUpdate.js';\nimport { ScenePostProcessing } from './ScenePostProcessing.js';\nimport { MoverPositionStoreContext } from './MoverPositionStore.js';\nimport {\n  buildChain,\n  type BuiltChain,\n} from '../../geometry/ChainBuilder.js';\nimport { resolveMoverGlbUrl } from '../../assets/AssetManifest.js';\nimport { composeAssetUrl } from '../../assets/AssetLoader.js';\nimport { XtsStations } from './XtsStations.js';\nimport { XtsAreas } from './XtsAreas.js';\nimport { XtsStopPositionMovers } from './XtsStopPositionMovers.js';\nimport { XtsStatorHeatmap } from './XtsStatorHeatmap.js';\nimport { XtsDimensions } from './XtsDimensions.js';\nimport { XtsInfoBars } from './XtsInfoBars.js';\nimport { XtsCustomAssets } from './XtsCustomAssets.js';\nimport { SceneLighting } from './SceneLighting.js';\nimport {\n  ProcessingUnitRoot,\n  type SceneSidecarOverrides,\n} from './ProcessingUnitRoot.js';\nimport { computeBoundingBox, computeTopDownOrtho } from './viewerHelpers.js';\nimport type {\n  AreaConfig,\n  AssetManifest,\n  CameraProjection,\n  CameraState,\n  DisplayOptions,\n  InfoBarConfig,\n  ModuleHighlight,\n  ModuleRef,\n  MoverRef,\n  PartTransformation,\n  SelectionState,\n  StationConfig,\n  StatorHeatmap,\n  TrackTransform,\n} from '../../types.js';\nimport type { NormalizedXtsConfig } from '../../geometry/normalizeXtsConfig.js';\nimport type { HepcoGfxRailProfileDims } from '../../geometry/HepcoGfxRailProfile.js';\n\nexport type { SceneSidecarOverrides };\n\nconst DEG2RAD = Math.PI / 180;\n\ninterface XtsSceneProps {\n  config: NormalizedXtsConfig;\n  assetsBaseUrl: string;\n  assetManifest?: AssetManifest;\n  initialCamera?: CameraState;\n  overlayFps?: boolean;\n  showGrid?: boolean;\n  shadows?: boolean;\n  shadowOnDemand?: boolean;\n  demandRendering?: boolean;\n  environmentLighting?: boolean;\n  environmentIntensity?: number;\n  display?: DisplayOptions;\n  selection?: SelectionState;\n  selectionColors?: { module?: string; mover?: string };\n  moduleHighlights?: ModuleHighlight[];\n  onModuleClick?: (ref: ModuleRef, e: ThreeEvent<MouseEvent>) => void;\n  onMoverClick?: (ref: MoverRef, e: ThreeEvent<MouseEvent>) => void;\n  onEmptyPointerMissed?: () => void;\n  performance?: {\n    autoPauseOnHidden?: boolean;\n    instancing?: boolean;\n    instancingThreshold?: number;\n    demandRendering?: boolean;\n    maxDpr?: number;\n    shadowOnDemand?: boolean;\n    webgpu?: boolean;\n  };\n  sidecarOverrides?: SceneSidecarOverrides;\n  trackTransformOverrides?: Record<number, TrackTransform>;\n  hepcoGfxProfile?: Partial<HepcoGfxRailProfileDims>;\n  viewCube?: {\n    enabled?: boolean;\n    alignment?:\n      | 'top-left'\n      | 'top-right'\n      | 'bottom-left'\n      | 'bottom-right'\n      | 'top-center'\n      | 'bottom-center'\n      | 'center-left'\n      | 'center-right'\n      | 'center-center';\n    marginPx?: [number, number];\n  };\n  onOrbitReady?: (controls: OrbitControlsImpl) => void;\n  /** Forwards the active default camera to the parent (perspective or ortho). */\n  onCameraReady?: (\n    camera: ThreePerspectiveCamera | ThreeOrthographicCamera,\n  ) => void;\n  /** Live camera projection. Default `'perspective'`. */\n  projection?: CameraProjection;\n  /** Frame straight down in orthographic mode. Default `true`. */\n  topDown?: boolean;\n  /** Interaction locks. */\n  lock?: { rotate?: boolean; pan?: boolean; zoom?: boolean; selection?: boolean };\n  /** Perspective camera start position (mirrors the Canvas `camera` prop). */\n  initialCameraPosition?: [number, number, number];\n  statorHeatmap?: StatorHeatmap;\n}\n\nexport const XtsScene: React.FC<XtsSceneProps> = ({\n  config,\n  assetsBaseUrl,\n  assetManifest,\n  showGrid = true,\n  display,\n  selection,\n  selectionColors,\n  moduleHighlights,\n  onModuleClick,\n  onMoverClick,\n  performance,\n  sidecarOverrides,\n  trackTransformOverrides,\n  hepcoGfxProfile,\n  shadows = false,\n  shadowOnDemand = false,\n  demandRendering = true,\n  environmentLighting = true,\n  environmentIntensity = 0.4,\n  viewCube,\n  overlayFps = false,\n  onOrbitReady,\n  onCameraReady,\n  projection = 'perspective',\n  topDown = true,\n  lock,\n  statorHeatmap,\n}) => {\n  const moverStore = useContext(MoverPositionStoreContext);\n  useAutoPauseOnHidden(performance?.autoPauseOnHidden !== false, demandRendering);\n  useDemandRendering(demandRendering, moverStore);\n  useShadowAutoUpdate(shadowOnDemand);\n  const orientation = config.orientation ?? {};\n  const orientationPos = orientation.positionMm ?? [0, 0, 0];\n  const orientationRot = orientation.rotationDegEuler ?? [0, 0, 0];\n\n  const showStations = display?.displayStations !== false;\n  const showAreas = display?.displayAreas !== false;\n  const showDimensions = display?.displayDimensions === true;\n\n  // Live 2D plan view: orthographic + straight-down framing.\n  const orthoMode = projection === 'orthographic' && topDown !== false;\n  // Scene AABB (stable per config) drives the ortho frustum + controls target.\n  const sceneBbox = useMemo(\n    () => computeBoundingBox(config, trackTransformOverrides),\n    [config, trackTransformOverrides],\n  );\n  const orthoCenter = useMemo<[number, number, number]>(() => {\n    const c = sceneBbox.getCenter(new Vector3());\n    return [c.x, c.y, c.z];\n  }, [sceneBbox]);\n  // OrbitControls interaction flags. In ortho top-down, rotation is auto-locked\n  // (a 2D plan has no meaningful orbit) unless `lock.rotate` is explicitly false.\n  const enableRotate = orthoMode\n    ? lock?.rotate === false\n    : lock?.rotate !== true;\n  const enablePan = lock?.pan !== true;\n  const enableZoom = lock?.zoom !== true;\n\n  // Pre-build chains shared by all overlays to avoid duplicate buildChain.\n  const chainsAll = useMemo(() => {\n    const map = new Map<number, BuiltChain>();\n    for (const xpu of config.processingUnits) {\n      for (const part of xpu.parts) {\n        map.set(part.globalNumber, buildChain(part.modules));\n      }\n    }\n    return map;\n  }, [config]);\n\n  const stationsForAllXpus: StationConfig[] = config.stations ?? [];\n  const areasForAllXpus: AreaConfig[] = config.areas ?? [];\n  const infoBarsByXpuObjectId = useMemo(() => {\n    const m = new Map<number, InfoBarConfig[]>();\n    for (const b of config.infoBars ?? []) {\n      const arr = m.get(b.processingUnitObjectId);\n      if (arr) arr.push(b);\n      else m.set(b.processingUnitObjectId, [b]);\n    }\n    return m;\n  }, [config.infoBars]);\n\n  return (\n    <>\n      <SceneLighting\n        shadows={shadows}\n        environmentLighting={environmentLighting}\n        environmentIntensity={environmentIntensity}\n      />\n      <ScenePostProcessing\n        ssao={display?.ssao}\n        ssaoIntensity={display?.ssaoIntensity}\n        ssaoRadius={display?.ssaoRadius}\n        bloom={display?.bloom}\n        bloomIntensity={display?.bloomIntensity}\n        bloomThreshold={display?.bloomThreshold}\n        bloomRadius={display?.bloomRadius}\n      />\n      {showGrid && (\n        <Grid\n          args={[5000, 5000]}\n          cellSize={100}\n          sectionSize={500}\n          cellColor=\"#506070\"\n          sectionColor=\"#90A0B0\"\n          // Three's Grid is XZ; we rotate to XY-plane (Z-up world).\n          rotation={[-Math.PI / 2, 0, 0]}\n          fadeDistance={5000}\n        />\n      )}\n      {orthoMode && (\n        <TopDownOrthoCamera bbox={sceneBbox} paddingFactor={1.1} />\n      )}\n      <OrbitControls\n        makeDefault\n        enableDamping\n        dampingFactor={0.1}\n        enableRotate={enableRotate}\n        enablePan={enablePan}\n        enableZoom={enableZoom}\n        rotateSpeed={1}\n        panSpeed={1}\n        zoomSpeed={1}\n        target={orthoMode ? orthoCenter : [0, 0, 0]}\n      />\n      {onOrbitReady && <ControlsCapture onReady={onOrbitReady} />}\n      {onCameraReady && <CameraCapture onReady={onCameraReady} />}\n      {overlayFps && <Stats />}\n      {viewCube?.enabled && (\n        <GizmoHelper\n          alignment={viewCube.alignment ?? 'bottom-right'}\n          margin={viewCube.marginPx ?? [80, 80]}\n        >\n          {/* Z-up label remap. drei's `faces` array is ordered\n              [+X, -X, +Y, -Y, +Z, -Z] and its defaults assume Y-up. */}\n          <GizmoViewcube\n            faces={['Right', 'Left', 'Front', 'Back', 'Top', 'Bottom']}\n            color=\"#1f5fa8\"\n            opacity={0.92}\n            strokeColor=\"#0e1116\"\n            textColor=\"#ffffff\"\n            hoverColor=\"#2a7ad6\"\n          />\n        </GizmoHelper>\n      )}\n      <group\n        position={orientationPos}\n        rotation={[\n          orientationRot[0] * DEG2RAD,\n          orientationRot[1] * DEG2RAD,\n          orientationRot[2] * DEG2RAD,\n          'XYZ',\n        ]}\n      >\n        {config.customAssets && config.customAssets.length > 0 && (\n          <XtsCustomAssets assets={config.customAssets} />\n        )}\n        {config.processingUnits.map((xpu) => {\n          const xpuChainsByOid = new Map<number, BuiltChain>();\n          const xpuChainsByPartObjectId = new Map<number, BuiltChain>();\n          // Per-part transforms keyed by both `globalNumber` (for components\n          // that key by partOid) and `objectId` (for InfoBars).\n          const xpuPartTransformsByOid = new Map<\n            number,\n            PartTransformation | undefined\n          >();\n          const xpuPartTransformsByPartObjectId = new Map<\n            number,\n            PartTransformation | undefined\n          >();\n          for (const part of xpu.parts) {\n            const chain = chainsAll.get(part.globalNumber);\n            if (chain) {\n              xpuChainsByOid.set(part.globalNumber, chain);\n              xpuChainsByPartObjectId.set(part.objectId, chain);\n            }\n            xpuPartTransformsByOid.set(\n              part.globalNumber,\n              part.partTransformation,\n            );\n            xpuPartTransformsByPartObjectId.set(\n              part.objectId,\n              part.partTransformation,\n            );\n          }\n          const xpuInfoBars = infoBarsByXpuObjectId.get(xpu.objectId) ?? [];\n          // Effective track transform = override (live calibration) over\n          // config value (persistent). All XPU-rooted children inherit it.\n          const tt =\n            trackTransformOverrides?.[xpu.objectId] ??\n            xpu.trackTransform ??\n            null;\n          // Default lift = 200 mm (table-top height). Must match\n          // DEFAULT_TRACK_Z_MM in geometry/trackTransform.ts so raycasting\n          // / bounds math agrees with the rendered scene.\n          const ttPos = tt?.positionMm ?? [0, 0, 200];\n          const ttRot = tt?.rotationDegEuler ?? [0, 0, 0];\n          const ttScale = tt?.scaleUniform ?? 1;\n          const ttVisible = tt?.visible !== false;\n          return (\n            <group\n              key={xpu.objectId}\n              name={`xpu-root-${xpu.objectId}`}\n              position={ttPos}\n              rotation={[\n                ttRot[0] * DEG2RAD,\n                ttRot[1] * DEG2RAD,\n                ttRot[2] * DEG2RAD,\n                'XYZ',\n              ]}\n              scale={ttScale}\n              visible={ttVisible}\n            >\n              <ProcessingUnitRoot\n                xpu={xpu}\n                assetsBaseUrl={assetsBaseUrl}\n                assetManifest={assetManifest}\n                display={display}\n                selection={selection}\n                selectionColors={selectionColors}\n                moduleHighlights={moduleHighlights}\n                onModuleClick={onModuleClick}\n                onMoverClick={onMoverClick}\n                sidecarOverrides={sidecarOverrides}\n                customAssets={config.customAssets}\n                instancing={performance?.instancing === true}\n                {...(hepcoGfxProfile ? { hepcoGfxProfile } : {})}\n              />\n              {showStations && (\n                <XtsStations\n                  stations={stationsForAllXpus.filter((s) =>\n                    s.partOids.some((oid) => xpuChainsByOid.has(oid)),\n                  )}\n                  chainsByPartOid={xpuChainsByOid}\n                  partTransformsByPartOid={xpuPartTransformsByOid}\n                  display={display}\n                  {...(xpu.positionFrame\n                    ? { positionFrame: xpu.positionFrame }\n                    : {})}\n                />\n              )}\n              {display?.showStopPositionMovers && (\n                <XtsStopPositionMovers\n                  stations={stationsForAllXpus.filter((s) =>\n                    s.partOids.some((oid) => xpuChainsByOid.has(oid)),\n                  )}\n                  chainsByPartOid={xpuChainsByOid}\n                  partTransformsByPartOid={xpuPartTransformsByOid}\n                  moverType={xpu.moverType}\n                  glbUrl={composeAssetUrl(\n                    assetsBaseUrl,\n                    resolveMoverGlbUrl(xpu.moverType, assetManifest?.movers),\n                  )}\n                  assetsBaseUrl={assetsBaseUrl}\n                  {...(display?.stopPositionMoverOptions\n                    ? { options: display.stopPositionMoverOptions }\n                    : {})}\n                  {...(xpu.positionFrame\n                    ? { positionFrame: xpu.positionFrame }\n                    : {})}\n                />\n              )}\n              {showAreas && areasForAllXpus.length > 0 && (\n                <XtsAreas\n                  areas={areasForAllXpus.filter((a) =>\n                    a.partOids.some((oid) => xpuChainsByOid.has(oid)),\n                  )}\n                  chainsByPartOid={xpuChainsByOid}\n                  partTransformsByPartOid={xpuPartTransformsByOid}\n                  display={display}\n                  {...(xpu.positionFrame\n                    ? { positionFrame: xpu.positionFrame }\n                    : {})}\n                />\n              )}\n              {display?.showStatorHeatmap &&\n                statorHeatmap &&\n                statorHeatmap.parts.length > 0 && (\n                  <XtsStatorHeatmap\n                    chainsByPartOid={xpuChainsByOid}\n                    partTransformsByPartOid={xpuPartTransformsByOid}\n                    parts={statorHeatmap.parts.filter((p) =>\n                      xpuChainsByOid.has(p.partOid),\n                    )}\n                    min={statorHeatmap.min}\n                    max={statorHeatmap.max}\n                    {...(statorHeatmap.minColor\n                      ? { minColor: statorHeatmap.minColor }\n                      : {})}\n                    {...(statorHeatmap.maxColor\n                      ? { maxColor: statorHeatmap.maxColor }\n                      : {})}\n                    {...(statorHeatmap.thicknessMm !== undefined\n                      ? { thicknessMm: statorHeatmap.thicknessMm }\n                      : {})}\n                    {...(statorHeatmap.displacementMm !== undefined\n                      ? { displacementMm: statorHeatmap.displacementMm }\n                      : {})}\n                    {...(statorHeatmap.lateralDisplacementMm !== undefined\n                      ? {\n                          lateralDisplacementMm:\n                            statorHeatmap.lateralDisplacementMm,\n                        }\n                      : {})}\n                    {...(statorHeatmap.segmentsPerModule !== undefined\n                      ? {\n                          segmentsPerModule: statorHeatmap.segmentsPerModule,\n                        }\n                      : {})}\n                    {...(statorHeatmap.opacity !== undefined\n                      ? { opacity: statorHeatmap.opacity }\n                      : {})}\n                    {...(xpu.positionFrame\n                      ? { positionFrame: xpu.positionFrame }\n                      : {})}\n                  />\n                )}\n              {showDimensions && (\n                <XtsDimensions\n                  chainsByPartOid={xpuChainsByOid}\n                  partTransformsByPartOid={xpuPartTransformsByOid}\n                  railSystem={xpu.railSystem ?? 'Beckhoff'}\n                  display={display}\n                  {...(xpu.positionFrame\n                    ? { positionFrame: xpu.positionFrame }\n                    : {})}\n                />\n              )}\n              {xpuInfoBars.length > 0 && (\n                <XtsInfoBars\n                  infoBars={xpuInfoBars}\n                  chainsByPartObjectId={xpuChainsByPartObjectId}\n                  partTransformsByPartObjectId={xpuPartTransformsByPartObjectId}\n                  {...(xpu.positionFrame\n                    ? { positionFrame: xpu.positionFrame }\n                    : {})}\n                />\n              )}\n            </group>\n          );\n        })}\n      </group>\n    </>\n  );\n};\n\n/**\n * Forwards the active OrbitControls instance to the parent on mount.\n *\n * `<OrbitControls makeDefault />` registers itself on `useThree().controls`\n * inside its own effect, which fires AFTER the Canvas's `onCreated`\n * callback. Reading `controls` synchronously from `onCreated` would\n * therefore yield `undefined`. This component subscribes to the store\n * slice so the callback fires exactly once when the handle becomes\n * available.\n */\nconst ControlsCapture: React.FC<{\n  onReady: (controls: OrbitControlsImpl) => void;\n}> = ({ onReady }) => {\n  const controls = useThree(\n    (state) => state.controls as OrbitControlsImpl | null,\n  );\n  useEffect(() => {\n    if (controls) onReady(controls);\n  }, [controls, onReady]);\n  return null;\n};\n\n/**\n * Forwards the active default camera to the parent. Fires whenever the default\n * camera changes — e.g. when <TopDownOrthoCamera makeDefault> mounts (switch to\n * 2D) or unmounts (back to the Canvas perspective camera). Keeps the imperative\n * ref handle pointing at the currently rendering camera.\n */\nconst CameraCapture: React.FC<{\n  onReady: (camera: ThreePerspectiveCamera | ThreeOrthographicCamera) => void;\n}> = ({ onReady }) => {\n  const camera = useThree((state) => state.camera);\n  useEffect(() => {\n    onReady(camera as ThreePerspectiveCamera | ThreeOrthographicCamera);\n  }, [camera, onReady]);\n  return null;\n};\n\n/**\n * Orthographic top-down (\"2D\") camera. Rendered with `makeDefault` so it takes\n * over the default camera at runtime WITHOUT remounting the WebGL context. The\n * frustum is fitted to the scene AABB + canvas aspect via the shared\n * `computeTopDownOrtho` helper, so the live 2D view matches\n * `exportScreenshot({ mode: 'top-down' })`. Re-fits on resize (aspect change)\n * and on AABB change (config update).\n */\nconst TopDownOrthoCamera: React.FC<{\n  bbox: Box3;\n  paddingFactor: number;\n}> = ({ bbox, paddingFactor }) => {\n  const camRef = useRef<ThreeOrthographicCamera>(null);\n  const size = useThree((s) => s.size);\n  const controls = useThree((s) => s.controls as OrbitControlsImpl | null);\n  const aspect = size.height > 0 ? size.width / size.height : 1;\n  const frustum = useMemo(\n    () => computeTopDownOrtho(bbox, aspect, paddingFactor),\n    [bbox, aspect, paddingFactor],\n  );\n  useLayoutEffect(() => {\n    const cam = camRef.current;\n    if (!cam) return;\n    cam.left = frustum.left;\n    cam.right = frustum.right;\n    cam.top = frustum.top;\n    cam.bottom = frustum.bottom;\n    cam.near = frustum.near;\n    cam.far = frustum.far;\n    cam.up.set(...frustum.up);\n    cam.position.set(...frustum.position);\n    cam.updateProjectionMatrix();\n    cam.lookAt(new Vector3(...frustum.target));\n    if (controls) {\n      controls.target.set(...frustum.target);\n      controls.update();\n    }\n  }, [frustum, controls]);\n  return (\n    <OrthographicCamera\n      ref={camRef}\n      makeDefault\n      up={frustum.up}\n      near={frustum.near}\n      far={frustum.far}\n      left={frustum.left}\n      right={frustum.right}\n      top={frustum.top}\n      bottom={frustum.bottom}\n      position={frustum.position}\n    />\n  );\n};\n\n/** Re-export so consumers building their own scenes can grab raw helpers. */\nexport type { XtsConfig } from '../../types.js';\n","/**\n * <CollisionMonitor> — runs `checkSamePathCollisions` continuously inside\n * the r3f Canvas and fires a callback when the result set changes.\n *\n * Lives inside `<XtsViewer3D>`'s Canvas so it can read live positions\n * from the MoverPositionStore via `useFrame` — same per-frame contract\n * as the mover groups themselves, no React reconciliation per tick.\n *\n * Throttling: pass `intervalMs` to limit the check rate (e.g. 50 ms for\n * 20 Hz monitoring on slow hardware). Default 0 = every animation frame.\n *\n * Change detection: the callback fires only when the collision set\n * actually changes — pair appears, pair disappears, or\n * `penetrationMm` for an existing pair shifts by more than 0.01 mm.\n * This keeps a UI bound to `onCollisionsChange` from re-rendering 60×\n * per second when the scene is steady.\n */\n\nimport { useContext, useEffect, useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport {\n  buildChain,\n  type BuiltChain,\n} from '../../geometry/ChainBuilder.js';\nimport {\n  checkSamePathCollisions,\n  type CheckMoverCollisionsOptions,\n  type MoverCollision,\n  type MoverProbe,\n} from '../../geometry/moverCollision.js';\nimport type { NormalizedXtsConfig } from '../../geometry/normalizeXtsConfig.js';\nimport { MoverPositionStoreContext } from './MoverPositionStore.js';\n\nconst PENETRATION_EPS_MM = 0.01;\n\ninterface CollisionMonitorProps {\n  config: NormalizedXtsConfig;\n  warningGapMm?: number;\n  intervalMs?: number;\n  forceClosedLoop?: boolean;\n  onCollisionsChange: (collisions: MoverCollision[]) => void;\n}\n\nexport const CollisionMonitor: React.FC<CollisionMonitorProps> = ({\n  config,\n  warningGapMm,\n  intervalMs = 0,\n  forceClosedLoop,\n  onCollisionsChange,\n}) => {\n  const store = useContext(MoverPositionStoreContext);\n  // Last-fired snapshot — keyed `idA|idB|penetrationFloor`. Used to\n  // suppress callback when nothing meaningful changed since the last\n  // tick.\n  const lastKeyRef = useRef<string>('');\n  const lastTickRef = useRef<number>(0);\n\n  // Pre-build chains + per-part mover lists once per config change. The\n  // collision math runs every frame but the topology only needs to be\n  // walked again when the config (modules / part list) changes.\n  const partsRef = useRef<\n    Array<{ chain: BuiltChain; partOid: number; xpuObjectId: number; moverList: Array<{\n      moverIndex: number;\n      id: number;\n      partOid: number;\n      moverType: NormalizedXtsConfig['processingUnits'][number]['moverType'];\n      partPositionMm: number;\n      pathLengthOverrideMm?: number;\n    }>; }>\n  >([]);\n  useEffect(() => {\n    const out: typeof partsRef.current = [];\n    for (const xpu of config.processingUnits) {\n      for (const part of xpu.parts) {\n        try {\n          const chain = buildChain(part.modules);\n          const moverList = xpu.movers\n            .filter((m) => m.partOid === part.globalNumber)\n            .map((m) => ({\n              moverIndex: m.index,\n              id: m.id,\n              partOid: m.partOid,\n              moverType: xpu.moverType,\n              partPositionMm: m.partPositionMm,\n              ...(xpu.moverType === 'Custom' &&\n              xpu.customMoverLayout?.pathLengthMm !== undefined\n                ? { pathLengthOverrideMm: xpu.customMoverLayout.pathLengthMm }\n                : {}),\n            }));\n          if (moverList.length >= 2) {\n            out.push({\n              chain,\n              partOid: part.globalNumber,\n              xpuObjectId: xpu.objectId,\n              moverList,\n            });\n          }\n        } catch {\n          // already validated by normalizeXtsConfig — defensive.\n        }\n      }\n    }\n    partsRef.current = out;\n    lastKeyRef.current = ''; // force initial fire on next tick\n  }, [config]);\n\n  useFrame(({ clock }) => {\n    if (intervalMs > 0) {\n      const t = clock.getElapsedTime() * 1000;\n      if (t - lastTickRef.current < intervalMs) return;\n      lastTickRef.current = t;\n    }\n\n    const opts: CheckMoverCollisionsOptions = {};\n    if (warningGapMm !== undefined) opts.warningGapMm = warningGapMm;\n    if (forceClosedLoop !== undefined) opts.forceClosedLoop = forceClosedLoop;\n\n    const all: MoverCollision[] = [];\n    for (const part of partsRef.current) {\n      const probes: MoverProbe[] = part.moverList.map((m) => {\n        const live = store?.get(m.id);\n        const probe: MoverProbe = {\n          ref: { processingUnitObjectId: part.xpuObjectId, moverIndex: m.moverIndex },\n          id: m.id,\n          partOid: m.partOid,\n          moverType: m.moverType,\n          partPositionMm: live ?? m.partPositionMm,\n        };\n        if (m.pathLengthOverrideMm !== undefined) {\n          probe.pathLengthMm = m.pathLengthOverrideMm;\n        }\n        return probe;\n      });\n      const out = checkSamePathCollisions(\n        part.chain,\n        part.partOid,\n        probes,\n        opts,\n      );\n      for (const c of out) all.push(c);\n    }\n    all.sort((a, b) => b.penetrationMm - a.penetrationMm);\n\n    // Stable key — only triggers callback when the *meaningful* set\n    // changes. Floor penetration to PENETRATION_EPS_MM so micro-jitter\n    // from float math doesn't keep the callback hot.\n    const key = all\n      .map((c) => {\n        const penFloor =\n          Math.round(c.penetrationMm / PENETRATION_EPS_MM) *\n          PENETRATION_EPS_MM;\n        // Canonicalise pair order (smaller id first) so swapping\n        // doesn't show up as a new pair.\n        const [lo, hi] = c.idA < c.idB ? [c.idA, c.idB] : [c.idB, c.idA];\n        return `${lo}|${hi}|${penFloor.toFixed(2)}`;\n      })\n      .join(';');\n\n    if (key !== lastKeyRef.current) {\n      lastKeyRef.current = key;\n      onCollisionsChange(all);\n    }\n  });\n\n  return null;\n};\n","/**\n * <ModuleCollisionMonitor> — fires `onCollisionsChange` when the set of\n * physically overlapping track MODULES changes.\n *\n * Unlike the mover <CollisionMonitor> (which runs in `useFrame` because\n * movers move at 60 Hz through the MoverPositionStore), modules are static:\n * they only move when the config or a `trackTransform` changes. So this\n * monitor recomputes in a plain `useEffect` keyed on those inputs — no\n * per-frame loop, no Canvas dependency.\n *\n * Change detection mirrors <CollisionMonitor>: the callback fires only when\n * a stable hash key changes (pair appears / disappears, or `overlapMm`\n * shifts by more than PENETRATION_EPS_MM), so a steady scene doesn't keep\n * the callback hot across re-renders.\n */\n\nimport { useEffect, useRef } from 'react';\nimport { buildChain } from '../../geometry/ChainBuilder.js';\nimport {\n  buildModuleProbes,\n  checkModuleCollisions,\n  type CheckModuleCollisionsOptions,\n  type ModuleCollision,\n  type ModuleCollisionPartInput,\n  type ModuleCollisionXpuInput,\n} from '../../geometry/moduleCollision.js';\nimport type { NormalizedXtsConfig } from '../../geometry/normalizeXtsConfig.js';\nimport type { Orientation, TrackTransform } from '../../types.js';\n\nconst PENETRATION_EPS_MM = 0.01;\n\ninterface ModuleCollisionMonitorProps {\n  config: NormalizedXtsConfig;\n  orientation?: Orientation;\n  trackTransformOverrides?: Record<number, TrackTransform>;\n  warningGapMm?: number;\n  onCollisionsChange: (collisions: ModuleCollision[]) => void;\n}\n\nexport const ModuleCollisionMonitor: React.FC<ModuleCollisionMonitorProps> = ({\n  config,\n  orientation,\n  trackTransformOverrides,\n  warningGapMm,\n  onCollisionsChange,\n}) => {\n  const lastKeyRef = useRef<string>('');\n\n  useEffect(() => {\n    const xpus: ModuleCollisionXpuInput[] = [];\n    for (const xpu of config.processingUnits) {\n      const effective =\n        trackTransformOverrides?.[xpu.objectId] ?? xpu.trackTransform;\n      const parts: ModuleCollisionPartInput[] = [];\n      for (const part of xpu.parts) {\n        try {\n          parts.push({\n            partObjectId: part.objectId,\n            partKey: part.globalNumber,\n            ...(part.partTransformation\n              ? { partTransformation: part.partTransformation }\n              : {}),\n            chain: buildChain(part.modules),\n          });\n        } catch {\n          // already validated by normalizeXtsConfig — defensive.\n        }\n      }\n      xpus.push({\n        xpuObjectId: xpu.objectId,\n        ...(effective ? { trackTransform: effective } : {}),\n        parts,\n      });\n    }\n\n    const opts: CheckModuleCollisionsOptions = {};\n    if (warningGapMm !== undefined) opts.warningGapMm = warningGapMm;\n\n    const { probes, adjacency } = buildModuleProbes(orientation, xpus, opts);\n    const all = checkModuleCollisions(probes, adjacency, opts);\n\n    // Stable key — only fire when the meaningful set changes. Floor\n    // overlapMm so float-math jitter doesn't keep the callback hot.\n    const key = all\n      .map((c) => {\n        const floor =\n          Math.round(c.overlapMm / PENETRATION_EPS_MM) * PENETRATION_EPS_MM;\n        return `${c.a.processingUnitObjectId}.${c.a.partObjectId}.${c.a.moduleIndex}|${c.b.processingUnitObjectId}.${c.b.partObjectId}.${c.b.moduleIndex}|${floor.toFixed(2)}`;\n      })\n      .join(';');\n\n    if (key !== lastKeyRef.current) {\n      lastKeyRef.current = key;\n      onCollisionsChange(all);\n    }\n    // `onCollisionsChange` intentionally omitted from deps — the host may\n    // pass an inline callback; we only want to recompute on data changes.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [config, orientation, trackTransformOverrides, warningGapMm]);\n\n  return null;\n};\n","/**\n * silenceThreeWarnings — suppress upstream-only three.js deprecation\n * notices that this library does not (and cannot) act on.\n *\n * Currently filtered:\n *\n *   `THREE.Clock: This module has been deprecated. Please use\n *    THREE.Timer instead.`\n *\n *   Emitted by `@react-three/fiber@9.x`'s root-store factory\n *   (`new THREE.Clock()` inside its internal events-*.esm.js). three.js\n *   deprecated `Clock` in r183; functional behaviour is unchanged.\n *   We do not use `THREE.Clock` ourselves — the only constructor that\n *   triggers the warning lives inside r3f. Once r3f migrates its root\n *   store to `THREE.Timer`, the filter pattern can be removed.\n *\n * Implementation: three.js's own warn/error/log helpers route through\n * `setConsoleFunction` when set, so we install a custom handler that\n * drops the listed messages and forwards everything else to the\n * previously-registered handler (or the native console as a\n * fallback). Idempotent — calling more than once is a no-op.\n */\n\nimport { getConsoleFunction, setConsoleFunction } from 'three';\n\ntype ConsoleType = 'log' | 'warn' | 'error';\ntype ConsoleFn = (type: ConsoleType, message: unknown, ...params: unknown[]) => void;\ntype MarkedFn = ConsoleFn & { [SILENCER_MARKER]?: true };\n\nconst SILENCER_MARKER = Symbol.for('beckhoff-xts-viewer-3d/silencer');\n\nconst SILENCED_PREFIXES: ReadonlyArray<{ type: ConsoleType; prefix: string }> = [\n  { type: 'warn', prefix: 'THREE.Clock: This module has been deprecated.' },\n];\n\nexport function silenceUpstreamThreeWarnings(): void {\n  const existing = getConsoleFunction() as MarkedFn | null;\n  // If the currently-installed console function is already ours, bail.\n  // Re-installing would chain a redundant wrapper on every render.\n  if (existing && existing[SILENCER_MARKER]) return;\n\n  const filter: MarkedFn = ((type, message, ...params) => {\n    if (\n      typeof message === 'string' &&\n      SILENCED_PREFIXES.some(\n        (p) => p.type === type && (message as string).startsWith(p.prefix),\n      )\n    ) {\n      return;\n    }\n    if (existing) {\n      existing(type, message, ...params);\n      return;\n    }\n    // Mirror the native fan-out three.js does when no custom function\n    // is set — keep log / warn / error on their respective channels.\n    const fn = (console as unknown as Record<ConsoleType, ConsoleFn['call']>)[\n      type\n    ];\n    if (typeof fn === 'function') {\n      (fn as (...a: unknown[]) => void).call(console, message, ...params);\n    } else {\n      console.log(message, ...params);\n    }\n  }) as MarkedFn;\n  filter[SILENCER_MARKER] = true;\n\n  setConsoleFunction(filter as ConsoleFn);\n}\n","/**\n * <XtsViewer3D> — Top-level React component.\n *\n * Thin wrapper around the r3f <Canvas>:\n *   - useNormalizedConfig:    pre-render validate + clamp pass\n *   - useSelectionState:      controlled-or-internal selection + click handlers\n *   - useXtsViewerHandle:     imperative ref API (camera, screenshots, etc.)\n *   - <XtsScene>:             everything inside the canvas (lights, modules,\n *                             movers, overlays)\n *\n * Pan/Zoom = OrbitControls defaults; Z-up; 1 unit = 1 mm.\n */\n\nimport React, {\n  forwardRef,\n  Suspense,\n  useEffect,\n  useMemo,\n  useRef,\n} from 'react';\nimport { Canvas } from '@react-three/fiber';\nimport {\n  OrthographicCamera,\n  PerspectiveCamera,\n  Scene,\n  WebGLRenderer,\n} from 'three';\nimport type { OrbitControls as OrbitControlsImpl } from 'three-stdlib';\nimport { useNormalizedConfig } from './internals/useNormalizedConfig.js';\nimport { applyBeckhoffXtsConvention } from '../geometry/coordinateConvention.js';\nimport { useSelectionState } from './internals/useSelectionState.js';\nimport {\n  useXtsViewerHandle,\n  type XtsViewer3DRef,\n} from './internals/useXtsViewerHandle.js';\nimport {\n  MoverPositionStore,\n  MoverPositionStoreContext,\n} from './internals/MoverPositionStore.js';\nimport {\n  ModuleStatusStore,\n  ModuleStatusStoreContext,\n} from './internals/ModuleStatusStore.js';\nimport { SidecarSourceContext } from '../assets/SidecarSourceContext.js';\nimport { XtsScene } from './internals/XtsScene.js';\nimport { CollisionMonitor } from './internals/CollisionMonitor.js';\nimport { ModuleCollisionMonitor } from './internals/ModuleCollisionMonitor.js';\nimport {\n  resolveModuleHighlights,\n  resolveToneMapping,\n} from './internals/viewerHelpers.js';\nimport { silenceUpstreamThreeWarnings } from './internals/silenceThreeWarnings.js';\nimport type { ScreenshotOptions, ScreenshotResult } from './internals/screenshot.js';\nimport type {\n  CheckMoverCollisionsOptions,\n  MoverCollision,\n} from '../geometry/moverCollision.js';\nimport type { ModuleCollision } from '../geometry/moduleCollision.js';\nimport type {\n  AssetManifest,\n  CameraProjection,\n  CameraState,\n  DisplayOptions,\n  ModuleHighlight,\n  ModuleRef,\n  ModuleType3D,\n  MoverRef,\n  MoverToolType3D,\n  MoverType3D,\n  RailType3D,\n  SelectionMode,\n  SelectionState,\n  StatorHeatmap,\n  TrackTransform,\n  XtsConfig,\n  XtsViewerError,\n} from '../types.js';\nimport type { OriginCorrection } from '../assets/SidecarLoader.js';\nimport type { HepcoGfxRailProfileDims } from '../geometry/HepcoGfxRailProfile.js';\nimport { JSDELIVR_ASSETS_BASE_URL } from '../assets/cdnUrl.js';\nimport { getSharedAssetLoader } from '../assets/AssetLoader.js';\nimport { setKtx2TranscoderUrl } from '../assets/configureGltfLoaders.js';\n\n/**\n * Live overrides for module/mover/tool origin-correction sidecars. Used by\n * the calibration tool to preview adjustments without writing files.\n */\nexport interface SidecarOverrides {\n  modules?: Partial<Record<ModuleType3D, OriginCorrection>>;\n  movers?: Partial<Record<MoverType3D, OriginCorrection>>;\n  tools?: Partial<Record<MoverToolType3D, OriginCorrection>>;\n  rails?: Partial<Record<RailType3D, OriginCorrection>>;\n}\n\nexport interface XtsViewer3DProps {\n  /** Complete XTS configuration. */\n  config: XtsConfig;\n  /**\n   * Base URL for GLB assets.\n   *\n   * Default: `JSDELIVR_ASSETS_BASE_URL`, which points to\n   * `https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d-assets@<version>/models`\n   * — the sister package with all GLBs, version-pinned to the\n   * viewer version.\n   */\n  assetsBaseUrl?: string;\n  /**\n   * Source of the sidecar calibration data.\n   *\n   *   • `true` (default) — sidecars come from the bundled\n   *     `BUILTIN_*_SIDECARS` constants in the JS library.\n   *   • `false` — each sidecar is fetched live from\n   *     `<assetsBaseUrl>/<id>.meta.json`.\n   */\n  useBuiltinSidecars?: boolean;\n  /** Override of the module / mover asset manifest (for tests, alternative skins). */\n  assetManifest?: AssetManifest;\n  /** Display options. */\n  display?: DisplayOptions;\n  /** Initial camera. */\n  initialCamera?: CameraState;\n  /**\n   * Live camera projection. Default `'perspective'`.\n   *\n   * `'orthographic'` (together with `topDown`, on by default) renders the flat\n   * 2D plan view — straight down +Z, up = +Y — pixel-consistent with\n   * `exportScreenshot({ mode: 'top-down' })`. Switching at runtime does NOT\n   * recreate the WebGL context. In orthographic top-down, rotation is\n   * auto-disabled (pan + zoom stay on) unless you set `lock.rotate` explicitly.\n   */\n  projection?: CameraProjection;\n  /**\n   * When `projection === 'orthographic'`, frame the scene straight from above.\n   * Default `true`. (Only `true` is meaningful today; reserved for future\n   * orthographic side/front views.)\n   */\n  topDown?: boolean;\n  /** Lock interactions. */\n  lock?: { rotate?: boolean; pan?: boolean; zoom?: boolean; selection?: boolean };\n  /** Selection-Mode. Default: 'Off'. */\n  selectionMode?: SelectionMode;\n  /** Controlled selection. */\n  selection?: SelectionState;\n  /** Selection-Highlight-Farben. */\n  selectionColors?: { module?: string; mover?: string };\n  /**\n   * Declarative module highlights — tint all modules matching the given\n   * types with the specified color. Works independently of selection:\n   * selection takes visual priority over highlights when both are active.\n   *\n   * Toggle on/off by setting to an array (enabled) or `undefined` / `[]`\n   * (disabled). Multiple entries are supported; the first matching entry\n   * per module type wins.\n   *\n   * @example\n   * ```tsx\n   * import { INFEED_MODULE_TYPES } from 'beckhoff-xts-viewer-3d';\n   *\n   * <XtsViewer3D\n   *   moduleHighlights={showInfeed\n   *     ? [{ moduleTypes: [...INFEED_MODULE_TYPES], color: '#FF6600' }]\n   *     : undefined}\n   * />\n   * ```\n   */\n  moduleHighlights?: ModuleHighlight[];\n  /**\n   * Convenience boolean to highlight all infeed modules (Einspeisemodule)\n   * without assembling a `moduleHighlights` entry yourself. Internally maps\n   * to a `moduleHighlights` entry over `INFEED_MODULE_TYPES`.\n   *\n   * Combines with `moduleHighlights`: explicit entries keep priority on\n   * overlapping module types (first matching entry wins).\n   *\n   * @example\n   * ```tsx\n   * <XtsViewer3D highlightInfeedModules infeedHighlightColor=\"#FF6600\" />\n   * ```\n   */\n  highlightInfeedModules?: boolean;\n  /**\n   * Color used when `highlightInfeedModules` is enabled. Ignored otherwise.\n   * Default: `'#FF6600'`.\n   */\n  infeedHighlightColor?: string;\n  /** Callbacks. */\n  onSelectionChange?: (s: SelectionState) => void;\n  onCameraChange?: (c: CameraState) => void;\n  onMoverClick?: (m: MoverRef) => void;\n  onModuleClick?: (m: ModuleRef) => void;\n  onMoverHover?: (m: MoverRef | null) => void;\n  onModuleHover?: (m: ModuleRef | null) => void;\n  onError?: (err: XtsViewerError) => void;\n  onAssetsLoaded?: () => void;\n  /** Performance-Tuning. */\n  performance?: {\n    maxFps?: number;\n    instancing?: boolean;\n    autoPauseOnHidden?: boolean;\n    /**\n     * Enable demand rendering: frames only render when something changes\n     * (camera move, mover position update, selection). Saves >90% GPU\n     * time when the scene is idle. Default: true.\n     */\n    demandRendering?: boolean;\n    /**\n     * Cap the device pixel ratio. Values above 2 rarely improve\n     * perceptible quality but double fill-rate cost on Retina/4K\n     * displays. Default: 2.\n     */\n    maxDpr?: number;\n    /**\n     * Disable automatic per-frame shadow map updates. Shadows only\n     * re-render on camera change. Default: true (when shadows enabled).\n     */\n    shadowOnDemand?: boolean;\n    /**\n     * Opt into the WebGPU renderer when the browser supports it.\n     * Falls back to WebGL automatically. Default: false (experimental).\n     */\n    webgpu?: boolean;\n    /**\n     * Override the KTX2 (Basis) transcoder path used to decode compressed\n     * textures in the GLB assets. Defaults to a CDN copy pinned to the\n     * bundled three.js revision. Point this at a self-hosted\n     * `basis_transcoder.{js,wasm}` directory for offline / air-gapped use.\n     */\n    ktx2TranscoderUrl?: string;\n  };\n  /**\n   * Live override of the per-asset origin-correction sidecars. Useful for\n   * the calibration tool.\n   */\n  sidecarOverrides?: SidecarOverrides;\n  /**\n   * Live override of per-XPU `trackTransform`. Keyed by `xpu.index`.\n   */\n  trackTransformOverrides?: Record<number, TrackTransform>;\n  /**\n   * Live override of the procedural Hepco-GFX rail profile dimensions.\n   * Only the fields you supply are merged onto the defaults — useful for\n   * the playground calibration UI / a sidecar-style `*.meta.json`.\n   */\n  hepcoGfxProfile?: Partial<HepcoGfxRailProfileDims>;\n  /** CAD-style ViewCube overlay. */\n  viewCube?: {\n    enabled?: boolean;\n    alignment?:\n      | 'top-left'\n      | 'top-right'\n      | 'bottom-left'\n      | 'bottom-right'\n      | 'top-center'\n      | 'bottom-center'\n      | 'center-left'\n      | 'center-right'\n      | 'center-center';\n    marginPx?: [number, number];\n  };\n  /** Stator heatmap data — coloured tube along each part's centerline. */\n  statorHeatmap?: StatorHeatmap;\n  /** Continuous mover collision monitoring. */\n  collisionDetection?: {\n    enabled?: boolean;\n    warningGapMm?: number;\n    intervalMs?: number;\n    forceClosedLoop?: boolean;\n    onCollisionsChange?: (collisions: MoverCollision[]) => void;\n  };\n  /**\n   * Static MODULE overlap monitoring. Detects track modules that physically\n   * overlap in 3D space — different XPUs / parts placed via `trackTransform`\n   * / `orientation` / `partTransformation`, plus non-adjacent modules of the\n   * same part. Adjacent (seam) modules and the closed-loop seam are\n   * excluded. Recomputed on config / track-transform change (NOT per-frame,\n   * since modules don't move at 60 Hz) — `onCollisionsChange` fires only\n   * when the overlap set actually changes.\n   */\n  moduleCollisionDetection?: {\n    enabled?: boolean;\n    warningGapMm?: number;\n    onCollisionsChange?: (collisions: ModuleCollision[]) => void;\n  };\n  /** Dev/Debug. */\n  debug?: {\n    showPathSplines?: boolean;\n    showBoundingBoxes?: boolean;\n    showOriginAxes?: boolean;\n    showModuleLabels?: boolean;\n    overlayFps?: boolean;\n    showGrid?: boolean;\n  };\n  className?: string;\n  style?: React.CSSProperties;\n}\n\n// Re-export the imperative ref API + screenshot types from their leaf modules\n// so consumers can keep importing them from '../components/XtsViewer3D'.\nexport type { XtsViewer3DRef } from './internals/useXtsViewerHandle.js';\nexport type { ScreenshotOptions, ScreenshotResult };\n\nconst DEFAULT_ASSETS_BASE_URL = JSDELIVR_ASSETS_BASE_URL;\n\nexport const XtsViewer3D = forwardRef<XtsViewer3DRef, XtsViewer3DProps>(\n  function XtsViewer3D(props, ref) {\n    // Install the three.js console filter before <Canvas> mounts so the\n    // upstream-only `THREE.Clock` deprecation warning from r3f's\n    // root-store factory never reaches the consumer's console.\n    // Idempotent — safe to call on every render.\n    silenceUpstreamThreeWarnings();\n\n    const {\n      config,\n      assetsBaseUrl = DEFAULT_ASSETS_BASE_URL,\n      assetManifest,\n      onError,\n      initialCamera,\n      lock,\n      debug,\n      className,\n      style,\n    } = props;\n\n    const cameraRef = useRef<PerspectiveCamera | OrthographicCamera | null>(\n      null,\n    );\n    const orbitRef = useRef<OrbitControlsImpl | null>(null);\n    // Renderer + scene refs are captured in `<Canvas onCreated>` so the\n    // imperative `exportScreenshot` method can render straight to an\n    // offscreen target without re-creating the WebGL context.\n    const glRef = useRef<WebGLRenderer | null>(null);\n    const sceneRef = useRef<Scene | null>(null);\n    // Imperative mover-position store. Same instance for the lifetime\n    // of the component so `<XtsMover>` instances pick up writes without\n    // having to re-render to grab a new context value.\n    const moverStoreRef = useRef<MoverPositionStore>(\n      undefined as unknown as MoverPositionStore,\n    );\n    if (!moverStoreRef.current) {\n      moverStoreRef.current = new MoverPositionStore();\n    }\n    // Same pattern for module drive-status updates — out-of-React channel\n    // so PLC-streamed alarm flags don't force a config re-render.\n    const moduleStatusStoreRef = useRef<ModuleStatusStore>(\n      undefined as unknown as ModuleStatusStore,\n    );\n    if (!moduleStatusStoreRef.current) {\n      moduleStatusStoreRef.current = new ModuleStatusStore();\n    }\n\n    const rawNormalized = useNormalizedConfig(config, onError);\n    const coordinateSystem = props.display?.coordinateSystem;\n    const normalized = useMemo(\n      () =>\n        rawNormalized && coordinateSystem === 'beckhoff-xts'\n          ? applyBeckhoffXtsConvention(rawNormalized)\n          : rawNormalized,\n      [rawNormalized, coordinateSystem],\n    );\n\n    // Merge the declarative `moduleHighlights` with the `highlightInfeedModules`\n    // convenience boolean into the single array the renderer consumes.\n    const effectiveModuleHighlights = useMemo(\n      () =>\n        resolveModuleHighlights(\n          props.moduleHighlights,\n          props.highlightInfeedModules,\n          props.infeedHighlightColor,\n        ),\n      [\n        props.moduleHighlights,\n        props.highlightInfeedModules,\n        props.infeedHighlightColor,\n      ],\n    );\n\n    const {\n      effectiveSelection,\n      selectionMode,\n      handleModuleClick,\n      handleMoverClick,\n      handlePointerMissed,\n    } = useSelectionState({\n      ...(props.selection !== undefined ? { selection: props.selection } : {}),\n      selectionMode: props.selectionMode,\n      selectionLocked: lock?.selection,\n      ...(props.onSelectionChange ? { onSelectionChange: props.onSelectionChange } : {}),\n      ...(props.onModuleClick ? { onModuleClick: props.onModuleClick } : {}),\n      ...(props.onMoverClick ? { onMoverClick: props.onMoverClick } : {}),\n    });\n    void selectionMode; // captured inside the selection hook; reference here for clarity\n\n    useXtsViewerHandle({\n      ref,\n      config,\n      normalized,\n      cameraRef,\n      orbitRef,\n      glRef,\n      sceneRef,\n      moverStoreRef,\n      moduleStatusStoreRef,\n      ...(props.trackTransformOverrides\n        ? { trackTransformOverrides: props.trackTransformOverrides }\n        : {}),\n    });\n\n    const initialCameraPosition: [number, number, number] =\n      initialCamera?.positionMm ?? [1500, -1500, 1500];\n    const initialCameraTarget: [number, number, number] =\n      initialCamera?.targetMm ?? [0, 0, 0];\n\n    const shadowsEnabled = props.display?.shadows === true;\n    const environmentLightingEnabled =\n      props.display?.environmentLighting !== false;\n    const environmentIntensity = props.display?.environmentIntensity ?? 0.4;\n    const toneMappingMode = resolveToneMapping(props.display?.toneMapping);\n    const toneMappingExposure = props.display?.toneMappingExposure ?? 1;\n    const demandRendering = props.performance?.demandRendering !== false;\n    const maxDpr = props.performance?.maxDpr ?? 2;\n    const shadowOnDemand =\n      shadowsEnabled && props.performance?.shadowOnDemand !== false;\n\n    useEffect(() => {\n      const gl = glRef.current;\n      if (!gl) return;\n      gl.toneMapping = toneMappingMode;\n      gl.toneMappingExposure = toneMappingExposure;\n    }, [toneMappingMode, toneMappingExposure]);\n\n    // Apply a custom KTX2 transcoder path before any GLB loads. The shared\n    // KTX2Loader is built lazily on first load, so setting this here (ahead\n    // of the Canvas mounting its children) is sufficient.\n    const ktx2TranscoderUrl = props.performance?.ktx2TranscoderUrl;\n    useEffect(() => {\n      setKtx2TranscoderUrl(ktx2TranscoderUrl ?? null);\n    }, [ktx2TranscoderUrl]);\n\n    return (\n      <div className={className} style={{ width: '100%', height: '100%', ...style }}>\n        <Canvas\n          camera={{\n            fov: 45,\n            near: 1,\n            far: 50_000,\n            position: initialCameraPosition,\n            up: [0, 0, 1],\n          }}\n          gl={{\n            alpha: true,\n            antialias: true,\n            premultipliedAlpha: true,\n            powerPreference: 'high-performance',\n          }}\n          dpr={[1, maxDpr]}\n          frameloop={demandRendering ? 'demand' : 'always'}\n          shadows={shadowsEnabled ? 'soft' : false}\n          onPointerMissed={handlePointerMissed}\n          onCreated={({ camera, controls, scene, gl }) => {\n            cameraRef.current = camera as PerspectiveCamera;\n            if (controls) orbitRef.current = controls as OrbitControlsImpl;\n            glRef.current = gl as WebGLRenderer;\n            sceneRef.current = scene as Scene;\n            camera.lookAt(...initialCameraTarget);\n            (gl as WebGLRenderer).toneMapping = toneMappingMode;\n            (gl as WebGLRenderer).toneMappingExposure = toneMappingExposure;\n            scene.background = null;\n            gl.setClearAlpha(0);\n            // Wire compression decoders onto the public preload loader now\n            // that the renderer exists (KTX2 needs it for GPU-format\n            // detection). The render hot-path is wired separately via\n            // useGltfClone's extendLoader.\n            getSharedAssetLoader().configure({\n              gl: gl as WebGLRenderer,\n              ...(ktx2TranscoderUrl ? { transcoderUrl: ktx2TranscoderUrl } : {}),\n            });\n          }}\n        >\n          <MoverPositionStoreContext.Provider value={moverStoreRef.current}>\n           <ModuleStatusStoreContext.Provider value={moduleStatusStoreRef.current}>\n            <SidecarSourceContext.Provider\n              value={{ useBuiltins: props.useBuiltinSidecars !== false }}\n            >\n              <Suspense fallback={null}>\n                {normalized ? (\n                  <XtsScene\n                    config={normalized}\n                    assetsBaseUrl={assetsBaseUrl}\n                    {...(assetManifest ? { assetManifest } : {})}\n                    showGrid={debug?.showGrid !== false}\n                    shadows={shadowsEnabled}\n                    shadowOnDemand={shadowOnDemand}\n                    demandRendering={demandRendering}\n                    environmentLighting={environmentLightingEnabled}\n                    environmentIntensity={environmentIntensity}\n                    overlayFps={debug?.overlayFps === true}\n                    {...(props.viewCube ? { viewCube: props.viewCube } : {})}\n                    {...(props.display ? { display: props.display } : {})}\n                    selection={effectiveSelection}\n                    {...(props.selectionColors\n                      ? { selectionColors: props.selectionColors }\n                      : {})}\n                    {...(effectiveModuleHighlights\n                      ? { moduleHighlights: effectiveModuleHighlights }\n                      : {})}\n                    onModuleClick={handleModuleClick}\n                    onMoverClick={handleMoverClick}\n                    {...(props.performance\n                      ? { performance: props.performance }\n                      : {})}\n                    {...(props.sidecarOverrides\n                      ? { sidecarOverrides: props.sidecarOverrides }\n                      : {})}\n                    {...(props.trackTransformOverrides\n                      ? { trackTransformOverrides: props.trackTransformOverrides }\n                      : {})}\n                    {...(props.hepcoGfxProfile\n                      ? { hepcoGfxProfile: props.hepcoGfxProfile }\n                      : {})}\n                    {...(props.statorHeatmap\n                      ? { statorHeatmap: props.statorHeatmap }\n                      : {})}\n                    onOrbitReady={(c) => {\n                      orbitRef.current = c;\n                    }}\n                    onCameraReady={(c) => {\n                      cameraRef.current = c;\n                    }}\n                    projection={props.projection ?? 'perspective'}\n                    topDown={props.topDown !== false}\n                    initialCameraPosition={initialCameraPosition}\n                    {...(lock ? { lock } : {})}\n                  />\n                ) : null}\n                {normalized && props.collisionDetection?.enabled && (\n                  <CollisionMonitor\n                    config={normalized}\n                    {...(props.collisionDetection.warningGapMm !== undefined\n                      ? { warningGapMm: props.collisionDetection.warningGapMm }\n                      : {})}\n                    {...(props.collisionDetection.intervalMs !== undefined\n                      ? { intervalMs: props.collisionDetection.intervalMs }\n                      : {})}\n                    {...(props.collisionDetection.forceClosedLoop !== undefined\n                      ? {\n                          forceClosedLoop:\n                            props.collisionDetection.forceClosedLoop,\n                        }\n                      : {})}\n                    onCollisionsChange={\n                      props.collisionDetection.onCollisionsChange ?? (() => {})\n                    }\n                  />\n                )}\n                {normalized && props.moduleCollisionDetection?.enabled && (\n                  <ModuleCollisionMonitor\n                    config={normalized}\n                    {...(props.config.orientation\n                      ? { orientation: props.config.orientation }\n                      : {})}\n                    {...(props.trackTransformOverrides\n                      ? {\n                          trackTransformOverrides:\n                            props.trackTransformOverrides,\n                        }\n                      : {})}\n                    {...(props.moduleCollisionDetection.warningGapMm !==\n                    undefined\n                      ? {\n                          warningGapMm:\n                            props.moduleCollisionDetection.warningGapMm,\n                        }\n                      : {})}\n                    onCollisionsChange={\n                      props.moduleCollisionDetection.onCollisionsChange ??\n                      (() => {})\n                    }\n                  />\n                )}\n              </Suspense>\n            </SidecarSourceContext.Provider>\n           </ModuleStatusStoreContext.Provider>\n          </MoverPositionStoreContext.Provider>\n        </Canvas>\n      </div>\n    );\n  },\n);\n"]}