nestjs-paginate 12.11.0 → 13.0.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/README.md +42 -0
- package/lib/__tests__/cat-home-pillow.entity.d.ts +1 -0
- package/lib/__tests__/cat-home-pillow.entity.js +4 -0
- package/lib/__tests__/cat-home-pillow.entity.js.map +1 -1
- package/lib/filter.d.ts +39 -3
- package/lib/filter.js +268 -22
- package/lib/filter.js.map +1 -1
- package/lib/helper.d.ts +20 -1
- package/lib/helper.js +46 -2
- package/lib/helper.js.map +1 -1
- package/lib/paginate.d.ts +3 -3
- package/lib/paginate.js +3 -5
- package/lib/paginate.js.map +1 -1
- package/lib/paginate.spec.js +299 -11
- package/lib/paginate.spec.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -516,6 +516,48 @@ const config: PaginateConfig<CatEntity> = {
|
|
|
516
516
|
const result = await paginate<CatEntity>(query, catRepo, config)
|
|
517
517
|
```
|
|
518
518
|
|
|
519
|
+
## Usage with to-many relationships
|
|
520
|
+
|
|
521
|
+
You can filter parents by conditions on their to-many relations (one-to-many or many-to-many) using quantifiers.
|
|
522
|
+
Quantifiers define how many related rows must satisfy the condition:
|
|
523
|
+
|
|
524
|
+
- `$any` (default): at least one related row matches the condition
|
|
525
|
+
- `$all`: all related rows match the condition
|
|
526
|
+
- `$none`: no related rows match the condition
|
|
527
|
+
|
|
528
|
+
### Examples
|
|
529
|
+
Assume `CatEntity` has a one‑to‑many relation `toys: CatToyEntity[]` where `CatToyEntity` has a string column `name`.
|
|
530
|
+
|
|
531
|
+
- At least one toy named exactly "Ball":
|
|
532
|
+
|
|
533
|
+
```url
|
|
534
|
+
GET /cats?filter.toys.name=$any:$eq:Ball
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
- At least one toy whose name contains "red" (case-insensitive):
|
|
538
|
+
|
|
539
|
+
```url
|
|
540
|
+
GET /cats?filter.toys.name=$any:$ilike:red
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
- All toys must have names that start with "Chew":
|
|
544
|
+
|
|
545
|
+
```url
|
|
546
|
+
GET /cats?filter.toys.name=$all:$sw:Chew
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
- No toys named "Squeaky", including cats without any toys:
|
|
550
|
+
|
|
551
|
+
```url
|
|
552
|
+
GET /cats?filter.toys.name=$none:$eq:Squeaky
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
- One or more toys not named "Squeaky":
|
|
556
|
+
|
|
557
|
+
```url
|
|
558
|
+
GET /cats?filter.toys.name=$any:$not:$eq:Squeaky
|
|
559
|
+
```
|
|
560
|
+
|
|
519
561
|
## Usage with Eager Loading
|
|
520
562
|
|
|
521
563
|
Eager loading should work with TypeORM's eager property out of the box:
|
|
@@ -37,6 +37,10 @@ __decorate([
|
|
|
37
37
|
(0, typeorm_1.CreateDateColumn)(column_option_1.DateColumnNotNull),
|
|
38
38
|
__metadata("design:type", String)
|
|
39
39
|
], CatHomePillowEntity.prototype, "createdAt", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, typeorm_1.DeleteDateColumn)(column_option_1.DateColumnNotNull),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], CatHomePillowEntity.prototype, "deletedAt", void 0);
|
|
40
44
|
exports.CatHomePillowEntity = CatHomePillowEntity = __decorate([
|
|
41
45
|
(0, typeorm_1.Entity)()
|
|
42
46
|
], CatHomePillowEntity);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat-home-pillow.entity.js","sourceRoot":"","sources":["../../src/__tests__/cat-home-pillow.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"cat-home-pillow.entity.js","sourceRoot":"","sources":["../../src/__tests__/cat-home-pillow.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA+G;AAC/G,iFAAyE;AACzE,uDAAiD;AACjD,mDAAmD;AAG5C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAkB/B,CAAA;AAlBY,kDAAmB;AAE5B;IADC,IAAA,gCAAsB,GAAE;;+CACf;AAGV;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,+BAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;8BACjD,+BAAa;iDAAA;AAGnB;IADC,IAAA,gBAAM,GAAE;;kDACI;AAGb;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uDAAwB,CAAC;8BACnC,uDAAwB;kDAAA;AAG/B;IADC,IAAA,0BAAgB,EAAC,iCAAiB,CAAC;;sDACnB;AAGjB;IADC,IAAA,0BAAgB,EAAC,iCAAiB,CAAC;;sDACnB;8BAjBR,mBAAmB;IAD/B,IAAA,gBAAM,GAAE;GACI,mBAAmB,CAkB/B"}
|
package/lib/filter.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { FindOperator, SelectQueryBuilder } from 'typeorm';
|
|
1
|
+
import { EntityMetadata, FindOperator, SelectQueryBuilder } from 'typeorm';
|
|
2
2
|
import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause';
|
|
3
3
|
import { PaginateQuery } from './decorator';
|
|
4
4
|
import { JoinMethod } from './helper';
|
|
5
|
+
import { EmbeddedMetadata } from 'typeorm/metadata/EmbeddedMetadata';
|
|
6
|
+
import { RelationMetadata } from 'typeorm/metadata/RelationMetadata';
|
|
5
7
|
export declare enum FilterOperator {
|
|
6
8
|
EQ = "$eq",
|
|
7
9
|
GT = "$gt",
|
|
@@ -20,6 +22,12 @@ export declare enum FilterSuffix {
|
|
|
20
22
|
NOT = "$not"
|
|
21
23
|
}
|
|
22
24
|
export declare function isSuffix(value: unknown): value is FilterSuffix;
|
|
25
|
+
export declare enum FilterQuantifier {
|
|
26
|
+
ALL = "$all",
|
|
27
|
+
ANY = "$any",
|
|
28
|
+
NONE = "$none"
|
|
29
|
+
}
|
|
30
|
+
export declare function isQuantifier(value: unknown): value is FilterQuantifier;
|
|
23
31
|
export declare enum FilterComparator {
|
|
24
32
|
AND = "$and",
|
|
25
33
|
OR = "$or"
|
|
@@ -27,6 +35,7 @@ export declare enum FilterComparator {
|
|
|
27
35
|
export declare function isComparator(value: unknown): value is FilterComparator;
|
|
28
36
|
export declare const OperatorSymbolToFunction: Map<FilterOperator | FilterSuffix, (...args: any[]) => FindOperator<string>>;
|
|
29
37
|
type Filter = {
|
|
38
|
+
quantifier: FilterQuantifier;
|
|
30
39
|
comparator: FilterComparator;
|
|
31
40
|
findOperator: FindOperator<string>;
|
|
32
41
|
};
|
|
@@ -37,6 +46,7 @@ type ColumnJoinMethods = {
|
|
|
37
46
|
[columnName: string]: JoinMethod;
|
|
38
47
|
};
|
|
39
48
|
export interface FilterToken {
|
|
49
|
+
quantifier: FilterQuantifier;
|
|
40
50
|
comparator: FilterComparator;
|
|
41
51
|
suffix?: FilterSuffix;
|
|
42
52
|
operator: FilterOperator;
|
|
@@ -51,9 +61,35 @@ export declare function generatePredicateCondition(qb: SelectQueryBuilder<unknow
|
|
|
51
61
|
export declare function addWhereCondition<T>(qb: SelectQueryBuilder<T>, column: string, filter: ColumnFilters): void;
|
|
52
62
|
export declare function parseFilterToken(raw?: string): FilterToken | null;
|
|
53
63
|
export declare function parseFilter<T>(query: PaginateQuery, filterableColumns?: {
|
|
54
|
-
[column: string]: (FilterOperator | FilterSuffix)[] | true;
|
|
64
|
+
[column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
|
|
55
65
|
}, qb?: SelectQueryBuilder<T>): ColumnFilters;
|
|
66
|
+
/**
|
|
67
|
+
* Retrieves the relation path for a given column name within the provided metadata.
|
|
68
|
+
*
|
|
69
|
+
* This method analyzes the column name's segments to identify corresponding relations or embedded entities
|
|
70
|
+
* within the hierarchy described by the given metadata and returns a structured path.
|
|
71
|
+
*
|
|
72
|
+
* @param {string} columnName - The dot-delimited name of the column whose relation path is to be determined.
|
|
73
|
+
* @param {EntityMetadata | EmbeddedMetadata} metadata - The metadata of the entity or embedded component
|
|
74
|
+
* which holds the relations or embedded items.
|
|
75
|
+
* @return {[string, RelationMetadata | EmbeddedMetadata][]} The ordered array describing the path,
|
|
76
|
+
* where each element contains a field name and its corresponding relation or embedded metadata.
|
|
77
|
+
* Throws an error if no matching relation or embedded metadata is found.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getRelationPath(columnName: string, metadata: EntityMetadata | EmbeddedMetadata): [string, RelationMetadata | EmbeddedMetadata][];
|
|
56
80
|
export declare function addFilter<T>(qb: SelectQueryBuilder<T>, query: PaginateQuery, filterableColumns?: {
|
|
57
|
-
[column: string]: (FilterOperator | FilterSuffix)[] | true;
|
|
81
|
+
[column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
|
|
58
82
|
}): ColumnJoinMethods;
|
|
83
|
+
export declare function addDirectFilters<T>(qb: SelectQueryBuilder<T>, filter: ColumnFilters): void;
|
|
84
|
+
export declare function addToManySubFilters<T>(qb: SelectQueryBuilder<T>, filter: ColumnFilters, query: PaginateQuery, filterableColumns?: {
|
|
85
|
+
[column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
|
|
86
|
+
}): void;
|
|
87
|
+
export declare function createSubFilter(query: PaginateQuery, filterableColumns: {
|
|
88
|
+
[column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
|
|
89
|
+
}, column: string): {
|
|
90
|
+
subQuery: PaginateQuery;
|
|
91
|
+
subFilterableColumns: {
|
|
92
|
+
[column: string]: true | (FilterOperator | FilterSuffix | FilterQuantifier)[];
|
|
93
|
+
};
|
|
94
|
+
};
|
|
59
95
|
export {};
|
package/lib/filter.js
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OperatorSymbolToFunction = exports.FilterComparator = exports.FilterSuffix = exports.FilterOperator = void 0;
|
|
3
|
+
exports.OperatorSymbolToFunction = exports.FilterComparator = exports.FilterQuantifier = exports.FilterSuffix = exports.FilterOperator = void 0;
|
|
4
4
|
exports.isOperator = isOperator;
|
|
5
5
|
exports.isSuffix = isSuffix;
|
|
6
|
+
exports.isQuantifier = isQuantifier;
|
|
6
7
|
exports.isComparator = isComparator;
|
|
7
8
|
exports.fixQueryParam = fixQueryParam;
|
|
8
9
|
exports.generatePredicateCondition = generatePredicateCondition;
|
|
9
10
|
exports.addWhereCondition = addWhereCondition;
|
|
10
11
|
exports.parseFilterToken = parseFilterToken;
|
|
11
12
|
exports.parseFilter = parseFilter;
|
|
13
|
+
exports.getRelationPath = getRelationPath;
|
|
12
14
|
exports.addFilter = addFilter;
|
|
15
|
+
exports.addDirectFilters = addDirectFilters;
|
|
16
|
+
exports.addToManySubFilters = addToManySubFilters;
|
|
17
|
+
exports.createSubFilter = createSubFilter;
|
|
13
18
|
const lodash_1 = require("lodash");
|
|
14
19
|
const typeorm_1 = require("typeorm");
|
|
15
20
|
const helper_1 = require("./helper");
|
|
21
|
+
const paginate_1 = require("./paginate");
|
|
16
22
|
var FilterOperator;
|
|
17
23
|
(function (FilterOperator) {
|
|
18
24
|
FilterOperator["EQ"] = "$eq";
|
|
@@ -32,11 +38,21 @@ function isOperator(value) {
|
|
|
32
38
|
}
|
|
33
39
|
var FilterSuffix;
|
|
34
40
|
(function (FilterSuffix) {
|
|
41
|
+
// Used to negate a filter
|
|
35
42
|
FilterSuffix["NOT"] = "$not";
|
|
36
43
|
})(FilterSuffix || (exports.FilterSuffix = FilterSuffix = {}));
|
|
37
44
|
function isSuffix(value) {
|
|
38
45
|
return (0, lodash_1.values)(FilterSuffix).includes(value);
|
|
39
46
|
}
|
|
47
|
+
var FilterQuantifier;
|
|
48
|
+
(function (FilterQuantifier) {
|
|
49
|
+
FilterQuantifier["ALL"] = "$all";
|
|
50
|
+
FilterQuantifier["ANY"] = "$any";
|
|
51
|
+
FilterQuantifier["NONE"] = "$none";
|
|
52
|
+
})(FilterQuantifier || (exports.FilterQuantifier = FilterQuantifier = {}));
|
|
53
|
+
function isQuantifier(value) {
|
|
54
|
+
return (0, lodash_1.values)(FilterQuantifier).includes(value);
|
|
55
|
+
}
|
|
40
56
|
var FilterComparator;
|
|
41
57
|
(function (FilterComparator) {
|
|
42
58
|
FilterComparator["AND"] = "$and";
|
|
@@ -114,11 +130,12 @@ function addWhereCondition(qb, column, filter) {
|
|
|
114
130
|
!['not', 'isNull', 'arrayContains'].includes(condition.operator)) {
|
|
115
131
|
condition.parameters[0] = `cardinality(${condition.parameters[0]})`;
|
|
116
132
|
}
|
|
133
|
+
const expression = qb['createWhereConditionExpression'](condition);
|
|
117
134
|
if (columnFilter.comparator === FilterComparator.OR) {
|
|
118
|
-
qb.orWhere(
|
|
135
|
+
qb.orWhere(expression, parameters);
|
|
119
136
|
}
|
|
120
137
|
else {
|
|
121
|
-
qb.andWhere(
|
|
138
|
+
qb.andWhere(expression, parameters);
|
|
122
139
|
}
|
|
123
140
|
});
|
|
124
141
|
}
|
|
@@ -127,19 +144,23 @@ function parseFilterToken(raw) {
|
|
|
127
144
|
return null;
|
|
128
145
|
}
|
|
129
146
|
const token = {
|
|
147
|
+
quantifier: FilterQuantifier.ANY,
|
|
130
148
|
comparator: FilterComparator.AND,
|
|
131
149
|
suffix: undefined,
|
|
132
150
|
operator: FilterOperator.EQ,
|
|
133
151
|
value: raw,
|
|
134
152
|
};
|
|
135
|
-
const
|
|
153
|
+
const MAX_OPERATOR = 5; // max 5 operator: $none:$and:$not:$eq:$null
|
|
136
154
|
const OPERAND_SEPARATOR = ':';
|
|
137
155
|
const matches = raw.split(OPERAND_SEPARATOR);
|
|
138
|
-
const maxOperandCount = matches.length >
|
|
156
|
+
const maxOperandCount = matches.length > MAX_OPERATOR ? MAX_OPERATOR : matches.length;
|
|
139
157
|
const notValue = [];
|
|
140
158
|
for (let i = 0; i < maxOperandCount; i++) {
|
|
141
159
|
const match = matches[i];
|
|
142
|
-
if (
|
|
160
|
+
if (isQuantifier(match)) {
|
|
161
|
+
token.quantifier = match;
|
|
162
|
+
}
|
|
163
|
+
else if (isComparator(match)) {
|
|
143
164
|
token.comparator = match;
|
|
144
165
|
}
|
|
145
166
|
else if (isSuffix(match)) {
|
|
@@ -155,9 +176,11 @@ function parseFilterToken(raw) {
|
|
|
155
176
|
}
|
|
156
177
|
if (notValue.length) {
|
|
157
178
|
token.value =
|
|
158
|
-
token.operator === FilterOperator.NULL
|
|
159
|
-
?
|
|
160
|
-
|
|
179
|
+
!raw.includes(OPERAND_SEPARATOR) || token.operator === FilterOperator.NULL
|
|
180
|
+
? // things like `$null`, `$none`, and `$any`, have no token value
|
|
181
|
+
undefined
|
|
182
|
+
: // otherwise, remove the operators and separators from the raw string to obtain the token value
|
|
183
|
+
raw.replace(`${notValue.join(OPERAND_SEPARATOR)}${OPERAND_SEPARATOR}`, '');
|
|
161
184
|
}
|
|
162
185
|
return token;
|
|
163
186
|
}
|
|
@@ -209,8 +232,12 @@ function parseFilter(query, filterableColumns, qb) {
|
|
|
209
232
|
if (token.suffix && !allowedOperators.includes(token.suffix)) {
|
|
210
233
|
continue;
|
|
211
234
|
}
|
|
235
|
+
if (token.quantifier !== FilterQuantifier.ANY && !allowedOperators.includes(token.quantifier)) {
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
212
238
|
}
|
|
213
239
|
const params = {
|
|
240
|
+
quantifier: token.quantifier,
|
|
214
241
|
comparator: token.comparator,
|
|
215
242
|
findOperator: undefined,
|
|
216
243
|
};
|
|
@@ -258,6 +285,7 @@ function parseFilter(query, filterableColumns, qb) {
|
|
|
258
285
|
{
|
|
259
286
|
comparator: i === 0 ? params.comparator : FilterComparator.OR,
|
|
260
287
|
findOperator: (0, typeorm_1.JsonContains)(buildContainment(val.trim())),
|
|
288
|
+
quantifier: FilterQuantifier.ANY,
|
|
261
289
|
},
|
|
262
290
|
];
|
|
263
291
|
});
|
|
@@ -268,6 +296,7 @@ function parseFilter(query, filterableColumns, qb) {
|
|
|
268
296
|
{
|
|
269
297
|
comparator: params.comparator,
|
|
270
298
|
findOperator: (0, typeorm_1.JsonContains)(buildContainment(token.value)),
|
|
299
|
+
quantifier: FilterQuantifier.ANY,
|
|
271
300
|
},
|
|
272
301
|
];
|
|
273
302
|
}
|
|
@@ -304,11 +333,109 @@ function parseFilter(query, filterableColumns, qb) {
|
|
|
304
333
|
}
|
|
305
334
|
return filter;
|
|
306
335
|
}
|
|
336
|
+
class RelationPathError extends Error {
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Retrieves the relation path for a given column name within the provided metadata.
|
|
340
|
+
*
|
|
341
|
+
* This method analyzes the column name's segments to identify corresponding relations or embedded entities
|
|
342
|
+
* within the hierarchy described by the given metadata and returns a structured path.
|
|
343
|
+
*
|
|
344
|
+
* @param {string} columnName - The dot-delimited name of the column whose relation path is to be determined.
|
|
345
|
+
* @param {EntityMetadata | EmbeddedMetadata} metadata - The metadata of the entity or embedded component
|
|
346
|
+
* which holds the relations or embedded items.
|
|
347
|
+
* @return {[string, RelationMetadata | EmbeddedMetadata][]} The ordered array describing the path,
|
|
348
|
+
* where each element contains a field name and its corresponding relation or embedded metadata.
|
|
349
|
+
* Throws an error if no matching relation or embedded metadata is found.
|
|
350
|
+
*/
|
|
351
|
+
function getRelationPath(columnName, metadata) {
|
|
352
|
+
const relationSegments = columnName.split('.');
|
|
353
|
+
const deeper = relationSegments.slice(1).join('.');
|
|
354
|
+
const fieldName = relationSegments[0].replace(/[()]/g, '');
|
|
355
|
+
try {
|
|
356
|
+
// Check if there's a relation with this property name
|
|
357
|
+
const relation = metadata.relations.find((r) => r.propertyName === fieldName);
|
|
358
|
+
if (relation) {
|
|
359
|
+
return [
|
|
360
|
+
[fieldName, relation],
|
|
361
|
+
...(relationSegments.length > 1 ? getRelationPath(deeper, relation.inverseEntityMetadata) : []),
|
|
362
|
+
];
|
|
363
|
+
}
|
|
364
|
+
// Check if there's something embedded with this property name
|
|
365
|
+
const embedded = metadata.embeddeds.find((embedded) => embedded.propertyName === fieldName);
|
|
366
|
+
if (embedded) {
|
|
367
|
+
return [
|
|
368
|
+
[fieldName, embedded],
|
|
369
|
+
...(relationSegments.length > 1 ? getRelationPath(deeper, embedded) : []),
|
|
370
|
+
];
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
catch (e) {
|
|
374
|
+
if (e instanceof RelationPathError) {
|
|
375
|
+
throw new RelationPathError(`No relation or embedded found for property path ${columnName}`);
|
|
376
|
+
}
|
|
377
|
+
throw e;
|
|
378
|
+
}
|
|
379
|
+
if (relationSegments.length > 1)
|
|
380
|
+
throw new RelationPathError(`No relation or embedded found for property path ${columnName}`);
|
|
381
|
+
return [];
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Finds the first 'to-many' relationship in a given entity metadata or embedded metadata
|
|
385
|
+
* given a column name. A 'to-many' relationship can be either a one-to-many or a
|
|
386
|
+
* many-to-many relationship.
|
|
387
|
+
*
|
|
388
|
+
* @param {string} columnName - The column name to traverse through its segments and find relationships.
|
|
389
|
+
* @param {EntityMetadata | EmbeddedMetadata} metadata - The metadata of the entity or
|
|
390
|
+
* embedded object in which relationships are defined.
|
|
391
|
+
* @return {{ path: string[]; relation: RelationMetadata } | undefined} An object containing
|
|
392
|
+
* the path to the 'to-many' relationship and the relationship metadata, or undefined if no
|
|
393
|
+
* 'to-many' relationships are found.
|
|
394
|
+
*/
|
|
395
|
+
function findFirstToManyRelationship(columnName, metadata) {
|
|
396
|
+
const relationPath = getRelationPath(columnName, metadata);
|
|
397
|
+
const relationSegments = columnName.split('.');
|
|
398
|
+
const firstToMany = relationPath.findIndex(([, relation]) => 'isOneToMany' in relation && (relation.isOneToMany || relation.isManyToMany));
|
|
399
|
+
if (firstToMany > -1)
|
|
400
|
+
return {
|
|
401
|
+
path: relationSegments.slice(0, firstToMany + 1),
|
|
402
|
+
relation: relationPath[firstToMany][1],
|
|
403
|
+
};
|
|
404
|
+
}
|
|
307
405
|
function addFilter(qb, query, filterableColumns) {
|
|
406
|
+
const mainMetadata = qb.expressionMap.mainAlias.metadata;
|
|
308
407
|
const filter = parseFilter(query, filterableColumns, qb);
|
|
408
|
+
addDirectFilters(qb, filter);
|
|
409
|
+
addToManySubFilters(qb, filter, query, filterableColumns);
|
|
410
|
+
// Direct filters require to be joined, so pass the join information back up to the main pagination builder
|
|
411
|
+
// (or the parent filter query in case of subfilters)
|
|
412
|
+
const columnJoinMethods = {};
|
|
413
|
+
for (const [key] of Object.entries(filter)) {
|
|
414
|
+
const relationPath = getRelationPath(key, mainMetadata);
|
|
415
|
+
// Skip filters that don't result in WHERE clauses and so don't need to be joined..
|
|
416
|
+
if (relationPath.find(([, relation]) => 'isOneToMany' in relation && (relation.isOneToMany || relation.isManyToMany))) {
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
for (let i = 0; i < relationPath.length; i++) {
|
|
420
|
+
const column = relationPath
|
|
421
|
+
.slice(0, i + 1)
|
|
422
|
+
.map((p) => p[0])
|
|
423
|
+
.join('.');
|
|
424
|
+
// Skip joins on embedded entities
|
|
425
|
+
if ('inverseRelation' in relationPath[i][1]) {
|
|
426
|
+
columnJoinMethods[column] = 'innerJoinAndSelect';
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return columnJoinMethods;
|
|
431
|
+
}
|
|
432
|
+
function addDirectFilters(qb, filter) {
|
|
309
433
|
const filterEntries = Object.entries(filter);
|
|
310
|
-
const
|
|
311
|
-
|
|
434
|
+
const metadata = qb.expressionMap.mainAlias.metadata;
|
|
435
|
+
// Direct filters are those without toMany relationships on their path, and can be expressed as simple JOINs + WHERE clauses
|
|
436
|
+
const whereFilters = filterEntries.filter(([key]) => !findFirstToManyRelationship(key, metadata));
|
|
437
|
+
const orFilters = whereFilters.filter(([, value]) => value[0].comparator === '$or');
|
|
438
|
+
const andFilters = whereFilters.filter(([, value]) => value[0].comparator === '$and');
|
|
312
439
|
qb.andWhere(new typeorm_1.Brackets((qb) => {
|
|
313
440
|
for (const [column] of orFilters) {
|
|
314
441
|
addWhereCondition(qb, column, filter);
|
|
@@ -319,16 +446,135 @@ function addFilter(qb, query, filterableColumns) {
|
|
|
319
446
|
addWhereCondition(qb, column, filter);
|
|
320
447
|
}));
|
|
321
448
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
449
|
+
}
|
|
450
|
+
function addToManySubFilters(qb, filter, query, filterableColumns) {
|
|
451
|
+
const dbType = qb.connection.options.type;
|
|
452
|
+
const quote = (column) => (0, helper_1.quoteColumn)(column, ['mysql', 'mariadb'].includes(dbType));
|
|
453
|
+
const mainMetadata = qb.expressionMap.mainAlias.metadata;
|
|
454
|
+
const filterEntries = Object.entries(filter);
|
|
455
|
+
// Filters with toMany relationships on their path need to be expressed as EXISTS subqueries.
|
|
456
|
+
const existsFilters = filterEntries.map(([key]) => findFirstToManyRelationship(key, mainMetadata)).filter(Boolean);
|
|
457
|
+
// Find all the different toMany starting paths
|
|
458
|
+
const toManyPaths = [...new Set(existsFilters.map((f) => f.path.join('.')))];
|
|
459
|
+
const toManyRelations = toManyPaths.map((path) => [path, existsFilters.find((f) => f.path.join('.') === path).relation]);
|
|
460
|
+
for (const [path, relation] of toManyRelations) {
|
|
461
|
+
const mainQueryAlias = qb.alias;
|
|
462
|
+
const relationPath = getRelationPath(path, mainMetadata);
|
|
463
|
+
const toManyAlias = `_rel_${relationPath[relationPath.length - 1][0]}_${relationPath.length - 1}`;
|
|
464
|
+
// 1. Create the EXISTS subquery, starting from the toMany entity
|
|
465
|
+
const existsMetadata = relation.inverseEntityMetadata;
|
|
466
|
+
const existsQb = qb.connection.createQueryBuilder(existsMetadata.target, toManyAlias);
|
|
467
|
+
if (existsMetadata.deleteDateColumn) {
|
|
468
|
+
//existsQb.andWhere(`"${toManyAlias}"."${existsMetadata.deleteDateColumn.databaseName}" IS NULL`)
|
|
469
|
+
}
|
|
470
|
+
// 2. Add the subfilters to the EXISTS subquery
|
|
471
|
+
const { subQuery, subFilterableColumns } = createSubFilter(query, filterableColumns, path);
|
|
472
|
+
const subJoins = addFilter(existsQb, subQuery, subFilterableColumns);
|
|
473
|
+
// 3. Add the sub relationship joins to the EXISTS subquery
|
|
474
|
+
const relationsSchema = (0, helper_1.mergeRelationSchema)((0, helper_1.createRelationSchema)(Object.keys(subJoins)));
|
|
475
|
+
// Only inner join, no need to select anything
|
|
476
|
+
(0, paginate_1.addRelationsFromSchema)(existsQb, relationsSchema, {}, 'innerJoin');
|
|
477
|
+
// 4. Build the chain of joins that backtracks our toMany relationship to the root.
|
|
478
|
+
// We iterate from the second-to-last item (the immediate parent) back to the first item (root's child)
|
|
479
|
+
for (let i = relationPath.length - 1; i >= 0; i--) {
|
|
480
|
+
const [, meta] = relationPath[i];
|
|
481
|
+
// --- A: Skip Embedded Entities ---
|
|
482
|
+
if (meta.type === 'embedded') {
|
|
483
|
+
// Embedded entities exist within the current table (currentChildAlias).
|
|
484
|
+
// They do not require a JOIN, so we simply continue to the next item in the path.
|
|
485
|
+
continue;
|
|
486
|
+
}
|
|
487
|
+
// --- B: Handle Table Relation (RelationMetadata) ---
|
|
488
|
+
// If we reach this point, 'meta' is a RelationMetadata object.
|
|
489
|
+
const parentMeta = meta;
|
|
490
|
+
// Check if this is an intermediate or top-level relationship
|
|
491
|
+
if (i !== 0) {
|
|
492
|
+
// --- Intermediate Join (Joining two non-root tables within the subquery) ---
|
|
493
|
+
const parentAlias = `_rel_${relationPath[i - 1][0]}_${i - 1}`;
|
|
494
|
+
const childAlias = `_rel_${relationPath[i][0]}_${i}`;
|
|
495
|
+
const childRelationMetadata = parentMeta.inverseRelation;
|
|
496
|
+
// Get the join columns from the inverse relation of the current metadata (e.g., inverse of 'pillows')
|
|
497
|
+
const joinCols = childRelationMetadata.joinColumns;
|
|
498
|
+
// Construct the ON condition (handles composite keys)
|
|
499
|
+
const onConditions = joinCols
|
|
500
|
+
.map((jc) => {
|
|
501
|
+
const fk = jc.databaseName;
|
|
502
|
+
const pk = jc.referencedColumn.databaseName;
|
|
503
|
+
return `${quote(childAlias)}.${quote(fk)} = ${quote(parentAlias)}.${quote(pk)}`;
|
|
504
|
+
})
|
|
505
|
+
.join(' AND ');
|
|
506
|
+
// Add the INNER JOIN to the subquery
|
|
507
|
+
existsQb.innerJoin(childRelationMetadata.inverseRelation.entityMetadata.target, parentAlias, onConditions);
|
|
508
|
+
}
|
|
509
|
+
else {
|
|
510
|
+
// Perform the final correlation WHERE clause to the main query alias
|
|
511
|
+
const joinMeta = parentMeta.isOwning ? parentMeta : parentMeta.inverseRelation;
|
|
512
|
+
for (const joinColumn of joinMeta.joinColumns) {
|
|
513
|
+
// 1. Get the raw column names from the owning metadata:
|
|
514
|
+
const fkColumn = joinColumn.databaseName;
|
|
515
|
+
const pkColumn = joinColumn.referencedColumn.databaseName;
|
|
516
|
+
// 2. Get the table aliases
|
|
517
|
+
let fkAlias;
|
|
518
|
+
let pkAlias;
|
|
519
|
+
if (parentMeta.isOwning) {
|
|
520
|
+
pkAlias = `_rel_${relationPath[0][0]}_0`;
|
|
521
|
+
fkAlias = mainQueryAlias;
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
fkAlias = `_rel_${relationPath[0][0]}_0`;
|
|
525
|
+
pkAlias = mainQueryAlias;
|
|
526
|
+
}
|
|
527
|
+
// Correlation
|
|
528
|
+
existsQb.andWhere(`${quote(fkAlias)}.${quote(fkColumn)} = ${quote(pkAlias)}.${quote(pkColumn)}`);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
const quantifiers = Object.entries(filter)
|
|
533
|
+
.filter(([key]) => key.startsWith(path))
|
|
534
|
+
.flatMap(([, multiFilter]) => multiFilter.map((f) => f.quantifier));
|
|
535
|
+
let quantifier = FilterQuantifier.ANY;
|
|
536
|
+
for (const q of quantifiers) {
|
|
537
|
+
if (q !== FilterQuantifier.ANY) {
|
|
538
|
+
if (quantifier !== FilterQuantifier.ANY && quantifier !== q) {
|
|
539
|
+
throw new Error(`Quantifier ${quantifier} and ${q} are not compatible for the same column ${path}`);
|
|
540
|
+
}
|
|
541
|
+
quantifier = q;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
// 5. Add the EXISTS subquery to the main query
|
|
545
|
+
if (quantifier === FilterQuantifier.ANY) {
|
|
546
|
+
qb.andWhereExists(existsQb);
|
|
547
|
+
}
|
|
548
|
+
else if (quantifier === FilterQuantifier.NONE) {
|
|
549
|
+
(0, helper_1.andWhereNoneExist)(qb, existsQb);
|
|
550
|
+
}
|
|
551
|
+
else if (quantifier === FilterQuantifier.ALL) {
|
|
552
|
+
(0, helper_1.andWhereAllExist)(qb, existsQb);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
function createSubFilter(query, filterableColumns, column) {
|
|
557
|
+
const subQuery = { filter: {} };
|
|
558
|
+
for (const [subColumn, filter] of Object.entries(query.filter)) {
|
|
559
|
+
if (subColumn.startsWith(column + '.')) {
|
|
560
|
+
subQuery.filter[getSubColumn(column, subColumn)] = filter;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
const subFilterableColumns = {};
|
|
564
|
+
for (const [subColumn, filter] of Object.entries(filterableColumns)) {
|
|
565
|
+
if (subColumn.startsWith(column + '.')) {
|
|
566
|
+
subFilterableColumns[getSubColumn(column, subColumn)] = filter;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
return { subQuery, subFilterableColumns };
|
|
570
|
+
}
|
|
571
|
+
function getSubColumn(column, subColumn) {
|
|
572
|
+
const sliced = subColumn.slice(column.length + 1);
|
|
573
|
+
if (sliced.startsWith('(') && sliced.endsWith(')')) {
|
|
574
|
+
// Embedded relationships need to be unpacked from subColumn.(embedded.property) to
|
|
575
|
+
// embedded.property
|
|
576
|
+
return sliced.slice(1, -1);
|
|
577
|
+
}
|
|
578
|
+
return sliced;
|
|
333
579
|
}
|
|
334
580
|
//# sourceMappingURL=filter.js.map
|
package/lib/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":";;;AAwDA,gCAEC;AAOD,4BAEC;AAQD,oCAEC;AAOD,oCAEC;AAkCD,sCAmDC;AAED,gEAWC;AAED,8CA0CC;AAED,4CA8CC;AAoBD,kCA+JC;AAiBD,0CAmCC;AA8BD,8BAsCC;AAED,4CAwBC;AAED,kDAoIC;AAED,0CAkBC;AAnvBD,mCAA+B;AAC/B,qCAiBgB;AAGhB,qCAgBiB;AAGjB,yCAAmD;AAEnD,IAAY,cAYX;AAZD,WAAY,cAAc;IACtB,4BAAU,CAAA;IACV,4BAAU,CAAA;IACV,8BAAY,CAAA;IACZ,4BAAU,CAAA;IACV,gCAAc,CAAA;IACd,4BAAU,CAAA;IACV,8BAAY,CAAA;IACZ,8BAAY,CAAA;IACZ,kCAAgB,CAAA;IAChB,4BAAU,CAAA;IACV,wCAAsB,CAAA;AAC1B,CAAC,EAZW,cAAc,8BAAd,cAAc,QAYzB;AAED,SAAgB,UAAU,CAAC,KAAc;IACrC,OAAO,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AACxD,CAAC;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,0BAA0B;IAC1B,4BAAY,CAAA;AAChB,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,SAAgB,QAAQ,CAAC,KAAc;IACnC,OAAO,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AACtD,CAAC;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,gCAAY,CAAA;IACZ,gCAAY,CAAA;IACZ,kCAAc,CAAA;AAClB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAED,SAAgB,YAAY,CAAC,KAAc;IACvC,OAAO,IAAA,eAAM,EAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AAC1D,CAAC;AAED,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,gCAAY,CAAA;IACZ,8BAAU,CAAA;AACd,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAED,SAAgB,YAAY,CAAC,KAAc;IACvC,OAAO,IAAA,eAAM,EAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AAC1D,CAAC;AAEY,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAG7C;IACE,CAAC,cAAc,CAAC,EAAE,EAAE,eAAK,CAAC;IAC1B,CAAC,cAAc,CAAC,EAAE,EAAE,kBAAQ,CAAC;IAC7B,CAAC,cAAc,CAAC,GAAG,EAAE,yBAAe,CAAC;IACrC,CAAC,cAAc,CAAC,EAAE,EAAE,YAAE,CAAC;IACvB,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAM,CAAC;IAC7B,CAAC,cAAc,CAAC,EAAE,EAAE,kBAAQ,CAAC;IAC7B,CAAC,cAAc,CAAC,GAAG,EAAE,yBAAe,CAAC;IACrC,CAAC,cAAc,CAAC,GAAG,EAAE,iBAAO,CAAC;IAC7B,CAAC,cAAc,CAAC,KAAK,EAAE,eAAK,CAAC;IAC7B,CAAC,YAAY,CAAC,GAAG,EAAE,aAAG,CAAC;IACvB,CAAC,cAAc,CAAC,EAAE,EAAE,eAAK,CAAC;IAC1B,CAAC,cAAc,CAAC,QAAQ,EAAE,uBAAa,CAAC;CAC3C,CAAC,CAAA;AAcF,uGAAuG;AACvG,oFAAoF;AACpF,SAAgB,aAAa,CACzB,KAAa,EACb,MAAc,EACd,MAAc,EACd,SAAiC,EACjC,UAAqC;IAErC,MAAM,aAAa,GAAI,SAAS,CAAC,QAAmB,KAAK,KAAK,CAAA;IAE9D,MAAM,cAAc,GAAG,CACnB,KAAa,EACb,MAAc,EACd,MAAc,EACd,QAA4C,EAC5C,UAAqC,EACC,EAAE;QACxC,IAAI,gBAAgB,GAAQ,SAAS,CAAA;QACrC,IAAI,MAAM,GAAG,UAAU,CAAA;QACvB,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,SAAS;gBACV,gBAAgB,GAAG,CAAC,KAAK,EAAE,IAAI,MAAM,OAAO,EAAE,IAAI,MAAM,KAAK,CAAC,CAAA;gBAC9D,MAAM,GAAG;oBACL,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChD,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;iBACjD,CAAA;gBACD,MAAK;YACT,KAAK,IAAI;gBACL,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,MAAM,EAAE,CAAC,CAAA;gBAC3C,MAAK;YACT;gBACI,gBAAgB,GAAG,CAAC,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;gBACxC,MAAK;QACb,CAAC;QACD,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAA;IACvC,CAAC,CAAA;IAED,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,cAAc,CAC/C,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EACvE,UAAU,CACb,CAAA;IAED,IAAI,aAAa,EAAE,CAAC;QAChB,SAAS,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAA;IAC3D,CAAC;SAAM,CAAC;QACJ,SAAS,CAAC,UAAU,GAAG,gBAAgB,CAAA;IAC3C,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAgB,0BAA0B,CACtC,EAA+B,EAC/B,MAAc,EACd,MAAc,EACd,KAAa,EACb,iBAAiB,GAAG,KAAK;IAEzB,OAAO,EAAE,CAAC,4BAA4B,CAAC,CACnC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAClC,MAAM,CAAC,YAAY,CACI,CAAA;AAC/B,CAAC;AAED,SAAgB,iBAAiB,CAAI,EAAyB,EAAE,MAAc,EAAE,MAAqB;IACjG,MAAM,gBAAgB,GAAG,IAAA,kCAAyB,EAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,+BAAsB,EAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;IAC/F,MAAM,UAAU,GAAG,IAAA,wBAAe,EAAC,EAAE,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAA;IACrE,MAAM,UAAU,GAAG,IAAA,wBAAe,EAAC,EAAE,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAA;IACrE,MAAM,OAAO,GAAG,IAAA,qBAAY,EAAC,EAAE,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAA;IAE/D,MAAM,KAAK,GAAG,IAAA,uBAAc,EACxB,gBAAgB,EAChB,EAAE,CAAC,KAAK,EACR,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,EAAE,CACL,CAAA;IACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,YAAoB,EAAE,KAAa,EAAE,EAAE;;QAC3D,MAAM,sBAAsB,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,KAAK,EAAE,CAAA;QACnE,MAAM,SAAS,GAAG,0BAA0B,CACxC,EAAE,EACF,gBAAgB,CAAC,MAAM,EACvB,YAAY,EACZ,KAAK,EACL,iBAAiB,CACpB,CAAA;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,SAAS,EAAE;YACrF,CAAC,sBAAsB,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,KAAK;SAC5D,CAAC,CAAA;QACF,IACI,OAAO;aACP,MAAA,SAAS,CAAC,UAAU,0CAAE,MAAM,CAAA;YAC5B,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAClE,CAAC;YACC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAA;QACvE,CAAC;QACD,MAAM,UAAU,GAAG,EAAE,CAAC,gCAAgC,CAAC,CAAC,SAAS,CAAC,CAAA;QAClE,IAAI,YAAY,CAAC,UAAU,KAAK,gBAAgB,CAAC,EAAE,EAAE,CAAC;YAClD,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QACvC,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAY;IACzC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,KAAK,GAAgB;QACvB,UAAU,EAAE,gBAAgB,CAAC,GAAG;QAChC,UAAU,EAAE,gBAAgB,CAAC,GAAG;QAChC,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,cAAc,CAAC,EAAE;QAC3B,KAAK,EAAE,GAAG;KACb,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,CAAA,CAAC,4CAA4C;IACnE,MAAM,iBAAiB,GAAG,GAAG,CAAA;IAE7B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IACrF,MAAM,QAAQ,GAA4E,EAAE,CAAA;IAE5F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACxB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QAC5B,CAAC;aAAM,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QAC5B,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAA;QACxB,CAAC;aAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAA;QAC1B,CAAC;aAAM,CAAC;YACJ,MAAK;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,KAAK;YACP,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI;gBACtE,CAAC,CAAC,gEAAgE;oBAChE,SAAS;gBACX,CAAC,CAAC,+FAA+F;oBAC/F,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAI,MAAc,EAAE,EAAyB,EAAE,OAAO,GAAG,KAAK;IACvF,MAAM,gBAAgB,GAAG,IAAA,kCAAyB,EAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,eAAe,GAAG,IAAA,+BAAsB,EAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAA;IAEvC,OAAO,CAAC,KAAa,EAAE,EAAE;QACrB,IAAI,CAAC,IAAA,yBAAgB,EAAC,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACzF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC,CAAA;AACL,CAAC;AAED,SAAgB,WAAW,CACvB,KAAoB,EACpB,iBAAqG,EACrG,EAA0B;IAE1B,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACb,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,iBAAiB,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QACD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC1D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,SAAQ;YACZ,CAAC;YACD,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,SAAQ;gBACZ,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1C,SAAQ;gBACZ,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IACI,KAAK,CAAC,QAAQ;oBACd,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC,EAAE;oBACpC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC5C,CAAC;oBACC,SAAQ;gBACZ,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3D,SAAQ;gBACZ,CAAC;gBACD,IAAI,KAAK,CAAC,UAAU,KAAK,gBAAgB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5F,SAAQ;gBACZ,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAA0B;gBAClC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,YAAY,EAAE,SAAS;aAC1B,CAAA;YAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAEjD,MAAM,gBAAgB,GAAG,IAAA,kCAAyB,EAAC,MAAM,CAAC,CAAA;YAC1D,MAAM,eAAe,GAAG,IAAA,yBAAgB,EAAC,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAErE,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrB,KAAK,cAAc,CAAC,GAAG;oBACnB,MAAM,CAAC,YAAY,GAAG,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC9D,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAC1C,CAAA;oBACD,MAAK;gBACT,KAAK,cAAc,CAAC,EAAE,CAAC;gBACvB,KAAK,cAAc,CAAC,QAAQ;oBACxB,MAAM,CAAC,YAAY,GAAG,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC9D,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CACxD,CAAA;oBACD,MAAK;gBACT,KAAK,cAAc,CAAC,KAAK;oBACrB,MAAM,CAAC,YAAY,GAAG,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;oBACtF,MAAK;gBACT,KAAK,cAAc,CAAC,EAAE;oBAClB,MAAM,CAAC,YAAY,GAAG,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;oBACrF,MAAK;gBACT;oBACI,MAAM,CAAC,YAAY,GAAG,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;YACjG,CAAC;YAED,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC1B,MAAM,mBAAmB,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAChG,KAAK,CAAC,QAAQ,CACjB,CAAA;gBAED,IAAI,mBAAmB,EAAE,CAAC;oBACtB,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;oBAE3D,mEAAmE;oBACnE,8DAA8D;oBAC9D,yEAAyE;oBACzE,kEAAkE;oBAClE,4EAA4E;oBAC5E,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAE1F,mEAAmE;oBACnE,qFAAqF;oBACrF,mEAAmE;oBACnE,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;wBAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;wBACxC,OAAO,eAAe,CAAC,QAAQ,CAAC,WAAW,CACvC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAC9B,SAA+C,CAClD,CAAA;oBACL,CAAC,CAAA;oBAED,IAAI,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC,EAAE,EAAE,CAAC;wBACvC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;4BACtC,MAAM,CAAC,SAAS,CAAC,GAAG;gCAChB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gCAC5B;oCACI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;oCAC7D,YAAY,EAAE,IAAA,sBAAY,EAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oCACxD,UAAU,EAAE,gBAAgB,CAAC,GAAG;iCACnC;6BACJ,CAAA;wBACL,CAAC,CAAC,CAAA;oBACN,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,SAAS,CAAC,GAAG;4BAChB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;4BAC5B;gCACI,UAAU,EAAE,MAAM,CAAC,UAAU;gCAC7B,YAAY,EAAE,IAAA,sBAAY,EAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gCACzD,UAAU,EAAE,gBAAgB,CAAC,GAAG;6BACnC;yBACJ,CAAA;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;gBACxD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;YACxD,CAAC;YAED,yDAAyD;YACzD,sEAAsE;YACtE,4EAA4E;YAC5E,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,8BAA8B,GAChC,eAAe,CAAC,OAAO;oBACvB,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAE5F,MAAM,SAAS,GAAG,8BAA8B;oBAC5C,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC1E,CAAC,CAAC,MAAM,CAAA;gBACZ,MAAM,SAAS,GAAG,8BAA8B,IAAI,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAA;gBACxF,MAAM,SAAS,GAAG,SAAS;oBACvB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM;oBAC1D,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;gBAClC,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAC1E,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CACpC,CAAA;oBACD,iEAAiE;oBACjE,IAAI,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;wBAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAA;oBAC1D,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,iBAAkB,SAAQ,KAAK;CAAG;AAExC;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAC3B,UAAkB,EAClB,QAA2C;IAE3C,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAE1D,IAAI,CAAC;QACD,sDAAsD;QACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAA;QAC7E,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO;gBACH,CAAC,SAAS,EAAE,QAAQ,CAAU;gBAC9B,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClG,CAAA;QACL,CAAC;QAED,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAA;QAC3F,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO;gBACH,CAAC,SAAS,EAAE,QAAQ,CAAU;gBAC9B,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAA;QACL,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,YAAY,iBAAiB,EAAE,CAAC;YACjC,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,UAAU,EAAE,CAAC,CAAA;QAChG,CAAC;QACD,MAAM,CAAC,CAAA;IACX,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,UAAU,EAAE,CAAC,CAAA;IAChG,OAAO,EAAE,CAAA;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,2BAA2B,CAChC,UAAkB,EAClB,QAA2C;IAE3C,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC1D,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CACtC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,aAAa,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,CAAC,CACjG,CAAA;IACD,IAAI,WAAW,GAAG,CAAC,CAAC;QAChB,OAAO;YACH,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;YAChD,QAAQ,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAqB;SAC7D,CAAA;AACT,CAAC;AAED,SAAgB,SAAS,CACrB,EAAyB,EACzB,KAAoB,EACpB,iBAAqG;IAErG,MAAM,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAA;IACxD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;IAExD,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC5B,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAEzD,2GAA2G;IAC3G,qDAAqD;IACrD,MAAM,iBAAiB,GAAsB,EAAE,CAAA;IAC/C,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QACvD,mFAAmF;QACnF,IACI,YAAY,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,aAAa,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,CAAC,CACjG,EACH,CAAC;YACC,SAAQ;QACZ,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,YAAY;iBACtB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChB,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,kCAAkC;YAClC,IAAI,iBAAiB,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,iBAAiB,CAAC,MAAM,CAAC,GAAG,oBAAoB,CAAA;YACpD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAA;AAC5B,CAAC;AAED,SAAgB,gBAAgB,CAAI,EAAyB,EAAE,MAAqB;IAChF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAA;IAEpD,4HAA4H;IAC5H,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IACjG,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAA;IACnF,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAA;IAErF,EAAE,CAAC,QAAQ,CACP,IAAI,kBAAQ,CAAC,CAAC,EAAyB,EAAE,EAAE;QACvC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC/B,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;IACL,CAAC,CAAC,CACL,CAAA;IAED,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAChC,EAAE,CAAC,QAAQ,CACP,IAAI,kBAAQ,CAAC,CAAC,EAAyB,EAAE,EAAE;YACvC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC,CAAC,CACL,CAAA;IACL,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAC/B,EAAyB,EACzB,MAAqB,EACrB,KAAoB,EACpB,iBAAqG;IAErG,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAA;IACzC,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5F,MAAM,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAA;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAE5C,6FAA6F;IAC7F,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClH,+CAA+C;IAC/C,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CACnC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAU,CAC3F,CAAA;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,EAAE,CAAC,KAAK,CAAA;QAC/B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACxD,MAAM,WAAW,GAAG,QAAQ,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAA;QAEjG,iEAAiE;QACjE,MAAM,cAAc,GAAG,QAAQ,CAAC,qBAAqB,CAAA;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAa,EAAE,WAAW,CAAC,CAAA;QAE5F,IAAI,cAAc,CAAC,gBAAgB,EAAE,CAAC;YAClC,iGAAiG;QACrG,CAAC;QAED,+CAA+C;QAC/C,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAA;QAC1F,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAA;QAEpE,2DAA2D;QAC3D,MAAM,eAAe,GAAG,IAAA,4BAAmB,EAAC,IAAA,6BAAoB,EAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACxF,8CAA8C;QAC9C,IAAA,iCAAsB,EAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;QAElE,mFAAmF;QAEnF,uGAAuG;QACvG,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;YAEhC,oCAAoC;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,wEAAwE;gBACxE,kFAAkF;gBAClF,SAAQ;YACZ,CAAC;YAED,sDAAsD;YACtD,+DAA+D;YAC/D,MAAM,UAAU,GAAG,IAAwB,CAAA;YAE3C,6DAA6D;YAC7D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACV,8EAA8E;gBAE9E,MAAM,WAAW,GAAG,QAAQ,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;gBAC7D,MAAM,UAAU,GAAG,QAAQ,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;gBACpD,MAAM,qBAAqB,GAAG,UAAU,CAAC,eAAe,CAAA;gBAExD,sGAAsG;gBACtG,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAA;gBAElD,sDAAsD;gBACtD,MAAM,YAAY,GAAG,QAAQ;qBACxB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBACR,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAA;oBAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAA;oBAC3C,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;gBACnF,CAAC,CAAC;qBACD,IAAI,CAAC,OAAO,CAAC,CAAA;gBAElB,qCAAqC;gBACrC,QAAQ,CAAC,SAAS,CACd,qBAAqB,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,EAC3D,WAAW,EACX,YAAY,CACf,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,qEAAqE;gBACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAA;gBAC9E,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAC5C,wDAAwD;oBACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAA;oBACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAA;oBAEzD,2BAA2B;oBAC3B,IAAI,OAAe,CAAA;oBACnB,IAAI,OAAe,CAAA;oBACnB,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;wBACtB,OAAO,GAAG,QAAQ,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;wBACxC,OAAO,GAAG,cAAc,CAAA;oBAC5B,CAAC;yBAAM,CAAC;wBACJ,OAAO,GAAG,QAAQ,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;wBACxC,OAAO,GAAG,cAAc,CAAA;oBAC5B,CAAC;oBAED,cAAc;oBACd,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBACpG,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACvC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QAEvE,IAAI,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAA;QACrC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,gBAAgB,CAAC,GAAG,EAAE,CAAC;gBAC7B,IAAI,UAAU,KAAK,gBAAgB,CAAC,GAAG,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,QAAQ,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAA;gBACvG,CAAC;gBACD,UAAU,GAAG,CAAC,CAAA;YAClB,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,IAAI,UAAU,KAAK,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACtC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;aAAM,IAAI,UAAU,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAA,0BAAiB,EAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACnC,CAAC;aAAM,IAAI,UAAU,KAAK,gBAAgB,CAAC,GAAG,EAAE,CAAC;YAC7C,IAAA,yBAAgB,EAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAClC,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAC3B,KAAoB,EACpB,iBAAoG,EACpG,MAAc;IAEd,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,EAAE,EAAmB,CAAA;IAChD,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAA;QAC7D,CAAC;IACL,CAAC;IACD,MAAM,oBAAoB,GAAsF,EAAE,CAAA;IAClH,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClE,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;YACrC,oBAAoB,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAA;QAClE,CAAC;IACL,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,SAAiB;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,mFAAmF;QACnF,oBAAoB;QACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC"}
|