@flighthq/physics3d 0.4.0-next.1821.efb1cbc → 0.4.0-next.1836.147ae1e

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.
@@ -1 +1 @@
1
- {"version":3,"file":"broadphase.d.ts","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAO9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAO1E;AAQD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAO3F"}
1
+ {"version":3,"file":"broadphase.d.ts","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAa9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAO1E;AAQD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAO3F"}
@@ -1,4 +1,6 @@
1
1
  import { updatePhysics3DColliderWorldShape, writePhysics3DColliderBounds } from './colliderTransform';
2
+ import { getPhysics3DBroadphaseBodyIndices, publishPhysics3DBroadphaseBody, withdrawPhysics3DBroadphaseBody, } from './physics3DBroadphasePublication';
3
+ import { reportPhysics3DSpatialIndexing } from './physics3DSpatialIndexingGuards';
2
4
  // Refreshes every collider's world shape and republishes its body's bounds to the broadphase index. The
3
5
  // step and the public world queries share this path, so a query observes the body's current authored
4
6
  // pose rather than the pre-integration snapshot the most recent contact set was built from.
@@ -31,6 +33,7 @@ export function synchronizePhysics3DSweptBroadphase(world, dt) {
31
33
  // refines a body pair down to its collider pairs — which is where the filter and sensor decisions live
32
34
  // anyway.
33
35
  function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
36
+ const publishedBodyIndices = getPhysics3DBroadphaseBodyIndices(world);
34
37
  for (let bodyIndex = 0; bodyIndex < world.bodies.length; bodyIndex += 1) {
35
38
  const body = world.bodies[bodyIndex];
36
39
  let minX = Infinity;
@@ -69,7 +72,7 @@ function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
69
72
  // No collider produced bounds, so there is nothing to index. Withdraw rather than skip: the id may
70
73
  // have been indexed on a previous step, and stale bounds would keep returning a body that has since
71
74
  // lost its geometry.
72
- world.index.removeSpatialObject(body.index);
75
+ withdrawPhysics3DBroadphaseBody(world, body.index, publishedBodyIndices);
73
76
  continue;
74
77
  }
75
78
  if (dt > 0 && body.type !== 'static' && !body.sleeping) {
@@ -116,7 +119,7 @@ function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
116
119
  maxX - minX > MAX_SIMULATED_EXTENT ||
117
120
  maxY - minY > MAX_SIMULATED_EXTENT ||
118
121
  maxZ - minZ > MAX_SIMULATED_EXTENT) {
119
- world.index.removeSpatialObject(body.index);
122
+ withdrawPhysics3DBroadphaseBody(world, body.index, publishedBodyIndices);
120
123
  continue;
121
124
  }
122
125
  scratch.bodyBounds.minX = minX;
@@ -128,8 +131,9 @@ function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
128
131
  scratch.bodyBounds.maxX = paddedUpperBound(maxX);
129
132
  scratch.bodyBounds.maxY = paddedUpperBound(maxY);
130
133
  scratch.bodyBounds.maxZ = paddedUpperBound(maxZ);
131
- world.index.updateSpatialObject(body.index, scratch.bodyBounds);
134
+ publishPhysics3DBroadphaseBody(world, body.index, scratch.bodyBounds, publishedBodyIndices);
132
135
  }
136
+ reportPhysics3DSpatialIndexing(world);
133
137
  }
134
138
  function paddedUpperBound(value) {
135
139
  const padded = value + Math.max(1, Math.abs(value)) * Number.EPSILON * 4;
@@ -1 +1 @@
1
- {"version":3,"file":"broadphase.js","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEtG,wGAAwG;AACxG,qGAAqG;AACrG,4FAA4F;AAC5F,MAAM,UAAU,8BAA8B,CAAC,KAAqB;IAClE,MAAM,OAAO,GAAG,iCAAiC,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,yCAAyC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACT,iCAAiC,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,0GAA0G;AAC1G,EAAE;AACF,uGAAuG;AACvG,yGAAyG;AACzG,mCAAmC;AACnC,MAAM,UAAU,mCAAmC,CAAC,KAAqB,EAAE,EAAU;IACnF,MAAM,OAAO,GAAG,iCAAiC,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,yCAAyC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;YAAS,CAAC;QACT,iCAAiC,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,sGAAsG;AACtG,kGAAkG;AAClG,uGAAuG;AACvG,UAAU;AACV,SAAS,yCAAyC,CAChD,KAAqB,EACrB,OAAmC,EACnC,EAAU;IAEV,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QACrB,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAC9B,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC;YACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC/C,iCAAiC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClD,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3D,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzG,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzG,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzG,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;gBAChF,IAAI,aAAa,GAAG,qBAAqB;oBAAE,qBAAqB,GAAG,aAAa,CAAC;YACnF,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAChB,mGAAmG;YACnG,oGAAoG;YACpG,qBAAqB;YACrB,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC;YAC3G,IAAI,QAAQ,EAAE,CAAC;gBACb,iGAAiG;gBACjG,8FAA8F;gBAC9F,mGAAmG;gBACnG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,IAAI,YAAY,GAAG,CAAC;oBAAE,IAAI,IAAI,YAAY,CAAC;;oBACtC,IAAI,IAAI,YAAY,CAAC;gBAC1B,IAAI,YAAY,GAAG,CAAC;oBAAE,IAAI,IAAI,YAAY,CAAC;;oBACtC,IAAI,IAAI,YAAY,CAAC;gBAC1B,IAAI,YAAY,GAAG,CAAC;oBAAE,IAAI,IAAI,YAAY,CAAC;;oBACtC,IAAI,IAAI,YAAY,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,oGAAoG;QACpG,kGAAkG;QAClG,uCAAuC;QACvC,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,IAAI,GAAG,IAAI,GAAG,oBAAoB;YAClC,IAAI,GAAG,IAAI,GAAG,oBAAoB;YAClC,IAAI,GAAG,IAAI,GAAG,oBAAoB,EAClC,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,kGAAkG;QAClG,sGAAsG;QACtG,4FAA4F;QAC5F,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAED,qGAAqG;AACrG,gGAAgG;AAChG,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAOjC,SAAS,iCAAiC;IACxC,OAAO,8BAA8B,CAAC,GAAG,EAAE,IAAI,gCAAgC,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,gCAAgC;IACvC,OAAO;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;QAChE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CAAC,OAAmC;IAC5E,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,8BAA8B,GAAiC,CAAC,gCAAgC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"broadphase.js","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"enablePhysics3DGuards.d.ts","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"AAWA,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C;AAkBD,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C"}
1
+ {"version":3,"file":"enablePhysics3DGuards.d.ts","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"AAYA,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAqBD,wBAAgB,qBAAqB,IAAI,IAAI,CAM5C"}
@@ -5,6 +5,7 @@ import { explainPhysics3DCollision } from './explainPhysics3DCollision';
5
5
  import { explainPhysics3DJoints } from './explainPhysics3DJoints';
6
6
  import { explainPhysics3DStep } from './explainPhysics3DStep';
7
7
  import { setPhysics3DJointResolutionGuard } from './islands';
8
+ import { setPhysics3DSpatialIndexingGuard } from './physics3DSpatialIndexingGuards';
8
9
  import { setPhysics3DStepGuard } from './step';
9
10
  export function arePhysics3DGuardsEnabled() {
10
11
  return physics3DGuardsEnabled;
@@ -13,10 +14,11 @@ export function disablePhysics3DGuards() {
13
14
  setPhysics3DStepGuard(null);
14
15
  setPhysics3DContactIntakeGuard(null);
15
16
  setPhysics3DJointResolutionGuard(null);
17
+ setPhysics3DSpatialIndexingGuard(null);
16
18
  physics3DGuardsEnabled = false;
17
19
  }
18
- // Installs opt-in diagnostics for the three ways a world can advance without simulating what its data
19
- // appears to describe.
20
+ // Installs opt-in diagnostics for the ways a world can advance without simulating what its data appears
21
+ // to describe, plus the broadphase cost fallback that preserves results while defeating spatial pruning.
20
22
  //
21
23
  // `stepPhysics3D` declines silently on any failed precondition, which is the right behaviour — a NaN
22
24
  // velocity is a state a caller reaches by writing a field, and throwing would take down a frame loop over
@@ -31,12 +33,44 @@ export function disablePhysics3DGuards() {
31
33
  // The third is a stored joint omitted from the solve because its kind has no solver or an endpoint no
32
34
  // longer resolves. Deserializing ahead of registration is supported, so storing it stays silent; stepping
33
35
  // while it remains inert is the moment the opt-in guard names it.
36
+ // The fourth is a body routed through a backend's overflow path. Collision remains correct, but every
37
+ // broadphase query scans that body linearly, so a mixed-scale world can retain the right contacts while
38
+ // silently shedding the pruning its index exists to provide.
34
39
  export function enablePhysics3DGuards() {
35
40
  setPhysics3DStepGuard(warnOnUnsteppablePhysics3DWorld);
36
41
  setPhysics3DContactIntakeGuard(warnOnUndetectablePhysics3DColliders);
37
42
  setPhysics3DJointResolutionGuard(warnOnUnresolvedPhysics3DJoints);
43
+ setPhysics3DSpatialIndexingGuard(warnOnPhysics3DSpatialIndexing);
38
44
  physics3DGuardsEnabled = true;
39
45
  }
46
+ // Reports the broadphase fallback that preserves correctness while materially changing cost. Reading the
47
+ // world's own backend keeps this diagnostic scoped to physics3d instead of taking ownership of spatial's
48
+ // process-wide caller-composed guard.
49
+ function warnOnPhysics3DSpatialIndexing(world) {
50
+ const overflowBodyIndices = [];
51
+ for (let bodyIndex = 0; bodyIndex < world.bodies.length; bodyIndex += 1) {
52
+ const index = world.bodies[bodyIndex].index;
53
+ const explanation = world.index.explainSpatialIndexing(index);
54
+ if (explanation.mode === 'overflow')
55
+ overflowBodyIndices.push(index);
56
+ }
57
+ if (overflowBodyIndices.length > 0) {
58
+ logOnce(`physics3d:spatial-overflow:${getPhysics3DGuardWorldId(world)}`, LogLevel.Warn, {
59
+ bodyIndices: overflowBodyIndices,
60
+ message: `synchronizePhysics3DBroadphase: ${overflowBodyIndices.length} ${overflowBodyIndices.length === 1 ? 'body is' : 'bodies are'} held in the spatial backend's overflow path, so broadphase queries scan ${overflowBodyIndices.length === 1 ? 'it' : 'them'} linearly — pass createBvhSpatialBackend3D() to createPhysics3DWorld(index) for a mixed-scale world, or tune createUniformGridSpatialBackend3D(cellSize) to the workload's typical body size.`,
61
+ status: 'spatial-overflow',
62
+ }, 'physics3d');
63
+ }
64
+ }
65
+ function getPhysics3DGuardWorldId(world) {
66
+ const existing = physics3DGuardWorldIds.get(world);
67
+ if (existing !== undefined)
68
+ return existing;
69
+ const created = nextPhysics3DGuardWorldId;
70
+ nextPhysics3DGuardWorldId += 1;
71
+ physics3DGuardWorldIds.set(world, created);
72
+ return created;
73
+ }
40
74
  // Warns once per distinct set of undetectable collider kinds.
41
75
  //
42
76
  // Keyed on the kinds rather than logged per step, so a 60Hz loop says this once — and a world that later
@@ -116,4 +150,6 @@ const physics3DPreconditionFlags = [
116
150
  'positionIterationsValid',
117
151
  ];
118
152
  let physics3DGuardsEnabled = false;
153
+ let nextPhysics3DGuardWorldId = 0;
154
+ const physics3DGuardWorldIds = new WeakMap();
119
155
  //# sourceMappingURL=enablePhysics3DGuards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enablePhysics3DGuards.js","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enablePhysics3DGuards.js","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Physics3DWorld, SpatialAabb3D } from '@flighthq/types/contract';
2
+ export declare function getPhysics3DBroadphaseBodyIndices(world: Physics3DWorld): Set<number>;
3
+ export declare function publishPhysics3DBroadphaseBody(world: Physics3DWorld, bodyIndex: number, bounds: Readonly<SpatialAabb3D>, bodyIndices?: Set<number>): void;
4
+ export declare function withdrawPhysics3DBroadphaseBody(world: Physics3DWorld, bodyIndex: number, bodyIndices?: Set<number>): void;
5
+ //# sourceMappingURL=physics3DBroadphasePublication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics3DBroadphasePublication.d.ts","sourceRoot":"","sources":["../src/physics3DBroadphasePublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9E,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAepF;AAMD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,WAAW,cAA2C,GACrD,IAAI,CAaN;AAKD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,WAAW,cAA2C,GACrD,IAAI,CAQN"}
@@ -0,0 +1,49 @@
1
+ export function getPhysics3DBroadphaseBodyIndices(world) {
2
+ const existing = physics3DBroadphasePublicationByWorld.get(world);
3
+ if (existing !== undefined && existing.index === world.index)
4
+ return existing.bodyIndices;
5
+ // A hydrated world or a caller-supplied pre-populated backend can already hold bodies before this
6
+ // module has observed it. Rebuild once when the world/index pairing is first seen (and whenever the
7
+ // public backend reference changes), then maintain the set alongside physics3d's own operations.
8
+ const bodyIndices = new Set();
9
+ for (let bodyIndex = 0; bodyIndex < world.bodies.length; bodyIndex += 1) {
10
+ const id = world.bodies[bodyIndex].index;
11
+ if (world.index.explainSpatialIndexing(id).mode !== 'absent')
12
+ bodyIndices.add(id);
13
+ }
14
+ const created = { bodyIndices, index: world.index };
15
+ physics3DBroadphasePublicationByWorld.set(world, created);
16
+ return created.bodyIndices;
17
+ }
18
+ // Uses the backend's distinct insert/update vocabulary even though update is contractually an upsert. The
19
+ // latter is result-correct, but spatial diagnostics deliberately report update of a missing id as a
20
+ // lifecycle fault. Physics3d knows whether it has published each body, so preserving that information
21
+ // keeps a supported add-body-then-add-collider sequence silent without paying explain() on the hot path.
22
+ export function publishPhysics3DBroadphaseBody(world, bodyIndex, bounds, bodyIndices = getPhysics3DBroadphaseBodyIndices(world)) {
23
+ if (bodyIndices.has(bodyIndex)) {
24
+ const updated = world.index.updateSpatialObject(bodyIndex, bounds);
25
+ if (!updated && world.index.explainSpatialIndexing(bodyIndex).mode === 'absent') {
26
+ bodyIndices.delete(bodyIndex);
27
+ }
28
+ return;
29
+ }
30
+ const inserted = world.index.insertSpatialObject(bodyIndex, bounds);
31
+ if (inserted || world.index.explainSpatialIndexing(bodyIndex).mode !== 'absent') {
32
+ bodyIndices.add(bodyIndex);
33
+ }
34
+ }
35
+ // Removes a body's publication only when physics3d previously placed it in the backend. A colliderless
36
+ // body is valid authored state, and repeatedly asking the backend to remove its never-published id would
37
+ // turn that ordinary state into a false `missing-id` lifecycle notice whenever spatial diagnostics are on.
38
+ export function withdrawPhysics3DBroadphaseBody(world, bodyIndex, bodyIndices = getPhysics3DBroadphaseBodyIndices(world)) {
39
+ if (!bodyIndices.delete(bodyIndex)) {
40
+ // A caller-supplied backend may already contain the id when physics3d first sees it. Consult the
41
+ // backend only on this uncommon withdrawal path so stale external publication is still removed
42
+ // without adding another map lookup to every moving body on every step.
43
+ if (world.index.explainSpatialIndexing(bodyIndex).mode === 'absent')
44
+ return;
45
+ }
46
+ world.index.removeSpatialObject(bodyIndex);
47
+ }
48
+ const physics3DBroadphasePublicationByWorld = new WeakMap();
49
+ //# sourceMappingURL=physics3DBroadphasePublication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics3DBroadphasePublication.js","sourceRoot":"","sources":["../src/physics3DBroadphasePublication.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iCAAiC,CAAC,KAAqB;IACrE,MAAM,QAAQ,GAAG,qCAAqC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC,WAAW,CAAC;IAE1F,kGAAkG;IAClG,oGAAoG;IACpG,iGAAiG;IACjG,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACxE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;QACzC,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACpD,qCAAqC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED,0GAA0G;AAC1G,oGAAoG;AACpG,sGAAsG;AACtG,yGAAyG;AACzG,MAAM,UAAU,8BAA8B,CAC5C,KAAqB,EACrB,SAAiB,EACjB,MAA+B,EAC/B,WAAW,GAAG,iCAAiC,CAAC,KAAK,CAAC;IAEtD,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChF,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChF,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,yGAAyG;AACzG,2GAA2G;AAC3G,MAAM,UAAU,+BAA+B,CAC7C,KAAqB,EACrB,SAAiB,EACjB,WAAW,GAAG,iCAAiC,CAAC,KAAK,CAAC;IAEtD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,iGAAiG;QACjG,+FAA+F;QAC/F,wEAAwE;QACxE,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;IAC9E,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAOD,MAAM,qCAAqC,GAAG,IAAI,OAAO,EAAkD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Physics3DWorld } from '@flighthq/types/contract';
2
+ export declare function reportPhysics3DSpatialIndexing(world: Readonly<Physics3DWorld>): void;
3
+ export declare function setPhysics3DSpatialIndexingGuard(guard: ((world: Readonly<Physics3DWorld>) => void) | null): void;
4
+ //# sourceMappingURL=physics3DSpatialIndexingGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics3DSpatialIndexingGuards.d.ts","sourceRoot":"","sources":["../src/physics3DSpatialIndexingGuards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAEpF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEhH"}
@@ -0,0 +1,11 @@
1
+ // The core-side seam for physics3d's spatial outcome diagnostics. It is deliberately local rather than
2
+ // installing spatial's global caller-composed guard: doing that would overwrite application policy and
3
+ // receive notices from every unrelated 2D and 3D index in the process.
4
+ export function reportPhysics3DSpatialIndexing(world) {
5
+ physics3DSpatialIndexingGuard?.(world);
6
+ }
7
+ export function setPhysics3DSpatialIndexingGuard(guard) {
8
+ physics3DSpatialIndexingGuard = guard;
9
+ }
10
+ let physics3DSpatialIndexingGuard = null;
11
+ //# sourceMappingURL=physics3DSpatialIndexingGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics3DSpatialIndexingGuards.js","sourceRoot":"","sources":["../src/physics3DSpatialIndexingGuards.ts"],"names":[],"mappings":"AAEA,uGAAuG;AACvG,uGAAuG;AACvG,uEAAuE;AACvE,MAAM,UAAU,8BAA8B,CAAC,KAA+B;IAC5E,6BAA6B,EAAE,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAAyD;IACxG,6BAA6B,GAAG,KAAK,CAAC;AACxC,CAAC;AAED,IAAI,6BAA6B,GAAuD,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EAGxB,iBAAiB,EACjB,gCAAgC,EAChC,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAqClC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAgCjF;AAQD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,iBAAiB,GAC1B,iBAAiB,CA6BnB;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ/F;AAID,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,WAAW,EACjB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAwBT;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQvG;AAKD,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,WAAW,EACjB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CA+BT;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQhG;AAQD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,MAAM,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAC3C,MAAM,UAAQ,GACb,iBAAiB,CAiBnB;AAKD,wBAAgB,sCAAsC,IAAI,gCAAgC,CASzF;AAGD,wBAAgB,2BAA2B,IAAI,qBAAqB,CAYnE;AAQD,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAuClF;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,iBAA6B,GAAG,WAAW,CAwDlF;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAEpG;AAKD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAoCpE;AASD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAeT;AAaD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CA8BrF;AAQD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAiBT;AAKD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAOlF;AAQD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAkBhG;AAID,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAO9F;AAOD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAqCT;AAOD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CA2BxF;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAKzD;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAwB5F;AAID,eAAO,MAAM,qBAAqB,IAAI,CAAC"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
package/dist/world.js CHANGED
@@ -5,6 +5,7 @@ import { refreshRigidBody3DWorldInertia } from './integrate';
5
5
  import { rebuildPhysics3DJointCollisionSuppressions } from './jointCollisionSuppression';
6
6
  import { createPhysics3DMassData, setRigidBody3DMassData, updateRigidBody3DMassData } from './massProperties';
7
7
  import { assertPhysics3DBodyNotStepping, assertPhysics3DWorldNotStepping, physics3DBodyOwners, physics3DColliderOwners, physics3DJointOwners, } from './ownership';
8
+ import { withdrawPhysics3DBroadphaseBody } from './physics3DBroadphasePublication';
8
9
  import { applySymmetricTensor, TENSOR_XX, TENSOR_XY, TENSOR_XZ, TENSOR_YY, TENSOR_YZ, TENSOR_ZZ, } from './symmetricTensor';
9
10
  // World and body lifecycle: allocation, membership, and the mutations that have to run through a
10
11
  // function because something derived follows from them.
@@ -240,8 +241,8 @@ export function createPhysics3DSolverConfig() {
240
241
  //
241
242
  // The broadphase defaults to a uniform grid and is a constructor PARAMETER rather than a fixed choice:
242
243
  // `SpatialIndexBackend3D` is the swap point, so a caller with a scene the grid suits badly — a sparse
243
- // world spanning kilometres, say — hands over an octree or its own implementation without this package
244
- // changing.
244
+ // world spanning kilometres or carrying bodies at widely different scales, say — hands over the BVH or
245
+ // its own implementation without this package changing.
245
246
  export function createPhysics3DWorld(index) {
246
247
  return {
247
248
  version: Physics3DWorldVersion,
@@ -445,7 +446,7 @@ export function removePhysics3DBody(world, body) {
445
446
  physics3DJointOwners.delete(joint);
446
447
  }
447
448
  rebuildPhysics3DJointCollisionSuppressions(world);
448
- world.index.removeSpatialObject(index);
449
+ withdrawPhysics3DBroadphaseBody(world, index);
449
450
  body.index = -1;
450
451
  physics3DBodyOwners.delete(body);
451
452
  return true;
package/dist/world.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAgB/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,0CAA0C,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,iGAAiG;AACjG,wDAAwD;AACxD,EAAE;AACF,qGAAqG;AACrG,iGAAiG;AACjG,uGAAuG;AACvG,oDAAoD;AAEpD,iGAAiG;AACjG,EAAE;AACF,sGAAsG;AACtG,oGAAoG;AACpG,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,KAAqB,EAAE,IAAiB;IACvE,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC3G,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;IACjC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9E,oGAAoG;IACpG,4FAA4F;IAC5F,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC;QAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACxD,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,mGAAmG;IACnG,8DAA8D;IAC9D,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,kGAAkG;AAClG,YAAY;AACZ,EAAE;AACF,uGAAuG;AACvG,uGAAuG;AACvG,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAClC,KAAqB,EACrB,IAAiB,EACjB,QAA2B;IAE3B,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,mGAAmG;QACnG,4EAA4E;QAC5E,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,sGAAsG;AACtG,uGAAuG;AACvG,MAAM,UAAU,mBAAmB,CAAC,IAAiB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACpF,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wGAAwG;AACxG,2FAA2F;AAC3F,MAAM,UAAU,0BAA0B,CACxC,IAAiB,EACjB,CAAS,EACT,CAAS,EACT,CAAS,EACT,MAAc,EACd,MAAc,EACd,MAAc;IAEd,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAEjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sGAAsG;AACtG,sGAAsG;AACtG,MAAM,UAAU,2BAA2B,CAAC,IAAiB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAC5F,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qGAAqG;AACrG,qGAAqG;AACrG,gGAAgG;AAChG,MAAM,UAAU,kCAAkC,CAChD,IAAiB,EACjB,CAAS,EACT,CAAS,EACT,CAAS,EACT,MAAc,EACd,MAAc,EACd,MAAc;IAEd,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,kGAAkG;QAClG,oGAAoG;QACpG,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrC,kCAAkC,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAChE,oBAAoB,CAAC,qBAAqB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;QAC9G,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,IAAiB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACrF,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yGAAyG;AACzG,EAAE;AACF,qGAAqG;AACrG,yGAAyG;AACzG,uGAAuG;AACvG,mBAAmB;AACnB,MAAM,UAAU,uBAAuB,CACrC,KAAyC,EACzC,QAAsC,EACtC,MAA2C,EAC3C,MAAM,GAAG,KAAK;IAEd,MAAM,UAAU,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO;QACL,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,iCAAiC,CAAC,UAAU,CAAC;QACpD,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC;YAC/B,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,GAAG;YACnC,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,CAAC;SACxC;QACD,MAAM,EAAE;YACN,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,CAAC;YACvC,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,MAAM;YACpC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;SACpC;QACD,MAAM;KACP,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,wGAAwG;AACxG,iFAAiF;AACjF,MAAM,UAAU,sCAAsC;IACpD,OAAO;QACL,kBAAkB,EAAE,CAAC;QACrB,kBAAkB,EAAE,CAAC;QACrB,eAAe,EAAE,KAAK;QACtB,kBAAkB,EAAE,GAAG;QACvB,oBAAoB,EAAE,CAAC;QACvB,YAAY,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,aAAa,EAAE,IAAI;QACnB,oBAAoB,EAAE,IAAI;QAC1B,qBAAqB,EAAE,IAAI;QAC3B,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,CAAC;QACX,mBAAmB,EAAE,KAAK;QAC1B,cAAc,EAAE,CAAC;QACjB,sBAAsB,EAAE,EAAE;QAC1B,iBAAiB,EAAE,sCAAsC,EAAE;KAC5D,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,EAAE;AACF,uGAAuG;AACvG,sGAAsG;AACtG,uGAAuG;AACvG,YAAY;AACZ,MAAM,UAAU,oBAAoB,CAAC,KAA6B;IAChE,OAAO;QACL,OAAO,EAAE,qBAAqB;QAC9B,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,sGAAsG;QACtG,sGAAsG;QACtG,qGAAqG;QACrG,2BAA2B;QAC3B,KAAK,EAAE,KAAK,IAAI,iCAAiC,CAAC,CAAC,CAAC;QACpD,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,0BAA0B,EAAE,IAAI,GAAG,EAAE;QACrC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAChC,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;QACjD,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,GAAG,EAAE,EAAE;QAC3D,MAAM,EAAE,2BAA2B,EAAE;QACrC,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,iBAAiB,EAAE,IAAI,GAAG,EAAE;QAC5B,iBAAiB,EAAE,IAAI,GAAG,EAAE;QAC5B,gBAAgB,EAAE,EAAE;QACpB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,wBAAwB,EAAE,EAAE;QAC5B,wBAAwB,EAAE,EAAE;QAC5B,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,EAAE;QAC1B,yBAAyB,EAAE,EAAE;QAC7B,uBAAuB,EAAE,EAAE;QAC3B,kBAAkB,EAAE,EAAE;QACtB,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,qGAAqG;AACrG,iDAAiD;AACjD,MAAM,UAAU,iBAAiB,CAAC,OAA0B,SAAS;IACnE,OAAO;QACL,KAAK,EAAE,CAAC,CAAC;QACT,IAAI;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;QACP,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,gGAAgG;AAChG,MAAM,UAAU,iBAAiB,CAAC,KAA+B,EAAE,KAAa;IAC9E,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED,uGAAuG;AACvG,mGAAmG;AACnG,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACzD,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,iBAAiB,GAAI,KAA0C,CAAC,OAAO,CAAC;IAC9E,IAAI,iBAAiB,KAAK,SAAS,IAAI,OAAO,iBAAiB,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3F,MAAM,OAAO,GAAG,iBAAiB,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,qBAAqB,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,qBAAqB;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,WAAW,GAAG,KAInB,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAqE,CAAC;IACjG,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,WAAW,CAAC,KAAK,KAAK,iCAAiC,CAAC,CAAC,CAAC,CAAC;QAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAyD,CAAC;YAC7E,UAAU,CAAC,SAAS,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,OAAwE,CAAC;YAC/F,aAAa,CAAC,SAAS,KAAK,CAAC,CAAC;YAC9B,aAAa,CAAC,SAAS,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,WAAW,CAAC,WAAW,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC1C,YAAY,CAAC,sBAAsB,KAAK,2BAA2B,EAAE,CAAC,sBAAsB,CAAC;IAC7F,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7C,OAAO,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC3C,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uGAAuG;AACvG,uDAAuD;AACvD,EAAE;AACF,mGAAmG;AACnG,qGAAqG;AACrG,wGAAwG;AACxG,iEAAiE;AACjE,MAAM,UAAU,2BAA2B,CACzC,KAAqB,EACrB,IAAiB,EACjB,QAA2B;IAE3B,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAErD,QAAQ,CAAC,KAAK,GAAG,iCAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnE,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uGAAuG;AACvG,cAAc;AACd,EAAE;AACF,uGAAuG;AACvG,wGAAwG;AACxG,+BAA+B;AAC/B,EAAE;AACF,wGAAwG;AACxG,yGAAyG;AACzG,2GAA2G;AAC3G,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,KAAqB,EAAE,IAAiB;IAC1E,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3B,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC;QAC9C,MAAM,YAAY,GAAG,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;QACxD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;QAC3C,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;YAAE,SAAS;QAC7C,IAAI,MAAM,KAAK,SAAS,IAAI,SAAS,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5D,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,KAAK,KAAK,IAAI;gBAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,0CAA0C,CAAC,KAAK,CAAC,CAAC;IAClD,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAChB,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sGAAsG;AACtG,+BAA+B;AAC/B,EAAE;AACF,wGAAwG;AACxG,oGAAoG;AACpG,uGAAuG;AACvG,MAAM,UAAU,uBAAuB,CACrC,KAAqB,EACrB,IAAiB,EACjB,QAA2B;IAE3B,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7B,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wGAAwG;AACxG,uGAAuG;AACvG,gEAAgE;AAChE,MAAM,UAAU,sBAAsB,CAAC,IAAiB,EAAE,MAAe;IACvE,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sFAAsF;AACtF,EAAE;AACF,wGAAwG;AACxG,oGAAoG;AACpG,qGAAqG;AACrG,8DAA8D;AAC9D,MAAM,UAAU,6BAA6B,CAAC,IAAiB,EAAE,aAAsB;IACrF,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,aAAa,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACnC,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sGAAsG;AACtG,0GAA0G;AAC1G,MAAM,UAAU,4BAA4B,CAAC,IAAiB,EAAE,YAAqB;IACnF,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACjC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oFAAoF;AACpF,EAAE;AACF,oGAAoG;AACpG,qGAAqG;AACrG,qDAAqD;AACrD,MAAM,UAAU,yBAAyB,CACvC,IAAiB,EACjB,CAAS,EACT,CAAS,EACT,CAAS,EACT,YAAoB,EACpB,YAAoB,EACpB,YAAoB,EACpB,YAAoB;IAEpB,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IACE,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,uBAAuB,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;QAClE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEX,MAAM,aAAa,GACjB,YAAY,GAAG,YAAY;QAC3B,YAAY,GAAG,YAAY;QAC3B,YAAY,GAAG,YAAY;QAC3B,YAAY,GAAG,YAAY,CAAC;IAC9B,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uFAAuF;AACvF,EAAE;AACF,sGAAsG;AACtG,iGAAiG;AACjG,uCAAuC;AACvC,MAAM,UAAU,oBAAoB,CAAC,IAAiB,EAAE,IAAuB;IAC7E,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClF,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gCAAgC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjB,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qGAAqG;AACrG,UAAU;AACV,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO;IACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,sGAAsG;AACtG,8FAA8F;AAC9F,MAAM,UAAU,2BAA2B,CAAC,IAA2B,EAAE,GAAa;IACpF,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IAExB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,iFAAiF;IACjF,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAEvC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,oGAAoG;AACpG,6FAA6F;AAC7F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC,uGAAuG;AACvG,yEAAyE;AACzE,SAAS,6BAA6B,CAAC,KAAyC;IAC9E,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACrF,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACpF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACtF,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,gCAAgC,CAAC,QAAqC;IAC7E,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;AAC1F,CAAC;AAED,kGAAkG;AAClG,6FAA6F;AAC7F,SAAS,kCAAkC,CAAC,KAAqB,EAAE,SAAiB;IAClF,+BAA+B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC;QAC9C,MAAM,UAAU,GAAG,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;QAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE,SAAS;QACzC,MAAM,EAAE,wBAAwB,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,SAAS;YAAE,SAAS;QACjD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1D,IAAI,UAAU,KAAK,SAAS;YAAE,SAAS;QACvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,IAAI;YAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAqB,EAAE,KAAa;IAC3E,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,SAAS;QACjE,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3E,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,KAAK,KAAK,IAAI;gBAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,mCAAmC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/D,mCAAmC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACzC,4BAA4B,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,mCAAmC,CAAC,MAAyC,EAAE,SAAiB;IACvG,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAqB;IACzD,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAChC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,KAAK,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,KAAK,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,KAAK,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,KAAK,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,KAAK,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3C,KAAK,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,8FAA8F;AAC9F,yFAAyF;AACzF,EAAE;AACF,iGAAiG;AACjG,sGAAsG;AACtG,qBAAqB;AACrB,SAAS,sBAAsB,CAAC,IAAiB;IAC/C,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACjC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACvC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACvC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACvC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3C,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3C,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3C,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3C,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3C,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAE3C,sBAAsB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC9D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,kCAAkC,CAAC,IAA2B,EAAE,GAAa;IACpF,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC9C,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,MAAM,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,MAAM,eAAe,GAAG,uBAAuB,EAAE,CAAC;AAClD,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/physics3d",
3
- "version": "0.4.0-next.1821.efb1cbc",
3
+ "version": "0.4.0-next.1836.147ae1e",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,11 +38,11 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/collision": "0.4.0-next.1821.efb1cbc",
42
- "@flighthq/log": "0.4.0-next.1821.efb1cbc",
43
- "@flighthq/math": "0.4.0-next.1821.efb1cbc",
44
- "@flighthq/spatial": "0.4.0-next.1821.efb1cbc",
45
- "@flighthq/types": "0.4.0-next.1821.efb1cbc"
41
+ "@flighthq/collision": "0.4.0-next.1836.147ae1e",
42
+ "@flighthq/log": "0.4.0-next.1836.147ae1e",
43
+ "@flighthq/math": "0.4.0-next.1836.147ae1e",
44
+ "@flighthq/spatial": "0.4.0-next.1836.147ae1e",
45
+ "@flighthq/types": "0.4.0-next.1836.147ae1e"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@flighthq/geometry": "*",
@@ -1,4 +1,11 @@
1
- import type { CollisionBuiltInShape3D, Physics3DWorld, RigidBody3D, SpatialPair } from '@flighthq/types/contract';
1
+ import { setSpatialIndexingGuard } from '@flighthq/spatial/contract';
2
+ import type {
3
+ CollisionBuiltInShape3D,
4
+ Physics3DWorld,
5
+ RigidBody3D,
6
+ SpatialIndexingNotice,
7
+ SpatialPair,
8
+ } from '@flighthq/types/contract';
2
9
  import { describe, expect, it } from 'vitest';
3
10
 
4
11
  import { synchronizePhysics3DBroadphase, synchronizePhysics3DSweptBroadphase } from './broadphase';
@@ -8,8 +15,13 @@ import {
8
15
  createPhysics3DCollider,
9
16
  createPhysics3DWorld,
10
17
  createRigidBody3D,
18
+ removePhysics3DBody,
11
19
  } from './world';
12
20
 
21
+ afterEach(() => {
22
+ setSpatialIndexingGuard(null);
23
+ });
24
+
13
25
  function unitBox(): CollisionBuiltInShape3D {
14
26
  return { kind: 'aabb', minX: -0.5, minY: -0.5, minZ: -0.5, maxX: 0.5, maxY: 0.5, maxZ: 0.5 };
15
27
  }
@@ -31,6 +43,24 @@ function pairs(world: Readonly<Physics3DWorld>): SpatialPair[] {
31
43
  }
32
44
 
33
45
  describe('synchronizePhysics3DBroadphase', () => {
46
+ it('uses insert, update, and remove without false missing-id lifecycle notices', () => {
47
+ const notices: SpatialIndexingNotice[] = [];
48
+ setSpatialIndexingGuard((notice) => notices.push({ ...notice }));
49
+ const world = createPhysics3DWorld();
50
+ const body = createRigidBody3D('dynamic');
51
+
52
+ addPhysics3DBody(world, body);
53
+ for (let step = 0; step < 100; step += 1) synchronizePhysics3DBroadphase(world);
54
+ addPhysics3DCollider(world, body, createPhysics3DCollider(unitBox()));
55
+ synchronizePhysics3DBroadphase(world);
56
+ body.colliders.length = 0;
57
+ synchronizePhysics3DBroadphase(world);
58
+ synchronizePhysics3DBroadphase(world);
59
+ removePhysics3DBody(world, body);
60
+
61
+ expect(notices.filter((notice) => notice.reason === 'missing-id')).toEqual([]);
62
+ });
63
+
34
64
  it('publishes a body so an overlapping neighbour becomes a candidate pair', () => {
35
65
  const world = createPhysics3DWorld();
36
66
  addBoxBody(world, 0, 0, 0);
@@ -1,6 +1,7 @@
1
1
  import { addLogSink, createMemoryLogSink, getMemoryLogSinkEntries, removeLogSink } from '@flighthq/log/contract';
2
2
  import type { LogEntry, Physics3DWorld } from '@flighthq/types/contract';
3
3
 
4
+ import { synchronizePhysics3DBroadphase } from './broadphase';
4
5
  import { arePhysics3DGuardsEnabled, disablePhysics3DGuards, enablePhysics3DGuards } from './enablePhysics3DGuards';
5
6
  import { createPhysics3DHingeJoint } from './jointFactories';
6
7
  import { addPhysics3DJoint } from './jointRegistry';
@@ -59,6 +60,15 @@ describe('disablePhysics3DGuards', () => {
59
60
 
60
61
  expect(entries).toHaveLength(0);
61
62
  });
63
+
64
+ it('removes the spatial-indexing seam', () => {
65
+ enablePhysics3DGuards();
66
+ disablePhysics3DGuards();
67
+
68
+ const entries = captureLog(() => addPhysics3DBody(createPhysics3DWorld(), createOverflowBody()));
69
+
70
+ expect(entries).toHaveLength(0);
71
+ });
62
72
  });
63
73
 
64
74
  describe('enablePhysics3DGuards', () => {
@@ -141,6 +151,27 @@ describe('enablePhysics3DGuards', () => {
141
151
  { index: 1, kind: 'Hinge', status: 'invalid-bodies' },
142
152
  ]);
143
153
  });
154
+
155
+ it('reports a body routed through spatial overflow once and stays silent for ordinary indexing', () => {
156
+ enablePhysics3DGuards();
157
+ const world = createPhysics3DWorld();
158
+
159
+ const entries = captureLog(() => {
160
+ const ordinary = createRigidBody3D('dynamic');
161
+ ordinary.colliders.push(createPhysics3DCollider({ kind: 'sphere', x: 0, y: 0, z: 0, radius: 0.5 }));
162
+ addPhysics3DBody(world, ordinary);
163
+ addPhysics3DBody(world, createOverflowBody());
164
+ addPhysics3DBody(world, createOverflowBody());
165
+ synchronizePhysics3DBroadphase(world);
166
+ synchronizePhysics3DBroadphase(world);
167
+ });
168
+
169
+ expect(entries).toHaveLength(1);
170
+ expect(entries[0]).toMatchObject({
171
+ channel: 'physics3d',
172
+ data: { bodyIndices: [1], status: 'spatial-overflow' },
173
+ });
174
+ });
144
175
  });
145
176
 
146
177
  // `LogData` is deliberately `string | Record<string, unknown>`, so a structured entry's fields are only
@@ -165,3 +196,11 @@ function createTestWorld(): Physics3DWorld {
165
196
  addPhysics3DBody(world, createRigidBody3D('dynamic'));
166
197
  return world;
167
198
  }
199
+
200
+ function createOverflowBody() {
201
+ const body = createRigidBody3D('static');
202
+ body.colliders.push(
203
+ createPhysics3DCollider({ kind: 'aabb', minX: -16, minY: -16, minZ: -16, maxX: 16, maxY: 16, maxZ: 16 }),
204
+ );
205
+ return body;
206
+ }
@@ -0,0 +1,63 @@
1
+ import { createBvhSpatialBackend3D, setSpatialIndexingGuard } from '@flighthq/spatial/contract';
2
+ import type { SpatialAabb3D, SpatialIndexingNotice } from '@flighthq/types/contract';
3
+ import { afterEach, describe, expect, it } from 'vitest';
4
+
5
+ import {
6
+ getPhysics3DBroadphaseBodyIndices,
7
+ publishPhysics3DBroadphaseBody,
8
+ withdrawPhysics3DBroadphaseBody,
9
+ } from './physics3DBroadphasePublication';
10
+ import { createPhysics3DWorld } from './world';
11
+
12
+ afterEach(() => {
13
+ setSpatialIndexingGuard(null);
14
+ });
15
+
16
+ describe('getPhysics3DBroadphaseBodyIndices', () => {
17
+ it('retains publication state for one backend and rebuilds it when the backend changes', () => {
18
+ const world = createPhysics3DWorld();
19
+ const first = getPhysics3DBroadphaseBodyIndices(world);
20
+ first.add(7);
21
+ expect(getPhysics3DBroadphaseBodyIndices(world)).toBe(first);
22
+
23
+ world.index = createBvhSpatialBackend3D();
24
+
25
+ const replaced = getPhysics3DBroadphaseBodyIndices(world);
26
+ expect(replaced).not.toBe(first);
27
+ expect(replaced.size).toBe(0);
28
+ });
29
+ });
30
+
31
+ describe('publishPhysics3DBroadphaseBody', () => {
32
+ it('inserts once and then updates without reporting a missing-id lifecycle fault', () => {
33
+ const notices: SpatialIndexingNotice[] = [];
34
+ setSpatialIndexingGuard((notice) => notices.push({ ...notice }));
35
+ const world = createPhysics3DWorld();
36
+
37
+ publishPhysics3DBroadphaseBody(world, 7, box(0));
38
+ publishPhysics3DBroadphaseBody(world, 7, box(1));
39
+
40
+ expect(world.index.explainSpatialIndexing(7).mode).toBe('cells');
41
+ expect(notices.filter((notice) => notice.reason === 'missing-id')).toEqual([]);
42
+ });
43
+ });
44
+
45
+ describe('withdrawPhysics3DBroadphaseBody', () => {
46
+ it('removes a publication once and leaves a never-published id alone', () => {
47
+ const notices: SpatialIndexingNotice[] = [];
48
+ setSpatialIndexingGuard((notice) => notices.push({ ...notice }));
49
+ const world = createPhysics3DWorld();
50
+
51
+ withdrawPhysics3DBroadphaseBody(world, 8);
52
+ publishPhysics3DBroadphaseBody(world, 7, box(0));
53
+ withdrawPhysics3DBroadphaseBody(world, 7);
54
+ withdrawPhysics3DBroadphaseBody(world, 7);
55
+
56
+ expect(world.index.explainSpatialIndexing(7).mode).toBe('absent');
57
+ expect(notices.filter((notice) => notice.reason === 'missing-id')).toEqual([]);
58
+ });
59
+ });
60
+
61
+ function box(offset: number): SpatialAabb3D {
62
+ return { minX: offset, minY: 0, minZ: 0, maxX: offset + 1, maxY: 1, maxZ: 1 };
63
+ }
@@ -0,0 +1,43 @@
1
+ import type { Physics3DWorld } from '@flighthq/types/contract';
2
+ import { afterEach, describe, expect, it } from 'vitest';
3
+
4
+ import { reportPhysics3DSpatialIndexing, setPhysics3DSpatialIndexingGuard } from './physics3DSpatialIndexingGuards';
5
+ import { createPhysics3DWorld } from './world';
6
+
7
+ afterEach(() => {
8
+ setPhysics3DSpatialIndexingGuard(null);
9
+ });
10
+
11
+ describe('reportPhysics3DSpatialIndexing', () => {
12
+ it('reports the world only while the optional seam is installed', () => {
13
+ const world = createPhysics3DWorld();
14
+ const received: Readonly<Physics3DWorld>[] = [];
15
+
16
+ reportPhysics3DSpatialIndexing(world);
17
+ setPhysics3DSpatialIndexingGuard((reported) => received.push(reported));
18
+ reportPhysics3DSpatialIndexing(world);
19
+ setPhysics3DSpatialIndexingGuard(null);
20
+ reportPhysics3DSpatialIndexing(world);
21
+
22
+ expect(received).toEqual([world]);
23
+ });
24
+ });
25
+
26
+ describe('setPhysics3DSpatialIndexingGuard', () => {
27
+ it('replaces the previous guard instead of accumulating callbacks', () => {
28
+ const world = createPhysics3DWorld();
29
+ let firstCalls = 0;
30
+ let secondCalls = 0;
31
+ setPhysics3DSpatialIndexingGuard(() => {
32
+ firstCalls += 1;
33
+ });
34
+ setPhysics3DSpatialIndexingGuard(() => {
35
+ secondCalls += 1;
36
+ });
37
+
38
+ reportPhysics3DSpatialIndexing(world);
39
+
40
+ expect(firstCalls).toBe(0);
41
+ expect(secondCalls).toBe(1);
42
+ });
43
+ });