@babylonjs/core 6.38.1 → 6.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (710) hide show
  1. package/Actions/action.js +3 -1
  2. package/Actions/action.js.map +1 -1
  3. package/Actions/condition.js +1 -0
  4. package/Actions/condition.js.map +1 -1
  5. package/Actions/directActions.d.ts +2 -2
  6. package/Actions/directActions.js +2 -2
  7. package/Actions/directActions.js.map +1 -1
  8. package/Animations/pathCursor.js +1 -0
  9. package/Animations/pathCursor.js.map +1 -1
  10. package/Animations/runtimeAnimation.js +1 -1
  11. package/Animations/runtimeAnimation.js.map +1 -1
  12. package/Audio/audioEngine.js +5 -0
  13. package/Audio/audioEngine.js.map +1 -1
  14. package/Behaviors/Cameras/autoRotationBehavior.d.ts +3 -0
  15. package/Behaviors/Cameras/autoRotationBehavior.js +3 -0
  16. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  17. package/Behaviors/Meshes/pointerDragBehavior.d.ts +1 -0
  18. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  19. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  20. package/Behaviors/Meshes/sixDofDragBehavior.js +14 -20
  21. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  22. package/Bones/bone.d.ts +2 -0
  23. package/Bones/bone.js +2 -0
  24. package/Bones/bone.js.map +1 -1
  25. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +11 -11
  26. package/Cameras/Inputs/BaseCameraPointersInput.js +12 -12
  27. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  28. package/Cameras/Inputs/arcRotateCameraPointersInput.d.ts +9 -9
  29. package/Cameras/Inputs/arcRotateCameraPointersInput.js +9 -9
  30. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  31. package/Cameras/Inputs/followCameraKeyboardMoveInput.d.ts +3 -0
  32. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +3 -0
  33. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  34. package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -1
  35. package/Cameras/Inputs/freeCameraMouseInput.js +1 -1
  36. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  37. package/Cameras/VR/vrExperienceHelper.d.ts +2 -2
  38. package/Cameras/VR/vrExperienceHelper.js +2 -2
  39. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  40. package/Cameras/arcRotateCamera.d.ts +2 -0
  41. package/Cameras/arcRotateCamera.js +2 -0
  42. package/Cameras/arcRotateCamera.js.map +1 -1
  43. package/Cameras/camera.d.ts +2 -0
  44. package/Cameras/camera.js +4 -0
  45. package/Cameras/camera.js.map +1 -1
  46. package/Cameras/followCamera.d.ts +1 -0
  47. package/Cameras/followCamera.js +1 -0
  48. package/Cameras/followCamera.js.map +1 -1
  49. package/Culling/Octrees/octree.d.ts +4 -4
  50. package/Culling/Octrees/octree.js +4 -4
  51. package/Culling/Octrees/octree.js.map +1 -1
  52. package/Debug/debugLayer.d.ts +4 -1
  53. package/Debug/debugLayer.js +4 -1
  54. package/Debug/debugLayer.js.map +1 -1
  55. package/Debug/physicsViewer.d.ts +6 -1
  56. package/Debug/physicsViewer.js +6 -1
  57. package/Debug/physicsViewer.js.map +1 -1
  58. package/Decorators/nodeDecorator.d.ts +5 -4
  59. package/Decorators/nodeDecorator.js +5 -4
  60. package/Decorators/nodeDecorator.js.map +1 -1
  61. package/DeviceInput/eventFactory.d.ts +2 -0
  62. package/DeviceInput/eventFactory.js +3 -0
  63. package/DeviceInput/eventFactory.js.map +1 -1
  64. package/DeviceInput/webDeviceInputSystem.js +3 -0
  65. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  66. package/Engines/Extensions/engine.multiview.js +2 -0
  67. package/Engines/Extensions/engine.multiview.js.map +1 -1
  68. package/Engines/Native/nativeDataStream.d.ts +32 -0
  69. package/Engines/Native/nativeDataStream.js +32 -0
  70. package/Engines/Native/nativeDataStream.js.map +1 -1
  71. package/Engines/Native/nativePipelineContext.d.ts +0 -3
  72. package/Engines/Native/nativePipelineContext.js +0 -3
  73. package/Engines/Native/nativePipelineContext.js.map +1 -1
  74. package/Engines/Native/nativeRenderTargetWrapper.js +2 -0
  75. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  76. package/Engines/WebGL/webGLHardwareTexture.js +1 -0
  77. package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
  78. package/Engines/WebGL/webGLPipelineContext.d.ts +0 -3
  79. package/Engines/WebGL/webGLPipelineContext.js +0 -3
  80. package/Engines/WebGL/webGLPipelineContext.js.map +1 -1
  81. package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -0
  82. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  83. package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -0
  84. package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
  85. package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +1 -0
  86. package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -0
  87. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  88. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -0
  89. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  90. package/Engines/WebGPU/webgpuPipelineContext.d.ts +0 -3
  91. package/Engines/WebGPU/webgpuPipelineContext.js +0 -3
  92. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  93. package/Engines/WebGPU/webgpuShaderProcessingContext.js +1 -0
  94. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  95. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +1 -1
  96. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +11 -2
  97. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  98. package/Engines/WebGPU/webgpuTextureHelper.js +22 -0
  99. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  100. package/Engines/WebGPU/webgpuTextureManager.js +2 -1
  101. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  102. package/Engines/WebGPU/webgpuTintWASM.d.ts +1 -1
  103. package/Engines/WebGPU/webgpuTintWASM.js +5 -5
  104. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  105. package/Engines/engine.d.ts +1 -0
  106. package/Engines/engine.js +1 -0
  107. package/Engines/engine.js.map +1 -1
  108. package/Engines/nativeEngine.d.ts +4 -0
  109. package/Engines/nativeEngine.js +5 -0
  110. package/Engines/nativeEngine.js.map +1 -1
  111. package/Engines/thinEngine.js +7 -2
  112. package/Engines/thinEngine.js.map +1 -1
  113. package/Engines/webgpuEngine.d.ts +1 -1
  114. package/Engines/webgpuEngine.js +17 -1
  115. package/Engines/webgpuEngine.js.map +1 -1
  116. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +214 -2
  117. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +214 -6
  118. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -1
  119. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +15 -0
  120. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +9 -0
  121. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  122. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +6 -6
  123. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  124. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.d.ts +4 -0
  125. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js +4 -0
  126. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  127. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +17 -1
  128. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js +14 -1
  129. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  130. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.d.ts +9 -0
  131. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js +9 -0
  132. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  133. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.d.ts +5 -0
  134. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js +5 -0
  135. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -1
  136. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.d.ts +16 -1
  137. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js +13 -1
  138. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -1
  139. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +12 -1
  140. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js +12 -1
  141. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  142. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.d.ts +18 -0
  143. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js +9 -0
  144. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -1
  145. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.d.ts +12 -0
  146. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js +9 -0
  147. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  148. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.d.ts +15 -1
  149. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js +12 -1
  150. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
  151. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.d.ts +18 -2
  152. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +15 -4
  153. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  154. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +6 -0
  155. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +6 -0
  156. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  157. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.d.ts +6 -0
  158. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js +6 -0
  159. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  160. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.d.ts +5 -2
  161. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js +4 -1
  162. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  163. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +15 -1
  164. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +12 -1
  165. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  166. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.d.ts +4 -1
  167. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -0
  168. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  169. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.d.ts +3 -0
  170. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js +3 -0
  171. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -1
  172. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +3 -0
  173. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js +3 -0
  174. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  175. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +3 -0
  176. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js +3 -0
  177. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  178. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +14 -1
  179. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +11 -1
  180. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  181. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.d.ts +3 -0
  182. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js +3 -0
  183. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -1
  184. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.d.ts +3 -0
  185. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js +3 -0
  186. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  187. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.d.ts +15 -2
  188. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js +12 -4
  189. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -1
  190. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.d.ts +14 -2
  191. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js +11 -4
  192. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -1
  193. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.d.ts +15 -2
  194. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js +12 -4
  195. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -1
  196. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +3 -0
  197. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +3 -0
  198. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  199. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.d.ts +6 -0
  200. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js +6 -0
  201. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  202. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +15 -2
  203. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js +12 -3
  204. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  205. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +18 -1
  206. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js +15 -1
  207. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  208. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.d.ts +6 -0
  209. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +6 -0
  210. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  211. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.d.ts +14 -2
  212. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js +11 -4
  213. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  214. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.d.ts +15 -1
  215. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +12 -1
  216. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  217. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +14 -1
  218. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +11 -1
  219. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  220. package/FlowGraph/flowGraph.d.ts +16 -8
  221. package/FlowGraph/flowGraph.js +13 -8
  222. package/FlowGraph/flowGraph.js.map +1 -1
  223. package/FlowGraph/flowGraphBlock.d.ts +54 -5
  224. package/FlowGraph/flowGraphBlock.js +50 -11
  225. package/FlowGraph/flowGraphBlock.js.map +1 -1
  226. package/FlowGraph/flowGraphConnection.d.ts +10 -6
  227. package/FlowGraph/flowGraphConnection.js +10 -6
  228. package/FlowGraph/flowGraphConnection.js.map +1 -1
  229. package/FlowGraph/flowGraphContext.d.ts +10 -8
  230. package/FlowGraph/flowGraphContext.js +10 -8
  231. package/FlowGraph/flowGraphContext.js.map +1 -1
  232. package/FlowGraph/flowGraphCoordinator.d.ts +27 -1
  233. package/FlowGraph/flowGraphCoordinator.js +18 -2
  234. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  235. package/FlowGraph/flowGraphDataConnection.d.ts +26 -1
  236. package/FlowGraph/flowGraphDataConnection.js +23 -1
  237. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  238. package/FlowGraph/flowGraphExecutionBlock.d.ts +27 -1
  239. package/FlowGraph/flowGraphExecutionBlock.js +22 -4
  240. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  241. package/FlowGraph/flowGraphRichTypes.d.ts +24 -1
  242. package/FlowGraph/flowGraphRichTypes.js +18 -1
  243. package/FlowGraph/flowGraphRichTypes.js.map +1 -1
  244. package/FlowGraph/flowGraphSignalConnection.d.ts +2 -0
  245. package/FlowGraph/flowGraphSignalConnection.js +2 -0
  246. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  247. package/Gamepads/gamepad.d.ts +2 -2
  248. package/Gamepads/gamepad.js +2 -2
  249. package/Gamepads/gamepad.js.map +1 -1
  250. package/Gamepads/gamepadSceneComponent.js +2 -0
  251. package/Gamepads/gamepadSceneComponent.js.map +1 -1
  252. package/Gizmos/axisScaleGizmo.d.ts +2 -0
  253. package/Gizmos/axisScaleGizmo.js +2 -0
  254. package/Gizmos/axisScaleGizmo.js.map +1 -1
  255. package/Gizmos/boundingBoxGizmo.d.ts +19 -0
  256. package/Gizmos/boundingBoxGizmo.js +36 -15
  257. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  258. package/Gizmos/cameraGizmo.js +1 -0
  259. package/Gizmos/cameraGizmo.js.map +1 -1
  260. package/Gizmos/gizmo.d.ts +4 -1
  261. package/Gizmos/gizmo.js +1 -0
  262. package/Gizmos/gizmo.js.map +1 -1
  263. package/Gizmos/gizmoManager.d.ts +18 -0
  264. package/Gizmos/gizmoManager.js +34 -0
  265. package/Gizmos/gizmoManager.js.map +1 -1
  266. package/Gizmos/lightGizmo.d.ts +1 -0
  267. package/Gizmos/lightGizmo.js +1 -0
  268. package/Gizmos/lightGizmo.js.map +1 -1
  269. package/Gizmos/planeRotationGizmo.d.ts +2 -0
  270. package/Gizmos/planeRotationGizmo.js +2 -0
  271. package/Gizmos/planeRotationGizmo.js.map +1 -1
  272. package/Gizmos/positionGizmo.d.ts +11 -0
  273. package/Gizmos/positionGizmo.js +19 -0
  274. package/Gizmos/positionGizmo.js.map +1 -1
  275. package/Gizmos/rotationGizmo.d.ts +14 -0
  276. package/Gizmos/rotationGizmo.js +14 -0
  277. package/Gizmos/rotationGizmo.js.map +1 -1
  278. package/Gizmos/scaleGizmo.d.ts +18 -1
  279. package/Gizmos/scaleGizmo.js +19 -1
  280. package/Gizmos/scaleGizmo.js.map +1 -1
  281. package/Helpers/environmentHelper.d.ts +4 -2
  282. package/Helpers/environmentHelper.js +4 -2
  283. package/Helpers/environmentHelper.js.map +1 -1
  284. package/Layers/effectLayer.d.ts +1 -0
  285. package/Layers/effectLayer.js +1 -0
  286. package/Layers/effectLayer.js.map +1 -1
  287. package/Layers/glowLayer.d.ts +3 -1
  288. package/Layers/glowLayer.js +3 -1
  289. package/Layers/glowLayer.js.map +1 -1
  290. package/Layers/highlightLayer.d.ts +3 -2
  291. package/Layers/highlightLayer.js +3 -2
  292. package/Layers/highlightLayer.js.map +1 -1
  293. package/Lights/light.d.ts +1 -1
  294. package/Lights/light.js +1 -1
  295. package/Lights/light.js.map +1 -1
  296. package/Loading/sceneLoader.d.ts +9 -0
  297. package/Loading/sceneLoader.js +11 -0
  298. package/Loading/sceneLoader.js.map +1 -1
  299. package/Materials/Background/backgroundMaterial.d.ts +2 -2
  300. package/Materials/Background/backgroundMaterial.js +2 -2
  301. package/Materials/Background/backgroundMaterial.js.map +1 -1
  302. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +72 -0
  303. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +230 -0
  304. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -0
  305. package/Materials/GreasedLine/greasedLineMaterialInterfaces.d.ts +1 -1
  306. package/Materials/GreasedLine/greasedLineMaterialInterfaces.js.map +1 -1
  307. package/Materials/GreasedLine/greasedLinePluginMaterial.d.ts +2 -2
  308. package/Materials/GreasedLine/greasedLinePluginMaterial.js +2 -2
  309. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  310. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +0 -1
  311. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +0 -1
  312. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  313. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  314. package/Materials/Node/Blocks/Dual/index.js +1 -0
  315. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  316. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +7 -1
  317. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +6 -1
  318. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  319. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -0
  320. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  321. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -0
  322. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  323. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -0
  324. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  325. package/Materials/Node/Blocks/Input/prePassTextureBlock.d.ts +1 -1
  326. package/Materials/Node/Blocks/Input/prePassTextureBlock.js +1 -1
  327. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  328. package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +3 -1
  329. package/Materials/Node/Blocks/Teleport/teleportInBlock.js +3 -1
  330. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  331. package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -0
  332. package/Materials/Node/Blocks/triPlanarBlock.js +1 -0
  333. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  334. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +2 -0
  335. package/Materials/Node/Blocks/worleyNoise3DBlock.js +2 -0
  336. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  337. package/Materials/Node/nodeMaterial.d.ts +11 -3
  338. package/Materials/Node/nodeMaterial.js +15 -3
  339. package/Materials/Node/nodeMaterial.js.map +1 -1
  340. package/Materials/Node/nodeMaterialBlock.d.ts +3 -1
  341. package/Materials/Node/nodeMaterialBlock.js +4 -1
  342. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  343. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -0
  344. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  345. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -0
  346. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  347. package/Materials/PBR/pbrBaseMaterial.d.ts +10 -9
  348. package/Materials/PBR/pbrBaseMaterial.js +10 -9
  349. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  350. package/Materials/PBR/pbrMaterial.d.ts +2 -1
  351. package/Materials/PBR/pbrMaterial.js +3 -2
  352. package/Materials/PBR/pbrMaterial.js.map +1 -1
  353. package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +7 -4
  354. package/Materials/PBR/pbrMetallicRoughnessMaterial.js +7 -4
  355. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  356. package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +7 -4
  357. package/Materials/PBR/pbrSpecularGlossinessMaterial.js +7 -4
  358. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  359. package/Materials/Textures/Loaders/envTextureLoader.js +1 -0
  360. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  361. package/Materials/Textures/Loaders/hdrTextureLoader.js +1 -0
  362. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  363. package/Materials/Textures/Loaders/tgaTextureLoader.js +1 -0
  364. package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
  365. package/Materials/Textures/Packer/packer.d.ts +0 -1
  366. package/Materials/Textures/Packer/packer.js +0 -1
  367. package/Materials/Textures/Packer/packer.js.map +1 -1
  368. package/Materials/Textures/Procedurals/noiseProceduralTexture.d.ts +1 -1
  369. package/Materials/Textures/Procedurals/noiseProceduralTexture.js +1 -1
  370. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  371. package/Materials/Textures/baseTexture.js +3 -0
  372. package/Materials/Textures/baseTexture.js.map +1 -1
  373. package/Materials/Textures/colorGradingTexture.d.ts +4 -1
  374. package/Materials/Textures/colorGradingTexture.js +4 -1
  375. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  376. package/Materials/Textures/equiRectangularCubeTexture.d.ts +1 -0
  377. package/Materials/Textures/equiRectangularCubeTexture.js +1 -0
  378. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  379. package/Materials/Textures/hdrCubeTexture.d.ts +3 -2
  380. package/Materials/Textures/hdrCubeTexture.js +3 -2
  381. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  382. package/Materials/Textures/htmlElementTexture.d.ts +1 -1
  383. package/Materials/Textures/htmlElementTexture.js +1 -1
  384. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  385. package/Materials/Textures/multiRenderTarget.d.ts +1 -1
  386. package/Materials/Textures/multiRenderTarget.js +1 -1
  387. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  388. package/Materials/Textures/texture.d.ts +4 -1
  389. package/Materials/Textures/texture.js +4 -1
  390. package/Materials/Textures/texture.js.map +1 -1
  391. package/Materials/Textures/thinRenderTargetTexture.d.ts +1 -1
  392. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  393. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  394. package/Materials/Textures/thinTexture.js +3 -0
  395. package/Materials/Textures/thinTexture.js.map +1 -1
  396. package/Materials/index.d.ts +1 -0
  397. package/Materials/index.js +1 -0
  398. package/Materials/index.js.map +1 -1
  399. package/Materials/material.d.ts +2 -1
  400. package/Materials/material.decalMapConfiguration.d.ts +0 -5
  401. package/Materials/material.decalMapConfiguration.js +5 -5
  402. package/Materials/material.decalMapConfiguration.js.map +1 -1
  403. package/Materials/material.js +3 -2
  404. package/Materials/material.js.map +1 -1
  405. package/Materials/materialHelper.d.ts +1 -1
  406. package/Materials/materialHelper.js +4 -3
  407. package/Materials/materialHelper.js.map +1 -1
  408. package/Materials/materialPluginManager.js +1 -0
  409. package/Materials/materialPluginManager.js.map +1 -1
  410. package/Materials/standardMaterial.d.ts +2 -2
  411. package/Materials/standardMaterial.js +3 -3
  412. package/Materials/standardMaterial.js.map +1 -1
  413. package/Materials/uniformBuffer.js +2 -1
  414. package/Materials/uniformBuffer.js.map +1 -1
  415. package/Maths/math.like.d.ts +3 -0
  416. package/Maths/math.like.js.map +1 -1
  417. package/Maths/math.path.d.ts +2 -1
  418. package/Maths/math.path.js +2 -1
  419. package/Maths/math.path.js.map +1 -1
  420. package/Maths/math.polar.d.ts +3 -2
  421. package/Maths/math.polar.js +8 -2
  422. package/Maths/math.polar.js.map +1 -1
  423. package/Maths/math.vector.d.ts +12 -5
  424. package/Maths/math.vector.js +12 -5
  425. package/Maths/math.vector.js.map +1 -1
  426. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  427. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  428. package/Meshes/Builders/textBuilder.d.ts +26 -5
  429. package/Meshes/Builders/textBuilder.js +26 -5
  430. package/Meshes/Builders/textBuilder.js.map +1 -1
  431. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +84 -0
  432. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +288 -0
  433. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -0
  434. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -0
  435. package/Meshes/GreasedLine/greasedLineBaseMesh.js +2 -0
  436. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  437. package/Meshes/GreasedLine/greasedLineRibbonMesh.d.ts +2 -0
  438. package/Meshes/GreasedLine/greasedLineRibbonMesh.js +9 -0
  439. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  440. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +1 -1
  441. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +1 -1
  442. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  443. package/Meshes/Node/Blocks/geometryCurveBlock.d.ts +92 -0
  444. package/Meshes/Node/Blocks/geometryCurveBlock.js +292 -0
  445. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -0
  446. package/Meshes/Node/Blocks/noiseBlock.d.ts +5 -3
  447. package/Meshes/Node/Blocks/noiseBlock.js +5 -3
  448. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  449. package/Meshes/Node/index.d.ts +1 -0
  450. package/Meshes/Node/index.js +1 -0
  451. package/Meshes/Node/index.js.map +1 -1
  452. package/Meshes/Node/nodeGeometry.d.ts +6 -2
  453. package/Meshes/Node/nodeGeometry.js +7 -2
  454. package/Meshes/Node/nodeGeometry.js.map +1 -1
  455. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +1 -0
  456. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
  457. package/Meshes/Node/nodeGeometryBuildState.js +1 -0
  458. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  459. package/Meshes/abstractMesh.d.ts +1 -0
  460. package/Meshes/abstractMesh.js +3 -0
  461. package/Meshes/abstractMesh.js.map +1 -1
  462. package/Meshes/csg.d.ts +7 -1
  463. package/Meshes/csg.js +9 -1
  464. package/Meshes/csg.js.map +1 -1
  465. package/Meshes/geodesicMesh.d.ts +32 -1
  466. package/Meshes/geodesicMesh.js +17 -1
  467. package/Meshes/geodesicMesh.js.map +1 -1
  468. package/Meshes/index.d.ts +1 -0
  469. package/Meshes/index.js +1 -0
  470. package/Meshes/index.js.map +1 -1
  471. package/Meshes/instancedMesh.d.ts +34 -17
  472. package/Meshes/instancedMesh.js +34 -17
  473. package/Meshes/instancedMesh.js.map +1 -1
  474. package/Meshes/linesMesh.d.ts +6 -5
  475. package/Meshes/linesMesh.js +6 -5
  476. package/Meshes/linesMesh.js.map +1 -1
  477. package/Meshes/mesh.d.ts +1 -0
  478. package/Meshes/mesh.js +1 -0
  479. package/Meshes/mesh.js.map +1 -1
  480. package/Meshes/mesh.vertexData.d.ts +0 -145
  481. package/Meshes/mesh.vertexData.js +0 -145
  482. package/Meshes/mesh.vertexData.js.map +1 -1
  483. package/Meshes/transformNode.d.ts +1 -1
  484. package/Meshes/transformNode.js +19 -1
  485. package/Meshes/transformNode.js.map +1 -1
  486. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +1 -0
  487. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +1 -0
  488. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  489. package/Misc/HighDynamicRange/hdr.d.ts +1 -0
  490. package/Misc/HighDynamicRange/hdr.js +8 -0
  491. package/Misc/HighDynamicRange/hdr.js.map +1 -1
  492. package/Misc/HighDynamicRange/panoramaToCubemap.d.ts +1 -0
  493. package/Misc/HighDynamicRange/panoramaToCubemap.js +3 -0
  494. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  495. package/Misc/assetsManager.d.ts +3 -0
  496. package/Misc/assetsManager.js +3 -0
  497. package/Misc/assetsManager.js.map +1 -1
  498. package/Misc/basis.js +1 -0
  499. package/Misc/basis.js.map +1 -1
  500. package/Misc/decorators.d.ts +2 -0
  501. package/Misc/decorators.js +3 -1
  502. package/Misc/decorators.js.map +1 -1
  503. package/Misc/fileTools.js +2 -0
  504. package/Misc/fileTools.js.map +1 -1
  505. package/Misc/filesInput.d.ts +7 -2
  506. package/Misc/filesInput.js +7 -2
  507. package/Misc/filesInput.js.map +1 -1
  508. package/Misc/greasedLineTools.d.ts +6 -1
  509. package/Misc/greasedLineTools.js +6 -1
  510. package/Misc/greasedLineTools.js.map +1 -1
  511. package/Misc/textureTools.d.ts +2 -0
  512. package/Misc/textureTools.js +2 -0
  513. package/Misc/textureTools.js.map +1 -1
  514. package/Misc/timer.d.ts +2 -1
  515. package/Misc/timer.js +1 -0
  516. package/Misc/timer.js.map +1 -1
  517. package/Misc/tools.d.ts +5 -1
  518. package/Misc/tools.js +9 -1
  519. package/Misc/tools.js.map +1 -1
  520. package/Misc/videoRecorder.d.ts +4 -1
  521. package/Misc/videoRecorder.js +11 -5
  522. package/Misc/videoRecorder.js.map +1 -1
  523. package/Misc/webRequest.d.ts +3 -0
  524. package/Misc/webRequest.js +4 -1
  525. package/Misc/webRequest.js.map +1 -1
  526. package/Morph/morphTargetManager.d.ts +11 -0
  527. package/Morph/morphTargetManager.js +22 -2
  528. package/Morph/morphTargetManager.js.map +1 -1
  529. package/Particles/EmitterTypes/customParticleEmitter.js +10 -2
  530. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  531. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +3 -1
  532. package/Particles/EmitterTypes/cylinderParticleEmitter.js +7 -1
  533. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  534. package/Particles/IParticleSystem.d.ts +2 -2
  535. package/Particles/IParticleSystem.js.map +1 -1
  536. package/Particles/gpuParticleSystem.js +1 -0
  537. package/Particles/gpuParticleSystem.js.map +1 -1
  538. package/Particles/particleSystem.d.ts +1 -2
  539. package/Particles/particleSystem.js +5 -1
  540. package/Particles/particleSystem.js.map +1 -1
  541. package/Particles/solidParticleSystem.d.ts +1 -1
  542. package/Particles/solidParticleSystem.js +1 -1
  543. package/Particles/solidParticleSystem.js.map +1 -1
  544. package/Physics/physicsHelper.d.ts +3 -2
  545. package/Physics/physicsHelper.js +5 -4
  546. package/Physics/physicsHelper.js.map +1 -1
  547. package/Physics/physicsRaycastResult.d.ts +2 -1
  548. package/Physics/physicsRaycastResult.js +2 -1
  549. package/Physics/physicsRaycastResult.js.map +1 -1
  550. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +5 -0
  551. package/Physics/v1/Plugins/ammoJSPlugin.js +6 -0
  552. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  553. package/Physics/v1/physicsEngine.d.ts +2 -0
  554. package/Physics/v1/physicsEngine.js +2 -0
  555. package/Physics/v1/physicsEngine.js.map +1 -1
  556. package/Physics/v1/physicsImpostor.d.ts +2 -3
  557. package/Physics/v1/physicsImpostor.js +2 -3
  558. package/Physics/v1/physicsImpostor.js.map +1 -1
  559. package/Physics/v2/IPhysicsEnginePlugin.d.ts +1 -0
  560. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  561. package/Physics/v2/Plugins/havokPlugin.d.ts +61 -10
  562. package/Physics/v2/Plugins/havokPlugin.js +89 -10
  563. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  564. package/Physics/v2/physicsBody.d.ts +41 -3
  565. package/Physics/v2/physicsBody.js +42 -9
  566. package/Physics/v2/physicsBody.js.map +1 -1
  567. package/Physics/v2/physicsConstraint.d.ts +0 -2
  568. package/Physics/v2/physicsConstraint.js +0 -2
  569. package/Physics/v2/physicsConstraint.js.map +1 -1
  570. package/Physics/v2/physicsEngine.d.ts +5 -3
  571. package/Physics/v2/physicsEngine.js +6 -3
  572. package/Physics/v2/physicsEngine.js.map +1 -1
  573. package/Physics/v2/physicsShape.d.ts +2 -0
  574. package/Physics/v2/physicsShape.js +5 -0
  575. package/Physics/v2/physicsShape.js.map +1 -1
  576. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -1
  577. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +1 -1
  578. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  579. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +1 -1
  580. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +1 -1
  581. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  582. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +1 -1
  583. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +1 -1
  584. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  585. package/PostProcesses/motionBlurPostProcess.d.ts +1 -0
  586. package/PostProcesses/motionBlurPostProcess.js +1 -0
  587. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  588. package/PostProcesses/postProcess.d.ts +0 -1
  589. package/PostProcesses/postProcess.js +0 -1
  590. package/PostProcesses/postProcess.js.map +1 -1
  591. package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +1 -1
  592. package/PostProcesses/volumetricLightScatteringPostProcess.js +1 -1
  593. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  594. package/Rendering/GlobalIllumination/giRSMManager.d.ts +2 -1
  595. package/Rendering/GlobalIllumination/giRSMManager.js +5 -2
  596. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  597. package/Rendering/depthRendererSceneComponent.js +1 -0
  598. package/Rendering/depthRendererSceneComponent.js.map +1 -1
  599. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  600. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  601. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  602. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  603. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +1 -1
  604. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  605. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +1 -1
  606. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +1 -1
  607. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  608. package/Rendering/geometryBufferRenderer.d.ts +2 -2
  609. package/Rendering/geometryBufferRenderer.js +2 -2
  610. package/Rendering/geometryBufferRenderer.js.map +1 -1
  611. package/Rendering/index.d.ts +0 -1
  612. package/Rendering/index.js +0 -1
  613. package/Rendering/index.js.map +1 -1
  614. package/Rendering/prePassRenderer.d.ts +2 -2
  615. package/Rendering/prePassRenderer.js +2 -2
  616. package/Rendering/prePassRenderer.js.map +1 -1
  617. package/Rendering/reflectiveShadowMap.d.ts +4 -0
  618. package/Rendering/reflectiveShadowMap.js +7 -0
  619. package/Rendering/reflectiveShadowMap.js.map +1 -1
  620. package/Rendering/renderingGroup.d.ts +0 -1
  621. package/Rendering/renderingGroup.js +3 -4
  622. package/Rendering/renderingGroup.js.map +1 -1
  623. package/Rendering/renderingManager.d.ts +2 -1
  624. package/Rendering/renderingManager.js +2 -1
  625. package/Rendering/renderingManager.js.map +1 -1
  626. package/Rendering/subSurfaceConfiguration.d.ts +1 -0
  627. package/Rendering/subSurfaceConfiguration.js +1 -0
  628. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  629. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.d.ts +7 -0
  630. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js +13 -0
  631. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js.map +1 -0
  632. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.d.ts +5 -0
  633. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +10 -0
  634. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -0
  635. package/Shaders/ShadersInclude/morphTargetsVertex.js +8 -5
  636. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  637. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +2 -0
  638. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  639. package/Shaders/gaussianSplatting.fragment.d.ts +11 -0
  640. package/Shaders/gaussianSplatting.fragment.js +27 -0
  641. package/Shaders/gaussianSplatting.fragment.js.map +1 -0
  642. package/Shaders/gaussianSplatting.vertex.d.ts +13 -0
  643. package/Shaders/gaussianSplatting.vertex.js +49 -0
  644. package/Shaders/gaussianSplatting.vertex.js.map +1 -0
  645. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +5 -1
  646. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  647. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +2 -0
  648. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  649. package/XR/features/WebXRAbstractFeature.d.ts +7 -1
  650. package/XR/features/WebXRAbstractFeature.js +20 -4
  651. package/XR/features/WebXRAbstractFeature.js.map +1 -1
  652. package/XR/features/WebXRAnchorSystem.d.ts +1 -0
  653. package/XR/features/WebXRAnchorSystem.js +1 -0
  654. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  655. package/XR/features/WebXRControllerTeleportation.js +9 -2
  656. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  657. package/XR/features/WebXRDepthSensing.d.ts +1 -1
  658. package/XR/features/WebXRDepthSensing.js +1 -1
  659. package/XR/features/WebXRDepthSensing.js.map +1 -1
  660. package/XR/features/WebXREyeTracking.js +1 -1
  661. package/XR/features/WebXREyeTracking.js.map +1 -1
  662. package/XR/features/WebXRHandTracking.d.ts +4 -1
  663. package/XR/features/WebXRHandTracking.js +18 -4
  664. package/XR/features/WebXRHandTracking.js.map +1 -1
  665. package/XR/features/WebXRHitTest.js +1 -1
  666. package/XR/features/WebXRHitTest.js.map +1 -1
  667. package/XR/features/WebXRNearInteraction.d.ts +6 -3
  668. package/XR/features/WebXRNearInteraction.js +9 -4
  669. package/XR/features/WebXRNearInteraction.js.map +1 -1
  670. package/XR/features/WebXRPlaneDetector.d.ts +2 -0
  671. package/XR/features/WebXRPlaneDetector.js +2 -0
  672. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  673. package/XR/features/WebXRRawCameraAccess.d.ts +2 -0
  674. package/XR/features/WebXRRawCameraAccess.js +2 -0
  675. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  676. package/XR/features/WebXRSpaceWarp.d.ts +0 -27
  677. package/XR/features/WebXRSpaceWarp.js +0 -27
  678. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  679. package/XR/index.d.ts +1 -0
  680. package/XR/index.js +1 -0
  681. package/XR/index.js.map +1 -1
  682. package/XR/motionController/webXROculusTouchMotionController.d.ts +1 -0
  683. package/XR/motionController/webXROculusTouchMotionController.js +1 -0
  684. package/XR/motionController/webXROculusTouchMotionController.js.map +1 -1
  685. package/XR/webXRCamera.d.ts +2 -0
  686. package/XR/webXRCamera.js +8 -6
  687. package/XR/webXRCamera.js.map +1 -1
  688. package/XR/webXRExperienceHelper.js +1 -0
  689. package/XR/webXRExperienceHelper.js.map +1 -1
  690. package/XR/webXRInput.js +1 -1
  691. package/XR/webXRInput.js.map +1 -1
  692. package/XR/webXRInputSource.d.ts +3 -1
  693. package/XR/webXRInputSource.js +6 -3
  694. package/XR/webXRInputSource.js.map +1 -1
  695. package/XR/webXRSessionManager.d.ts +13 -0
  696. package/XR/webXRSessionManager.js +21 -1
  697. package/XR/webXRSessionManager.js.map +1 -1
  698. package/assetContainer.d.ts +5 -2
  699. package/assetContainer.js +5 -2
  700. package/assetContainer.js.map +1 -1
  701. package/package.json +1 -1
  702. package/scene.d.ts +1 -0
  703. package/scene.js +11 -0
  704. package/scene.js.map +1 -1
  705. package/Rendering/GaussianSplatting/gaussianSplatting.d.ts +0 -81
  706. package/Rendering/GaussianSplatting/gaussianSplatting.js +0 -400
  707. package/Rendering/GaussianSplatting/gaussianSplatting.js.map +0 -1
  708. package/Rendering/GaussianSplatting/index.d.ts +0 -1
  709. package/Rendering/GaussianSplatting/index.js +0 -2
  710. package/Rendering/GaussianSplatting/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"geodesicMesh.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/geodesicMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;GAIG;AACH,gEAAgE;AAChE,MAAM,OAAO,mBAAmB;IAAhC;QAIW,cAAS,GAAc,EAAE,CAAC;QAC1B,aAAQ,GAAiB,EAAE,CAAC;QAC5B,QAAG,GAAa,EAAE,CAAC;QACnB,QAAG,GAAa,EAAE,CAAC;QAGnB,cAAS,GAAe,EAAE,CAAC;QAE3B,gBAAW,GAAe,EAAE,CAAC;QAC7B,gBAAW,GAAmB,EAAE,CAAC;QACjC,gBAAW,GAAmB,EAAE,CAAC;QACjC,gBAAW,GAAmB,EAAE,CAAC;QACjC,gBAAW,GAAe,EAAE,CAAC;QAOpC,gEAAgE;QACzD,UAAK,GAAmB,IAAI,cAAc,CAC7C,aAAa,EACb,SAAS,EACT;YACI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACZ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;SACf,EACD;YACI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACd,CACJ,CAAC;IAodN,CAAC;IAldG;;;;OAIG;IAEH,WAAW;IACJ,UAAU;QACb,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC,+BAA+B;QACpD,MAAM,QAAQ,GAA8B,EAAE,CAAC,CAAC,iCAAiC;QACjF,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B;QACrC,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,CAAC,EAAE;YACT,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACxB;QACD,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,EAAmB,CAAC,CAAC,mCAAmC;QAC5D,IAAI,GAAoB,CAAC,CAAC,oCAAoC;QAC9D,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,MAAM,IAAI,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,GAAW,CAAC;QAChB,IAAI,IAAY,CAAC;QACjB,IAAI,KAAa,CAAC;QAClB,IAAI,MAAc,CAAC;QAEnB,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,KAAa,EAAE,MAAc,EAAE,EAAE;YACtE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,EAAE;gBACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBAC5B,UAAU,EAAE,CAAC;aAChB;iBAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE;gBAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;aAClC;iBAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;aAClC;YACD,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACrB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aACjF;iBAAM;gBACH,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aACvF;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG;YACnB,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;SACpB,CAAC;QAEF,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,gBAAgB;YAEhB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEb,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YAED,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YAED,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YAED,mBAAmB;YACnB,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,GAAG,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,GAAG,EAAE;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5B,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACxB,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBAChC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAClC;aACJ;YAED,IAAI,GAAG,KAAK,GAAG,EAAE;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBAChC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAClC;aACJ;YAED,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,GAAG,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE;gBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB;oBACpD,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iBAAiB;oBAC7C,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBAChC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAClC;aACJ;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;oBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;wBACrB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjF;yBAAM;wBACH,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;qBACvF;iBACJ;aACJ;SACJ;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,UAAU;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,CAAC;IAEM,iBAAiB;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;oBAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChG;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtG;aACJ;SACJ;IACL,CAAC;IAEM,YAAY;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAEjB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE3B,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAEvB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE7E,IAAI,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;gBACpD,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;oBACxB,QAAQ;oBACR,IAAI;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;oBACrD,MAAM;oBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACzD;qBAAM,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;oBAC7B,QAAQ;oBACR,IAAI;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC9C,MAAM;oBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;iBACjD;qBAAM;oBACH,SAAS;oBACT,IAAI;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC9C,MAAM;oBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACrD;aACJ;SACJ;IACL,CAAC;IAEM,aAAa;QAChB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC9B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAEM,aAAa;QAChB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC9B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAED,gEAAgE;IACzD,SAAS,CAAC,MAAc,EAAE,YAA4B;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzB,MAAM,CAAC,GAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,GAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,GAAW,CAAC;QAChB,IAAI,OAAO,GAAY,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;SAC/E;IACL,CAAC;IAED,SAAS;IACT;;OAEG;IAEI,KAAK,CAAC,CAAS,EAAE,CAAS;QAC7B,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,MAAM,CAAC,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,GAAe,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvB,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACvC;SACJ;QAED,yCAAyC;QACzC,IAAI,CAAC,GAAG,CAAC,EAAE;YACP,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnD,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3D,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;aACtE;YAED,yCAAyC;YACzC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;oBAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACpD,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC1D;aACJ;SACJ;QACD,gCAAgC;QAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,GAAW,CAAC,CAAC;QAClB,IAAI,CAAC,GAAW,CAAC,CAAC;QAElB,MAAM,GAAG,GAAW,QAAQ,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,iEAAiE;QACjE,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAE,QAAgB,EAAE,EAAE;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAClB,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACxB;YACD,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAClB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACrB;YACD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,CAAC,CAAC,CAAC;aACd;YACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAgC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,IAAI,OAAO,GAAW,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,GAAW,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACxE,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAE1C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC5D,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC5D,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC5D,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE;QAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3F;QAED,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED;;GAEG;AAEH,MAAM,OAAO,cAAc;IAGvB,YACW,IAAY,EACZ,QAAgB,EAChB,MAAkB,EAClB,IAAgB;QAHhB,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAY;QAClB,SAAI,GAAJ,IAAI,CAAY;IACxB,CAAC;CACP;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAc;IAiB5C;;OAEG;IACI,WAAW,CAAC,IAAY,EAAE,OAA4B;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SACnF;IACL,CAAC;IACD;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,OAA4B;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7F;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrG;IACL,CAAC;IACD;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,OAA4B;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7F;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrG;IACL,CAAC;IACD;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,OAA4B;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7F;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrG;IACL,CAAC;IACD;;OAEG;IACI,SAAS,CAAC,OAA4B;QACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB;QACD,MAAM,KAAK,GAAe,OAAO,CAAC,SAAS,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBAClB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACjB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9C;aACJ;iBAAM;gBACH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACrC;SACJ;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACf;QACD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE;gBACxC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;aACvC;SACJ;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;SACxC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACxB;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,CAAS,EAAE,KAAe;QACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAmB,KAAK,CAAC,GAAG,EAAE,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBACjC,0BAA0B;gBAC1B,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnB,CAAC,GAAG,CAAC,CAAC;aACT;iBAAM;gBACH,CAAC,EAAE,CAAC;aACP;SACJ;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD;;OAEG;IACI,wBAAwB;QAC3B,MAAM,sBAAsB,GAAmB,IAAI,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjG,sBAAsB,CAAC,IAAI,GAAG,SAAS,CAAC;QACxC,MAAM,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACf;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChC;SACJ;QACD,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC1B,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChB,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChB,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;iBACnB;gBACD,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACN;QACD,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED,SAAS;IACT;;;OAGG;IAEI,MAAM,CAAC,iBAAiB,CAAC,OAA4B;QACxD,MAAM,YAAY,GAAG,IAAI,YAAY,CACjC,cAAc,EACd,UAAU,EACV;YACI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACZ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;SACf,EACD,EAAE,CACL,CAAC;QAEF,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,CAAC,aAAa,EAAE,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACnC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC1C;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC1C;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC1C;SACJ;QAED,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ","sourcesContent":["import { Vector3, TmpVectors } from \"../Maths/math.vector\";\r\nimport { Scalar } from \"../Maths/math.scalar\";\r\nimport { PHI } from \"../Maths/math.constants\";\r\nimport { _IsoVector } from \"../Maths/math.isovector\";\r\n\r\n/**\r\n * Class representing data for one face OAB of an equilateral icosahedron\r\n * When O is the isovector (0, 0), A is isovector (m, n)\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class _PrimaryIsoTriangle {\r\n //properties\r\n public m: number;\r\n public n: number;\r\n public cartesian: Vector3[] = [];\r\n public vertices: _IsoVector[] = [];\r\n public max: number[] = [];\r\n public min: number[] = [];\r\n public vecToidx: { [key: string]: number };\r\n public vertByDist: { [key: string]: number[] };\r\n public closestTo: number[][] = [];\r\n\r\n public innerFacets: string[][] = [];\r\n public isoVecsABOB: _IsoVector[][] = [];\r\n public isoVecsOBOA: _IsoVector[][] = [];\r\n public isoVecsBAOA: _IsoVector[][] = [];\r\n public vertexTypes: number[][] = [];\r\n\r\n public coau: number;\r\n public cobu: number;\r\n public coav: number;\r\n public cobv: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public IDATA: PolyhedronData = new PolyhedronData(\r\n \"icosahedron\",\r\n \"Regular\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n [\r\n [0, 2, 1],\r\n [0, 3, 2],\r\n [0, 4, 3],\r\n [0, 5, 4],\r\n [0, 1, 5],\r\n [7, 6, 1],\r\n [8, 7, 2],\r\n [9, 8, 3],\r\n [10, 9, 4],\r\n [6, 10, 5],\r\n [2, 7, 1],\r\n [3, 8, 2],\r\n [4, 9, 3],\r\n [5, 10, 4],\r\n [1, 6, 5],\r\n [11, 6, 7],\r\n [11, 7, 8],\r\n [11, 8, 9],\r\n [11, 9, 10],\r\n [11, 10, 6],\r\n ]\r\n );\r\n\r\n /**\r\n * Creates the PrimaryIsoTriangle Triangle OAB\r\n * @param m an integer\r\n * @param n an integer\r\n */\r\n\r\n //operators\r\n public setIndices() {\r\n let indexCount = 12; // 12 vertices already assigned\r\n const vecToidx: { [key: string]: number } = {}; //maps iso-vectors to indexCount;\r\n const m = this.m;\r\n const n = this.n;\r\n let g = m; // hcf of m, n when n != 0\r\n let m1 = 1;\r\n let n1 = 0;\r\n if (n !== 0) {\r\n g = Scalar.HCF(m, n);\r\n }\r\n m1 = m / g;\r\n n1 = n / g;\r\n\r\n let fr: number | string; //face to the right of current face\r\n let rot: number | string; //rotation about which vertex for fr\r\n let O: number;\r\n let A: number;\r\n let B: number;\r\n const oVec: _IsoVector = _IsoVector.Zero();\r\n const aVec = new _IsoVector(m, n);\r\n const bVec = new _IsoVector(-n, m + n);\r\n const oaVec: _IsoVector = _IsoVector.Zero();\r\n const abVec: _IsoVector = _IsoVector.Zero();\r\n const obVec: _IsoVector = _IsoVector.Zero();\r\n let verts: number[] = [];\r\n let idx: string;\r\n let idxR: string;\r\n let isoId: string;\r\n let isoIdR: string;\r\n\r\n const closestTo: number[][] = [];\r\n const vDist = this.vertByDist;\r\n\r\n const matchIdx = (f: number, fr: number, isoId: string, isoIdR: string) => {\r\n idx = f + \"|\" + isoId;\r\n idxR = fr + \"|\" + isoIdR;\r\n if (!(idx in vecToidx || idxR in vecToidx)) {\r\n vecToidx[idx] = indexCount;\r\n vecToidx[idxR] = indexCount;\r\n indexCount++;\r\n } else if (idx in vecToidx && !(idxR in vecToidx)) {\r\n vecToidx[idxR] = vecToidx[idx];\r\n } else if (idxR in vecToidx && !(idx in vecToidx)) {\r\n vecToidx[idx] = vecToidx[idxR];\r\n }\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n };\r\n\r\n this.IDATA.edgematch = [\r\n [1, \"B\"],\r\n [2, \"B\"],\r\n [3, \"B\"],\r\n [4, \"B\"],\r\n [0, \"B\"],\r\n [10, \"O\", 14, \"A\"],\r\n [11, \"O\", 10, \"A\"],\r\n [12, \"O\", 11, \"A\"],\r\n [13, \"O\", 12, \"A\"],\r\n [14, \"O\", 13, \"A\"],\r\n [0, \"O\"],\r\n [1, \"O\"],\r\n [2, \"O\"],\r\n [3, \"O\"],\r\n [4, \"O\"],\r\n [19, \"B\", 5, \"A\"],\r\n [15, \"B\", 6, \"A\"],\r\n [16, \"B\", 7, \"A\"],\r\n [17, \"B\", 8, \"A\"],\r\n [18, \"B\", 9, \"A\"],\r\n ];\r\n\r\n /***edges AB to OB***** rotation about B*/\r\n for (let f = 0; f < 20; f++) {\r\n //f current face\r\n\r\n verts = this.IDATA.face[f];\r\n O = verts[2];\r\n A = verts[1];\r\n B = verts[0];\r\n\r\n isoId = oVec.x + \"|\" + oVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = O;\r\n closestTo[O] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = aVec.x + \"|\" + aVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = A;\r\n closestTo[A] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = bVec.x + \"|\" + bVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = B;\r\n closestTo[B] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n //for edge vertices\r\n fr = <number>this.IDATA.edgematch[f][0];\r\n rot = <string>this.IDATA.edgematch[f][1];\r\n if (rot === \"B\") {\r\n for (let i = 1; i < g; i++) {\r\n abVec.x = m - i * (m1 + n1);\r\n abVec.y = n + i * m1;\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n isoId = abVec.x + \"|\" + abVec.y;\r\n isoIdR = obVec.x + \"|\" + obVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n if (rot === \"O\") {\r\n for (let i = 1; i < g; i++) {\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n isoId = obVec.x + \"|\" + obVec.y;\r\n isoIdR = oaVec.x + \"|\" + oaVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n fr = <number>this.IDATA.edgematch[f][2];\r\n rot = <string>this.IDATA.edgematch[f][3];\r\n if (rot && rot === \"A\") {\r\n for (let i = 1; i < g; i++) {\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n abVec.x = m - (g - i) * (m1 + n1); //reversed for BA\r\n abVec.y = n + (g - i) * m1; //reversed for BA\r\n isoId = oaVec.x + \"|\" + oaVec.y;\r\n isoIdR = abVec.x + \"|\" + abVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.vertices.length; i++) {\r\n isoId = this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = indexCount++;\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.closestTo = closestTo;\r\n this.vecToidx = vecToidx;\r\n }\r\n\r\n public calcCoeffs() {\r\n const m = this.m;\r\n const n = this.n;\r\n const thirdR3 = Math.sqrt(3) / 3;\r\n\r\n const LSQD = m * m + n * n + m * n;\r\n\r\n this.coau = (m + n) / LSQD;\r\n this.cobu = -n / LSQD;\r\n this.coav = (-thirdR3 * (m - n)) / LSQD;\r\n this.cobv = (thirdR3 * (2 * m + n)) / LSQD;\r\n }\r\n\r\n public createInnerFacets() {\r\n const m = this.m;\r\n const n = this.n;\r\n for (let y = 0; y < n + m + 1; y++) {\r\n for (let x = this.min[y]; x < this.max[y] + 1; x++) {\r\n if (x < this.max[y] && x < this.max[y + 1] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + x + \"|\" + (y + 1), \"|\" + (x + 1) + \"|\" + y]);\r\n }\r\n if (y > 0 && x < this.max[y - 1] && x + 1 < this.max[y] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + (x + 1) + \"|\" + y, \"|\" + (x + 1) + \"|\" + (y - 1)]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public edgeVecsABOB() {\r\n const m = this.m;\r\n const n = this.n;\r\n\r\n const B = new _IsoVector(-n, m + n);\r\n\r\n for (let y = 1; y < m + n; y++) {\r\n const point = new _IsoVector(this.min[y], y);\r\n const prev = new _IsoVector(this.min[y - 1], y - 1);\r\n const next = new _IsoVector(this.min[y + 1], y + 1);\r\n const pointR = point.clone();\r\n const prevR = prev.clone();\r\n const nextR = next.clone();\r\n\r\n pointR.rotate60About(B);\r\n prevR.rotate60About(B);\r\n nextR.rotate60About(B);\r\n\r\n const maxPoint = new _IsoVector(this.max[pointR.y], pointR.y);\r\n const maxPrev = new _IsoVector(this.max[pointR.y - 1], pointR.y - 1);\r\n const maxLeftPrev = new _IsoVector(this.max[pointR.y - 1] - 1, pointR.y - 1);\r\n\r\n if (pointR.x !== maxPoint.x || pointR.y !== maxPoint.y) {\r\n if (pointR.x !== maxPrev.x) {\r\n // type2\r\n //up\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxLeftPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxLeftPrev, maxPoint]);\r\n } else if (pointR.y === nextR.y) {\r\n // type1\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 1]);\r\n this.isoVecsABOB.push([point, maxPrev, next]);\r\n } else {\r\n // type 0\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxPoint]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public mapABOBtoOBOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 0) {\r\n point.rotateNeg120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsOBOA.push(temp);\r\n }\r\n }\r\n\r\n public mapABOBtoBAOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 1) {\r\n point.rotate120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsBAOA.push(temp);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public MapToFace(faceNb: number, geodesicData: PolyhedronData) {\r\n const F = this.IDATA.face[faceNb];\r\n const oidx = F[2];\r\n const aidx = F[1];\r\n const bidx = F[0];\r\n\r\n const O = Vector3.FromArray(this.IDATA.vertex[oidx]);\r\n const A = Vector3.FromArray(this.IDATA.vertex[aidx]);\r\n const B = Vector3.FromArray(this.IDATA.vertex[bidx]);\r\n\r\n const OA = A.subtract(O);\r\n const OB = B.subtract(O);\r\n\r\n const x: Vector3 = OA.scale(this.coau).add(OB.scale(this.cobu));\r\n const y: Vector3 = OA.scale(this.coav).add(OB.scale(this.cobv));\r\n\r\n const mapped = [];\r\n\r\n let idx: string;\r\n let tempVec: Vector3 = TmpVectors.Vector3[0];\r\n for (let i = 0; i < this.cartesian.length; i++) {\r\n tempVec = x.scale(this.cartesian[i].x).add(y.scale(this.cartesian[i].y)).add(O);\r\n mapped[i] = [tempVec.x, tempVec.y, tempVec.z];\r\n idx = faceNb + \"|\" + this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n geodesicData.vertex[this.vecToidx[idx]] = [tempVec.x, tempVec.y, tempVec.z];\r\n }\r\n }\r\n\r\n //statics\r\n /**Creates a primary triangle\r\n * @internal\r\n */\r\n\r\n public build(m: number, n: number) {\r\n const vertices: _IsoVector[] = [];\r\n\r\n const O: _IsoVector = _IsoVector.Zero();\r\n const A: _IsoVector = new _IsoVector(m, n);\r\n const B: _IsoVector = new _IsoVector(-n, m + n);\r\n vertices.push(O, A, B);\r\n\r\n //max internal isoceles triangle vertices\r\n for (let y = n; y < m + 1; y++) {\r\n for (let x = 0; x < m + 1 - y; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n }\r\n }\r\n\r\n //shared vertices along edges when needed\r\n if (n > 0) {\r\n const g = Scalar.HCF(m, n);\r\n const m1 = m / g;\r\n const n1 = n / g;\r\n\r\n for (let i = 1; i < g; i++) {\r\n vertices.push(new _IsoVector(i * m1, i * n1)); //OA\r\n vertices.push(new _IsoVector(-i * n1, i * (m1 + n1))); //OB\r\n vertices.push(new _IsoVector(m - i * (m1 + n1), n + i * m1)); // AB\r\n }\r\n\r\n //lower rows vertices and their rotations\r\n const ratio = m / n;\r\n for (let y = 1; y < n; y++) {\r\n for (let x = 0; x < y * ratio; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n vertices.push(new _IsoVector(x, y).rotate120(m, n));\r\n vertices.push(new _IsoVector(x, y).rotateNeg120(m, n));\r\n }\r\n }\r\n }\r\n //order vertices by x and then y\r\n vertices.sort((a, b) => {\r\n return a.x - b.x;\r\n });\r\n\r\n vertices.sort((a, b) => {\r\n return a.y - b.y;\r\n });\r\n\r\n const min = new Array<number>(m + n + 1);\r\n const max = new Array<number>(m + n + 1);\r\n for (let i = 0; i < min.length; i++) {\r\n min[i] = Infinity;\r\n max[i] = -Infinity;\r\n }\r\n\r\n let y: number = 0;\r\n let x: number = 0;\r\n\r\n const len: number = vertices.length;\r\n for (let i = 0; i < len; i++) {\r\n x = vertices[i].x;\r\n y = vertices[i].y;\r\n min[y] = Math.min(x, min[y]);\r\n max[y] = Math.max(x, max[y]);\r\n }\r\n\r\n //calculates the distance of a vertex from a given primary vertex\r\n const distFrom = (vert: _IsoVector, primVert: string) => {\r\n const v = vert.clone();\r\n if (primVert === \"A\") {\r\n v.rotateNeg120(m, n);\r\n }\r\n if (primVert === \"B\") {\r\n v.rotate120(m, n);\r\n }\r\n if (v.x < 0) {\r\n return v.y;\r\n }\r\n return v.x + v.y;\r\n };\r\n\r\n const cartesian: Vector3[] = [];\r\n const distFromO: number[] = [];\r\n const distFromA: number[] = [];\r\n const distFromB: number[] = [];\r\n const vertByDist: { [key: string]: number[] } = {};\r\n const vertData: number[][] = [];\r\n let closest: number = -1;\r\n let dist: number = -1;\r\n for (let i = 0; i < len; i++) {\r\n cartesian[i] = vertices[i].toCartesianOrigin(new _IsoVector(0, 0), 0.5);\r\n distFromO[i] = distFrom(vertices[i], \"O\");\r\n distFromA[i] = distFrom(vertices[i], \"A\");\r\n distFromB[i] = distFrom(vertices[i], \"B\");\r\n\r\n if (distFromO[i] === distFromA[i] && distFromA[i] === distFromB[i]) {\r\n closest = 3;\r\n dist = distFromO[i];\r\n } else if (distFromO[i] === distFromA[i]) {\r\n closest = 4;\r\n dist = distFromO[i];\r\n } else if (distFromA[i] === distFromB[i]) {\r\n closest = 5;\r\n dist = distFromA[i];\r\n } else if (distFromB[i] === distFromO[i]) {\r\n closest = 6;\r\n dist = distFromO[i];\r\n }\r\n if (distFromO[i] < distFromA[i] && distFromO[i] < distFromB[i]) {\r\n closest = 2;\r\n dist = distFromO[i];\r\n }\r\n if (distFromA[i] < distFromO[i] && distFromA[i] < distFromB[i]) {\r\n closest = 1;\r\n dist = distFromA[i];\r\n }\r\n if (distFromB[i] < distFromA[i] && distFromB[i] < distFromO[i]) {\r\n closest = 0;\r\n dist = distFromB[i];\r\n }\r\n vertData.push([closest, dist, vertices[i].x, vertices[i].y]);\r\n }\r\n\r\n vertData.sort((a, b) => {\r\n return a[2] - b[2];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[1] - b[1];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[0] - b[0];\r\n });\r\n\r\n for (let v = 0; v < vertData.length; v++) {\r\n vertByDist[vertData[v][2] + \"|\" + vertData[v][3]] = [vertData[v][0], vertData[v][1], v];\r\n }\r\n\r\n this.m = m;\r\n this.n = n;\r\n this.vertices = vertices;\r\n this.vertByDist = vertByDist;\r\n this.cartesian = cartesian;\r\n this.min = min;\r\n this.max = max;\r\n\r\n return this;\r\n }\r\n}\r\n\r\n/** Builds Polyhedron Data\r\n * @internal\r\n */\r\n\r\nexport class PolyhedronData {\r\n public edgematch: (number | string)[][];\r\n\r\n constructor(\r\n public name: string,\r\n public category: string,\r\n public vertex: number[][],\r\n public face: number[][]\r\n ) {}\r\n}\r\n\r\n/**\r\n * This class Extends the PolyhedronData Class to provide measures for a Geodesic Polyhedron\r\n */\r\nexport class GeodesicData extends PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public edgematch: (number | string)[][];\r\n /**\r\n * @internal\r\n */\r\n public adjacentFaces: number[][];\r\n /**\r\n * @internal\r\n */\r\n public sharedNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public poleNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public innerToData(face: number, primTri: _PrimaryIsoTriangle) {\r\n for (let i = 0; i < primTri.innerFacets.length; i++) {\r\n this.face.push(primTri.innerFacets[i].map((el) => primTri.vecToidx[face + el]));\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapABOBtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 0) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapOBOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsOBOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapBAOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][2];\r\n for (let i = 0; i < primTri.isoVecsBAOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public orderData(primTri: _PrimaryIsoTriangle) {\r\n const nearTo: number[][][] = [];\r\n for (let i = 0; i < 13; i++) {\r\n nearTo[i] = [];\r\n }\r\n const close: number[][] = primTri.closestTo;\r\n for (let i = 0; i < close.length; i++) {\r\n if (close[i][0] > -1) {\r\n if (close[i][1] > 0) {\r\n nearTo[close[i][0]].push([i, close[i][1]]);\r\n }\r\n } else {\r\n nearTo[12].push([i, close[i][0]]);\r\n }\r\n }\r\n\r\n const near: number[] = [];\r\n for (let i = 0; i < 12; i++) {\r\n near[i] = i;\r\n }\r\n let nearIndex = 12;\r\n for (let i = 0; i < 12; i++) {\r\n nearTo[i].sort((a: number[], b: number[]) => {\r\n return a[1] - b[1];\r\n });\r\n for (let j = 0; j < nearTo[i].length; j++) {\r\n near[nearTo[i][j][0]] = nearIndex++;\r\n }\r\n }\r\n\r\n for (let j = 0; j < nearTo[12].length; j++) {\r\n near[nearTo[12][j][0]] = nearIndex++;\r\n }\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].push(near[i]);\r\n }\r\n\r\n this.vertex.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].pop();\r\n }\r\n\r\n for (let i = 0; i < this.face.length; i++) {\r\n for (let j = 0; j < this.face[i].length; j++) {\r\n this.face[i][j] = near[this.face[i][j]];\r\n }\r\n }\r\n\r\n this.sharedNodes = nearTo[12].length;\r\n this.poleNodes = this.vertex.length - this.sharedNodes;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public setOrder(m: number, faces: number[]) {\r\n const adjVerts: number[] = [];\r\n const dualFaces: number[] = [];\r\n let face: number = <number>faces.pop();\r\n dualFaces.push(face);\r\n let index = this.face[face].indexOf(m);\r\n index = (index + 2) % 3;\r\n let v = this.face[face][index];\r\n adjVerts.push(v);\r\n let f = 0;\r\n while (faces.length > 0) {\r\n face = faces[f];\r\n if (this.face[face].indexOf(v) > -1) {\r\n // v is a vertex of face f\r\n index = (this.face[face].indexOf(v) + 1) % 3;\r\n v = this.face[face][index];\r\n adjVerts.push(v);\r\n dualFaces.push(face);\r\n faces.splice(f, 1);\r\n f = 0;\r\n } else {\r\n f++;\r\n }\r\n }\r\n this.adjacentFaces.push(adjVerts);\r\n return dualFaces;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public toGoldbergPolyhedronData(): PolyhedronData {\r\n const goldbergPolyhedronData: PolyhedronData = new PolyhedronData(\"GeoDual\", \"Goldberg\", [], []);\r\n goldbergPolyhedronData.name = \"GD dual\";\r\n const verticesNb: number = this.vertex.length;\r\n const map = new Array(verticesNb);\r\n for (let v = 0; v < verticesNb; v++) {\r\n map[v] = [];\r\n }\r\n for (let f = 0; f < this.face.length; f++) {\r\n for (let i = 0; i < 3; i++) {\r\n map[this.face[f][i]].push(f);\r\n }\r\n }\r\n let cx = 0;\r\n let cy = 0;\r\n let cz = 0;\r\n let face = [];\r\n let vertex = [];\r\n this.adjacentFaces = [];\r\n for (let m = 0; m < map.length; m++) {\r\n goldbergPolyhedronData.face[m] = this.setOrder(m, map[m].concat([]));\r\n map[m].forEach((el: number) => {\r\n cx = 0;\r\n cy = 0;\r\n cz = 0;\r\n face = this.face[el];\r\n for (let i = 0; i < 3; i++) {\r\n vertex = this.vertex[face[i]];\r\n cx += vertex[0];\r\n cy += vertex[1];\r\n cz += vertex[2];\r\n }\r\n goldbergPolyhedronData.vertex[el] = [cx / 3, cy / 3, cz / 3];\r\n });\r\n }\r\n return goldbergPolyhedronData;\r\n }\r\n\r\n //statics\r\n /**Builds the data for a Geodesic Polyhedron from a primary triangle\r\n * @param primTri the primary triangle\r\n * @internal\r\n */\r\n\r\n public static BuildGeodesicData(primTri: _PrimaryIsoTriangle) {\r\n const geodesicData = new GeodesicData(\r\n \"Geodesic-m-n\",\r\n \"Geodesic\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n []\r\n );\r\n\r\n primTri.setIndices();\r\n primTri.calcCoeffs();\r\n primTri.createInnerFacets();\r\n primTri.edgeVecsABOB();\r\n primTri.mapABOBtoOBOA();\r\n primTri.mapABOBtoBAOA();\r\n\r\n for (let f = 0; f < primTri.IDATA.face.length; f++) {\r\n primTri.MapToFace(f, geodesicData);\r\n geodesicData.innerToData(f, primTri);\r\n if (primTri.IDATA.edgematch[f][1] === \"B\") {\r\n geodesicData.mapABOBtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][1] === \"O\") {\r\n geodesicData.mapOBOAtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][3] === \"A\") {\r\n geodesicData.mapBAOAtoDATA(f, primTri);\r\n }\r\n }\r\n\r\n geodesicData.orderData(primTri);\r\n const radius = 1;\r\n geodesicData.vertex = geodesicData.vertex.map(function (el) {\r\n const a = el[0];\r\n const b = el[1];\r\n const c = el[2];\r\n const d = Math.sqrt(a * a + b * b + c * c);\r\n el[0] *= radius / d;\r\n el[1] *= radius / d;\r\n el[2] *= radius / d;\r\n return el;\r\n });\r\n\r\n return geodesicData;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"geodesicMesh.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/geodesicMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;GAIG;AACH,gEAAgE;AAChE,MAAM,OAAO,mBAAmB;IAAhC;QAIW,cAAS,GAAc,EAAE,CAAC;QAC1B,aAAQ,GAAiB,EAAE,CAAC;QAC5B,QAAG,GAAa,EAAE,CAAC;QACnB,QAAG,GAAa,EAAE,CAAC;QAGnB,cAAS,GAAe,EAAE,CAAC;QAE3B,gBAAW,GAAe,EAAE,CAAC;QAC7B,gBAAW,GAAmB,EAAE,CAAC;QACjC,gBAAW,GAAmB,EAAE,CAAC;QACjC,gBAAW,GAAmB,EAAE,CAAC;QACjC,gBAAW,GAAe,EAAE,CAAC;QAOpC,gEAAgE;QACzD,UAAK,GAAmB,IAAI,cAAc,CAC7C,aAAa,EACb,SAAS,EACT;YACI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACZ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;SACf,EACD;YACI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACd,CACJ,CAAC;IAodN,CAAC;IAldG;;;;OAIG;IAEH,WAAW;IACJ,UAAU;QACb,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC,+BAA+B;QACpD,MAAM,QAAQ,GAA8B,EAAE,CAAC,CAAC,iCAAiC;QACjF,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B;QACrC,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,CAAC,EAAE;YACT,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACxB;QACD,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,EAAmB,CAAC,CAAC,mCAAmC;QAC5D,IAAI,GAAoB,CAAC,CAAC,oCAAoC;QAC9D,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,MAAM,IAAI,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,GAAW,CAAC;QAChB,IAAI,IAAY,CAAC;QACjB,IAAI,KAAa,CAAC;QAClB,IAAI,MAAc,CAAC;QAEnB,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,KAAa,EAAE,MAAc,EAAE,EAAE;YACtE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,EAAE;gBACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBAC5B,UAAU,EAAE,CAAC;aAChB;iBAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE;gBAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;aAClC;iBAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;aAClC;YACD,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACrB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aACjF;iBAAM;gBACH,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aACvF;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG;YACnB,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClB,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,CAAC,EAAE,GAAG,CAAC;YACR,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;SACpB,CAAC;QAEF,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,gBAAgB;YAEhB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEb,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YAED,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YAED,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YAED,mBAAmB;YACnB,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,GAAG,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,GAAG,EAAE;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5B,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACxB,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBAChC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAClC;aACJ;YAED,IAAI,GAAG,KAAK,GAAG,EAAE;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBAChC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAClC;aACJ;YAED,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,GAAG,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE;gBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB;oBACpD,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iBAAiB;oBAC7C,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBAChC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;oBACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAClC;aACJ;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE;oBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;wBACrB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjF;yBAAM;wBACH,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;qBACvF;iBACJ;aACJ;SACJ;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,UAAU;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,CAAC;IAEM,iBAAiB;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;oBAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChG;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtG;aACJ;SACJ;IACL,CAAC;IAEM,YAAY;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAEjB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE3B,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAEvB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE7E,IAAI,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;gBACpD,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;oBACxB,QAAQ;oBACR,IAAI;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;oBACrD,MAAM;oBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACzD;qBAAM,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;oBAC7B,QAAQ;oBACR,IAAI;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC9C,MAAM;oBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;iBACjD;qBAAM;oBACH,SAAS;oBACT,IAAI;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC9C,MAAM;oBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACrD;aACJ;SACJ;IACL,CAAC;IAEM,aAAa;QAChB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC9B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAEM,aAAa;QAChB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC9B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAED,gEAAgE;IACzD,SAAS,CAAC,MAAc,EAAE,YAA4B;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzB,MAAM,CAAC,GAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,GAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,GAAW,CAAC;QAChB,IAAI,OAAO,GAAY,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;SAC/E;IACL,CAAC;IAED,SAAS;IACT;;OAEG;IAEI,KAAK,CAAC,CAAS,EAAE,CAAS;QAC7B,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,MAAM,CAAC,GAAe,UAAU,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,GAAe,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvB,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACvC;SACJ;QAED,yCAAyC;QACzC,IAAI,CAAC,GAAG,CAAC,EAAE;YACP,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnD,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3D,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;aACtE;YAED,yCAAyC;YACzC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;oBAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACpD,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC1D;aACJ;SACJ;QACD,gCAAgC;QAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,GAAW,CAAC,CAAC;QAClB,IAAI,CAAC,GAAW,CAAC,CAAC;QAElB,MAAM,GAAG,GAAW,QAAQ,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,iEAAiE;QACjE,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAE,QAAgB,EAAE,EAAE;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAClB,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACxB;YACD,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAClB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACrB;YACD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,CAAC,CAAC,CAAC;aACd;YACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAgC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,IAAI,OAAO,GAAW,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,GAAW,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACxE,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAE1C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC5D,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC5D,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC5D,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACvB;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE;QAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3F;QAED,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED;;GAEG;AAEH,MAAM,OAAO,cAAc;IAMvB;IACI;;OAEG;IACI,IAAY;IACnB;;OAEG;IACI,QAAgB;IACvB;;OAEG;IACI,MAAkB;IACzB;;OAEG;IACI,IAAgB;QAZhB,SAAI,GAAJ,IAAI,CAAQ;QAIZ,aAAQ,GAAR,QAAQ,CAAQ;QAIhB,WAAM,GAAN,MAAM,CAAY;QAIlB,SAAI,GAAJ,IAAI,CAAY;IACxB,CAAC;CACP;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAc;IAiB5C;;OAEG;IACI,WAAW,CAAC,IAAY,EAAE,OAA4B;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SACnF;IACL,CAAC;IACD;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,OAA4B;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7F;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrG;IACL,CAAC;IACD;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,OAA4B;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7F;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrG;IACL,CAAC;IACD;;OAEG;IACI,aAAa,CAAC,MAAc,EAAE,OAA4B;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7F;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrG;IACL,CAAC;IACD;;OAEG;IACI,SAAS,CAAC,OAA4B;QACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB;QACD,MAAM,KAAK,GAAe,OAAO,CAAC,SAAS,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBAClB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACjB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9C;aACJ;iBAAM;gBACH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACrC;SACJ;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACf;QACD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE;gBACxC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;aACvC;SACJ;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;SACxC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACxB;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,CAAS,EAAE,KAAe;QACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAmB,KAAK,CAAC,GAAG,EAAE,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBACjC,0BAA0B;gBAC1B,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnB,CAAC,GAAG,CAAC,CAAC;aACT;iBAAM;gBACH,CAAC,EAAE,CAAC;aACP;SACJ;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD;;OAEG;IACI,wBAAwB;QAC3B,MAAM,sBAAsB,GAAmB,IAAI,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjG,sBAAsB,CAAC,IAAI,GAAG,SAAS,CAAC;QACxC,MAAM,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACf;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChC;SACJ;QACD,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC1B,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChB,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChB,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;iBACnB;gBACD,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACN;QACD,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED,SAAS;IACT;;;OAGG;IAEI,MAAM,CAAC,iBAAiB,CAAC,OAA4B;QACxD,MAAM,YAAY,GAAG,IAAI,YAAY,CACjC,cAAc,EACd,UAAU,EACV;YACI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;YACZ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;SACf,EACD,EAAE,CACL,CAAC;QAEF,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,CAAC,aAAa,EAAE,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACnC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC1C;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC1C;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC1C;SACJ;QAED,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ","sourcesContent":["import { Vector3, TmpVectors } from \"../Maths/math.vector\";\r\nimport { Scalar } from \"../Maths/math.scalar\";\r\nimport { PHI } from \"../Maths/math.constants\";\r\nimport { _IsoVector } from \"../Maths/math.isovector\";\r\n\r\n/**\r\n * Class representing data for one face OAB of an equilateral icosahedron\r\n * When O is the isovector (0, 0), A is isovector (m, n)\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class _PrimaryIsoTriangle {\r\n //properties\r\n public m: number;\r\n public n: number;\r\n public cartesian: Vector3[] = [];\r\n public vertices: _IsoVector[] = [];\r\n public max: number[] = [];\r\n public min: number[] = [];\r\n public vecToidx: { [key: string]: number };\r\n public vertByDist: { [key: string]: number[] };\r\n public closestTo: number[][] = [];\r\n\r\n public innerFacets: string[][] = [];\r\n public isoVecsABOB: _IsoVector[][] = [];\r\n public isoVecsOBOA: _IsoVector[][] = [];\r\n public isoVecsBAOA: _IsoVector[][] = [];\r\n public vertexTypes: number[][] = [];\r\n\r\n public coau: number;\r\n public cobu: number;\r\n public coav: number;\r\n public cobv: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public IDATA: PolyhedronData = new PolyhedronData(\r\n \"icosahedron\",\r\n \"Regular\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n [\r\n [0, 2, 1],\r\n [0, 3, 2],\r\n [0, 4, 3],\r\n [0, 5, 4],\r\n [0, 1, 5],\r\n [7, 6, 1],\r\n [8, 7, 2],\r\n [9, 8, 3],\r\n [10, 9, 4],\r\n [6, 10, 5],\r\n [2, 7, 1],\r\n [3, 8, 2],\r\n [4, 9, 3],\r\n [5, 10, 4],\r\n [1, 6, 5],\r\n [11, 6, 7],\r\n [11, 7, 8],\r\n [11, 8, 9],\r\n [11, 9, 10],\r\n [11, 10, 6],\r\n ]\r\n );\r\n\r\n /**\r\n * Creates the PrimaryIsoTriangle Triangle OAB\r\n * @param m an integer\r\n * @param n an integer\r\n */\r\n\r\n //operators\r\n public setIndices() {\r\n let indexCount = 12; // 12 vertices already assigned\r\n const vecToidx: { [key: string]: number } = {}; //maps iso-vectors to indexCount;\r\n const m = this.m;\r\n const n = this.n;\r\n let g = m; // hcf of m, n when n != 0\r\n let m1 = 1;\r\n let n1 = 0;\r\n if (n !== 0) {\r\n g = Scalar.HCF(m, n);\r\n }\r\n m1 = m / g;\r\n n1 = n / g;\r\n\r\n let fr: number | string; //face to the right of current face\r\n let rot: number | string; //rotation about which vertex for fr\r\n let O: number;\r\n let A: number;\r\n let B: number;\r\n const oVec: _IsoVector = _IsoVector.Zero();\r\n const aVec = new _IsoVector(m, n);\r\n const bVec = new _IsoVector(-n, m + n);\r\n const oaVec: _IsoVector = _IsoVector.Zero();\r\n const abVec: _IsoVector = _IsoVector.Zero();\r\n const obVec: _IsoVector = _IsoVector.Zero();\r\n let verts: number[] = [];\r\n let idx: string;\r\n let idxR: string;\r\n let isoId: string;\r\n let isoIdR: string;\r\n\r\n const closestTo: number[][] = [];\r\n const vDist = this.vertByDist;\r\n\r\n const matchIdx = (f: number, fr: number, isoId: string, isoIdR: string) => {\r\n idx = f + \"|\" + isoId;\r\n idxR = fr + \"|\" + isoIdR;\r\n if (!(idx in vecToidx || idxR in vecToidx)) {\r\n vecToidx[idx] = indexCount;\r\n vecToidx[idxR] = indexCount;\r\n indexCount++;\r\n } else if (idx in vecToidx && !(idxR in vecToidx)) {\r\n vecToidx[idxR] = vecToidx[idx];\r\n } else if (idxR in vecToidx && !(idx in vecToidx)) {\r\n vecToidx[idx] = vecToidx[idxR];\r\n }\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n };\r\n\r\n this.IDATA.edgematch = [\r\n [1, \"B\"],\r\n [2, \"B\"],\r\n [3, \"B\"],\r\n [4, \"B\"],\r\n [0, \"B\"],\r\n [10, \"O\", 14, \"A\"],\r\n [11, \"O\", 10, \"A\"],\r\n [12, \"O\", 11, \"A\"],\r\n [13, \"O\", 12, \"A\"],\r\n [14, \"O\", 13, \"A\"],\r\n [0, \"O\"],\r\n [1, \"O\"],\r\n [2, \"O\"],\r\n [3, \"O\"],\r\n [4, \"O\"],\r\n [19, \"B\", 5, \"A\"],\r\n [15, \"B\", 6, \"A\"],\r\n [16, \"B\", 7, \"A\"],\r\n [17, \"B\", 8, \"A\"],\r\n [18, \"B\", 9, \"A\"],\r\n ];\r\n\r\n /***edges AB to OB***** rotation about B*/\r\n for (let f = 0; f < 20; f++) {\r\n //f current face\r\n\r\n verts = this.IDATA.face[f];\r\n O = verts[2];\r\n A = verts[1];\r\n B = verts[0];\r\n\r\n isoId = oVec.x + \"|\" + oVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = O;\r\n closestTo[O] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = aVec.x + \"|\" + aVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = A;\r\n closestTo[A] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = bVec.x + \"|\" + bVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = B;\r\n closestTo[B] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n //for edge vertices\r\n fr = <number>this.IDATA.edgematch[f][0];\r\n rot = <string>this.IDATA.edgematch[f][1];\r\n if (rot === \"B\") {\r\n for (let i = 1; i < g; i++) {\r\n abVec.x = m - i * (m1 + n1);\r\n abVec.y = n + i * m1;\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n isoId = abVec.x + \"|\" + abVec.y;\r\n isoIdR = obVec.x + \"|\" + obVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n if (rot === \"O\") {\r\n for (let i = 1; i < g; i++) {\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n isoId = obVec.x + \"|\" + obVec.y;\r\n isoIdR = oaVec.x + \"|\" + oaVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n fr = <number>this.IDATA.edgematch[f][2];\r\n rot = <string>this.IDATA.edgematch[f][3];\r\n if (rot && rot === \"A\") {\r\n for (let i = 1; i < g; i++) {\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n abVec.x = m - (g - i) * (m1 + n1); //reversed for BA\r\n abVec.y = n + (g - i) * m1; //reversed for BA\r\n isoId = oaVec.x + \"|\" + oaVec.y;\r\n isoIdR = abVec.x + \"|\" + abVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.vertices.length; i++) {\r\n isoId = this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = indexCount++;\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.closestTo = closestTo;\r\n this.vecToidx = vecToidx;\r\n }\r\n\r\n public calcCoeffs() {\r\n const m = this.m;\r\n const n = this.n;\r\n const thirdR3 = Math.sqrt(3) / 3;\r\n\r\n const LSQD = m * m + n * n + m * n;\r\n\r\n this.coau = (m + n) / LSQD;\r\n this.cobu = -n / LSQD;\r\n this.coav = (-thirdR3 * (m - n)) / LSQD;\r\n this.cobv = (thirdR3 * (2 * m + n)) / LSQD;\r\n }\r\n\r\n public createInnerFacets() {\r\n const m = this.m;\r\n const n = this.n;\r\n for (let y = 0; y < n + m + 1; y++) {\r\n for (let x = this.min[y]; x < this.max[y] + 1; x++) {\r\n if (x < this.max[y] && x < this.max[y + 1] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + x + \"|\" + (y + 1), \"|\" + (x + 1) + \"|\" + y]);\r\n }\r\n if (y > 0 && x < this.max[y - 1] && x + 1 < this.max[y] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + (x + 1) + \"|\" + y, \"|\" + (x + 1) + \"|\" + (y - 1)]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public edgeVecsABOB() {\r\n const m = this.m;\r\n const n = this.n;\r\n\r\n const B = new _IsoVector(-n, m + n);\r\n\r\n for (let y = 1; y < m + n; y++) {\r\n const point = new _IsoVector(this.min[y], y);\r\n const prev = new _IsoVector(this.min[y - 1], y - 1);\r\n const next = new _IsoVector(this.min[y + 1], y + 1);\r\n const pointR = point.clone();\r\n const prevR = prev.clone();\r\n const nextR = next.clone();\r\n\r\n pointR.rotate60About(B);\r\n prevR.rotate60About(B);\r\n nextR.rotate60About(B);\r\n\r\n const maxPoint = new _IsoVector(this.max[pointR.y], pointR.y);\r\n const maxPrev = new _IsoVector(this.max[pointR.y - 1], pointR.y - 1);\r\n const maxLeftPrev = new _IsoVector(this.max[pointR.y - 1] - 1, pointR.y - 1);\r\n\r\n if (pointR.x !== maxPoint.x || pointR.y !== maxPoint.y) {\r\n if (pointR.x !== maxPrev.x) {\r\n // type2\r\n //up\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxLeftPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxLeftPrev, maxPoint]);\r\n } else if (pointR.y === nextR.y) {\r\n // type1\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 1]);\r\n this.isoVecsABOB.push([point, maxPrev, next]);\r\n } else {\r\n // type 0\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxPoint]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public mapABOBtoOBOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 0) {\r\n point.rotateNeg120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsOBOA.push(temp);\r\n }\r\n }\r\n\r\n public mapABOBtoBAOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 1) {\r\n point.rotate120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsBAOA.push(temp);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public MapToFace(faceNb: number, geodesicData: PolyhedronData) {\r\n const F = this.IDATA.face[faceNb];\r\n const oidx = F[2];\r\n const aidx = F[1];\r\n const bidx = F[0];\r\n\r\n const O = Vector3.FromArray(this.IDATA.vertex[oidx]);\r\n const A = Vector3.FromArray(this.IDATA.vertex[aidx]);\r\n const B = Vector3.FromArray(this.IDATA.vertex[bidx]);\r\n\r\n const OA = A.subtract(O);\r\n const OB = B.subtract(O);\r\n\r\n const x: Vector3 = OA.scale(this.coau).add(OB.scale(this.cobu));\r\n const y: Vector3 = OA.scale(this.coav).add(OB.scale(this.cobv));\r\n\r\n const mapped = [];\r\n\r\n let idx: string;\r\n let tempVec: Vector3 = TmpVectors.Vector3[0];\r\n for (let i = 0; i < this.cartesian.length; i++) {\r\n tempVec = x.scale(this.cartesian[i].x).add(y.scale(this.cartesian[i].y)).add(O);\r\n mapped[i] = [tempVec.x, tempVec.y, tempVec.z];\r\n idx = faceNb + \"|\" + this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n geodesicData.vertex[this.vecToidx[idx]] = [tempVec.x, tempVec.y, tempVec.z];\r\n }\r\n }\r\n\r\n //statics\r\n /**Creates a primary triangle\r\n * @internal\r\n */\r\n\r\n public build(m: number, n: number) {\r\n const vertices: _IsoVector[] = [];\r\n\r\n const O: _IsoVector = _IsoVector.Zero();\r\n const A: _IsoVector = new _IsoVector(m, n);\r\n const B: _IsoVector = new _IsoVector(-n, m + n);\r\n vertices.push(O, A, B);\r\n\r\n //max internal isoceles triangle vertices\r\n for (let y = n; y < m + 1; y++) {\r\n for (let x = 0; x < m + 1 - y; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n }\r\n }\r\n\r\n //shared vertices along edges when needed\r\n if (n > 0) {\r\n const g = Scalar.HCF(m, n);\r\n const m1 = m / g;\r\n const n1 = n / g;\r\n\r\n for (let i = 1; i < g; i++) {\r\n vertices.push(new _IsoVector(i * m1, i * n1)); //OA\r\n vertices.push(new _IsoVector(-i * n1, i * (m1 + n1))); //OB\r\n vertices.push(new _IsoVector(m - i * (m1 + n1), n + i * m1)); // AB\r\n }\r\n\r\n //lower rows vertices and their rotations\r\n const ratio = m / n;\r\n for (let y = 1; y < n; y++) {\r\n for (let x = 0; x < y * ratio; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n vertices.push(new _IsoVector(x, y).rotate120(m, n));\r\n vertices.push(new _IsoVector(x, y).rotateNeg120(m, n));\r\n }\r\n }\r\n }\r\n //order vertices by x and then y\r\n vertices.sort((a, b) => {\r\n return a.x - b.x;\r\n });\r\n\r\n vertices.sort((a, b) => {\r\n return a.y - b.y;\r\n });\r\n\r\n const min = new Array<number>(m + n + 1);\r\n const max = new Array<number>(m + n + 1);\r\n for (let i = 0; i < min.length; i++) {\r\n min[i] = Infinity;\r\n max[i] = -Infinity;\r\n }\r\n\r\n let y: number = 0;\r\n let x: number = 0;\r\n\r\n const len: number = vertices.length;\r\n for (let i = 0; i < len; i++) {\r\n x = vertices[i].x;\r\n y = vertices[i].y;\r\n min[y] = Math.min(x, min[y]);\r\n max[y] = Math.max(x, max[y]);\r\n }\r\n\r\n //calculates the distance of a vertex from a given primary vertex\r\n const distFrom = (vert: _IsoVector, primVert: string) => {\r\n const v = vert.clone();\r\n if (primVert === \"A\") {\r\n v.rotateNeg120(m, n);\r\n }\r\n if (primVert === \"B\") {\r\n v.rotate120(m, n);\r\n }\r\n if (v.x < 0) {\r\n return v.y;\r\n }\r\n return v.x + v.y;\r\n };\r\n\r\n const cartesian: Vector3[] = [];\r\n const distFromO: number[] = [];\r\n const distFromA: number[] = [];\r\n const distFromB: number[] = [];\r\n const vertByDist: { [key: string]: number[] } = {};\r\n const vertData: number[][] = [];\r\n let closest: number = -1;\r\n let dist: number = -1;\r\n for (let i = 0; i < len; i++) {\r\n cartesian[i] = vertices[i].toCartesianOrigin(new _IsoVector(0, 0), 0.5);\r\n distFromO[i] = distFrom(vertices[i], \"O\");\r\n distFromA[i] = distFrom(vertices[i], \"A\");\r\n distFromB[i] = distFrom(vertices[i], \"B\");\r\n\r\n if (distFromO[i] === distFromA[i] && distFromA[i] === distFromB[i]) {\r\n closest = 3;\r\n dist = distFromO[i];\r\n } else if (distFromO[i] === distFromA[i]) {\r\n closest = 4;\r\n dist = distFromO[i];\r\n } else if (distFromA[i] === distFromB[i]) {\r\n closest = 5;\r\n dist = distFromA[i];\r\n } else if (distFromB[i] === distFromO[i]) {\r\n closest = 6;\r\n dist = distFromO[i];\r\n }\r\n if (distFromO[i] < distFromA[i] && distFromO[i] < distFromB[i]) {\r\n closest = 2;\r\n dist = distFromO[i];\r\n }\r\n if (distFromA[i] < distFromO[i] && distFromA[i] < distFromB[i]) {\r\n closest = 1;\r\n dist = distFromA[i];\r\n }\r\n if (distFromB[i] < distFromA[i] && distFromB[i] < distFromO[i]) {\r\n closest = 0;\r\n dist = distFromB[i];\r\n }\r\n vertData.push([closest, dist, vertices[i].x, vertices[i].y]);\r\n }\r\n\r\n vertData.sort((a, b) => {\r\n return a[2] - b[2];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[1] - b[1];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[0] - b[0];\r\n });\r\n\r\n for (let v = 0; v < vertData.length; v++) {\r\n vertByDist[vertData[v][2] + \"|\" + vertData[v][3]] = [vertData[v][0], vertData[v][1], v];\r\n }\r\n\r\n this.m = m;\r\n this.n = n;\r\n this.vertices = vertices;\r\n this.vertByDist = vertByDist;\r\n this.cartesian = cartesian;\r\n this.min = min;\r\n this.max = max;\r\n\r\n return this;\r\n }\r\n}\r\n\r\n/** Builds Polyhedron Data\r\n * @internal\r\n */\r\n\r\nexport class PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public edgematch: (number | string)[][];\r\n\r\n constructor(\r\n /**\r\n * The name of the polyhedron\r\n */\r\n public name: string,\r\n /**\r\n * The category of the polyhedron\r\n */\r\n public category: string,\r\n /**\r\n * vertex data\r\n */\r\n public vertex: number[][],\r\n /**\r\n * face data\r\n */\r\n public face: number[][]\r\n ) {}\r\n}\r\n\r\n/**\r\n * This class Extends the PolyhedronData Class to provide measures for a Geodesic Polyhedron\r\n */\r\nexport class GeodesicData extends PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public edgematch: (number | string)[][];\r\n /**\r\n * @internal\r\n */\r\n public adjacentFaces: number[][];\r\n /**\r\n * @internal\r\n */\r\n public sharedNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public poleNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public innerToData(face: number, primTri: _PrimaryIsoTriangle) {\r\n for (let i = 0; i < primTri.innerFacets.length; i++) {\r\n this.face.push(primTri.innerFacets[i].map((el) => primTri.vecToidx[face + el]));\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapABOBtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 0) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapOBOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsOBOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapBAOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][2];\r\n for (let i = 0; i < primTri.isoVecsBAOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public orderData(primTri: _PrimaryIsoTriangle) {\r\n const nearTo: number[][][] = [];\r\n for (let i = 0; i < 13; i++) {\r\n nearTo[i] = [];\r\n }\r\n const close: number[][] = primTri.closestTo;\r\n for (let i = 0; i < close.length; i++) {\r\n if (close[i][0] > -1) {\r\n if (close[i][1] > 0) {\r\n nearTo[close[i][0]].push([i, close[i][1]]);\r\n }\r\n } else {\r\n nearTo[12].push([i, close[i][0]]);\r\n }\r\n }\r\n\r\n const near: number[] = [];\r\n for (let i = 0; i < 12; i++) {\r\n near[i] = i;\r\n }\r\n let nearIndex = 12;\r\n for (let i = 0; i < 12; i++) {\r\n nearTo[i].sort((a: number[], b: number[]) => {\r\n return a[1] - b[1];\r\n });\r\n for (let j = 0; j < nearTo[i].length; j++) {\r\n near[nearTo[i][j][0]] = nearIndex++;\r\n }\r\n }\r\n\r\n for (let j = 0; j < nearTo[12].length; j++) {\r\n near[nearTo[12][j][0]] = nearIndex++;\r\n }\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].push(near[i]);\r\n }\r\n\r\n this.vertex.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].pop();\r\n }\r\n\r\n for (let i = 0; i < this.face.length; i++) {\r\n for (let j = 0; j < this.face[i].length; j++) {\r\n this.face[i][j] = near[this.face[i][j]];\r\n }\r\n }\r\n\r\n this.sharedNodes = nearTo[12].length;\r\n this.poleNodes = this.vertex.length - this.sharedNodes;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public setOrder(m: number, faces: number[]) {\r\n const adjVerts: number[] = [];\r\n const dualFaces: number[] = [];\r\n let face: number = <number>faces.pop();\r\n dualFaces.push(face);\r\n let index = this.face[face].indexOf(m);\r\n index = (index + 2) % 3;\r\n let v = this.face[face][index];\r\n adjVerts.push(v);\r\n let f = 0;\r\n while (faces.length > 0) {\r\n face = faces[f];\r\n if (this.face[face].indexOf(v) > -1) {\r\n // v is a vertex of face f\r\n index = (this.face[face].indexOf(v) + 1) % 3;\r\n v = this.face[face][index];\r\n adjVerts.push(v);\r\n dualFaces.push(face);\r\n faces.splice(f, 1);\r\n f = 0;\r\n } else {\r\n f++;\r\n }\r\n }\r\n this.adjacentFaces.push(adjVerts);\r\n return dualFaces;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public toGoldbergPolyhedronData(): PolyhedronData {\r\n const goldbergPolyhedronData: PolyhedronData = new PolyhedronData(\"GeoDual\", \"Goldberg\", [], []);\r\n goldbergPolyhedronData.name = \"GD dual\";\r\n const verticesNb: number = this.vertex.length;\r\n const map = new Array(verticesNb);\r\n for (let v = 0; v < verticesNb; v++) {\r\n map[v] = [];\r\n }\r\n for (let f = 0; f < this.face.length; f++) {\r\n for (let i = 0; i < 3; i++) {\r\n map[this.face[f][i]].push(f);\r\n }\r\n }\r\n let cx = 0;\r\n let cy = 0;\r\n let cz = 0;\r\n let face = [];\r\n let vertex = [];\r\n this.adjacentFaces = [];\r\n for (let m = 0; m < map.length; m++) {\r\n goldbergPolyhedronData.face[m] = this.setOrder(m, map[m].concat([]));\r\n map[m].forEach((el: number) => {\r\n cx = 0;\r\n cy = 0;\r\n cz = 0;\r\n face = this.face[el];\r\n for (let i = 0; i < 3; i++) {\r\n vertex = this.vertex[face[i]];\r\n cx += vertex[0];\r\n cy += vertex[1];\r\n cz += vertex[2];\r\n }\r\n goldbergPolyhedronData.vertex[el] = [cx / 3, cy / 3, cz / 3];\r\n });\r\n }\r\n return goldbergPolyhedronData;\r\n }\r\n\r\n //statics\r\n /**Builds the data for a Geodesic Polyhedron from a primary triangle\r\n * @param primTri the primary triangle\r\n * @internal\r\n */\r\n\r\n public static BuildGeodesicData(primTri: _PrimaryIsoTriangle) {\r\n const geodesicData = new GeodesicData(\r\n \"Geodesic-m-n\",\r\n \"Geodesic\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n []\r\n );\r\n\r\n primTri.setIndices();\r\n primTri.calcCoeffs();\r\n primTri.createInnerFacets();\r\n primTri.edgeVecsABOB();\r\n primTri.mapABOBtoOBOA();\r\n primTri.mapABOBtoBAOA();\r\n\r\n for (let f = 0; f < primTri.IDATA.face.length; f++) {\r\n primTri.MapToFace(f, geodesicData);\r\n geodesicData.innerToData(f, primTri);\r\n if (primTri.IDATA.edgematch[f][1] === \"B\") {\r\n geodesicData.mapABOBtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][1] === \"O\") {\r\n geodesicData.mapOBOAtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][3] === \"A\") {\r\n geodesicData.mapBAOAtoDATA(f, primTri);\r\n }\r\n }\r\n\r\n geodesicData.orderData(primTri);\r\n const radius = 1;\r\n geodesicData.vertex = geodesicData.vertex.map(function (el) {\r\n const a = el[0];\r\n const b = el[1];\r\n const c = el[2];\r\n const d = Math.sqrt(a * a + b * b + c * c);\r\n el[0] *= radius / d;\r\n el[1] *= radius / d;\r\n el[2] *= radius / d;\r\n return el;\r\n });\r\n\r\n return geodesicData;\r\n }\r\n}\r\n"]}
package/Meshes/index.d.ts CHANGED
@@ -29,3 +29,4 @@ export * from "./GreasedLine/greasedLineBaseMesh";
29
29
  import "./thinInstanceMesh";
30
30
  export * from "./thinInstanceMesh";
31
31
  export * from "./Node/index";
32
+ export * from "./GaussianSplatting/gaussianSplattingMesh";
package/Meshes/index.js CHANGED
@@ -32,4 +32,5 @@ import "./thinInstanceMesh.js";
32
32
  // eslint-disable-next-line no-duplicate-imports
33
33
  export * from "./thinInstanceMesh.js";
34
34
  export * from "./Node/index.js";
35
+ export * from "./GaussianSplatting/gaussianSplattingMesh.js";
35
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,+CAA+C;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,OAAO,oBAAoB,CAAC;AAC5B,gDAAgD;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/export */\r\n/* eslint-disable import/no-internal-modules */\r\nexport * from \"./abstractMesh\";\r\nimport \"./abstractMesh.decalMap\";\r\nexport * from \"./Compression/index\";\r\nexport * from \"./csg\";\r\nexport * from \"./meshUVSpaceRenderer\";\r\nexport * from \"./geometry\";\r\nexport * from \"./groundMesh\";\r\nexport * from \"./goldbergMesh\";\r\nexport * from \"./trailMesh\";\r\nexport * from \"./instancedMesh\";\r\nexport * from \"./linesMesh\";\r\nexport * from \"./mesh\";\r\nexport * from \"./mesh.vertexData\";\r\nexport * from \"./meshBuilder\";\r\nexport * from \"./meshSimplification\";\r\nexport * from \"./meshSimplificationSceneComponent\";\r\nexport * from \"./polygonMesh\";\r\nexport * from \"./geodesicMesh\";\r\nexport * from \"./subMesh\";\r\nexport * from \"./subMesh.project\";\r\nexport * from \"./meshLODLevel\";\r\nexport * from \"./transformNode\";\r\nexport * from \"./Builders/index\";\r\nexport * from \"./WebGL/webGLDataBuffer\";\r\nexport * from \"./WebGPU/webgpuDataBuffer\";\r\nexport * from \"./GreasedLine/greasedLineMesh\";\r\nexport * from \"./GreasedLine/greasedLineRibbonMesh\";\r\nexport * from \"./GreasedLine/greasedLineBaseMesh\";\r\nimport \"./thinInstanceMesh\";\r\n// eslint-disable-next-line no-duplicate-imports\r\nexport * from \"./thinInstanceMesh\";\r\nexport * from \"./Node/index\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,+CAA+C;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,OAAO,oBAAoB,CAAC;AAC5B,gDAAgD;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,2CAA2C,CAAC","sourcesContent":["/* eslint-disable import/export */\r\n/* eslint-disable import/no-internal-modules */\r\nexport * from \"./abstractMesh\";\r\nimport \"./abstractMesh.decalMap\";\r\nexport * from \"./Compression/index\";\r\nexport * from \"./csg\";\r\nexport * from \"./meshUVSpaceRenderer\";\r\nexport * from \"./geometry\";\r\nexport * from \"./groundMesh\";\r\nexport * from \"./goldbergMesh\";\r\nexport * from \"./trailMesh\";\r\nexport * from \"./instancedMesh\";\r\nexport * from \"./linesMesh\";\r\nexport * from \"./mesh\";\r\nexport * from \"./mesh.vertexData\";\r\nexport * from \"./meshBuilder\";\r\nexport * from \"./meshSimplification\";\r\nexport * from \"./meshSimplificationSceneComponent\";\r\nexport * from \"./polygonMesh\";\r\nexport * from \"./geodesicMesh\";\r\nexport * from \"./subMesh\";\r\nexport * from \"./subMesh.project\";\r\nexport * from \"./meshLODLevel\";\r\nexport * from \"./transformNode\";\r\nexport * from \"./Builders/index\";\r\nexport * from \"./WebGL/webGLDataBuffer\";\r\nexport * from \"./WebGPU/webgpuDataBuffer\";\r\nexport * from \"./GreasedLine/greasedLineMesh\";\r\nexport * from \"./GreasedLine/greasedLineRibbonMesh\";\r\nexport * from \"./GreasedLine/greasedLineBaseMesh\";\r\nimport \"./thinInstanceMesh\";\r\n// eslint-disable-next-line no-duplicate-imports\r\nexport * from \"./thinInstanceMesh\";\r\nexport * from \"./Node/index\";\r\nexport * from \"./GaussianSplatting/gaussianSplattingMesh\";\r\n"]}
@@ -30,7 +30,7 @@ export declare class InstancedMesh extends AbstractMesh {
30
30
  */
31
31
  constructor(name: string, source: Mesh);
32
32
  /**
33
- * Returns the string "InstancedMesh".
33
+ * @returns the string "InstancedMesh".
34
34
  */
35
35
  getClassName(): string;
36
36
  /** Gets the list of lights affecting that mesh */
@@ -64,7 +64,7 @@ export declare class InstancedMesh extends AbstractMesh {
64
64
  get renderingGroupId(): number;
65
65
  set renderingGroupId(value: number);
66
66
  /**
67
- * Returns the total number of vertices (integer).
67
+ * @returns the total number of vertices (integer).
68
68
  */
69
69
  getTotalVertices(): number;
70
70
  /**
@@ -121,10 +121,11 @@ export declare class InstancedMesh extends AbstractMesh {
121
121
  * - VertexBuffer.MatricesWeightsExtraKind
122
122
  *
123
123
  * Returns the Mesh.
124
- * @param kind
125
- * @param data
126
- * @param updatable
127
- * @param stride
124
+ * @param kind defines vertex data kind
125
+ * @param data defines the data source
126
+ * @param updatable defines if the data must be flagged as updatable (false as default)
127
+ * @param stride defines the vertex stride (optional)
128
+ * @returns the current mesh
128
129
  */
129
130
  setVerticesData(kind: string, data: FloatArray, updatable?: boolean, stride?: number): AbstractMesh;
130
131
  /**
@@ -150,10 +151,11 @@ export declare class InstancedMesh extends AbstractMesh {
150
151
  * - VertexBuffer.MatricesWeightsExtraKind
151
152
  *
152
153
  * Returns the Mesh.
153
- * @param kind
154
- * @param data
155
- * @param updateExtends
156
- * @param makeItUnique
154
+ * @param kind defines vertex data kind
155
+ * @param data defines the data source
156
+ * @param updateExtends defines if extends info of the mesh must be updated (can be null). This is mostly useful for "position" kind
157
+ * @param makeItUnique defines it the updated vertex buffer must be flagged as unique (false by default)
158
+ * @returns the source mesh
157
159
  */
158
160
  updateVerticesData(kind: string, data: FloatArray, updateExtends?: boolean, makeItUnique?: boolean): Mesh;
159
161
  /**
@@ -162,17 +164,31 @@ export declare class InstancedMesh extends AbstractMesh {
162
164
  * If the mesh has no geometry, a new Geometry object is created and set to the mesh.
163
165
  * This method creates a new index buffer each call.
164
166
  * Returns the Mesh.
165
- * @param indices
166
- * @param totalVertices
167
+ * @param indices the source data
168
+ * @param totalVertices defines the total number of vertices referenced by indices (could be null)
169
+ * @returns source mesh
167
170
  */
168
171
  setIndices(indices: IndicesArray, totalVertices?: Nullable<number>): Mesh;
169
172
  /**
170
173
  * Boolean : True if the mesh owns the requested kind of data.
171
- * @param kind
174
+ * @param kind defines which buffer to check (positions, indices, normals, etc). Possible `kind` values :
175
+ * - VertexBuffer.PositionKind
176
+ * - VertexBuffer.UVKind
177
+ * - VertexBuffer.UV2Kind
178
+ * - VertexBuffer.UV3Kind
179
+ * - VertexBuffer.UV4Kind
180
+ * - VertexBuffer.UV5Kind
181
+ * - VertexBuffer.UV6Kind
182
+ * - VertexBuffer.ColorKind
183
+ * - VertexBuffer.MatricesIndicesKind
184
+ * - VertexBuffer.MatricesIndicesExtraKind
185
+ * - VertexBuffer.MatricesWeightsKind
186
+ * - VertexBuffer.MatricesWeightsExtraKind
187
+ * @returns true if data kind is present
172
188
  */
173
189
  isVerticesDataPresent(kind: string): boolean;
174
190
  /**
175
- * Returns an array of indices (IndicesArray).
191
+ * @returns an array of indices (IndicesArray).
176
192
  */
177
193
  getIndices(): Nullable<IndicesArray>;
178
194
  get _positions(): Nullable<Vector3[]>;
@@ -196,7 +212,8 @@ export declare class InstancedMesh extends AbstractMesh {
196
212
  get isAnInstance(): boolean;
197
213
  /**
198
214
  * Returns the current associated LOD AbstractMesh.
199
- * @param camera
215
+ * @param camera defines the camera to use to pick the LOD level
216
+ * @returns a Mesh or `null` if no LOD is associated with the AbstractMesh
200
217
  */
201
218
  getLOD(camera: Camera): AbstractMesh;
202
219
  /**
@@ -223,8 +240,8 @@ export declare class InstancedMesh extends AbstractMesh {
223
240
  /**
224
241
  * Disposes the InstancedMesh.
225
242
  * Returns nothing.
226
- * @param doNotRecurse
227
- * @param disposeMaterialAndTextures
243
+ * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
244
+ * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
228
245
  */
229
246
  dispose(doNotRecurse?: boolean, disposeMaterialAndTextures?: boolean): void;
230
247
  /**
@@ -52,7 +52,7 @@ export class InstancedMesh extends AbstractMesh {
52
52
  this._syncSubMeshes();
53
53
  }
54
54
  /**
55
- * Returns the string "InstancedMesh".
55
+ * @returns the string "InstancedMesh".
56
56
  */
57
57
  getClassName() {
58
58
  return "InstancedMesh";
@@ -133,7 +133,7 @@ export class InstancedMesh extends AbstractMesh {
133
133
  Logger.Warn("Note - setting renderingGroupId of an instanced mesh has no effect on the scene");
134
134
  }
135
135
  /**
136
- * Returns the total number of vertices (integer).
136
+ * @returns the total number of vertices (integer).
137
137
  */
138
138
  getTotalVertices() {
139
139
  return this._sourceMesh ? this._sourceMesh.getTotalVertices() : 0;
@@ -202,10 +202,11 @@ export class InstancedMesh extends AbstractMesh {
202
202
  * - VertexBuffer.MatricesWeightsExtraKind
203
203
  *
204
204
  * Returns the Mesh.
205
- * @param kind
206
- * @param data
207
- * @param updatable
208
- * @param stride
205
+ * @param kind defines vertex data kind
206
+ * @param data defines the data source
207
+ * @param updatable defines if the data must be flagged as updatable (false as default)
208
+ * @param stride defines the vertex stride (optional)
209
+ * @returns the current mesh
209
210
  */
210
211
  setVerticesData(kind, data, updatable, stride) {
211
212
  if (this.sourceMesh) {
@@ -236,10 +237,11 @@ export class InstancedMesh extends AbstractMesh {
236
237
  * - VertexBuffer.MatricesWeightsExtraKind
237
238
  *
238
239
  * Returns the Mesh.
239
- * @param kind
240
- * @param data
241
- * @param updateExtends
242
- * @param makeItUnique
240
+ * @param kind defines vertex data kind
241
+ * @param data defines the data source
242
+ * @param updateExtends defines if extends info of the mesh must be updated (can be null). This is mostly useful for "position" kind
243
+ * @param makeItUnique defines it the updated vertex buffer must be flagged as unique (false by default)
244
+ * @returns the source mesh
243
245
  */
244
246
  updateVerticesData(kind, data, updateExtends, makeItUnique) {
245
247
  if (this.sourceMesh) {
@@ -253,8 +255,9 @@ export class InstancedMesh extends AbstractMesh {
253
255
  * If the mesh has no geometry, a new Geometry object is created and set to the mesh.
254
256
  * This method creates a new index buffer each call.
255
257
  * Returns the Mesh.
256
- * @param indices
257
- * @param totalVertices
258
+ * @param indices the source data
259
+ * @param totalVertices defines the total number of vertices referenced by indices (could be null)
260
+ * @returns source mesh
258
261
  */
259
262
  setIndices(indices, totalVertices = null) {
260
263
  if (this.sourceMesh) {
@@ -264,13 +267,26 @@ export class InstancedMesh extends AbstractMesh {
264
267
  }
265
268
  /**
266
269
  * Boolean : True if the mesh owns the requested kind of data.
267
- * @param kind
270
+ * @param kind defines which buffer to check (positions, indices, normals, etc). Possible `kind` values :
271
+ * - VertexBuffer.PositionKind
272
+ * - VertexBuffer.UVKind
273
+ * - VertexBuffer.UV2Kind
274
+ * - VertexBuffer.UV3Kind
275
+ * - VertexBuffer.UV4Kind
276
+ * - VertexBuffer.UV5Kind
277
+ * - VertexBuffer.UV6Kind
278
+ * - VertexBuffer.ColorKind
279
+ * - VertexBuffer.MatricesIndicesKind
280
+ * - VertexBuffer.MatricesIndicesExtraKind
281
+ * - VertexBuffer.MatricesWeightsKind
282
+ * - VertexBuffer.MatricesWeightsExtraKind
283
+ * @returns true if data kind is present
268
284
  */
269
285
  isVerticesDataPresent(kind) {
270
286
  return this._sourceMesh.isVerticesDataPresent(kind);
271
287
  }
272
288
  /**
273
- * Returns an array of indices (IndicesArray).
289
+ * @returns an array of indices (IndicesArray).
274
290
  */
275
291
  getIndices() {
276
292
  return this._sourceMesh.getIndices();
@@ -364,7 +380,8 @@ export class InstancedMesh extends AbstractMesh {
364
380
  }
365
381
  /**
366
382
  * Returns the current associated LOD AbstractMesh.
367
- * @param camera
383
+ * @param camera defines the camera to use to pick the LOD level
384
+ * @returns a Mesh or `null` if no LOD is associated with the AbstractMesh
368
385
  */
369
386
  getLOD(camera) {
370
387
  if (!camera) {
@@ -478,8 +495,8 @@ export class InstancedMesh extends AbstractMesh {
478
495
  /**
479
496
  * Disposes the InstancedMesh.
480
497
  * Returns nothing.
481
- * @param doNotRecurse
482
- * @param disposeMaterialAndTextures
498
+ * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
499
+ * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
483
500
  */
484
501
  dispose(doNotRecurse, disposeMaterialAndTextures = false) {
485
502
  // Remove from mesh