valtio-history 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,7 +12,7 @@ https://valtio.pmnd.rs/docs/api/utils/proxyWithHistory
12
12
 
13
13
  ```tsx
14
14
  // replace the following line
15
- // import { proxyWithHistory } from '`valtio/utils';
15
+ // import { proxyWithHistory } from 'valtio/utils';
16
16
 
17
17
  import { proxyWithHistory } from 'valtio-history';
18
18
  import { useSnapshot } from 'valtio';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtio-history",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "author": "Daishi Kato",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,7 +29,7 @@ export type History<T> = {
29
29
  * - Suspense/promise is not supported.
30
30
  *
31
31
  * @example
32
- * import { proxyWithHistory } from 'valtio/utils'
32
+ * import { proxyWithHistory } from 'valtio-history'
33
33
  * const state = proxyWithHistory({
34
34
  * count: 1,
35
35
  * })
@@ -40,7 +40,7 @@ const deepClone = (value) => {
40
40
  * - Suspense/promise is not supported.
41
41
  *
42
42
  * @example
43
- * import { proxyWithHistory } from 'valtio/utils'
43
+ * import { proxyWithHistory } from 'valtio-history'
44
44
  * const state = proxyWithHistory({
45
45
  * count: 1,
46
46
  * })
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const react_2 = require("@testing-library/react");
7
+ const valtio_1 = require("valtio");
8
+ const vitest_1 = require("vitest");
9
+ const history_utility_1 = require("./history-utility");
10
+ (0, vitest_1.describe)('proxyWithHistory', () => {
11
+ (0, vitest_1.it)('should provide basic history functionality', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
12
+ const state = (0, history_utility_1.proxyWithHistory)({ count: 0 });
13
+ yield Promise.resolve();
14
+ (0, vitest_1.expect)(state.value.count).toEqual(0);
15
+ state.value.count += 1;
16
+ yield Promise.resolve();
17
+ (0, vitest_1.expect)(state.value.count).toEqual(1);
18
+ state.undo();
19
+ yield Promise.resolve();
20
+ (0, vitest_1.expect)(state.value.count).toEqual(0);
21
+ state.redo();
22
+ yield Promise.resolve();
23
+ (0, vitest_1.expect)(state.value.count).toEqual(1);
24
+ }));
25
+ (0, vitest_1.it)('should provide basic sequential undo functionality', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
26
+ const state = (0, history_utility_1.proxyWithHistory)({ count: 0 });
27
+ yield Promise.resolve();
28
+ (0, vitest_1.expect)(state.value.count).toEqual(0);
29
+ (0, vitest_1.expect)(state.canRedo()).toEqual(false);
30
+ (0, vitest_1.expect)(state.canUndo()).toEqual(false);
31
+ state.value.count += 1;
32
+ yield Promise.resolve();
33
+ (0, vitest_1.expect)(state.value.count).toEqual(1);
34
+ (0, vitest_1.expect)(state.canRedo()).toEqual(false);
35
+ (0, vitest_1.expect)(state.canUndo()).toEqual(true);
36
+ state.value.count += 1;
37
+ yield Promise.resolve();
38
+ (0, vitest_1.expect)(state.value.count).toEqual(2);
39
+ (0, vitest_1.expect)(state.canRedo()).toEqual(false);
40
+ (0, vitest_1.expect)(state.canUndo()).toEqual(true);
41
+ state.undo();
42
+ yield Promise.resolve();
43
+ (0, vitest_1.expect)(state.value.count).toEqual(1);
44
+ (0, vitest_1.expect)(state.canRedo()).toEqual(true);
45
+ (0, vitest_1.expect)(state.canUndo()).toEqual(true);
46
+ state.undo();
47
+ yield Promise.resolve();
48
+ (0, vitest_1.expect)(state.value.count).toEqual(0);
49
+ (0, vitest_1.expect)(state.canRedo()).toEqual(true);
50
+ (0, vitest_1.expect)(state.canUndo()).toEqual(false);
51
+ }));
52
+ (0, vitest_1.it)('should provide basic sequential redo functionality', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
53
+ const state = (0, history_utility_1.proxyWithHistory)({ count: 0 });
54
+ state.value.count += 1;
55
+ yield Promise.resolve();
56
+ state.value.count += 1;
57
+ yield Promise.resolve();
58
+ state.value.count += 1;
59
+ yield Promise.resolve();
60
+ state.undo();
61
+ yield Promise.resolve();
62
+ state.undo();
63
+ yield Promise.resolve();
64
+ state.undo();
65
+ yield Promise.resolve();
66
+ (0, vitest_1.expect)(state.value.count).toEqual(0);
67
+ (0, vitest_1.expect)(state.canRedo()).toEqual(true);
68
+ (0, vitest_1.expect)(state.canUndo()).toEqual(false);
69
+ state.redo();
70
+ yield Promise.resolve();
71
+ (0, vitest_1.expect)(state.value.count).toEqual(1);
72
+ (0, vitest_1.expect)(state.canRedo()).toEqual(true);
73
+ (0, vitest_1.expect)(state.canUndo()).toEqual(true);
74
+ state.redo();
75
+ yield Promise.resolve();
76
+ (0, vitest_1.expect)(state.value.count).toEqual(2);
77
+ (0, vitest_1.expect)(state.canRedo()).toEqual(true);
78
+ (0, vitest_1.expect)(state.canUndo()).toEqual(true);
79
+ state.redo();
80
+ yield Promise.resolve();
81
+ (0, vitest_1.expect)(state.value.count).toEqual(3);
82
+ (0, vitest_1.expect)(state.canRedo()).toEqual(false);
83
+ (0, vitest_1.expect)(state.canUndo()).toEqual(true);
84
+ }));
85
+ });
86
+ (0, vitest_1.describe)('proxyWithHistory react', () => {
87
+ (0, vitest_1.it)('should do simple count', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
88
+ const state = (0, history_utility_1.proxyWithHistory)(0);
89
+ const Counter = () => {
90
+ const snap = (0, valtio_1.useSnapshot)(state);
91
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: ["count: ", snap.value] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => ++state.value, children: "inc" }), (0, jsx_runtime_1.jsx)("button", { onClick: snap.undo, children: "undo" }), (0, jsx_runtime_1.jsx)("button", { onClick: snap.redo, children: "redo" })] }));
92
+ };
93
+ const { getByText, findByText } = (0, react_2.render)((0, jsx_runtime_1.jsx)(react_1.StrictMode, { children: (0, jsx_runtime_1.jsx)(Counter, {}) }));
94
+ yield findByText('count: 0');
95
+ react_2.fireEvent.click(getByText('inc'));
96
+ yield findByText('count: 1');
97
+ react_2.fireEvent.click(getByText('inc'));
98
+ yield findByText('count: 2');
99
+ react_2.fireEvent.click(getByText('inc'));
100
+ yield findByText('count: 3');
101
+ react_2.fireEvent.click(getByText('undo'));
102
+ yield findByText('count: 2');
103
+ react_2.fireEvent.click(getByText('redo'));
104
+ yield findByText('count: 3');
105
+ react_2.fireEvent.click(getByText('undo'));
106
+ yield findByText('count: 2');
107
+ react_2.fireEvent.click(getByText('undo'));
108
+ yield findByText('count: 1');
109
+ react_2.fireEvent.click(getByText('undo'));
110
+ yield findByText('count: 0');
111
+ react_2.fireEvent.click(getByText('inc'));
112
+ yield findByText('count: 1');
113
+ react_2.fireEvent.click(getByText('undo'));
114
+ yield findByText('count: 0');
115
+ }));
116
+ (0, vitest_1.it)('should count in object', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
117
+ const state = (0, history_utility_1.proxyWithHistory)({ count: 0 });
118
+ const Counter = () => {
119
+ const snap = (0, valtio_1.useSnapshot)(state);
120
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: ["count: ", snap.value.count] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => ++state.value.count, children: "inc" }), (0, jsx_runtime_1.jsx)("button", { onClick: snap.undo, children: "undo" }), (0, jsx_runtime_1.jsx)("button", { onClick: snap.redo, children: "redo" })] }));
121
+ };
122
+ const { getByText, findByText } = (0, react_2.render)((0, jsx_runtime_1.jsx)(react_1.StrictMode, { children: (0, jsx_runtime_1.jsx)(Counter, {}) }));
123
+ yield findByText('count: 0');
124
+ react_2.fireEvent.click(getByText('inc'));
125
+ yield findByText('count: 1');
126
+ react_2.fireEvent.click(getByText('inc'));
127
+ yield findByText('count: 2');
128
+ react_2.fireEvent.click(getByText('inc'));
129
+ yield findByText('count: 3');
130
+ react_2.fireEvent.click(getByText('undo'));
131
+ yield findByText('count: 2');
132
+ react_2.fireEvent.click(getByText('redo'));
133
+ yield findByText('count: 3');
134
+ react_2.fireEvent.click(getByText('undo'));
135
+ yield findByText('count: 2');
136
+ react_2.fireEvent.click(getByText('undo'));
137
+ yield findByText('count: 1');
138
+ react_2.fireEvent.click(getByText('undo'));
139
+ yield findByText('count: 0');
140
+ react_2.fireEvent.click(getByText('inc'));
141
+ yield findByText('count: 1');
142
+ react_2.fireEvent.click(getByText('undo'));
143
+ yield findByText('count: 0');
144
+ }));
145
+ (0, vitest_1.it)('should count in nested object', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
146
+ const state = (0, history_utility_1.proxyWithHistory)({ nested: { count: 0 } });
147
+ const Counter = () => {
148
+ const snap = (0, valtio_1.useSnapshot)(state);
149
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: ["count: ", snap.value.nested.count] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => ++state.value.nested.count, children: "inc" }), (0, jsx_runtime_1.jsx)("button", { onClick: snap.undo, children: "undo" }), (0, jsx_runtime_1.jsx)("button", { onClick: snap.redo, children: "redo" })] }));
150
+ };
151
+ const { getByText, findByText } = (0, react_2.render)((0, jsx_runtime_1.jsx)(react_1.StrictMode, { children: (0, jsx_runtime_1.jsx)(Counter, {}) }));
152
+ yield findByText('count: 0');
153
+ react_2.fireEvent.click(getByText('inc'));
154
+ yield findByText('count: 1');
155
+ react_2.fireEvent.click(getByText('inc'));
156
+ yield findByText('count: 2');
157
+ react_2.fireEvent.click(getByText('inc'));
158
+ yield findByText('count: 3');
159
+ react_2.fireEvent.click(getByText('undo'));
160
+ yield findByText('count: 2');
161
+ react_2.fireEvent.click(getByText('redo'));
162
+ yield findByText('count: 3');
163
+ react_2.fireEvent.click(getByText('undo'));
164
+ yield findByText('count: 2');
165
+ react_2.fireEvent.click(getByText('undo'));
166
+ yield findByText('count: 1');
167
+ react_2.fireEvent.click(getByText('undo'));
168
+ yield findByText('count: 0');
169
+ react_2.fireEvent.click(getByText('inc'));
170
+ yield findByText('count: 1');
171
+ react_2.fireEvent.click(getByText('undo'));
172
+ yield findByText('count: 0');
173
+ }));
174
+ (0, vitest_1.it)('should do multiple redos at once (#323)', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
175
+ const state = (0, history_utility_1.proxyWithHistory)({ nested: { count: 0 } });
176
+ const Counter = () => {
177
+ const snap = (0, valtio_1.useSnapshot)(state);
178
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: ["count: ", snap.value.nested.count] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => ++state.value.nested.count, children: "inc" }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
179
+ state.undo();
180
+ state.undo();
181
+ }, children: "undo twice" }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
182
+ state.redo();
183
+ state.redo();
184
+ }, children: "redo twice" })] }));
185
+ };
186
+ const { getByText, findByText } = (0, react_2.render)((0, jsx_runtime_1.jsx)(react_1.StrictMode, { children: (0, jsx_runtime_1.jsx)(Counter, {}) }));
187
+ yield findByText('count: 0');
188
+ react_2.fireEvent.click(getByText('inc'));
189
+ yield findByText('count: 1');
190
+ react_2.fireEvent.click(getByText('inc'));
191
+ yield findByText('count: 2');
192
+ react_2.fireEvent.click(getByText('undo twice'));
193
+ yield findByText('count: 0');
194
+ react_2.fireEvent.click(getByText('redo twice'));
195
+ yield findByText('count: 2');
196
+ }));
197
+ (0, vitest_1.it)('should update with nested arrays (#516)', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
198
+ const state = (0, history_utility_1.proxyWithHistory)({
199
+ level0Values: [{ level1Values: [0, 1] }, { level1Values: [2, 3] }],
200
+ });
201
+ const NestedArray = () => {
202
+ const snap = (0, valtio_1.useSnapshot)(state);
203
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: ["values: ", JSON.stringify(snap.value)] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
204
+ state.undo();
205
+ }, children: "undo" }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
206
+ if (state.value.level0Values[1]) {
207
+ state.value.level0Values[1].level1Values[0] = 10;
208
+ }
209
+ }, children: "change 2 to 10" }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
210
+ if (state.value.level0Values[1]) {
211
+ state.value.level0Values[1].level1Values[0] = 11;
212
+ }
213
+ }, children: "change 10 to 11" }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
214
+ if (state.value.level0Values[0]) {
215
+ state.value.level0Values[0].level1Values[0] = 12;
216
+ }
217
+ }, children: "change 0 to 12" })] }));
218
+ };
219
+ const { getByText, findByText } = (0, react_2.render)((0, jsx_runtime_1.jsx)(react_1.StrictMode, { children: (0, jsx_runtime_1.jsx)(NestedArray, {}) }));
220
+ yield findByText('values: {"level0Values":[{"level1Values":[0,1]},{"level1Values":[2,3]}]}');
221
+ react_2.fireEvent.click(getByText('change 2 to 10'));
222
+ yield findByText('values: {"level0Values":[{"level1Values":[0,1]},{"level1Values":[10,3]}]}');
223
+ react_2.fireEvent.click(getByText('change 10 to 11'));
224
+ yield findByText('values: {"level0Values":[{"level1Values":[0,1]},{"level1Values":[11,3]}]}');
225
+ react_2.fireEvent.click(getByText('undo')); // => 11 back to 10
226
+ yield findByText('values: {"level0Values":[{"level1Values":[0,1]},{"level1Values":[10,3]}]}');
227
+ react_2.fireEvent.click(getByText('change 0 to 12'));
228
+ yield findByText('values: {"level0Values":[{"level1Values":[12,1]},{"level1Values":[10,3]}]}');
229
+ react_2.fireEvent.click(getByText('undo')); // => 12 back to 0
230
+ yield findByText('values: {"level0Values":[{"level1Values":[0,1]},{"level1Values":[10,3]}]}');
231
+ react_2.fireEvent.click(getByText('undo')); // => 10 back to 2
232
+ yield findByText('values: {"level0Values":[{"level1Values":[0,1]},{"level1Values":[2,3]}]}');
233
+ }));
234
+ });
235
+ //# sourceMappingURL=history-utility.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-utility.spec.js","sourceRoot":"","sources":["../../../../packages/history-utility/src/history-utility.spec.tsx"],"names":[],"mappings":";;;;AAAA,iCAAmC;AACnC,kDAA2D;AAC3D,mCAAqC;AACrC,mCAA8C;AAE9C,uDAAqD;AAErD,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAS,EAAE;QAC1D,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAS,EAAE;QAClE,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAS,EAAE;QAClE,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE7C,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAExB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAS,EAAE;QACtC,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,CAAC,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CACL,6DACE,uDAAa,IAAI,CAAC,KAAK,IAAO,EAC9B,mCAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,oBAAc,EAClD,mCAAQ,OAAO,EAAE,IAAI,CAAC,IAAI,qBAAe,EACzC,mCAAQ,OAAO,EAAE,IAAI,CAAC,IAAI,qBAAe,IACxC,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,cAAM,EACtC,uBAAC,kBAAU,cACT,uBAAC,OAAO,KAAG,GACA,CACd,CAAC;QAEF,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAS,EAAE;QACtC,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CACL,6DACE,uDAAa,IAAI,CAAC,KAAK,CAAC,KAAK,IAAO,EACpC,mCAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,oBAAc,EACxD,mCAAQ,OAAO,EAAE,IAAI,CAAC,IAAI,qBAAe,EACzC,mCAAQ,OAAO,EAAE,IAAI,CAAC,IAAI,qBAAe,IACxC,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,cAAM,EACtC,uBAAC,kBAAU,cACT,uBAAC,OAAO,KAAG,GACA,CACd,CAAC;QAEF,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAS,EAAE;QAC7C,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CACL,6DACE,uDAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAO,EAC3C,mCAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,oBAAc,EAC/D,mCAAQ,OAAO,EAAE,IAAI,CAAC,IAAI,qBAAe,EACzC,mCAAQ,OAAO,EAAE,IAAI,CAAC,IAAI,qBAAe,IACxC,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,cAAM,EACtC,uBAAC,kBAAU,cACT,uBAAC,OAAO,KAAG,GACA,CACd,CAAC;QAEF,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAS,EAAE;QACvD,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CACL,6DACE,uDAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAO,EAC3C,mCAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,oBAAc,EAC/D,mCACE,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,CAAC,IAAI,EAAE,CAAC;4BACb,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,CAAC,2BAGM,EACT,mCACE,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,CAAC,IAAI,EAAE,CAAC;4BACb,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,CAAC,2BAGM,IACR,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,cAAM,EACtC,uBAAC,kBAAU,cACT,uBAAC,OAAO,KAAG,GACA,CACd,CAAC;QAEF,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACzC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7B,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACzC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAS,EAAE;QAOvD,MAAM,KAAK,GAAG,IAAA,kCAAgB,EAAkB;YAC9C,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CACL,6DACE,wDAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAO,EAC/C,mCACE,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,CAAC,qBAGM,EACT,mCACE,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gCAC/B,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;6BAClD;wBACH,CAAC,+BAGM,EACT,mCACE,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gCAC/B,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;6BAClD;wBACH,CAAC,gCAGM,EACT,mCACE,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gCAC/B,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;6BAClD;wBACH,CAAC,+BAGM,IACR,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,cAAM,EACtC,uBAAC,kBAAU,cACT,uBAAC,WAAW,KAAG,GACJ,CACd,CAAC;QAEF,MAAM,UAAU,CACd,0EAA0E,CAC3E,CAAC;QAEF,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7C,MAAM,UAAU,CACd,2EAA2E,CAC5E,CAAC;QAEF,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,CACd,2EAA2E,CAC5E,CAAC;QAEF,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACvD,MAAM,UAAU,CACd,2EAA2E,CAC5E,CAAC;QAEF,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7C,MAAM,UAAU,CACd,4EAA4E,CAC7E,CAAC;QAEF,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB;QACtD,MAAM,UAAU,CACd,2EAA2E,CAC5E,CAAC;QAEF,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB;QACtD,MAAM,UAAU,CACd,0EAA0E,CAC3E,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}