@needle-tools/engine 2.37.0-pre → 2.38.0-pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/needle-engine.d.ts +118 -19
  3. package/dist/needle-engine.js +352 -352
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +25 -25
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/engine_addressables.d.ts +3 -1
  8. package/lib/engine/engine_addressables.js +12 -5
  9. package/lib/engine/engine_addressables.js.map +1 -1
  10. package/lib/engine/engine_element.js +3 -2
  11. package/lib/engine/engine_element.js.map +1 -1
  12. package/lib/engine/engine_element_overlay.js +4 -3
  13. package/lib/engine/engine_element_overlay.js.map +1 -1
  14. package/lib/engine/engine_input.d.ts +2 -0
  15. package/lib/engine/engine_input.js +14 -3
  16. package/lib/engine/engine_input.js.map +1 -1
  17. package/lib/engine/engine_physics.d.ts +11 -4
  18. package/lib/engine/engine_physics.js +107 -42
  19. package/lib/engine/engine_physics.js.map +1 -1
  20. package/lib/engine/engine_physics.types.d.ts +7 -0
  21. package/lib/engine/engine_physics.types.js +8 -0
  22. package/lib/engine/engine_physics.types.js.map +1 -1
  23. package/lib/engine/engine_setup.d.ts +12 -6
  24. package/lib/engine/engine_setup.js +30 -22
  25. package/lib/engine/engine_setup.js.map +1 -1
  26. package/lib/engine/engine_types.d.ts +3 -1
  27. package/lib/engine/engine_types.js.map +1 -1
  28. package/lib/engine-components/Animation.d.ts +1 -0
  29. package/lib/engine-components/Animation.js +7 -0
  30. package/lib/engine-components/Animation.js.map +1 -1
  31. package/lib/engine-components/AnimatorController.js +14 -7
  32. package/lib/engine-components/AnimatorController.js.map +1 -1
  33. package/lib/engine-components/Camera.d.ts +2 -0
  34. package/lib/engine-components/Camera.js +24 -6
  35. package/lib/engine-components/Camera.js.map +1 -1
  36. package/lib/engine-components/CharacterController.d.ts +34 -0
  37. package/lib/engine-components/CharacterController.js +179 -0
  38. package/lib/engine-components/CharacterController.js.map +1 -0
  39. package/lib/engine-components/Collider.d.ts +10 -5
  40. package/lib/engine-components/Collider.js +18 -11
  41. package/lib/engine-components/Collider.js.map +1 -1
  42. package/lib/engine-components/Joints.d.ts +15 -0
  43. package/lib/engine-components/Joints.js +42 -0
  44. package/lib/engine-components/Joints.js.map +1 -0
  45. package/lib/engine-components/Light.d.ts +2 -0
  46. package/lib/engine-components/Light.js +13 -2
  47. package/lib/engine-components/Light.js.map +1 -1
  48. package/lib/engine-components/OrbitControls.js +1 -1
  49. package/lib/engine-components/OrbitControls.js.map +1 -1
  50. package/lib/engine-components/Renderer.js +4 -0
  51. package/lib/engine-components/Renderer.js.map +1 -1
  52. package/lib/engine-components/RigidBody.d.ts +6 -1
  53. package/lib/engine-components/RigidBody.js +62 -25
  54. package/lib/engine-components/RigidBody.js.map +1 -1
  55. package/lib/engine-components/SmoothFollow.d.ts +2 -1
  56. package/lib/engine-components/SmoothFollow.js +25 -17
  57. package/lib/engine-components/SmoothFollow.js.map +1 -1
  58. package/lib/engine-components/WebXR.js +3 -4
  59. package/lib/engine-components/WebXR.js.map +1 -1
  60. package/lib/engine-components/codegen/components.d.ts +4 -0
  61. package/lib/engine-components/codegen/components.js +4 -0
  62. package/lib/engine-components/codegen/components.js.map +1 -1
  63. package/package.json +1 -1
  64. package/src/engine/codegen/register_types.js +16 -0
  65. package/src/engine/dist/engine_physics.js +739 -0
  66. package/src/engine/dist/engine_setup.js +777 -0
  67. package/src/engine/engine_addressables.ts +18 -8
  68. package/src/engine/engine_element.ts +3 -2
  69. package/src/engine/engine_element_overlay.ts +4 -3
  70. package/src/engine/engine_input.ts +12 -3
  71. package/src/engine/engine_physics.ts +119 -57
  72. package/src/engine/engine_physics.types.ts +9 -0
  73. package/src/engine/engine_setup.ts +53 -45
  74. package/src/engine/engine_types.ts +4 -1
  75. package/src/engine-components/Animation.ts +8 -0
  76. package/src/engine-components/AnimatorController.ts +16 -11
  77. package/src/engine-components/Camera.ts +25 -5
  78. package/src/engine-components/CharacterController.ts +185 -0
  79. package/src/engine-components/Collider.ts +21 -15
  80. package/src/engine-components/Joints.ts +40 -0
  81. package/src/engine-components/Light.ts +17 -3
  82. package/src/engine-components/OrbitControls.ts +1 -1
  83. package/src/engine-components/Renderer.ts +5 -1
  84. package/src/engine-components/RigidBody.ts +63 -29
  85. package/src/engine-components/SmoothFollow.ts +21 -18
  86. package/src/engine-components/WebXR.ts +3 -4
  87. package/src/engine-components/codegen/components.ts +4 -0
  88. package/src/engine-components/dist/CharacterController.js +123 -0
  89. package/src/engine-components/dist/RigidBody.js +458 -0
  90. package/src/include/console/ConsoleReroute.js +79 -0
  91. package/src/include/draco/draco_decoder.js +48 -0
  92. package/src/include/draco/draco_decoder.wasm +0 -0
  93. package/src/include/ktx2/basis_transcoder.js +21 -0
  94. package/src/include/ktx2/basis_transcoder.wasm +0 -0
  95. package/src/include/three/ARButton.js +208 -0
  96. package/src/include/three/DragControls.js +232 -0
  97. package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +67 -0
  98. package/src/include/three/VRButton.js +196 -0
  99. package/src/include/three-mesh-ui-assets/backspace.png +0 -0
  100. package/src/include/three-mesh-ui-assets/enter.png +0 -0
  101. package/src/include/three-mesh-ui-assets/shift.png +0 -0
@@ -3,13 +3,15 @@ import { getParam } from "./engine_utils";
3
3
  import { getWorldPosition, getWorldQuaternion, getWorldScale, setWorldPositionXYZ, setWorldQuaternionXYZW } from "./engine_three_utils";
4
4
  import { Collision, ContactPoint } from './engine_types';
5
5
  import { foreachComponent } from './engine_gameobject';
6
- import RAPIER, { ActiveEvents, Collider, ColliderDesc, EventQueue, RigidBody, World } from '@dimforge/rapier3d-compat';
6
+ import RAPIER, { ActiveEvents, Collider, ColliderDesc, EventQueue, JointData, RigidBody, RigidBodyType, World } from '@dimforge/rapier3d-compat';
7
7
  import { CollisionDetectionMode } from '../engine/engine_physics.types';
8
8
  const debugPhysics = getParam("debugphysics");
9
9
  const debugColliderPlacement = getParam("debugphysicscolliders");
10
10
  const debugCollisions = getParam("debugcollisions");
11
11
  const $componentKey = Symbol("needle component");
12
12
  const $bodyKey = Symbol("physics body");
13
+ const $colliderRigidbody = Symbol("rigidbody");
14
+ // const $removed = Symbol("removed");
13
15
  export class RaycastOptions {
14
16
  ray = undefined;
15
17
  cam = undefined;
@@ -175,6 +177,7 @@ export class Physics {
175
177
  // physics simulation
176
178
  _tempPosition = new Vector3();
177
179
  _tempQuaternion = new Quaternion();
180
+ _tempScale = new Vector3();
178
181
  _tempMatrix = new Matrix4();
179
182
  static _didLoadPhysicsEngine = false;
180
183
  _isUpdatingPhysicsWorld = false;
@@ -184,13 +187,9 @@ export class Physics {
184
187
  _hasCreatedWorld = false;
185
188
  eventQueue;
186
189
  collisionHandler;
187
- // private rigidbodies: Array<IRigidbody | null> = [];
188
190
  objects = [];
189
191
  bodies = [];
190
- // private rigidbodiesLookup: Map<IRigidbody, RigidBody> = new Map<IRigidbody, RigidBody>();
191
- // private kinematicColliders: Array<IComponent> = [];
192
- // private rigidbodyLookup: Map<IRigidbody, IComponent[]> = new Map<IRigidbody, IComponent[]>();
193
- // private objectLookup: Map<Object3D, IRigidbody> = new Map<Object3D, IRigidbody>();
192
+ _meshCache = new Map();
194
193
  constructor(context) {
195
194
  this.context = context;
196
195
  }
@@ -207,6 +206,9 @@ export class Physics {
207
206
  const gravity = { x: 0.0, y: -9.81, z: 0.0 };
208
207
  this.world = new World(gravity);
209
208
  }
209
+ clearCaches() {
210
+ this._meshCache.clear();
211
+ }
210
212
  addBoxCollider(collider, center, size) {
211
213
  const obj = collider.gameObject;
212
214
  const scale = getWorldScale(obj, this._tempPosition).multiply(size);
@@ -220,6 +222,14 @@ export class Physics {
220
222
  const desc = ColliderDesc.ball(scale.x);
221
223
  this.createCollider(collider, desc, center);
222
224
  }
225
+ addCapsuleCollider(collider, center, height, radius) {
226
+ const obj = collider.gameObject;
227
+ const scale = getWorldScale(obj, this._tempPosition);
228
+ if (debugPhysics)
229
+ console.log("capsule scale", scale, height, radius);
230
+ const desc = ColliderDesc.capsule(height * .5 * scale.y - radius, radius * scale.x);
231
+ this.createCollider(collider, desc, center);
232
+ }
223
233
  addMeshCollider(collider, mesh, convex) {
224
234
  const geo = mesh.geometry;
225
235
  if (!geo) {
@@ -233,15 +243,22 @@ export class Physics {
233
243
  // scaling seems not supported yet https://github.com/dimforge/rapier/issues/243
234
244
  const scale = getWorldScale(mesh, this._tempPosition);
235
245
  if (Math.abs(scale.x - 1) > 0.0001 || Math.abs(scale.y - 1) > 0.0001 || Math.abs(scale.z - 1) > 0.0001) {
236
- console.warn("Your model is using scaled mesh colliders which is not optimal for performance", mesh.name, Object.assign({}, scale), mesh);
237
- // showBalloonWarning("Your model is using scaled mesh colliders which is not optimal for performance: " + mesh.name + ", consider using unscaled objects");
238
- const scaledPositions = new Float32Array(positions.length);
239
- for (let i = 0; i < positions.length; i += 3) {
240
- scaledPositions[i] = positions[i] * scale.x;
241
- scaledPositions[i + 1] = positions[i + 1] * scale.y;
242
- scaledPositions[i + 2] = positions[i + 2] * scale.z;
246
+ const key = geo.uuid + "_" + scale.x + "_" + scale.y + "_" + scale.z + "_" + convex;
247
+ if (this._meshCache.has(key)) {
248
+ positions = this._meshCache.get(key);
249
+ }
250
+ else {
251
+ console.warn("Your model is using scaled mesh colliders which is not optimal for performance", mesh.name, Object.assign({}, scale), mesh);
252
+ // showBalloonWarning("Your model is using scaled mesh colliders which is not optimal for performance: " + mesh.name + ", consider using unscaled objects");
253
+ const scaledPositions = new Float32Array(positions.length);
254
+ for (let i = 0; i < positions.length; i += 3) {
255
+ scaledPositions[i] = positions[i] * scale.x;
256
+ scaledPositions[i + 1] = positions[i + 1] * scale.y;
257
+ scaledPositions[i + 2] = positions[i + 2] * scale.z;
258
+ }
259
+ positions = scaledPositions;
260
+ this._meshCache.set(key, scaledPositions);
243
261
  }
244
- positions = scaledPositions;
245
262
  }
246
263
  const desc = convex ? ColliderDesc.convexMesh(positions) : ColliderDesc.trimesh(positions, indices);
247
264
  if (desc) {
@@ -254,9 +271,10 @@ export class Physics {
254
271
  throw new Error("Physics world not initialized");
255
272
  const matrix = this._tempMatrix;
256
273
  const { rigidBody, useExplicitMassProperties } = this.getRigidbody(collider, this._tempMatrix);
257
- matrix.decompose(this._tempPosition, this._tempQuaternion, new Vector3());
274
+ matrix.decompose(this._tempPosition, this._tempQuaternion, this._tempScale);
275
+ getWorldScale(collider.gameObject, this._tempScale);
258
276
  if (center)
259
- this._tempPosition.add(center);
277
+ this._tempPosition.add(center).multiply(this._tempScale);
260
278
  desc.setTranslation(this._tempPosition.x, this._tempPosition.y, this._tempPosition.z);
261
279
  desc.setRotation(this._tempQuaternion);
262
280
  desc.setSensor(collider.isTrigger);
@@ -309,31 +327,48 @@ export class Physics {
309
327
  _matrix.identity();
310
328
  rigidBody[$componentKey] = null;
311
329
  }
330
+ collider[$colliderRigidbody] = rigidBody;
312
331
  return { rigidBody: rigidBody, useExplicitMassProperties: useExplicitMassProperties };
313
332
  }
314
333
  removeBody(obj) {
315
334
  const body = obj[$bodyKey];
316
335
  obj[$bodyKey] = null;
317
- if (body) {
336
+ if (body && this.world) {
318
337
  const index = this.objects.findIndex(o => o === obj);
319
338
  if (index >= 0) {
320
339
  const body = this.bodies[index];
321
340
  this.bodies.splice(index, 1);
322
341
  this.objects.splice(index, 1);
323
342
  if (body instanceof Collider) {
324
- this.world?.removeCollider(body, true);
343
+ const collider = body;
344
+ this.world?.removeCollider(collider, true);
345
+ // remove the rigidbody if it doesnt have colliders anymore
346
+ const rb = collider.parent();
347
+ if (rb && rb.numColliders() <= 0) {
348
+ this.world?.removeRigidBody(rb);
349
+ }
325
350
  }
326
351
  else if (body instanceof RigidBody) {
327
- this.world?.removeRigidBody(body);
352
+ // TODO: running this code below causes a crash in rapier
353
+ // const rb = body as RigidBody;
354
+ // console.log("colliders", rb.numColliders())
355
+ // for (let i = 0; i < rb.numColliders(); i++) {
356
+ // const col = rb.collider(i);
357
+ // this.world?.removeCollider(col, true);
358
+ // }
359
+ // console.log("colliders", rb.numColliders(), rb)
360
+ // console.log(rb.handle, rb.userData);
361
+ // if (rb.userData === undefined)
362
+ // this.world?.removeRigidBody(rb);
328
363
  }
329
364
  // check if we need to remove the rigidbody too
330
- const col = obj;
331
- if (col.isCollider && col.attachedRigidbody) {
332
- const rb = col.attachedRigidbody[$bodyKey];
333
- if (rb && rb.numColliders() <= 0 && rb.world() === this.world) {
334
- this.world?.removeRigidBody(rb);
335
- }
336
- }
365
+ // const col = obj as ICollider;
366
+ // if (col.isCollider && col.attachedRigidbody) {
367
+ // const rb = col.attachedRigidbody[$bodyKey] as RigidBody;
368
+ // if (rb && rb.numColliders() <= 0) {
369
+ // // this.world?.removeRigidBody(rb);
370
+ // }
371
+ // }
337
372
  }
338
373
  }
339
374
  }
@@ -450,8 +485,19 @@ export class Physics {
450
485
  }
451
486
  // sync
452
487
  const pos = body.translation();
453
- setWorldPositionXYZ(obj.gameObject, pos.x, pos.y, pos.z);
454
488
  const rot = body.rotation();
489
+ // make sure to keep the collider offset
490
+ const center = obj["center"];
491
+ if (center && center.isVector3) {
492
+ this._tempQuaternion.set(rot.x, rot.y, rot.z, rot.w);
493
+ const offset = this._tempPosition.copy(center).applyQuaternion(this._tempQuaternion);
494
+ const scale = getWorldScale(obj.gameObject);
495
+ offset.multiply(scale);
496
+ pos.x -= offset.x;
497
+ pos.y -= offset.y;
498
+ pos.z -= offset.z;
499
+ }
500
+ setWorldPositionXYZ(obj.gameObject, pos.x, pos.y, pos.z);
455
501
  setWorldQuaternionXYZW(obj.gameObject, rot.x, rot.y, rot.z, rot.w);
456
502
  }
457
503
  }
@@ -461,13 +507,26 @@ export class Physics {
461
507
  // const vel = physicsBody.linvel();
462
508
  const worldPosition = getWorldPosition(obj, this._tempPosition);
463
509
  const worldQuaternion = getWorldQuaternion(obj, this._tempQuaternion);
510
+ const type = body.bodyType();
511
+ switch (type) {
512
+ case RigidBodyType.Fixed:
513
+ case RigidBodyType.KinematicPositionBased:
514
+ case RigidBodyType.KinematicVelocityBased:
515
+ if (translation)
516
+ body.setNextKinematicTranslation(worldPosition);
517
+ if (rotation)
518
+ body.setNextKinematicRotation(worldQuaternion);
519
+ break;
520
+ default:
521
+ if (translation)
522
+ body.setTranslation(worldPosition, false);
523
+ if (rotation)
524
+ body.setRotation(worldQuaternion, false);
525
+ break;
526
+ }
527
+ body.wakeUp();
464
528
  // physicsBody.setBodyType(RAPIER.RigidBodyType.Fixed);
465
- if (translation)
466
- body.setTranslation(worldPosition, false);
467
- if (rotation)
468
- body.setRotation(worldQuaternion, false);
469
529
  // physicsBody.setLinvel(vel, false);
470
- body.wakeUp();
471
530
  // update velocity
472
531
  // const pos = physicsBody.translation();
473
532
  // pos.x -= previous.x;
@@ -511,14 +570,19 @@ export class Physics {
511
570
  }
512
571
  return mat;
513
572
  }
514
- }
515
- let colliderProvider = null;
516
- export function registerColliderProvider(prov) {
517
- colliderProvider = prov;
518
- }
519
- class CollisionContext {
520
- getCollider(obj) {
521
- return colliderProvider.getCollider(obj);
573
+ static centerConnectionPos = { x: 0, y: 0, z: 0 };
574
+ static centerConnectionRot = { x: 0, y: 0, z: 0, w: 1 };
575
+ addFixedJoint(body1, body2, rel) {
576
+ if (!this.world) {
577
+ console.error("Physics world not initialized");
578
+ return;
579
+ }
580
+ const b1 = body1[$bodyKey];
581
+ const b2 = body2[$bodyKey];
582
+ const rot = body1.worldQuaternion.multiply(body2.worldQuaternion.invert());
583
+ const params = JointData.fixed(Physics.centerConnectionPos, Physics.centerConnectionRot, rel, rot);
584
+ const joint = this.world.createImpulseJoint(params, b1, b2, true);
585
+ console.log("ADD JOINT", joint);
522
586
  }
523
587
  }
524
588
  /** responsible of processing collision events for the component system */
@@ -541,7 +605,8 @@ class PhysicsCollisionHandler {
541
605
  const col2 = this.world.getCollider(handle2);
542
606
  const colliderComponent1 = col1[$componentKey];
543
607
  const colliderComponent2 = col2[$componentKey];
544
- // console.log("EVT", colliderComponent1.name, colliderComponent2.name, started);
608
+ if (debugCollisions)
609
+ console.log("EVT", colliderComponent1.name, colliderComponent2.name, started, col1, col2);
545
610
  if (colliderComponent1 && colliderComponent2) {
546
611
  if (started) {
547
612
  this.onCollisionStarted(colliderComponent1, col1, colliderComponent2, col2);
@@ -605,7 +670,7 @@ class PhysicsCollisionHandler {
605
670
  for (const active of this.activeTriggers) {
606
671
  const c = active.component;
607
672
  if (c.activeAndEnabled && c.onTriggerStay) {
608
- const arg = active.collider;
673
+ const arg = active.otherCollider;
609
674
  c.onTriggerStay(arg);
610
675
  }
611
676
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine_physics.js","sourceRoot":"","sources":["../../../engine/engine_physics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,eAAe,EAAE,cAAc,EAAwB,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAA4C,UAAU,EAAO,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAExP,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAoB,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACzJ,OAAO,EAKH,SAAS,EAET,YAAY,EAEf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,MAAM,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAuB,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAC5I,OAAO,EAAE,sBAAsB,EAAwB,MAAM,gCAAgC,CAAC;AAK9F,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC9C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AACjE,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAQpD,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAExC,MAAM,OAAO,cAAc;IACvB,GAAG,GAAoB,SAAS,CAAC;IACjC,GAAG,GAA8B,SAAS,CAAC;IAC3C,WAAW,GAAwB,SAAS,CAAC;IAC7C,SAAS,GAA0B,SAAS,CAAC;IAC7C,OAAO,GAAoC,SAAS,CAAC;IACrD,OAAO,GAAgC,SAAS,CAAC;IACjD,SAAS,GAAwB,IAAI,CAAC;IACtC,WAAW,GAAuB,SAAS,CAAC;IAC5C,WAAW,GAAuB,SAAS,CAAC;IAC5C,aAAa,GAAuB,SAAS,CAAC;IAC9C,SAAS,GAAgC,SAAS,CAAC;IACnD,MAAM,GAA2B,SAAS,CAAC;IAE3C,qBAAqB,CAAC,EAAU,EAAE,EAAU;QACxC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAmB,CAAC;QACpC,IAAI,EAAE;YACF,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;;YACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC;;AAGzC,MAAM,OAAO,kBAAkB;IAC3B,QAAQ,CAAS;IACjB,KAAK,CAAU;IACf,MAAM,CAAW;IACjB,YAAY,MAAgB,EAAE,QAAgB,EAAE,KAAc;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAED,MAAM,OAAO,OAAO;IAEhB,aAAa;IAEI,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;IACvC,qBAAqB,GAAmB,IAAI,cAAc,EAAE,CAAC;IAC7D,YAAY,GAAoB,IAAI,KAAK,CAAW,CAAC,CAAC,CAAC;IACvD,iBAAiB,GAAG;QACjC,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;QACtB,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;QACxB,MAAM,EAAE,EAAE;KACb,CAAA;IAGO,aAAa,GAAwB,IAAI,KAAK,EAAgB,CAAC;IAC/D,UAAU,GAAW,IAAI,MAAM,EAAE,CAAC;IACnC,aAAa,CAAC,SAAkB,EAAE,MAAc,EAAE,yBAAkC,IAAI;QAC3F,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;SACtF;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IACO,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;IACnC,eAAe,CAAC,GAAa,EAAE,EAAU,EAAE,IAAY,EAAE,OAA4B,EAAE,sBAA+B;QAC1H,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,MAAM,IAAI,GAAG,GAAW,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,WAAW;gBAChB,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,WAAW,EAAE;gBACjB,IAAI,IAAI,CAAC,sBAAsB;oBAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvF,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBACxB,uEAAuE;oBACvE,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACjE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,IAAI,CAAC,sBAAsB;wBAAE,OAAO;iBACvC;aACJ;SACJ;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE;YACd,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE;gBAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC3B,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;gBACpE,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,sBAAsB;oBAAE,OAAO;aAChE;SACJ;IACL,CAAC;IAEM,cAAc,CAAC,GAAQ,EAAE,UAAiC,IAAI;QACjE,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACnD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO,CAAC,UAAiC,IAAI;QAChD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnD,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;QACrE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAC/C,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QACnC,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC;QACzC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACnC,IAAI,OAAO,CAAC,aAAa;YACrB,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;;YACrD,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG,EAAE;YACb,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC5B;aACI;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACnD,IAAI,CAAC,GAAG,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO;oBAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,IAAI,EAAE,CAAC;aACnD;YACD,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC;QACD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO;gBACnC,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI,KAAK,EAAgB,CAAC;YACnE,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;SAChD;QAED,YAAY;QACZ,8DAA8D;QAC9D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;YACjC,IAAI,OAAO,CAAC,SAAS,YAAY,MAAM;gBACnC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;;gBAExC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;SAC1C;aACI;YACD,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACxB;QAED,kBAAkB;QAClB,wBAAwB;QAExB,QAAQ;QACR,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SACjE;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAKD,qBAAqB;IAEb,aAAa,GAAY,IAAI,OAAO,EAAE,CAAC;IACvC,eAAe,GAAe,IAAI,UAAU,EAAE,CAAC;IAC/C,WAAW,GAAY,IAAI,OAAO,EAAE,CAAC;IAErC,MAAM,CAAC,qBAAqB,GAAY,KAAK,CAAC;IAE9C,uBAAuB,GAAY,KAAK,CAAC;IACjD,IAAI,UAAU,KAAc,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAG1D,OAAO,CAAU;IACjB,KAAK,CAAS;IACd,gBAAgB,GAAY,KAAK,CAAC;IAClC,UAAU,CAAc;IACxB,gBAAgB,CAA2B;IAGnD,sDAAsD;IAC9C,OAAO,GAAiB,EAAE,CAAC;IAC3B,MAAM,GAAkB,EAAE,CAAC;IACnC,4FAA4F;IAC5F,sDAAsD;IACtD,gGAAgG;IAChG,qFAAqF;IAGrF,YAAY,OAAgB;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAChF,OAAO;SACV;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YAChC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;YACtC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACxC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,QAAmB,EAAE,MAAe,EAAE,IAAa;QAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,QAAmB,EAAE,MAAe,EAAE,MAAc;QAClE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,QAAmB,EAAE,IAAU,EAAE,MAAe;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,IAAI,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,OAAO;SACV;QAED,IAAI,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,KAAqB,CAAC;QACnE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,KAAoB,CAAC;QAEhD,4BAA4B;QAE5B,gFAAgF;QAChF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACrD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE;YACpG,OAAO,CAAC,IAAI,CAAC,gFAAgF,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1I,4JAA4J;YAC5J,MAAM,eAAe,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC1C,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC5C,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBACpD,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aACvD;YACD,SAAS,GAAG,eAAe,CAAC;SAC/B;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpG,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpC,mDAAmD;SAEtD;IACL,CAAC;IAEO,cAAc,CAAC,QAAmB,EAAE,IAAkB,EAAE,MAAgB;QAC5E,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,MAAM,EACF,SAAS,EACT,yBAAyB,EAC5B,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAElD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,MAAM;YACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEnC,uFAAuF;QACvF,4FAA4F;QAC5F,6EAA6E;QAC7E,IAAI,yBAAyB,EAAE;YAC3B,sBAAsB;SACzB;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvD,GAAG,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QACzB,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,QAAmB,EAAE,OAAgB;QAEtD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClE,IAAI,SAAS,GAAqB,IAAI,CAAC;QACvC,IAAI,yBAAyB,GAAG,KAAK,CAAC;QAEtC,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YAE5B,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YACtC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;YACzB,yBAAyB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,sBAAsB,CAAC;gBAC5D,IAAI,YAAY;oBACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBACjH,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBACpE,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrF,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzB;YACD,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9B,EAAE,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAEhF;aACI;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;YACpE,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAClD,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YACnE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;SAEnC;QAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAC;IAC1F,CAAC;IAED,UAAU,CAAC,GAAe;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,EAAE;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACrD,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAE9B,IAAI,IAAI,YAAY,QAAQ,EAAE;oBAC1B,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,IAAgB,EAAE,IAAI,CAAC,CAAC;iBACtD;qBACI,IAAI,IAAI,YAAY,SAAS,EAAE;oBAChC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,IAAiB,CAAC,CAAC;iBAClD;gBAED,+CAA+C;gBAC/C,MAAM,GAAG,GAAG,GAAgB,CAAC;gBAC7B,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,iBAAiB,EAAE;oBACzC,MAAM,EAAE,GAAG,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAC3C,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;wBAC3D,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;qBACnC;iBACJ;aACJ;SACJ;IACL,CAAC;IAED,UAAU,CAAC,IAA4B,EAAE,WAAoB,EAAE,QAAiB;QAC5E,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC/C,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtC,IAAK,IAAkB,CAAC,UAAU,KAAK,IAAI,EAAE;YACzC,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;SAC9D;aACI;YACD,MAAM,SAAS,GAAG,IAAkB,CAAC;YACrC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;aAC3E;SACJ;IACL,CAAC;IAED,gBAAgB,CAAC,SAAqB;QAClC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACzD;IACL,CAAC;IAED,qBAAqB,CAAC,EAAc;QAChC,OAAO,EAAE,CAAC,QAAQ,CAAc,CAAC;IACrC,CAAC;IAEO,wBAAwB,CAAC,EAAc,EAAE,SAAoB;QACjE,kCAAkC;QAClC,4FAA4F;QAC5F,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,sBAAsB,KAAK,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACnF,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACpC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC5C,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEvD,6EAA6E;QAC7E,8CAA8C;QAC9C,uDAAuD;QACvD,8CAA8C;QAC9C,sBAAsB;QACtB,qCAAqC;QACrC,oFAAoF;QACpF,QAAQ;QACR,IAAI;QAEJ,iBAAiB;QACjB,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC7F,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEhG,IAAI,EAAE,CAAC,WAAW,EAAE;YAChB,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;SACtE;aACI;YACD,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACvD;IACL,CAAC;IAED,iDAAiD;IACzC,KAAK,CAAgB;IAEtB,IAAI,CAAC,UAAmB;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,oBAAoB,CAAC,KAAY;QACrC,IAAI,YAAY,IAAI,sBAAsB,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,QAAQ,GAAG,IAAI,iBAAiB,CAAC;oBACjC,KAAK,EAAE,QAAQ;oBACf,mCAAmC;iBACtC,CAAC,CAAC;gBACH,IAAI,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SACrF;IACL,CAAC;IAEM,QAAQ;QACX,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QAErC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACpF;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SAClC;IACL,CAAC;IAED,wFAAwF;IAChF,WAAW;QACf,IAAI,sBAAsB;YAAE,OAAO;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAa,CAAC;YAExC,iDAAiD;YACjD,gEAAgE;YAChE,MAAM,GAAG,GAAI,GAAiB,CAAC;YAC/B,IAAI,GAAG,EAAE,UAAU,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,SAAS;oBACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChE,SAAS;aACZ;YAED,OAAO;YACP,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACtE;IACL,CAAC;IAEO,eAAe,CAAC,GAAa,EAAE,IAAe,EAAE,WAAoB,EAAE,QAAiB;QAE3F,oCAAoC;QACpC,8CAA8C;QAC9C,oCAAoC;QAEpC,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,uDAAuD;QACvD,IAAI,WAAW;YACX,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,QAAQ;YACR,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC7C,qCAAqC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,kBAAkB;QAClB,yCAAyC;QACzC,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,+FAA+F;QAC/F,2BAA2B;QAC3B,uDAAuD;QACvD,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;QACtB,sBAAsB;QACtB,wBAAwB;QACxB,wCAAwC;QACxC,IAAI;QACJ,iGAAiG;QAEjG,8BAA8B;IAClC,CAAC;IAEO,MAAM,CAAC,eAAe,GAAc,EAAE,CAAC;IACvC,0BAA0B,CAAC,IAAc,EAAE,SAAmB,EAAE,GAAY,EAAE,QAAoB;QACtG,qFAAqF;QACrF,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;YACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SACvB;QACD,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACtD,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3C,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B;YACD,OAAO,GAAG,CAAC;SACd;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC1E;QACD,OAAO,GAAG,CAAC;IACf,CAAC;;AAUL,IAAI,gBAAgB,GAA6B,IAAI,CAAC;AACtD,MAAM,UAAU,wBAAwB,CAAC,IAAuB;IAC5D,gBAAgB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,gBAAgB;IAElB,WAAW,CAAC,GAAoB;QAC5B,OAAO,gBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;CAEJ;AAKD,0EAA0E;AAC1E,MAAM,uBAAuB;IAEhB,KAAK,CAAQ;IACb,UAAU,CAAa;IAEhC,YAAY,KAAY,EAAE,UAAsB;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEO,gBAAgB,GAAgF,EAAE,CAAC;IACnG,cAAc,GAAoF,EAAE,CAAC;IAE7G,qBAAqB;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,iFAAiF;YACjF,IAAI,kBAAkB,IAAI,kBAAkB,EAAE;gBAC1C,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;oBAC5E,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;iBAC/E;qBACI;oBACD,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;oBAC9D,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;iBACjE;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,kBAAkB,CAAC,IAAe,EAAE,QAAkB,EAAE,KAAgB,EAAE,SAAmB;QACjG,IAAI,SAAS,GAAqB,IAAI,CAAC;QAEvC,kFAAkF;QAClF,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,EAAE;YACnC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAa,EAAE,EAAE;gBAChD,IAAI,CAAC,CAAC,cAAc,EAAE;oBAClB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBAC3B;gBACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;SACN;aACI;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/B,6CAA6C;YAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC/D,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE;oBACvC,IAAI,CAAC,CAAC,gBAAgB,EAAE;wBACpB,IAAI,CAAC,SAAS,EAAE;4BACZ,MAAM,QAAQ,GAAwB,EAAE,CAAC;4BACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;4BACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;gCAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gCAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gCACrC,IAAI,GAAG,EAAE;oCACL,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oCACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iCAC1B;6BACJ;4BACD,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;yBACtD;wBACD,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;qBAC3E;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAEO,qBAAqB;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACxC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,eAAe,EAAE;gBACzC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC7B,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aAC1B;SACJ;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,EAAE;gBACvC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC5B,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACxB;SACJ;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAe,EAAE,KAAgB;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;gBAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,eAAe,EAAE;oBACzC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBACnC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;iBAChC;aACJ;SACJ;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE;gBACrD,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC3B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,EAAE;oBACvC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;oBACvC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;iBAC9B;aACJ;SACJ;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"engine_physics.js","sourceRoot":"","sources":["../../../engine/engine_physics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,eAAe,EAAE,cAAc,EAAwB,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAiE,UAAU,EAAO,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE7Q,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACvI,OAAO,EAIH,SAAS,EACT,YAAY,EAEf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,MAAM,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACjJ,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC9C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AACjE,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAQpD,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/C,sCAAsC;AAEtC,MAAM,OAAO,cAAc;IACvB,GAAG,GAAoB,SAAS,CAAC;IACjC,GAAG,GAA8B,SAAS,CAAC;IAC3C,WAAW,GAAwB,SAAS,CAAC;IAC7C,SAAS,GAA0B,SAAS,CAAC;IAC7C,OAAO,GAAoC,SAAS,CAAC;IACrD,OAAO,GAAgC,SAAS,CAAC;IACjD,SAAS,GAAwB,IAAI,CAAC;IACtC,WAAW,GAAuB,SAAS,CAAC;IAC5C,WAAW,GAAuB,SAAS,CAAC;IAC5C,aAAa,GAAuB,SAAS,CAAC;IAC9C,SAAS,GAAgC,SAAS,CAAC;IACnD,MAAM,GAA2B,SAAS,CAAC;IAE3C,qBAAqB,CAAC,EAAU,EAAE,EAAU;QACxC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAmB,CAAC;QACpC,IAAI,EAAE;YACF,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;;YACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC;;AAGzC,MAAM,OAAO,kBAAkB;IAC3B,QAAQ,CAAS;IACjB,KAAK,CAAU;IACf,MAAM,CAAW;IACjB,YAAY,MAAgB,EAAE,QAAgB,EAAE,KAAc;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAED,MAAM,OAAO,OAAO;IAEhB,aAAa;IAEI,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;IACvC,qBAAqB,GAAmB,IAAI,cAAc,EAAE,CAAC;IAC7D,YAAY,GAAoB,IAAI,KAAK,CAAW,CAAC,CAAC,CAAC;IACvD,iBAAiB,GAAG;QACjC,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;QACtB,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;QACxB,MAAM,EAAE,EAAE;KACb,CAAA;IAGO,aAAa,GAAwB,IAAI,KAAK,EAAgB,CAAC;IAC/D,UAAU,GAAW,IAAI,MAAM,EAAE,CAAC;IACnC,aAAa,CAAC,SAAkB,EAAE,MAAc,EAAE,yBAAkC,IAAI;QAC3F,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;SACtF;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IACO,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;IACnC,eAAe,CAAC,GAAa,EAAE,EAAU,EAAE,IAAY,EAAE,OAA4B,EAAE,sBAA+B;QAC1H,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,MAAM,IAAI,GAAG,GAAW,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,WAAW;gBAChB,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,WAAW,EAAE;gBACjB,IAAI,IAAI,CAAC,sBAAsB;oBAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvF,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBACxB,uEAAuE;oBACvE,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACjE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,IAAI,CAAC,sBAAsB;wBAAE,OAAO;iBACvC;aACJ;SACJ;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE;YACd,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE;gBAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC3B,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;gBACpE,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,sBAAsB;oBAAE,OAAO;aAChE;SACJ;IACL,CAAC;IAEM,cAAc,CAAC,GAAQ,EAAE,UAAiC,IAAI;QACjE,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACnD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO,CAAC,UAAiC,IAAI;QAChD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnD,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;QACrE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAC/C,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QACnC,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC;QACzC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACnC,IAAI,OAAO,CAAC,aAAa;YACrB,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;;YACrD,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG,EAAE;YACb,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC5B;aACI;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACnD,IAAI,CAAC,GAAG,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO;oBAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,IAAI,EAAE,CAAC;aACnD;YACD,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC;QACD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO;gBACnC,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI,KAAK,EAAgB,CAAC;YACnE,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;SAChD;QAED,YAAY;QACZ,8DAA8D;QAC9D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;YACjC,IAAI,OAAO,CAAC,SAAS,YAAY,MAAM;gBACnC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;;gBAExC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;SAC1C;aACI;YACD,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACxB;QAED,kBAAkB;QAClB,wBAAwB;QAExB,QAAQ;QACR,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SACjE;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAKD,qBAAqB;IAEb,aAAa,GAAY,IAAI,OAAO,EAAE,CAAC;IACvC,eAAe,GAAe,IAAI,UAAU,EAAE,CAAC;IAC/C,UAAU,GAAY,IAAI,OAAO,EAAE,CAAC;IACpC,WAAW,GAAY,IAAI,OAAO,EAAE,CAAC;IAErC,MAAM,CAAC,qBAAqB,GAAY,KAAK,CAAC;IAE9C,uBAAuB,GAAY,KAAK,CAAC;IACjD,IAAI,UAAU,KAAc,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAG1D,OAAO,CAAU;IACjB,KAAK,CAAS;IACd,gBAAgB,GAAY,KAAK,CAAC;IAClC,UAAU,CAAc;IACxB,gBAAgB,CAA2B;IAG3C,OAAO,GAAiB,EAAE,CAAC;IAC3B,MAAM,GAAkB,EAAE,CAAC;IAE3B,UAAU,GAA8B,IAAI,GAAG,EAAwB,CAAC;IAGhF,YAAY,OAAgB;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAChF,OAAO;SACV;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YAChC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;YACtC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACxC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,cAAc,CAAC,QAAmB,EAAE,MAAe,EAAE,IAAa;QAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,QAAmB,EAAE,MAAe,EAAE,MAAc;QAClE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,kBAAkB,CAAC,QAAmB,EAAE,MAAe,EAAE,MAAc,EAAE,MAAc;QACnF,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,YAAY;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,QAAmB,EAAE,IAAU,EAAE,MAAe;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,IAAI,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,OAAO;SACV;QAED,IAAI,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,KAAqB,CAAC;QACnE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,KAAoB,CAAC;QAEhD,4BAA4B;QAE5B,gFAAgF;QAChF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACrD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE;YACpG,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;YACpF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1B,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;aACzC;iBACI;gBACD,OAAO,CAAC,IAAI,CAAC,gFAAgF,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC1I,4JAA4J;gBAC5J,MAAM,eAAe,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC1C,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBAC5C,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACpD,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;iBACvD;gBACD,SAAS,GAAG,eAAe,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;aAC7C;SACJ;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpG,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpC,mDAAmD;SAEtD;IACL,CAAC;IAEO,cAAc,CAAC,QAAmB,EAAE,IAAkB,EAAE,MAAgB;QAC5E,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,MAAM,EACF,SAAS,EACT,yBAAyB,EAC5B,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAElD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,MAAM;YACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEnC,uFAAuF;QACvF,4FAA4F;QAC5F,6EAA6E;QAC7E,IAAI,yBAAyB,EAAE;YAC3B,sBAAsB;SACzB;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvD,GAAG,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QACzB,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,QAAmB,EAAE,OAAgB;QAEtD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClE,IAAI,SAAS,GAAqB,IAAI,CAAC;QACvC,IAAI,yBAAyB,GAAG,KAAK,CAAC;QAEtC,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YAE5B,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YACtC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;YACzB,yBAAyB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,sBAAsB,CAAC;gBAC5D,IAAI,YAAY;oBACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBACjH,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBACpE,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrF,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzB;YACD,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9B,EAAE,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAEhF;aACI;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;YACpE,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAClD,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YACnE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;SAEnC;QAED,QAAQ,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;QAEzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAC;IAC1F,CAAC;IAED,UAAU,CAAC,GAAe;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACrD,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAE9B,IAAI,IAAI,YAAY,QAAQ,EAAE;oBAC1B,MAAM,QAAQ,GAAG,IAAgB,CAAC;oBAClC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAE3C,2DAA2D;oBAC3D,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAC7B,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;wBAC9B,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;qBACnC;iBACJ;qBACI,IAAI,IAAI,YAAY,SAAS,EAAE;oBAChC,yDAAyD;oBACzD,gCAAgC;oBAChC,8CAA8C;oBAC9C,gDAAgD;oBAChD,kCAAkC;oBAClC,6CAA6C;oBAC7C,IAAI;oBACJ,kDAAkD;oBAClD,uCAAuC;oBACvC,iCAAiC;oBACjC,uCAAuC;iBAC1C;gBAED,+CAA+C;gBAC/C,gCAAgC;gBAChC,iDAAiD;gBACjD,+DAA+D;gBAC/D,0CAA0C;gBAC1C,8CAA8C;gBAC9C,QAAQ;gBACR,IAAI;aACP;SACJ;IACL,CAAC;IAED,UAAU,CAAC,IAA4B,EAAE,WAAoB,EAAE,QAAiB;QAC5E,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC/C,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtC,IAAK,IAAkB,CAAC,UAAU,KAAK,IAAI,EAAE;YACzC,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;SAC9D;aACI;YACD,MAAM,SAAS,GAAG,IAAkB,CAAC;YACrC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;aAC3E;SACJ;IACL,CAAC;IAED,gBAAgB,CAAC,SAAqB;QAClC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACzD;IACL,CAAC;IAED,qBAAqB,CAAC,EAAc;QAChC,OAAO,EAAE,CAAC,QAAQ,CAAc,CAAC;IACrC,CAAC;IAEO,wBAAwB,CAAC,EAAc,EAAE,SAAoB;QACjE,kCAAkC;QAClC,4FAA4F;QAC5F,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,sBAAsB,KAAK,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACnF,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACpC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC5C,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEvD,6EAA6E;QAC7E,8CAA8C;QAC9C,uDAAuD;QACvD,8CAA8C;QAC9C,sBAAsB;QACtB,qCAAqC;QACrC,oFAAoF;QACpF,QAAQ;QACR,IAAI;QAEJ,iBAAiB;QACjB,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC7F,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEhG,IAAI,EAAE,CAAC,WAAW,EAAE;YAChB,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;SACtE;aACI;YACD,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACvD;IACL,CAAC;IAED,iDAAiD;IACzC,KAAK,CAAgB;IAEtB,IAAI,CAAC,UAAmB;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,oBAAoB,CAAC,KAAY;QACrC,IAAI,YAAY,IAAI,sBAAsB,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,QAAQ,GAAG,IAAI,iBAAiB,CAAC;oBACjC,KAAK,EAAE,QAAQ;oBACf,mCAAmC;iBACtC,CAAC,CAAC;gBACH,IAAI,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SACrF;IACL,CAAC;IAEM,QAAQ;QACX,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QAErC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACpF;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SAClC;IACL,CAAC;IAED,wFAAwF;IAChF,WAAW;QACf,IAAI,sBAAsB;YAAE,OAAO;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAa,CAAC;YAExC,iDAAiD;YACjD,gEAAgE;YAChE,MAAM,GAAG,GAAI,GAAiB,CAAC;YAC/B,IAAI,GAAG,EAAE,UAAU,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,SAAS;oBACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChE,SAAS;aACZ;YAGD,OAAO;YACP,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,wCAAwC;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAY,CAAC;YACxC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE;gBAC5B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrF,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC5C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACvB,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;gBAClB,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;gBAClB,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;aACrB;YACD,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACtE;IACL,CAAC;IAEO,eAAe,CAAC,GAAa,EAAE,IAAe,EAAE,WAAoB,EAAE,QAAiB;QAE3F,oCAAoC;QACpC,8CAA8C;QAC9C,oCAAoC;QAEpC,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,QAAQ,IAAI,EAAE;YACV,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,sBAAsB,CAAC;YAC1C,KAAK,aAAa,CAAC,sBAAsB;gBACrC,IAAI,WAAW;oBACX,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;gBACpD,IAAI,QAAQ;oBACR,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;gBACnD,MAAM;YACV;gBACI,IAAI,WAAW;oBACX,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAC9C,IAAI,QAAQ;oBACR,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM;SAEb;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,uDAAuD;QACvD,qCAAqC;QAErC,kBAAkB;QAClB,yCAAyC;QACzC,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,+FAA+F;QAC/F,2BAA2B;QAC3B,uDAAuD;QACvD,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;QACtB,sBAAsB;QACtB,wBAAwB;QACxB,wCAAwC;QACxC,IAAI;QACJ,iGAAiG;QAEjG,8BAA8B;IAClC,CAAC;IAEO,MAAM,CAAC,eAAe,GAAc,EAAE,CAAC;IACvC,0BAA0B,CAAC,IAAc,EAAE,SAAmB,EAAE,GAAY,EAAE,QAAoB;QACtG,qFAAqF;QACrF,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;YACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SACvB;QACD,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACtD,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3C,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B;YACD,OAAO,GAAG,CAAC;SACd;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC1E;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClD,MAAM,CAAC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAEhE,aAAa,CAAC,KAAiB,EAAE,KAAiB,EAAE,GAAwC;QACxF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,OAAO;SACV;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAc,CAAC;QACxC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAc,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAC1B,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EACxD,GAAG,EAAE,GAAG,CACX,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACnC,CAAC;;AAML,0EAA0E;AAC1E,MAAM,uBAAuB;IAEhB,KAAK,CAAQ;IACb,UAAU,CAAa;IAEhC,YAAY,KAAY,EAAE,UAAsB;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEO,gBAAgB,GAAgF,EAAE,CAAC;IACnG,cAAc,GAAoF,EAAE,CAAC;IAE7G,qBAAqB;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,eAAe;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9F,IAAI,kBAAkB,IAAI,kBAAkB,EAAE;gBAC1C,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;oBAC5E,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;iBAC/E;qBACI;oBACD,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;oBAC9D,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;iBACjE;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,kBAAkB,CAAC,IAAe,EAAE,QAAkB,EAAE,KAAgB,EAAE,SAAmB;QACjG,IAAI,SAAS,GAAqB,IAAI,CAAC;QAEvC,kFAAkF;QAClF,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,EAAE;YACnC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAa,EAAE,EAAE;gBAChD,IAAI,CAAC,CAAC,cAAc,EAAE;oBAClB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBAC3B;gBACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;SACN;aACI;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/B,6CAA6C;YAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC/D,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE;oBACvC,IAAI,CAAC,CAAC,gBAAgB,EAAE;wBACpB,IAAI,CAAC,SAAS,EAAE;4BACZ,MAAM,QAAQ,GAAwB,EAAE,CAAC;4BACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;4BACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;gCAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gCAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gCACrC,IAAI,GAAG,EAAE;oCACL,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oCACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iCAC1B;6BACJ;4BACD,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;yBACtD;wBACD,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;qBAC3E;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAEO,qBAAqB;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACxC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,eAAe,EAAE;gBACzC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC7B,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aAC1B;SACJ;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,EAAE;gBACvC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC;gBACjC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACxB;SACJ;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAe,EAAE,KAAgB;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;gBAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,eAAe,EAAE;oBACzC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBACnC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;iBAChC;aACJ;SACJ;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE;gBACrD,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC3B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,EAAE;oBACvC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;oBACvC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;iBAC9B;aACJ;SACJ;IACL,CAAC;CACJ"}
@@ -14,3 +14,10 @@ export declare enum RigidbodyConstraints {
14
14
  FreezeRotation = 112,
15
15
  FreezeAll = 126
16
16
  }
17
+ export declare enum Axes {
18
+ None = 0,
19
+ X = 2,
20
+ Y = 4,
21
+ Z = 8,
22
+ All = -1
23
+ }
@@ -16,4 +16,12 @@ export var RigidbodyConstraints;
16
16
  RigidbodyConstraints[RigidbodyConstraints["FreezeRotation"] = 112] = "FreezeRotation";
17
17
  RigidbodyConstraints[RigidbodyConstraints["FreezeAll"] = 126] = "FreezeAll";
18
18
  })(RigidbodyConstraints || (RigidbodyConstraints = {}));
19
+ export var Axes;
20
+ (function (Axes) {
21
+ Axes[Axes["None"] = 0] = "None";
22
+ Axes[Axes["X"] = 2] = "X";
23
+ Axes[Axes["Y"] = 4] = "Y";
24
+ Axes[Axes["Z"] = 8] = "Z";
25
+ Axes[Axes["All"] = -1] = "All";
26
+ })(Axes || (Axes = {}));
19
27
  //# sourceMappingURL=engine_physics.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine_physics.types.js","sourceRoot":"","sources":["../../../engine/engine_physics.types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,2EAAY,CAAA;IACZ,+EAAc,CAAA;AAChB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,MAAM,CAAN,IAAY,oBAWX;AAXD,WAAY,oBAAoB;IAC9B,+DAAQ,CAAA;IACR,qFAAmB,CAAA;IACnB,qFAAmB,CAAA;IACnB,qFAAmB,CAAA;IACnB,oFAAmB,CAAA;IACnB,sFAAoB,CAAA;IACpB,sFAAoB,CAAA;IACpB,sFAAoB,CAAA;IACpB,qFAAoB,CAAA;IACpB,2EAAe,CAAA;AACjB,CAAC,EAXW,oBAAoB,KAApB,oBAAoB,QAW/B"}
1
+ {"version":3,"file":"engine_physics.types.js","sourceRoot":"","sources":["../../../engine/engine_physics.types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,2EAAY,CAAA;IACZ,+EAAc,CAAA;AAChB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,MAAM,CAAN,IAAY,oBAWX;AAXD,WAAY,oBAAoB;IAC9B,+DAAQ,CAAA;IACR,qFAAmB,CAAA;IACnB,qFAAmB,CAAA;IACnB,qFAAmB,CAAA;IACnB,oFAAmB,CAAA;IACnB,sFAAoB,CAAA;IACpB,sFAAoB,CAAA;IACpB,sFAAoB,CAAA;IACpB,qFAAoB,CAAA;IACpB,2EAAe,CAAA;AACjB,CAAC,EAXW,oBAAoB,KAApB,oBAAoB,QAW/B;AAGD,MAAM,CAAN,IAAY,IAMX;AAND,WAAY,IAAI;IACd,+BAAQ,CAAA;IACR,yBAAK,CAAA;IACL,yBAAK,CAAA;IACL,yBAAK,CAAA;IACL,8BAAQ,CAAA;AACV,CAAC,EANW,IAAI,KAAJ,IAAI,QAMf"}
@@ -10,7 +10,7 @@ import { Addressables } from './engine_addressables';
10
10
  import { Application } from './engine_application';
11
11
  import { ILightDataRegistry } from './engine_lightdata';
12
12
  import { PlayerViewManager } from './engine_playerview';
13
- import { ICamera as Camera, IComponent, ILight as Light } from "./engine_types";
13
+ import { ICamera, IComponent, ILight } from "./engine_types";
14
14
  export declare const build_scene_functions: {
15
15
  [name: string]: (context: Context) => Promise<void>;
16
16
  };
@@ -33,6 +33,7 @@ export declare class ContextArgs {
33
33
  alias: string | undefined | null;
34
34
  domElement: HTMLElement | null;
35
35
  renderer?: THREE.WebGLRenderer;
36
+ hash?: string;
36
37
  constructor(domElement: HTMLElement | null);
37
38
  }
38
39
  export declare enum FrameEvent {
@@ -41,7 +42,8 @@ export declare enum FrameEvent {
41
42
  LateUpdate = 2,
42
43
  OnBeforeRender = 3,
43
44
  OnAfterRender = 4,
44
- PhysicsStep = 10
45
+ PrePhysicsStep = 9,
46
+ PostPhysicsStep = 10
45
47
  }
46
48
  export declare enum XRSessionMode {
47
49
  ImmersiveVR = "immersive-vr",
@@ -56,6 +58,8 @@ export declare class Context {
56
58
  name: string;
57
59
  alias: string | undefined | null;
58
60
  isManagedExternally: boolean;
61
+ /** used to append to loaded assets */
62
+ hash?: string;
59
63
  domElement: HTMLElement;
60
64
  get resolutionScaleFactor(): number;
61
65
  /** use to scale the resolution up or down of the renderer. default is 1 */
@@ -67,6 +71,8 @@ export declare class Context {
67
71
  get domY(): number;
68
72
  get isInXR(): boolean;
69
73
  xrSessionMode: XRSessionMode | undefined;
74
+ get isInVR(): boolean;
75
+ get isInAR(): boolean;
70
76
  get xrSession(): THREE.XRSession | null;
71
77
  get arOverlayElement(): HTMLElement;
72
78
  scene: THREE.Scene;
@@ -83,7 +89,7 @@ export declare class Context {
83
89
  [FrameEvent: number]: Array<CoroutineData>;
84
90
  };
85
91
  get mainCamera(): THREE.Camera | null;
86
- mainCameraComponent: Camera | undefined;
92
+ mainCameraComponent: ICamera | undefined;
87
93
  post_setup_callbacks: Function[];
88
94
  pre_update_callbacks: Function[];
89
95
  pre_render_callbacks: Function[];
@@ -101,7 +107,7 @@ export declare class Context {
101
107
  * @deprecated AssetDataBase is deprecated
102
108
  */
103
109
  assets: AssetDatabase;
104
- mainLight: Light | null;
110
+ mainLight: ILight | null;
105
111
  rendererData: RendererData;
106
112
  addressables: Addressables;
107
113
  lightmaps: ILightDataRegistry;
@@ -118,8 +124,8 @@ export declare class Context {
118
124
  unregisterCoroutineUpdate(coroutine: Generator, evt: FrameEvent): void;
119
125
  stopAllCoroutinesFrom(script: IComponent): void;
120
126
  private _cameraStack;
121
- setCurrentCamera(cam: Camera): void;
122
- removeCamera(cam?: Camera | null): void;
127
+ setCurrentCamera(cam: ICamera): void;
128
+ removeCamera(cam?: ICamera | null): void;
123
129
  private _onBeforeRenderListeners;
124
130
  /** use this to subscribe to onBeforeRender events on threejs objects */
125
131
  addBeforeRenderListener(target: THREE.Object3D, callback: OnBeforeRenderCallback): void;
@@ -18,7 +18,7 @@ import { Addressables } from './engine_addressables';
18
18
  import { Application } from './engine_application';
19
19
  import { LightDataRegistry } from './engine_lightdata';
20
20
  import { PlayerViewManager } from './engine_playerview';
21
- import { destroy } from './engine_gameobject';
21
+ import { destroy, foreachComponent } from './engine_gameobject';
22
22
  const debug = utils.getParam("debugSetup");
23
23
  const stats = utils.getParam("stats");
24
24
  // this is where functions that setup unity scenes will be pushed into
@@ -29,6 +29,7 @@ export class ContextArgs {
29
29
  alias = undefined;
30
30
  domElement;
31
31
  renderer = undefined;
32
+ hash;
32
33
  constructor(domElement) {
33
34
  this.domElement = domElement ?? document.body;
34
35
  }
@@ -40,7 +41,8 @@ export var FrameEvent;
40
41
  FrameEvent[FrameEvent["LateUpdate"] = 2] = "LateUpdate";
41
42
  FrameEvent[FrameEvent["OnBeforeRender"] = 3] = "OnBeforeRender";
42
43
  FrameEvent[FrameEvent["OnAfterRender"] = 4] = "OnAfterRender";
43
- FrameEvent[FrameEvent["PhysicsStep"] = 10] = "PhysicsStep";
44
+ FrameEvent[FrameEvent["PrePhysicsStep"] = 9] = "PrePhysicsStep";
45
+ FrameEvent[FrameEvent["PostPhysicsStep"] = 10] = "PostPhysicsStep";
44
46
  })(FrameEvent || (FrameEvent = {}));
45
47
  export var XRSessionMode;
46
48
  (function (XRSessionMode) {
@@ -66,6 +68,8 @@ export class Context {
66
68
  name;
67
69
  alias;
68
70
  isManagedExternally = false;
71
+ /** used to append to loaded assets */
72
+ hash;
69
73
  domElement;
70
74
  get resolutionScaleFactor() { return this._resolutionScaleFactor; }
71
75
  /** use to scale the resolution up or down of the renderer. default is 1 */
@@ -88,6 +92,8 @@ export class Context {
88
92
  get domY() { return this.domElement.offsetTop; }
89
93
  get isInXR() { return this.renderer.xr?.isPresenting || false; }
90
94
  xrSessionMode = undefined;
95
+ get isInVR() { return this.xrSessionMode === XRSessionMode.ImmersiveVR; }
96
+ get isInAR() { return this.xrSessionMode === XRSessionMode.ImmersiveAR; }
91
97
  get xrSession() { return this.renderer.xr?.getSession(); }
92
98
  get arOverlayElement() {
93
99
  const el = this.domElement;
@@ -147,6 +153,7 @@ export class Context {
147
153
  this.name = args?.name || "";
148
154
  this.alias = args?.alias;
149
155
  this.domElement = args?.domElement || document.body;
156
+ this.hash = args?.hash;
150
157
  if (args?.renderer) {
151
158
  this.renderer = args.renderer;
152
159
  this.isManagedExternally = true;
@@ -391,25 +398,25 @@ export class Context {
391
398
  }
392
399
  }
393
400
  if (!this.mainCamera) {
394
- // console.error("MISSING camera", this);
395
- // return;
396
- // Context._current = this;
397
- // //@ts-ignore
398
- // const cams = findObjectsOfType(Camera, this);
399
- // console.log(cams);
400
- // // get main camera, fallback to first camera
401
- // const mc: Camera = cams.find(c => c.tag == "MainCamera") ?? cams.find(_ => true) as Camera;
402
- // if (mc) {
403
- // if (mc.tag !== "MainCamera")
404
- // console.warn("No mainCamera configured. Some components rely on a mainCamera object being present. " +
405
- // "When exporting your scene, make sure to set the mainCamera tag on your camera. Using \"" + mc.name + "\" as mainCamera now.");
406
- // this.setCurrentCamera(mc);
407
- // }
408
- // else {
409
- // console.error("No camera found");
410
- // const cam = createCameraWithOrbitControl(this.scene);
411
- // this.setCurrentCamera(cam);
412
- // }
401
+ Context._current = this;
402
+ let camera = null;
403
+ foreachComponent(this.scene, comp => {
404
+ const cam = comp;
405
+ if (cam?.isCamera) {
406
+ if (cam.tag === "MainCamera") {
407
+ camera = cam;
408
+ return true;
409
+ }
410
+ else
411
+ camera = cam;
412
+ }
413
+ return undefined;
414
+ });
415
+ if (camera) {
416
+ this.setCurrentCamera(camera);
417
+ }
418
+ else
419
+ console.error("MISSING camera", this);
413
420
  }
414
421
  Context._current = this;
415
422
  looputils.processNewScripts(this);
@@ -484,8 +491,9 @@ export class Context {
484
491
  const physicsSteps = 1;
485
492
  const dt = this.time.deltaTime / physicsSteps;
486
493
  for (let i = 0; i < physicsSteps; i++) {
494
+ this.executeCoroutines(FrameEvent.PrePhysicsStep);
487
495
  this.physics.step(dt);
488
- this.executeCoroutines(FrameEvent.PhysicsStep);
496
+ this.executeCoroutines(FrameEvent.PostPhysicsStep);
489
497
  }
490
498
  }
491
499
  catch (err) {