pixi-reels 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +2 -1
- package/dist/core/Reel.d.ts +10 -1
- package/dist/core/Reel.d.ts.map +1 -1
- package/dist/core/ReelSet.d.ts +17 -1
- package/dist/core/ReelSet.d.ts.map +1 -1
- package/dist/core/ReelSetBuilder.d.ts +16 -2
- package/dist/core/ReelSetBuilder.d.ts.map +1 -1
- package/dist/frame/ColumnTarget.d.ts +77 -0
- package/dist/frame/ColumnTarget.d.ts.map +1 -0
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +192 -155
- package/dist/index.js.map +1 -1
- package/dist/spin/SpinController.d.ts +6 -0
- package/dist/spin/SpinController.d.ts.map +1 -1
- package/dist/testing/testHarness.d.ts +5 -0
- package/dist/testing/testHarness.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# pixi-reels
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#111](https://github.com/schmooky/pixi-reels/pull/111) [`dc2a526`](https://github.com/schmooky/pixi-reels/commit/dc2a526cf13c8670d10680f9104b93675332468f) Thanks [@igaming-bulochka](https://github.com/igaming-bulochka)! - Add: cascade + multiways combination. `ReelSetBuilder.multiways(...)` can now be paired with `.cascade(...)` or `spinningMode(new CascadeMode())` — the build-time throw added in ADR 012 is lifted. `AdjustPhase` runs between `SpinPhase` and `DropStopPhase` so the new shape commits before the drop-in fills it. Shape changes apply per-spin only; mid-cascade-chain reshape is unsupported (see ADR 015). Closes [#74](https://github.com/schmooky/pixi-reels/issues/74).
|
|
8
|
+
|
|
9
|
+
- [#116](https://github.com/schmooky/pixi-reels/pull/116) [`7afe3a9`](https://github.com/schmooky/pixi-reels/commit/7afe3a9a6edd70aaab4c985fb0167050e93fbd49) Thanks [@igaming-bulochka](https://github.com/igaming-bulochka)! - Add: `ColumnTarget` — explicit `{ visible, bufferAbove?, bufferBelow? }` input shape. Accepted by both `ReelSet.setResult` and `ReelSetBuilder.initialFrame` alongside the legacy `string[][]` form. Survives `structuredClone`, JSON, and `postMessage` (the legacy negative-index form does not).
|
|
10
|
+
|
|
11
|
+
Fix: `setResult` (legacy `string[][]` form) now honours `frame[col][-1]…[-bufferAbove]` end-to-end. Previously the negative-index slots were dropped inside `_applyPinsToGrid` (when pins were active) and `_coordinateBigSymbols` (always) by plain spread clones, so the convention only worked through `initialFrame`. The clones now use a property-preserving helper.
|
|
12
|
+
|
|
13
|
+
Fix: `Reel.placeSymbols` (skip / turbo land path) now reads the negative-index slot for the buffer-above cell instead of always random-filling it. Buffer-below targeting via `symbolIds[visibleRows]` is unchanged.
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- [#115](https://github.com/schmooky/pixi-reels/pull/115) [`1f30d8e`](https://github.com/schmooky/pixi-reels/commit/1f30d8e1b5d997872c85400122ee2613d35e0933) Thanks [@MaksimKiselev](https://github.com/MaksimKiselev)! - Fix: negative indices in `initialFrame` now correctly populate buffer-above slots. Setting `frame[col][-1]` (or `[-2]` for deeper buffers) places the symbol in the corresponding buffer-above cell instead of being silently ignored.
|
|
18
|
+
|
|
3
19
|
## 0.4.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -73,6 +73,7 @@ You'll find:
|
|
|
73
73
|
- **Recipes** — small how-tos for common mechanics (walking wilds, sticky wilds, cascade, mystery reveal, hold & win, ...). Each ships with a live mini-demo.
|
|
74
74
|
- **Demos** — full mechanic sandboxes with cheat panels. One click forces a scatter, a near-miss, a guaranteed jackpot.
|
|
75
75
|
- **Sandbox** — in-browser TypeScript playground; edit the file, hit Run, reels rebuild.
|
|
76
|
+
- **Studio** — bring-your-own-assets workbench. Drop in sprites or Spine bundles, wire them to symbol ids, edit builder code, share the result via a password-protected link (see [`apps/share-api`](apps/share-api/) for the relay).
|
|
76
77
|
- **Wiki** — API reference.
|
|
77
78
|
|
|
78
79
|
## Examples
|
|
@@ -90,7 +91,7 @@ Runnable apps in [`examples/`](examples/):
|
|
|
90
91
|
|
|
91
92
|
```ts
|
|
92
93
|
reelSet.spin(): Promise<SpinResult> // Start spinning
|
|
93
|
-
reelSet.setResult(symbols: string[][])
|
|
94
|
+
reelSet.setResult(symbols: string[][] | ColumnTarget[]) // Pass the target grid (triggers the stop). Use frame[col][-1] (or { bufferAbove: [...] }) to prefill cells above the visible window — see /recipes/buffer-indexing-cheatsheet/.
|
|
94
95
|
reelSet.setAnticipation([3, 4]) // Slow reels 3+4 before their landing
|
|
95
96
|
reelSet.setStopDelays([0, 140, 280, 600, 1100]) // Override per-reel stop stagger
|
|
96
97
|
reelSet.skip() // Slam-stop
|
package/dist/core/Reel.d.ts
CHANGED
|
@@ -232,7 +232,16 @@ export declare class Reel implements Disposable {
|
|
|
232
232
|
* caller-facing surface that also throws on pinned cells.
|
|
233
233
|
*/
|
|
234
234
|
setSymbolAt(visibleRow: number, symbolId: string): void;
|
|
235
|
-
/**
|
|
235
|
+
/**
|
|
236
|
+
* Place symbols immediately at target positions (for skip/turbo).
|
|
237
|
+
*
|
|
238
|
+
* `symbolIds[0..n-1]` is the visible area. `symbolIds[n..]` (if present)
|
|
239
|
+
* targets buffer-below slots. Buffer-above slots are addressed via
|
|
240
|
+
* negative-index string properties: `symbolIds[-1]` is the slot closest to
|
|
241
|
+
* the visible top row, `symbolIds[-bufferAbove]` the furthest above.
|
|
242
|
+
* Unset slots are filled with random symbols, matching the previous
|
|
243
|
+
* behaviour when only visible-area entries were provided.
|
|
244
|
+
*/
|
|
236
245
|
placeSymbols(symbolIds: string[]): void;
|
|
237
246
|
/**
|
|
238
247
|
* @internal — MultiWays orchestration only.
|
package/dist/core/Reel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reel.d.ts","sourceRoot":"","sources":["../../src/core/Reel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Reel.d.ts","sourceRoot":"","sources":["../../src/core/Reel.ts"],"names":[],"mappings":"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"}
|
package/dist/core/ReelSet.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { FrameBuilder, FrameMiddleware } from '../frame/FrameBuilder.js';
|
|
|
12
12
|
import { PhaseFactory } from '../spin/phases/PhaseFactory.js';
|
|
13
13
|
import { SpinningMode } from '../spin/modes/SpinningMode.js';
|
|
14
14
|
import { CellPin, CellPinOptions, MovePinOptions, CellCoord } from '../pins/CellPin.js';
|
|
15
|
+
import { ColumnTarget } from '../frame/ColumnTarget.js';
|
|
15
16
|
export interface ReelSetParams {
|
|
16
17
|
config: ReelSetInternalConfig;
|
|
17
18
|
reels: Reel[];
|
|
@@ -176,11 +177,21 @@ export declare class ReelSet extends Container implements Disposable {
|
|
|
176
177
|
/**
|
|
177
178
|
* Set the target result symbols. Triggers the stop sequence.
|
|
178
179
|
*
|
|
180
|
+
* Two input shapes are accepted:
|
|
181
|
+
*
|
|
182
|
+
* 1. **Legacy `string[][]`** — one column per reel, row-indexed. Set
|
|
183
|
+
* `frame[col][-1]` (or `[-2]`, etc.) to target a buffer-above slot,
|
|
184
|
+
* `frame[col][visibleRows]` for buffer-below.
|
|
185
|
+
* 2. **Explicit `ColumnTarget[]`** — `{ visible, bufferAbove?, bufferBelow? }`
|
|
186
|
+
* per column. Preferred for code that crosses worker/network boundaries,
|
|
187
|
+
* structuredClones, or JSON-serializes (the legacy form's negative-index
|
|
188
|
+
* slots don't survive standard cloning; the explicit form does).
|
|
189
|
+
*
|
|
179
190
|
* If any pins are active (`reelSet.pin(...)`), their symbols are overlaid
|
|
180
191
|
* onto the result before it reaches the stop sequencer — so pinned cells
|
|
181
192
|
* always land on the pin's `symbolId` regardless of what the server sent.
|
|
182
193
|
*/
|
|
183
|
-
setResult(symbols: string[][]): void;
|
|
194
|
+
setResult(symbols: string[][] | ColumnTarget[]): void;
|
|
184
195
|
/** Set which reels should show anticipation before stopping. */
|
|
185
196
|
setAnticipation(reelIndices: number[]): void;
|
|
186
197
|
/**
|
|
@@ -421,6 +432,11 @@ export declare class ReelSet extends Container implements Disposable {
|
|
|
421
432
|
* Return a deep copy of `symbols` with active pins overlaid. Pure — does
|
|
422
433
|
* not mutate the input. When there are no pins, returns the input as-is
|
|
423
434
|
* (fast path; identical behaviour to pre-pin code).
|
|
435
|
+
*
|
|
436
|
+
* IMPORTANT: clones via `cloneTargetGrid`, not `symbols.map(col => [...col])`.
|
|
437
|
+
* Spread drops the negative-index string properties that carry buffer-above
|
|
438
|
+
* targets (`col[-1] = 'COIN'`). If you refactor this method, keep the
|
|
439
|
+
* helper. See `cloneTargetGrid`'s TSDoc for the full contract.
|
|
424
440
|
*/
|
|
425
441
|
private _applyPinsToGrid;
|
|
426
442
|
/** Pins on a given reel, in row order. Used by AdjustPhase migration. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReelSet.d.ts","sourceRoot":"","sources":["../../src/core/ReelSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAc,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAG,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAG,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAG,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAmB,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ReelSet.d.ts","sourceRoot":"","sources":["../../src/core/ReelSet.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { SymbolRegistry } from '../symbols/SymbolRegistry.js';
|
|
|
7
7
|
import { PhaseFactory } from '../spin/phases/PhaseFactory.js';
|
|
8
8
|
import { SpinningMode } from '../spin/modes/SpinningMode.js';
|
|
9
9
|
import { FrameMiddleware } from '../frame/FrameBuilder.js';
|
|
10
|
+
import { ColumnTarget } from '../frame/ColumnTarget.js';
|
|
10
11
|
import { CascadeDropConfig } from '../cascade/DropRecipes.js';
|
|
11
12
|
/**
|
|
12
13
|
* The configurator you call before every reel set.
|
|
@@ -259,8 +260,21 @@ export declare class ReelSetBuilder {
|
|
|
259
260
|
* builder.cascade(DropRecipes.cascadeDrop)
|
|
260
261
|
*/
|
|
261
262
|
cascade(config: CascadeDropConfig): this;
|
|
262
|
-
/**
|
|
263
|
-
|
|
263
|
+
/**
|
|
264
|
+
* Set the initial symbol grid the reels show before the first spin.
|
|
265
|
+
*
|
|
266
|
+
* Two input shapes are accepted, mirroring `ReelSet.setResult`:
|
|
267
|
+
*
|
|
268
|
+
* 1. **Legacy `string[][]`** — one column per reel, row-indexed. Use
|
|
269
|
+
* `frame[col][-1]` (or `[-2]`, etc.) to target buffer-above slots,
|
|
270
|
+
* `frame[col][visibleRows]` for buffer-below.
|
|
271
|
+
* 2. **Explicit `ColumnTarget[]`** — `{ visible, bufferAbove?, bufferBelow? }`
|
|
272
|
+
* per column. Preferred when the seed comes from outside this process
|
|
273
|
+
* (JSON config, worker message, server-rendered state) — the legacy
|
|
274
|
+
* form's negative-index slots don't survive standard cloning, the
|
|
275
|
+
* explicit form does.
|
|
276
|
+
*/
|
|
277
|
+
initialFrame(frame: string[][] | ColumnTarget[]): this;
|
|
264
278
|
/** Build the ReelSet. Validates configuration and assembles all internal objects. */
|
|
265
279
|
build(): ReelSet;
|
|
266
280
|
private _validate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReelSetBuilder.d.ts","sourceRoot":"","sources":["../../src/core/ReelSetBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EAEZ,eAAe,EACf,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIpE,OAAO,EAAE,OAAO,EAAsB,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ReelSetBuilder.d.ts","sourceRoot":"","sources":["../../src/core/ReelSetBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-reel target shape for `ReelSet.setResult`. The explicit alternative to
|
|
3
|
+
* the legacy `string[]` form where buffer-above slots are stored as
|
|
4
|
+
* negative-index string properties (`arr[-1]`, `arr[-2]`).
|
|
5
|
+
*
|
|
6
|
+
* Both forms are accepted by `setResult`. The explicit form is easier to
|
|
7
|
+
* type-check, serialize across worker/network boundaries, and read in code
|
|
8
|
+
* reviews — internally the engine normalizes one to the other.
|
|
9
|
+
*/
|
|
10
|
+
export interface ColumnTarget {
|
|
11
|
+
/** Visible-area target symbols, indexed `0 … visibleRows-1`. */
|
|
12
|
+
visible: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Buffer-above target symbols. `bufferAbove[0]` is the slot closest to the
|
|
15
|
+
* visible top row; `bufferAbove[bufferAboveCount-1]` is the furthest above.
|
|
16
|
+
* Equivalent to legacy `frame[col][-1] … frame[col][-bufferAboveCount]`.
|
|
17
|
+
*/
|
|
18
|
+
bufferAbove?: (string | undefined)[];
|
|
19
|
+
/**
|
|
20
|
+
* Buffer-below target symbols. `bufferBelow[0]` is the slot closest to the
|
|
21
|
+
* visible bottom row; later indices go further below.
|
|
22
|
+
* Equivalent to legacy `frame[col][visibleRows] … frame[col][visibleRows + n - 1]`.
|
|
23
|
+
*/
|
|
24
|
+
bufferBelow?: (string | undefined)[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* True when `grid` is the explicit `ColumnTarget[]` form. False for the
|
|
28
|
+
* legacy `string[][]` form. Discriminated by whether the first column is an
|
|
29
|
+
* array (legacy) or a plain object (explicit).
|
|
30
|
+
*/
|
|
31
|
+
export declare function isColumnTargetGrid(grid: string[][] | ColumnTarget[]): grid is ColumnTarget[];
|
|
32
|
+
/**
|
|
33
|
+
* Clone a per-reel target grid while preserving negative-index slots used by
|
|
34
|
+
* buffer-above targeting.
|
|
35
|
+
*
|
|
36
|
+
* **CONTRIBUTOR NOTE — do not replace with plain spread.**
|
|
37
|
+
*
|
|
38
|
+
* The legacy public API supports `frame[col][-1] = 'COIN'` for targeting
|
|
39
|
+
* the cell just above the visible window. JavaScript stores that as a
|
|
40
|
+
* string property `"-1"` on the array object. Standard spread (`[...col]`),
|
|
41
|
+
* `structuredClone`, `JSON.stringify`, `Array.from`, and `postMessage`
|
|
42
|
+
* **all silently drop** those non-numeric properties. Any code path that
|
|
43
|
+
* needs to clone a result grid in the engine **must** route through this
|
|
44
|
+
* helper, or buffer-above targeting will silently break end-to-end and the
|
|
45
|
+
* integration tests in `tests/integration/setResult-bufferAbove.test.ts`
|
|
46
|
+
* will fail. See `tests/unit/ColumnTarget.test.ts` for the canary.
|
|
47
|
+
*
|
|
48
|
+
* Two existing call sites depend on this:
|
|
49
|
+
* - `ReelSet._applyPinsToGrid`
|
|
50
|
+
* - `SpinController._coordinateBigSymbols`
|
|
51
|
+
*
|
|
52
|
+
* If you add a third clone site, use this helper there too.
|
|
53
|
+
*/
|
|
54
|
+
export declare function cloneTargetGrid(grid: string[][], bufferAbove: number): string[][];
|
|
55
|
+
/** Single-column form of {@link cloneTargetGrid}. Same contributor rules. */
|
|
56
|
+
export declare function cloneColumn(col: string[], bufferAbove: number): string[];
|
|
57
|
+
/**
|
|
58
|
+
* Convert a `ColumnTarget` to the legacy `string[]` form, materializing
|
|
59
|
+
* `bufferAbove` entries as negative-index slots and `bufferBelow` entries as
|
|
60
|
+
* indices `>= visible.length`. This is what the rest of the pipeline (the
|
|
61
|
+
* `FrameBuilder` target-placement middleware, big-symbol coordinator, pins)
|
|
62
|
+
* already understands.
|
|
63
|
+
*/
|
|
64
|
+
export declare function columnTargetToArray(target: ColumnTarget): string[];
|
|
65
|
+
/**
|
|
66
|
+
* Normalize either input form into the legacy `string[][]` shape the
|
|
67
|
+
* pipeline runs on. Cheap when the input is already `string[][]` — returns
|
|
68
|
+
* it unchanged. Otherwise materializes one `string[]` per column.
|
|
69
|
+
*
|
|
70
|
+
* Throws with a readable message if the columns are a mix of the two
|
|
71
|
+
* shapes (e.g. `[ ['a','b'], { visible: ['c','d'] } ]`). TypeScript blocks
|
|
72
|
+
* this at compile time, but a JS caller bypassing types would otherwise
|
|
73
|
+
* crash later with a confusing `[...col]`-not-iterable error inside the
|
|
74
|
+
* pipeline; we fail loudly at the entry point instead.
|
|
75
|
+
*/
|
|
76
|
+
export declare function toLegacyTargetGrid(grid: string[][] | ColumnTarget[]): string[][];
|
|
77
|
+
//# sourceMappingURL=ColumnTarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnTarget.d.ts","sourceRoot":"","sources":["../../src/frame/ColumnTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,GAChC,IAAI,IAAI,YAAY,EAAE,CAExB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAEjF;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOxE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAelE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,GAChC,MAAM,EAAE,EAAE,CAeZ"}
|