@nestia/e2e 7.0.0 → 7.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 +2 -1
- package/lib/ArrayUtil.d.ts +227 -2
- package/lib/ArrayUtil.js +227 -30
- package/lib/ArrayUtil.js.map +1 -1
- package/lib/GaffComparator.d.ts +229 -14
- package/lib/GaffComparator.js +229 -14
- package/lib/GaffComparator.js.map +1 -1
- package/lib/RandomGenerator.d.ts +332 -35
- package/lib/RandomGenerator.js +337 -50
- package/lib/RandomGenerator.js.map +1 -1
- package/lib/TestValidator.d.ts +334 -35
- package/lib/TestValidator.js +267 -57
- package/lib/TestValidator.js.map +1 -1
- package/lib/internal/json_equal_to.d.ts +1 -1
- package/lib/internal/json_equal_to.js.map +1 -1
- package/package.json +1 -1
- package/src/ArrayUtil.ts +227 -3
- package/src/GaffComparator.ts +230 -14
- package/src/RandomGenerator.ts +339 -50
- package/src/TestValidator.ts +351 -58
- package/src/internal/json_equal_to.ts +1 -1
package/lib/TestValidator.js
CHANGED
|
@@ -76,20 +76,59 @@ exports.TestValidator = void 0;
|
|
|
76
76
|
var RandomGenerator_1 = require("./RandomGenerator");
|
|
77
77
|
var json_equal_to_1 = require("./internal/json_equal_to");
|
|
78
78
|
/**
|
|
79
|
-
*
|
|
79
|
+
* A comprehensive collection of E2E validation utilities for testing
|
|
80
|
+
* applications.
|
|
80
81
|
*
|
|
81
|
-
*
|
|
82
|
+
* TestValidator provides type-safe validation functions for common testing
|
|
83
|
+
* scenarios including condition checking, equality validation, error testing,
|
|
84
|
+
* HTTP error validation, pagination testing, search functionality validation,
|
|
85
|
+
* and sorting validation.
|
|
86
|
+
*
|
|
87
|
+
* All functions follow a currying pattern to enable reusable test
|
|
88
|
+
* configurations and provide detailed error messages for debugging failed
|
|
89
|
+
* assertions.
|
|
82
90
|
*
|
|
83
91
|
* @author Jeongho Nam - https://github.com/samchon
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* // Basic condition testing
|
|
95
|
+
* TestValidator.predicate("user should be authenticated")(user.isAuthenticated);
|
|
96
|
+
*
|
|
97
|
+
* // Equality validation
|
|
98
|
+
* TestValidator.equals("API response should match expected")(expected)(actual);
|
|
99
|
+
*
|
|
100
|
+
* // Error validation
|
|
101
|
+
* TestValidator.error("should throw on invalid input")(() => validateInput(""));
|
|
102
|
+
* ```;
|
|
84
103
|
*/
|
|
85
104
|
var TestValidator;
|
|
86
105
|
(function (TestValidator) {
|
|
87
106
|
var _this = this;
|
|
88
107
|
/**
|
|
89
|
-
*
|
|
108
|
+
* Validates that a given condition evaluates to true.
|
|
109
|
+
*
|
|
110
|
+
* Supports synchronous boolean values, synchronous functions returning
|
|
111
|
+
* boolean, and asynchronous functions returning Promise<boolean>. The return
|
|
112
|
+
* type is automatically inferred based on the input type.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Synchronous boolean
|
|
117
|
+
* TestValidator.predicate("user should exist")(user !== null);
|
|
118
|
+
*
|
|
119
|
+
* // Synchronous function
|
|
120
|
+
* TestValidator.predicate("array should be empty")(() => arr.length === 0);
|
|
90
121
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
122
|
+
* // Asynchronous function
|
|
123
|
+
* await TestValidator.predicate("database should be connected")(
|
|
124
|
+
* async () => await db.ping()
|
|
125
|
+
* );
|
|
126
|
+
* ```;
|
|
127
|
+
*
|
|
128
|
+
* @param title - Descriptive title used in error messages when validation
|
|
129
|
+
* fails
|
|
130
|
+
* @returns A currying function that accepts the condition to validate
|
|
131
|
+
* @throws Error with descriptive message when condition is not satisfied
|
|
93
132
|
*/
|
|
94
133
|
TestValidator.predicate = function (title) {
|
|
95
134
|
return function (condition) {
|
|
@@ -123,16 +162,33 @@ var TestValidator;
|
|
|
123
162
|
};
|
|
124
163
|
};
|
|
125
164
|
/**
|
|
126
|
-
*
|
|
165
|
+
* Validates deep equality between two values using JSON comparison.
|
|
166
|
+
*
|
|
167
|
+
* Performs recursive comparison of objects and arrays. Supports an optional
|
|
168
|
+
* exception filter to ignore specific keys during comparison. Useful for
|
|
169
|
+
* validating API responses, data transformations, and object state changes.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* // Basic equality
|
|
174
|
+
* TestValidator.equals("response should match expected")(expectedUser)(actualUser);
|
|
127
175
|
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
176
|
+
* // Ignore timestamps in comparison
|
|
177
|
+
* TestValidator.equals("user data should match", (key) => key === "updatedAt")(
|
|
178
|
+
* expectedUser
|
|
179
|
+
* )(actualUser);
|
|
130
180
|
*
|
|
131
|
-
*
|
|
181
|
+
* // Validate API response structure
|
|
182
|
+
* const validateResponse = TestValidator.equals("API response structure");
|
|
183
|
+
* validateResponse({ id: 1, name: "John" })({ id: 1, name: "John" });
|
|
184
|
+
* ```;
|
|
132
185
|
*
|
|
133
|
-
* @param title
|
|
134
|
-
* @param exception
|
|
135
|
-
*
|
|
186
|
+
* @param title - Descriptive title used in error messages when values differ
|
|
187
|
+
* @param exception - Optional filter function to exclude specific keys from
|
|
188
|
+
* comparison
|
|
189
|
+
* @returns A currying function chain: first accepts expected value, then
|
|
190
|
+
* actual value
|
|
191
|
+
* @throws Error with detailed diff information when values are not equal
|
|
136
192
|
*/
|
|
137
193
|
TestValidator.equals = function (title, exception) {
|
|
138
194
|
if (exception === void 0) { exception = function () { return false; }; }
|
|
@@ -149,13 +205,79 @@ var TestValidator;
|
|
|
149
205
|
};
|
|
150
206
|
};
|
|
151
207
|
/**
|
|
152
|
-
*
|
|
208
|
+
* Validates deep inequality between two values using JSON comparison.
|
|
209
|
+
*
|
|
210
|
+
* Performs recursive comparison of objects and arrays to ensure they are NOT
|
|
211
|
+
* equal. Supports an optional exception filter to ignore specific keys during
|
|
212
|
+
* comparison. Useful for validating that data has changed, objects are
|
|
213
|
+
* different, or mutations have occurred.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* // Basic inequality
|
|
218
|
+
* TestValidator.notEquals("user should be different after update")(originalUser)(updatedUser);
|
|
153
219
|
*
|
|
154
|
-
*
|
|
220
|
+
* // Ignore timestamps in comparison
|
|
221
|
+
* TestValidator.notEquals("user data should differ", (key) => key === "updatedAt")(
|
|
222
|
+
* originalUser
|
|
223
|
+
* )(modifiedUser);
|
|
155
224
|
*
|
|
156
|
-
*
|
|
225
|
+
* // Validate state changes
|
|
226
|
+
* const validateStateChange = TestValidator.notEquals("state should have changed");
|
|
227
|
+
* validateStateChange(initialState)(currentState);
|
|
228
|
+
* ```;
|
|
157
229
|
*
|
|
158
|
-
* @param title
|
|
230
|
+
* @param title - Descriptive title used in error messages when values are
|
|
231
|
+
* equal
|
|
232
|
+
* @param exception - Optional filter function to exclude specific keys from
|
|
233
|
+
* comparison
|
|
234
|
+
* @returns A currying function chain: first accepts expected value, then
|
|
235
|
+
* actual value
|
|
236
|
+
* @throws Error when values are equal (indicating validation failure)
|
|
237
|
+
*/
|
|
238
|
+
TestValidator.notEquals = function (title, exception) {
|
|
239
|
+
if (exception === void 0) { exception = function () { return false; }; }
|
|
240
|
+
return function (x) {
|
|
241
|
+
return function (y) {
|
|
242
|
+
var diff = (0, json_equal_to_1.json_equal_to)(exception)(x)(y);
|
|
243
|
+
if (diff.length === 0)
|
|
244
|
+
throw new Error([
|
|
245
|
+
"Bug on ".concat(title, ": values should be different but are equal:"),
|
|
246
|
+
"\n",
|
|
247
|
+
JSON.stringify({ x: x, y: y }, null, 2),
|
|
248
|
+
].join("\n"));
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* Validates that a function throws an error or rejects when executed.
|
|
254
|
+
*
|
|
255
|
+
* Expects the provided function to fail. If the function executes
|
|
256
|
+
* successfully without throwing an error or rejecting, this validator will
|
|
257
|
+
* throw an exception. Supports both synchronous and asynchronous functions.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* // Synchronous error validation
|
|
262
|
+
* TestValidator.error("should reject invalid email")(
|
|
263
|
+
* () => validateEmail("invalid-email")
|
|
264
|
+
* );
|
|
265
|
+
*
|
|
266
|
+
* // Asynchronous error validation
|
|
267
|
+
* await TestValidator.error("should reject unauthorized access")(
|
|
268
|
+
* async () => await api.functional.getSecretData()
|
|
269
|
+
* );
|
|
270
|
+
*
|
|
271
|
+
* // Validate input validation
|
|
272
|
+
* TestValidator.error("should throw on empty string")(
|
|
273
|
+
* () => processRequiredInput("")
|
|
274
|
+
* );
|
|
275
|
+
* ```;
|
|
276
|
+
*
|
|
277
|
+
* @param title - Descriptive title used in error messages when no error
|
|
278
|
+
* occurs
|
|
279
|
+
* @returns A currying function that accepts the task function to validate
|
|
280
|
+
* @throws Error when the task function does not throw an error or reject
|
|
159
281
|
*/
|
|
160
282
|
TestValidator.error = function (title) {
|
|
161
283
|
return function (task) {
|
|
@@ -174,6 +296,37 @@ var TestValidator;
|
|
|
174
296
|
}
|
|
175
297
|
};
|
|
176
298
|
};
|
|
299
|
+
/**
|
|
300
|
+
* Validates that a function throws an HTTP error with specific status codes.
|
|
301
|
+
*
|
|
302
|
+
* Specialized error validator for HTTP operations. Validates that the
|
|
303
|
+
* function throws an HttpError with one of the specified status codes. Useful
|
|
304
|
+
* for testing API endpoints, authentication, and authorization logic.
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```typescript
|
|
308
|
+
* // Validate 401 Unauthorized
|
|
309
|
+
* await TestValidator.httpError("should return 401 for invalid token")(401)(
|
|
310
|
+
* async () => await api.functional.getProtectedResource("invalid-token")
|
|
311
|
+
* );
|
|
312
|
+
*
|
|
313
|
+
* // Validate multiple possible error codes
|
|
314
|
+
* await TestValidator.httpError("should return client error")(400, 404, 422)(
|
|
315
|
+
* async () => await api.functional.updateNonexistentResource(data)
|
|
316
|
+
* );
|
|
317
|
+
*
|
|
318
|
+
* // Validate server errors
|
|
319
|
+
* TestValidator.httpError("should handle server errors")(500, 502, 503)(
|
|
320
|
+
* () => callFaultyEndpoint()
|
|
321
|
+
* );
|
|
322
|
+
* ```;
|
|
323
|
+
*
|
|
324
|
+
* @param title - Descriptive title used in error messages
|
|
325
|
+
* @returns A currying function that accepts status codes, then the task
|
|
326
|
+
* function
|
|
327
|
+
* @throws Error when function doesn't throw HttpError or status code doesn't
|
|
328
|
+
* match
|
|
329
|
+
*/
|
|
177
330
|
TestValidator.httpError = function (title) {
|
|
178
331
|
return function () {
|
|
179
332
|
var statuses = [];
|
|
@@ -238,16 +391,36 @@ var TestValidator;
|
|
|
238
391
|
}
|
|
239
392
|
TestValidator.proceed = proceed;
|
|
240
393
|
/**
|
|
241
|
-
*
|
|
394
|
+
* Validates pagination index API results against expected entity order.
|
|
395
|
+
*
|
|
396
|
+
* Compares the order of entities returned by a pagination API with manually
|
|
397
|
+
* sorted expected results. Validates that entity IDs appear in the correct
|
|
398
|
+
* sequence. Commonly used for testing database queries, search results, and
|
|
399
|
+
* any paginated data APIs.
|
|
400
|
+
*
|
|
401
|
+
* @example
|
|
402
|
+
* ```typescript
|
|
403
|
+
* // Test article pagination
|
|
404
|
+
* const expectedArticles = await db.articles.findAll({ order: 'created_at DESC' });
|
|
405
|
+
* const actualArticles = await api.functional.getArticles({ page: 1, limit: 10 });
|
|
242
406
|
*
|
|
243
|
-
*
|
|
407
|
+
* TestValidator.index("article pagination order")(expectedArticles)(
|
|
408
|
+
* actualArticles,
|
|
409
|
+
* true // enable trace logging
|
|
410
|
+
* );
|
|
244
411
|
*
|
|
245
|
-
*
|
|
412
|
+
* // Test user search results
|
|
413
|
+
* const manuallyFilteredUsers = allUsers.filter(u => u.name.includes("John"));
|
|
414
|
+
* const apiSearchResults = await api.functional.searchUsers({ query: "John" });
|
|
246
415
|
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
416
|
+
* TestValidator.index("user search results")(manuallyFilteredUsers)(
|
|
417
|
+
* apiSearchResults
|
|
418
|
+
* );
|
|
419
|
+
* ```;
|
|
249
420
|
*
|
|
250
|
-
* @
|
|
421
|
+
* @param title - Descriptive title used in error messages when order differs
|
|
422
|
+
* @returns A currying function chain: expected entities, then actual entities
|
|
423
|
+
* @throws Error when entity order differs between expected and actual results
|
|
251
424
|
*/
|
|
252
425
|
TestValidator.index = function (title) {
|
|
253
426
|
return function (expected) {
|
|
@@ -273,29 +446,51 @@ var TestValidator;
|
|
|
273
446
|
};
|
|
274
447
|
};
|
|
275
448
|
/**
|
|
276
|
-
*
|
|
449
|
+
* Validates search functionality by testing API results against manual
|
|
450
|
+
* filtering.
|
|
277
451
|
*
|
|
278
|
-
*
|
|
452
|
+
* Comprehensive search validation that samples entities from a complete
|
|
453
|
+
* dataset, extracts search values, applies manual filtering, calls the search
|
|
454
|
+
* API, and compares results. Validates that search APIs return the correct
|
|
455
|
+
* subset of data matching the search criteria.
|
|
279
456
|
*
|
|
280
|
-
* @
|
|
281
|
-
*
|
|
457
|
+
* @example
|
|
458
|
+
* ```typescript
|
|
459
|
+
* // Test article search functionality
|
|
460
|
+
* const allArticles = await db.articles.findAll();
|
|
461
|
+
* const searchValidator = TestValidator.search("article search API")(
|
|
462
|
+
* (req) => api.searchArticles(req)
|
|
463
|
+
* )(allArticles, 5); // test with 5 random samples
|
|
282
464
|
*
|
|
283
|
-
*
|
|
465
|
+
* await searchValidator({
|
|
466
|
+
* fields: ["title", "content"],
|
|
467
|
+
* values: (article) => [article.title.split(" ")[0]], // first word
|
|
468
|
+
* filter: (article, [keyword]) =>
|
|
469
|
+
* article.title.includes(keyword) || article.content.includes(keyword),
|
|
470
|
+
* request: ([keyword]) => ({ q: keyword })
|
|
471
|
+
* });
|
|
472
|
+
*
|
|
473
|
+
* // Test user search with multiple criteria
|
|
474
|
+
* await TestValidator.search("user search with filters")(
|
|
475
|
+
* (req) => api.getUsers(req)
|
|
476
|
+
* )(allUsers, 3)({
|
|
477
|
+
* fields: ["status", "role"],
|
|
478
|
+
* values: (user) => [user.status, user.role],
|
|
479
|
+
* filter: (user, [status, role]) =>
|
|
480
|
+
* user.status === status && user.role === role,
|
|
481
|
+
* request: ([status, role]) => ({ status, role })
|
|
482
|
+
* });
|
|
483
|
+
* ```;
|
|
484
|
+
*
|
|
485
|
+
* @param title - Descriptive title used in error messages when search fails
|
|
486
|
+
* @returns A currying function chain: API getter function, then dataset and
|
|
487
|
+
* sample count
|
|
488
|
+
* @throws Error when API search results don't match manual filtering results
|
|
284
489
|
*/
|
|
285
490
|
TestValidator.search = function (title) {
|
|
286
|
-
/**
|
|
287
|
-
* @param getter A pagination API function to be called
|
|
288
|
-
*/
|
|
289
491
|
return function (getter) {
|
|
290
|
-
/**
|
|
291
|
-
* @param total Total entity records for comparison
|
|
292
|
-
* @param sampleCount Sampling count. Default is 1
|
|
293
|
-
*/
|
|
294
492
|
return function (total, sampleCount) {
|
|
295
493
|
if (sampleCount === void 0) { sampleCount = 1; }
|
|
296
|
-
/**
|
|
297
|
-
* @param props Search properties
|
|
298
|
-
*/
|
|
299
494
|
return function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
300
495
|
var samples, _loop_1, samples_1, samples_1_1, s, e_1_1;
|
|
301
496
|
var e_1, _a;
|
|
@@ -354,38 +549,53 @@ var TestValidator;
|
|
|
354
549
|
};
|
|
355
550
|
};
|
|
356
551
|
/**
|
|
357
|
-
*
|
|
552
|
+
* Validates sorting functionality of pagination APIs.
|
|
553
|
+
*
|
|
554
|
+
* Tests sorting operations by calling the API with sort parameters and
|
|
555
|
+
* validating that results are correctly ordered. Supports multiple fields,
|
|
556
|
+
* ascending/descending order, and optional filtering. Provides detailed error
|
|
557
|
+
* reporting for sorting failures.
|
|
558
|
+
*
|
|
559
|
+
* @example
|
|
560
|
+
* ```typescript
|
|
561
|
+
* // Test single field sorting
|
|
562
|
+
* const sortValidator = TestValidator.sort("article sorting")(
|
|
563
|
+
* (sortable) => api.getArticles({ sort: sortable })
|
|
564
|
+
* )("created_at")(
|
|
565
|
+
* (a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime()
|
|
566
|
+
* );
|
|
567
|
+
*
|
|
568
|
+
* await sortValidator("+"); // ascending
|
|
569
|
+
* await sortValidator("-"); // descending
|
|
358
570
|
*
|
|
359
|
-
* Test
|
|
571
|
+
* // Test multi-field sorting with filtering
|
|
572
|
+
* const userSortValidator = TestValidator.sort("user sorting")(
|
|
573
|
+
* (sortable) => api.getUsers({ sort: sortable })
|
|
574
|
+
* )("status", "created_at")(
|
|
575
|
+
* (a, b) => {
|
|
576
|
+
* if (a.status !== b.status) return a.status.localeCompare(b.status);
|
|
577
|
+
* return new Date(a.created_at).getTime() - new Date(b.created_at).getTime();
|
|
578
|
+
* },
|
|
579
|
+
* (user) => user.isActive // only test active users
|
|
580
|
+
* );
|
|
360
581
|
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
* I recommend you to see below example code before using.
|
|
582
|
+
* await userSortValidator("+", true); // ascending with trace logging
|
|
583
|
+
* ```;
|
|
364
584
|
*
|
|
365
|
-
* @param title
|
|
366
|
-
* @
|
|
585
|
+
* @param title - Descriptive title used in error messages when sorting fails
|
|
586
|
+
* @returns A currying function chain: API getter, field names, comparator,
|
|
587
|
+
* then direction
|
|
588
|
+
* @throws Error when API results are not properly sorted according to
|
|
589
|
+
* specification
|
|
367
590
|
*/
|
|
368
591
|
TestValidator.sort = function (title) {
|
|
369
|
-
/**
|
|
370
|
-
* @param getter A pagination API function to be called
|
|
371
|
-
*/
|
|
372
592
|
return function (getter) {
|
|
373
|
-
/**
|
|
374
|
-
* @param fields List of fields to be sorted
|
|
375
|
-
*/
|
|
376
593
|
return function () {
|
|
377
594
|
var fields = [];
|
|
378
595
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
379
596
|
fields[_i] = arguments[_i];
|
|
380
597
|
}
|
|
381
|
-
/**
|
|
382
|
-
* @param comp Comparator function for validation
|
|
383
|
-
* @param filter Filter function for data if required
|
|
384
|
-
*/
|
|
385
598
|
return function (comp, filter) {
|
|
386
|
-
/**
|
|
387
|
-
* @param direction "+" means ascending order, and "-" means descending order
|
|
388
|
-
*/
|
|
389
599
|
return function (direction_1) {
|
|
390
600
|
var args_1 = [];
|
|
391
601
|
for (var _i = 1; _i < arguments.length; _i++) {
|
package/lib/TestValidator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAoD;AACpD,0DAAyD;AAEzD
|
|
1
|
+
{"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const json_equal_to: (exception: (key: string) => boolean) => <T>(x: T) => (y: T) => string[];
|
|
1
|
+
export declare const json_equal_to: (exception: (key: string) => boolean) => <T>(x: T) => (y: T | null | undefined) => string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_equal_to.js","sourceRoot":"","sources":["../../src/internal/json_equal_to.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAa,GACxB,UAAC,SAAmC;IACpC,OAAA,UAAI,CAAI;QACR,OAAA,UAAC,
|
|
1
|
+
{"version":3,"file":"json_equal_to.js","sourceRoot":"","sources":["../../src/internal/json_equal_to.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAa,GACxB,UAAC,SAAmC;IACpC,OAAA,UAAI,CAAI;QACR,OAAA,UAAC,CAAuB;YACtB,IAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAM,OAAO,GACX,UAAC,QAAgB;gBACjB,OAAA,UAAC,CAAM;oBACP,OAAA,UAAC,CAAM;wBACL,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU;4BAAE,OAAO;6BAC1D,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;4BAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACpD,IAAI,CAAC,YAAY,KAAK;4BACzB,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;gCAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;gCAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;6BACxB,IAAI,CAAC,YAAY,MAAM;4BAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;6BAChD,IAAI,CAAC,KAAK,CAAC;4BAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,CAAC;gBARD,CAQC;YATD,CASC,CAAC;YACJ,IAAM,KAAK,GACT,UAAC,QAAgB;gBACjB,OAAA,UAAC,CAAQ;oBACT,OAAA,UAAC,CAAQ;wBACP,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;4BAAE,SAAS,CAAC,IAAI,CAAC,UAAG,QAAQ,YAAS,CAAC,CAAC;wBAChE,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC,IAAK,OAAA,OAAO,CAAC,UAAG,QAAQ,cAAI,CAAC,MAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC;oBACrE,CAAC;gBAHD,CAGC;YAJD,CAIC,CAAC;YACJ,IAAM,MAAM,GACV,UAAC,QAAgB;gBACjB,OAAA,UAAC,CAAM;oBACP,OAAA,UAAC,CAAM;wBACL,OAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;6BACX,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAvC,CAAuC,CAAC;6BACxD,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,UAAG,QAAQ,cAAI,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAA7C,CAA6C,CAAC;oBAFlE,CAEkE;gBAHpE,CAGoE;YAJpE,CAIoE,CAAC;YAEvE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;IA/BD,CA+BC;AAhCD,CAgCC,CAAC;AAlCS,QAAA,aAAa,iBAkCtB"}
|