@adobe/data 0.9.53 → 0.9.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cache/blob-store.browser.test.d.ts +1 -0
- package/dist/cache/blob-store.browser.test.js +122 -0
- package/dist/cache/blob-store.browser.test.js.map +1 -0
- package/dist/cache/data-cache.browser.test.d.ts +1 -0
- package/dist/cache/data-cache.browser.test.js +41 -0
- package/dist/cache/data-cache.browser.test.js.map +1 -0
- package/dist/cache/data-cache.js +26 -6
- package/dist/cache/data-cache.js.map +1 -1
- package/dist/cache/data-cache.test.js +12 -1
- package/dist/cache/data-cache.test.js.map +1 -1
- package/dist/cache/expiring-data-cache.browser.test.d.ts +1 -0
- package/dist/cache/expiring-data-cache.browser.test.js +42 -0
- package/dist/cache/expiring-data-cache.browser.test.js.map +1 -0
- package/dist/cache/functions/functions.browser.test.d.ts +1 -0
- package/dist/cache/functions/functions.browser.test.js +72 -0
- package/dist/cache/functions/functions.browser.test.js.map +1 -0
- package/dist/cache/managed-array.js +72 -68
- package/dist/cache/managed-array.js.map +1 -1
- package/dist/ecs/archetype/create-archetype.js +131 -7
- package/dist/ecs/archetype/create-archetype.js.map +1 -1
- package/dist/ecs/database/public/create-database-scheduler.browser.test.d.ts +1 -0
- package/dist/ecs/database/public/create-database-scheduler.browser.test.js +67 -0
- package/dist/ecs/database/public/create-database-scheduler.browser.test.js.map +1 -0
- package/dist/ecs/database/transactional-store/coalesce-actions.js +15 -41
- package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -1
- package/dist/ecs/database/transactional-store/coalesce-actions.test.js +30 -1
- package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -1
- package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.d.ts +1 -0
- package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.js +52 -0
- package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.js.map +1 -0
- package/dist/functions/serialization/serialize-to-storage.browser.test.d.ts +1 -0
- package/dist/functions/serialization/serialize-to-storage.browser.test.js +161 -0
- package/dist/functions/serialization/serialize-to-storage.browser.test.js.map +1 -0
- package/dist/math/aabb/face/all.d.ts +2 -0
- package/dist/math/aabb/face/all.js +10 -0
- package/dist/math/aabb/face/all.js.map +1 -0
- package/dist/math/aabb/face/face.d.ts +4 -0
- package/dist/math/aabb/face/face.js +3 -0
- package/dist/math/aabb/face/face.js.map +1 -0
- package/dist/math/aabb/face/from-position.d.ts +9 -0
- package/dist/math/aabb/face/from-position.js +32 -0
- package/dist/math/aabb/face/from-position.js.map +1 -0
- package/dist/math/aabb/face/from-position.test.d.ts +1 -0
- package/dist/math/aabb/face/from-position.test.js +21 -0
- package/dist/math/aabb/face/from-position.test.js.map +1 -0
- package/dist/math/aabb/face/get-adjacent.d.ts +3 -0
- package/dist/math/aabb/face/get-adjacent.js +24 -0
- package/dist/math/aabb/face/get-adjacent.js.map +1 -0
- package/dist/math/aabb/face/get-adjacent.test.d.ts +1 -0
- package/dist/math/aabb/face/get-adjacent.test.js +27 -0
- package/dist/math/aabb/face/get-adjacent.test.js.map +1 -0
- package/dist/math/aabb/face/get-faces.d.ts +3 -0
- package/dist/math/aabb/face/get-faces.js +11 -0
- package/dist/math/aabb/face/get-faces.js.map +1 -0
- package/dist/math/aabb/face/get-faces.test.d.ts +1 -0
- package/dist/math/aabb/face/get-faces.test.js +16 -0
- package/dist/math/aabb/face/get-faces.test.js.map +1 -0
- package/dist/math/aabb/face/get-name.d.ts +3 -0
- package/dist/math/aabb/face/get-name.js +7 -0
- package/dist/math/aabb/face/get-name.js.map +1 -0
- package/dist/math/aabb/face/get-name.test.d.ts +1 -0
- package/dist/math/aabb/face/get-name.test.js +13 -0
- package/dist/math/aabb/face/get-name.test.js.map +1 -0
- package/dist/math/aabb/face/get-normal.d.ts +4 -0
- package/dist/math/aabb/face/get-normal.js +11 -0
- package/dist/math/aabb/face/get-normal.js.map +1 -0
- package/dist/math/aabb/face/get-normal.test.d.ts +1 -0
- package/dist/math/aabb/face/get-normal.test.js +13 -0
- package/dist/math/aabb/face/get-normal.test.js.map +1 -0
- package/dist/math/aabb/face/get-opposite.d.ts +3 -0
- package/dist/math/aabb/face/get-opposite.js +27 -0
- package/dist/math/aabb/face/get-opposite.js.map +1 -0
- package/dist/math/aabb/face/get-opposite.test.d.ts +1 -0
- package/dist/math/aabb/face/get-opposite.test.js +20 -0
- package/dist/math/aabb/face/get-opposite.test.js.map +1 -0
- package/dist/math/aabb/face/internals.d.ts +6 -0
- package/dist/math/aabb/face/internals.js +34 -0
- package/dist/math/aabb/face/internals.js.map +1 -0
- package/dist/math/aabb/face/is-adjacent.d.ts +3 -0
- package/dist/math/aabb/face/is-adjacent.js +7 -0
- package/dist/math/aabb/face/is-adjacent.js.map +1 -0
- package/dist/math/aabb/face/is-adjacent.test.d.ts +1 -0
- package/dist/math/aabb/face/is-adjacent.test.js +15 -0
- package/dist/math/aabb/face/is-adjacent.test.js.map +1 -0
- package/dist/math/aabb/face/is-opposite.d.ts +3 -0
- package/dist/math/aabb/face/is-opposite.js +7 -0
- package/dist/math/aabb/face/is-opposite.js.map +1 -0
- package/dist/math/aabb/face/is-opposite.test.d.ts +1 -0
- package/dist/math/aabb/face/is-opposite.test.js +15 -0
- package/dist/math/aabb/face/is-opposite.test.js.map +1 -0
- package/dist/math/aabb/face/neg-x.d.ts +2 -0
- package/dist/math/aabb/face/neg-x.js +4 -0
- package/dist/math/aabb/face/neg-x.js.map +1 -0
- package/dist/math/aabb/face/neg-y.d.ts +2 -0
- package/dist/math/aabb/face/neg-y.js +4 -0
- package/dist/math/aabb/face/neg-y.js.map +1 -0
- package/dist/math/aabb/face/neg-z.d.ts +2 -0
- package/dist/math/aabb/face/neg-z.js +4 -0
- package/dist/math/aabb/face/neg-z.js.map +1 -0
- package/dist/math/aabb/face/none.d.ts +2 -0
- package/dist/math/aabb/face/none.js +4 -0
- package/dist/math/aabb/face/none.js.map +1 -0
- package/dist/math/aabb/face/pos-x.d.ts +2 -0
- package/dist/math/aabb/face/pos-x.js +4 -0
- package/dist/math/aabb/face/pos-x.js.map +1 -0
- package/dist/math/aabb/face/pos-y.d.ts +2 -0
- package/dist/math/aabb/face/pos-y.js +4 -0
- package/dist/math/aabb/face/pos-y.js.map +1 -0
- package/dist/math/aabb/face/pos-z.d.ts +2 -0
- package/dist/math/aabb/face/pos-z.js +4 -0
- package/dist/math/aabb/face/pos-z.js.map +1 -0
- package/dist/math/aabb/face/public.d.ts +16 -1
- package/dist/math/aabb/face/public.js +16 -1
- package/dist/math/aabb/face/public.js.map +1 -1
- package/dist/math/aabb/public.d.ts +1 -1
- package/dist/math/aabb/public.js +1 -1
- package/dist/math/aabb/public.js.map +1 -1
- package/dist/perftest/ecs1-perf.d.ts +54 -0
- package/dist/perftest/ecs1-perf.js +214 -0
- package/dist/perftest/ecs1-perf.js.map +1 -0
- package/dist/perftest/ecs2-perf.d.ts +5 -0
- package/dist/perftest/ecs2-perf.js +162 -0
- package/dist/perftest/ecs2-perf.js.map +1 -0
- package/dist/perftest/index.js +8 -3
- package/dist/perftest/index.js.map +1 -1
- package/dist/perftest/perf-test.d.ts +7 -0
- package/dist/perftest/perf-test.js +69 -7
- package/dist/perftest/perf-test.js.map +1 -1
- package/dist/perftest/typed-buffer-perf.d.ts +8 -0
- package/dist/perftest/typed-buffer-perf.js +133 -0
- package/dist/perftest/typed-buffer-perf.js.map +1 -0
- package/dist/service/agentic-service/action.d.ts +8 -4
- package/dist/service/agentic-service/create.d.ts +5 -1
- package/dist/service/agentic-service/create.js +1 -1
- package/dist/service/agentic-service/create.js.map +1 -1
- package/dist/service/agentic-service/create.test.js +1 -1
- package/dist/service/agentic-service/create.test.js.map +1 -1
- package/dist/service/agentic-service/create.type-test.js +23 -0
- package/dist/service/agentic-service/create.type-test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/references/data-lit/package.json +1 -1
- package/references/data-lit-tictactoe/package.json +1 -1
- package/references/data-react/package.json +1 -1
- package/references/data-react-hello/package.json +1 -1
- package/references/data-react-pixie/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { getAdjacent } from "./get-adjacent.js";
|
|
3
|
+
/** True if the two faces share an edge */
|
|
4
|
+
export const isAdjacent = (face1, face2) => {
|
|
5
|
+
return getAdjacent(face1).includes(face2);
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=is-adjacent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-adjacent.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/is-adjacent.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAW,EAAE,KAAW,EAAW,EAAE;IAC5D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { isAdjacent } from "./is-adjacent.js";
|
|
4
|
+
import { NEG_Z } from "./neg-z.js";
|
|
5
|
+
import { POS_X } from "./pos-x.js";
|
|
6
|
+
import { POS_Z } from "./pos-z.js";
|
|
7
|
+
describe("isAdjacent", () => {
|
|
8
|
+
it("is true when faces share an edge", () => {
|
|
9
|
+
expect(isAdjacent(POS_Z, POS_X)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it("is false for opposite faces", () => {
|
|
12
|
+
expect(isAdjacent(POS_Z, NEG_Z)).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=is-adjacent.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-adjacent.test.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/is-adjacent.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { getOpposite } from "./get-opposite.js";
|
|
3
|
+
/** True if the two faces are opposite single-face bits */
|
|
4
|
+
export const isOpposite = (face1, face2) => {
|
|
5
|
+
return getOpposite(face1) === face2;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=is-opposite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-opposite.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/is-opposite.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAW,EAAE,KAAW,EAAW,EAAE;IAC5D,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { isOpposite } from "./is-opposite.js";
|
|
4
|
+
import { NEG_Z } from "./neg-z.js";
|
|
5
|
+
import { POS_X } from "./pos-x.js";
|
|
6
|
+
import { POS_Z } from "./pos-z.js";
|
|
7
|
+
describe("isOpposite", () => {
|
|
8
|
+
it("is true for opposite pair", () => {
|
|
9
|
+
expect(isOpposite(POS_Z, NEG_Z)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it("is false for adjacent faces", () => {
|
|
12
|
+
expect(isOpposite(POS_Z, POS_X)).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=is-opposite.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-opposite.test.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/is-opposite.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neg-x.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/neg-x.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neg-y.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/neg-y.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neg-z.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/neg-z.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/none.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pos-x.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/pos-x.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pos-y.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/pos-y.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pos-z.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/pos-z.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { ALL } from "./all.js";
|
|
2
|
+
export { fromPosition } from "./from-position.js";
|
|
3
|
+
export { getAdjacent } from "./get-adjacent.js";
|
|
4
|
+
export { getFaces } from "./get-faces.js";
|
|
5
|
+
export { getName } from "./get-name.js";
|
|
6
|
+
export { getNormal } from "./get-normal.js";
|
|
7
|
+
export { getOpposite } from "./get-opposite.js";
|
|
8
|
+
export { isAdjacent } from "./is-adjacent.js";
|
|
9
|
+
export { isOpposite } from "./is-opposite.js";
|
|
10
|
+
export { NEG_X } from "./neg-x.js";
|
|
11
|
+
export { NEG_Y } from "./neg-y.js";
|
|
12
|
+
export { NEG_Z } from "./neg-z.js";
|
|
13
|
+
export { NONE } from "./none.js";
|
|
14
|
+
export { POS_X } from "./pos-x.js";
|
|
15
|
+
export { POS_Y } from "./pos-y.js";
|
|
16
|
+
export { POS_Z } from "./pos-z.js";
|
|
2
17
|
export * from "./schema.js";
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
export
|
|
2
|
+
export { ALL } from "./all.js";
|
|
3
|
+
export { fromPosition } from "./from-position.js";
|
|
4
|
+
export { getAdjacent } from "./get-adjacent.js";
|
|
5
|
+
export { getFaces } from "./get-faces.js";
|
|
6
|
+
export { getName } from "./get-name.js";
|
|
7
|
+
export { getNormal } from "./get-normal.js";
|
|
8
|
+
export { getOpposite } from "./get-opposite.js";
|
|
9
|
+
export { isAdjacent } from "./is-adjacent.js";
|
|
10
|
+
export { isOpposite } from "./is-opposite.js";
|
|
11
|
+
export { NEG_X } from "./neg-x.js";
|
|
12
|
+
export { NEG_Y } from "./neg-y.js";
|
|
13
|
+
export { NEG_Z } from "./neg-z.js";
|
|
14
|
+
export { NONE } from "./none.js";
|
|
15
|
+
export { POS_X } from "./pos-x.js";
|
|
16
|
+
export { POS_Y } from "./pos-y.js";
|
|
17
|
+
export { POS_Z } from "./pos-z.js";
|
|
3
18
|
export * from "./schema.js";
|
|
4
19
|
//# sourceMappingURL=public.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,cAAc,aAAa,CAAC"}
|
package/dist/math/aabb/public.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/math/aabb/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/math/aabb/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export declare const ecs1: {
|
|
2
|
+
create: {
|
|
3
|
+
setup: (n: number) => Promise<void>;
|
|
4
|
+
run: () => void;
|
|
5
|
+
cleanup: () => Promise<void>;
|
|
6
|
+
type: "create";
|
|
7
|
+
};
|
|
8
|
+
create_batch: {
|
|
9
|
+
setup: (n: number) => Promise<void>;
|
|
10
|
+
run: () => void;
|
|
11
|
+
cleanup: () => Promise<void>;
|
|
12
|
+
type: "create";
|
|
13
|
+
};
|
|
14
|
+
move_column: {
|
|
15
|
+
setup: (n: number) => Promise<void>;
|
|
16
|
+
run: () => void;
|
|
17
|
+
cleanup: () => Promise<void>;
|
|
18
|
+
getVisibleEnabledPositions: () => number[];
|
|
19
|
+
type: "move";
|
|
20
|
+
startN: number;
|
|
21
|
+
};
|
|
22
|
+
move_native: {
|
|
23
|
+
setup: (n: number) => Promise<void>;
|
|
24
|
+
run: () => void;
|
|
25
|
+
cleanup: () => Promise<void>;
|
|
26
|
+
getVisibleEnabledPositions: () => number[];
|
|
27
|
+
type: "move";
|
|
28
|
+
startN: number;
|
|
29
|
+
};
|
|
30
|
+
move_wasm: {
|
|
31
|
+
setup: (n: number) => Promise<void>;
|
|
32
|
+
run: () => void;
|
|
33
|
+
cleanup: () => Promise<void>;
|
|
34
|
+
getVisibleEnabledPositions: () => number[];
|
|
35
|
+
type: "move";
|
|
36
|
+
startN: number;
|
|
37
|
+
};
|
|
38
|
+
move_wasm_simd4: {
|
|
39
|
+
setup: (n: number) => Promise<void>;
|
|
40
|
+
run: () => void;
|
|
41
|
+
cleanup: () => Promise<void>;
|
|
42
|
+
getVisibleEnabledPositions: () => number[];
|
|
43
|
+
type: "move";
|
|
44
|
+
startN: number;
|
|
45
|
+
};
|
|
46
|
+
move_wasm_simd4_unrolled: {
|
|
47
|
+
setup: (n: number) => Promise<void>;
|
|
48
|
+
run: () => void;
|
|
49
|
+
cleanup: () => Promise<void>;
|
|
50
|
+
getVisibleEnabledPositions: () => number[];
|
|
51
|
+
type: "move";
|
|
52
|
+
startN: number;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { createECS } from "../old-ecs/index.js";
|
|
3
|
+
import { F32, True, U32 } from "../schema/index.js";
|
|
4
|
+
import * as assembly from "../../dist/assembly/index.js";
|
|
5
|
+
import { createWasmMemoryAllocator } from "../cache/memory-allocator.js";
|
|
6
|
+
// const COUNT = 1_000_000;
|
|
7
|
+
// const SIZEOF_F32 = 4;
|
|
8
|
+
// const SIZEOF_BOOLEAN = 1;
|
|
9
|
+
// const OBJECT_OVERHEAD = 16;
|
|
10
|
+
// // Expected 50 Mb
|
|
11
|
+
// const EXPECTED_MEMORY = (8 * SIZEOF_F32 + 2 * SIZEOF_BOOLEAN + OBJECT_OVERHEAD) * COUNT;
|
|
12
|
+
function createECSWithParticles(count, batch = true) {
|
|
13
|
+
const ecs = createECS({
|
|
14
|
+
allocator: createWasmMemoryAllocator(assembly.memory),
|
|
15
|
+
})
|
|
16
|
+
.withComponents({
|
|
17
|
+
color: U32.schema,
|
|
18
|
+
enabled: True.schema,
|
|
19
|
+
mass: F32.schema,
|
|
20
|
+
positionX: F32.schema,
|
|
21
|
+
positionY: F32.schema,
|
|
22
|
+
positionZ: F32.schema,
|
|
23
|
+
velocityX: F32.schema,
|
|
24
|
+
velocityY: F32.schema,
|
|
25
|
+
velocityZ: F32.schema,
|
|
26
|
+
visible: True.schema,
|
|
27
|
+
})
|
|
28
|
+
.withArchetypes({
|
|
29
|
+
VisibleEnabled: [
|
|
30
|
+
"id",
|
|
31
|
+
"color",
|
|
32
|
+
"enabled",
|
|
33
|
+
"mass",
|
|
34
|
+
"positionX",
|
|
35
|
+
"positionY",
|
|
36
|
+
"positionZ",
|
|
37
|
+
"velocityX",
|
|
38
|
+
"velocityY",
|
|
39
|
+
"velocityZ",
|
|
40
|
+
"visible",
|
|
41
|
+
],
|
|
42
|
+
InvisibleEnabled: [
|
|
43
|
+
"id",
|
|
44
|
+
"color",
|
|
45
|
+
"enabled",
|
|
46
|
+
"mass",
|
|
47
|
+
"positionX",
|
|
48
|
+
"positionY",
|
|
49
|
+
"positionZ",
|
|
50
|
+
"velocityX",
|
|
51
|
+
"velocityY",
|
|
52
|
+
"velocityZ",
|
|
53
|
+
],
|
|
54
|
+
VisibleDisabled: [
|
|
55
|
+
"id",
|
|
56
|
+
"color",
|
|
57
|
+
"mass",
|
|
58
|
+
"positionX",
|
|
59
|
+
"positionY",
|
|
60
|
+
"positionZ",
|
|
61
|
+
"velocityX",
|
|
62
|
+
"velocityY",
|
|
63
|
+
"velocityZ",
|
|
64
|
+
"visible",
|
|
65
|
+
],
|
|
66
|
+
InvisibleDisabled: [
|
|
67
|
+
"id",
|
|
68
|
+
"color",
|
|
69
|
+
"mass",
|
|
70
|
+
"positionX",
|
|
71
|
+
"positionY",
|
|
72
|
+
"positionZ",
|
|
73
|
+
"velocityX",
|
|
74
|
+
"velocityY",
|
|
75
|
+
"velocityZ",
|
|
76
|
+
]
|
|
77
|
+
});
|
|
78
|
+
const particle_archetypes = [
|
|
79
|
+
ecs.archetypes.VisibleEnabled,
|
|
80
|
+
ecs.archetypes.VisibleDisabled,
|
|
81
|
+
ecs.archetypes.InvisibleEnabled,
|
|
82
|
+
ecs.archetypes.InvisibleDisabled,
|
|
83
|
+
];
|
|
84
|
+
if (batch) {
|
|
85
|
+
const particle_count_per_table = Math.ceil(count / 4);
|
|
86
|
+
const particle_tables = particle_archetypes.map(archetype => ecs.createBatch(archetype, particle_count_per_table));
|
|
87
|
+
for (let tableIndex = 0; tableIndex < particle_tables.length; tableIndex++) {
|
|
88
|
+
const table = particle_tables[tableIndex];
|
|
89
|
+
const positionX = table.columns.positionX.native;
|
|
90
|
+
const positionY = table.columns.positionY.native;
|
|
91
|
+
const positionZ = table.columns.positionZ.native;
|
|
92
|
+
const velocityX = table.columns.velocityX.native;
|
|
93
|
+
const velocityY = table.columns.velocityY.native;
|
|
94
|
+
const velocityZ = table.columns.velocityZ.native;
|
|
95
|
+
const color = table.columns.color.native;
|
|
96
|
+
const mass = table.columns.mass.native;
|
|
97
|
+
for (let k = 0; k < particle_count_per_table; k++) {
|
|
98
|
+
const i = tableIndex + k * 4;
|
|
99
|
+
color[k] = 0xff00ff;
|
|
100
|
+
mass[k] = 10;
|
|
101
|
+
positionX[k] = i + 1;
|
|
102
|
+
positionY[k] = i + 1;
|
|
103
|
+
positionZ[k] = i + 1;
|
|
104
|
+
velocityX[k] = -i;
|
|
105
|
+
velocityY[k] = -i;
|
|
106
|
+
velocityZ[k] = -i;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
for (let i = 0; i < count; i++) {
|
|
112
|
+
ecs.createEntity(particle_archetypes[i % 4], {
|
|
113
|
+
color: 0xff00ff,
|
|
114
|
+
mass: 10,
|
|
115
|
+
positionX: i + 1,
|
|
116
|
+
positionY: i + 1,
|
|
117
|
+
positionZ: i + 1,
|
|
118
|
+
velocityX: -i,
|
|
119
|
+
velocityY: -i,
|
|
120
|
+
velocityZ: -i,
|
|
121
|
+
visible: (i >> 0) % 2 === 0 ? true : false,
|
|
122
|
+
enabled: (i >> 1) % 2 === 0 ? true : false,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return ecs;
|
|
127
|
+
}
|
|
128
|
+
const create = (batch) => {
|
|
129
|
+
let count = 0;
|
|
130
|
+
const setup = async (n) => {
|
|
131
|
+
count = n;
|
|
132
|
+
};
|
|
133
|
+
const run = () => {
|
|
134
|
+
createECSWithParticles(count, batch);
|
|
135
|
+
};
|
|
136
|
+
const cleanup = async () => { };
|
|
137
|
+
return { setup, run: run, cleanup, type: "create" };
|
|
138
|
+
};
|
|
139
|
+
function addManagedArrays(a, b, rows, addWasm) {
|
|
140
|
+
const aptr = a.native.byteOffset.valueOf();
|
|
141
|
+
const bptr = b.native.byteOffset.valueOf();
|
|
142
|
+
addWasm(aptr, bptr, rows);
|
|
143
|
+
}
|
|
144
|
+
function createMoveParticlesPerformanceTest(options) {
|
|
145
|
+
let ecs;
|
|
146
|
+
const setup = async (n) => {
|
|
147
|
+
ecs = createECSWithParticles(n);
|
|
148
|
+
};
|
|
149
|
+
const run = () => {
|
|
150
|
+
let total = 0;
|
|
151
|
+
const addWasm = typeof options.mode === "function" ? options.mode : null;
|
|
152
|
+
for (const table of ecs.getTables(ecs.archetypes.VisibleEnabled, {
|
|
153
|
+
mode: "write",
|
|
154
|
+
})) {
|
|
155
|
+
const { rows, columns } = table;
|
|
156
|
+
total += rows;
|
|
157
|
+
if (addWasm) {
|
|
158
|
+
addManagedArrays(columns.positionX, columns.velocityX, rows, addWasm);
|
|
159
|
+
addManagedArrays(columns.positionY, columns.velocityY, rows, addWasm);
|
|
160
|
+
addManagedArrays(columns.positionZ, columns.velocityZ, rows, addWasm);
|
|
161
|
+
}
|
|
162
|
+
else if (options.mode === "column") {
|
|
163
|
+
const { positionX, positionY, positionZ, velocityX, velocityY, velocityZ, } = columns;
|
|
164
|
+
for (let i = 0; i < rows; i++) {
|
|
165
|
+
positionX.set(i, positionX.get(i) + velocityX.get(i));
|
|
166
|
+
positionY.set(i, positionY.get(i) + velocityY.get(i));
|
|
167
|
+
positionZ.set(i, positionZ.get(i) + velocityZ.get(i));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (options.mode === "native") {
|
|
171
|
+
const positionX = columns.positionX.native;
|
|
172
|
+
const positionY = columns.positionY.native;
|
|
173
|
+
const positionZ = columns.positionZ.native;
|
|
174
|
+
const velocityX = columns.velocityX.native;
|
|
175
|
+
const velocityY = columns.velocityY.native;
|
|
176
|
+
const velocityZ = columns.velocityZ.native;
|
|
177
|
+
for (let i = 0; i < rows; i++) {
|
|
178
|
+
positionX[i] += velocityX[i];
|
|
179
|
+
positionY[i] += velocityY[i];
|
|
180
|
+
positionZ[i] += velocityZ[i];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const getVisibleEnabledPositions = () => {
|
|
186
|
+
const values = [];
|
|
187
|
+
for (const table of ecs.getTables(ecs.archetypes.VisibleEnabled, {
|
|
188
|
+
mode: "read",
|
|
189
|
+
})) {
|
|
190
|
+
const { rows, columns } = table;
|
|
191
|
+
const { positionX, positionY, positionZ } = columns;
|
|
192
|
+
for (let i = 0; i < rows; i++) {
|
|
193
|
+
values.push(positionX.get(i), positionY.get(i), positionZ.get(i));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return values;
|
|
197
|
+
};
|
|
198
|
+
const cleanup = async () => { };
|
|
199
|
+
// Lock N to 1M so every ecs*:move_* row exercises the same memory-hierarchy
|
|
200
|
+
// pressure (~24 MB working set, well past L2). Otherwise the auto-tuner
|
|
201
|
+
// picks different N per test based on cold-probe time, and "ecs2:move_column
|
|
202
|
+
// is faster than ecs1:move_native" turns out to be cache-locality, not code.
|
|
203
|
+
return { setup, run: run, cleanup, getVisibleEnabledPositions, type: "move", startN: 1_000_000 };
|
|
204
|
+
}
|
|
205
|
+
export const ecs1 = {
|
|
206
|
+
create: create(false),
|
|
207
|
+
create_batch: create(true),
|
|
208
|
+
move_column: createMoveParticlesPerformanceTest({ mode: "column" }),
|
|
209
|
+
move_native: createMoveParticlesPerformanceTest({ mode: "native" }),
|
|
210
|
+
move_wasm: createMoveParticlesPerformanceTest({ mode: assembly.addF32Arrays }),
|
|
211
|
+
move_wasm_simd4: createMoveParticlesPerformanceTest({ mode: assembly.addF32ArraysSimd4 }),
|
|
212
|
+
move_wasm_simd4_unrolled: createMoveParticlesPerformanceTest({ mode: assembly.addF32ArraysSimd4Unrolled }),
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=ecs1-perf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecs1-perf.js","sourceRoot":"","sources":["../../src/perftest/ecs1-perf.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAU,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,2BAA2B;AAC3B,wBAAwB;AACxB,4BAA4B;AAC5B,8BAA8B;AAC9B,qBAAqB;AACrB,2FAA2F;AAE3F,SAAS,sBAAsB,CAAC,KAAa,EAAE,KAAK,GAAG,IAAI;IACzD,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,SAAS,EAAE,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC;KACtD,CAAC;SACC,cAAc,CAAC;QACd,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,MAAM;QAChB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM;KACrB,CAAC;SACD,cAAc,CAAC;QACd,cAAc,EAAE;YACd,IAAI;YACJ,OAAO;YACP,SAAS;YACT,MAAM;YACN,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,SAAS;SACV;QACD,gBAAgB,EAAE;YAChB,IAAI;YACJ,OAAO;YACP,SAAS;YACT,MAAM;YACN,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;SACZ;QACD,eAAe,EAAE;YACf,IAAI;YACJ,OAAO;YACP,MAAM;YACN,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,SAAS;SACV;QACD,iBAAiB,EAAE;YACjB,IAAI;YACJ,OAAO;YACP,MAAM;YACN,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;SACZ;KACF,CAAC,CAAC;IAEL,MAAM,mBAAmB,GAAG;QAC1B,GAAG,CAAC,UAAU,CAAC,cAAc;QAC7B,GAAG,CAAC,UAAU,CAAC,eAAe;QAC9B,GAAG,CAAC,UAAU,CAAC,gBAAgB;QAC/B,GAAG,CAAC,UAAU,CAAC,iBAAiB;KACxB,CAAC;IAEX,IAAI,KAAK,EAAE,CAAC;QAEV,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAEnH,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAoB,CAAC;YAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAoB,CAAC;YAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAoB,CAAC;YAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAoB,CAAC;YAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAoB,CAAC;YAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAoB,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAO,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAO,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBACpB,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACb,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;SACI,CAAC;QACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC3C,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,SAAS,EAAE,CAAC,CAAC;gBACb,SAAS,EAAE,CAAC,CAAC;gBACb,SAAS,EAAE,CAAC,CAAC;gBACb,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;gBAC1C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;aACpC,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;QAChC,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAA4B,CAAC;AAChF,CAAC,CAAC;AAEF,SAAS,gBAAgB,CACvB,CAAiB,EACjB,CAAiB,EACjB,IAAY,EACZ,OAAqC;IAErC,MAAM,IAAI,GAAI,CAAC,CAAC,MAAkC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACxE,MAAM,IAAI,GAAI,CAAC,CAAC,MAAkC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kCAAkC,CAAC,OAE3C;IACC,IAAI,GAA8C,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;QAChC,GAAG,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE;YAC/D,IAAI,EAAE,OAAO;SACd,CAAC,EAAE,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YAChC,KAAK,IAAI,IAAI,CAAC;YACd,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACtE,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACtE,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,EACJ,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,GACV,GAAG,OAAO,CAAC;gBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9B,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC;gBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC;gBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC;gBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC;gBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC;gBAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9B,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC7B,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC7B,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACtC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE;YAC/D,IAAI,EAAE,MAAM;SACb,CAAC,EAAE,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YAChC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;YACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,4EAA4E;IAC5E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAA4B,CAAC;AAC7H,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC;IAC1B,WAAW,EAAE,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACnE,WAAW,EAAE,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACnE,SAAS,EAAE,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC9E,eAAe,EAAE,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IACzF,wBAAwB,EAAE,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,yBAAyB,EAAE,CAAC;CAC3G,CAAC"}
|