@faicad/faijs 0.30.9 → 0.32.2
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.
- package/dist/api/align/index.d.ts +64 -0
- package/dist/api/align/index.d.ts.map +1 -0
- package/dist/api/align/index.js +101 -0
- package/dist/api/align/index.js.map +1 -0
- package/dist/api/api-namespace.d.ts +5 -4
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +45 -7
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/boolean-op/index.d.ts +65 -0
- package/dist/api/boolean-op/index.d.ts.map +1 -0
- package/dist/api/boolean-op/index.js +114 -0
- package/dist/api/boolean-op/index.js.map +1 -0
- package/dist/api/boolean.d.ts.map +1 -1
- package/dist/api/boolean.js +19 -27
- package/dist/api/boolean.js.map +1 -1
- package/dist/api/brep-operations/healingFns.d.ts +13 -0
- package/dist/api/brep-operations/healingFns.d.ts.map +1 -1
- package/dist/api/brep-operations/healingFns.js +28 -1
- package/dist/api/brep-operations/healingFns.js.map +1 -1
- package/dist/api/brep-operations/joinery-brep.js +10 -10
- package/dist/api/brep-operations/joinery-brep.js.map +1 -1
- package/dist/api/brep-operations/topologyFns.d.ts +27 -6
- package/dist/api/brep-operations/topologyFns.d.ts.map +1 -1
- package/dist/api/brep-operations/topologyFns.js +46 -22
- package/dist/api/brep-operations/topologyFns.js.map +1 -1
- package/dist/api/chamfer.d.ts +5 -4
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +13 -11
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/curve-sketch/index.d.ts.map +1 -1
- package/dist/api/curve-sketch/index.js +12 -3
- package/dist/api/curve-sketch/index.js.map +1 -1
- package/dist/api/draft.js +2 -3
- package/dist/api/draft.js.map +1 -1
- package/dist/api/engrave.d.ts.map +1 -1
- package/dist/api/engrave.js +4 -13
- package/dist/api/engrave.js.map +1 -1
- package/dist/api/export-3mf.d.ts +73 -0
- package/dist/api/export-3mf.d.ts.map +1 -0
- package/dist/api/export-3mf.js +121 -0
- package/dist/api/export-3mf.js.map +1 -0
- package/dist/api/export-brep.d.ts +6 -0
- package/dist/api/export-brep.d.ts.map +1 -1
- package/dist/api/export-brep.js +11 -2
- package/dist/api/export-brep.js.map +1 -1
- package/dist/api/export-step.d.ts +67 -0
- package/dist/api/export-step.d.ts.map +1 -0
- package/dist/api/export-step.js +98 -0
- package/dist/api/export-step.js.map +1 -0
- package/dist/api/export-stl.d.ts +8 -0
- package/dist/api/export-stl.d.ts.map +1 -1
- package/dist/api/export-stl.js +23 -8
- package/dist/api/export-stl.js.map +1 -1
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +18 -17
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/feature-repair.d.ts +1 -1
- package/dist/api/feature-repair.d.ts.map +1 -1
- package/dist/api/feature-repair.js +7 -7
- package/dist/api/feature-repair.js.map +1 -1
- package/dist/api/fillet-variable.d.ts.map +1 -1
- package/dist/api/fillet-variable.js +1 -1
- package/dist/api/fillet-variable.js.map +1 -1
- package/dist/api/fillet.d.ts +3 -3
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +4 -4
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/generated/operations.js +16 -16
- package/dist/api/generated/operations.js.map +1 -1
- package/dist/api/generated/script-face-manifest.d.ts +1 -1
- package/dist/api/generated/script-face-manifest.js +3 -3
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/generated/script-face.d.ts +1 -1
- package/dist/api/generated/script-face.js +1 -1
- package/dist/api/generated/script-face.js.map +1 -1
- package/dist/api/generated/sketching.js +1 -1
- package/dist/api/generated/sketching.js.map +1 -1
- package/dist/api/generated/topology.js +18 -18
- package/dist/api/generated/topology.js.map +1 -1
- package/dist/api/helix.d.ts +1 -1
- package/dist/api/helix.d.ts.map +1 -1
- package/dist/api/helix.js +2 -1
- package/dist/api/helix.js.map +1 -1
- package/dist/api/import-brep.d.ts.map +1 -1
- package/dist/api/import-brep.js +1 -0
- package/dist/api/import-brep.js.map +1 -1
- package/dist/api/import-step.d.ts.map +1 -1
- package/dist/api/import-step.js +1 -0
- package/dist/api/import-step.js.map +1 -1
- package/dist/api/index.d.ts +9 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +19 -4
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/compat-op.d.ts +6 -6
- package/dist/api/internal/compat-op.d.ts.map +1 -1
- package/dist/api/internal/compat-op.js +7 -9
- package/dist/api/internal/compat-op.js.map +1 -1
- package/dist/api/internal/export-members.d.ts +80 -0
- package/dist/api/internal/export-members.d.ts.map +1 -0
- package/dist/api/internal/export-members.js +104 -0
- package/dist/api/internal/export-members.js.map +1 -0
- package/dist/api/internal/l3-bridge.d.ts +17 -0
- package/dist/api/internal/l3-bridge.d.ts.map +1 -1
- package/dist/api/internal/l3-bridge.js +23 -1
- package/dist/api/internal/l3-bridge.js.map +1 -1
- package/dist/api/loft-advanced.d.ts +66 -0
- package/dist/api/loft-advanced.d.ts.map +1 -0
- package/dist/api/loft-advanced.js +112 -0
- package/dist/api/loft-advanced.js.map +1 -0
- package/dist/api/loft.d.ts +16 -23
- package/dist/api/loft.d.ts.map +1 -1
- package/dist/api/loft.js +22 -40
- package/dist/api/loft.js.map +1 -1
- package/dist/api/measure-query/index.d.ts +262 -0
- package/dist/api/measure-query/index.d.ts.map +1 -0
- package/dist/api/measure-query/index.js +392 -0
- package/dist/api/measure-query/index.js.map +1 -0
- package/dist/api/pattern.d.ts.map +1 -1
- package/dist/api/pattern.js +1 -3
- package/dist/api/pattern.js.map +1 -1
- package/dist/api/place.d.ts.map +1 -1
- package/dist/api/place.js +1 -0
- package/dist/api/place.js.map +1 -1
- package/dist/api/primitives.d.ts +6 -6
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +12 -11
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +1 -1
- package/dist/api/profile.js.map +1 -1
- package/dist/api/punch-hole.d.ts.map +1 -1
- package/dist/api/punch-hole.js +1 -1
- package/dist/api/punch-hole.js.map +1 -1
- package/dist/api/replicate.d.ts +5 -7
- package/dist/api/replicate.d.ts.map +1 -1
- package/dist/api/replicate.js +24 -56
- package/dist/api/replicate.js.map +1 -1
- package/dist/api/revolve.d.ts.map +1 -1
- package/dist/api/revolve.js +1 -0
- package/dist/api/revolve.js.map +1 -1
- package/dist/api/screw.d.ts.map +1 -1
- package/dist/api/screw.js +1 -0
- package/dist/api/screw.js.map +1 -1
- package/dist/api/sdf.d.ts.map +1 -1
- package/dist/api/sdf.js +1 -0
- package/dist/api/sdf.js.map +1 -1
- package/dist/api/section-by-plane.d.ts.map +1 -1
- package/dist/api/section-by-plane.js +0 -1
- package/dist/api/section-by-plane.js.map +1 -1
- package/dist/api/shell.d.ts +1 -1
- package/dist/api/shell.d.ts.map +1 -1
- package/dist/api/shell.js +12 -2
- package/dist/api/shell.js.map +1 -1
- package/dist/api/sketch-on-face.d.ts +34 -30
- package/dist/api/sketch-on-face.d.ts.map +1 -1
- package/dist/api/sketch-on-face.js +40 -28
- package/dist/api/sketch-on-face.js.map +1 -1
- package/dist/api/sketch-on-plane.d.ts.map +1 -1
- package/dist/api/sketch-on-plane.js +1 -1
- package/dist/api/sketch-on-plane.js.map +1 -1
- package/dist/api/sketch-on-surface.d.ts +76 -0
- package/dist/api/sketch-on-surface.d.ts.map +1 -0
- package/dist/api/sketch-on-surface.js +99 -0
- package/dist/api/sketch-on-surface.js.map +1 -0
- package/dist/api/solid-offset/index.d.ts.map +1 -1
- package/dist/api/solid-offset/index.js +1 -0
- package/dist/api/solid-offset/index.js.map +1 -1
- package/dist/api/split-by-plane.d.ts.map +1 -1
- package/dist/api/split-by-plane.js +0 -1
- package/dist/api/split-by-plane.js.map +1 -1
- package/dist/api/split.d.ts +1 -1
- package/dist/api/split.d.ts.map +1 -1
- package/dist/api/split.js +2 -1
- package/dist/api/split.js.map +1 -1
- package/dist/api/surface/arg-spec.d.ts +8 -16
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js +21 -28
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/surface-face/index.d.ts.map +1 -1
- package/dist/api/surface-face/index.js +5 -0
- package/dist/api/surface-face/index.js.map +1 -1
- package/dist/api/surface.d.ts.map +1 -1
- package/dist/api/surface.js +1 -0
- package/dist/api/surface.js.map +1 -1
- package/dist/api/sweep-advanced.d.ts +117 -0
- package/dist/api/sweep-advanced.d.ts.map +1 -0
- package/dist/api/sweep-advanced.js +94 -0
- package/dist/api/sweep-advanced.js.map +1 -0
- package/dist/api/sweep.d.ts +18 -76
- package/dist/api/sweep.d.ts.map +1 -1
- package/dist/api/sweep.js +27 -28
- package/dist/api/sweep.js.map +1 -1
- package/dist/api/thicken.d.ts.map +1 -1
- package/dist/api/thicken.js +12 -2
- package/dist/api/thicken.js.map +1 -1
- package/dist/api/transform.d.ts +3 -3
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +49 -17
- package/dist/api/transform.js.map +1 -1
- package/dist/api/wire.d.ts.map +1 -1
- package/dist/api/wire.js +1 -0
- package/dist/api/wire.js.map +1 -1
- package/dist/boolean/cross-section.d.ts +7 -6
- package/dist/boolean/cross-section.d.ts.map +1 -1
- package/dist/boolean/cross-section.js +38 -27
- package/dist/boolean/cross-section.js.map +1 -1
- package/dist/boolean/deriveNormals.d.ts +5 -5
- package/dist/boolean/deriveNormals.d.ts.map +1 -1
- package/dist/boolean/deriveNormals.js +18 -18
- package/dist/boolean/deriveNormals.js.map +1 -1
- package/dist/boolean/extrude-helpers.d.ts +6 -6
- package/dist/boolean/extrude-helpers.d.ts.map +1 -1
- package/dist/boolean/extrude-helpers.js +6 -6
- package/dist/boolean/extrude-helpers.js.map +1 -1
- package/dist/boolean/geo-convert.d.ts +11 -8
- package/dist/boolean/geo-convert.d.ts.map +1 -1
- package/dist/boolean/geo-convert.js +17 -73
- package/dist/boolean/geo-convert.js.map +1 -1
- package/dist/boolean/index.d.ts +23 -0
- package/dist/boolean/index.d.ts.map +1 -0
- package/dist/boolean/index.js +27 -0
- package/dist/boolean/index.js.map +1 -0
- package/dist/brep/brep-chain.d.ts +1 -19
- package/dist/brep/brep-chain.d.ts.map +1 -1
- package/dist/brep/brep-chain.js +0 -1
- package/dist/brep/brep-chain.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +9 -6
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +51 -47
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.js +24 -3
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/adapters/brepkit.d.ts +4 -3
- package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brepkit.js +4 -98
- package/dist/brep/engine/adapters/brepkit.js.map +1 -1
- package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
- package/dist/brep/engine/adapters/occt.js +0 -144
- package/dist/brep/engine/adapters/occt.js.map +1 -1
- package/dist/brep/engine/native-history.d.ts +27 -0
- package/dist/brep/engine/native-history.d.ts.map +1 -0
- package/dist/brep/engine/native-history.js +54 -0
- package/dist/brep/engine/native-history.js.map +1 -0
- package/dist/brep/engine/primitives.d.ts +30 -0
- package/dist/brep/engine/primitives.d.ts.map +1 -1
- package/dist/brep/engine/primitives.js.map +1 -1
- package/dist/brep/engine/registry.d.ts +2 -4
- package/dist/brep/engine/registry.d.ts.map +1 -1
- package/dist/brep/engine/registry.js +1 -1
- package/dist/brep/engine/registry.js.map +1 -1
- package/dist/brep/engine/types.d.ts +35 -77
- package/dist/brep/engine/types.d.ts.map +1 -1
- package/dist/brep/engine/types.js.map +1 -1
- package/dist/brep/export/export-model.d.ts +21 -0
- package/dist/brep/export/export-model.d.ts.map +1 -1
- package/dist/brep/export/export-model.js +171 -73
- package/dist/brep/export/export-model.js.map +1 -1
- package/dist/brep/export/step.d.ts +17 -1
- package/dist/brep/export/step.d.ts.map +1 -1
- package/dist/brep/export/step.js +133 -0
- package/dist/brep/export/step.js.map +1 -1
- package/dist/brep/export/stl.d.ts +22 -1
- package/dist/brep/export/stl.d.ts.map +1 -1
- package/dist/brep/export/stl.js +58 -10
- package/dist/brep/export/stl.js.map +1 -1
- package/dist/brep/export/transform12.d.ts +47 -0
- package/dist/brep/export/transform12.d.ts.map +1 -0
- package/dist/brep/export/transform12.js +87 -0
- package/dist/brep/export/transform12.js.map +1 -0
- package/dist/brep/face-evolution.d.ts +53 -0
- package/dist/brep/face-evolution.d.ts.map +1 -1
- package/dist/brep/face-evolution.js +65 -0
- package/dist/brep/face-evolution.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +138 -0
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/browser-host/index.d.ts +4 -1
- package/dist/browser-host/index.d.ts.map +1 -1
- package/dist/browser-host/index.js +7 -1
- package/dist/browser-host/index.js.map +1 -1
- package/dist/browser.d.ts +4 -8
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -26
- package/dist/browser.js.map +1 -1
- package/dist/cad-runtime/backend-dispatch.d.ts +13 -58
- package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
- package/dist/cad-runtime/backend-dispatch.js +22 -80
- package/dist/cad-runtime/backend-dispatch.js.map +1 -1
- package/dist/cad-runtime/content-key.d.ts +3 -3
- package/dist/cad-runtime/content-key.js +3 -3
- package/dist/cad-runtime/content-key.js.map +1 -1
- package/dist/cad-runtime/ports.d.ts +28 -0
- package/dist/cad-runtime/ports.d.ts.map +1 -1
- package/dist/cad-runtime/ports.js.map +1 -1
- package/dist/cad-runtime/runtime.d.ts +33 -12
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +49 -50
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +22 -18
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +5 -20
- package/dist/define-op.js.map +1 -1
- package/dist/env-agnostic.d.ts +2 -2
- package/dist/env-agnostic.d.ts.map +1 -1
- package/dist/env-agnostic.js +1 -1
- package/dist/env-agnostic.js.map +1 -1
- package/dist/index.d.ts +14 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -75
- package/dist/index.js.map +1 -1
- package/dist/lang/codegen.d.ts +14 -3
- package/dist/lang/codegen.d.ts.map +1 -1
- package/dist/lang/codegen.js +80 -5
- package/dist/lang/codegen.js.map +1 -1
- package/dist/lang/metadata-extractor.d.ts +10 -3
- package/dist/lang/metadata-extractor.d.ts.map +1 -1
- package/dist/lang/metadata-extractor.js +160 -65
- package/dist/lang/metadata-extractor.js.map +1 -1
- package/dist/lang/symbol-table.generated.d.ts +20 -0
- package/dist/lang/symbol-table.generated.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.js +20 -0
- package/dist/lang/symbol-table.generated.js.map +1 -1
- package/dist/math3d/Box3.d.ts +86 -0
- package/dist/math3d/Box3.d.ts.map +1 -0
- package/dist/math3d/Box3.js +149 -0
- package/dist/math3d/Box3.js.map +1 -0
- package/dist/math3d/Euler.d.ts +64 -0
- package/dist/math3d/Euler.d.ts.map +1 -0
- package/dist/math3d/Euler.js +94 -0
- package/dist/math3d/Euler.js.map +1 -0
- package/dist/math3d/Mat4.d.ts +196 -0
- package/dist/math3d/Mat4.d.ts.map +1 -0
- package/dist/math3d/Mat4.js +518 -0
- package/dist/math3d/Mat4.js.map +1 -0
- package/dist/math3d/Plane.d.ts +67 -0
- package/dist/math3d/Plane.d.ts.map +1 -0
- package/dist/math3d/Plane.js +90 -0
- package/dist/math3d/Plane.js.map +1 -0
- package/dist/math3d/Quat.d.ts +163 -0
- package/dist/math3d/Quat.d.ts.map +1 -0
- package/dist/math3d/Quat.js +408 -0
- package/dist/math3d/Quat.js.map +1 -0
- package/dist/math3d/Vec2.d.ts +185 -0
- package/dist/math3d/Vec2.d.ts.map +1 -0
- package/dist/math3d/Vec2.js +276 -0
- package/dist/math3d/Vec2.js.map +1 -0
- package/dist/math3d/Vec3.d.ts +326 -0
- package/dist/math3d/Vec3.d.ts.map +1 -0
- package/dist/math3d/Vec3.js +521 -0
- package/dist/math3d/Vec3.js.map +1 -0
- package/dist/math3d/index.d.ts +19 -0
- package/dist/math3d/index.d.ts.map +1 -0
- package/dist/math3d/index.js +19 -0
- package/dist/math3d/index.js.map +1 -0
- package/dist/mesh/decoration-provider.d.ts +2 -2
- package/dist/mesh/decoration-provider.d.ts.map +1 -1
- package/dist/mesh/decoration-provider.js.map +1 -1
- package/dist/mesh/engrave.d.ts.map +1 -1
- package/dist/mesh/engrave.js +36 -37
- package/dist/mesh/engrave.js.map +1 -1
- package/dist/mesh/index.d.ts +18 -23
- package/dist/mesh/index.d.ts.map +1 -1
- package/dist/mesh/index.js +18 -20
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/io.d.ts +42 -14
- package/dist/mesh/io.d.ts.map +1 -1
- package/dist/mesh/io.js +83 -20
- package/dist/mesh/io.js.map +1 -1
- package/dist/mesh/knurl/KnurlGenerator.d.ts +8 -7
- package/dist/mesh/knurl/KnurlGenerator.d.ts.map +1 -1
- package/dist/mesh/knurl/KnurlGenerator.js +9 -9
- package/dist/mesh/knurl/KnurlGenerator.js.map +1 -1
- package/dist/mesh/knurl/displacement.d.ts +7 -6
- package/dist/mesh/knurl/displacement.d.ts.map +1 -1
- package/dist/mesh/knurl/displacement.js +29 -29
- package/dist/mesh/knurl/displacement.js.map +1 -1
- package/dist/mesh/knurl/subdivision.d.ts +3 -3
- package/dist/mesh/knurl/subdivision.d.ts.map +1 -1
- package/dist/mesh/knurl/subdivision.js +21 -15
- package/dist/mesh/knurl/subdivision.js.map +1 -1
- package/dist/mesh/knurl/textureLoader.d.ts +3 -3
- package/dist/mesh/knurl/textureLoader.d.ts.map +1 -1
- package/dist/mesh/knurl/textureLoader.js.map +1 -1
- package/dist/mesh/meshdata/index.d.ts +12 -0
- package/dist/mesh/meshdata/index.d.ts.map +1 -0
- package/dist/mesh/meshdata/index.js +12 -0
- package/dist/mesh/meshdata/index.js.map +1 -0
- package/dist/mesh/meshdata/ops.d.ts +62 -0
- package/dist/mesh/meshdata/ops.d.ts.map +1 -0
- package/dist/mesh/meshdata/ops.js +160 -0
- package/dist/mesh/meshdata/ops.js.map +1 -0
- package/dist/mesh/meshdata/parametric.d.ts +70 -0
- package/dist/mesh/meshdata/parametric.d.ts.map +1 -0
- package/dist/mesh/meshdata/parametric.js +213 -0
- package/dist/mesh/meshdata/parametric.js.map +1 -0
- package/dist/mesh/meshdata/weld.d.ts +21 -0
- package/dist/mesh/meshdata/weld.d.ts.map +1 -0
- package/dist/mesh/meshdata/weld.js +50 -0
- package/dist/mesh/meshdata/weld.js.map +1 -0
- package/dist/mesh/primitives.d.ts +1 -1
- package/dist/mesh/primitives.d.ts.map +1 -1
- package/dist/mesh/primitives.js +38 -39
- package/dist/mesh/primitives.js.map +1 -1
- package/dist/mesh/query.js +11 -11
- package/dist/mesh/query.js.map +1 -1
- package/dist/mesh/stl-loader.d.ts +7 -7
- package/dist/mesh/stl-loader.d.ts.map +1 -1
- package/dist/mesh/stl-loader.js +12 -24
- package/dist/mesh/stl-loader.js.map +1 -1
- package/dist/mesh/threemf-loader.d.ts +38 -4
- package/dist/mesh/threemf-loader.d.ts.map +1 -1
- package/dist/mesh/threemf-loader.js +115 -34
- package/dist/mesh/threemf-loader.js.map +1 -1
- package/dist/mesh/threemf-view.d.ts +11 -11
- package/dist/mesh/threemf-view.d.ts.map +1 -1
- package/dist/mesh/threemf-view.js +10 -10
- package/dist/mesh/threemf-view.js.map +1 -1
- package/dist/mesh/transform.d.ts +14 -8
- package/dist/mesh/transform.d.ts.map +1 -1
- package/dist/mesh/transform.js +18 -13
- package/dist/mesh/transform.js.map +1 -1
- package/dist/mesh/types.d.ts +32 -0
- package/dist/mesh/types.d.ts.map +1 -1
- package/dist/mesh/types.js.map +1 -1
- package/dist/node-host/execute-script.d.ts +2 -1
- package/dist/node-host/execute-script.d.ts.map +1 -1
- package/dist/node-host/execute-script.js +5 -4
- package/dist/node-host/execute-script.js.map +1 -1
- package/dist/node-host/index.d.ts +1 -0
- package/dist/node-host/index.d.ts.map +1 -1
- package/dist/node-host/index.js +4 -0
- package/dist/node-host/index.js.map +1 -1
- package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
- package/dist/occt-kernel/occt-primitives.js +20 -0
- package/dist/occt-kernel/occt-primitives.js.map +1 -1
- package/dist/primitives/brep-primitives.d.ts +8 -12
- package/dist/primitives/brep-primitives.d.ts.map +1 -1
- package/dist/primitives/brep-primitives.js +10 -28
- package/dist/primitives/brep-primitives.js.map +1 -1
- package/dist/primitives/index.d.ts +19 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +21 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/mesh-primitives.d.ts +10 -10
- package/dist/primitives/mesh-primitives.d.ts.map +1 -1
- package/dist/primitives/mesh-primitives.js +29 -76
- package/dist/primitives/mesh-primitives.js.map +1 -1
- package/dist/primitives/screw/screw.d.ts +3 -3
- package/dist/primitives/screw/screw.d.ts.map +1 -1
- package/dist/primitives/screw/screw.js +10 -9
- package/dist/primitives/screw/screw.js.map +1 -1
- package/dist/runtime-state.d.ts +63 -29
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +57 -0
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdf/index.d.ts +12 -0
- package/dist/sdf/index.d.ts.map +1 -0
- package/dist/sdf/index.js +13 -0
- package/dist/sdf/index.js.map +1 -0
- package/dist/sdk.d.ts +0 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js.map +1 -1
- package/dist/units.d.ts +40 -0
- package/dist/units.d.ts.map +1 -1
- package/dist/units.js.map +1 -1
- package/dist/weapp.d.ts +2 -2
- package/dist/weapp.d.ts.map +1 -1
- package/dist/weapp.js +1 -1
- package/dist/weapp.js.map +1 -1
- package/package.json +277 -38
- package/dist/api/brep-mirror/booleanFns.d.ts +0 -40
- package/dist/api/brep-mirror/booleanFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/booleanFns.js +0 -104
- package/dist/api/brep-mirror/booleanFns.js.map +0 -1
- package/dist/api/brep-mirror/brepHelpers.d.ts +0 -55
- package/dist/api/brep-mirror/brepHelpers.d.ts.map +0 -1
- package/dist/api/brep-mirror/brepHelpers.js +0 -131
- package/dist/api/brep-mirror/brepHelpers.js.map +0 -1
- package/dist/api/brep-mirror/compoundFns.d.ts +0 -47
- package/dist/api/brep-mirror/compoundFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/compoundFns.js +0 -300
- package/dist/api/brep-mirror/compoundFns.js.map +0 -1
- package/dist/api/brep-mirror/healingFns.d.ts +0 -78
- package/dist/api/brep-mirror/healingFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/healingFns.js +0 -294
- package/dist/api/brep-mirror/healingFns.js.map +0 -1
- package/dist/api/brep-mirror/hullFns.d.ts +0 -20
- package/dist/api/brep-mirror/hullFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/hullFns.js +0 -46
- package/dist/api/brep-mirror/hullFns.js.map +0 -1
- package/dist/api/brep-mirror/joinery-brep.d.ts +0 -172
- package/dist/api/brep-mirror/joinery-brep.d.ts.map +0 -1
- package/dist/api/brep-mirror/joinery-brep.js +0 -463
- package/dist/api/brep-mirror/joinery-brep.js.map +0 -1
- package/dist/api/brep-mirror/patternFns.d.ts +0 -43
- package/dist/api/brep-mirror/patternFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/patternFns.js +0 -178
- package/dist/api/brep-mirror/patternFns.js.map +0 -1
- package/dist/api/brep-mirror/primitiveFns.d.ts +0 -42
- package/dist/api/brep-mirror/primitiveFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/primitiveFns.js +0 -104
- package/dist/api/brep-mirror/primitiveFns.js.map +0 -1
- package/dist/api/brep-mirror/roofFns.d.ts +0 -24
- package/dist/api/brep-mirror/roofFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/roofFns.js +0 -229
- package/dist/api/brep-mirror/roofFns.js.map +0 -1
- package/dist/api/brep-mirror/straightSkeleton.d.ts +0 -36
- package/dist/api/brep-mirror/straightSkeleton.d.ts.map +0 -1
- package/dist/api/brep-mirror/straightSkeleton.js +0 -443
- package/dist/api/brep-mirror/straightSkeleton.js.map +0 -1
- package/dist/api/brep-mirror/sweepFns.d.ts +0 -55
- package/dist/api/brep-mirror/sweepFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/sweepFns.js +0 -200
- package/dist/api/brep-mirror/sweepFns.js.map +0 -1
- package/dist/api/brep-mirror/threadFns.d.ts +0 -83
- package/dist/api/brep-mirror/threadFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/threadFns.js +0 -138
- package/dist/api/brep-mirror/threadFns.js.map +0 -1
- package/dist/api/brep-mirror/topologyFns.d.ts +0 -74
- package/dist/api/brep-mirror/topologyFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/topologyFns.js +0 -276
- package/dist/api/brep-mirror/topologyFns.js.map +0 -1
- package/dist/api/brepjs-compat/constants.d.ts +0 -11
- package/dist/api/brepjs-compat/constants.d.ts.map +0 -1
- package/dist/api/brepjs-compat/constants.js +0 -11
- package/dist/api/brepjs-compat/constants.js.map +0 -1
- package/dist/api/brepjs-compat/index.d.ts +0 -21
- package/dist/api/brepjs-compat/index.d.ts.map +0 -1
- package/dist/api/brepjs-compat/index.js +0 -22
- package/dist/api/brepjs-compat/index.js.map +0 -1
- package/dist/api/brepjs-compat/planeOps.d.ts +0 -98
- package/dist/api/brepjs-compat/planeOps.d.ts.map +0 -1
- package/dist/api/brepjs-compat/planeOps.js +0 -170
- package/dist/api/brepjs-compat/planeOps.js.map +0 -1
- package/dist/api/brepjs-compat/planeTypes.d.ts +0 -24
- package/dist/api/brepjs-compat/planeTypes.d.ts.map +0 -1
- package/dist/api/brepjs-compat/planeTypes.js +0 -8
- package/dist/api/brepjs-compat/planeTypes.js.map +0 -1
- package/dist/api/brepjs-compat/types.d.ts +0 -64
- package/dist/api/brepjs-compat/types.d.ts.map +0 -1
- package/dist/api/brepjs-compat/types.js +0 -48
- package/dist/api/brepjs-compat/types.js.map +0 -1
- package/dist/api/brepjs-compat/vecOps.d.ts +0 -124
- package/dist/api/brepjs-compat/vecOps.d.ts.map +0 -1
- package/dist/api/brepjs-compat/vecOps.js +0 -202
- package/dist/api/brepjs-compat/vecOps.js.map +0 -1
- package/dist/api/generated/brepjs/index.d.ts +0 -310
- package/dist/api/generated/brepjs/index.d.ts.map +0 -1
- package/dist/api/generated/brepjs/index.js +0 -195
- package/dist/api/generated/brepjs/index.js.map +0 -1
- package/dist/api/generated/cad/script-face.d.ts +0 -12
- package/dist/api/generated/cad/script-face.d.ts.map +0 -1
- package/dist/api/generated/cad/script-face.js +0 -146
- package/dist/api/generated/cad/script-face.js.map +0 -1
- package/dist/api/internal/compat-projection.d.ts +0 -55
- package/dist/api/internal/compat-projection.d.ts.map +0 -1
- package/dist/api/internal/compat-projection.js +0 -75
- package/dist/api/internal/compat-projection.js.map +0 -1
- package/dist/api/occt-kernel-bridge.d.ts +0 -118
- package/dist/api/occt-kernel-bridge.d.ts.map +0 -1
- package/dist/api/occt-kernel-bridge.js +0 -283
- package/dist/api/occt-kernel-bridge.js.map +0 -1
- package/dist/api/sketch.d.ts +0 -80
- package/dist/api/sketch.d.ts.map +0 -1
- package/dist/api/sketch.js +0 -155
- package/dist/api/sketch.js.map +0 -1
- package/dist/api/surface/projection-overrides.d.ts +0 -38
- package/dist/api/surface/projection-overrides.d.ts.map +0 -1
- package/dist/api/surface/projection-overrides.js +0 -169
- package/dist/api/surface/projection-overrides.js.map +0 -1
- package/dist/brepjs-compat.d.ts +0 -20
- package/dist/brepjs-compat.d.ts.map +0 -1
- package/dist/brepjs-compat.js +0 -20
- package/dist/brepjs-compat.js.map +0 -1
- package/dist/cad-runtime/createRuntimeWithCad.d.ts +0 -22
- package/dist/cad-runtime/createRuntimeWithCad.d.ts.map +0 -1
- package/dist/cad-runtime/createRuntimeWithCad.js +0 -29
- package/dist/cad-runtime/createRuntimeWithCad.js.map +0 -1
- package/dist/fcstd/attachment.d.ts +0 -72
- package/dist/fcstd/attachment.d.ts.map +0 -1
- package/dist/fcstd/attachment.js +0 -93
- package/dist/fcstd/attachment.js.map +0 -1
- package/dist/fcstd/build-fai-zip.d.ts +0 -40
- package/dist/fcstd/build-fai-zip.d.ts.map +0 -1
- package/dist/fcstd/build-fai-zip.js +0 -111
- package/dist/fcstd/build-fai-zip.js.map +0 -1
- package/dist/fcstd/cli.d.ts +0 -3
- package/dist/fcstd/cli.d.ts.map +0 -1
- package/dist/fcstd/cli.js +0 -37
- package/dist/fcstd/cli.js.map +0 -1
- package/dist/fcstd/codegen.d.ts +0 -79
- package/dist/fcstd/codegen.d.ts.map +0 -1
- package/dist/fcstd/codegen.js +0 -605
- package/dist/fcstd/codegen.js.map +0 -1
- package/dist/fcstd/container.d.ts +0 -75
- package/dist/fcstd/container.d.ts.map +0 -1
- package/dist/fcstd/container.js +0 -36
- package/dist/fcstd/container.js.map +0 -1
- package/dist/fcstd/contour.d.ts +0 -43
- package/dist/fcstd/contour.d.ts.map +0 -1
- package/dist/fcstd/contour.js +0 -96
- package/dist/fcstd/contour.js.map +0 -1
- package/dist/fcstd/convert.d.ts +0 -63
- package/dist/fcstd/convert.d.ts.map +0 -1
- package/dist/fcstd/convert.js +0 -274
- package/dist/fcstd/convert.js.map +0 -1
- package/dist/fcstd/document.d.ts +0 -48
- package/dist/fcstd/document.d.ts.map +0 -1
- package/dist/fcstd/document.js +0 -140
- package/dist/fcstd/document.js.map +0 -1
- package/dist/fcstd/expressions.d.ts +0 -74
- package/dist/fcstd/expressions.d.ts.map +0 -1
- package/dist/fcstd/expressions.js +0 -157
- package/dist/fcstd/expressions.js.map +0 -1
- package/dist/fcstd/external-geo.d.ts +0 -49
- package/dist/fcstd/external-geo.d.ts.map +0 -1
- package/dist/fcstd/external-geo.js +0 -140
- package/dist/fcstd/external-geo.js.map +0 -1
- package/dist/fcstd/feature-translate.d.ts +0 -189
- package/dist/fcstd/feature-translate.d.ts.map +0 -1
- package/dist/fcstd/feature-translate.js +0 -968
- package/dist/fcstd/feature-translate.js.map +0 -1
- package/dist/fcstd/index.d.ts +0 -23
- package/dist/fcstd/index.d.ts.map +0 -1
- package/dist/fcstd/index.js +0 -19
- package/dist/fcstd/index.js.map +0 -1
- package/dist/fcstd/placement.d.ts +0 -93
- package/dist/fcstd/placement.d.ts.map +0 -1
- package/dist/fcstd/placement.js +0 -117
- package/dist/fcstd/placement.js.map +0 -1
- package/dist/fcstd/planegcs-backend.d.ts +0 -34
- package/dist/fcstd/planegcs-backend.d.ts.map +0 -1
- package/dist/fcstd/planegcs-backend.js +0 -626
- package/dist/fcstd/planegcs-backend.js.map +0 -1
- package/dist/fcstd/sketch-parse.d.ts +0 -181
- package/dist/fcstd/sketch-parse.d.ts.map +0 -1
- package/dist/fcstd/sketch-parse.js +0 -227
- package/dist/fcstd/sketch-parse.js.map +0 -1
- package/dist/fcstd/sketch-solver.d.ts +0 -63
- package/dist/fcstd/sketch-solver.d.ts.map +0 -1
- package/dist/fcstd/sketch-solver.js +0 -28
- package/dist/fcstd/sketch-solver.js.map +0 -1
- package/dist/fcstd/sketch-verify.d.ts +0 -43
- package/dist/fcstd/sketch-verify.d.ts.map +0 -1
- package/dist/fcstd/sketch-verify.js +0 -62
- package/dist/fcstd/sketch-verify.js.map +0 -1
- package/dist/fcstd/structural-types.d.ts +0 -83
- package/dist/fcstd/structural-types.d.ts.map +0 -1
- package/dist/fcstd/structural-types.js +0 -121
- package/dist/fcstd/structural-types.js.map +0 -1
- package/dist/fcstd/unpack.d.ts +0 -44
- package/dist/fcstd/unpack.d.ts.map +0 -1
- package/dist/fcstd/unpack.js +0 -64
- package/dist/fcstd/unpack.js.map +0 -1
- package/dist/fcstd-convert.d.ts +0 -30
- package/dist/fcstd-convert.d.ts.map +0 -1
- package/dist/fcstd-convert.js +0 -27
- package/dist/fcstd-convert.js.map +0 -1
- package/dist/mesh/creased-normals.d.ts +0 -50
- package/dist/mesh/creased-normals.d.ts.map +0 -1
- package/dist/mesh/creased-normals.js +0 -114
- package/dist/mesh/creased-normals.js.map +0 -1
- package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +0 -260
- package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +0 -1
- package/dist/occt-kernel/generated/occtPlatform.generated.js +0 -875
- package/dist/occt-kernel/generated/occtPlatform.generated.js.map +0 -1
- package/dist/occt-kernel/stepMetaParser.d.ts +0 -44
- package/dist/occt-kernel/stepMetaParser.d.ts.map +0 -1
- package/dist/occt-kernel/stepMetaParser.js +0 -166
- package/dist/occt-kernel/stepMetaParser.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts +0 -106
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js +0 -341
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts +0 -185
- package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprint.js +0 -361
- package/dist/vendored/brepjs/2d/blueprints/blueprint.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts +0 -15
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js +0 -28
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts +0 -29
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js +0 -86
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts +0 -57
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js +0 -92
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts +0 -58
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js +0 -346
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts +0 -30
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js +0 -45
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts +0 -68
- package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprints.js +0 -116
- package/dist/vendored/brepjs/2d/blueprints/blueprints.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts +0 -68
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.js +0 -362
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts +0 -34
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js +0 -176
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts +0 -55
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js +0 -110
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts +0 -41
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js +0 -90
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts +0 -85
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js +0 -136
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts +0 -48
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js +0 -154
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts +0 -342
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js +0 -32
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/index.d.ts +0 -16
- package/dist/vendored/brepjs/2d/blueprints/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/index.js +0 -13
- package/dist/vendored/brepjs/2d/blueprints/index.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts +0 -18
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js +0 -230
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/lib.d.ts +0 -73
- package/dist/vendored/brepjs/2d/blueprints/lib.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/lib.js +0 -103
- package/dist/vendored/brepjs/2d/blueprints/lib.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts +0 -31
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js +0 -226
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/svg.d.ts +0 -22
- package/dist/vendored/brepjs/2d/blueprints/svg.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/svg.js +0 -30
- package/dist/vendored/brepjs/2d/blueprints/svg.js.map +0 -1
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts +0 -124
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.js +0 -235
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.js.map +0 -1
- package/dist/vendored/brepjs/2d/curves.d.ts +0 -45
- package/dist/vendored/brepjs/2d/curves.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/curves.js +0 -139
- package/dist/vendored/brepjs/2d/curves.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/approximations.d.ts +0 -47
- package/dist/vendored/brepjs/2d/lib/approximations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/approximations.js +0 -82
- package/dist/vendored/brepjs/2d/lib/approximations.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts +0 -39
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.js +0 -88
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2D.d.ts +0 -82
- package/dist/vendored/brepjs/2d/lib/curve2D.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2D.js +0 -258
- package/dist/vendored/brepjs/2d/lib/curve2D.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts +0 -53
- package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2dFns.js +0 -69
- package/dist/vendored/brepjs/2d/lib/curve2dFns.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/customCorners.d.ts +0 -29
- package/dist/vendored/brepjs/2d/lib/customCorners.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/customCorners.js +0 -237
- package/dist/vendored/brepjs/2d/lib/customCorners.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/definitions.d.ts +0 -12
- package/dist/vendored/brepjs/2d/lib/definitions.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/definitions.js +0 -19
- package/dist/vendored/brepjs/2d/lib/definitions.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts +0 -21
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js +0 -71
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/index.d.ts +0 -14
- package/dist/vendored/brepjs/2d/lib/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/index.js +0 -14
- package/dist/vendored/brepjs/2d/lib/index.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/intersections.d.ts +0 -34
- package/dist/vendored/brepjs/2d/lib/intersections.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/intersections.js +0 -77
- package/dist/vendored/brepjs/2d/lib/intersections.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts +0 -63
- package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/makeCurves.js +0 -117
- package/dist/vendored/brepjs/2d/lib/makeCurves.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/offset.d.ts +0 -30
- package/dist/vendored/brepjs/2d/lib/offset.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/offset.js +0 -109
- package/dist/vendored/brepjs/2d/lib/offset.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/precision.d.ts +0 -12
- package/dist/vendored/brepjs/2d/lib/precision.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/precision.js +0 -12
- package/dist/vendored/brepjs/2d/lib/precision.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/stitching.d.ts +0 -15
- package/dist/vendored/brepjs/2d/lib/stitching.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/stitching.js +0 -67
- package/dist/vendored/brepjs/2d/lib/stitching.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/svgPath.d.ts +0 -4
- package/dist/vendored/brepjs/2d/lib/svgPath.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/svgPath.js +0 -114
- package/dist/vendored/brepjs/2d/lib/svgPath.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/utils.d.ts +0 -11
- package/dist/vendored/brepjs/2d/lib/utils.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/utils.js +0 -24
- package/dist/vendored/brepjs/2d/lib/utils.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts +0 -19
- package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/vectorOperations.js +0 -26
- package/dist/vendored/brepjs/2d/lib/vectorOperations.js.map +0 -1
- package/dist/vendored/brepjs/2d.d.ts +0 -26
- package/dist/vendored/brepjs/2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d.js +0 -33
- package/dist/vendored/brepjs/2d.js.map +0 -1
- package/dist/vendored/brepjs/core/constants.d.ts +0 -7
- package/dist/vendored/brepjs/core/constants.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/constants.js +0 -7
- package/dist/vendored/brepjs/core/constants.js.map +0 -1
- package/dist/vendored/brepjs/core/curve2dHandle.d.ts +0 -35
- package/dist/vendored/brepjs/core/curve2dHandle.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/curve2dHandle.js +0 -48
- package/dist/vendored/brepjs/core/curve2dHandle.js.map +0 -1
- package/dist/vendored/brepjs/core/dimensionTypes.d.ts +0 -61
- package/dist/vendored/brepjs/core/dimensionTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/dimensionTypes.js +0 -54
- package/dist/vendored/brepjs/core/dimensionTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/disposal.d.ts +0 -136
- package/dist/vendored/brepjs/core/disposal.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/disposal.js +0 -441
- package/dist/vendored/brepjs/core/disposal.js.map +0 -1
- package/dist/vendored/brepjs/core/errors.d.ts +0 -191
- package/dist/vendored/brepjs/core/errors.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/errors.js +0 -238
- package/dist/vendored/brepjs/core/errors.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelBoundary.d.ts +0 -40
- package/dist/vendored/brepjs/core/kernelBoundary.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelBoundary.js +0 -99
- package/dist/vendored/brepjs/core/kernelBoundary.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelCall.d.ts +0 -48
- package/dist/vendored/brepjs/core/kernelCall.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelCall.js +0 -154
- package/dist/vendored/brepjs/core/kernelCall.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts +0 -17
- package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelErrorTranslation.js +0 -98
- package/dist/vendored/brepjs/core/kernelErrorTranslation.js.map +0 -1
- package/dist/vendored/brepjs/core/planeOps.d.ts +0 -62
- package/dist/vendored/brepjs/core/planeOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/planeOps.js +0 -148
- package/dist/vendored/brepjs/core/planeOps.js.map +0 -1
- package/dist/vendored/brepjs/core/planeTypes.d.ts +0 -22
- package/dist/vendored/brepjs/core/planeTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/planeTypes.js +0 -6
- package/dist/vendored/brepjs/core/planeTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/result.d.ts +0 -85
- package/dist/vendored/brepjs/core/result.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/result.js +0 -212
- package/dist/vendored/brepjs/core/result.js.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypeCache.d.ts +0 -27
- package/dist/vendored/brepjs/core/shapeTypeCache.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypeCache.js +0 -40
- package/dist/vendored/brepjs/core/shapeTypeCache.js.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypes.d.ts +0 -199
- package/dist/vendored/brepjs/core/shapeTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypes.js +0 -267
- package/dist/vendored/brepjs/core/shapeTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/typeDiscriminants.d.ts +0 -25
- package/dist/vendored/brepjs/core/typeDiscriminants.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/typeDiscriminants.js +0 -50
- package/dist/vendored/brepjs/core/typeDiscriminants.js.map +0 -1
- package/dist/vendored/brepjs/core/types.d.ts +0 -51
- package/dist/vendored/brepjs/core/types.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/types.js +0 -35
- package/dist/vendored/brepjs/core/types.js.map +0 -1
- package/dist/vendored/brepjs/core/validityTypes.d.ts +0 -143
- package/dist/vendored/brepjs/core/validityTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/validityTypes.js +0 -174
- package/dist/vendored/brepjs/core/validityTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/vecOps.d.ts +0 -53
- package/dist/vendored/brepjs/core/vecOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/vecOps.js +0 -131
- package/dist/vendored/brepjs/core/vecOps.js.map +0 -1
- package/dist/vendored/brepjs/core.d.ts +0 -17
- package/dist/vendored/brepjs/core.d.ts.map +0 -1
- package/dist/vendored/brepjs/core.js +0 -13
- package/dist/vendored/brepjs/core.js.map +0 -1
- package/dist/vendored/brepjs/gear/gearFns.d.ts +0 -148
- package/dist/vendored/brepjs/gear/gearFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/gearFns.js +0 -479
- package/dist/vendored/brepjs/gear/gearFns.js.map +0 -1
- package/dist/vendored/brepjs/gear/gearMath.d.ts +0 -89
- package/dist/vendored/brepjs/gear/gearMath.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/gearMath.js +0 -195
- package/dist/vendored/brepjs/gear/gearMath.js.map +0 -1
- package/dist/vendored/brepjs/gear/gearProfile.d.ts +0 -17
- package/dist/vendored/brepjs/gear/gearProfile.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/gearProfile.js +0 -159
- package/dist/vendored/brepjs/gear/gearProfile.js.map +0 -1
- package/dist/vendored/brepjs/gear/index.d.ts +0 -4
- package/dist/vendored/brepjs/gear/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/index.js +0 -4
- package/dist/vendored/brepjs/gear/index.js.map +0 -1
- package/dist/vendored/brepjs/index.d.ts +0 -152
- package/dist/vendored/brepjs/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/index.js +0 -195
- package/dist/vendored/brepjs/index.js.map +0 -1
- package/dist/vendored/brepjs/io/dxfExportFns.d.ts +0 -74
- package/dist/vendored/brepjs/io/dxfExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/dxfExportFns.js +0 -134
- package/dist/vendored/brepjs/io/dxfExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/dxfImportFns.d.ts +0 -20
- package/dist/vendored/brepjs/io/dxfImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/dxfImportFns.js +0 -132
- package/dist/vendored/brepjs/io/dxfImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/gltfExportFns.d.ts +0 -97
- package/dist/vendored/brepjs/io/gltfExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/gltfExportFns.js +0 -460
- package/dist/vendored/brepjs/io/gltfExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/gltfImportFns.d.ts +0 -21
- package/dist/vendored/brepjs/io/gltfImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/gltfImportFns.js +0 -33
- package/dist/vendored/brepjs/io/gltfImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/importFns.d.ts +0 -56
- package/dist/vendored/brepjs/io/importFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/importFns.js +0 -108
- package/dist/vendored/brepjs/io/importFns.js.map +0 -1
- package/dist/vendored/brepjs/io/ioUtils.d.ts +0 -22
- package/dist/vendored/brepjs/io/ioUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/ioUtils.js +0 -56
- package/dist/vendored/brepjs/io/ioUtils.js.map +0 -1
- package/dist/vendored/brepjs/io/objExportFns.d.ts +0 -23
- package/dist/vendored/brepjs/io/objExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/objExportFns.js +0 -67
- package/dist/vendored/brepjs/io/objExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/objImportFns.d.ts +0 -26
- package/dist/vendored/brepjs/io/objImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/objImportFns.js +0 -96
- package/dist/vendored/brepjs/io/objImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/stepConfigFns.d.ts +0 -30
- package/dist/vendored/brepjs/io/stepConfigFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/stepConfigFns.js +0 -30
- package/dist/vendored/brepjs/io/stepConfigFns.js.map +0 -1
- package/dist/vendored/brepjs/io/svgImportFns.d.ts +0 -58
- package/dist/vendored/brepjs/io/svgImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/svgImportFns.js +0 -394
- package/dist/vendored/brepjs/io/svgImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/threemfExportFns.d.ts +0 -48
- package/dist/vendored/brepjs/io/threemfExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/threemfExportFns.js +0 -345
- package/dist/vendored/brepjs/io/threemfExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/threemfImportFns.d.ts +0 -22
- package/dist/vendored/brepjs/io/threemfImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/threemfImportFns.js +0 -350
- package/dist/vendored/brepjs/io/threemfImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io.d.ts +0 -17
- package/dist/vendored/brepjs/io.d.ts.map +0 -1
- package/dist/vendored/brepjs/io.js +0 -20
- package/dist/vendored/brepjs/io.js.map +0 -1
- package/dist/vendored/brepjs/kernel/capabilities.d.ts +0 -36
- package/dist/vendored/brepjs/kernel/capabilities.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/capabilities.js +0 -35
- package/dist/vendored/brepjs/kernel/capabilities.js.map +0 -1
- package/dist/vendored/brepjs/kernel/geometry2d.d.ts +0 -96
- package/dist/vendored/brepjs/kernel/geometry2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/geometry2d.js +0 -885
- package/dist/vendored/brepjs/kernel/geometry2d.js.map +0 -1
- package/dist/vendored/brepjs/kernel/hullGeometry.d.ts +0 -23
- package/dist/vendored/brepjs/kernel/hullGeometry.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/hullGeometry.js +0 -312
- package/dist/vendored/brepjs/kernel/hullGeometry.js.map +0 -1
- package/dist/vendored/brepjs/kernel/index.d.ts +0 -73
- package/dist/vendored/brepjs/kernel/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/index.js +0 -161
- package/dist/vendored/brepjs/kernel/index.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts +0 -44
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts +0 -67
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.js +0 -12
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/core.d.ts +0 -46
- package/dist/vendored/brepjs/kernel/interfaces/core.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/core.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/core.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts +0 -53
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.js +0 -12
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts +0 -32
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js +0 -14
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/index.d.ts +0 -43
- package/dist/vendored/brepjs/kernel/interfaces/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/index.js +0 -12
- package/dist/vendored/brepjs/kernel/interfaces/index.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts +0 -65
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts +0 -55
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts +0 -25
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.js +0 -8
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts +0 -53
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js +0 -10
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts +0 -22
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts +0 -43
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts +0 -72
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js +0 -13
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts +0 -73
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts +0 -62
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts +0 -80
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts +0 -145
- package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/kernel2dTypes.js +0 -18
- package/dist/vendored/brepjs/kernel/kernel2dTypes.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts +0 -41
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js +0 -2
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts +0 -17
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js +0 -75
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts +0 -36
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js +0 -116
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts +0 -43
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js +0 -292
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts +0 -34
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js +0 -164
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts +0 -26
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js +0 -256
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts +0 -42
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.js +0 -146
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts +0 -17
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js +0 -55
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts +0 -58
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js +0 -303
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts +0 -113
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js +0 -731
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts +0 -62
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js +0 -338
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts +0 -12
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js +0 -120
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts +0 -20
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js +0 -187
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts +0 -513
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js +0 -1016
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts +0 -332
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js +0 -10
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts +0 -16
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js +0 -64
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts +0 -16
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js +0 -38
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts +0 -56
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js +0 -247
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts +0 -56
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js +0 -235
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts +0 -25
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js +0 -127
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts +0 -40
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js +0 -275
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/quality.d.ts +0 -28
- package/dist/vendored/brepjs/kernel/quality.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/quality.js +0 -40
- package/dist/vendored/brepjs/kernel/quality.js.map +0 -1
- package/dist/vendored/brepjs/kernel/solverAdapter.d.ts +0 -50
- package/dist/vendored/brepjs/kernel/solverAdapter.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/solverAdapter.js +0 -330
- package/dist/vendored/brepjs/kernel/solverAdapter.js.map +0 -1
- package/dist/vendored/brepjs/kernel/stlBuilder.d.ts +0 -21
- package/dist/vendored/brepjs/kernel/stlBuilder.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/stlBuilder.js +0 -106
- package/dist/vendored/brepjs/kernel/stlBuilder.js.map +0 -1
- package/dist/vendored/brepjs/kernel/types.d.ts +0 -214
- package/dist/vendored/brepjs/kernel/types.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/types.js +0 -22
- package/dist/vendored/brepjs/kernel/types.js.map +0 -1
- package/dist/vendored/brepjs/kernel/unsupported.d.ts +0 -15
- package/dist/vendored/brepjs/kernel/unsupported.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/unsupported.js +0 -25
- package/dist/vendored/brepjs/kernel/unsupported.js.map +0 -1
- package/dist/vendored/brepjs/measurement/interferenceFns.d.ts +0 -68
- package/dist/vendored/brepjs/measurement/interferenceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/interferenceFns.js +0 -102
- package/dist/vendored/brepjs/measurement/interferenceFns.js.map +0 -1
- package/dist/vendored/brepjs/measurement/measureCache.d.ts +0 -20
- package/dist/vendored/brepjs/measurement/measureCache.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/measureCache.js +0 -28
- package/dist/vendored/brepjs/measurement/measureCache.js.map +0 -1
- package/dist/vendored/brepjs/measurement/measureFns.d.ts +0 -92
- package/dist/vendored/brepjs/measurement/measureFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/measureFns.js +0 -239
- package/dist/vendored/brepjs/measurement/measureFns.js.map +0 -1
- package/dist/vendored/brepjs/measurement/measureTypes.d.ts +0 -35
- package/dist/vendored/brepjs/measurement/measureTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/measureTypes.js +0 -7
- package/dist/vendored/brepjs/measurement/measureTypes.js.map +0 -1
- package/dist/vendored/brepjs/measurement.d.ts +0 -5
- package/dist/vendored/brepjs/measurement.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement.js +0 -5
- package/dist/vendored/brepjs/measurement.js.map +0 -1
- package/dist/vendored/brepjs/ns/booleans.d.ts +0 -11
- package/dist/vendored/brepjs/ns/booleans.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/booleans.js +0 -11
- package/dist/vendored/brepjs/ns/booleans.js.map +0 -1
- package/dist/vendored/brepjs/ns/construction.d.ts +0 -10
- package/dist/vendored/brepjs/ns/construction.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/construction.js +0 -10
- package/dist/vendored/brepjs/ns/construction.js.map +0 -1
- package/dist/vendored/brepjs/ns/ioNs.d.ts +0 -18
- package/dist/vendored/brepjs/ns/ioNs.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/ioNs.js +0 -20
- package/dist/vendored/brepjs/ns/ioNs.js.map +0 -1
- package/dist/vendored/brepjs/ns/measurement.d.ts +0 -6
- package/dist/vendored/brepjs/ns/measurement.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/measurement.js +0 -6
- package/dist/vendored/brepjs/ns/measurement.js.map +0 -1
- package/dist/vendored/brepjs/ns/modifiers.d.ts +0 -6
- package/dist/vendored/brepjs/ns/modifiers.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/modifiers.js +0 -6
- package/dist/vendored/brepjs/ns/modifiers.js.map +0 -1
- package/dist/vendored/brepjs/ns/patterns.d.ts +0 -5
- package/dist/vendored/brepjs/ns/patterns.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/patterns.js +0 -5
- package/dist/vendored/brepjs/ns/patterns.js.map +0 -1
- package/dist/vendored/brepjs/ns/primitives.d.ts +0 -7
- package/dist/vendored/brepjs/ns/primitives.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/primitives.js +0 -7
- package/dist/vendored/brepjs/ns/primitives.js.map +0 -1
- package/dist/vendored/brepjs/ns/query.d.ts +0 -6
- package/dist/vendored/brepjs/ns/query.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/query.js +0 -6
- package/dist/vendored/brepjs/ns/query.js.map +0 -1
- package/dist/vendored/brepjs/ns/transforms.d.ts +0 -5
- package/dist/vendored/brepjs/ns/transforms.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/transforms.js +0 -5
- package/dist/vendored/brepjs/ns/transforms.js.map +0 -1
- package/dist/vendored/brepjs/operations/api.d.ts +0 -39
- package/dist/vendored/brepjs/operations/api.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/api.js +0 -41
- package/dist/vendored/brepjs/operations/api.js.map +0 -1
- package/dist/vendored/brepjs/operations/assemblyFns.d.ts +0 -54
- package/dist/vendored/brepjs/operations/assemblyFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/assemblyFns.js +0 -91
- package/dist/vendored/brepjs/operations/assemblyFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts +0 -43
- package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/compoundOpsFns.js +0 -368
- package/dist/vendored/brepjs/operations/compoundOpsFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/convexHullFns.d.ts +0 -27
- package/dist/vendored/brepjs/operations/convexHullFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/convexHullFns.js +0 -50
- package/dist/vendored/brepjs/operations/convexHullFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/dhFns.d.ts +0 -47
- package/dist/vendored/brepjs/operations/dhFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/dhFns.js +0 -53
- package/dist/vendored/brepjs/operations/dhFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/exporterFns.d.ts +0 -47
- package/dist/vendored/brepjs/operations/exporterFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/exporterFns.js +0 -66
- package/dist/vendored/brepjs/operations/exporterFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/exporterUtils.d.ts +0 -6
- package/dist/vendored/brepjs/operations/exporterUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/exporterUtils.js +0 -5
- package/dist/vendored/brepjs/operations/exporterUtils.js.map +0 -1
- package/dist/vendored/brepjs/operations/exporters.d.ts +0 -59
- package/dist/vendored/brepjs/operations/exporters.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/exporters.js +0 -74
- package/dist/vendored/brepjs/operations/exporters.js.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeFns.d.ts +0 -47
- package/dist/vendored/brepjs/operations/extrudeFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeFns.js +0 -119
- package/dist/vendored/brepjs/operations/extrudeFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeUtils.d.ts +0 -63
- package/dist/vendored/brepjs/operations/extrudeUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeUtils.js +0 -33
- package/dist/vendored/brepjs/operations/extrudeUtils.js.map +0 -1
- package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts +0 -6
- package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/guidedSweepFns.js +0 -6
- package/dist/vendored/brepjs/operations/guidedSweepFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/historyFns.d.ts +0 -83
- package/dist/vendored/brepjs/operations/historyFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/historyFns.js +0 -256
- package/dist/vendored/brepjs/operations/historyFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/ikFns.d.ts +0 -74
- package/dist/vendored/brepjs/operations/ikFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/ikFns.js +0 -320
- package/dist/vendored/brepjs/operations/ikFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/instanceFns.d.ts +0 -76
- package/dist/vendored/brepjs/operations/instanceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/instanceFns.js +0 -128
- package/dist/vendored/brepjs/operations/instanceFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/jointFns.d.ts +0 -176
- package/dist/vendored/brepjs/operations/jointFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/jointFns.js +0 -298
- package/dist/vendored/brepjs/operations/jointFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/loftFns.d.ts +0 -60
- package/dist/vendored/brepjs/operations/loftFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/loftFns.js +0 -112
- package/dist/vendored/brepjs/operations/loftFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/mateFns.d.ts +0 -53
- package/dist/vendored/brepjs/operations/mateFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/mateFns.js +0 -142
- package/dist/vendored/brepjs/operations/mateFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/multiSweepFns.d.ts +0 -6
- package/dist/vendored/brepjs/operations/multiSweepFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/multiSweepFns.js +0 -6
- package/dist/vendored/brepjs/operations/multiSweepFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/patternFns.d.ts +0 -46
- package/dist/vendored/brepjs/operations/patternFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/patternFns.js +0 -126
- package/dist/vendored/brepjs/operations/patternFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/roofFns.d.ts +0 -25
- package/dist/vendored/brepjs/operations/roofFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/roofFns.js +0 -250
- package/dist/vendored/brepjs/operations/roofFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/straightSkeleton.d.ts +0 -29
- package/dist/vendored/brepjs/operations/straightSkeleton.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/straightSkeleton.js +0 -440
- package/dist/vendored/brepjs/operations/straightSkeleton.js.map +0 -1
- package/dist/vendored/brepjs/operations/sweepFns.d.ts +0 -121
- package/dist/vendored/brepjs/operations/sweepFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/sweepFns.js +0 -438
- package/dist/vendored/brepjs/operations/sweepFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/threadFns.d.ts +0 -57
- package/dist/vendored/brepjs/operations/threadFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/threadFns.js +0 -145
- package/dist/vendored/brepjs/operations/threadFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/urdfFns.d.ts +0 -48
- package/dist/vendored/brepjs/operations/urdfFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/urdfFns.js +0 -171
- package/dist/vendored/brepjs/operations/urdfFns.js.map +0 -1
- package/dist/vendored/brepjs/operations.d.ts +0 -20
- package/dist/vendored/brepjs/operations.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations.js +0 -26
- package/dist/vendored/brepjs/operations.js.map +0 -1
- package/dist/vendored/brepjs/projection/cameraFns.d.ts +0 -63
- package/dist/vendored/brepjs/projection/cameraFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection/cameraFns.js +0 -89
- package/dist/vendored/brepjs/projection/cameraFns.js.map +0 -1
- package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts +0 -14
- package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection/makeProjectedEdges.js +0 -111
- package/dist/vendored/brepjs/projection/makeProjectedEdges.js.map +0 -1
- package/dist/vendored/brepjs/projection/projectionPlanes.d.ts +0 -18
- package/dist/vendored/brepjs/projection/projectionPlanes.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection/projectionPlanes.js +0 -23
- package/dist/vendored/brepjs/projection/projectionPlanes.js.map +0 -1
- package/dist/vendored/brepjs/projection.d.ts +0 -12
- package/dist/vendored/brepjs/projection.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection.js +0 -12
- package/dist/vendored/brepjs/projection.js.map +0 -1
- package/dist/vendored/brepjs/query/cornerFinder.d.ts +0 -54
- package/dist/vendored/brepjs/query/cornerFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/cornerFinder.js +0 -73
- package/dist/vendored/brepjs/query/cornerFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/directionUtils.d.ts +0 -9
- package/dist/vendored/brepjs/query/directionUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/directionUtils.js +0 -18
- package/dist/vendored/brepjs/query/directionUtils.js.map +0 -1
- package/dist/vendored/brepjs/query/edgeFinder.d.ts +0 -5
- package/dist/vendored/brepjs/query/edgeFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/edgeFinder.js +0 -5
- package/dist/vendored/brepjs/query/edgeFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/faceFinder.d.ts +0 -5
- package/dist/vendored/brepjs/query/faceFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/faceFinder.js +0 -5
- package/dist/vendored/brepjs/query/faceFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/finderCore.d.ts +0 -49
- package/dist/vendored/brepjs/query/finderCore.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/finderCore.js +0 -120
- package/dist/vendored/brepjs/query/finderCore.js.map +0 -1
- package/dist/vendored/brepjs/query/finderFns.d.ts +0 -25
- package/dist/vendored/brepjs/query/finderFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/finderFns.js +0 -25
- package/dist/vendored/brepjs/query/finderFns.js.map +0 -1
- package/dist/vendored/brepjs/query/helpers.d.ts +0 -11
- package/dist/vendored/brepjs/query/helpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/helpers.js +0 -17
- package/dist/vendored/brepjs/query/helpers.js.map +0 -1
- package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts +0 -15
- package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/shapeDistanceFilter.js +0 -21
- package/dist/vendored/brepjs/query/shapeDistanceFilter.js.map +0 -1
- package/dist/vendored/brepjs/query/shapeFinders.d.ts +0 -39
- package/dist/vendored/brepjs/query/shapeFinders.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/shapeFinders.js +0 -82
- package/dist/vendored/brepjs/query/shapeFinders.js.map +0 -1
- package/dist/vendored/brepjs/query/vertexFinder.d.ts +0 -19
- package/dist/vendored/brepjs/query/vertexFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/vertexFinder.js +0 -73
- package/dist/vendored/brepjs/query/vertexFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/wireFinder.d.ts +0 -5
- package/dist/vendored/brepjs/query/wireFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/wireFinder.js +0 -5
- package/dist/vendored/brepjs/query/wireFinder.js.map +0 -1
- package/dist/vendored/brepjs/query.d.ts +0 -6
- package/dist/vendored/brepjs/query.d.ts.map +0 -1
- package/dist/vendored/brepjs/query.js +0 -6
- package/dist/vendored/brepjs/query.js.map +0 -1
- package/dist/vendored/brepjs/result.d.ts +0 -7
- package/dist/vendored/brepjs/result.d.ts.map +0 -1
- package/dist/vendored/brepjs/result.js +0 -7
- package/dist/vendored/brepjs/result.js.map +0 -1
- package/dist/vendored/brepjs/shapeRef.d.ts +0 -13
- package/dist/vendored/brepjs/shapeRef.d.ts.map +0 -1
- package/dist/vendored/brepjs/shapeRef.js +0 -13
- package/dist/vendored/brepjs/shapeRef.js.map +0 -1
- package/dist/vendored/brepjs/sketching/cannedSketches.d.ts +0 -144
- package/dist/vendored/brepjs/sketching/cannedSketches.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/cannedSketches.js +0 -327
- package/dist/vendored/brepjs/sketching/cannedSketches.js.map +0 -1
- package/dist/vendored/brepjs/sketching/compoundSketch.d.ts +0 -70
- package/dist/vendored/brepjs/sketching/compoundSketch.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/compoundSketch.js +0 -87
- package/dist/vendored/brepjs/sketching/compoundSketch.js.map +0 -1
- package/dist/vendored/brepjs/sketching/draw3d.d.ts +0 -22
- package/dist/vendored/brepjs/sketching/draw3d.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/draw3d.js +0 -150
- package/dist/vendored/brepjs/sketching/draw3d.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawFns.d.ts +0 -122
- package/dist/vendored/brepjs/sketching/drawFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawFns.js +0 -129
- package/dist/vendored/brepjs/sketching/drawFns.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawing.d.ts +0 -128
- package/dist/vendored/brepjs/sketching/drawing.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawing.js +0 -275
- package/dist/vendored/brepjs/sketching/drawing.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingFactories.d.ts +0 -95
- package/dist/vendored/brepjs/sketching/drawingFactories.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingFactories.js +0 -125
- package/dist/vendored/brepjs/sketching/drawingFactories.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingPen.d.ts +0 -35
- package/dist/vendored/brepjs/sketching/drawingPen.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingPen.js +0 -57
- package/dist/vendored/brepjs/sketching/drawingPen.js.map +0 -1
- package/dist/vendored/brepjs/sketching/faceSketcher.d.ts +0 -53
- package/dist/vendored/brepjs/sketching/faceSketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/faceSketcher.js +0 -167
- package/dist/vendored/brepjs/sketching/faceSketcher.js.map +0 -1
- package/dist/vendored/brepjs/sketching/shortcuts.d.ts +0 -16
- package/dist/vendored/brepjs/sketching/shortcuts.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/shortcuts.js +0 -24
- package/dist/vendored/brepjs/sketching/shortcuts.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketch.d.ts +0 -157
- package/dist/vendored/brepjs/sketching/sketch.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketch.js +0 -151
- package/dist/vendored/brepjs/sketching/sketch.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketchFns.d.ts +0 -89
- package/dist/vendored/brepjs/sketching/sketchFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketchFns.js +0 -266
- package/dist/vendored/brepjs/sketching/sketchFns.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketcher.d.ts +0 -70
- package/dist/vendored/brepjs/sketching/sketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketcher.js +0 -181
- package/dist/vendored/brepjs/sketching/sketcher.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketches.d.ts +0 -70
- package/dist/vendored/brepjs/sketching/sketches.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketches.js +0 -91
- package/dist/vendored/brepjs/sketching/sketches.js.map +0 -1
- package/dist/vendored/brepjs/sketching.d.ts +0 -28
- package/dist/vendored/brepjs/sketching.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching.js +0 -30
- package/dist/vendored/brepjs/sketching.js.map +0 -1
- package/dist/vendored/brepjs/text/fontRegistry.d.ts +0 -23
- package/dist/vendored/brepjs/text/fontRegistry.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/fontRegistry.js +0 -61
- package/dist/vendored/brepjs/text/fontRegistry.js.map +0 -1
- package/dist/vendored/brepjs/text/sketchText.d.ts +0 -31
- package/dist/vendored/brepjs/text/sketchText.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/sketchText.js +0 -30
- package/dist/vendored/brepjs/text/sketchText.js.map +0 -1
- package/dist/vendored/brepjs/text/textBlueprints.d.ts +0 -19
- package/dist/vendored/brepjs/text/textBlueprints.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/textBlueprints.js +0 -61
- package/dist/vendored/brepjs/text/textBlueprints.js.map +0 -1
- package/dist/vendored/brepjs/text/textMetrics.d.ts +0 -40
- package/dist/vendored/brepjs/text/textMetrics.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/textMetrics.js +0 -43
- package/dist/vendored/brepjs/text/textMetrics.js.map +0 -1
- package/dist/vendored/brepjs/text.d.ts +0 -13
- package/dist/vendored/brepjs/text.d.ts.map +0 -1
- package/dist/vendored/brepjs/text.js +0 -13
- package/dist/vendored/brepjs/text.js.map +0 -1
- package/dist/vendored/brepjs/topology/adjacencyFns.d.ts +0 -89
- package/dist/vendored/brepjs/topology/adjacencyFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/adjacencyFns.js +0 -411
- package/dist/vendored/brepjs/topology/adjacencyFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/api.d.ts +0 -145
- package/dist/vendored/brepjs/topology/api.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/api.js +0 -282
- package/dist/vendored/brepjs/topology/api.js.map +0 -1
- package/dist/vendored/brepjs/topology/apiTypes.d.ts +0 -135
- package/dist/vendored/brepjs/topology/apiTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/apiTypes.js +0 -24
- package/dist/vendored/brepjs/topology/apiTypes.js.map +0 -1
- package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts +0 -52
- package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/booleanBatchFns.js +0 -164
- package/dist/vendored/brepjs/topology/booleanBatchFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts +0 -21
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js +0 -23
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/booleanFns.d.ts +0 -155
- package/dist/vendored/brepjs/topology/booleanFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/booleanFns.js +0 -600
- package/dist/vendored/brepjs/topology/booleanFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/cast.d.ts +0 -48
- package/dist/vendored/brepjs/topology/cast.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/cast.js +0 -113
- package/dist/vendored/brepjs/topology/cast.js.map +0 -1
- package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts +0 -24
- package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/chamferAngleFns.js +0 -64
- package/dist/vendored/brepjs/topology/chamferAngleFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts +0 -6
- package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/compoundOpsFns.js +0 -6
- package/dist/vendored/brepjs/topology/compoundOpsFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/curveBuilders.d.ts +0 -90
- package/dist/vendored/brepjs/topology/curveBuilders.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/curveBuilders.js +0 -125
- package/dist/vendored/brepjs/topology/curveBuilders.js.map +0 -1
- package/dist/vendored/brepjs/topology/curveFns.d.ts +0 -96
- package/dist/vendored/brepjs/topology/curveFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/curveFns.js +0 -191
- package/dist/vendored/brepjs/topology/curveFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/evolutionFns.d.ts +0 -78
- package/dist/vendored/brepjs/topology/evolutionFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/evolutionFns.js +0 -271
- package/dist/vendored/brepjs/topology/evolutionFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/faceFns.d.ts +0 -86
- package/dist/vendored/brepjs/topology/faceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/faceFns.js +0 -169
- package/dist/vendored/brepjs/topology/faceFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/healingFns.d.ts +0 -98
- package/dist/vendored/brepjs/topology/healingFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/healingFns.js +0 -338
- package/dist/vendored/brepjs/topology/healingFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/hullFns.d.ts +0 -21
- package/dist/vendored/brepjs/topology/hullFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/hullFns.js +0 -60
- package/dist/vendored/brepjs/topology/hullFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/index.d.ts +0 -14
- package/dist/vendored/brepjs/topology/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/index.js +0 -17
- package/dist/vendored/brepjs/topology/index.js.map +0 -1
- package/dist/vendored/brepjs/topology/meshCache.d.ts +0 -68
- package/dist/vendored/brepjs/topology/meshCache.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/meshCache.js +0 -117
- package/dist/vendored/brepjs/topology/meshCache.js.map +0 -1
- package/dist/vendored/brepjs/topology/meshFns.d.ts +0 -179
- package/dist/vendored/brepjs/topology/meshFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/meshFns.js +0 -393
- package/dist/vendored/brepjs/topology/meshFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts +0 -41
- package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/colorFns.js +0 -128
- package/dist/vendored/brepjs/topology/metadata/colorFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts +0 -44
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.js +0 -168
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts +0 -59
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js +0 -109
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts +0 -43
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js +0 -270
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/minkowskiFns.d.ts +0 -26
- package/dist/vendored/brepjs/topology/minkowskiFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/minkowskiFns.js +0 -136
- package/dist/vendored/brepjs/topology/minkowskiFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/modifierFns.d.ts +0 -87
- package/dist/vendored/brepjs/topology/modifierFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/modifierFns.js +0 -446
- package/dist/vendored/brepjs/topology/modifierFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/nurbsFns.d.ts +0 -13
- package/dist/vendored/brepjs/topology/nurbsFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/nurbsFns.js +0 -22
- package/dist/vendored/brepjs/topology/nurbsFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/polyhedronFns.d.ts +0 -11
- package/dist/vendored/brepjs/topology/polyhedronFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/polyhedronFns.js +0 -47
- package/dist/vendored/brepjs/topology/polyhedronFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/positionFns.d.ts +0 -18
- package/dist/vendored/brepjs/topology/positionFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/positionFns.js +0 -34
- package/dist/vendored/brepjs/topology/positionFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/primitiveFns.d.ts +0 -244
- package/dist/vendored/brepjs/topology/primitiveFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/primitiveFns.js +0 -361
- package/dist/vendored/brepjs/topology/primitiveFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeBooleans.d.ts +0 -14
- package/dist/vendored/brepjs/topology/shapeBooleans.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeBooleans.js +0 -24
- package/dist/vendored/brepjs/topology/shapeBooleans.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeFns.d.ts +0 -30
- package/dist/vendored/brepjs/topology/shapeFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeFns.js +0 -50
- package/dist/vendored/brepjs/topology/shapeFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeHelpers.d.ts +0 -9
- package/dist/vendored/brepjs/topology/shapeHelpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeHelpers.js +0 -14
- package/dist/vendored/brepjs/topology/shapeHelpers.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeModifiers.d.ts +0 -33
- package/dist/vendored/brepjs/topology/shapeModifiers.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeModifiers.js +0 -28
- package/dist/vendored/brepjs/topology/shapeModifiers.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts +0 -29
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js +0 -135
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts +0 -25
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js +0 -123
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/index.d.ts +0 -11
- package/dist/vendored/brepjs/topology/shapeRef/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/index.js +0 -10
- package/dist/vendored/brepjs/topology/shapeRef/index.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts +0 -66
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js +0 -128
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts +0 -18
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js +0 -51
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts +0 -20
- package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/scoring.js +0 -65
- package/dist/vendored/brepjs/topology/shapeRef/scoring.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts +0 -59
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js +0 -266
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts +0 -153
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js +0 -6
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts +0 -24
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js +0 -128
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeUtils.d.ts +0 -16
- package/dist/vendored/brepjs/topology/shapeUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeUtils.js +0 -28
- package/dist/vendored/brepjs/topology/shapeUtils.js.map +0 -1
- package/dist/vendored/brepjs/topology/solidBuilders.d.ts +0 -74
- package/dist/vendored/brepjs/topology/solidBuilders.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/solidBuilders.js +0 -173
- package/dist/vendored/brepjs/topology/solidBuilders.js.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts +0 -47
- package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceBuilders.js +0 -162
- package/dist/vendored/brepjs/topology/surfaceBuilders.js.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceFns.d.ts +0 -41
- package/dist/vendored/brepjs/topology/surfaceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceFns.js +0 -178
- package/dist/vendored/brepjs/topology/surfaceFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/threeHelpers.d.ts +0 -124
- package/dist/vendored/brepjs/topology/threeHelpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/threeHelpers.js +0 -118
- package/dist/vendored/brepjs/topology/threeHelpers.js.map +0 -1
- package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts +0 -100
- package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/topologyQueryFns.js +0 -307
- package/dist/vendored/brepjs/topology/topologyQueryFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/transformFns.d.ts +0 -69
- package/dist/vendored/brepjs/topology/transformFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/transformFns.js +0 -235
- package/dist/vendored/brepjs/topology/transformFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/wrapperFns.d.ts +0 -169
- package/dist/vendored/brepjs/topology/wrapperFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/wrapperFns.js +0 -291
- package/dist/vendored/brepjs/topology/wrapperFns.js.map +0 -1
- package/dist/vendored/brepjs/topology.d.ts +0 -28
- package/dist/vendored/brepjs/topology.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology.js +0 -39
- package/dist/vendored/brepjs/topology.js.map +0 -1
- package/dist/vendored/brepjs/utils/arrayAccess.d.ts +0 -12
- package/dist/vendored/brepjs/utils/arrayAccess.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/arrayAccess.js +0 -25
- package/dist/vendored/brepjs/utils/arrayAccess.js.map +0 -1
- package/dist/vendored/brepjs/utils/bug.d.ts +0 -15
- package/dist/vendored/brepjs/utils/bug.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/bug.js +0 -21
- package/dist/vendored/brepjs/utils/bug.js.map +0 -1
- package/dist/vendored/brepjs/utils/ioFilename.d.ts +0 -3
- package/dist/vendored/brepjs/utils/ioFilename.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/ioFilename.js +0 -7
- package/dist/vendored/brepjs/utils/ioFilename.js.map +0 -1
- package/dist/vendored/brepjs/utils/precisionRound.d.ts +0 -11
- package/dist/vendored/brepjs/utils/precisionRound.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/precisionRound.js +0 -19
- package/dist/vendored/brepjs/utils/precisionRound.js.map +0 -1
- package/dist/vendored/brepjs/utils/quaternion.d.ts +0 -18
- package/dist/vendored/brepjs/utils/quaternion.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/quaternion.js +0 -68
- package/dist/vendored/brepjs/utils/quaternion.js.map +0 -1
- package/dist/vendored/brepjs/utils/range.d.ts +0 -3
- package/dist/vendored/brepjs/utils/range.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/range.js +0 -5
- package/dist/vendored/brepjs/utils/range.js.map +0 -1
- package/dist/vendored/brepjs/utils/uuid.d.ts +0 -3
- package/dist/vendored/brepjs/utils/uuid.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/uuid.js +0 -7
- package/dist/vendored/brepjs/utils/uuid.js.map +0 -1
- package/dist/vendored/brepjs/utils/vec2d.d.ts +0 -62
- package/dist/vendored/brepjs/utils/vec2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/vec2d.js +0 -107
- package/dist/vendored/brepjs/utils/vec2d.js.map +0 -1
- package/dist/vendored/brepjs/utils/vec3.d.ts +0 -32
- package/dist/vendored/brepjs/utils/vec3.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/vec3.js +0 -35
- package/dist/vendored/brepjs/utils/vec3.js.map +0 -1
- package/dist/vendored/brepjs/utils/zip.d.ts +0 -5
- package/dist/vendored/brepjs/utils/zip.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/zip.js +0 -8
- package/dist/vendored/brepjs/utils/zip.js.map +0 -1
- package/dist/vendored/brepjs/vectors.d.ts +0 -11
- package/dist/vendored/brepjs/vectors.d.ts.map +0 -1
- package/dist/vendored/brepjs/vectors.js +0 -9
- package/dist/vendored/brepjs/vectors.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-extractor.js","sourceRoot":"","sources":["../../src/lang/metadata-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAA8B,MAAM,aAAa,CAAA;AAE9E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAA;AAEzF,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AA8GvF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB;IACjE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc;IACvE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB;IAC3E,eAAe,EAAE,gBAAgB;CAClC,CAAC,CAAA;AAEF,SAAS,MAAM,CAAC,IAAa;IAC3B,OAAO,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC;AA+BD,SAAS,OAAO,CAAC,CAAS,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK;IAC/D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AACvF,CAAC;AAED,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU;IACrC,IAAI,CAAC,GAAY,CAAC,CAAA;IAClB,IAAI,CAAC,GAAY,CAAC,CAAA;IAClB,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC1E,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAA;IAC7D,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa;IAC3E,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAClB,IAAI,IAAI,qFAAqF,EAC7F,IAAI,EACJ,uBAAuB,CACxB,CAAA;IACH,CAAC;IACD,MAAM,IAAI,UAAU,CAAC,uBAAuB,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;AACpF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa,EAAE,OAAoB;IAC3D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;QAE3E,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,mEAAmE;YACnE,oEAAoE;YACpE,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/C,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBACpF,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAC5D,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;QACnG,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YACrC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAA;YACvB,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;gBACzG,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;gBACzG,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAClG,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;gBAC1I,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAC7G,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACnD,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;YACpB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAA;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAA;YAChD,MAAM,MAAM,GAAG,CAAC,EAAoC,EAAc,EAAE,CAClE,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YACzG,MAAM,MAAM,GAAG,CAAC,EAAuD,EAAc,EAAE;gBACrF,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBAC7G,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBAC7G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YACtB,CAAC,CAAA;YACD,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,OAAO,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;oBAC9F,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;oBAC1H,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;gBACtB,CAAC;gBACD,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxC,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxC,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxC,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC1C,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC1C,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBACzE,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBAC1E,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBACpE,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBACpE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACnD,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAA;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAA;YAChD,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBACxF,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBACxF,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;gBACjG,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAmB,CAAA;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAwB,CAAA;YAC3C,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAA;gBACtC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;gBACxB,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;oBAC7C,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;oBAC/B,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,SAAS,CAAA;oBACpC,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAA;oBACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;QACjE,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACvF,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YACpC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAA;QACrI,CAAC;QAED;YACE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IACxB,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,EAAE;AACF,yEAAyE;AACzE,oFAAoF;AAEpF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACnD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,IAAI,CAAA;QACb,KAAK,iBAAiB;YACpB,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvC,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB;YACtB,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClE,KAAK,uBAAuB;YAC1B,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1G,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;QACrG,KAAK,kBAAkB;YACrB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC9D,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC/C,OAAQ,IAAI,CAAC,SAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QACrG,CAAC;QACD;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAa,EACb,OAAoB,EACpB,IAAY,EACZ,MAAmB,EACnB,IAAiB,EACjB,IAAgD;IAEhD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAM;IAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;iBAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,8EAA8E;gBAC9E,yDAAyD;gBACzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;iBAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,sDAAsD;gBACtD,4EAA4E;gBAC5E,qEAAqE;gBACrE,6BAA6B;gBAC7B,qDAAqD;gBACrD,mDAAmD;YACrD,CAAC;iBAAM,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAClC,2CAA2C;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAA;YACxD,CAAC;YACD,OAAM;QACR,CAAC;QACD,KAAK,iBAAiB;YACpB,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACxE,OAAM;QACR,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB;YACtB,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACpE,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACrE,OAAM;QACR,KAAK,uBAAuB;YAC1B,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACpE,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAC1E,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACzE,OAAM;QACR,KAAK,iBAAiB;YACpB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ;gBAAE,sBAAsB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAC7F,OAAM;QACR,KAAK,kBAAkB;YACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,IAAI,IAAI,EAAE,IAAI,KAAK,UAAU;oBAAE,SAAQ;gBACvC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACvE,CAAC;YACD,OAAM;QACR,KAAK,iBAAiB;YACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW;gBAAE,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACpG,OAAM;QACR,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,sDAAsD;YACtD,oDAAoD;YACpD,2DAA2D;YAC3D,0BAA0B;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;YACvB,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;gBACrG,IAAI,IAAI,CAAC,QAAQ;oBAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;gBAC3F,OAAM;YACR,CAAC;YACD,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,IAAI,IAAI,CAAC,QAAQ;gBAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAC3F,OAAM;QACR,CAAC;QACD,KAAK,gBAAgB;YACnB,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAsB,EAAE,CAAC;gBAC5C,sBAAsB,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACxG,CAAC;YACD,OAAM;QACR;YACE,OAAM;IACV,CAAC;AACH,CAAC;AAyBD,iDAAiD;AACjD,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IAC/G,OAAO,IAAI,CAAA;AACb,CAAC;AAED,sCAAsC;AAEtC;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,IAAa;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAA;YACjD,OAAO,IAAI,CAAA;QAEb,KAAK,iBAAiB;YACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;gBAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAChC,CAAC;YACD,OAAO,IAAI,CAAA;QAEb,KAAK,YAAY;YACf,iCAAiC;YACjC,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACvD,CAAC;YACD,uEAAuE;YACvE,OAAO,IAAI,CAAA;QAEb,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAElC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,6DAA6D;oBAC7D,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM;wBAAE,OAAO,KAAK,CAAA;oBAC9D,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM;wBAAE,OAAO,IAAI,CAAA;oBAC5D,4CAA4C;oBAC5C,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;wBAAE,OAAO,MAAM,CAAA;oBACtD,mEAAmE;oBACnE,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,6CAA6C;oBAC7C,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM;wBAAE,OAAO,MAAM,CAAA;oBACrE,mBAAmB;oBACnB,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;wBAAE,OAAO,IAAI,CAAA;oBAC5D,sDAAsD;oBACtD,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM;wBAAE,OAAO,IAAI,CAAA;oBAC7D,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;wBAAE,OAAO,MAAM,CAAA;oBACtD,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,+CAA+C;oBAC/C,IAAI,IAAI,KAAK,KAAK;wBAAE,OAAO,IAAI,CAAA;oBAC/B,4DAA4D;oBAC5D,iEAAiE;oBACjE,8DAA8D;oBAC9D,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;wBAC3E,OAAO,UAAgC,CAAA;oBACzC,CAAC;oBACD,mEAAmE;oBACnE,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM;wBAAE,OAAO,KAAK,CAAA;oBAC9D,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM;wBAAE,OAAO,IAAI,CAAA;oBAC5D,iDAAiD;oBACjD,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD;oBACE,OAAO,IAAI,CAAA;YACf,CAAC;QACH,CAAC;QAED,KAAK,yBAAyB;YAC5B,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAElC,KAAK,iBAAiB;YACpB,gDAAgD;YAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,OAAO,IAAI,CAAA;QAEb;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,IAAa,EAAE,WAAoB,EAAE,GAAkB;IACvE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEhC,sCAAsC;IACtC,IAAI,SAAS,KAAK,IAAI;QAAE,OAAM;IAE9B,qEAAqE;IACrE,IAAI,SAAS,KAAK,UAA+B,EAAE,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAC/B,sCAAsC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EACnF,MAAM,CAAC,IAAI,CAAC,EACZ,gBAAgB,CACjB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,sCAAsC;IACtC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAC/B,sDAAsD,WAAW,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EACrH,MAAM,CAAC,IAAI,CAAC,EACZ,mBAAmB,CACpB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,uCAAuC;IACvC,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAC/B,gCAAgC,WAAW,SAAS,SAAS,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAClH,MAAM,CAAC,IAAI,CAAC,EACZ,gBAAgB,CACjB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,IAAa,EAAE,GAAkB,EAAE,IAAY;IACtE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;QAAE,OAAM;IAChH,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,IAAI,MAAM,EAAE,CAAC;QACX,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;YACpE,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa;SACrC,CAAC,CAAA;IACJ,CAAC;IACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI;QACJ,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;QAChD,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU;QAClC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU;QAC9B,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;QACnB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACf,YAAY,EAAE,MAAM;KACrB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAa,EAAE,GAAkB;IAC1E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACT,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;YACzB,OAAO,CAAC,CAAC,KAAgB,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;IACzB,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;QAChD,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;KACW,CAAA;AACzB,CAAC;AAED,SAAS,cAAc,CAAC,IAAa,EAAE,GAAkB,EAAE,IAAmB;IAC5E,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAEzB,uDAAuD;IACvD,8BAA8B;IAC9B,IAAI,IAAI,KAAK,IAAI;QAAE,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAEnD,iEAAiE;IACjE,IACE,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAC/B,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAChC,IAAI,CAAC,IAAI,KAAK,mBAAmB;QACjC,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAC/B,IAAI,CAAC,IAAI,KAAK,uBAAuB,EACrC,CAAC;QACD,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACT,2CAA2C;YAC3C,sEAAsE;YACtE,oEAAoE;YACpE,8EAA8E;YAC9E,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ;gBAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;YACxD,OAAO,CAAC,CAAC,KAA2B,CAAA;QACtC,CAAC;QACD,gCAAgC;QAChC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;YAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;YAC9B,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC7D,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;YACzB,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;gBAChD,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;gBACf,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;aACE,CAAA;QACzB,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,8BAA8B,IAAI,CAAC,IAAI,uDAAuD,EAC9F,IAAI,EACJ,SAAS,CACV,CAAA;IACH,CAAC;IAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,KAAgB,CAAA;QAE9B,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAwB,CAAA;YAC1D,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAwB,CAAA;YACxD,CAAC;YACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YACtD,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;YAC7C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC9B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAwB,CAAA;YACxD,CAAC;YACD,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,kDAAkD,CAAC,CAAA;QAC3F,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAc,EAAE,CAAA;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC3B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;oBACpC,MAAM,IAAI,UAAU,CAAC,uCAAuC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;gBAChF,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAA;gBACxD,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAChC,IAAI,SAAS,KAAK,IAAI;wBAAE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;oBACpE,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;oBACpD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,MAAM,IAAI,UAAU,CAClB,gFAAgF,EAChF,IAAI,EACJ,SAAS,CACV,CAAA;oBACH,CAAC;oBACD,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;oBACzB,GAAG,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,KAAmB,CAAC,CAAA;oBACnC,SAAQ;gBACV,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;YAC9C,CAAC;YACD,OAAO,GAAyB,CAAA;QAClC,CAAC;QAED,KAAK,kBAAkB;YACrB,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QAE1C,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC1B,kCAAkC;YAClC,IACE,MAAM,EAAE,IAAI,KAAK,kBAAkB;gBACnC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY;gBACpC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;gBACnD,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,YAAY,EACtC,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;gBACjC,MAAM,IAAI,GAAI,IAAI,CAAC,SAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtD,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBACjE,MAAM,OAAO,GAAgB;oBAC3B,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;oBAC5B,IAAI;oBACJ,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvE,CAAA;gBACD,OAAO,OAA6B,CAAA;YACtC,CAAC;YACD,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;gBAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;gBAC9B,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC7D,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;gBACzB,OAAO;oBACL,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;oBAChD,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;oBACf,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;iBACE,CAAA;YACzB,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,4EAA4E,EAC5E,IAAI,EACJ,SAAS,CACV,CAAA;QACH,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;gBAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;gBAC9B,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC7D,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;gBACzB,OAAO;oBACL,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;oBAChD,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;oBACf,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;iBACE,CAAA;YACzB,CAAC;YACD,MAAM,IAAI,UAAU,CAAC,yEAAyE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAClH,CAAC;QAED;YACE,MAAM,IAAI,UAAU,CAAC,iCAAiC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,SAAS,gBAAgB,CAAC,IAAa,EAAE,GAAkB,EAAE,IAAmB;IAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YACtD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvF,MAAM,IAAI,UAAU,CAAC,kDAAkD,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3F,CAAC;YACD,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;YACzB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAgC,CAAC,CAAA;YACtD,SAAQ;QACV,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YACzD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBACvD,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC7E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,2EAA2E;YAC3E,MAAM,IAAI,GAAG,GAAG,CAAA;YAChB,IAAI,UAAU,GAAa,EAAE,CAAA;YAC7B,IAAI,QAAQ,GAAa,EAAE,CAAA;YAC3B,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAwB,CAAA;gBAC5D,UAAU,GAAG,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC;iBAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,oFAAoF;gBACpF,uEAAuE;gBACvE,GAAG,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAuB,CAAA;YAC3E,CAAC;iBAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACzB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAwB,CAAA;gBAC1D,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,gDAAgD,CAAC,CAAA;YACzF,CAAC;YACD,6EAA6E;YAC7E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE;oBACtB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;oBAChD,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU;oBAClC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU;oBAC9B,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IACD,OAAO,GAAyB,CAAA;AAClC,CAAC;AAED,iFAAiF;AACjF,SAAS,mBAAmB,CAC1B,QAAmB,EACnB,GAAkB,EAClB,IAAY,EACZ,QAAQ,GAAG,YAAY;IAEvB,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QACxC,MAAM,iBAAiB,GAAG,MAAM,IAAI,OAAO,EAAE,IAAI,KAAK,kBAAkB,CAAA;QACxE,IAAI,iBAAiB,EAAE,CAAC;YACtB,sDAAsD;YACtD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;YAChD,SAAQ;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,CAAC,GAAG,CAAA;QACpC,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAClC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAwB,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;YACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnB,SAAQ;YACV,CAAC;YACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAwB,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YACD,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAA;QAC/D,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YAChD,MAAM,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YACzD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,UAAU,CAClB,2FAA2F,EAC3F,IAAI,EACJ,SAAS,CACV,CAAA;YACH,CAAC;YACD,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;YACzB,GAAG,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,KAAmB,CAAC,CAAA;YACnC,SAAQ;QACV,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,cAAc;AAEd;;+DAE+D;AAC/D,SAAS,iBAAiB,CAAC,CAAU;IACnC,OAAO,CACL,CAAC,KAAK,IAAI;QACV,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjB,CAAC,YAAY,CAAC,CAAY,CAAC;QAC3B,CAAC,cAAc,CAAC,CAAY,CAAC;QAC7B,CAAC,aAAa,CAAC,CAAY,CAAC;QAC5B,CAAC,aAAa,CAAC,CAAY,CAAC,CAC7B,CAAA;AACH,CAAC;AAgBD;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,IAAqB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACxD,MAAM,IAAI,GACR,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAI,IAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEzE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU;QAAE,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAChE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAExD,MAAM,OAAO,GAAqB;QAChC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YACjB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;gBAC5B,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS;wBAC/D,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBAClE,CAAC,CAAC,EAAE,CAAC;iBACR;gBACH,CAAC,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK;QACxC,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAA;IACD,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;;QACtC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAA;IACtB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,GAAgB;IAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAM;IAChG,MAAM,IAAI,GAAI,KAA2B,CAAC,IAAI,CAAA;IAC9C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAE,KAA0B,CAAC,IAAI,CAAC,CAAA;QACzC,OAAM;IACR,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,GAAG,CAAC,GAAG,CAAE,KAA0B,CAAC,IAAI,CAAC,CAAA;QACzC,OAAM;IACR,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAK,KAAqB,CAAC,IAAI;YAAE,sBAAsB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3E,OAAM;IACR,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,KAA6C,CAAA;QACvD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAClC,OAAM;IACR,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,sBAAsB,CAAC,CAAY,EAAE,GAAG,CAAC,CAAA;QAChE,OAAM;IACR,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC;YAAE,sBAAsB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjG,CAAC;AACH,CAAC;AAED,yBAAyB;AAEzB,SAAS,oBAAoB,CAC3B,IAAa,EACb,GAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA;IACzB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,MAAM,UAAU,GAAG,CAAC,MAAe,EAAY,EAAE;QAC/C,IAAI,MAAM,EAAE,IAAI,KAAK,YAAY;YAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAA;QAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,UAAU,CAAC,qBAAqB,IAAI,aAAa,EAAE,IAAI,CAAC,CAAA;QACpE,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAgD,EAAE;QAClF,IAAI,EAAE,GAAoB,IAAI,CAAA;QAC9B,MAAM,IAAI,GAAiB,EAAE,CAAA;QAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;gBACzD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBACvD,CAAC,CAAC,IAAI,CAAA;YACR,IAAI,CAAC,GAAG;gBAAE,SAAQ;YAClB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY;oBAAE,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpE,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAe,CAAA;YAC5E,CAAC;YACD,4DAA4D;YAC5D,8CAA8C;QAChD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACtE,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAA;IACnF,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QACvB,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACnG,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACnC,MAAM,cAAc,GAAoB,EAAE,CAAA;QAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACtC,MAAM,IAAI,UAAU,CAAC,sDAAsD,EAAE,IAAI,CAAC,CAAA;YACpF,CAAC;YACD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YACxB,IAAI,CAAC,CAAC,EAAE;gBAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAA;QAC1G,OAAO,EAAE,cAAc,EAAE,CAAA;IAC3B,CAAC;IACD,MAAM,IAAI,UAAU,CAAC,kCAAkC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;AAC1E,CAAC;AAED,sDAAsD;AAEtD,SAAS,kBAAkB,CACzB,UAAqB,EACrB,IAAY,EACZ,OAAoB;IAEpB,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAM;IACpC,MAAM,OAAO,GAAgD,EAAE,CAAA;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAA;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAa,EAAE;QAC9C,gEAAgE;QAChE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;IACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;QACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,+DAA+D;IAC/D,kEAAkE;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,KAAgC,CAAA;QAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAA;QACpF,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,KAAyC,CAAA;YACnD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAA;YACxD,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,KAAyC,CAAA;QACtD,+DAA+D;QAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AA0CD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAgC;IAC5E,oDAAoD;IACpD,+CAA+C;IAC/C,YAAY,CAAC,IAAI,EAAE;QACjB,MAAM,EAAE,OAAO,EAAE,QAAQ,IAAI,QAAQ;QACrC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QACzE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,OAAO,EAAE,SAAS;KAC9B,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAA;IAEjD,4CAA4C;IAC5C,MAAM,OAAO,GAAgB;QAC3B,UAAU,EAAE,IAAI,GAAG,EAAU;QAC7B,WAAW,EAAE,IAAI,GAAG,EAAmB;QACvC,QAAQ,EAAE,IAAI,GAAG,EAAU;QAC3B,UAAU,EAAE,IAAI,GAAG,EAAkB;QACrC,aAAa,EAAE,IAAI,GAAG,EAAoB;QAC1C,aAAa;QACb,IAAI,EAAE,IAAI,GAAG,EAAuB;KACrC,CAAA;IAED,mEAAmE;IACnE,IAAI,WAAW,GAA0C,IAAI,CAAA;IAC7D,CAAC;QACC,MAAM,IAAI,GAAc,EAAE,CAAA;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAChH,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;oBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACrB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,UAAU,CAAC,4EAA4E,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;YACpI,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;gBACtD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpC,MAAM,IAAI,UAAU,CAAC,sEAAsE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;gBAChI,CAAC;YACH,CAAC;YACD,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;QACxE,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,yDAAyD;IACzD,2CAA2C;IAC3C,IAAI,SAAS,GAAG,IAAI,CAAA;IACpB,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;YACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACxC,SAAS,GAAG,GAAG,MAAM,GAAG,UAAU,2BAA2B,aAAa,WAAW,IAAI,KAAK,CAAA;YAC9F,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;YAChD,uDAAuD;YACvD,gDAAgD;YAChD,kDAAkD;YAClD,UAAU,GAAG,CAAC,GAAG,yBAAyB,aAAa,UAAU,CAAC,MAAM,CAAA;QAC1E,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,yBAAyB,aAAa,WAAW,IAAI,KAAK,CAAA;YACtE,UAAU,GAAG,CAAC,CAAA;YACd,UAAU,GAAG,yBAAyB,aAAa,UAAU,CAAC,MAAM,CAAA;QACtE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAY,CAAA;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE;YAC1B,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,GAAmD,CAAA;QACrE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAA;QACpC,MAAM,IAAI,UAAU,CAAC,gBAAgB,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC3F,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;YAAE,SAAQ;QAC5C,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ;gBAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IACD,mCAAmC;IACnC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,UAAU,IAAI,EAAE;QAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEvE,wCAAwC;IACxC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAA;IACvF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAA;IACtC,IACE,OAAO,EAAE,IAAI,KAAK,yBAAyB;QAC3C,CAAC,OAAO,CAAC,KAAK;QACd,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY;QACxC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,EACxC,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,oCAAoC,aAAa,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAC7G,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,UAAU,CAAC,8DAA8D,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACvG,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;IAE3B,iBAAiB;IACjB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YACpE,MAAM,OAAO,GAAa,EAAE,CAAA;YAC5B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC,EAAE,IAAI,KAAK,YAAY;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;;oBAC7C,MAAM,IAAI,UAAU,CAAC,2CAA2C,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;YAClG,CAAC;YACD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAuB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,MAAM,SAAS,GAAoB,EAAE,CAAA;IACrC,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,IAAI,IAA8B,CAAA;IAClC,IAAI,cAA2C,CAAA;IAC/C,6BAA6B;IAC7B,MAAM,UAAU,GAAgB,EAAE,CAAA;IAClC,iCAAiC;IACjC,MAAM,YAAY,GAAiB,EAAE,CAAA;IAErC,gBAAgB;IAChB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAA;QACxD,MAAM,IAAI,GAAkB;YAC1B,OAAO;YACP,SAAS,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI;YACtC,eAAe,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI;YAClD,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5B,UAAU;YACV,UAAU;YACV,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,SAAS,EAAE,YAAY;SACxB,CAAA;QAED,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,mBAAmB;gBACtB,MAAK,CAAC,4BAA4B;YAEpC,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;gBAC9B,MAAM,OAAO,GAAa,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAA;gBACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU,CAAA;gBAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBAChF,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI;oBACJ,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE;oBAC7C,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;iBAC5B,CAAC,CAAA;gBACF,MAAK;YACP,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBACzD,MAAM,IAAI,UAAU,CAAC,oDAAoD,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;gBACjH,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;oBACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAA;oBAExD,UAAU;oBACV,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;wBACtC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;wBACzD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;wBACnB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO;4BAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;wBACpE,SAAQ;oBACV,CAAC;oBACD,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;wBACnC,MAAM,IAAI,UAAU,CAAC,uDAAuD,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;oBACxG,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA;oBACzB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;oBACpB,IAAI,IAAI,EAAE,IAAI,KAAK,iBAAiB;wBAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;oBAC1D,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACtC,MAAM,IAAI,UAAU,CAAC,4DAA4D,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAA;oBAChH,CAAC;oBAED,iDAAiD;oBACjD,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;wBAClE,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;wBAC3F,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;wBACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBAC1B,SAAQ;oBACV,CAAC;oBAED,kCAAkC;oBAClC,4CAA4C;oBAC5C,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;wBACxE,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;oBACtC,CAAC;oBAED,0CAA0C;oBAC1C,MAAM,SAAS,GACb,IAAI,EAAE,IAAI,KAAK,SAAS;wBACxB,IAAI,EAAE,IAAI,KAAK,iBAAiB;wBAChC,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAA;oBACnC,MAAM,YAAY,GAChB,IAAI,EAAE,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAA;oBAChG,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;wBAC9B,MAAM,KAAK,GAAG,YAAY;4BACxB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAe;4BAChC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;gCACpB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;gCACzB,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAY,CAAA;wBACjD,MAAM,WAAW,GAAG,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAA;wBAC3D,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI;4BACJ,MAAM,EAAE,QAAQ;4BAChB,KAAK;4BACL,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;4BACzF,QAAQ,EAAE,CAAC,WAAW;yBACvB,CAAC,CAAA;wBACF,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBAC1B,IAAI,WAAW;4BAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;wBACrD,SAAQ;oBACV,CAAC;oBAED,mDAAmD;oBACnD,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;wBACvF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBAC1B,SAAQ;oBACV,CAAC;oBACD,MAAM,IAAI,UAAU,CAAC,8CAA8C,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;gBACjH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;gBAC1D,MAAK;YACP,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBAC9C,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;gBACb,cAAc,GAAG,CAAC,CAAC,cAAc,CAAA;gBACjC,MAAK;YACP,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,oBAAoB;gBACpB,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAC9B,OAAO,EAAE,QAAQ,CAAC,IAAI;wBACtB,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;wBACrD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,UAAU,EAAE;qBAC9E,CAAC,CAAA;oBACF,MAAK;gBACP,CAAC;gBACD,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACzC,MAAM,IAAI,UAAU,CAAC,6CAA6C,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;gBAC1F,CAAC;gBACD,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACtC,MAAM,IAAI,UAAU,CAAC,gFAAgF,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;gBAC7H,CAAC;gBACD,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACtC,MAAM,IAAI,UAAU,CAAC,0DAA0D,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;gBAC1G,CAAC;gBACD,iBAAiB;gBACjB,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,IAAI;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,QAAQ,CAAC,IAAI;oBACtB,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;oBACrD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,UAAU,EAAE;iBAC9E,CAAC,CAAA;gBACF,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,uCAAuC;IACvC,4DAA4D;IAC5D,+DAA+D;IAC/D,+EAA+E;IAC/E,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,OAAO,CAAC,UAAU;YACrB,GAAG,OAAO,CAAC,QAAQ;YACnB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;YAC5B,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;YAC/B,GAAG,iBAAiB;SACrB,CAAC;KACH,CAAC,IAAI,EAAE,CAAA;IAER,2DAA2D;IAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;AACnH,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAA;AAChC,CAAC;AAED,uBAAuB;AACvB,SAAS,iBAAiB,CAAC,IAAa;IACtC,OAAO,IAAI,CAAC,KAAK,CAAA;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,CAAC,CAAA;IACzB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI;SACR,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB,CAAC;QACtB,KAAK,kBAAkB;YACrB,OAAO,MAAM,CAAA;QACf,KAAK,aAAa;YAChB,OAAO,WAAW,CAAA;QACpB,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAA;QACjB;YACE,OAAO,OAAO,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAA;IACpC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,qCAAqC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IAC/E,CAAC;IACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,uEAAuE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACjH,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IACjI,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC/H,CAAC;IACD,MAAM,QAAQ,GAAa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAc,CAAC,CAAA;IAC7E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;AAClG,CAAC;AAED,gDAAgD;AAChD,SAAS,cAAc,CAAC,IAAa,EAAE,GAAkB;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,MAAM,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACxC,OAAO,CACL,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY;YACpC,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,YAAY;YACtC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa;gBAChD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5C,GAAG,CAAC,SAAS,CAAC,CACjB,CAAA;IACH,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,CAAA;IAC1E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,0CAA0C;AAC1C,SAAS,cAAc,CACrB,IAAa,EACb,IAAY,EACZ,IAAmB,EACnB,IAAiD;IAEjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;IAC9B,IAAI,MAAc,CAAA;IAClB,IAAI,SAA6B,CAAA;IACjC,IAAI,KAA0B,CAAA;IAC9B,IAAI,QAA4B,CAAA;IAEhC,IAAI,UAAU,EAAE,IAAI,KAAK,kBAAkB,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QACtI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACnF,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;YACxE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,OAAO,CAAA;YAClB,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAA;QACnC,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7C,KAAK,GAAG,IAAI,CAAA;QACZ,MAAM,GAAG,UAAU,CAAC,IAAI,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,UAAU,CAAC,gDAAgD,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAC7F,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAExE,yEAAyE;IACzE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,MAAM,EAAE,CAAA;QAC7G,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;QACxC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC;QAC/B,MAAM;QACN,IAAI;QACJ,GAAG,EAAE,IAAI;QACT,UAAU;QACV,SAAS;QACT,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACvD,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAA;IACF,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAClD,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,IAAa,EAAE,SAAiB,EAAE,GAAkB;IAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAM;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC5B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,CAAA;IAE3C,oBAAoB;IACpB,0EAA0E;IAC1E,yEAAyE;IACzE,8DAA8D;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;QACtC,IAAI,aAAa,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAC9C,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAU,CACxG,CAAA;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;oBAC5C,IAAI,IAAI,EAAE,IAAI,KAAK,UAAU;wBAAE,SAAQ;oBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;oBACxB,IAAI,OAAO,EAAE,IAAI,KAAK,YAAY;wBAAE,SAAQ;oBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;oBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;oBACrC,IAAI,CAAC,GAAG;wBAAE,SAAQ;oBAElB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;oBAE9B,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;wBACpF,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;4BAC3C,IAAI,EAAE;gCAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;wBAChC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,gEAAgE;QAChE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB;gBAAE,SAAQ;YAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CACpC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAU,CACxG,CAAA;YACD,IAAI,CAAC,UAAU;gBAAE,SAAQ;YACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAClC,IAAI,IAAI,EAAE,IAAI,KAAK,UAAU;oBAAE,SAAQ;gBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;gBACxB,IAAI,OAAO,EAAE,IAAI,KAAK,YAAY;oBAAE,SAAQ;gBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;gBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;gBACrC,IAAI,CAAC,GAAG;oBAAE,SAAQ;gBAElB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAChC,CAAC;YACD,OAAM;QACR,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,OAAO;QAAE,OAAM;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChD,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB;YAAE,MAAK,CAAC,0BAA0B;QAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACrC,MAAM,EAAE,CAAA;QAER,IAAI,CAAC,GAAG;YAAE,SAAQ;QAElB,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBACpC,IAAI,EAAE;oBAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,OAAyB;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;QACpC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAAE,OAAM;QAClE,MAAM,eAAe,GAAa,EAAE,CAAA;QACpC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrF,eAAe,CAAC,IAAI,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;QAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;QACzB,OAAO,CAAC,QAAQ,GAAG;YACjB,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,eAAe;SAChB,CAAA;QACD,OAAM;IACR,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,SAAS,mBAAmB,CAAC,IAAa,EAAE,IAAY,EAAE,IAAmB;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,+CAA+C,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAC5F,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YAChE,MAAM,IAAI,UAAU,CAAC,8CAA8C,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;QAC3F,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,UAAU,CAAC,4BAA4B,IAAI,CAAC,GAAG,CAAC,IAAI,yBAAyB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;QAC/G,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACpB,IAAI,IAAI,EAAE,IAAI,KAAK,iBAAiB;QAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC1D,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,UAAU,CAAC,wEAAwE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAC3I,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;IAC9B,IAAI,MAAc,CAAA;IAClB,IAAI,SAA6B,CAAA;IACjC,IAAI,KAA0B,CAAA;IAC9B,IAAI,QAA4B,CAAA;IAChC,IAAI,UAAU,EAAE,IAAI,KAAK,kBAAkB,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QACtI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACnF,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;YACxE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,OAAO,CAAA;YAClB,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAA;QACnC,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7C,KAAK,GAAG,IAAI,CAAA;QACZ,MAAM,GAAG,UAAU,CAAC,IAAI,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,UAAU,CAAC,0EAA0E,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACvH,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACxE,MAAM,OAAO,GAAG,gBAAgB,CAAC;QAC/B,MAAM;QACN,IAAI;QACJ,GAAG,EAAE,IAAI;QACT,UAAU;QACV,SAAS;QACT,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAA;IACF,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAClD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,8DAA8D;AAC9D,SAAS,kBAAkB,CACzB,IAAa,EACb,IAAY,EACZ,IAAmB,EACnB,KAAyB;IAEzB,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,UAAU,CAAC,4DAA4D,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;IAC5G,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzG,MAAM,IAAI,UAAU,CAAC,8BAA8B,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAAC,gFAAgF,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAC7H,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI,EAAE,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QACvG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,UAAU,CAAC,qBAAqB,OAAO,oBAAoB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;YAC7F,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACrB,IAAI,IAAI,EAAE,IAAI,KAAK,iBAAiB;YAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1D,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YAC1F,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,OAAM;QACR,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,uCAAuC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACpF,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,kBAAkB;QAC7E,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC3F,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAA;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACrD,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;YAC1E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,OAAM;QACR,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,qBAAqB,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACpH,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACnE,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;YAC1E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,OAAM;QACR,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,aAAa,MAAM,iCAAiC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACjG,CAAC;IAED,MAAM,IAAI,UAAU,CAClB,iFAAiF,EACjF,IAAI,EACJ,aAAa,CACd,CAAA;AACH,CAAC","sourcesContent":["/**\n * metadata-extractor — 无 IR 元数据提取器(UI 通道语义源)\n *\n * 定位:从 .fai.js 源码(任意合法 JS)提取 **UI 通道需要的全部元数据**。\n * 输入 = 源码文本;输出 = UiMetadata。不生成可执行代码、不求值、不参与执行、\n * 不建执行中介 IR(已删除,只产宿主面类型)。\n *\n * lines 面 = StatementSummary[](与现状 analyzeCode 产出逐字相等,A-16 对拍\n * 锁定;唯一语义差异:id = `'s' + lineNo`,append 场景稳定)。行分类:\n * op 行 → lines;param 行 → params;import 行 → imports;function 行 →\n * functions;循环/条件/switch 块 → blocks(只读节点,不分析内部语义,R8)。\n *\n * 本文件不 import parser.ts/compile.ts(P6 删除 IR 后唯一存活解析侧)。\n */\n\nimport { parse as acornParse } from 'acorn'\nimport type { StatementSummary } from './statement-summary'\nimport type { ScriptMetaIR, TerminalShape } from './types'\nimport { asStmtId, asPartName, type PartName, type StmtId } from '../identity'\nimport type { HostArg, HostCallRef, HostRef } from './host-arg'\nimport { isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef } from './host-arg'\nimport { ParseError } from './parse-error'\nimport { fnv1a32 } from './fnv-hash'\nimport { assertSecure, isSafeGlobalIdent, type SecurityPolicy } from './security-scanner'\nimport type { DimName } from '../units'\nimport { SCRIPT_UNIT_NAMES, UNIT_DIM, UNIT_SCALE, SCRIPT_UNIT_TO_NAME } from '../units'\n\n// ── UiMetadata 类型(§4.1) ──\n\n/** 参数表条目(参数面板:const X = <字面量> → 名字/值/是否计算表达式) */\nexport interface ParamEntry {\n name: string\n lineNo: number\n /** RHS 是纯字面量时为其值;表达式/引用(computed=true)时 value 缺省 */\n value?: unknown\n type: 'number' | 'vec3' | 'bool' | 'enum'\n /** RHS 是表达式/参数引用 → 面板只读 */\n computed: boolean\n}\n\n/**\n * 单个参数槽的源码来源信息(UI 通道新增,非 IR)。\n *\n * Timeline 参数表达式编辑:\n * 每个参数槽携带自己的源码区间,编辑 = 精确替换该区间(`editArgSource`),\n * 不重印整行。path 对宿主是不透明标识符——宿主只能从本记录读取后原样回传。\n */\nexport interface ArgSource {\n /** 所属语句 id('s' + lineNo);参数行的 rhs 槽同样使用 's' + lineNo */\n stmtId: StmtId\n /** 槽位路径(见 plans 文档 §4.2.1 的路径命名表;对宿主不透明) */\n path: string\n /** 该槽的源码原文(字面量 → `40`;表达式 → `w * 2`;引用 → `w`) */\n text: string\n /** 字符区间 [start, end),相对 extractMetadata 的入参 code(含 codeOffset 归一化) */\n start: number\n end: number\n /** 依赖的参数名(命中 paramNames;表达式里的参数引用) */\n params: string[]\n /** 依赖的其它变量名(命中 declared,含 op 产出 / 派生常量) */\n refs: string[]\n /** 非平凡表达式(非字面量,负字面量视为字面量)→ UI 显示 fx 徽标 */\n isExpression: boolean\n}\n\n/** import 表条目(相对 specifier → moduleKey,裸 specifier → libLoader) */\nexport interface ImportEntry {\n lineNo: number\n specifier: string\n kind: 'named' | 'namespace' | 'default'\n bindings: string[]\n localName?: string\n packageName?: string\n moduleKey?: string\n}\n\n/** 函数表条目(本机函数) */\nexport interface FunctionEntry {\n name: string\n lineNo: number\n params: string[]\n /** 函数体原文区间(只读显示用;坐标相对原始 code 文本) */\n bodyRange: { start: number; end: number }\n /** 函数体原文(花括号内) */\n body: string\n bodyHash: string\n}\n\n/** 块结构条目(只读节点,R8) */\nexport interface BlockEntry {\n lineNo: number\n kind: 'loop' | 'condition' | 'switch' | 'other'\n astKind: string\n /** 块源码原文(含闭合括号的整段) */\n source: string\n range: { start: number; end: number }\n}\n\n/** keep 指令条目(行级,存活判定静态输入;hidden=true 为 keepHidden) */\nexport interface KeepEntry {\n target: string\n hidden: boolean\n}\n\n/** 元数据提取器输出:UI 通道的完整元数据面(§4.1)。 */\nexport interface UiMetadata {\n lines: StatementSummary[]\n params: ParamEntry[]\n imports: ImportEntry[]\n functions: FunctionEntry[]\n blocks: BlockEntry[]\n keep: Map<number, KeepEntry[]>\n meta?: ScriptMetaIR\n terminalShapes?: TerminalShape[]\n /**\n * 全语句参数槽的源码来源(按语句顺序;参数行的 RHS 槽 path 以 'rhs' 开头)。\n * 新增字段:P0-B(见 plans/2026-09-08-timeline-param-expression-editing.md)。\n */\n argSources: ArgSource[]\n /**\n * 本脚本内可被表达式引用的名字(词典序去重):\n * paramNames ∪ declared ∪ nsBindings ∪ localFnParams ∪ 单位常量。\n * `validateExpression` / `editArgSource` 用它做 E_REFERENCE 判定。\n *\n * 注意:S4 免 import 安全全局(Math / JSON / Number / console / Infinity / …)**不**入此表——\n * 它们不属于脚本作用域,`collectExprIdentifiers` 已借 `isSafeGlobalIdent` 无条件放行;\n * 列进来反而会让宿主把它们当成脚本变量(联想/重命名都会误伤)。\n */\n names: string[]\n}\n\n// ── AST 辅助 ──\n\ntype ASTNode = any\n\nconst CONTROL_FLOW_TYPES = new Set([\n 'IfStatement', 'ForStatement', 'ForInStatement', 'ForOfStatement',\n 'WhileStatement', 'DoWhileStatement', 'SwitchStatement', 'TryStatement',\n 'ThrowStatement', 'BreakStatement', 'ContinueStatement', 'LabeledStatement',\n 'WithStatement', 'BlockStatement',\n])\n\nfunction lineOf(node: ASTNode): number {\n return node?.loc?.start?.line ?? 1\n}\n\nfunction derivePackageName(specifier: string): string {\n if (specifier.startsWith('@')) {\n const parts = specifier.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : specifier\n }\n return specifier.split('/')[0]\n}\n\n// ── 提取器符号表 ──\n\n/**\n * 提取器符号表:声明过的名字与绑定关系(参数、变量、命名空间、函数形参、keep 指令),\n * 供解析过程中判定标识符归属并做常量折叠。\n */\nexport interface SymbolTable {\n /** 参数名(const X = <literal>) */\n paramNames: Set<string>\n /** 参数名 → 字面量值(折叠依据) */\n paramValues: Map<string, unknown>\n /** 已声明变量名(参数 + op outputs + 函数名;含宽松透传名) */\n declared: Set<string>\n /** 命名空间绑定名 → packageName(import * as ns) */\n nsBindings: Map<string, string>\n /** 本机函数名 → 形参 */\n localFnParams: Map<string, string[]>\n /** 缺省命名空间绑定名('cad') */\n defaultNsName: string\n /** keep 指令表(lineNo → 调用点条目;行级存活判定静态输入) */\n keep: Map<number, KeepEntry[]>\n}\n\n// ── 常量折叠(与现状 parser.tryFoldConstExpr 同构;仅字面量 + 参数) ──\n\ntype FoldResult =\n| { ok: true; value: unknown; usedParam: boolean; usedUnit: boolean }\n| { ok: false }\n\nfunction numFold(v: number, usedParam = false, usedUnit = false): FoldResult {\nreturn Number.isFinite(v) ? { ok: true, value: v, usedParam, usedUnit } : { ok: false }\n}\n\nfunction looseEq(a: unknown, b: unknown): boolean {\n let x: unknown = a\n let y: unknown = b\n if (typeof x === 'boolean') x = x ? 1 : 0\n if (typeof y === 'boolean') y = y ? 1 : 0\n if (typeof x === 'number' && typeof y === 'string') return x === Number(y)\n if (typeof x === 'string' && typeof y === 'number') return Number(x) === y\n if (x === null || y === null) return x === null && y === null\n return x === y\n}\n\n/**\n * 引用解析失败时的错误分类(A3):裸标识符既非参数也非已声明变量。\n *\n * - 若它是免 import 安全全局(`isSafeGlobalIdent`,即 `S4_SAFE_GLOBALS` 成员),给出独立错误码\n * `E_GLOBAL_NOT_ADMITTED` 与诚实文案,指明「这是 faijs 的判定点缺陷,不是你的代码问题」,\n * 并指向统一入口(`S4_SAFE_GLOBALS` / 计划 A1)——错误信息不再把调用方引向「这语言没有 Math」\n * 的相反结论。\n * - 真未知标识符仍给 `E_REFERENCE`,语义不变。\n *\n * 各判定点(collectExprIdentifiers / parseValueExpr / shorthand / 位置实参)已优先放行安全全局;\n * 本函数是其兜底:若某个判定点漏放行,错误也必须是诚实的,而非误导性的「unknown identifier」。\n *\n * @param name 被拒绝的裸标识符名。\n * @param line 行号。\n * @param where 出错位置描述(拼进 E_REFERENCE 文案;安全全局分支忽略)。\n * @returns 永不返回(总是抛 ParseError)。\n */\nexport function throwReferenceError(name: string, line: number, where: string): never {\n if (isSafeGlobalIdent(name)) {\n throw new ParseError(\n `\"${name}\" 是免 import 安全全局(见统一入口 S4_SAFE_GLOBALS / 计划 A1),但本判定点未放行它——这是 faijs 判定点的缺陷,不是你的代码问题`,\n line,\n 'E_GLOBAL_NOT_ADMITTED',\n )\n }\n throw new ParseError(`unknown identifier \"${name}\" ${where}`, line, 'E_REFERENCE')\n}\n\nfunction tryFoldConstExpr(node: ASTNode, symbols: SymbolTable): FoldResult {\n switch (node.type) {\n case 'Literal':\n return { ok: true, value: node.value, usedParam: false, usedUnit: false }\n\n case 'Identifier': {\n // P7/D10.4: unit constants (MM, INCH, DEGREE, …) are recognized as\n // foldable constants. Their values come from UNIT_SCALE (the single\n // source of truth). The `usedUnit` flag is set so that `parseValueExpr`\n // can mark the line as computed (host read-only downgrade), preventing\n // the folded base value (e.g. 254) from being written back to source.\n if (SCRIPT_UNIT_NAMES.has(node.name)) {\n const unitName = SCRIPT_UNIT_TO_NAME[node.name]\n if (unitName) {\n return { ok: true, value: UNIT_SCALE[unitName], usedParam: false, usedUnit: true }\n }\n }\n if (!symbols.paramNames.has(node.name)) return { ok: false }\n const v = symbols.paramValues.get(node.name)\n return v === undefined ? { ok: false } : { ok: true, value: v, usedParam: true, usedUnit: false }\n }\n\n case 'UnaryExpression': {\n const operand = tryFoldConstExpr(node.argument, symbols)\n if (!operand.ok) return { ok: false }\n const v = operand.value\n switch (node.operator) {\n case '-': return typeof v === 'number' ? numFold(-v, operand.usedParam, operand.usedUnit) : { ok: false }\n case '+': return typeof v === 'number' ? numFold(+v, operand.usedParam, operand.usedUnit) : { ok: false }\n case '!': return { ok: true, value: !v, usedParam: operand.usedParam, usedUnit: operand.usedUnit }\n case '~': return typeof v === 'number' ? { ok: true, value: ~v, usedParam: operand.usedParam, usedUnit: operand.usedUnit } : { ok: false }\n case 'typeof': return { ok: true, value: typeof v, usedParam: operand.usedParam, usedUnit: operand.usedUnit }\n default: return { ok: false }\n }\n }\n\n case 'BinaryExpression': {\n const left = tryFoldConstExpr(node.left, symbols)\n if (!left.ok) return { ok: false }\n const right = tryFoldConstExpr(node.right, symbols)\n if (!right.ok) return { ok: false }\n const a = left.value\n const b = right.value\n const usedParam = left.usedParam || right.usedParam\n const usedUnit = left.usedUnit || right.usedUnit\n const numBin = (op: (x: number, y: number) => number): FoldResult =>\n typeof a === 'number' && typeof b === 'number' ? numFold(op(a, b), usedParam, usedUnit) : { ok: false }\n const cmpBin = (op: (x: number | string, y: number | string) => boolean): FoldResult => {\n if (typeof a === 'number' && typeof b === 'number') return { ok: true, value: op(a, b), usedParam, usedUnit }\n if (typeof a === 'string' && typeof b === 'string') return { ok: true, value: op(a, b), usedParam, usedUnit }\n return { ok: false }\n }\n switch (node.operator) {\n case '+': {\n if (typeof a === 'number' && typeof b === 'number') return numFold(a + b, usedParam, usedUnit)\n if (typeof a === 'string' || typeof b === 'string') return { ok: true, value: String(a) + String(b), usedParam, usedUnit }\n return { ok: false }\n }\n case '-': return numBin((x, y) => x - y)\n case '*': return numBin((x, y) => x * y)\n case '/': return numBin((x, y) => x / y)\n case '%': return numBin((x, y) => x % y)\n case '**': return numBin((x, y) => x ** y)\n case '<': return cmpBin((x, y) => x < y)\n case '<=': return cmpBin((x, y) => x <= y)\n case '>': return cmpBin((x, y) => x > y)\n case '>=': return cmpBin((x, y) => x >= y)\n case '==': return { ok: true, value: looseEq(a, b), usedParam, usedUnit }\n case '!=': return { ok: true, value: !looseEq(a, b), usedParam, usedUnit }\n case '===': return { ok: true, value: a === b, usedParam, usedUnit }\n case '!==': return { ok: true, value: a !== b, usedParam, usedUnit }\n default: return { ok: false }\n }\n }\n\n case 'LogicalExpression': {\n const left = tryFoldConstExpr(node.left, symbols)\n if (!left.ok) return { ok: false }\n const right = tryFoldConstExpr(node.right, symbols)\n if (!right.ok) return { ok: false }\n const a = left.value\n const usedParam = left.usedParam || right.usedParam\n const usedUnit = left.usedUnit || right.usedUnit\n switch (node.operator) {\n case '&&': return { ok: true, value: a ? right.value : left.value, usedParam, usedUnit }\n case '||': return { ok: true, value: a ? left.value : right.value, usedParam, usedUnit }\n case '??': return { ok: true, value: a === null ? right.value : left.value, usedParam, usedUnit }\n default: return { ok: false }\n }\n }\n\n case 'TemplateLiteral': {\n const parts: string[] = []\n const quasis = node.quasis as ASTNode[]\n const exprs = node.expressions as ASTNode[]\n let usedParam = false\n let usedUnit = false\n for (let i = 0; i < quasis.length; i++) {\n const cooked = quasis[i].value?.cooked\n parts.push(cooked ?? '')\n if (i < exprs.length) {\n const r = tryFoldConstExpr(exprs[i], symbols)\n if (!r.ok) return { ok: false }\n usedParam = usedParam || r.usedParam\n usedUnit = usedUnit || r.usedUnit\n parts.push(String(r.value))\n }\n }\n return { ok: true, value: parts.join(''), usedParam, usedUnit }\n }\n\n case 'ConditionalExpression': {\n const test = tryFoldConstExpr(node.test, symbols)\n if (!test.ok) return { ok: false }\n const chosen = tryFoldConstExpr(test.value ? node.consequent : node.alternate, symbols)\n if (!chosen.ok) return { ok: false }\n return { ok: true, value: chosen.value, usedParam: test.usedParam || chosen.usedParam, usedUnit: test.usedUnit || chosen.usedUnit }\n }\n\n default:\n return { ok: false }\n }\n}\n\n// ── Expr 白名单(与现状 parser.isExprWhitelist 同构) ──\n//\n// 本函数与 collectExprIdentifiers 是「唯一实现」——expr-validate.ts / source-edit.ts\n// 直接 import 复用,不复制(见 plans/2026-09-08-timeline-param-expression-editing.md §3.4.1)。\n\n/**\n * <Ns>.fn(...) 等「白名单表达式」结构判定(无可选链、无 spread、成员非计算)。\n * @param node 待判定的表达式 AST 节点;nil 或非法输入按非白名单处理。\n * @returns 节点自身及其全部子表达式均在白名单结构内 → true,否则 false。\n */\nexport function isExprWhitelist(node: ASTNode): boolean {\n if (!node || typeof node !== 'object') return false\n switch (node.type) {\n case 'Literal':\n case 'Identifier':\n return true\n case 'UnaryExpression':\n return isExprWhitelist(node.argument)\n case 'BinaryExpression':\n case 'LogicalExpression':\n return isExprWhitelist(node.left) && isExprWhitelist(node.right)\n case 'ConditionalExpression':\n return isExprWhitelist(node.test) && isExprWhitelist(node.consequent) && isExprWhitelist(node.alternate)\n case 'ArrayExpression':\n return node.elements.every((el: ASTNode) => el !== null && el !== undefined && isExprWhitelist(el))\n case 'MemberExpression':\n if (node.optional) return false\n if (!isExprWhitelist(node.object)) return false\n return node.computed ? isExprWhitelist(node.property) : true\n case 'CallExpression': {\n if (node.optional) return false\n if (!isExprWhitelist(node.callee)) return false\n return (node.arguments as ASTNode[]).every((a) => a.type !== 'SpreadElement' && isExprWhitelist(a))\n }\n default:\n return false\n }\n}\n\n/**\n * 递归收集表达式引用:参数 → params;已声明变量 → refs;\n * 免 import 安全全局/单位常量 → 只放行、不记入(见下方分支注释);未知 → E_REFERENCE。\n *\n * opts(可选扩展;缺省时行为与历史完全一致):\n * - `lenient: true`:未知标识符不抛错(静默跳过)——ArgSource 记录路径用,\n * 保证提取本身绝不抛新错;\n * - `defaultNs`:把默认命名空间('cad')视同 nsBindings 成员——`cad.faceNormal(p)`\n * 作为参数槽整条记录时,不会把 'cad' 当作未知标识符。\n *\n * 本函数与 isExprWhitelist 是「唯一实现」——expr-validate.ts / source-edit.ts\n * 直接 import 复用,不复制(见 plans/2026-09-08-timeline-param-expression-editing.md §3.4.1)。\n *\n * @param node 表达式的 AST 根节点;nil 或非对象直接返回。\n * @param symbols 提取器符号表(判定 Identifier 是参数/已声明/未知)。\n * @param line 当前语句行号(未知标识符报错时的行号)。\n * @param params 收集命中参数名的输出集合。\n * @param refs 收集命中已声明变量的输出集合。\n * @param opts 可选扩展;`lenient` 静默跳过未知标识符,`defaultNs` 把默认命名空间视同绑定成员。\n */\nexport function collectExprIdentifiers(\n node: ASTNode,\n symbols: SymbolTable,\n line: number,\n params: Set<string>,\n refs: Set<string>,\n opts?: { lenient?: boolean; defaultNs?: string },\n): void {\n if (!node || typeof node !== 'object') return\n switch (node.type) {\n case 'Identifier': {\n const name = node.name\n if (symbols.paramNames.has(name)) {\n params.add(name)\n } else if (symbols.declared.has(name)) {\n refs.add(name)\n } else if (SCRIPT_UNIT_NAMES.has(name)) {\n // P6/D7: unit constants (MM, INCH, DEGREE, …) are global read-only constants.\n // Treat as a known reference — do not throw E_REFERENCE.\n refs.add(name)\n } else if (isSafeGlobalIdent(name)) {\n // 2026-10-06 修复:先前的白名单只内联了单位常量,漏掉 S4_SAFE_GLOBALS 的其余\n // 免 import 安全全局(Math / JSON / Number / console / Infinity / undefined / …),\n // 导致 `cad.box(Math.max(x, 20), 1, 1)` 在提取阶段就抛 E_REFERENCE —— 与 S4 门禁\n // 「Math 合法」直接矛盾,整个脚本连执行都进不去。\n // 这里只判定「合法」,**不**记入 params/refs:它们是 JS 全局,不是脚本作用域变量,\n // 记入会让宿主依赖分析(summary.refs / ArgSource.refs)产生幻影依赖。\n } else if (opts?.lenient === true) {\n // lenient:未知标识符跳过(ArgSource 记录路径,保证提取不抛新错)\n } else {\n throw throwReferenceError(name, line, 'in expression')\n }\n return\n }\n case 'UnaryExpression':\n collectExprIdentifiers(node.argument, symbols, line, params, refs, opts)\n return\n case 'BinaryExpression':\n case 'LogicalExpression':\n collectExprIdentifiers(node.left, symbols, line, params, refs, opts)\n collectExprIdentifiers(node.right, symbols, line, params, refs, opts)\n return\n case 'ConditionalExpression':\n collectExprIdentifiers(node.test, symbols, line, params, refs, opts)\n collectExprIdentifiers(node.consequent, symbols, line, params, refs, opts)\n collectExprIdentifiers(node.alternate, symbols, line, params, refs, opts)\n return\n case 'ArrayExpression':\n for (const el of node.elements) collectExprIdentifiers(el, symbols, line, params, refs, opts)\n return\n case 'ObjectExpression':\n for (const prop of node.properties) {\n if (prop?.type !== 'Property') continue\n collectExprIdentifiers(prop.value, symbols, line, params, refs, opts)\n }\n return\n case 'TemplateLiteral':\n for (const expr of node.expressions) collectExprIdentifiers(expr, symbols, line, params, refs, opts)\n return\n case 'MemberExpression': {\n // 命名空间绑定(import * as cfg / 模块命名空间)的成员 cfg.OutX:对象名是外部\n // 命名空间,不收集为变量引用(§4.1 HostArg 引用形态;求值在内部 ctx.cfg 侧)。\n // opts.defaultNs(缺省命名空间 'cad')同样跳过——cad.faceNormal(p) 整条作为\n // 参数槽记录时不会把 'cad' 当未知标识符。\n const obj = node.object\n if (obj?.type === 'Identifier' && (symbols.nsBindings.has(obj.name) || obj.name === opts?.defaultNs)) {\n if (node.computed) collectExprIdentifiers(node.property, symbols, line, params, refs, opts)\n return\n }\n collectExprIdentifiers(node.object, symbols, line, params, refs, opts)\n if (node.computed) collectExprIdentifiers(node.property, symbols, line, params, refs, opts)\n return\n }\n case 'CallExpression':\n collectExprIdentifiers(node.callee, symbols, line, params, refs, opts)\n for (const a of node.arguments as ASTNode[]) {\n collectExprIdentifiers(a.type === 'SpreadElement' ? a.argument : a, symbols, line, params, refs, opts)\n }\n return\n default:\n return\n }\n}\n\n// ── 值解析 → HostArg(与现状 parseValueExpr/parsePositionalArgs 语义同构) ──\n\ninterface ValueParseCtx {\n symbols: SymbolTable\n /** 宽松模式(append 单行提取/引用前段变量):未知标识符透传为外部名 */\n looseVars: boolean\n /** 宽松本机调用(codeToArgs):裸 callee 不在函数集也放行 */\n looseLocalCalls: boolean\n sourceText: string\n /** 折叠/computed 累积标记:本语句是否引用了参数表达式/spread(hasComputedArgs) */\n computed: { value: boolean }\n /** P0-B:当前语句 id('s' + 归一化行号;argSources 记录的 stmtId) */\n stmtId: StmtId\n /** P0-B:parseCode 的 codeOffset(ArgSource.start/end 归一化到原 code 坐标) */\n codeOffset: number\n /** P0-B:参数槽源码记录累积(语句顺序追加) */\n argSources: ArgSource[]\n /** P6/D8: callee → 量纲声明(dimension pass 用) */\n opDims?: OpDimMap\n /** P6/D8: dimension 校验错误累积 */\n dimErrors: ParseError[]\n}\n\n/** 是否非平凡表达式:非 Literal(负字面量视为字面量)→ UI 显示 fx 徽标 */\nfunction isExpressionNode(node: ASTNode): boolean {\n if (!node || node.type === 'Literal') return false\n if (node.type === 'UnaryExpression' && node.operator === '-' && node.argument?.type === 'Literal') return false\n return true\n}\n\n// ── P6/D8: 静态量纲校验(dimension pass) ──\n\n/**\n * P6/D8 R4: Determine the dimension of an AST expression node.\n *\n * Returns the DimName if the expression can be statically determined to carry\n * a dimension, `'bare'` for a bare number literal, or `null` if it cannot be\n * determined (R5: pass through).\n */\nfunction inferDim(node: ASTNode): DimName | 'bare' | null {\n if (!node) return null\n\n switch (node.type) {\n case 'Literal':\n if (typeof node.value === 'number') return 'bare'\n return null\n\n case 'UnaryExpression':\n if (node.operator === '-' || node.operator === '+' || node.operator === '~') {\n return inferDim(node.argument)\n }\n return null\n\n case 'Identifier':\n // Unit constant? → its dimension\n if (SCRIPT_UNIT_NAMES.has(node.name)) {\n const unitName = SCRIPT_UNIT_TO_NAME[node.name]\n return unitName ? (UNIT_DIM[unitName] ?? null) : null\n }\n // Declared variable or parameter → cannot determine (R5: pass through)\n return null\n\n case 'BinaryExpression': {\n const left = inferDim(node.left)\n const right = inferDim(node.right)\n\n switch (node.operator) {\n case '*': {\n // number * unitConst → unit's dim; unitConst * number → same\n if (left === 'bare' && right && right !== 'bare') return right\n if (right === 'bare' && left && left !== 'bare') return left\n // both bare → bare (dimensionless multiply)\n if (left === 'bare' && right === 'bare') return 'bare'\n // both have dims → compound (length * length → area); pass through\n return null\n }\n case '/': {\n // same dim / same dim → dimensionless (bare)\n if (left && right && left === right && left !== 'bare') return 'bare'\n // dim / bare → dim\n if (left && left !== 'bare' && right === 'bare') return left\n // bare / dim → 1/dim (not a simple dim); pass through\n if (left === 'bare' && right && right !== 'bare') return null\n if (left === 'bare' && right === 'bare') return 'bare'\n return null\n }\n case '+':\n case '-': {\n // Both sides must have the same dimension (R3)\n if (left === right) return left\n // R3: if both sides are determinable but differ → mismatch.\n // But inferDim can't report errors — it returns the dim or null.\n // We return a special sentinel 'mismatch' to signal checkDim.\n if (left && right && left !== 'bare' && right !== 'bare' && left !== right) {\n return 'mismatch' as unknown as DimName\n }\n // If one is bare and the other has a dim → the result has that dim\n if (left === 'bare' && right && right !== 'bare') return right\n if (right === 'bare' && left && left !== 'bare') return left\n // If either is null (unknown), pass through (R5)\n return null\n }\n default:\n return null\n }\n }\n\n case 'ParenthesizedExpression':\n return inferDim(node.expression)\n\n case 'ArrayExpression':\n // vec3 — check first element for dimensionality\n if (node.elements && node.elements.length > 0 && node.elements[0]) {\n return inferDim(node.elements[0])\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * P6/D8: Check if an argument expression has the required dimension.\n *\n * - R2: bare number literal on a dimensioned slot → E_DIM_BARE_NUMBER\n * - R3: mismatched dimensions → E_DIM_MISMATCH\n * - R5: cannot determine → pass (no error)\n *\n * Appends errors to ctx.dimErrors (does not throw — extraction continues).\n */\nfunction checkDim(node: ASTNode, expectedDim: DimName, ctx: ValueParseCtx): void {\n const actualDim = inferDim(node)\n\n // R5: cannot determine → pass through\n if (actualDim === null) return\n\n // R3: mismatched dimensions within the expression (e.g. mm + degree)\n if (actualDim === 'mismatch' as unknown as string) {\n ctx.dimErrors.push(new ParseError(\n `dimension mismatch in expression: \"${ctx.sourceText.slice(node.start, node.end)}\"`,\n lineOf(node),\n 'E_DIM_MISMATCH',\n ))\n return\n }\n\n // R2: bare number on dimensioned slot\n if (actualDim === 'bare') {\n ctx.dimErrors.push(new ParseError(\n `bare number literal requires unit suffix (expected ${expectedDim}): \"${ctx.sourceText.slice(node.start, node.end)}\"`,\n lineOf(node),\n 'E_DIM_BARE_NUMBER',\n ))\n return\n }\n\n // R3: dimension mismatch with expected\n if (actualDim !== expectedDim) {\n ctx.dimErrors.push(new ParseError(\n `dimension mismatch: expected ${expectedDim}, got ${actualDim} in \"${ctx.sourceText.slice(node.start, node.end)}\"`,\n lineOf(node),\n 'E_DIM_MISMATCH',\n ))\n return\n }\n}\n\n/**\n * 在折叠之前记录一条参数槽(ArgSource)。\n *\n * - start/end 相对 extractMetadata 的入参 code(减 codeOffset,含封装归一化);\n * - text = parseCode 原文切片(E_RANGE_STALE 用 `code.slice(start,end) === text` 断言);\n * - params/refs 用 collectExprIdentifiers 的 lenient 模式(未知标识符跳过,\n * 保证提取不抛新错——与 main parse 的 E_REFERENCE 例外保持解耦)。\n */\nfunction recordArgSource(node: ASTNode, ctx: ValueParseCtx, path: string): void {\n if (!node || typeof node !== 'object' || node.start == null || node.end == null || node.end < node.start) return\n const isExpr = isExpressionNode(node)\n const params = new Set<string>()\n const refs = new Set<string>()\n if (isExpr) {\n collectExprIdentifiers(node, ctx.symbols, lineOf(node), params, refs, {\n lenient: true,\n defaultNs: ctx.symbols.defaultNsName,\n })\n }\n ctx.argSources.push({\n stmtId: ctx.stmtId,\n path,\n text: ctx.sourceText.slice(node.start, node.end),\n start: node.start - ctx.codeOffset,\n end: node.end - ctx.codeOffset,\n params: [...params],\n refs: [...refs],\n isExpression: isExpr,\n })\n}\n\n/**\n * 裸全局标识符实参解析(单位常量 + S4 免 import 安全全局)。\n *\n * 分别收口 `parseValueExpr` 与 `parsePositionalArgs` 的 Identifier 分支:两者此前\n * 都把「不在 paramNames/declared 里」的裸标识符直接判为未声明变量(E_REFERENCE),\n * 于是连 `cad.box(MM, 1, 1)` 这种合法写法也被拒。\n *\n * 返回 undefined 表示「不是全局名字」,交由调用方按变量引用/报错处理。\n *\n * 单位常量(MM/INCH/DEGREE/…)走静态折叠(与 `10 * MM` 同一路径,得折叠字面量 +\n * computed 标记,源文本不回写,见 P7/D10.4);其余安全全局(Math/JSON/console/\n * Infinity/…)保留原文交给运行时求值(expr-ref),两个执行后端都能从 globalThis 解析。\n * @param name 标识符名(须已判定为全局名字)。\n * @param node 该标识符的 AST 节点(取源码区间做 expr-ref 文本)。\n * @param ctx 值解析上下文(符号表 / computed 累积 / 源文本)。\n * @returns 对应的 HostArg。\n */\nfunction parseGlobalIdentArg(name: string, node: ASTNode, ctx: ValueParseCtx): HostArg | undefined {\n if (!isSafeGlobalIdent(name)) return undefined\n if (SCRIPT_UNIT_NAMES.has(name)) {\n const r = tryFoldConstExpr(node, ctx.symbols)\n if (r.ok) {\n ctx.computed.value = true\n return r.value as HostArg\n }\n }\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [],\n params: [],\n } as unknown as HostArg\n}\n\nfunction parseValueExpr(node: ASTNode, ctx: ValueParseCtx, path: string | null): HostArg {\n if (!node) throw new ParseError('missing value expression', 1, 'E_VALUE')\n const line = lineOf(node)\n\n // P0-B:在折叠之前记录一条 ArgSource(path === null 忽略——参数行 RHS 由\n // recordArgSource 显式记录,不再双记)。\n if (path !== null) recordArgSource(node, ctx, path)\n\n // 折叠优先:Unary/Binary/Logical/Template/Conditional 可静态折叠(字面量 + 参数)\n if (\n node.type === 'UnaryExpression' ||\n node.type === 'BinaryExpression' ||\n node.type === 'LogicalExpression' ||\n node.type === 'TemplateLiteral' ||\n node.type === 'ConditionalExpression'\n ) {\n const r = tryFoldConstExpr(node, ctx.symbols)\n if (r.ok) {\n // F1-E1:仅折叠表达式引用参数才标 computed;纯字面量(负字面量)不标\n // P7/D10.4: unit constants (usedUnit) also mark computed — the folded\n // base value (e.g. 254 for `10 * INCH`) must NOT be written back to\n // source code (would lose the unit and change geometry in non-base contexts).\n if (r.usedParam || r.usedUnit) ctx.computed.value = true\n return r.value as unknown as HostArg\n }\n // 折叠失败且 ∈ 白名单 → expr-ref(运行时求值)\n if (isExprWhitelist(node)) {\n const params = new Set<string>()\n const refs = new Set<string>()\n collectExprIdentifiers(node, ctx.symbols, line, params, refs)\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [...refs],\n params: [...params],\n } as unknown as HostArg\n }\n throw new ParseError(\n `cannot statically evaluate ${node.type} in args (must reference declared params or literals)`,\n line,\n 'E_VALUE',\n )\n }\n\n switch (node.type) {\n case 'Literal':\n return node.value as HostArg\n\n case 'Identifier': {\n const name = node.name\n if (ctx.symbols.paramNames.has(name)) {\n return { kind: 'param-ref', name } as unknown as HostArg\n }\n if (ctx.symbols.declared.has(name)) {\n return { kind: 'var-ref', name } as unknown as HostArg\n }\n const globalArg = parseGlobalIdentArg(name, node, ctx)\n if (globalArg !== undefined) return globalArg\n if (ctx.looseVars) {\n ctx.symbols.declared.add(name)\n return { kind: 'var-ref', name } as unknown as HostArg\n }\n throw throwReferenceError(name, line, 'in args value (not a declared param or variable)')\n }\n\n case 'ArrayExpression': {\n const out: HostArg[] = []\n for (let i = 0; i < node.elements.length; i++) {\n const el = node.elements[i]\n if (el === null || el === undefined) {\n throw new ParseError('array holes are not supported in args', line, 'E_VALUE')\n }\n const childPath = path === null ? null : `${path}[${i}]`\n if (el.type === 'SpreadElement') {\n if (childPath !== null) recordArgSource(el.argument, ctx, childPath)\n const r = tryFoldConstExpr(el.argument, ctx.symbols)\n if (!r.ok || !Array.isArray(r.value)) {\n throw new ParseError(\n 'cannot statically evaluate spread in args (expected an array param or literal)',\n line,\n 'E_VALUE',\n )\n }\n ctx.computed.value = true\n out.push(...(r.value as HostArg[]))\n continue\n }\n out.push(parseValueExpr(el, ctx, childPath))\n }\n return out as unknown as HostArg\n }\n\n case 'ObjectExpression':\n return parseObjectValue(node, ctx, path)\n\n case 'CallExpression': {\n const callee = node.callee\n // <ns>.<fn>(...) → call-ref(只读查询)\n if (\n callee?.type === 'MemberExpression' &&\n callee.object?.type === 'Identifier' &&\n (ctx.symbols.nsBindings.has(callee.object.name) ||\n callee.object.name === ctx.symbols.defaultNsName) &&\n callee.property?.type === 'Identifier'\n ) {\n const nsName = callee.object.name\n const args = (node.arguments as ASTNode[]).map((a, i) =>\n parseValueExpr(a, ctx, path === null ? null : `${path}[${i}]`))\n const callRef: HostCallRef = {\n kind: 'call-ref',\n callee: callee.property.name,\n args,\n ...(nsName !== ctx.symbols.defaultNsName ? { namespace: nsName } : {}),\n }\n return callRef as unknown as HostArg\n }\n if (isExprWhitelist(node)) {\n const params = new Set<string>()\n const refs = new Set<string>()\n collectExprIdentifiers(node, ctx.symbols, line, params, refs)\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [...refs],\n params: [...params],\n } as unknown as HostArg\n }\n throw new ParseError(\n 'nested calls in args must be <ns>.<ident>(...) or a whitelisted expression',\n line,\n 'E_VALUE',\n )\n }\n\n case 'MemberExpression': {\n if (isExprWhitelist(node)) {\n const params = new Set<string>()\n const refs = new Set<string>()\n collectExprIdentifiers(node, ctx.symbols, line, params, refs)\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [...refs],\n params: [...params],\n } as unknown as HostArg\n }\n throw new ParseError('unsupported member expression in args: optional chaining is not allowed', line, 'E_VALUE')\n }\n\n default:\n throw new ParseError(`unsupported value expression: ${node.type}`, line, 'E_VALUE')\n }\n}\n\n/** 对象字面量参数解析 + 参数槽记录(属性值路径 = `<base>.<key>`;shorthand 以来源名为 text 记一条)。 */\nfunction parseObjectValue(node: ASTNode, ctx: ValueParseCtx, path: string | null): HostArg {\n const line = lineOf(node)\n const obj: Record<string, HostArg> = {}\n for (const prop of node.properties) {\n if (prop.type === 'SpreadElement') {\n const r = tryFoldConstExpr(prop.argument, ctx.symbols)\n if (!r.ok || typeof r.value !== 'object' || r.value === null || Array.isArray(r.value)) {\n throw new ParseError('cannot statically evaluate object spread in args', line, 'E_VALUE')\n }\n ctx.computed.value = true\n Object.assign(obj, r.value as Record<string, unknown>)\n continue\n }\n const key = prop.key?.type === 'Identifier' ? prop.key.name\n : prop.key?.type === 'Literal' ? String(prop.key.value)\n : null\n if (key === null) throw new ParseError('invalid object key', line, 'E_VALUE')\n if (prop.shorthand) {\n // shorthand { size } → { size: param-ref };已声明变量 shorthand 现状报 E_REFERENCE\n const name = key\n let slotParams: string[] = []\n let slotRefs: string[] = []\n if (ctx.symbols.paramNames.has(name)) {\n obj[key] = { kind: 'param-ref', name } as unknown as HostArg\n slotParams = [name]\n } else if (isSafeGlobalIdent(name)) {\n // 与 longhand `{ q: Math }`(parseValueExpr → parseGlobalIdentArg)一致:免 import 安全全局放行,\n // 不再误报 E_REFERENCE / E_GLOBAL_NOT_ADMITTED(A3:同值 Math 在 longhand 已放行)。\n obj[key] = parseGlobalIdentArg(name, prop.key, ctx) as unknown as HostArg\n } else if (ctx.looseVars) {\n ctx.symbols.declared.add(name)\n obj[key] = { kind: 'var-ref', name } as unknown as HostArg\n slotRefs = [name]\n } else {\n throw throwReferenceError(name, line, 'in shorthand object key (not a declared param)')\n }\n // P0-B:shorthand 槽(以属性名 == 变量名作 text,path = <base>.<key>,isExpression=false)\n if (path !== null) {\n ctx.argSources.push({\n stmtId: ctx.stmtId,\n path: `${path}.${key}`,\n text: ctx.sourceText.slice(prop.start, prop.end),\n start: prop.start - ctx.codeOffset,\n end: prop.end - ctx.codeOffset,\n params: slotParams,\n refs: slotRefs,\n isExpression: false,\n })\n }\n } else {\n obj[key] = parseValueExpr(prop.value, ctx, path === null ? null : `${path}.${key}`)\n }\n }\n return obj as unknown as HostArg\n}\n\n/** 位置实参解析(与现状 parsePositionalArgs 同构);P0-B 附带参数槽记录(pathBase 缺省 'positional')。 */\nfunction parsePositionalArgs(\n argNodes: ASTNode[],\n ctx: ValueParseCtx,\n line: number,\n pathBase = 'positional',\n): HostArg[] {\n const out: HostArg[] = []\n for (let i = 0; i < argNodes.length; i++) {\n const argNode = argNodes[i]\n const isLast = i === argNodes.length - 1\n const isTrailingOptions = isLast && argNode?.type === 'ObjectExpression'\n if (isTrailingOptions) {\n // 尾随选项对象:只按 'args.<key>' 记录属性值,不把整对象再记一个 positional 槽\n out.push(parseObjectValue(argNode, ctx, 'args'))\n continue\n }\n const slotPath = `${pathBase}[${i}]`\n if (argNode.type === 'Identifier') {\n recordArgSource(argNode, ctx, slotPath)\n const name = argNode.name\n if (ctx.symbols.declared.has(name)) {\n out.push({ kind: 'var-ref', name } as unknown as HostArg)\n continue\n }\n const globalArg = parseGlobalIdentArg(name, argNode, ctx)\n if (globalArg !== undefined) {\n out.push(globalArg)\n continue\n }\n if (ctx.looseVars) {\n ctx.symbols.declared.add(name)\n out.push({ kind: 'var-ref', name } as unknown as HostArg)\n continue\n }\n throw throwReferenceError(name, lineOf(argNode), 'in inputs')\n }\n if (argNode.type === 'SpreadElement') {\n recordArgSource(argNode.argument, ctx, slotPath)\n const r = tryFoldConstExpr(argNode.argument, ctx.symbols)\n if (!r.ok || !Array.isArray(r.value)) {\n throw new ParseError(\n 'cannot statically evaluate spread in arguments (must reference an array param or literal)',\n line,\n 'E_VALUE',\n )\n }\n ctx.computed.value = true\n out.push(...(r.value as HostArg[]))\n continue\n }\n out.push(parseValueExpr(argNode, ctx, slotPath))\n }\n return out\n}\n\n// ── 行摘要组装 ──\n\n/** 位置实参末位是否为纯数据对象(非引用形态)→ args 投影真源。\n * 与现状 splitPositionalOptions 同构:引用形态 = var-ref/param-ref/call-ref/expr-ref\n * (kind 值 ∈ HOST_REF_KINDS 且完整匹配变体形状);字面量对象的 kind 字段是普通数据。 */\nfunction isPlainDataObject(v: unknown): v is Record<string, HostArg> {\n return (\n v !== null &&\n typeof v === 'object' &&\n !Array.isArray(v) &&\n !isHostVarRef(v as HostRef) &&\n !isHostParamRef(v as HostRef) &&\n !isHostCallRef(v as HostRef) &&\n !isHostExprRef(v as HostRef)\n )\n}\n\ninterface LineSummarySpec {\n callee: string\n line: number\n ctx: ValueParseCtx\n /** 位置实参槽(含尾随对象;positional 与 HostArg 面同构) */\n positional: HostArg[]\n namespace?: string\n local?: boolean\n receiver?: string\n outputs: string[]\n outputKeys?: string[]\n hasAssignment: boolean\n}\n\n/**\n * 从单条调用组装 StatementSummary:\n * - positional = 全量位置实参(末位纯对象保留,与现状一致)\n * - args = 末位纯对象的投影(keep/keepHidden 键原样保留——compile 期才剥离)\n */\nfunction buildLineSummary(spec: LineSummarySpec): StatementSummary {\n const last = spec.positional[spec.positional.length - 1]\n const args: Record<string, HostArg> =\n isPlainDataObject(last) ? { ...(last as Record<string, HostArg>) } : {}\n\n const refs = new Set<string>()\n for (const a of spec.positional) collectRefsFromHostArg(a, refs)\n if (spec.receiver !== undefined) refs.add(spec.receiver)\n\n const summary: StatementSummary = {\n id: asStmtId(`s${spec.line}`),\n callee: spec.callee,\n ...(spec.local\n ? { local: true }\n : spec.namespace !== undefined\n ? {\n namespace: spec.namespace,\n ...(spec.ctx.symbols.nsBindings.get(spec.namespace) !== undefined\n ? { packageName: spec.ctx.symbols.nsBindings.get(spec.namespace) }\n : {}),\n }\n : {}),\n ...(spec.receiver !== undefined ? { receiver: asPartName(spec.receiver) } : {}),\n positional: spec.positional,\n args,\n outputs: spec.outputs.map((o) => asPartName(o)),\n ...(spec.outputKeys !== undefined ? { outputKeys: spec.outputKeys } : {}),\n hasAssignment: spec.hasAssignment,\n hasComputedArgs: spec.ctx.computed.value,\n line: spec.line,\n }\n if (refs.size > 0) summary.refs = [...refs]\n else summary.refs = []\n return summary\n}\n\nfunction collectRefsFromHostArg(value: HostArg, out: Set<string>): void {\n if (value === null || value === undefined) return\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return\n const kind = (value as { kind?: string }).kind\n if (kind === 'var-ref') {\n out.add((value as { name: string }).name)\n return\n }\n if (kind === 'param-ref') {\n out.add((value as { name: string }).name)\n return\n }\n if (kind === 'call-ref') {\n for (const a of (value as HostCallRef).args) collectRefsFromHostArg(a, out)\n return\n }\n if (kind === 'expr-ref') {\n const e = value as { params: string[]; refs: string[] }\n for (const p of e.params) out.add(p)\n for (const r of e.refs) out.add(r)\n return\n }\n if (Array.isArray(value)) {\n for (const v of value) collectRefsFromHostArg(v as HostArg, out)\n return\n }\n if (typeof value === 'object') {\n for (const v of Object.values(value as Record<string, HostArg>)) collectRefsFromHostArg(v, out)\n }\n}\n\n// ── return / meta 解析 ──\n\nfunction parseReturnStatement(\n node: ASTNode,\n ctx: ValueParseCtx,\n): { meta?: ScriptMetaIR; terminalShapes?: TerminalShape[] } {\n const line = lineOf(node)\n const arg = node.argument\n if (!arg) return {}\n\n const resolveVar = (idNode: ASTNode): PartName => {\n if (idNode?.type !== 'Identifier') throw new ParseError('unknown variable in return', line)\n const name = idNode.name\n if (!ctx.symbols.declared.has(name) && !ctx.symbols.paramNames.has(name)) {\n throw new ParseError(`unknown variable \"${name}\" in return`, line)\n }\n return asPartName(name)\n }\n\n const parseOne = (objNode: ASTNode): { id: PartName | null; meta?: ScriptMetaIR } => {\n let id: PartName | null = null\n const meta: ScriptMetaIR = {}\n for (const prop of objNode.properties) {\n const key = prop.key?.type === 'Identifier' ? prop.key.name\n : prop.key?.type === 'Literal' ? String(prop.key.value)\n : null\n if (!key) continue\n if (key === 'shape') {\n if (prop.value?.type === 'Identifier') id = resolveVar(prop.value)\n } else if (key === 'name') {\n if (prop.value?.type === 'Literal') meta.name = prop.value.value as string\n }\n // 其余 key(含旧死特性 color/metalness/roughness,2026-10-05 v2 已删除)\n // 静默忽略:return 对象不是 op 参数,未知 key 不做参数校验(宽容语义)。\n }\n return { id, meta: Object.keys(meta).length > 0 ? meta : undefined }\n }\n\n if (arg.type === 'Identifier') return { terminalShapes: [{ id: resolveVar(arg) }] }\n if (arg.type === 'ObjectExpression') {\n const r = parseOne(arg)\n return { meta: r.meta, terminalShapes: r.id !== null ? [{ id: r.id, meta: r.meta }] : undefined }\n }\n if (arg.type === 'ArrayExpression') {\n const terminalShapes: TerminalShape[] = []\n for (const elem of arg.elements) {\n if (elem?.type !== 'ObjectExpression') {\n throw new ParseError('return array elements must be objects { shape, ... }', line)\n }\n const r = parseOne(elem)\n if (r.id) terminalShapes.push({ id: r.id, meta: r.meta })\n }\n if (terminalShapes.length === 0) throw new ParseError('return array must have at least one element', line)\n return { terminalShapes }\n }\n throw new ParseError(`unsupported return expression: ${arg.type}`, line)\n}\n\n// ── keep 指令提取(行级 keep/keepHidden → metadata.keep) ──\n\nfunction extractKeepEntries(\n positional: HostArg[],\n line: number,\n symbols: SymbolTable,\n): void {\n const last = positional[positional.length - 1]\n if (!isPlainDataObject(last)) return\n const entries: Array<{ target: string; hidden?: boolean }> = []\n const keepArg = last.keep\n if (Array.isArray(keepArg)) {\n for (const entry of keepArg) {\n const parsed = parseKeepEntry(entry)\n if (parsed) entries.push(parsed)\n }\n }\n const statementDefault = last.keepHidden === true\n const normalized = entries.map((e): KeepEntry => {\n // e.hidden 为显式 hidden 值(undefined → 未指定);未指定时用语句级 keepHidden 兜底\n return { target: e.target, hidden: e.hidden ?? statementDefault }\n })\n if (normalized.length > 0) {\n const list = symbols.keep.get(line) ?? []\n list.push(...normalized)\n symbols.keep.set(line, list)\n }\n}\n\nfunction parseKeepEntry(entry: HostArg): { target: string; hidden?: boolean } | undefined {\n // 与现状 keep.ts parseKeepEntry 同构:字符串条目 / 裸 var-ref 条目不携带 hidden\n // (语句级 keepHidden 兜底);{ shape, hidden } 显式条目携带 hidden(false 也显式)。\n if (typeof entry === 'string') return { target: entry }\n if (entry !== null && typeof entry === 'object' && !Array.isArray(entry)) {\n const obj = entry as Record<string, unknown>\n const shape = obj.shape\n if (typeof shape === 'string') return { target: shape, hidden: obj.hidden === true }\n if (shape !== null && typeof shape === 'object') {\n const s = shape as { kind?: string; name?: string }\n if (s.kind === 'var-ref' && typeof s.name === 'string') {\n return { target: s.name, hidden: obj.hidden === true }\n }\n }\n const self = entry as { kind?: string; name?: string }\n // 顶层 var-ref 条目(keep: [part0] → part0 是 var-ref 形态):不携带 hidden\n if (self.kind === 'var-ref' && typeof self.name === 'string') {\n return { target: self.name }\n }\n }\n return undefined\n}\n\n// ── 主入口 ──\n\n/** extractMetadata 的选项(全部可选;影响宽松引用与缺省命名空间解析)。 */\nexport interface ExtractMetadataOptions {\n /** 缺省命名空间绑定名(默认 'cad';registerLib default 绑定改名时传入) */\n defaultNs?: string\n /** 宽松变量(append:未知引用按外部变量透传,由调用方对 ctx 校验) */\n looseVars?: boolean\n /** 宽松本机函数调用(codeToArgs 单行提取:裸 callee 不在函数集也放行) */\n looseLocalCalls?: boolean\n /** 顶层 import 绑定名(单行提取时宿主从脚本 imports 提供) */\n namespaces?: string[]\n /** 安全策略档位(缺省 'strict';A1 接入点:extractMetadata 第一行过 Scanner) */\n security?: SecurityPolicy\n /** S7 命名空间保护名(缺省 = namespaces;append 场景可指定更小集合仅命名空间名) */\n nsNames?: string[]\n /**\n * P4/P6 (unit-system D8): callee → 量纲声明的映射,供 dimension pass 做静态\n * 量纲校验。调用方从 op 注册表取出透传(lang 不碰 op 注册表铁律)。\n */\n opDims?: OpDimMap\n}\n\n/**\n * P4/P6 (unit-system D8): 一个 op 的脚本面量纲声明,供静态 dimension 检查使用。\n * 由调用方(CadRuntime/CLI/codeToArgs)从 op 注册表取出透传,`lang/` 本身不碰\n * op 注册表(铁律:lang 不得依赖 op 注册表)。\n */\nexport interface OpDimDecl {\n /** 参数名 → 量纲;缺省键视为无量纲。 */\n paramDims?: Record<string, DimName>\n /** 函数调用结果的量纲。 */\n retDim?: DimName\n /** D11 slot-map(positional→object 装箱表);位置形态校验用。 */\n slotMap?: { keys: string[]; vec3Keys?: string[]; shapeArity?: number }\n}\n\n/** P4/P6: callee 名 → 量纲声明(供 extractMetadata 的 dimension pass 消费)。 */\nexport type OpDimMap = Record<string, OpDimDecl>\n\n/**\n * 从源码文本提取 UI 通道元数据(UiMetadata)。\n *\n * 兼容面:analyzeCode/codeToArgs 实现建立在本函数之上(statement-summary.ts /\n * code-to-args.ts),lines 面与 MetadataExtractor 投影逐字相等(A-16 对拍,\n * id 兼容 's'+lineNo 规则:其余字段逐字相等)。不参与执行、不生成可执行代码。\n *\n * 行号语义与 MetadataExtractor 完全一致:\n * - 容器代码(含 export default)→ 取容器箭头函数体,行号 = 原文行号;\n * - 扁平代码 → 按 MetadataExtractor 同款封装(import 段提升到 export default 之外,\n * `export default async (ns) => {\\n...` 包裹),行号扣封装偏移后 = analyzeCode\n * 报告的 line。\n *\n * @param code - the .fai.js source text.\n * @param options - optional extraction options.\n * @returns the full UI metadata surface.\n * @throws ParseError — 含行号(analyzeCode 抛错契约不变)。\n */\nexport function extractMetadata(code: string, options?: ExtractMetadataOptions): UiMetadata {\n // A1:安全门禁前置——在 acornParse 之前对原始 code 扫描,行号与用户编辑器一致。\n // security 与 looseVars 正交:安全规则不受 looseVars 影响。\n assertSecure(code, {\n policy: options?.security ?? 'strict',\n knownNames: [options?.defaultNs ?? 'cad', ...(options?.namespaces ?? [])],\n ...(options?.nsNames ? { nsNames: options.nsNames } : {}),\n defaultNs: options?.defaultNs,\n })\n\n const defaultNsName = options?.defaultNs ?? 'cad'\n\n // 符号表(每行提取共享:参数名/值、已声明变量、命名空间绑定、函数集、keep 表)\n const symbols: SymbolTable = {\n paramNames: new Set<string>(),\n paramValues: new Map<string, unknown>(),\n declared: new Set<string>(),\n nsBindings: new Map<string, string>(),\n localFnParams: new Map<string, string[]>(),\n defaultNsName,\n keep: new Map<number, KeepEntry[]>(),\n }\n\n // ── 0. 顶层 import 预扫描(与 MetadataExtractor 同构;容器/扁平都允许头部 import) ──\n let importBlock: { start: number; end: number } | null = null\n {\n const seen: ASTNode[] = []\n try {\n const prescan = acornParse(code, { ecmaVersion: 'latest', sourceType: 'module', locations: true, ranges: true })\n for (const n of prescan.body) {\n if (n.type === 'ImportDeclaration') seen.push(n)\n }\n } catch {\n // 原始文本非合法 module(如含 return)→ 交给主解析报错\n }\n if (seen.length > 0) {\n const first = seen[0]\n if (!onlyWhitespaceAndComments(code.slice(0, first.start))) {\n throw new ParseError('import statements must appear as a contiguous block at the top of the file', lineOf(first) ?? 1, 'E_IMPORT')\n }\n for (let i = 1; i < seen.length; i++) {\n const gap = code.slice(seen[i - 1].end, seen[i].start)\n if (!onlyWhitespaceAndComments(gap)) {\n throw new ParseError('import statements must be contiguous (no statements between imports)', lineOf(seen[i]) ?? 1, 'E_IMPORT')\n }\n }\n importBlock = { start: seen[0].start, end: seen[seen.length - 1].end }\n }\n }\n\n // ── 0.5 扁平代码封装(与 MetadataExtractor 逐字同款;容器零封装) ──\n // lineOffset:封装头占用的行数(语句行号 = acorn loc 行号 − lineOffset)。\n // codeOffset:封装头字符长度(函数体原文区间坐标换算;容器格式为 0)。\n let parseCode = code\n let lineOffset = code.includes('export default') ? 0 : 1\n let codeOffset = 0\n if (lineOffset) {\n if (importBlock) {\n const prefix = code.slice(0, importBlock.start)\n const importText = code.slice(importBlock.start, importBlock.end)\n const rest = code.slice(importBlock.end)\n parseCode = `${prefix}${importText}\\nexport default async (${defaultNsName}) => {\\n${rest}\\n}`\n lineOffset = countLines(prefix + importText) + 1\n // 字符偏移 = 注入的 '\\n'(importText 后)+ 封装头长度。原实现 29+len 少算 1\n //(未计入 importText 与封装间的换行),导致 import 场景的区间坐标错位——\n // bodyRange/ArgSource.start/end 等归一化要落到原 code 坐标。\n codeOffset = 1 + `export default async (${defaultNsName}) => {\\n`.length\n } else {\n parseCode = `export default async (${defaultNsName}) => {\\n${code}\\n}`\n lineOffset = 1\n codeOffset = `export default async (${defaultNsName}) => {\\n`.length\n }\n }\n\n // ── 1. 主解析(acorn module) ──\n let ast: ASTNode\n try {\n ast = acornParse(parseCode, {\n ecmaVersion: 'latest',\n sourceType: 'module',\n locations: true,\n ranges: true,\n })\n } catch (err) {\n const syntaxErr = err as { message?: string; loc?: { line: number } }\n const loc = syntaxErr.loc?.line ?? 1\n throw new ParseError(`SyntaxError: ${syntaxErr.message ?? String(err)}`, loc, 'E_SYNTAX')\n }\n\n // 顶层 import(模块级,封装外)→ ImportEntry 表\n const imports: ImportEntry[] = []\n for (const n of ast.body) {\n if (n.type !== 'ImportDeclaration') continue\n const imp = classifyImport(n)\n imports.push(imp)\n if (imp.kind === 'namespace' && imp.localName) {\n symbols.nsBindings.set(imp.localName, imp.packageName ?? imp.localName)\n }\n if (imp.kind === 'named') {\n for (const b of imp.bindings) symbols.declared.add(b)\n }\n }\n // 宿主显式提供的命名空间绑定(codeToArgs 单行提取场景)\n for (const n of options?.namespaces ?? []) symbols.nsBindings.set(n, n)\n\n // 顶层 export default → 容器箭头函数体(封装文本下必存在)\n const exportDecl = ast.body.find((n: ASTNode) => n.type === 'ExportDefaultDeclaration')\n if (!exportDecl) {\n throw new ParseError('missing `export default`', 1)\n }\n const arrowFn = exportDecl.declaration\n if (\n arrowFn?.type !== 'ArrowFunctionExpression' ||\n !arrowFn.async ||\n arrowFn.params.length !== 1 ||\n arrowFn.params[0]?.type !== 'Identifier' ||\n arrowFn.params[0].name !== defaultNsName\n ) {\n throw new ParseError(`expected \\`export default async (${defaultNsName}) => { ... }\\``, lineOf(exportDecl))\n }\n const body = arrowFn.body\n if (body?.type !== 'BlockStatement') {\n throw new ParseError('expected arrow function body to be a block statement { ... }', lineOf(arrowFn))\n }\n const bodyNodes = body.body\n\n // 顶层函数预扫描(本机函数集)\n for (const n of bodyNodes) {\n if (n.type === 'FunctionDeclaration' && n.id?.type === 'Identifier') {\n const fparams: string[] = []\n for (const p of n.params ?? []) {\n if (p?.type === 'Identifier') fparams.push(p.name)\n else throw new ParseError('function params must be plain identifiers', lineOf(n), 'E_STATEMENT')\n }\n symbols.localFnParams.set(n.id.name, fparams)\n symbols.declared.add(n.id.name)\n }\n }\n\n const lines: StatementSummary[] = []\n const params: ParamEntry[] = []\n const functions: FunctionEntry[] = []\n const blocks: BlockEntry[] = []\n let meta: ScriptMetaIR | undefined\n let terminalShapes: TerminalShape[] | undefined\n // P0-B:参数槽记录累积(跨语句共享,语句顺序追加)\n const argSources: ArgSource[] = []\n // P6/D8: dimension 校验错误累积(跨语句共享)\n const allDimErrors: ParseError[] = []\n\n // ── 逐顶层语句分类 ──\n for (const stmtNode of bodyNodes) {\n const rawLine = lineOf(stmtNode)\n const line = lineOffset ? rawLine - lineOffset : rawLine\n const vctx: ValueParseCtx = {\n symbols,\n looseVars: options?.looseVars === true,\n looseLocalCalls: options?.looseLocalCalls === true,\n sourceText: parseCode,\n computed: { value: false },\n stmtId: asStmtId(`s${line}`),\n codeOffset,\n argSources,\n opDims: options?.opDims,\n dimErrors: allDimErrors,\n }\n\n switch (stmtNode.type) {\n case 'ImportDeclaration':\n break // 已在顶部收集(封装文本下 import 不在此层)\n\n case 'FunctionDeclaration': {\n const name = stmtNode.id?.name\n const fparams: string[] = symbols.localFnParams.get(name) ?? []\n const bodyStart = stmtNode.body.start + 1 - codeOffset\n const bodyEnd = stmtNode.body.end - 1 - codeOffset\n const bodyText = parseCode.slice(stmtNode.body.start + 1, stmtNode.body.end - 1)\n functions.push({\n name,\n lineNo: line,\n params: fparams,\n bodyRange: { start: bodyStart, end: bodyEnd },\n body: bodyText,\n bodyHash: fnv1a32(bodyText),\n })\n break\n }\n\n case 'VariableDeclaration': {\n if (stmtNode.kind !== 'const' && stmtNode.kind !== 'let') {\n throw new ParseError(`only 'const' or 'let' declarations allowed, got '${stmtNode.kind}'`, line, 'E_STATEMENT')\n }\n for (const decl of stmtNode.declarations) {\n const dline = lineOf(decl)\n const dlineSrc = lineOffset ? dline - lineOffset : dline\n\n // 解构 op 行\n if (decl.id?.type === 'ObjectPattern') {\n const summary = classifyDestructure(decl, dlineSrc, vctx)\n lines.push(summary)\n for (const out of summary.outputs) symbols.declared.add(String(out))\n continue\n }\n if (decl.id?.type !== 'Identifier') {\n throw new ParseError('expected identifier on left side of const declaration', dlineSrc, 'E_STATEMENT')\n }\n const name = decl.id.name\n let init = decl.init\n if (init?.type === 'AwaitExpression') init = init.argument\n if (init?.type === 'ImportExpression') {\n throw new ParseError('dynamic import() is not allowed in faijs (no control flow)', dlineSrc, 'E_CONTROL_FLOW')\n }\n\n // op 行:const x = <ns>.<op>(...) / <localFn>(...)\n if (init?.type === 'CallExpression' && isOpCallCallee(init, vctx)) {\n const summary = classifyOpCall(init, dlineSrc, vctx, { output: name, hasAssignment: true })\n lines.push(summary)\n symbols.declared.add(name)\n continue\n }\n\n // P0-B:参数行 RHS 槽——整条 init 源码区间记一条\n //(path:单声明行 'rhs';一行多参声明行 'rhs:<name>' 区分)。\n if (init) {\n const rhsPath = stmtNode.declarations.length > 1 ? `rhs:${name}` : 'rhs'\n recordArgSource(init, vctx, rhsPath)\n }\n\n // 参数行:const x = <literal> / <纯字面量折叠>(值已知)\n const isLiteral =\n init?.type === 'Literal' ||\n init?.type === 'ArrayExpression' ||\n init?.type === 'ObjectExpression'\n const isNegLiteral =\n init?.type === 'UnaryExpression' && init.operator === '-' && init.argument?.type === 'Literal'\n if (isLiteral || isNegLiteral) {\n const value = isNegLiteral\n ? -init.argument.value as number\n : isLiteralValue(init)\n ? parseLiteralValue(init)\n : parseValueExpr(init, vctx, null) as unknown\n const literalLike = isNegLiteral || init.type === 'Literal'\n params.push({\n name,\n lineNo: dlineSrc,\n value,\n type: typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'bool' : 'vec3',\n computed: !literalLike,\n })\n symbols.paramNames.add(name)\n symbols.declared.add(name)\n if (literalLike) symbols.paramValues.set(name, value)\n continue\n }\n\n // 其余 const 形态:computed 参数(派生常量 / 引用表达式)——A-11 语法自由\n if (init) {\n params.push({ name, lineNo: dlineSrc, value: undefined, type: 'vec3', computed: true })\n symbols.declared.add(name)\n continue\n }\n throw new ParseError(`unsupported const declaration: init type = ${init?.type ?? 'null'}`, line, 'E_STATEMENT')\n }\n break\n }\n\n case 'ExpressionStatement': {\n classifyExpression(stmtNode.expression, line, vctx, lines)\n break\n }\n\n case 'ReturnStatement': {\n const r = parseReturnStatement(stmtNode, vctx)\n meta = r.meta\n terminalShapes = r.terminalShapes\n break\n }\n\n default: {\n // 控制流/块 → 只读块节点(R8)\n if (CONTROL_FLOW_TYPES.has(stmtNode.type)) {\n blocks.push({\n lineNo: line,\n kind: blockKind(stmtNode.type),\n astKind: stmtNode.type,\n source: parseCode.slice(stmtNode.start, stmtNode.end),\n range: { start: stmtNode.start - codeOffset, end: stmtNode.end - codeOffset },\n })\n break\n }\n if (stmtNode.type === 'ClassDeclaration') {\n throw new ParseError('class declarations are not allowed in faijs', line, 'E_STATEMENT')\n }\n if (stmtNode.type === 'NewExpression') {\n throw new ParseError('\"new\" expressions are not allowed in faijs (new Function is a safety red line)', line, 'E_STATEMENT')\n }\n if (stmtNode.type === 'WithStatement') {\n throw new ParseError('\"with\" statements are not allowed in faijs (strict mode)', line, 'E_CONTROL_FLOW')\n }\n // 其余未知顶层语句 → 只读块\n blocks.push({\n lineNo: line,\n kind: 'other',\n astKind: stmtNode.type,\n source: parseCode.slice(stmtNode.start, stmtNode.end),\n range: { start: stmtNode.start - codeOffset, end: stmtNode.end - codeOffset },\n })\n break\n }\n }\n }\n\n // P0-B:名称集合 = 参数 ∪ 已声明变量 ∪ 命名空间绑定 ∪ 本地函数名 ∪ 单位常量(字典序去重)。\n // 宿主把「参数表达式」中的未知标识符当作参数名(期望名)处理时用它做联想。\n // P6/D7:单位常量名(MM, INCH, DEGREE, …)加入 knownNames,使表达式实时校验通过。\n // 2026-10-06:其余 S4 安全全局(Math / JSON / console / …)不入此表——引用合法性由\n // collectExprIdentifiers + isSafeGlobalIdent 判定,与 knownNames 无关(见 names 字段注释)。\n const names = [\n ...new Set([\n ...symbols.paramNames,\n ...symbols.declared,\n ...symbols.nsBindings.keys(),\n ...symbols.localFnParams.keys(),\n ...SCRIPT_UNIT_NAMES,\n ]),\n ].sort()\n\n // P6/D8: dimension 校验——如果有错误,抛出第一个(用 stage='dimension' 包装)\n if (allDimErrors.length > 0) {\n throw allDimErrors[0]\n }\n\n return { lines, params, imports, functions, blocks, keep: symbols.keep, meta, terminalShapes, argSources, names }\n}\n\nfunction isLiteralValue(init: ASTNode): boolean {\n return init.type === 'Literal'\n}\n\n/** 字面量(非数组/对象)直接取值。 */\nfunction parseLiteralValue(init: ASTNode): unknown {\n return init.value\n}\n\nfunction countLines(text: string): number {\n if (text === '') return 0\n return (text.match(/\\n/g) ?? []).length + 1\n}\n\nfunction onlyWhitespaceAndComments(text: string): boolean {\n return text\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\/\\/[^\\n]*/g, '')\n .trim() === ''\n}\n\nfunction blockKind(type: string): BlockEntry['kind'] {\n switch (type) {\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n return 'loop'\n case 'IfStatement':\n return 'condition'\n case 'SwitchStatement':\n return 'switch'\n default:\n return 'other'\n }\n}\n\nfunction classifyImport(decl: ASTNode): ImportEntry {\n const line = lineOf(decl)\n const specifier = decl.source?.value\n if (typeof specifier !== 'string' || specifier === '') {\n throw new ParseError('import must have a string specifier', line, 'E_IMPORT')\n }\n const packageName = derivePackageName(specifier)\n const specs = decl.specifiers ?? []\n if (specs.length === 0) {\n throw new ParseError('side-effect imports are not supported (use import * as ns from \"pkg\")', line, 'E_IMPORT')\n }\n const first = specs[0]\n if (first.type === 'ImportNamespaceSpecifier') {\n return { lineNo: line, specifier, kind: 'namespace', bindings: [first.local?.name], localName: first.local?.name, packageName }\n }\n if (first.type === 'ImportDefaultSpecifier') {\n return { lineNo: line, specifier, kind: 'default', bindings: [first.local?.name], localName: first.local?.name, packageName }\n }\n const bindings: string[] = specs.map((s: ASTNode) => s.local?.name as string)\n return { lineNo: line, specifier, kind: 'named', bindings, localName: bindings[0], packageName }\n}\n\n/** init 是否为 op 调用 callee(<ns>.<op> / 裸本机函数)。 */\nfunction isOpCallCallee(init: ASTNode, ctx: ValueParseCtx): boolean {\n const callee = init.callee\n if (callee?.type === 'MemberExpression') {\n return (\n callee.object?.type === 'Identifier' &&\n callee.property?.type === 'Identifier' &&\n (ctx.symbols.nsBindings.has(callee.object.name) ||\n callee.object.name === ctx.symbols.defaultNsName ||\n ctx.symbols.declared.has(callee.object.name) ||\n ctx.looseVars)\n )\n }\n if (callee?.type === 'Identifier') {\n return ctx.symbols.localFnParams.has(callee.name) || ctx.looseLocalCalls\n }\n return false\n}\n\n/** 从调用表达式构造 op 行(output 单输出 / 副作用无输出)。 */\nfunction classifyOpCall(\n call: ASTNode,\n line: number,\n vctx: ValueParseCtx,\n opts: { output?: string; hasAssignment: boolean },\n): StatementSummary {\n const calleeNode = call.callee\n let callee: string\n let namespace: string | undefined\n let local: boolean | undefined\n let receiver: string | undefined\n\n if (calleeNode?.type === 'MemberExpression' && calleeNode.object?.type === 'Identifier' && calleeNode.property?.type === 'Identifier') {\n const objName = calleeNode.object.name\n if (vctx.symbols.nsBindings.has(objName) || objName === vctx.symbols.defaultNsName) {\n namespace = objName === vctx.symbols.defaultNsName ? undefined : objName\n callee = calleeNode.property.name\n } else {\n receiver = objName\n callee = calleeNode.property.name\n }\n } else if (calleeNode?.type === 'Identifier') {\n local = true\n callee = calleeNode.name\n } else {\n throw new ParseError('expected <ns>.<op>(...) or local function call', line, 'E_STATEMENT')\n }\n\n const positional = parsePositionalArgs(call.arguments ?? [], vctx, line)\n\n // P6/D8: dimension pass — check each argument against declared paramDims\n if (vctx.opDims && call.arguments) {\n // Build the full callee key for opDims lookup: 'cad.box' for default ns,\n // 'otherNs.box' for non-default ns, or just 'box' for local fn.\n const dimKey = namespace !== undefined ? `${namespace}.${callee}` : `${vctx.symbols.defaultNsName}.${callee}`\n const localKey = local ? callee : dimKey\n checkOpCallDims(call, local ? localKey : dimKey, vctx)\n }\n\n const summary = buildLineSummary({\n callee,\n line,\n ctx: vctx,\n positional,\n namespace,\n local,\n receiver,\n outputs: opts.output !== undefined ? [opts.output] : [],\n hasAssignment: opts.hasAssignment,\n })\n extractKeepEntries(positional, line, vctx.symbols)\n attachAssemblySummary(summary)\n return summary\n}\n\n/**\n * P6/D8: Check dimension constraints on op call arguments.\n *\n * Handles both object-form (`cad.box({ width: 10 * MM })`) and positional-form\n * (`cad.box(10 * MM, 10 * MM, 10 * MM)`). For positional form, uses slotMap\n * to map positional args to parameter names. For vec3 params, checks each element.\n *\n * Errors are accumulated in `ctx.dimErrors` (does not throw).\n */\nfunction checkOpCallDims(call: ASTNode, calleeKey: string, ctx: ValueParseCtx): void {\n const decl = ctx.opDims?.[calleeKey]\n if (!decl || !decl.paramDims) return\n\n const args = call.arguments ?? []\n if (args.length === 0) return\n\n const slotMap = decl.slotMap\n const shapeArity = slotMap?.shapeArity ?? 0\n\n // ── Object form ──\n // Look for an ObjectExpression arg that contains keys matching paramDims.\n // It could be at position `shapeArity` (with slotMap) or at any position\n // (without slotMap — e.g. fai_extrude(shape, { length: 5 })).\n if (slotMap) {\n const firstNonShape = args[shapeArity]\n if (firstNonShape?.type === 'ObjectExpression') {\n const hasDimKeys = firstNonShape.properties.some(\n (p: ASTNode) => p?.type === 'Property' && p.key?.type === 'Identifier' && p.key.name in decl.paramDims!,\n )\n if (hasDimKeys) {\n for (const prop of firstNonShape.properties) {\n if (prop?.type !== 'Property') continue\n const keyNode = prop.key\n if (keyNode?.type !== 'Identifier') continue\n const paramName = keyNode.name\n const dim = decl.paramDims[paramName]\n if (!dim) continue\n\n checkDim(prop.value, dim, ctx)\n\n if (slotMap.vec3Keys?.includes(paramName) && prop.value?.type === 'ArrayExpression') {\n for (const el of prop.value.elements ?? []) {\n if (el) checkDim(el, dim, ctx)\n }\n }\n }\n return\n }\n }\n } else {\n // No slotMap — scan all args for ObjectExpression with dim keys\n for (const arg of args) {\n if (arg?.type !== 'ObjectExpression') continue\n const hasDimKeys = arg.properties.some(\n (p: ASTNode) => p?.type === 'Property' && p.key?.type === 'Identifier' && p.key.name in decl.paramDims!,\n )\n if (!hasDimKeys) continue\n for (const prop of arg.properties) {\n if (prop?.type !== 'Property') continue\n const keyNode = prop.key\n if (keyNode?.type !== 'Identifier') continue\n const paramName = keyNode.name\n const dim = decl.paramDims[paramName]\n if (!dim) continue\n\n checkDim(prop.value, dim, ctx)\n }\n return\n }\n }\n\n // ── Positional form ──\n if (!slotMap) return\n const keys = slotMap.keys\n const vec3Keys = new Set(slotMap.vec3Keys ?? [])\n let keyIdx = 0\n for (let i = shapeArity; i < args.length && keyIdx < keys.length; i++) {\n const arg = args[i]\n if (arg?.type === 'ObjectExpression') break // trailing options object\n\n const paramName = keys[keyIdx]\n const dim = decl.paramDims[paramName]\n keyIdx++\n\n if (!dim) continue\n\n if (vec3Keys.has(paramName) && arg?.type === 'ArrayExpression') {\n for (const el of arg.elements ?? []) {\n if (el) checkDim(el, dim, ctx)\n }\n } else if (arg) {\n checkDim(arg, dim, ctx)\n }\n }\n}\n\n/**\n * P2-f4:装配语句摘要附加(cad.assembly / asmN.do_assemble / asmN.solve)。\n *\n * - `cad.assembly`(缺省命名空间,namespace===undefined)→ isAssembly + assembly 摘要。\n * 摘要只含 {name?, memberCount, constraintTypes};约束全文不提取(宿主 args 通道\n * 保留,model-store.ts:973 继续从 structuralStmtArgs(stmt).constraints 取)。\n * - `asmN.do_assemble` / `asmN.solve`(receiver 调用)→ isAssembly(装配行为语句)。\n */\nfunction attachAssemblySummary(summary: StatementSummary): void {\n if (summary.callee === 'assembly' && summary.namespace === undefined) {\n const members = summary.args.members\n const constraints = summary.args.constraints\n if (!Array.isArray(members) || !Array.isArray(constraints)) return\n const constraintTypes: string[] = []\n for (const c of constraints) {\n if (c && typeof c === 'object' && typeof (c as { type?: unknown }).type === 'string') {\n constraintTypes.push((c as { type: string }).type)\n }\n }\n const name = summary.args.name\n summary.isAssembly = true\n summary.assembly = {\n ...(typeof name === 'string' ? { name } : {}),\n memberCount: members.length,\n constraintTypes,\n }\n return\n }\n if ((summary.callee === 'do_assemble' || summary.callee === 'solve') && summary.receiver !== undefined) {\n summary.isAssembly = true\n }\n}\n\n/** 从解构调用构造 op 行(const { k1: v1, k2 } = <ns>.<op>(...))。 */\nfunction classifyDestructure(decl: ASTNode, line: number, vctx: ValueParseCtx): StatementSummary {\n const props = decl.id.properties\n if (props.length === 0) {\n throw new ParseError('destructuring must have at least one property', line, 'E_STATEMENT')\n }\n const keys: string[] = []\n const valueNames: string[] = []\n for (const prop of props) {\n if (prop.type !== 'Property' || prop.key?.type !== 'Identifier') {\n throw new ParseError('destructuring properties must be identifiers', line, 'E_STATEMENT')\n }\n if (prop.value?.type !== 'Identifier') {\n throw new ParseError(`destructuring value for \"${prop.key.name}\" must be an identifier`, line, 'E_STATEMENT')\n }\n keys.push(prop.key.name)\n valueNames.push(prop.value.name)\n }\n let init = decl.init\n if (init?.type === 'AwaitExpression') init = init.argument\n if (init?.type !== 'CallExpression') {\n throw new ParseError(`expected <ns>.<op>(...) or local function call in destructuring, got ${init?.type ?? 'null'}`, line, 'E_STATEMENT')\n }\n\n const calleeNode = init.callee\n let callee: string\n let namespace: string | undefined\n let local: boolean | undefined\n let receiver: string | undefined\n if (calleeNode?.type === 'MemberExpression' && calleeNode.object?.type === 'Identifier' && calleeNode.property?.type === 'Identifier') {\n const objName = calleeNode.object.name\n if (vctx.symbols.nsBindings.has(objName) || objName === vctx.symbols.defaultNsName) {\n namespace = objName === vctx.symbols.defaultNsName ? undefined : objName\n callee = calleeNode.property.name\n } else {\n receiver = objName\n callee = calleeNode.property.name\n }\n } else if (calleeNode?.type === 'Identifier') {\n local = true\n callee = calleeNode.name\n } else {\n throw new ParseError('destructuring is only allowed for <ns>.<op>(...) or local function calls', line, 'E_STATEMENT')\n }\n\n const positional = parsePositionalArgs(init.arguments ?? [], vctx, line)\n const summary = buildLineSummary({\n callee,\n line,\n ctx: vctx,\n positional,\n namespace,\n local,\n receiver,\n outputs: valueNames,\n outputKeys: keys,\n hasAssignment: true,\n })\n extractKeepEntries(positional, line, vctx.symbols)\n return summary\n}\n\n/** ExpressionStatement 分类(重赋值 / 本机副作用调用 / 成员方法 / 命名空间裸调用)。 */\nfunction classifyExpression(\n expr: ASTNode,\n line: number,\n vctx: ValueParseCtx,\n lines: StatementSummary[],\n): void {\n if (expr?.type === 'ImportExpression') {\n throw new ParseError('dynamic import() is not allowed in faijs (no control flow)', line, 'E_CONTROL_FLOW')\n }\n if (expr?.type === 'CallExpression' && expr.callee?.type === 'Identifier' && expr.callee.name === 'eval') {\n throw new ParseError('eval is not allowed in faijs', line, 'E_STATEMENT')\n }\n if (expr?.type === 'NewExpression') {\n throw new ParseError('\"new\" expressions are not allowed in faijs (new Function is a safety red line)', line, 'E_STATEMENT')\n }\n\n // 裸重赋值 part0 = [await] cad.op(...)\n if (expr?.type === 'AssignmentExpression' && expr.operator === '=' && expr.left?.type === 'Identifier') {\n const varName = expr.left.name\n if (!vctx.symbols.declared.has(varName)) {\n if (vctx.looseVars) {\n vctx.symbols.declared.add(varName)\n } else {\n throw new ParseError(`unknown variable \"${varName}\" in re-assignment`, line, 'E_REFERENCE')\n }\n }\n let init = expr.right\n if (init?.type === 'AwaitExpression') init = init.argument\n if (init?.type === 'CallExpression' && isOpCallCallee(init, vctx)) {\n const summary = classifyOpCall(init, line, vctx, { output: varName, hasAssignment: true })\n lines.push(summary)\n return\n }\n throw new ParseError('re-assignment must be a cad.op() call', line, 'E_STATEMENT')\n }\n\n // 成员方法 / 命名空间裸调用(无赋值)\n if (expr?.type === 'CallExpression' && expr.callee?.type === 'MemberExpression' &&\n expr.callee.object?.type === 'Identifier' && expr.callee.property?.type === 'Identifier') {\n const objName = expr.callee.object.name\n const isNs = vctx.symbols.nsBindings.has(objName) || objName === vctx.symbols.defaultNsName\n const isReceiver = vctx.symbols.declared.has(objName)\n if (isNs || isReceiver || vctx.looseVars) {\n const summary = classifyOpCall(expr, line, vctx, { hasAssignment: false })\n lines.push(summary)\n return\n }\n throw new ParseError(`unknown variable \"${objName}\" in .${expr.callee.property.name}() call`, line, 'E_REFERENCE')\n }\n\n // 本机函数副作用调用 myFn(part0, {...})\n if (expr?.type === 'CallExpression' && expr.callee?.type === 'Identifier') {\n const fnName = expr.callee.name\n if (vctx.symbols.localFnParams.has(fnName) || vctx.looseLocalCalls) {\n const summary = classifyOpCall(expr, line, vctx, { hasAssignment: false })\n lines.push(summary)\n return\n }\n throw new ParseError(`function \"${fnName}\" does not exist in this script`, line, 'E_REFERENCE')\n }\n\n throw new ParseError(\n `bare expression statements not allowed; use 'const part0 = cad.op(...)' instead`,\n line,\n 'E_STATEMENT',\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"metadata-extractor.js","sourceRoot":"","sources":["../../src/lang/metadata-extractor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * metadata-extractor — 无 IR 元数据提取器(UI 通道语义源)\n *\n * 定位:从 .fai.js 源码(任意合法 JS)提取 **UI 通道需要的全部元数据**。\n * 输入 = 源码文本;输出 = UiMetadata。不生成可执行代码、不求值、不参与执行、\n * 不建执行中介 IR(已删除,只产宿主面类型)。\n *\n * lines 面 = StatementSummary[](与现状 analyzeCode 产出逐字相等,A-16 对拍\n * 锁定;唯一语义差异:id = `'s' + lineNo`,append 场景稳定)。行分类:\n * op 行 → lines;param 行 → params;import 行 → imports;function 行 →\n * functions;循环/条件/switch 块 → blocks(只读节点,不分析内部语义,R8)。\n *\n * 本文件不 import parser.ts/compile.ts(P6 删除 IR 后唯一存活解析侧)。\n */\n\nimport { parse as acornParse } from 'acorn'\nimport type { StatementSummary } from './statement-summary'\nimport type { ScriptMetaIR, TerminalShape } from './types'\nimport { asStmtId, asPartName, type PartName, type StmtId } from '../identity'\nimport type { HostArg, HostCallRef, HostRef } from './host-arg'\nimport { isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef } from './host-arg'\nimport { ParseError } from './parse-error'\nimport { fnv1a32 } from './fnv-hash'\nimport { assertSecure, isSafeGlobalIdent, type SecurityPolicy } from './security-scanner'\nimport type { DimName, DimDecl, DimSpec } from '../units'\nimport { SCRIPT_UNIT_NAMES, UNIT_DIM, UNIT_SCALE, SCRIPT_UNIT_TO_NAME } from '../units'\n\n// ── UiMetadata 类型(§4.1) ──\n\n/** 参数表条目(参数面板:const X = <字面量> → 名字/值/是否计算表达式) */\nexport interface ParamEntry {\n name: string\n lineNo: number\n /** RHS 是纯字面量时为其值;表达式/引用(computed=true)时 value 缺省 */\n value?: unknown\n type: 'number' | 'vec3' | 'bool' | 'enum'\n /** RHS 是表达式/参数引用 → 面板只读 */\n computed: boolean\n}\n\n/**\n * 单个参数槽的源码来源信息(UI 通道新增,非 IR)。\n *\n * Timeline 参数表达式编辑:\n * 每个参数槽携带自己的源码区间,编辑 = 精确替换该区间(`editArgSource`),\n * 不重印整行。path 对宿主是不透明标识符——宿主只能从本记录读取后原样回传。\n */\nexport interface ArgSource {\n /** 所属语句 id('s' + lineNo);参数行的 rhs 槽同样使用 's' + lineNo */\n stmtId: StmtId\n /** 槽位路径(见 plans 文档 §4.2.1 的路径命名表;对宿主不透明) */\n path: string\n /** 该槽的源码原文(字面量 → `40`;表达式 → `w * 2`;引用 → `w`) */\n text: string\n /** 字符区间 [start, end),相对 extractMetadata 的入参 code(含 codeOffset 归一化) */\n start: number\n end: number\n /** 依赖的参数名(命中 paramNames;表达式里的参数引用) */\n params: string[]\n /** 依赖的其它变量名(命中 declared,含 op 产出 / 派生常量) */\n refs: string[]\n /** 非平凡表达式(非字面量,负字面量视为字面量)→ UI 显示 fx 徽标 */\n isExpression: boolean\n}\n\n/** import 表条目(相对 specifier → moduleKey,裸 specifier → libLoader) */\nexport interface ImportEntry {\n lineNo: number\n specifier: string\n kind: 'named' | 'namespace' | 'default'\n bindings: string[]\n localName?: string\n packageName?: string\n moduleKey?: string\n}\n\n/** 函数表条目(本机函数) */\nexport interface FunctionEntry {\n name: string\n lineNo: number\n params: string[]\n /** 函数体原文区间(只读显示用;坐标相对原始 code 文本) */\n bodyRange: { start: number; end: number }\n /** 函数体原文(花括号内) */\n body: string\n bodyHash: string\n}\n\n/** 块结构条目(只读节点,R8) */\nexport interface BlockEntry {\n lineNo: number\n kind: 'loop' | 'condition' | 'switch' | 'other'\n astKind: string\n /** 块源码原文(含闭合括号的整段) */\n source: string\n range: { start: number; end: number }\n}\n\n/** keep 指令条目(行级,存活判定静态输入;hidden=true 为 keepHidden) */\nexport interface KeepEntry {\n target: string\n hidden: boolean\n}\n\n/** 元数据提取器输出:UI 通道的完整元数据面(§4.1)。 */\nexport interface UiMetadata {\n lines: StatementSummary[]\n params: ParamEntry[]\n imports: ImportEntry[]\n functions: FunctionEntry[]\n blocks: BlockEntry[]\n keep: Map<number, KeepEntry[]>\n meta?: ScriptMetaIR\n terminalShapes?: TerminalShape[]\n /**\n * 全语句参数槽的源码来源(按语句顺序;参数行的 RHS 槽 path 以 'rhs' 开头)。\n * 新增字段:P0-B(见 plans/2026-09-08-timeline-param-expression-editing.md)。\n */\n argSources: ArgSource[]\n /**\n * 本脚本内可被表达式引用的名字(词典序去重):\n * paramNames ∪ declared ∪ nsBindings ∪ localFnParams ∪ 单位常量。\n * `validateExpression` / `editArgSource` 用它做 E_REFERENCE 判定。\n *\n * 注意:S4 免 import 安全全局(Math / JSON / Number / console / Infinity / …)**不**入此表——\n * 它们不属于脚本作用域,`collectExprIdentifiers` 已借 `isSafeGlobalIdent` 无条件放行;\n * 列进来反而会让宿主把它们当成脚本变量(联想/重命名都会误伤)。\n */\n names: string[]\n /** P6/D8+: dimension 校验警告(dimCheck='warn' 的 op;不阻断执行)。 */\n dimWarnings?: ParseError[]\n}\n\n// ── AST 辅助 ──\n\ntype ASTNode = any\n\nconst CONTROL_FLOW_TYPES = new Set([\n 'IfStatement', 'ForStatement', 'ForInStatement', 'ForOfStatement',\n 'WhileStatement', 'DoWhileStatement', 'SwitchStatement', 'TryStatement',\n 'ThrowStatement', 'BreakStatement', 'ContinueStatement', 'LabeledStatement',\n 'WithStatement', 'BlockStatement',\n])\n\nfunction lineOf(node: ASTNode): number {\n return node?.loc?.start?.line ?? 1\n}\n\nfunction derivePackageName(specifier: string): string {\n if (specifier.startsWith('@')) {\n const parts = specifier.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : specifier\n }\n return specifier.split('/')[0]\n}\n\n// ── 提取器符号表 ──\n\n/**\n * 提取器符号表:声明过的名字与绑定关系(参数、变量、命名空间、函数形参、keep 指令),\n * 供解析过程中判定标识符归属并做常量折叠。\n */\nexport interface SymbolTable {\n /** 参数名(const X = <literal>) */\n paramNames: Set<string>\n /** 参数名 → 字面量值(折叠依据) */\n paramValues: Map<string, unknown>\n /** 已声明变量名(参数 + op outputs + 函数名;含宽松透传名) */\n declared: Set<string>\n /** 命名空间绑定名 → packageName(import * as ns) */\n nsBindings: Map<string, string>\n /** 本机函数名 → 形参 */\n localFnParams: Map<string, string[]>\n /** 缺省命名空间绑定名('cad') */\n defaultNsName: string\n /** keep 指令表(lineNo → 调用点条目;行级存活判定静态输入) */\n keep: Map<number, KeepEntry[]>\n}\n\n// ── 常量折叠(与现状 parser.tryFoldConstExpr 同构;仅字面量 + 参数) ──\n\ntype FoldResult =\n| { ok: true; value: unknown; usedParam: boolean; usedUnit: boolean }\n| { ok: false }\n\nfunction numFold(v: number, usedParam = false, usedUnit = false): FoldResult {\nreturn Number.isFinite(v) ? { ok: true, value: v, usedParam, usedUnit } : { ok: false }\n}\n\nfunction looseEq(a: unknown, b: unknown): boolean {\n let x: unknown = a\n let y: unknown = b\n if (typeof x === 'boolean') x = x ? 1 : 0\n if (typeof y === 'boolean') y = y ? 1 : 0\n if (typeof x === 'number' && typeof y === 'string') return x === Number(y)\n if (typeof x === 'string' && typeof y === 'number') return Number(x) === y\n if (x === null || y === null) return x === null && y === null\n return x === y\n}\n\n/**\n * 引用解析失败时的错误分类(A3):裸标识符既非参数也非已声明变量。\n *\n * - 若它是免 import 安全全局(`isSafeGlobalIdent`,即 `S4_SAFE_GLOBALS` 成员),给出独立错误码\n * `E_GLOBAL_NOT_ADMITTED` 与诚实文案,指明「这是 faijs 的判定点缺陷,不是你的代码问题」,\n * 并指向统一入口(`S4_SAFE_GLOBALS` / 计划 A1)——错误信息不再把调用方引向「这语言没有 Math」\n * 的相反结论。\n * - 真未知标识符仍给 `E_REFERENCE`,语义不变。\n *\n * 各判定点(collectExprIdentifiers / parseValueExpr / shorthand / 位置实参)已优先放行安全全局;\n * 本函数是其兜底:若某个判定点漏放行,错误也必须是诚实的,而非误导性的「unknown identifier」。\n *\n * @param name 被拒绝的裸标识符名。\n * @param line 行号。\n * @param where 出错位置描述(拼进 E_REFERENCE 文案;安全全局分支忽略)。\n * @returns 永不返回(总是抛 ParseError)。\n */\nexport function throwReferenceError(name: string, line: number, where: string): never {\n if (isSafeGlobalIdent(name)) {\n throw new ParseError(\n `\"${name}\" 是免 import 安全全局(见统一入口 S4_SAFE_GLOBALS / 计划 A1),但本判定点未放行它——这是 faijs 判定点的缺陷,不是你的代码问题`,\n line,\n 'E_GLOBAL_NOT_ADMITTED',\n )\n }\n throw new ParseError(`unknown identifier \"${name}\" ${where}`, line, 'E_REFERENCE')\n}\n\nfunction tryFoldConstExpr(node: ASTNode, symbols: SymbolTable): FoldResult {\n switch (node.type) {\n case 'Literal':\n return { ok: true, value: node.value, usedParam: false, usedUnit: false }\n\n case 'Identifier': {\n // P7/D10.4: unit constants (MM, INCH, DEGREE, …) are recognized as\n // foldable constants. Their values come from UNIT_SCALE (the single\n // source of truth). The `usedUnit` flag is set so that `parseValueExpr`\n // can mark the line as computed (host read-only downgrade), preventing\n // the folded base value (e.g. 254) from being written back to source.\n if (SCRIPT_UNIT_NAMES.has(node.name)) {\n const unitName = SCRIPT_UNIT_TO_NAME[node.name]\n if (unitName) {\n return { ok: true, value: UNIT_SCALE[unitName], usedParam: false, usedUnit: true }\n }\n }\n if (!symbols.paramNames.has(node.name)) return { ok: false }\n const v = symbols.paramValues.get(node.name)\n return v === undefined ? { ok: false } : { ok: true, value: v, usedParam: true, usedUnit: false }\n }\n\n case 'UnaryExpression': {\n const operand = tryFoldConstExpr(node.argument, symbols)\n if (!operand.ok) return { ok: false }\n const v = operand.value\n switch (node.operator) {\n case '-': return typeof v === 'number' ? numFold(-v, operand.usedParam, operand.usedUnit) : { ok: false }\n case '+': return typeof v === 'number' ? numFold(+v, operand.usedParam, operand.usedUnit) : { ok: false }\n case '!': return { ok: true, value: !v, usedParam: operand.usedParam, usedUnit: operand.usedUnit }\n case '~': return typeof v === 'number' ? { ok: true, value: ~v, usedParam: operand.usedParam, usedUnit: operand.usedUnit } : { ok: false }\n case 'typeof': return { ok: true, value: typeof v, usedParam: operand.usedParam, usedUnit: operand.usedUnit }\n default: return { ok: false }\n }\n }\n\n case 'BinaryExpression': {\n const left = tryFoldConstExpr(node.left, symbols)\n if (!left.ok) return { ok: false }\n const right = tryFoldConstExpr(node.right, symbols)\n if (!right.ok) return { ok: false }\n const a = left.value\n const b = right.value\n const usedParam = left.usedParam || right.usedParam\n const usedUnit = left.usedUnit || right.usedUnit\n const numBin = (op: (x: number, y: number) => number): FoldResult =>\n typeof a === 'number' && typeof b === 'number' ? numFold(op(a, b), usedParam, usedUnit) : { ok: false }\n const cmpBin = (op: (x: number | string, y: number | string) => boolean): FoldResult => {\n if (typeof a === 'number' && typeof b === 'number') return { ok: true, value: op(a, b), usedParam, usedUnit }\n if (typeof a === 'string' && typeof b === 'string') return { ok: true, value: op(a, b), usedParam, usedUnit }\n return { ok: false }\n }\n switch (node.operator) {\n case '+': {\n if (typeof a === 'number' && typeof b === 'number') return numFold(a + b, usedParam, usedUnit)\n if (typeof a === 'string' || typeof b === 'string') return { ok: true, value: String(a) + String(b), usedParam, usedUnit }\n return { ok: false }\n }\n case '-': return numBin((x, y) => x - y)\n case '*': return numBin((x, y) => x * y)\n case '/': return numBin((x, y) => x / y)\n case '%': return numBin((x, y) => x % y)\n case '**': return numBin((x, y) => x ** y)\n case '<': return cmpBin((x, y) => x < y)\n case '<=': return cmpBin((x, y) => x <= y)\n case '>': return cmpBin((x, y) => x > y)\n case '>=': return cmpBin((x, y) => x >= y)\n case '==': return { ok: true, value: looseEq(a, b), usedParam, usedUnit }\n case '!=': return { ok: true, value: !looseEq(a, b), usedParam, usedUnit }\n case '===': return { ok: true, value: a === b, usedParam, usedUnit }\n case '!==': return { ok: true, value: a !== b, usedParam, usedUnit }\n default: return { ok: false }\n }\n }\n\n case 'LogicalExpression': {\n const left = tryFoldConstExpr(node.left, symbols)\n if (!left.ok) return { ok: false }\n const right = tryFoldConstExpr(node.right, symbols)\n if (!right.ok) return { ok: false }\n const a = left.value\n const usedParam = left.usedParam || right.usedParam\n const usedUnit = left.usedUnit || right.usedUnit\n switch (node.operator) {\n case '&&': return { ok: true, value: a ? right.value : left.value, usedParam, usedUnit }\n case '||': return { ok: true, value: a ? left.value : right.value, usedParam, usedUnit }\n case '??': return { ok: true, value: a === null ? right.value : left.value, usedParam, usedUnit }\n default: return { ok: false }\n }\n }\n\n case 'TemplateLiteral': {\n const parts: string[] = []\n const quasis = node.quasis as ASTNode[]\n const exprs = node.expressions as ASTNode[]\n let usedParam = false\n let usedUnit = false\n for (let i = 0; i < quasis.length; i++) {\n const cooked = quasis[i].value?.cooked\n parts.push(cooked ?? '')\n if (i < exprs.length) {\n const r = tryFoldConstExpr(exprs[i], symbols)\n if (!r.ok) return { ok: false }\n usedParam = usedParam || r.usedParam\n usedUnit = usedUnit || r.usedUnit\n parts.push(String(r.value))\n }\n }\n return { ok: true, value: parts.join(''), usedParam, usedUnit }\n }\n\n case 'ConditionalExpression': {\n const test = tryFoldConstExpr(node.test, symbols)\n if (!test.ok) return { ok: false }\n const chosen = tryFoldConstExpr(test.value ? node.consequent : node.alternate, symbols)\n if (!chosen.ok) return { ok: false }\n return { ok: true, value: chosen.value, usedParam: test.usedParam || chosen.usedParam, usedUnit: test.usedUnit || chosen.usedUnit }\n }\n\n default:\n return { ok: false }\n }\n}\n\n// ── Expr 白名单(与现状 parser.isExprWhitelist 同构) ──\n//\n// 本函数与 collectExprIdentifiers 是「唯一实现」——expr-validate.ts / source-edit.ts\n// 直接 import 复用,不复制(见 plans/2026-09-08-timeline-param-expression-editing.md §3.4.1)。\n\n/**\n * <Ns>.fn(...) 等「白名单表达式」结构判定(无可选链、无 spread、成员非计算)。\n * @param node 待判定的表达式 AST 节点;nil 或非法输入按非白名单处理。\n * @returns 节点自身及其全部子表达式均在白名单结构内 → true,否则 false。\n */\nexport function isExprWhitelist(node: ASTNode): boolean {\n if (!node || typeof node !== 'object') return false\n switch (node.type) {\n case 'Literal':\n case 'Identifier':\n return true\n case 'UnaryExpression':\n return isExprWhitelist(node.argument)\n case 'BinaryExpression':\n case 'LogicalExpression':\n return isExprWhitelist(node.left) && isExprWhitelist(node.right)\n case 'ConditionalExpression':\n return isExprWhitelist(node.test) && isExprWhitelist(node.consequent) && isExprWhitelist(node.alternate)\n case 'ArrayExpression':\n return node.elements.every((el: ASTNode) => el !== null && el !== undefined && isExprWhitelist(el))\n case 'MemberExpression':\n if (node.optional) return false\n if (!isExprWhitelist(node.object)) return false\n return node.computed ? isExprWhitelist(node.property) : true\n case 'CallExpression': {\n if (node.optional) return false\n if (!isExprWhitelist(node.callee)) return false\n return (node.arguments as ASTNode[]).every((a) => a.type !== 'SpreadElement' && isExprWhitelist(a))\n }\n default:\n return false\n }\n}\n\n/**\n * 递归收集表达式引用:参数 → params;已声明变量 → refs;\n * 免 import 安全全局/单位常量 → 只放行、不记入(见下方分支注释);未知 → E_REFERENCE。\n *\n * opts(可选扩展;缺省时行为与历史完全一致):\n * - `lenient: true`:未知标识符不抛错(静默跳过)——ArgSource 记录路径用,\n * 保证提取本身绝不抛新错;\n * - `defaultNs`:把默认命名空间('cad')视同 nsBindings 成员——`cad.faceNormal(p)`\n * 作为参数槽整条记录时,不会把 'cad' 当作未知标识符。\n *\n * 本函数与 isExprWhitelist 是「唯一实现」——expr-validate.ts / source-edit.ts\n * 直接 import 复用,不复制(见 plans/2026-09-08-timeline-param-expression-editing.md §3.4.1)。\n *\n * @param node 表达式的 AST 根节点;nil 或非对象直接返回。\n * @param symbols 提取器符号表(判定 Identifier 是参数/已声明/未知)。\n * @param line 当前语句行号(未知标识符报错时的行号)。\n * @param params 收集命中参数名的输出集合。\n * @param refs 收集命中已声明变量的输出集合。\n * @param opts 可选扩展;`lenient` 静默跳过未知标识符,`defaultNs` 把默认命名空间视同绑定成员。\n */\nexport function collectExprIdentifiers(\n node: ASTNode,\n symbols: SymbolTable,\n line: number,\n params: Set<string>,\n refs: Set<string>,\n opts?: { lenient?: boolean; defaultNs?: string },\n): void {\n if (!node || typeof node !== 'object') return\n switch (node.type) {\n case 'Identifier': {\n const name = node.name\n if (symbols.paramNames.has(name)) {\n params.add(name)\n } else if (symbols.declared.has(name)) {\n refs.add(name)\n } else if (SCRIPT_UNIT_NAMES.has(name)) {\n // P6/D7: unit constants (MM, INCH, DEGREE, …) are global read-only constants.\n // Treat as a known reference — do not throw E_REFERENCE.\n refs.add(name)\n } else if (isSafeGlobalIdent(name)) {\n // 2026-10-06 修复:先前的白名单只内联了单位常量,漏掉 S4_SAFE_GLOBALS 的其余\n // 免 import 安全全局(Math / JSON / Number / console / Infinity / undefined / …),\n // 导致 `cad.box(Math.max(x, 20), 1, 1)` 在提取阶段就抛 E_REFERENCE —— 与 S4 门禁\n // 「Math 合法」直接矛盾,整个脚本连执行都进不去。\n // 这里只判定「合法」,**不**记入 params/refs:它们是 JS 全局,不是脚本作用域变量,\n // 记入会让宿主依赖分析(summary.refs / ArgSource.refs)产生幻影依赖。\n } else if (opts?.lenient === true) {\n // lenient:未知标识符跳过(ArgSource 记录路径,保证提取不抛新错)\n } else {\n throw throwReferenceError(name, line, 'in expression')\n }\n return\n }\n case 'UnaryExpression':\n collectExprIdentifiers(node.argument, symbols, line, params, refs, opts)\n return\n case 'BinaryExpression':\n case 'LogicalExpression':\n collectExprIdentifiers(node.left, symbols, line, params, refs, opts)\n collectExprIdentifiers(node.right, symbols, line, params, refs, opts)\n return\n case 'ConditionalExpression':\n collectExprIdentifiers(node.test, symbols, line, params, refs, opts)\n collectExprIdentifiers(node.consequent, symbols, line, params, refs, opts)\n collectExprIdentifiers(node.alternate, symbols, line, params, refs, opts)\n return\n case 'ArrayExpression':\n for (const el of node.elements) collectExprIdentifiers(el, symbols, line, params, refs, opts)\n return\n case 'ObjectExpression':\n for (const prop of node.properties) {\n if (prop?.type !== 'Property') continue\n collectExprIdentifiers(prop.value, symbols, line, params, refs, opts)\n }\n return\n case 'TemplateLiteral':\n for (const expr of node.expressions) collectExprIdentifiers(expr, symbols, line, params, refs, opts)\n return\n case 'MemberExpression': {\n // 命名空间绑定(import * as cfg / 模块命名空间)的成员 cfg.OutX:对象名是外部\n // 命名空间,不收集为变量引用(§4.1 HostArg 引用形态;求值在内部 ctx.cfg 侧)。\n // opts.defaultNs(缺省命名空间 'cad')同样跳过——cad.faceNormal(p) 整条作为\n // 参数槽记录时不会把 'cad' 当未知标识符。\n const obj = node.object\n if (obj?.type === 'Identifier' && (symbols.nsBindings.has(obj.name) || obj.name === opts?.defaultNs)) {\n if (node.computed) collectExprIdentifiers(node.property, symbols, line, params, refs, opts)\n return\n }\n collectExprIdentifiers(node.object, symbols, line, params, refs, opts)\n if (node.computed) collectExprIdentifiers(node.property, symbols, line, params, refs, opts)\n return\n }\n case 'CallExpression':\n collectExprIdentifiers(node.callee, symbols, line, params, refs, opts)\n for (const a of node.arguments as ASTNode[]) {\n collectExprIdentifiers(a.type === 'SpreadElement' ? a.argument : a, symbols, line, params, refs, opts)\n }\n return\n default:\n return\n }\n}\n\n// ── 值解析 → HostArg(与现状 parseValueExpr/parsePositionalArgs 语义同构) ──\n\ninterface ValueParseCtx {\n symbols: SymbolTable\n /** 宽松模式(append 单行提取/引用前段变量):未知标识符透传为外部名 */\n looseVars: boolean\n /** 宽松本机调用(codeToArgs):裸 callee 不在函数集也放行 */\n looseLocalCalls: boolean\n sourceText: string\n /** 折叠/computed 累积标记:本语句是否引用了参数表达式/spread(hasComputedArgs) */\n computed: { value: boolean }\n /** P0-B:当前语句 id('s' + 归一化行号;argSources 记录的 stmtId) */\n stmtId: StmtId\n /** P0-B:parseCode 的 codeOffset(ArgSource.start/end 归一化到原 code 坐标) */\n codeOffset: number\n /** P0-B:参数槽源码记录累积(语句顺序追加) */\n argSources: ArgSource[]\n /** P6/D8: callee → 量纲声明(dimension pass 用) */\n opDims?: OpDimMap\n /** P6/D8: dimension 校验错误累积 */\n dimErrors: ParseError[]\n /** P6/D8+: dimension 校验警告累积(dimCheck='warn' 的 op) */\n dimWarnings: ParseError[]\n}\n\n/** 是否非平凡表达式:非 Literal(负字面量视为字面量)→ UI 显示 fx 徽标 */\nfunction isExpressionNode(node: ASTNode): boolean {\n if (!node || node.type === 'Literal') return false\n if (node.type === 'UnaryExpression' && node.operator === '-' && node.argument?.type === 'Literal') return false\n return true\n}\n\n// ── P6/D8: 静态量纲校验(dimension pass) ──\n\n/**\n * P6/D8 R4: Determine the dimension of an AST expression node.\n *\n * Returns the DimName if the expression can be statically determined to carry\n * a dimension, `'bare'` for a bare number literal, or `null` if it cannot be\n * determined (R5: pass through).\n */\nfunction inferDim(node: ASTNode): DimName | 'bare' | null {\n if (!node) return null\n\n switch (node.type) {\n case 'Literal':\n if (typeof node.value === 'number') return 'bare'\n return null\n\n case 'UnaryExpression':\n if (node.operator === '-' || node.operator === '+' || node.operator === '~') {\n return inferDim(node.argument)\n }\n return null\n\n case 'Identifier':\n // Unit constant? → its dimension\n if (SCRIPT_UNIT_NAMES.has(node.name)) {\n const unitName = SCRIPT_UNIT_TO_NAME[node.name]\n return unitName ? (UNIT_DIM[unitName] ?? null) : null\n }\n // Declared variable or parameter → cannot determine (R5: pass through)\n return null\n\n case 'BinaryExpression': {\n const left = inferDim(node.left)\n const right = inferDim(node.right)\n\n switch (node.operator) {\n case '*': {\n // number * unitConst → unit's dim; unitConst * number → same\n if (left === 'bare' && right && right !== 'bare') return right\n if (right === 'bare' && left && left !== 'bare') return left\n // both bare → bare (dimensionless multiply)\n if (left === 'bare' && right === 'bare') return 'bare'\n // both have dims → compound (length * length → area); pass through\n return null\n }\n case '/': {\n // same dim / same dim → dimensionless (bare)\n if (left && right && left === right && left !== 'bare') return 'bare'\n // dim / bare → dim\n if (left && left !== 'bare' && right === 'bare') return left\n // bare / dim → 1/dim (not a simple dim); pass through\n if (left === 'bare' && right && right !== 'bare') return null\n if (left === 'bare' && right === 'bare') return 'bare'\n return null\n }\n case '+':\n case '-': {\n // Both sides must have the same dimension (R3)\n if (left === right) return left\n // R3: if both sides are determinable but differ → mismatch.\n // But inferDim can't report errors — it returns the dim or null.\n // We return a special sentinel 'mismatch' to signal checkDim.\n if (left && right && left !== 'bare' && right !== 'bare' && left !== right) {\n return 'mismatch' as unknown as DimName\n }\n // If one is bare and the other has a dim → the result has that dim\n if (left === 'bare' && right && right !== 'bare') return right\n if (right === 'bare' && left && left !== 'bare') return left\n // If either is null (unknown), pass through (R5)\n return null\n }\n default:\n return null\n }\n }\n\n case 'ParenthesizedExpression':\n return inferDim(node.expression)\n\n case 'ArrayExpression':\n // vec3 — check first element for dimensionality\n if (node.elements && node.elements.length > 0 && node.elements[0]) {\n return inferDim(node.elements[0])\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * P6/D8: Check if an argument expression has the required dimension.\n *\n * - R2: bare number literal on a dimensioned slot → E_DIM_BARE_NUMBER\n * - R3: mismatched dimensions → E_DIM_MISMATCH\n * - R5: cannot determine → pass (no error)\n *\n * Appends errors to ctx.dimErrors (does not throw — extraction continues).\n */\nfunction checkDim(node: ASTNode, expectedDim: DimName, ctx: ValueParseCtx): void {\n const actualDim = inferDim(node)\n\n // R5: cannot determine → pass through\n if (actualDim === null) return\n\n // R3: mismatched dimensions within the expression (e.g. mm + degree)\n if (actualDim === 'mismatch' as unknown as string) {\n ctx.dimErrors.push(new ParseError(\n `dimension mismatch in expression: \"${ctx.sourceText.slice(node.start, node.end)}\"`,\n lineOf(node),\n 'E_DIM_MISMATCH',\n ))\n return\n }\n\n // R2: bare number on dimensioned slot\n if (actualDim === 'bare') {\n ctx.dimErrors.push(new ParseError(\n `bare number literal requires unit suffix (expected ${expectedDim}): \"${ctx.sourceText.slice(node.start, node.end)}\"`,\n lineOf(node),\n 'E_DIM_BARE_NUMBER',\n ))\n return\n }\n\n // R3: dimension mismatch with expected\n if (actualDim !== expectedDim) {\n ctx.dimErrors.push(new ParseError(\n `dimension mismatch: expected ${expectedDim}, got ${actualDim} in \"${ctx.sourceText.slice(node.start, node.end)}\"`,\n lineOf(node),\n 'E_DIM_MISMATCH',\n ))\n return\n }\n}\n\n/**\n * D8+: Recursively check an AST value against a structured {@link DimSpec}.\n *\n * Mirrors `fmtValueWithSpec` in codegen.ts but at the AST level: descends into\n * nested arrays/objects and dispatches `tagged` specs by a discriminator field.\n * Unlisted fields and unknown discriminator values are skipped (bare passthrough).\n */\nfunction checkValueWithSpec(node: ASTNode, spec: DimSpec, ctx: ValueParseCtx): void {\n if (!node) return\n switch (spec.kind) {\n case 'plain':\n return\n case 'dim': {\n // `'plain'` in a `dim` spec = no dimension check (passthrough).\n if (spec.dim === 'plain') return\n checkDim(node, spec.dim, ctx)\n // Array (vec/point) → element-wise\n if (node.type === 'ArrayExpression') {\n for (const el of node.elements ?? []) {\n if (el) checkDim(el, spec.dim, ctx)\n }\n }\n return\n }\n case 'array': {\n if (node.type === 'ArrayExpression') {\n for (const el of node.elements ?? []) {\n if (el) checkValueWithSpec(el, spec.item, ctx)\n }\n }\n return\n }\n case 'object': {\n if (node.type === 'ObjectExpression') {\n for (const prop of node.properties) {\n if (prop?.type !== 'Property') continue\n const keyNode = prop.key\n if (keyNode?.type !== 'Identifier') continue\n const fieldSpec = spec.fields[keyNode.name]\n if (fieldSpec) checkValueWithSpec(prop.value, fieldSpec, ctx)\n }\n }\n return\n }\n case 'tagged': {\n if (node.type === 'ObjectExpression') {\n for (const prop of node.properties) {\n if (prop?.type !== 'Property') continue\n const keyNode = prop.key\n if (keyNode?.type !== 'Identifier' || keyNode.name !== spec.key) continue\n if (prop.value?.type === 'Literal' && typeof prop.value.value === 'string') {\n const caseSpec = spec.cases[prop.value.value]\n if (caseSpec) checkValueWithSpec(node, caseSpec, ctx)\n }\n return\n }\n }\n return\n }\n }\n}\n\n/**\n * 在折叠之前记录一条参数槽(ArgSource)。\n *\n * - start/end 相对 extractMetadata 的入参 code(减 codeOffset,含封装归一化);\n * - text = parseCode 原文切片(E_RANGE_STALE 用 `code.slice(start,end) === text` 断言);\n * - params/refs 用 collectExprIdentifiers 的 lenient 模式(未知标识符跳过,\n * 保证提取不抛新错——与 main parse 的 E_REFERENCE 例外保持解耦)。\n */\nfunction recordArgSource(node: ASTNode, ctx: ValueParseCtx, path: string): void {\n if (!node || typeof node !== 'object' || node.start == null || node.end == null || node.end < node.start) return\n const isExpr = isExpressionNode(node)\n const params = new Set<string>()\n const refs = new Set<string>()\n if (isExpr) {\n collectExprIdentifiers(node, ctx.symbols, lineOf(node), params, refs, {\n lenient: true,\n defaultNs: ctx.symbols.defaultNsName,\n })\n }\n ctx.argSources.push({\n stmtId: ctx.stmtId,\n path,\n text: ctx.sourceText.slice(node.start, node.end),\n start: node.start - ctx.codeOffset,\n end: node.end - ctx.codeOffset,\n params: [...params],\n refs: [...refs],\n isExpression: isExpr,\n })\n}\n\n/**\n * 裸全局标识符实参解析(单位常量 + S4 免 import 安全全局)。\n *\n * 分别收口 `parseValueExpr` 与 `parsePositionalArgs` 的 Identifier 分支:两者此前\n * 都把「不在 paramNames/declared 里」的裸标识符直接判为未声明变量(E_REFERENCE),\n * 于是连 `cad.box(MM, 1, 1)` 这种合法写法也被拒。\n *\n * 返回 undefined 表示「不是全局名字」,交由调用方按变量引用/报错处理。\n *\n * 单位常量(MM/INCH/DEGREE/…)走静态折叠(与 `10 * MM` 同一路径,得折叠字面量 +\n * computed 标记,源文本不回写,见 P7/D10.4);其余安全全局(Math/JSON/console/\n * Infinity/…)保留原文交给运行时求值(expr-ref),两个执行后端都能从 globalThis 解析。\n * @param name 标识符名(须已判定为全局名字)。\n * @param node 该标识符的 AST 节点(取源码区间做 expr-ref 文本)。\n * @param ctx 值解析上下文(符号表 / computed 累积 / 源文本)。\n * @returns 对应的 HostArg。\n */\nfunction parseGlobalIdentArg(name: string, node: ASTNode, ctx: ValueParseCtx): HostArg | undefined {\n if (!isSafeGlobalIdent(name)) return undefined\n if (SCRIPT_UNIT_NAMES.has(name)) {\n const r = tryFoldConstExpr(node, ctx.symbols)\n if (r.ok) {\n ctx.computed.value = true\n return r.value as HostArg\n }\n }\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [],\n params: [],\n } as unknown as HostArg\n}\n\nfunction parseValueExpr(node: ASTNode, ctx: ValueParseCtx, path: string | null): HostArg {\n if (!node) throw new ParseError('missing value expression', 1, 'E_VALUE')\n const line = lineOf(node)\n\n // P0-B:在折叠之前记录一条 ArgSource(path === null 忽略——参数行 RHS 由\n // recordArgSource 显式记录,不再双记)。\n if (path !== null) recordArgSource(node, ctx, path)\n\n // 折叠优先:Unary/Binary/Logical/Template/Conditional 可静态折叠(字面量 + 参数)\n if (\n node.type === 'UnaryExpression' ||\n node.type === 'BinaryExpression' ||\n node.type === 'LogicalExpression' ||\n node.type === 'TemplateLiteral' ||\n node.type === 'ConditionalExpression'\n ) {\n const r = tryFoldConstExpr(node, ctx.symbols)\n if (r.ok) {\n // F1-E1:仅折叠表达式引用参数才标 computed;纯字面量(负字面量)不标\n // P7/D10.4: unit constants (usedUnit) also mark computed — the folded\n // base value (e.g. 254 for `10 * INCH`) must NOT be written back to\n // source code (would lose the unit and change geometry in non-base contexts).\n if (r.usedParam || r.usedUnit) ctx.computed.value = true\n return r.value as unknown as HostArg\n }\n // 折叠失败且 ∈ 白名单 → expr-ref(运行时求值)\n if (isExprWhitelist(node)) {\n const params = new Set<string>()\n const refs = new Set<string>()\n collectExprIdentifiers(node, ctx.symbols, line, params, refs)\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [...refs],\n params: [...params],\n } as unknown as HostArg\n }\n throw new ParseError(\n `cannot statically evaluate ${node.type} in args (must reference declared params or literals)`,\n line,\n 'E_VALUE',\n )\n }\n\n switch (node.type) {\n case 'Literal':\n return node.value as HostArg\n\n case 'Identifier': {\n const name = node.name\n if (ctx.symbols.paramNames.has(name)) {\n return { kind: 'param-ref', name } as unknown as HostArg\n }\n if (ctx.symbols.declared.has(name)) {\n return { kind: 'var-ref', name } as unknown as HostArg\n }\n const globalArg = parseGlobalIdentArg(name, node, ctx)\n if (globalArg !== undefined) return globalArg\n if (ctx.looseVars) {\n ctx.symbols.declared.add(name)\n return { kind: 'var-ref', name } as unknown as HostArg\n }\n throw throwReferenceError(name, line, 'in args value (not a declared param or variable)')\n }\n\n case 'ArrayExpression': {\n const out: HostArg[] = []\n for (let i = 0; i < node.elements.length; i++) {\n const el = node.elements[i]\n if (el === null || el === undefined) {\n throw new ParseError('array holes are not supported in args', line, 'E_VALUE')\n }\n const childPath = path === null ? null : `${path}[${i}]`\n if (el.type === 'SpreadElement') {\n if (childPath !== null) recordArgSource(el.argument, ctx, childPath)\n const r = tryFoldConstExpr(el.argument, ctx.symbols)\n if (!r.ok || !Array.isArray(r.value)) {\n throw new ParseError(\n 'cannot statically evaluate spread in args (expected an array param or literal)',\n line,\n 'E_VALUE',\n )\n }\n ctx.computed.value = true\n out.push(...(r.value as HostArg[]))\n continue\n }\n out.push(parseValueExpr(el, ctx, childPath))\n }\n return out as unknown as HostArg\n }\n\n case 'ObjectExpression':\n return parseObjectValue(node, ctx, path)\n\n case 'CallExpression': {\n const callee = node.callee\n // <ns>.<fn>(...) → call-ref(只读查询)\n if (\n callee?.type === 'MemberExpression' &&\n callee.object?.type === 'Identifier' &&\n (ctx.symbols.nsBindings.has(callee.object.name) ||\n callee.object.name === ctx.symbols.defaultNsName) &&\n callee.property?.type === 'Identifier'\n ) {\n const nsName = callee.object.name\n const args = (node.arguments as ASTNode[]).map((a, i) =>\n parseValueExpr(a, ctx, path === null ? null : `${path}[${i}]`))\n const callRef: HostCallRef = {\n kind: 'call-ref',\n callee: callee.property.name,\n args,\n ...(nsName !== ctx.symbols.defaultNsName ? { namespace: nsName } : {}),\n }\n return callRef as unknown as HostArg\n }\n if (isExprWhitelist(node)) {\n const params = new Set<string>()\n const refs = new Set<string>()\n collectExprIdentifiers(node, ctx.symbols, line, params, refs)\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [...refs],\n params: [...params],\n } as unknown as HostArg\n }\n throw new ParseError(\n 'nested calls in args must be <ns>.<ident>(...) or a whitelisted expression',\n line,\n 'E_VALUE',\n )\n }\n\n case 'MemberExpression': {\n if (isExprWhitelist(node)) {\n const params = new Set<string>()\n const refs = new Set<string>()\n collectExprIdentifiers(node, ctx.symbols, line, params, refs)\n ctx.computed.value = true\n return {\n kind: 'expr-ref',\n text: ctx.sourceText.slice(node.start, node.end),\n refs: [...refs],\n params: [...params],\n } as unknown as HostArg\n }\n throw new ParseError('unsupported member expression in args: optional chaining is not allowed', line, 'E_VALUE')\n }\n\n default:\n throw new ParseError(`unsupported value expression: ${node.type}`, line, 'E_VALUE')\n }\n}\n\n/** 对象字面量参数解析 + 参数槽记录(属性值路径 = `<base>.<key>`;shorthand 以来源名为 text 记一条)。 */\nfunction parseObjectValue(node: ASTNode, ctx: ValueParseCtx, path: string | null): HostArg {\n const line = lineOf(node)\n const obj: Record<string, HostArg> = {}\n for (const prop of node.properties) {\n if (prop.type === 'SpreadElement') {\n const r = tryFoldConstExpr(prop.argument, ctx.symbols)\n if (!r.ok || typeof r.value !== 'object' || r.value === null || Array.isArray(r.value)) {\n throw new ParseError('cannot statically evaluate object spread in args', line, 'E_VALUE')\n }\n ctx.computed.value = true\n Object.assign(obj, r.value as Record<string, unknown>)\n continue\n }\n const key = prop.key?.type === 'Identifier' ? prop.key.name\n : prop.key?.type === 'Literal' ? String(prop.key.value)\n : null\n if (key === null) throw new ParseError('invalid object key', line, 'E_VALUE')\n if (prop.shorthand) {\n // shorthand { size } → { size: param-ref };已声明变量 shorthand 现状报 E_REFERENCE\n const name = key\n let slotParams: string[] = []\n let slotRefs: string[] = []\n if (ctx.symbols.paramNames.has(name)) {\n obj[key] = { kind: 'param-ref', name } as unknown as HostArg\n slotParams = [name]\n } else if (isSafeGlobalIdent(name)) {\n // 与 longhand `{ q: Math }`(parseValueExpr → parseGlobalIdentArg)一致:免 import 安全全局放行,\n // 不再误报 E_REFERENCE / E_GLOBAL_NOT_ADMITTED(A3:同值 Math 在 longhand 已放行)。\n obj[key] = parseGlobalIdentArg(name, prop.key, ctx) as unknown as HostArg\n } else if (ctx.looseVars) {\n ctx.symbols.declared.add(name)\n obj[key] = { kind: 'var-ref', name } as unknown as HostArg\n slotRefs = [name]\n } else {\n throw throwReferenceError(name, line, 'in shorthand object key (not a declared param)')\n }\n // P0-B:shorthand 槽(以属性名 == 变量名作 text,path = <base>.<key>,isExpression=false)\n if (path !== null) {\n ctx.argSources.push({\n stmtId: ctx.stmtId,\n path: `${path}.${key}`,\n text: ctx.sourceText.slice(prop.start, prop.end),\n start: prop.start - ctx.codeOffset,\n end: prop.end - ctx.codeOffset,\n params: slotParams,\n refs: slotRefs,\n isExpression: false,\n })\n }\n } else {\n obj[key] = parseValueExpr(prop.value, ctx, path === null ? null : `${path}.${key}`)\n }\n }\n return obj as unknown as HostArg\n}\n\n/** 位置实参解析(与现状 parsePositionalArgs 同构);P0-B 附带参数槽记录(pathBase 缺省 'positional')。 */\nfunction parsePositionalArgs(\n argNodes: ASTNode[],\n ctx: ValueParseCtx,\n line: number,\n pathBase = 'positional',\n): HostArg[] {\n const out: HostArg[] = []\n for (let i = 0; i < argNodes.length; i++) {\n const argNode = argNodes[i]\n const isLast = i === argNodes.length - 1\n const isTrailingOptions = isLast && argNode?.type === 'ObjectExpression'\n if (isTrailingOptions) {\n // 尾随选项对象:只按 'args.<key>' 记录属性值,不把整对象再记一个 positional 槽\n out.push(parseObjectValue(argNode, ctx, 'args'))\n continue\n }\n const slotPath = `${pathBase}[${i}]`\n if (argNode.type === 'Identifier') {\n recordArgSource(argNode, ctx, slotPath)\n const name = argNode.name\n if (ctx.symbols.declared.has(name)) {\n out.push({ kind: 'var-ref', name } as unknown as HostArg)\n continue\n }\n const globalArg = parseGlobalIdentArg(name, argNode, ctx)\n if (globalArg !== undefined) {\n out.push(globalArg)\n continue\n }\n if (ctx.looseVars) {\n ctx.symbols.declared.add(name)\n out.push({ kind: 'var-ref', name } as unknown as HostArg)\n continue\n }\n throw throwReferenceError(name, lineOf(argNode), 'in inputs')\n }\n if (argNode.type === 'SpreadElement') {\n recordArgSource(argNode.argument, ctx, slotPath)\n const r = tryFoldConstExpr(argNode.argument, ctx.symbols)\n if (!r.ok || !Array.isArray(r.value)) {\n throw new ParseError(\n 'cannot statically evaluate spread in arguments (must reference an array param or literal)',\n line,\n 'E_VALUE',\n )\n }\n ctx.computed.value = true\n out.push(...(r.value as HostArg[]))\n continue\n }\n out.push(parseValueExpr(argNode, ctx, slotPath))\n }\n return out\n}\n\n// ── 行摘要组装 ──\n\n/** 位置实参末位是否为纯数据对象(非引用形态)→ args 投影真源。\n * 与现状 splitPositionalOptions 同构:引用形态 = var-ref/param-ref/call-ref/expr-ref\n * (kind 值 ∈ HOST_REF_KINDS 且完整匹配变体形状);字面量对象的 kind 字段是普通数据。 */\nfunction isPlainDataObject(v: unknown): v is Record<string, HostArg> {\n return (\n v !== null &&\n typeof v === 'object' &&\n !Array.isArray(v) &&\n !isHostVarRef(v as HostRef) &&\n !isHostParamRef(v as HostRef) &&\n !isHostCallRef(v as HostRef) &&\n !isHostExprRef(v as HostRef)\n )\n}\n\ninterface LineSummarySpec {\n callee: string\n line: number\n ctx: ValueParseCtx\n /** 位置实参槽(含尾随对象;positional 与 HostArg 面同构) */\n positional: HostArg[]\n namespace?: string\n local?: boolean\n receiver?: string\n outputs: string[]\n outputKeys?: string[]\n hasAssignment: boolean\n}\n\n/**\n * 从单条调用组装 StatementSummary:\n * - positional = 全量位置实参(末位纯对象保留,与现状一致)\n * - args = 末位纯对象的投影(keep/keepHidden 键原样保留——compile 期才剥离)\n */\nfunction buildLineSummary(spec: LineSummarySpec): StatementSummary {\n const last = spec.positional[spec.positional.length - 1]\n const args: Record<string, HostArg> =\n isPlainDataObject(last) ? { ...(last as Record<string, HostArg>) } : {}\n\n const refs = new Set<string>()\n for (const a of spec.positional) collectRefsFromHostArg(a, refs)\n if (spec.receiver !== undefined) refs.add(spec.receiver)\n\n const summary: StatementSummary = {\n id: asStmtId(`s${spec.line}`),\n callee: spec.callee,\n ...(spec.local\n ? { local: true }\n : spec.namespace !== undefined\n ? {\n namespace: spec.namespace,\n ...(spec.ctx.symbols.nsBindings.get(spec.namespace) !== undefined\n ? { packageName: spec.ctx.symbols.nsBindings.get(spec.namespace) }\n : {}),\n }\n : {}),\n ...(spec.receiver !== undefined ? { receiver: asPartName(spec.receiver) } : {}),\n positional: spec.positional,\n args,\n outputs: spec.outputs.map((o) => asPartName(o)),\n ...(spec.outputKeys !== undefined ? { outputKeys: spec.outputKeys } : {}),\n hasAssignment: spec.hasAssignment,\n hasComputedArgs: spec.ctx.computed.value,\n line: spec.line,\n }\n if (refs.size > 0) summary.refs = [...refs]\n else summary.refs = []\n return summary\n}\n\nfunction collectRefsFromHostArg(value: HostArg, out: Set<string>): void {\n if (value === null || value === undefined) return\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return\n const kind = (value as { kind?: string }).kind\n if (kind === 'var-ref') {\n out.add((value as { name: string }).name)\n return\n }\n if (kind === 'param-ref') {\n out.add((value as { name: string }).name)\n return\n }\n if (kind === 'call-ref') {\n for (const a of (value as HostCallRef).args) collectRefsFromHostArg(a, out)\n return\n }\n if (kind === 'expr-ref') {\n const e = value as { params: string[]; refs: string[] }\n for (const p of e.params) out.add(p)\n for (const r of e.refs) out.add(r)\n return\n }\n if (Array.isArray(value)) {\n for (const v of value) collectRefsFromHostArg(v as HostArg, out)\n return\n }\n if (typeof value === 'object') {\n for (const v of Object.values(value as Record<string, HostArg>)) collectRefsFromHostArg(v, out)\n }\n}\n\n// ── return / meta 解析 ──\n\nfunction parseReturnStatement(\n node: ASTNode,\n ctx: ValueParseCtx,\n): { meta?: ScriptMetaIR; terminalShapes?: TerminalShape[] } {\n const line = lineOf(node)\n const arg = node.argument\n if (!arg) return {}\n\n const resolveVar = (idNode: ASTNode): PartName => {\n if (idNode?.type !== 'Identifier') throw new ParseError('unknown variable in return', line)\n const name = idNode.name\n if (!ctx.symbols.declared.has(name) && !ctx.symbols.paramNames.has(name)) {\n throw new ParseError(`unknown variable \"${name}\" in return`, line)\n }\n return asPartName(name)\n }\n\n const parseOne = (objNode: ASTNode): { id: PartName | null; meta?: ScriptMetaIR } => {\n let id: PartName | null = null\n const meta: ScriptMetaIR = {}\n for (const prop of objNode.properties) {\n const key = prop.key?.type === 'Identifier' ? prop.key.name\n : prop.key?.type === 'Literal' ? String(prop.key.value)\n : null\n if (!key) continue\n if (key === 'shape') {\n if (prop.value?.type === 'Identifier') id = resolveVar(prop.value)\n } else if (key === 'name') {\n if (prop.value?.type === 'Literal') meta.name = prop.value.value as string\n }\n // 其余 key(含旧死特性 color/metalness/roughness,2026-10-05 v2 已删除)\n // 静默忽略:return 对象不是 op 参数,未知 key 不做参数校验(宽容语义)。\n }\n return { id, meta: Object.keys(meta).length > 0 ? meta : undefined }\n }\n\n if (arg.type === 'Identifier') return { terminalShapes: [{ id: resolveVar(arg) }] }\n if (arg.type === 'ObjectExpression') {\n const r = parseOne(arg)\n return { meta: r.meta, terminalShapes: r.id !== null ? [{ id: r.id, meta: r.meta }] : undefined }\n }\n if (arg.type === 'ArrayExpression') {\n const terminalShapes: TerminalShape[] = []\n for (const elem of arg.elements) {\n if (elem?.type !== 'ObjectExpression') {\n throw new ParseError('return array elements must be objects { shape, ... }', line)\n }\n const r = parseOne(elem)\n if (r.id) terminalShapes.push({ id: r.id, meta: r.meta })\n }\n if (terminalShapes.length === 0) throw new ParseError('return array must have at least one element', line)\n return { terminalShapes }\n }\n throw new ParseError(`unsupported return expression: ${arg.type}`, line)\n}\n\n// ── keep 指令提取(行级 keep/keepHidden → metadata.keep) ──\n\nfunction extractKeepEntries(\n positional: HostArg[],\n line: number,\n symbols: SymbolTable,\n): void {\n const last = positional[positional.length - 1]\n if (!isPlainDataObject(last)) return\n const entries: Array<{ target: string; hidden?: boolean }> = []\n const keepArg = last.keep\n if (Array.isArray(keepArg)) {\n for (const entry of keepArg) {\n const parsed = parseKeepEntry(entry)\n if (parsed) entries.push(parsed)\n }\n }\n const statementDefault = last.keepHidden === true\n const normalized = entries.map((e): KeepEntry => {\n // e.hidden 为显式 hidden 值(undefined → 未指定);未指定时用语句级 keepHidden 兜底\n return { target: e.target, hidden: e.hidden ?? statementDefault }\n })\n if (normalized.length > 0) {\n const list = symbols.keep.get(line) ?? []\n list.push(...normalized)\n symbols.keep.set(line, list)\n }\n}\n\nfunction parseKeepEntry(entry: HostArg): { target: string; hidden?: boolean } | undefined {\n // 与现状 keep.ts parseKeepEntry 同构:字符串条目 / 裸 var-ref 条目不携带 hidden\n // (语句级 keepHidden 兜底);{ shape, hidden } 显式条目携带 hidden(false 也显式)。\n if (typeof entry === 'string') return { target: entry }\n if (entry !== null && typeof entry === 'object' && !Array.isArray(entry)) {\n const obj = entry as Record<string, unknown>\n const shape = obj.shape\n if (typeof shape === 'string') return { target: shape, hidden: obj.hidden === true }\n if (shape !== null && typeof shape === 'object') {\n const s = shape as { kind?: string; name?: string }\n if (s.kind === 'var-ref' && typeof s.name === 'string') {\n return { target: s.name, hidden: obj.hidden === true }\n }\n }\n const self = entry as { kind?: string; name?: string }\n // 顶层 var-ref 条目(keep: [part0] → part0 是 var-ref 形态):不携带 hidden\n if (self.kind === 'var-ref' && typeof self.name === 'string') {\n return { target: self.name }\n }\n }\n return undefined\n}\n\n// ── 主入口 ──\n\n/** extractMetadata 的选项(全部可选;影响宽松引用与缺省命名空间解析)。 */\nexport interface ExtractMetadataOptions {\n /** 缺省命名空间绑定名(默认 'cad';registerLib default 绑定改名时传入) */\n defaultNs?: string\n /** 宽松变量(append:未知引用按外部变量透传,由调用方对 ctx 校验) */\n looseVars?: boolean\n /** 宽松本机函数调用(codeToArgs 单行提取:裸 callee 不在函数集也放行) */\n looseLocalCalls?: boolean\n /** 顶层 import 绑定名(单行提取时宿主从脚本 imports 提供) */\n namespaces?: string[]\n /** 安全策略档位(缺省 'strict';A1 接入点:extractMetadata 第一行过 Scanner) */\n security?: SecurityPolicy\n /** S7 命名空间保护名(缺省 = namespaces;append 场景可指定更小集合仅命名空间名) */\n nsNames?: string[]\n /**\n * P4/P6 (unit-system D8): callee → 量纲声明的映射,供 dimension pass 做静态\n * 量纲校验。调用方从 op 注册表取出透传(lang 不碰 op 注册表铁律)。\n */\n opDims?: OpDimMap\n}\n\n/**\n * P4/P6 (unit-system D8): 一个 op 的脚本面量纲声明,供静态 dimension 检查使用。\n * 由调用方(CadRuntime/CLI/codeToArgs)从 op 注册表取出透传,`lang/` 本身不碰\n * op 注册表(铁律:lang 不得依赖 op 注册表)。\n */\nexport interface OpDimDecl {\n /** 参数名 → 量纲;`'plain'` 为纯数字(design doc §3.1);缺省键视为无量纲。 */\n paramDims?: Record<string, DimDecl>\n /** 函数调用结果的量纲。 */\n retDim?: DimName\n /** D11 slot-map(positional→object 装箱表);位置形态校验用。 */\n slotMap?: { keys: string[]; vec3Keys?: string[]; shapeArity?: number }\n /** D8+: 递归 DimSpec(结构化参数,如 cad.sketch 的 shapes[]/constraints[])。 */\n spec?: DimSpec\n /** D8+: 量纲校验模式:'error'(缺省,阻断)或 'warn'(警告不阻断)。 */\n dimCheck?: 'error' | 'warn'\n}\n\n/** P4/P6: callee 名 → 量纲声明(供 extractMetadata 的 dimension pass 消费)。 */\nexport type OpDimMap = Record<string, OpDimDecl>\n\n/**\n * 从源码文本提取 UI 通道元数据(UiMetadata)。\n *\n * 兼容面:analyzeCode/codeToArgs 实现建立在本函数之上(statement-summary.ts /\n * code-to-args.ts),lines 面与 MetadataExtractor 投影逐字相等(A-16 对拍,\n * id 兼容 's'+lineNo 规则:其余字段逐字相等)。不参与执行、不生成可执行代码。\n *\n * 行号语义与 MetadataExtractor 完全一致:\n * - 容器代码(含 export default)→ 取容器箭头函数体,行号 = 原文行号;\n * - 扁平代码 → 按 MetadataExtractor 同款封装(import 段提升到 export default 之外,\n * `export default async (ns) => {\\n...` 包裹),行号扣封装偏移后 = analyzeCode\n * 报告的 line。\n *\n * @param code - the .fai.js source text.\n * @param options - optional extraction options.\n * @returns the full UI metadata surface.\n * @throws ParseError — 含行号(analyzeCode 抛错契约不变)。\n */\nexport function extractMetadata(code: string, options?: ExtractMetadataOptions): UiMetadata {\n // A1:安全门禁前置——在 acornParse 之前对原始 code 扫描,行号与用户编辑器一致。\n // security 与 looseVars 正交:安全规则不受 looseVars 影响。\n assertSecure(code, {\n policy: options?.security ?? 'strict',\n knownNames: [options?.defaultNs ?? 'cad', ...(options?.namespaces ?? [])],\n ...(options?.nsNames ? { nsNames: options.nsNames } : {}),\n defaultNs: options?.defaultNs,\n })\n\n const defaultNsName = options?.defaultNs ?? 'cad'\n\n // 符号表(每行提取共享:参数名/值、已声明变量、命名空间绑定、函数集、keep 表)\n const symbols: SymbolTable = {\n paramNames: new Set<string>(),\n paramValues: new Map<string, unknown>(),\n declared: new Set<string>(),\n nsBindings: new Map<string, string>(),\n localFnParams: new Map<string, string[]>(),\n defaultNsName,\n keep: new Map<number, KeepEntry[]>(),\n }\n\n // ── 0. 顶层 import 预扫描(与 MetadataExtractor 同构;容器/扁平都允许头部 import) ──\n let importBlock: { start: number; end: number } | null = null\n {\n const seen: ASTNode[] = []\n try {\n const prescan = acornParse(code, { ecmaVersion: 'latest', sourceType: 'module', locations: true, ranges: true })\n for (const n of prescan.body) {\n if (n.type === 'ImportDeclaration') seen.push(n)\n }\n } catch {\n // 原始文本非合法 module(如含 return)→ 交给主解析报错\n }\n if (seen.length > 0) {\n const first = seen[0]\n if (!onlyWhitespaceAndComments(code.slice(0, first.start))) {\n throw new ParseError('import statements must appear as a contiguous block at the top of the file', lineOf(first) ?? 1, 'E_IMPORT')\n }\n for (let i = 1; i < seen.length; i++) {\n const gap = code.slice(seen[i - 1].end, seen[i].start)\n if (!onlyWhitespaceAndComments(gap)) {\n throw new ParseError('import statements must be contiguous (no statements between imports)', lineOf(seen[i]) ?? 1, 'E_IMPORT')\n }\n }\n importBlock = { start: seen[0].start, end: seen[seen.length - 1].end }\n }\n }\n\n // ── 0.5 扁平代码封装(与 MetadataExtractor 逐字同款;容器零封装) ──\n // lineOffset:封装头占用的行数(语句行号 = acorn loc 行号 − lineOffset)。\n // codeOffset:封装头字符长度(函数体原文区间坐标换算;容器格式为 0)。\n let parseCode = code\n let lineOffset = code.includes('export default') ? 0 : 1\n let codeOffset = 0\n if (lineOffset) {\n if (importBlock) {\n const prefix = code.slice(0, importBlock.start)\n const importText = code.slice(importBlock.start, importBlock.end)\n const rest = code.slice(importBlock.end)\n parseCode = `${prefix}${importText}\\nexport default async (${defaultNsName}) => {\\n${rest}\\n}`\n lineOffset = countLines(prefix + importText) + 1\n // 字符偏移 = 注入的 '\\n'(importText 后)+ 封装头长度。原实现 29+len 少算 1\n //(未计入 importText 与封装间的换行),导致 import 场景的区间坐标错位——\n // bodyRange/ArgSource.start/end 等归一化要落到原 code 坐标。\n codeOffset = 1 + `export default async (${defaultNsName}) => {\\n`.length\n } else {\n parseCode = `export default async (${defaultNsName}) => {\\n${code}\\n}`\n lineOffset = 1\n codeOffset = `export default async (${defaultNsName}) => {\\n`.length\n }\n }\n\n // ── 1. 主解析(acorn module) ──\n let ast: ASTNode\n try {\n ast = acornParse(parseCode, {\n ecmaVersion: 'latest',\n sourceType: 'module',\n locations: true,\n ranges: true,\n })\n } catch (err) {\n const syntaxErr = err as { message?: string; loc?: { line: number } }\n const loc = syntaxErr.loc?.line ?? 1\n throw new ParseError(`SyntaxError: ${syntaxErr.message ?? String(err)}`, loc, 'E_SYNTAX')\n }\n\n // 顶层 import(模块级,封装外)→ ImportEntry 表\n const imports: ImportEntry[] = []\n for (const n of ast.body) {\n if (n.type !== 'ImportDeclaration') continue\n const imp = classifyImport(n)\n imports.push(imp)\n if (imp.kind === 'namespace' && imp.localName) {\n symbols.nsBindings.set(imp.localName, imp.packageName ?? imp.localName)\n }\n if (imp.kind === 'named') {\n for (const b of imp.bindings) symbols.declared.add(b)\n }\n }\n // 宿主显式提供的命名空间绑定(codeToArgs 单行提取场景)\n for (const n of options?.namespaces ?? []) symbols.nsBindings.set(n, n)\n\n // 顶层 export default → 容器箭头函数体(封装文本下必存在)\n const exportDecl = ast.body.find((n: ASTNode) => n.type === 'ExportDefaultDeclaration')\n if (!exportDecl) {\n throw new ParseError('missing `export default`', 1)\n }\n const arrowFn = exportDecl.declaration\n if (\n arrowFn?.type !== 'ArrowFunctionExpression' ||\n !arrowFn.async ||\n arrowFn.params.length !== 1 ||\n arrowFn.params[0]?.type !== 'Identifier' ||\n arrowFn.params[0].name !== defaultNsName\n ) {\n throw new ParseError(`expected \\`export default async (${defaultNsName}) => { ... }\\``, lineOf(exportDecl))\n }\n const body = arrowFn.body\n if (body?.type !== 'BlockStatement') {\n throw new ParseError('expected arrow function body to be a block statement { ... }', lineOf(arrowFn))\n }\n const bodyNodes = body.body\n\n // 顶层函数预扫描(本机函数集)\n for (const n of bodyNodes) {\n if (n.type === 'FunctionDeclaration' && n.id?.type === 'Identifier') {\n const fparams: string[] = []\n for (const p of n.params ?? []) {\n if (p?.type === 'Identifier') fparams.push(p.name)\n else throw new ParseError('function params must be plain identifiers', lineOf(n), 'E_STATEMENT')\n }\n symbols.localFnParams.set(n.id.name, fparams)\n symbols.declared.add(n.id.name)\n }\n }\n\n const lines: StatementSummary[] = []\n const params: ParamEntry[] = []\n const functions: FunctionEntry[] = []\n const blocks: BlockEntry[] = []\n let meta: ScriptMetaIR | undefined\n let terminalShapes: TerminalShape[] | undefined\n // P0-B:参数槽记录累积(跨语句共享,语句顺序追加)\n const argSources: ArgSource[] = []\n // P6/D8: dimension 校验错误累积(跨语句共享)\n const allDimErrors: ParseError[] = []\n // P6/D8+: dimension 校验警告累积(dimCheck='warn' 的 op;不阻断)\n const allDimWarnings: ParseError[] = []\n\n // ── 逐顶层语句分类 ──\n for (const stmtNode of bodyNodes) {\n const rawLine = lineOf(stmtNode)\n const line = lineOffset ? rawLine - lineOffset : rawLine\n const vctx: ValueParseCtx = {\n symbols,\n looseVars: options?.looseVars === true,\n looseLocalCalls: options?.looseLocalCalls === true,\n sourceText: parseCode,\n computed: { value: false },\n stmtId: asStmtId(`s${line}`),\n codeOffset,\n argSources,\n opDims: options?.opDims,\n dimErrors: allDimErrors,\n dimWarnings: allDimWarnings,\n }\n\n switch (stmtNode.type) {\n case 'ImportDeclaration':\n break // 已在顶部收集(封装文本下 import 不在此层)\n\n case 'FunctionDeclaration': {\n const name = stmtNode.id?.name\n const fparams: string[] = symbols.localFnParams.get(name) ?? []\n const bodyStart = stmtNode.body.start + 1 - codeOffset\n const bodyEnd = stmtNode.body.end - 1 - codeOffset\n const bodyText = parseCode.slice(stmtNode.body.start + 1, stmtNode.body.end - 1)\n functions.push({\n name,\n lineNo: line,\n params: fparams,\n bodyRange: { start: bodyStart, end: bodyEnd },\n body: bodyText,\n bodyHash: fnv1a32(bodyText),\n })\n break\n }\n\n case 'VariableDeclaration': {\n if (stmtNode.kind !== 'const' && stmtNode.kind !== 'let') {\n throw new ParseError(`only 'const' or 'let' declarations allowed, got '${stmtNode.kind}'`, line, 'E_STATEMENT')\n }\n for (const decl of stmtNode.declarations) {\n const dline = lineOf(decl)\n const dlineSrc = lineOffset ? dline - lineOffset : dline\n\n // 解构 op 行\n if (decl.id?.type === 'ObjectPattern') {\n const summary = classifyDestructure(decl, dlineSrc, vctx)\n lines.push(summary)\n for (const out of summary.outputs) symbols.declared.add(String(out))\n continue\n }\n if (decl.id?.type !== 'Identifier') {\n throw new ParseError('expected identifier on left side of const declaration', dlineSrc, 'E_STATEMENT')\n }\n const name = decl.id.name\n let init = decl.init\n if (init?.type === 'AwaitExpression') init = init.argument\n if (init?.type === 'ImportExpression') {\n throw new ParseError('dynamic import() is not allowed in faijs (no control flow)', dlineSrc, 'E_CONTROL_FLOW')\n }\n\n // op 行:const x = <ns>.<op>(...) / <localFn>(...)\n if (init?.type === 'CallExpression' && isOpCallCallee(init, vctx)) {\n const summary = classifyOpCall(init, dlineSrc, vctx, { output: name, hasAssignment: true })\n lines.push(summary)\n symbols.declared.add(name)\n continue\n }\n\n // P0-B:参数行 RHS 槽——整条 init 源码区间记一条\n //(path:单声明行 'rhs';一行多参声明行 'rhs:<name>' 区分)。\n if (init) {\n const rhsPath = stmtNode.declarations.length > 1 ? `rhs:${name}` : 'rhs'\n recordArgSource(init, vctx, rhsPath)\n }\n\n // 参数行:const x = <literal> / <纯字面量折叠>(值已知)\n const isLiteral =\n init?.type === 'Literal' ||\n init?.type === 'ArrayExpression' ||\n init?.type === 'ObjectExpression'\n const isNegLiteral =\n init?.type === 'UnaryExpression' && init.operator === '-' && init.argument?.type === 'Literal'\n if (isLiteral || isNegLiteral) {\n const value = isNegLiteral\n ? -init.argument.value as number\n : isLiteralValue(init)\n ? parseLiteralValue(init)\n : parseValueExpr(init, vctx, null) as unknown\n const literalLike = isNegLiteral || init.type === 'Literal'\n params.push({\n name,\n lineNo: dlineSrc,\n value,\n type: typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'bool' : 'vec3',\n computed: !literalLike,\n })\n symbols.paramNames.add(name)\n symbols.declared.add(name)\n if (literalLike) symbols.paramValues.set(name, value)\n continue\n }\n\n // 其余 const 形态:computed 参数(派生常量 / 引用表达式)——A-11 语法自由\n if (init) {\n params.push({ name, lineNo: dlineSrc, value: undefined, type: 'vec3', computed: true })\n symbols.declared.add(name)\n continue\n }\n throw new ParseError(`unsupported const declaration: init type = ${init?.type ?? 'null'}`, line, 'E_STATEMENT')\n }\n break\n }\n\n case 'ExpressionStatement': {\n classifyExpression(stmtNode.expression, line, vctx, lines)\n break\n }\n\n case 'ReturnStatement': {\n const r = parseReturnStatement(stmtNode, vctx)\n meta = r.meta\n terminalShapes = r.terminalShapes\n break\n }\n\n default: {\n // 控制流/块 → 只读块节点(R8)\n if (CONTROL_FLOW_TYPES.has(stmtNode.type)) {\n blocks.push({\n lineNo: line,\n kind: blockKind(stmtNode.type),\n astKind: stmtNode.type,\n source: parseCode.slice(stmtNode.start, stmtNode.end),\n range: { start: stmtNode.start - codeOffset, end: stmtNode.end - codeOffset },\n })\n break\n }\n if (stmtNode.type === 'ClassDeclaration') {\n throw new ParseError('class declarations are not allowed in faijs', line, 'E_STATEMENT')\n }\n if (stmtNode.type === 'NewExpression') {\n throw new ParseError('\"new\" expressions are not allowed in faijs (new Function is a safety red line)', line, 'E_STATEMENT')\n }\n if (stmtNode.type === 'WithStatement') {\n throw new ParseError('\"with\" statements are not allowed in faijs (strict mode)', line, 'E_CONTROL_FLOW')\n }\n // 其余未知顶层语句 → 只读块\n blocks.push({\n lineNo: line,\n kind: 'other',\n astKind: stmtNode.type,\n source: parseCode.slice(stmtNode.start, stmtNode.end),\n range: { start: stmtNode.start - codeOffset, end: stmtNode.end - codeOffset },\n })\n break\n }\n }\n }\n\n // P0-B:名称集合 = 参数 ∪ 已声明变量 ∪ 命名空间绑定 ∪ 本地函数名 ∪ 单位常量(字典序去重)。\n // 宿主把「参数表达式」中的未知标识符当作参数名(期望名)处理时用它做联想。\n // P6/D7:单位常量名(MM, INCH, DEGREE, …)加入 knownNames,使表达式实时校验通过。\n // 2026-10-06:其余 S4 安全全局(Math / JSON / console / …)不入此表——引用合法性由\n // collectExprIdentifiers + isSafeGlobalIdent 判定,与 knownNames 无关(见 names 字段注释)。\n const names = [\n ...new Set([\n ...symbols.paramNames,\n ...symbols.declared,\n ...symbols.nsBindings.keys(),\n ...symbols.localFnParams.keys(),\n ...SCRIPT_UNIT_NAMES,\n ]),\n ].sort()\n\n // P6/D8: dimension 校验——如果有错误,抛出第一个(用 stage='dimension' 包装)\n if (allDimErrors.length > 0) {\n throw allDimErrors[0]\n }\n\n return { lines, params, imports, functions, blocks, keep: symbols.keep, meta, terminalShapes, argSources, names, dimWarnings: allDimWarnings }\n}\n\nfunction isLiteralValue(init: ASTNode): boolean {\n return init.type === 'Literal'\n}\n\n/** 字面量(非数组/对象)直接取值。 */\nfunction parseLiteralValue(init: ASTNode): unknown {\n return init.value\n}\n\nfunction countLines(text: string): number {\n if (text === '') return 0\n return (text.match(/\\n/g) ?? []).length + 1\n}\n\nfunction onlyWhitespaceAndComments(text: string): boolean {\n return text\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\/\\/[^\\n]*/g, '')\n .trim() === ''\n}\n\nfunction blockKind(type: string): BlockEntry['kind'] {\n switch (type) {\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n return 'loop'\n case 'IfStatement':\n return 'condition'\n case 'SwitchStatement':\n return 'switch'\n default:\n return 'other'\n }\n}\n\nfunction classifyImport(decl: ASTNode): ImportEntry {\n const line = lineOf(decl)\n const specifier = decl.source?.value\n if (typeof specifier !== 'string' || specifier === '') {\n throw new ParseError('import must have a string specifier', line, 'E_IMPORT')\n }\n const packageName = derivePackageName(specifier)\n const specs = decl.specifiers ?? []\n if (specs.length === 0) {\n throw new ParseError('side-effect imports are not supported (use import * as ns from \"pkg\")', line, 'E_IMPORT')\n }\n const first = specs[0]\n if (first.type === 'ImportNamespaceSpecifier') {\n return { lineNo: line, specifier, kind: 'namespace', bindings: [first.local?.name], localName: first.local?.name, packageName }\n }\n if (first.type === 'ImportDefaultSpecifier') {\n return { lineNo: line, specifier, kind: 'default', bindings: [first.local?.name], localName: first.local?.name, packageName }\n }\n const bindings: string[] = specs.map((s: ASTNode) => s.local?.name as string)\n return { lineNo: line, specifier, kind: 'named', bindings, localName: bindings[0], packageName }\n}\n\n/** init 是否为 op 调用 callee(<ns>.<op> / 裸本机函数)。 */\nfunction isOpCallCallee(init: ASTNode, ctx: ValueParseCtx): boolean {\n const callee = init.callee\n if (callee?.type === 'MemberExpression') {\n return (\n callee.object?.type === 'Identifier' &&\n callee.property?.type === 'Identifier' &&\n (ctx.symbols.nsBindings.has(callee.object.name) ||\n callee.object.name === ctx.symbols.defaultNsName ||\n ctx.symbols.declared.has(callee.object.name) ||\n ctx.looseVars)\n )\n }\n if (callee?.type === 'Identifier') {\n return ctx.symbols.localFnParams.has(callee.name) || ctx.looseLocalCalls\n }\n return false\n}\n\n/** 从调用表达式构造 op 行(output 单输出 / 副作用无输出)。 */\nfunction classifyOpCall(\n call: ASTNode,\n line: number,\n vctx: ValueParseCtx,\n opts: { output?: string; hasAssignment: boolean },\n): StatementSummary {\n const calleeNode = call.callee\n let callee: string\n let namespace: string | undefined\n let local: boolean | undefined\n let receiver: string | undefined\n\n if (calleeNode?.type === 'MemberExpression' && calleeNode.object?.type === 'Identifier' && calleeNode.property?.type === 'Identifier') {\n const objName = calleeNode.object.name\n if (vctx.symbols.nsBindings.has(objName) || objName === vctx.symbols.defaultNsName) {\n namespace = objName === vctx.symbols.defaultNsName ? undefined : objName\n callee = calleeNode.property.name\n } else {\n receiver = objName\n callee = calleeNode.property.name\n }\n } else if (calleeNode?.type === 'Identifier') {\n local = true\n callee = calleeNode.name\n } else {\n throw new ParseError('expected <ns>.<op>(...) or local function call', line, 'E_STATEMENT')\n }\n\n const positional = parsePositionalArgs(call.arguments ?? [], vctx, line)\n\n // P6/D8: dimension pass — check each argument against declared paramDims\n if (vctx.opDims && call.arguments) {\n // Build the full callee key for opDims lookup: 'cad.box' for default ns,\n // 'otherNs.box' for non-default ns, or just 'box' for local fn.\n const dimKey = namespace !== undefined ? `${namespace}.${callee}` : `${vctx.symbols.defaultNsName}.${callee}`\n const localKey = local ? callee : dimKey\n checkOpCallDims(call, local ? localKey : dimKey, vctx)\n }\n\n const summary = buildLineSummary({\n callee,\n line,\n ctx: vctx,\n positional,\n namespace,\n local,\n receiver,\n outputs: opts.output !== undefined ? [opts.output] : [],\n hasAssignment: opts.hasAssignment,\n })\n extractKeepEntries(positional, line, vctx.symbols)\n attachAssemblySummary(summary)\n return summary\n}\n\n/**\n * P6/D8: Check dimension constraints on op call arguments.\n *\n * Handles both object-form (`cad.box({ width: 10 * MM })`) and positional-form\n * (`cad.box(10 * MM, 10 * MM, 10 * MM)`). For positional form, uses slotMap\n * to map positional args to parameter names. For vec3 params, checks each element.\n *\n * Errors are accumulated in `ctx.dimErrors` (does not throw).\n */\nfunction checkOpCallDims(call: ASTNode, calleeKey: string, ctx: ValueParseCtx): void {\n const decl = ctx.opDims?.[calleeKey]\n if (!decl) return\n\n const args = call.arguments ?? []\n if (args.length === 0) return\n\n // D8+: redirect dim errors to warnings for ops in 'warn' mode\n const savedTarget = ctx.dimErrors\n if (decl.dimCheck === 'warn') {\n ctx.dimErrors = ctx.dimWarnings\n }\n try {\n // D8+: recursive spec check (e.g. cad.sketch's shapes[]/constraints[])\n if (decl.spec) {\n for (const arg of args) {\n if (arg?.type === 'ObjectExpression') {\n checkValueWithSpec(arg, decl.spec, ctx)\n break\n }\n }\n }\n\n if (!decl.paramDims) return\n\n const slotMap = decl.slotMap\n const shapeArity = slotMap?.shapeArity ?? 0\n\n // ── Object form ──\n // Look for an ObjectExpression arg that contains keys matching paramDims.\n // It could be at position `shapeArity` (with slotMap) or at any position\n // (without slotMap — e.g. fai_extrude(shape, { length: 5 })).\n if (slotMap) {\n const firstNonShape = args[shapeArity]\n if (firstNonShape?.type === 'ObjectExpression') {\n const hasDimKeys = firstNonShape.properties.some(\n (p: ASTNode) => p?.type === 'Property' && p.key?.type === 'Identifier' && p.key.name in decl.paramDims!,\n )\n if (hasDimKeys) {\n for (const prop of firstNonShape.properties) {\n if (prop?.type !== 'Property') continue\n const keyNode = prop.key\n if (keyNode?.type !== 'Identifier') continue\n const paramName = keyNode.name\n const dim = decl.paramDims[paramName]\n if (!dim || dim === 'plain') continue\n\n checkDim(prop.value, dim, ctx)\n\n if (slotMap.vec3Keys?.includes(paramName) && prop.value?.type === 'ArrayExpression') {\n for (const el of prop.value.elements ?? []) {\n if (el) checkDim(el, dim, ctx)\n }\n }\n }\n return\n }\n }\n } else {\n // No slotMap — scan all args for ObjectExpression with dim keys\n for (const arg of args) {\n if (arg?.type !== 'ObjectExpression') continue\n const hasDimKeys = arg.properties.some(\n (p: ASTNode) => p?.type === 'Property' && p.key?.type === 'Identifier' && p.key.name in decl.paramDims!,\n )\n if (!hasDimKeys) continue\n for (const prop of arg.properties) {\n if (prop?.type !== 'Property') continue\n const keyNode = prop.key\n if (keyNode?.type !== 'Identifier') continue\n const paramName = keyNode.name\n const dim = decl.paramDims[paramName]\n if (!dim || dim === 'plain') continue\n\n checkDim(prop.value, dim, ctx)\n }\n return\n }\n }\n\n // ── Positional form ──\n if (!slotMap) return\n const keys = slotMap.keys\n const vec3Keys = new Set(slotMap.vec3Keys ?? [])\n let keyIdx = 0\n for (let i = shapeArity; i < args.length && keyIdx < keys.length; i++) {\n const arg = args[i]\n if (arg?.type === 'ObjectExpression') break // trailing options object\n\n const paramName = keys[keyIdx]\n const dim = decl.paramDims[paramName]\n keyIdx++\n\n if (!dim || dim === 'plain') continue\n\n if (vec3Keys.has(paramName) && arg?.type === 'ArrayExpression') {\n for (const el of arg.elements ?? []) {\n if (el) checkDim(el, dim, ctx)\n }\n } else if (arg) {\n checkDim(arg, dim, ctx)\n }\n }\n } finally {\n ctx.dimErrors = savedTarget\n }\n}\n\n/**\n * P2-f4:装配语句摘要附加(cad.assembly / asmN.do_assemble / asmN.solve)。\n *\n * - `cad.assembly`(缺省命名空间,namespace===undefined)→ isAssembly + assembly 摘要。\n * 摘要只含 {name?, memberCount, constraintTypes};约束全文不提取(宿主 args 通道\n * 保留,model-store.ts:973 继续从 structuralStmtArgs(stmt).constraints 取)。\n * - `asmN.do_assemble` / `asmN.solve`(receiver 调用)→ isAssembly(装配行为语句)。\n */\nfunction attachAssemblySummary(summary: StatementSummary): void {\n if (summary.callee === 'assembly' && summary.namespace === undefined) {\n const members = summary.args.members\n const constraints = summary.args.constraints\n if (!Array.isArray(members) || !Array.isArray(constraints)) return\n const constraintTypes: string[] = []\n for (const c of constraints) {\n if (c && typeof c === 'object' && typeof (c as { type?: unknown }).type === 'string') {\n constraintTypes.push((c as { type: string }).type)\n }\n }\n const name = summary.args.name\n summary.isAssembly = true\n summary.assembly = {\n ...(typeof name === 'string' ? { name } : {}),\n memberCount: members.length,\n constraintTypes,\n }\n return\n }\n if ((summary.callee === 'do_assemble' || summary.callee === 'solve') && summary.receiver !== undefined) {\n summary.isAssembly = true\n }\n}\n\n/** 从解构调用构造 op 行(const { k1: v1, k2 } = <ns>.<op>(...))。 */\nfunction classifyDestructure(decl: ASTNode, line: number, vctx: ValueParseCtx): StatementSummary {\n const props = decl.id.properties\n if (props.length === 0) {\n throw new ParseError('destructuring must have at least one property', line, 'E_STATEMENT')\n }\n const keys: string[] = []\n const valueNames: string[] = []\n for (const prop of props) {\n if (prop.type !== 'Property' || prop.key?.type !== 'Identifier') {\n throw new ParseError('destructuring properties must be identifiers', line, 'E_STATEMENT')\n }\n if (prop.value?.type !== 'Identifier') {\n throw new ParseError(`destructuring value for \"${prop.key.name}\" must be an identifier`, line, 'E_STATEMENT')\n }\n keys.push(prop.key.name)\n valueNames.push(prop.value.name)\n }\n let init = decl.init\n if (init?.type === 'AwaitExpression') init = init.argument\n if (init?.type !== 'CallExpression') {\n throw new ParseError(`expected <ns>.<op>(...) or local function call in destructuring, got ${init?.type ?? 'null'}`, line, 'E_STATEMENT')\n }\n\n const calleeNode = init.callee\n let callee: string\n let namespace: string | undefined\n let local: boolean | undefined\n let receiver: string | undefined\n if (calleeNode?.type === 'MemberExpression' && calleeNode.object?.type === 'Identifier' && calleeNode.property?.type === 'Identifier') {\n const objName = calleeNode.object.name\n if (vctx.symbols.nsBindings.has(objName) || objName === vctx.symbols.defaultNsName) {\n namespace = objName === vctx.symbols.defaultNsName ? undefined : objName\n callee = calleeNode.property.name\n } else {\n receiver = objName\n callee = calleeNode.property.name\n }\n } else if (calleeNode?.type === 'Identifier') {\n local = true\n callee = calleeNode.name\n } else {\n throw new ParseError('destructuring is only allowed for <ns>.<op>(...) or local function calls', line, 'E_STATEMENT')\n }\n\n const positional = parsePositionalArgs(init.arguments ?? [], vctx, line)\n const summary = buildLineSummary({\n callee,\n line,\n ctx: vctx,\n positional,\n namespace,\n local,\n receiver,\n outputs: valueNames,\n outputKeys: keys,\n hasAssignment: true,\n })\n extractKeepEntries(positional, line, vctx.symbols)\n return summary\n}\n\n/** ExpressionStatement 分类(重赋值 / 本机副作用调用 / 成员方法 / 命名空间裸调用)。 */\nfunction classifyExpression(\n expr: ASTNode,\n line: number,\n vctx: ValueParseCtx,\n lines: StatementSummary[],\n): void {\n if (expr?.type === 'ImportExpression') {\n throw new ParseError('dynamic import() is not allowed in faijs (no control flow)', line, 'E_CONTROL_FLOW')\n }\n if (expr?.type === 'CallExpression' && expr.callee?.type === 'Identifier' && expr.callee.name === 'eval') {\n throw new ParseError('eval is not allowed in faijs', line, 'E_STATEMENT')\n }\n if (expr?.type === 'NewExpression') {\n throw new ParseError('\"new\" expressions are not allowed in faijs (new Function is a safety red line)', line, 'E_STATEMENT')\n }\n\n // 裸重赋值 part0 = [await] cad.op(...)\n if (expr?.type === 'AssignmentExpression' && expr.operator === '=' && expr.left?.type === 'Identifier') {\n const varName = expr.left.name\n if (!vctx.symbols.declared.has(varName)) {\n if (vctx.looseVars) {\n vctx.symbols.declared.add(varName)\n } else {\n throw new ParseError(`unknown variable \"${varName}\" in re-assignment`, line, 'E_REFERENCE')\n }\n }\n let init = expr.right\n if (init?.type === 'AwaitExpression') init = init.argument\n if (init?.type === 'CallExpression' && isOpCallCallee(init, vctx)) {\n const summary = classifyOpCall(init, line, vctx, { output: varName, hasAssignment: true })\n lines.push(summary)\n return\n }\n throw new ParseError('re-assignment must be a cad.op() call', line, 'E_STATEMENT')\n }\n\n // 成员方法 / 命名空间裸调用(无赋值)\n if (expr?.type === 'CallExpression' && expr.callee?.type === 'MemberExpression' &&\n expr.callee.object?.type === 'Identifier' && expr.callee.property?.type === 'Identifier') {\n const objName = expr.callee.object.name\n const isNs = vctx.symbols.nsBindings.has(objName) || objName === vctx.symbols.defaultNsName\n const isReceiver = vctx.symbols.declared.has(objName)\n if (isNs || isReceiver || vctx.looseVars) {\n const summary = classifyOpCall(expr, line, vctx, { hasAssignment: false })\n lines.push(summary)\n return\n }\n throw new ParseError(`unknown variable \"${objName}\" in .${expr.callee.property.name}() call`, line, 'E_REFERENCE')\n }\n\n // 本机函数副作用调用 myFn(part0, {...})\n if (expr?.type === 'CallExpression' && expr.callee?.type === 'Identifier') {\n const fnName = expr.callee.name\n if (vctx.symbols.localFnParams.has(fnName) || vctx.looseLocalCalls) {\n const summary = classifyOpCall(expr, line, vctx, { hasAssignment: false })\n lines.push(summary)\n return\n }\n throw new ParseError(`function \"${fnName}\" does not exist in this script`, line, 'E_REFERENCE')\n }\n\n throw new ParseError(\n `bare expression statements not allowed; use 'const part0 = cad.op(...)' instead`,\n line,\n 'E_STATEMENT',\n )\n}\n"]}
|