@recursyve/nestjs-data-filter 9.0.1 → 9.1.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/lib/data-filter.repository.d.ts +1 -1
- package/lib/data-filter.repository.js +24 -33
- package/lib/decorators/index.d.ts +1 -0
- package/lib/decorators/index.js +2 -1
- package/lib/decorators/limit.decorator.d.ts +1 -0
- package/lib/decorators/limit.decorator.js +17 -0
- package/lib/deserializers/user.deserializer.d.ts +1 -1
- package/lib/deserializers/user.deserializer.js +1 -1
- package/lib/filter/filter.service.d.ts +0 -1
- package/lib/filter/filter.service.js +24 -24
- package/lib/filter/filter.utils.d.ts +3 -0
- package/lib/filter/filter.utils.js +17 -1
- package/lib/filter/filters/filter.d.ts +7 -3
- package/lib/filter/filters/filter.js +4 -1
- package/lib/filter/filters/radio.filter.d.ts +4 -1
- package/lib/filter/filters/radio.filter.js +26 -1
- package/lib/filter/order-rules/default.order-rule.d.ts +2 -2
- package/lib/filter/order-rules/default.order-rule.js +1 -1
- package/lib/filter/order-rules/index.d.ts +2 -0
- package/lib/filter/order-rules/index.js +3 -1
- package/lib/filter/order-rules/is-null.order-rule.d.ts +6 -0
- package/lib/filter/order-rules/is-null.order-rule.js +18 -0
- package/lib/models/include.model.d.ts +2 -0
- package/lib/models/include.model.js +1 -1
- package/lib/models/path.model.d.ts +2 -0
- package/lib/models/path.model.js +1 -1
- package/lib/models/user.model.d.ts +1 -1
- package/lib/models/user.model.js +1 -1
- package/lib/scanners/sequelize-model.scanner.js +6 -2
- package/lib/sequelize.utils.d.ts +2 -2
- package/lib/sequelize.utils.js +13 -5
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WhereOptions } from "sequelize";
|
|
2
|
+
import { PathModel } from "../../models/path.model";
|
|
2
3
|
import { DataFilterUserModel } from "../../models/user.model";
|
|
3
4
|
import { QueryRuleModel } from "../models";
|
|
4
5
|
import { FilterBaseConfigurationModel } from "../models/filter-configuration.model";
|
|
@@ -7,7 +8,7 @@ import { FilterType } from "../type";
|
|
|
7
8
|
import { BaseFilterDefinition, Filter, FilterCondition } from "./filter";
|
|
8
9
|
export interface RadioFilterOption {
|
|
9
10
|
key: string;
|
|
10
|
-
value
|
|
11
|
+
value?: unknown;
|
|
11
12
|
operator?: FilterOperatorTypes;
|
|
12
13
|
condition?: FilterCondition;
|
|
13
14
|
}
|
|
@@ -27,6 +28,8 @@ export declare class RadioFilter extends Filter implements RadioFilterDefinition
|
|
|
27
28
|
options: RadioFilterOption[];
|
|
28
29
|
constructor(definition: BaseFilterDefinition & RadioFilterDefinition);
|
|
29
30
|
getConfig<Request>(key: string, request: Request, user?: DataFilterUserModel): Promise<RadioFilterConfigurationModel>;
|
|
31
|
+
getIncludePaths(rule: QueryRuleModel, data?: object): PathModel[];
|
|
30
32
|
getWhereOptions(rule: QueryRuleModel): Promise<WhereOptions>;
|
|
31
33
|
getHavingOptions(rule: QueryRuleModel): Promise<WhereOptions>;
|
|
34
|
+
private getRulePaths;
|
|
32
35
|
}
|
|
@@ -25,6 +25,14 @@ class RadioFilter extends filter_1.Filter {
|
|
|
25
25
|
})))
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
getIncludePaths(rule, data) {
|
|
29
|
+
const option = this.options.find(x => x.key === rule.value);
|
|
30
|
+
const condition = option === null || option === void 0 ? void 0 : option.condition;
|
|
31
|
+
if (!condition) {
|
|
32
|
+
return super.getIncludePaths(rule);
|
|
33
|
+
}
|
|
34
|
+
return this.getRulePaths(condition.rules, data);
|
|
35
|
+
}
|
|
28
36
|
async getWhereOptions(rule) {
|
|
29
37
|
const option = this.options.find(x => x.key === rule.value);
|
|
30
38
|
if (!option) {
|
|
@@ -59,7 +67,24 @@ class RadioFilter extends filter_1.Filter {
|
|
|
59
67
|
operation: (_a = option.operator) !== null && _a !== void 0 ? _a : rule.operation
|
|
60
68
|
});
|
|
61
69
|
}
|
|
70
|
+
getRulePaths(rules, data) {
|
|
71
|
+
const paths = [];
|
|
72
|
+
for (const rule of rules) {
|
|
73
|
+
if (rule.rules) {
|
|
74
|
+
paths.push(...this.getRulePaths(rule.rules, data));
|
|
75
|
+
}
|
|
76
|
+
else if (rule.path) {
|
|
77
|
+
if (paths.every((path) => path.path !== rule.path)) {
|
|
78
|
+
paths.push({
|
|
79
|
+
path: rule.path,
|
|
80
|
+
where: filter_utils_1.FilterUtils.generateWhereConditions(rule.where, data)
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return paths;
|
|
86
|
+
}
|
|
62
87
|
}
|
|
63
88
|
exports.RadioFilter = RadioFilter;
|
|
64
89
|
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9yYWRpby5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTZDO0FBRTdDLGtEQUE4QztBQUc5Qyw0Q0FBbUQ7QUFDbkQsa0NBQXFDO0FBQ3JDLHFDQUF5RTtBQXNCekUsTUFBYSxXQUFZLFNBQVEsZUFBTTtJQUtuQyxZQUFZLFVBQXdEO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxmLFNBQUksR0FBRyxpQkFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQUcsQ0FBQywrQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUsvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBVSxHQUFXLEVBQUUsT0FBZ0IsRUFBRSxJQUEwQjtRQUNyRixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU87WUFDSCxHQUFHLE1BQU07WUFDVCxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztnQkFDVixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUM3QyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxFQUNkLDBCQUFXLENBQUMsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDdkQ7YUFDSixDQUFDLENBQUMsQ0FBQztTQUNQLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFvQjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUM7Z0JBQ3pCLEdBQUcsSUFBSTtnQkFDUCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTO2FBQy9DLENBQUMsQ0FBQztTQUNOO1FBRUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4RyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLElBQUksQ0FDWCxNQUFNLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTO1NBQy9DLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFvQjs7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFFRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxQixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsU0FBUyxFQUFFLE1BQUEsTUFBTSxDQUFDLFFBQVEsbUNBQUksSUFBSSxDQUFDLFNBQVM7U0FDL0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBbkVELGtDQW1FQyIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlcnMvcmFkaW8uZmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3AsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3VzZXIubW9kZWxcIjtcbmltcG9ydCB7IEZpbHRlclV0aWxzIH0gZnJvbSBcIi4uL2ZpbHRlci51dGlsc1wiO1xuaW1wb3J0IHsgUXVlcnlSdWxlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBGaWx0ZXJCYXNlQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9maWx0ZXItY29uZmlndXJhdGlvbi5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyT3BlcmF0b3JUeXBlcyB9IGZyb20gXCIuLi9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgQmFzZUZpbHRlckRlZmluaXRpb24sIEZpbHRlciwgRmlsdGVyQ29uZGl0aW9uIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJPcHRpb24ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiB1bmtub3duO1xuICAgIG9wZXJhdG9yPzogRmlsdGVyT3BlcmF0b3JUeXBlcztcbiAgICBjb25kaXRpb24/OiBGaWx0ZXJDb25kaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCBleHRlbmRzIEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwge1xuICAgIG9wdGlvbnM6IFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgUmFkaW9GaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIgaW1wbGVtZW50cyBSYWRpb0ZpbHRlckRlZmluaXRpb24ge1xuICAgIHB1YmxpYyB0eXBlID0gRmlsdGVyVHlwZS5SYWRpbztcbiAgICBwdWJsaWMgb3BlcmF0b3JzID0gW0ZpbHRlck9wZXJhdG9yVHlwZXMuRXF1YWxdO1xuICAgIHB1YmxpYyBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xuXG4gICAgY29uc3RydWN0b3IoZGVmaW5pdGlvbjogQmFzZUZpbHRlckRlZmluaXRpb24gJiBSYWRpb0ZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgc3VwZXIoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZzxSZXF1ZXN0PihrZXk6IHN0cmluZywgcmVxdWVzdDogUmVxdWVzdCwgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPFJhZGlvRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHN1cGVyLmdldENvbmZpZyhrZXksIHJlcXVlc3QsIHVzZXIpO1xuXG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICBvcHRpb25zOiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLm9wdGlvbnMubWFwKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IHgua2V5LFxuICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRSYWRpb09wdGlvblRyYW5zbGF0aW9uS2V5KGtleSwgeC5rZXkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSkpKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRXaGVyZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgua2V5ID09PSBydWxlLnZhbHVlKTtcbiAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRXaGVyZU9wdGlvbnMocnVsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wdGlvbi5jb25kaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRXaGVyZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciB8fCBydWxlLm9wZXJhdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgICAgIGNvbnN0IHdoZXJlID0gb3B0aW9uLmNvbmRpdGlvbi5jb25kaXRpb24gPT09IFwiYW5kXCIgPyB7IFtPcC5hbmRdOiBjb25kaXRpb25zIH0gOiB7IFtPcC5vcl06IGNvbmRpdGlvbnMgfTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnMob3B0aW9uLmNvbmRpdGlvbiwgY29uZGl0aW9ucywgcnVsZSk7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChcbiAgICAgICAgICAgIGF3YWl0IHN1cGVyLmdldFdoZXJlT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogb3B0aW9uLm9wZXJhdG9yIHx8IHJ1bGUub3BlcmF0aW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEhhdmluZ09wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgua2V5ID09PSBydWxlLnZhbHVlKTtcbiAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRIYXZpbmdPcHRpb25zKHJ1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEhhdmluZ09wdGlvbnMoe1xuICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciA/PyBydWxlLm9wZXJhdGlvblxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9yYWRpby5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTZDO0FBRzdDLGtEQUE4QztBQUc5Qyw0Q0FBbUQ7QUFDbkQsa0NBQXFDO0FBQ3JDLHFDQUE4RjtBQXNCOUYsTUFBYSxXQUFZLFNBQVEsZUFBTTtJQUtuQyxZQUFZLFVBQXdEO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxmLFNBQUksR0FBRyxpQkFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQUcsQ0FBQywrQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUsvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBVSxHQUFXLEVBQUUsT0FBZ0IsRUFBRSxJQUEwQjtRQUNyRixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU87WUFDSCxHQUFHLE1BQU07WUFDVCxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztnQkFDVixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUM3QyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxFQUNkLDBCQUFXLENBQUMsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDdkQ7YUFDSixDQUFDLENBQUMsQ0FBQztTQUNQLENBQUM7SUFDTixDQUFDO0lBRU0sZUFBZSxDQUFDLElBQW9CLEVBQUUsSUFBYTtRQUN0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LENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDM0U7aUJBQU0sSUFBSyxJQUE0QixDQUFDLElBQUksRUFBRTtnQkFDM0MsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFNLElBQTRCLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3pFLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1AsSUFBSSxFQUFHLElBQTRCLENBQUMsSUFBSTt3QkFDeEMsS0FBSyxFQUFFLDBCQUFXLENBQUMsdUJBQXVCLENBQUUsSUFBNEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO3FCQUN4RixDQUFDLENBQUM7aUJBQ047YUFDSjtTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBaEdELGtDQWdHQyIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlcnMvcmFkaW8uZmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3AsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IFBhdGhNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcGF0aC5tb2RlbFwiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclVzZXJNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvdXNlci5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyVXRpbHMgfSBmcm9tIFwiLi4vZmlsdGVyLnV0aWxzXCI7XG5pbXBvcnQgeyBRdWVyeVJ1bGVNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHNcIjtcbmltcG9ydCB7IEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJPcGVyYXRvclR5cGVzIH0gZnJvbSBcIi4uL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XG5pbXBvcnQgeyBCYXNlRmlsdGVyRGVmaW5pdGlvbiwgRmlsdGVyLCBGaWx0ZXJDb25kaXRpb24sIEZpbHRlckNvbmRpdGlvblJ1bGUgfSBmcm9tIFwiLi9maWx0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlck9wdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU/OiB1bmtub3duO1xuICAgIG9wZXJhdG9yPzogRmlsdGVyT3BlcmF0b3JUeXBlcztcbiAgICBjb25kaXRpb24/OiBGaWx0ZXJDb25kaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCBleHRlbmRzIEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwge1xuICAgIG9wdGlvbnM6IFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgUmFkaW9GaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIgaW1wbGVtZW50cyBSYWRpb0ZpbHRlckRlZmluaXRpb24ge1xuICAgIHB1YmxpYyB0eXBlID0gRmlsdGVyVHlwZS5SYWRpbztcbiAgICBwdWJsaWMgb3BlcmF0b3JzID0gW0ZpbHRlck9wZXJhdG9yVHlwZXMuRXF1YWxdO1xuICAgIHB1YmxpYyBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xuXG4gICAgY29uc3RydWN0b3IoZGVmaW5pdGlvbjogQmFzZUZpbHRlckRlZmluaXRpb24gJiBSYWRpb0ZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgc3VwZXIoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZzxSZXF1ZXN0PihrZXk6IHN0cmluZywgcmVxdWVzdDogUmVxdWVzdCwgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPFJhZGlvRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHN1cGVyLmdldENvbmZpZyhrZXksIHJlcXVlc3QsIHVzZXIpO1xuXG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICBvcHRpb25zOiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLm9wdGlvbnMubWFwKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IHgua2V5LFxuICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRSYWRpb09wdGlvblRyYW5zbGF0aW9uS2V5KGtleSwgeC5rZXkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSkpKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbmNsdWRlUGF0aHMocnVsZTogUXVlcnlSdWxlTW9kZWwsIGRhdGE/OiBvYmplY3QpOiBQYXRoTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKHggPT4geC5rZXkgPT09IHJ1bGUudmFsdWUpO1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBvcHRpb24/LmNvbmRpdGlvbjtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRJbmNsdWRlUGF0aHMocnVsZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRSdWxlUGF0aHMoY29uZGl0aW9uLnJ1bGVzLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoeCA9PiB4LmtleSA9PT0gcnVsZS52YWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0V2hlcmVPcHRpb25zKHJ1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb24uY29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0V2hlcmVPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAuLi5ydWxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBvcHRpb24ub3BlcmF0b3IgfHwgcnVsZS5vcGVyYXRpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICBjb25zdCB3aGVyZSA9IG9wdGlvbi5jb25kaXRpb24uY29uZGl0aW9uID09PSBcImFuZFwiID8geyBbT3AuYW5kXTogY29uZGl0aW9ucyB9IDogeyBbT3Aub3JdOiBjb25kaXRpb25zIH07XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVSdWxlV2hlcmVPcHRpb25zKG9wdGlvbi5jb25kaXRpb24sIGNvbmRpdGlvbnMsIHJ1bGUpO1xuICAgICAgICBjb25kaXRpb25zLnB1c2goXG4gICAgICAgICAgICBhd2FpdCBzdXBlci5nZXRXaGVyZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciB8fCBydWxlLm9wZXJhdGlvblxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRIYXZpbmdPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoeCA9PiB4LmtleSA9PT0gcnVsZS52YWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SGF2aW5nT3B0aW9ucyhydWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRIYXZpbmdPcHRpb25zKHtcbiAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uOiBvcHRpb24ub3BlcmF0b3IgPz8gcnVsZS5vcGVyYXRpb25cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSdWxlUGF0aHMocnVsZXM6IChGaWx0ZXJDb25kaXRpb25SdWxlIHwgRmlsdGVyQ29uZGl0aW9uKVtdLCBkYXRhPzogb2JqZWN0KTogUGF0aE1vZGVsW10ge1xuICAgICAgICBjb25zdCBwYXRoczogUGF0aE1vZGVsW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgIGlmICgocnVsZSBhcyBGaWx0ZXJDb25kaXRpb24pLnJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgcGF0aHMucHVzaCguLi50aGlzLmdldFJ1bGVQYXRocygocnVsZSBhcyBGaWx0ZXJDb25kaXRpb24pLnJ1bGVzLCBkYXRhKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChydWxlIGFzIEZpbHRlckNvbmRpdGlvblJ1bGUpLnBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAocGF0aHMuZXZlcnkoKHBhdGgpID0+IHBhdGgucGF0aCAhPT0gKHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uUnVsZSkucGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAocnVsZSBhcyBGaWx0ZXJDb25kaXRpb25SdWxlKS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmU6IEZpbHRlclV0aWxzLmdlbmVyYXRlV2hlcmVDb25kaXRpb25zKChydWxlIGFzIEZpbHRlckNvbmRpdGlvblJ1bGUpLndoZXJlLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGF0aHM7XG4gICAgfVxufVxuIl19
|
|
@@ -4,8 +4,8 @@ export interface DefaultOrderRuleDefinition {
|
|
|
4
4
|
nullLast?: boolean;
|
|
5
5
|
}
|
|
6
6
|
export declare class DefaultOrderRule {
|
|
7
|
-
order: DefaultOrderRuleDefinition;
|
|
7
|
+
order: DefaultOrderRuleDefinition | DefaultOrderRuleDefinition[];
|
|
8
8
|
private _type;
|
|
9
|
-
constructor(order: DefaultOrderRuleDefinition);
|
|
9
|
+
constructor(order: DefaultOrderRuleDefinition | DefaultOrderRuleDefinition[]);
|
|
10
10
|
static validate(definition: DefaultOrderRuleDefinition): boolean;
|
|
11
11
|
}
|
|
@@ -12,4 +12,4 @@ class DefaultOrderRule {
|
|
|
12
12
|
}
|
|
13
13
|
exports.DefaultOrderRule = DefaultOrderRule;
|
|
14
14
|
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvb3JkZXItcnVsZXMvZGVmYXVsdC5vcmRlci1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLE1BQWEsZ0JBQWdCO0lBR3pCLFlBQW1CLEtBQWdFO1FBQWhFLFVBQUssR0FBTCxLQUFLLENBQTJEO1FBRjNFLFVBQUssR0FBRyxvQkFBb0IsQ0FBQztJQUVpRCxDQUFDO0lBRWhGLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBc0M7UUFDekQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssb0JBQW9CLENBQUM7SUFDeEQsQ0FBQztDQUNKO0FBUkQsNENBUUMiLCJmaWxlIjoibGliL2ZpbHRlci9vcmRlci1ydWxlcy9kZWZhdWx0Lm9yZGVyLXJ1bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERlZmF1bHRPcmRlclJ1bGVEZWZpbml0aW9uIHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBkaXJlY3Rpb246IFwiYXNjXCIgfCBcImRlc2NcIiB8IFwiXCI7XG4gICAgbnVsbExhc3Q/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdE9yZGVyUnVsZSB7XG4gICAgcHJpdmF0ZSBfdHlwZSA9IFwiZGVmYXVsdF9vcmRlcl9ydWxlXCI7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgb3JkZXI6IERlZmF1bHRPcmRlclJ1bGVEZWZpbml0aW9uIHwgRGVmYXVsdE9yZGVyUnVsZURlZmluaXRpb25bXSkge31cblxuICAgIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGUoZGVmaW5pdGlvbjogRGVmYXVsdE9yZGVyUnVsZURlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25bXCJfdHlwZVwiXSA9PT0gXCJkZWZhdWx0X29yZGVyX3J1bGVcIjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -16,5 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./enum.order-rule"), exports);
|
|
18
18
|
__exportStar(require("./if.order-rule"), exports);
|
|
19
|
+
__exportStar(require("./is-null.order-rule"), exports);
|
|
20
|
+
__exportStar(require("./default.order-rule"), exports);
|
|
19
21
|
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvb3JkZXItcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFrQztBQUNsQyxrREFBZ0M7QUFDaEMsdURBQXFDO0FBQ3JDLHVEQUFxQyIsImZpbGUiOiJsaWIvZmlsdGVyL29yZGVyLXJ1bGVzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZW51bS5vcmRlci1ydWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pZi5vcmRlci1ydWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcy1udWxsLm9yZGVyLXJ1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlZmF1bHQub3JkZXItcnVsZVwiO1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { M } from "../../sequelize.utils";
|
|
2
|
+
import { BaseOrderRuleDefinition, OrderItemColumn, OrderRule } from "./order-rule";
|
|
3
|
+
export declare class IsNullOrderRule extends OrderRule {
|
|
4
|
+
constructor(definition: BaseOrderRuleDefinition);
|
|
5
|
+
getOrderOption(model: typeof M): OrderItemColumn;
|
|
6
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IsNullOrderRule = void 0;
|
|
4
|
+
const sequelize_1 = require("sequelize");
|
|
5
|
+
const sequelize_utils_1 = require("../../sequelize.utils");
|
|
6
|
+
const order_rule_1 = require("./order-rule");
|
|
7
|
+
class IsNullOrderRule extends order_rule_1.OrderRule {
|
|
8
|
+
constructor(definition) {
|
|
9
|
+
super(definition);
|
|
10
|
+
}
|
|
11
|
+
getOrderOption(model) {
|
|
12
|
+
const order = `${this.path ? sequelize_utils_1.SequelizeUtils.getLiteralFullName(this.attribute, this.path) : `\`${model.name}\`.\`${this.attribute}\``} IS NULL`;
|
|
13
|
+
return (0, sequelize_1.literal)(order);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.IsNullOrderRule = IsNullOrderRule;
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvb3JkZXItcnVsZXMvaXMtbnVsbC5vcmRlci1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFvQztBQUNwQywyREFBMEQ7QUFDMUQsNkNBQW1GO0FBRW5GLE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQUMxQyxZQUFZLFVBQW1DO1FBQzNDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWU7UUFDakMsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQ0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUM7UUFDaEosT0FBTyxJQUFBLG1CQUFPLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBVEQsMENBU0MiLCJmaWxlIjoibGliL2ZpbHRlci9vcmRlci1ydWxlcy9pcy1udWxsLm9yZGVyLXJ1bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsaXRlcmFsIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgTSwgU2VxdWVsaXplVXRpbHMgfSBmcm9tIFwiLi4vLi4vc2VxdWVsaXplLnV0aWxzXCI7XG5pbXBvcnQgeyBCYXNlT3JkZXJSdWxlRGVmaW5pdGlvbiwgT3JkZXJJdGVtQ29sdW1uLCBPcmRlclJ1bGUgfSBmcm9tIFwiLi9vcmRlci1ydWxlXCI7XG5cbmV4cG9ydCBjbGFzcyBJc051bGxPcmRlclJ1bGUgZXh0ZW5kcyBPcmRlclJ1bGUge1xuICAgIGNvbnN0cnVjdG9yKGRlZmluaXRpb246IEJhc2VPcmRlclJ1bGVEZWZpbml0aW9uKSB7XG4gICAgICAgIHN1cGVyKGRlZmluaXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcmRlck9wdGlvbihtb2RlbDogdHlwZW9mIE0pOiBPcmRlckl0ZW1Db2x1bW4ge1xuICAgICAgICBjb25zdCBvcmRlciA9IGAke3RoaXMucGF0aCA/IFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZSh0aGlzLmF0dHJpYnV0ZSwgdGhpcy5wYXRoKSA6IGBcXGAke21vZGVsLm5hbWV9XFxgLlxcYCR7dGhpcy5hdHRyaWJ1dGV9XFxgYH0gSVMgTlVMTGA7XG4gICAgICAgIHJldHVybiBsaXRlcmFsKG9yZGVyKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -13,6 +13,7 @@ export interface IncludeConfig {
|
|
|
13
13
|
separate?: boolean;
|
|
14
14
|
paranoid?: boolean;
|
|
15
15
|
subQuery?: boolean;
|
|
16
|
+
limit?: number;
|
|
16
17
|
}
|
|
17
18
|
export interface IncludeModel {
|
|
18
19
|
path: string;
|
|
@@ -25,4 +26,5 @@ export interface IncludeModel {
|
|
|
25
26
|
separate?: boolean;
|
|
26
27
|
paranoid?: boolean;
|
|
27
28
|
subQuery?: boolean;
|
|
29
|
+
limit?: number;
|
|
28
30
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvaW5jbHVkZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImxpYi9tb2RlbHMvaW5jbHVkZS5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbmRBdHRyaWJ1dGVPcHRpb25zLCBPcmRlciwgV2hlcmVPcHRpb25zIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY2x1ZGVXaGVyZU1vZGVsIHtcbiAgICBba2V5OiBzdHJpbmddOiAob3B0aW9uPykgPT4gdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlQ29uZmlnIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgYXR0cmlidXRlcz86IEZpbmRBdHRyaWJ1dGVPcHRpb25zO1xuICAgIHNlYXJjaGFibGVBdHRyaWJ1dGVzPzogc3RyaW5nW107XG4gICAgaWdub3JlSW5TZWFyY2g/OiBib29sZWFuO1xuICAgIG9yZGVyPzogT3JkZXI7XG4gICAgd2hlcmU/OiBJbmNsdWRlV2hlcmVNb2RlbDtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc2VwYXJhdGU/
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvaW5jbHVkZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImxpYi9tb2RlbHMvaW5jbHVkZS5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbmRBdHRyaWJ1dGVPcHRpb25zLCBPcmRlciwgV2hlcmVPcHRpb25zIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY2x1ZGVXaGVyZU1vZGVsIHtcbiAgICBba2V5OiBzdHJpbmddOiAob3B0aW9uPykgPT4gdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlQ29uZmlnIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgYXR0cmlidXRlcz86IEZpbmRBdHRyaWJ1dGVPcHRpb25zO1xuICAgIHNlYXJjaGFibGVBdHRyaWJ1dGVzPzogc3RyaW5nW107XG4gICAgaWdub3JlSW5TZWFyY2g/OiBib29sZWFuO1xuICAgIG9yZGVyPzogT3JkZXI7XG4gICAgd2hlcmU/OiBJbmNsdWRlV2hlcmVNb2RlbDtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc2VwYXJhdGU/OiBib29sZWFuO1xuICAgIHBhcmFub2lkPzogYm9vbGVhbjtcbiAgICBzdWJRdWVyeT86IGJvb2xlYW47XG4gICAgbGltaXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5jbHVkZU1vZGVsIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgYXR0cmlidXRlcz86IEZpbmRBdHRyaWJ1dGVPcHRpb25zO1xuICAgIHNlYXJjaGFibGVBdHRyaWJ1dGVzPzogc3RyaW5nW107XG4gICAgaWdub3JlSW5TZWFyY2g/OiBib29sZWFuO1xuICAgIG9yZGVyPzogT3JkZXI7XG4gICAgd2hlcmU/OiBXaGVyZU9wdGlvbnM7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHNlcGFyYXRlPzogYm9vbGVhbjtcbiAgICBwYXJhbm9pZD86IGJvb2xlYW47XG4gICAgc3ViUXVlcnk/OiBib29sZWFuO1xuICAgIGxpbWl0PzogbnVtYmVyO1xufVxuIl19
|
|
@@ -8,6 +8,7 @@ export interface PathConfig {
|
|
|
8
8
|
paranoid?: boolean;
|
|
9
9
|
subQuery?: boolean;
|
|
10
10
|
order?: Order;
|
|
11
|
+
limit?: number;
|
|
11
12
|
}
|
|
12
13
|
export interface PathModel {
|
|
13
14
|
path: string;
|
|
@@ -17,4 +18,5 @@ export interface PathModel {
|
|
|
17
18
|
paranoid?: boolean;
|
|
18
19
|
subQuery?: boolean;
|
|
19
20
|
order?: Order;
|
|
21
|
+
limit?: number;
|
|
20
22
|
}
|
package/lib/models/path.model.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvcGF0aC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImxpYi9tb2RlbHMvcGF0aC5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZGVyLCBXaGVyZU9wdGlvbnMgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBJbmNsdWRlV2hlcmVNb2RlbCB9IGZyb20gXCIuL2luY2x1ZGUubW9kZWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXRoQ29uZmlnIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgd2hlcmU/OiBJbmNsdWRlV2hlcmVNb2RlbDtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc2VwYXJhdGU/OiBib29sZWFuO1xuICAgIHBhcmFub2lkPzogYm9vbGVhbjtcbiAgICBzdWJRdWVyeT86IGJvb2xlYW47XG4gICAgb3JkZXI/
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvcGF0aC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImxpYi9tb2RlbHMvcGF0aC5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZGVyLCBXaGVyZU9wdGlvbnMgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBJbmNsdWRlV2hlcmVNb2RlbCB9IGZyb20gXCIuL2luY2x1ZGUubW9kZWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXRoQ29uZmlnIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgd2hlcmU/OiBJbmNsdWRlV2hlcmVNb2RlbDtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc2VwYXJhdGU/OiBib29sZWFuO1xuICAgIHBhcmFub2lkPzogYm9vbGVhbjtcbiAgICBzdWJRdWVyeT86IGJvb2xlYW47XG4gICAgb3JkZXI/OiBPcmRlcjtcbiAgICBsaW1pdD86IG51bWJlcjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGhNb2RlbCB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIHdoZXJlPzogV2hlcmVPcHRpb25zO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzZXBhcmF0ZT86IGJvb2xlYW47XG4gICAgcGFyYW5vaWQ/OiBib29sZWFuO1xuICAgIHN1YlF1ZXJ5PzogYm9vbGVhbjtcbiAgICBvcmRlcj86IE9yZGVyO1xuICAgIGxpbWl0PzogbnVtYmVyO1xufVxuIl19
|
package/lib/models/user.model.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImxpYi9tb2RlbHMvdXNlci5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YUZpbHRlclVzZXJNb2RlbCB7XG4gICAgaWQ/
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImxpYi9tb2RlbHMvdXNlci5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YUZpbHRlclVzZXJNb2RlbCB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -46,6 +46,9 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
46
46
|
if (path.required) {
|
|
47
47
|
includes[0].required = true;
|
|
48
48
|
}
|
|
49
|
+
if (path.limit) {
|
|
50
|
+
includes[0].limit = path.limit;
|
|
51
|
+
}
|
|
49
52
|
includes[0].paranoid = !!path.paranoid;
|
|
50
53
|
includes[0].separate = !!path.separate;
|
|
51
54
|
includes[0].order = path.order;
|
|
@@ -61,7 +64,8 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
61
64
|
required: include.required,
|
|
62
65
|
separate: include.separate,
|
|
63
66
|
paranoid: include.paranoid,
|
|
64
|
-
subQuery: include.subQuery
|
|
67
|
+
subQuery: include.subQuery,
|
|
68
|
+
limit: include.limit
|
|
65
69
|
}, [], include.attributes, ignoreAttributes));
|
|
66
70
|
}
|
|
67
71
|
includes[0].include.push(...sequelize_utils_1.SequelizeUtils.reduceIncludes(addIncludes, ignoreAttributes));
|
|
@@ -188,4 +192,4 @@ SequelizeModelScanner = __decorate([
|
|
|
188
192
|
], SequelizeModelScanner);
|
|
189
193
|
exports.SequelizeModelScanner = SequelizeModelScanner;
|
|
190
194
|
|
|
191
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFDNUMsNERBQXFEO0FBQ3JELHlDQUFpRjtBQUNqRiwrREFBNEY7QUFLNUYsd0RBQXVEO0FBR2hELElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBQ3ZCLFdBQVcsQ0FDZCxLQUFtQixFQUNuQixJQUFlLEVBQ2Ysa0JBQWtDLEVBQ2xDLFVBQWlDLEVBQ2pDLGdCQUFnQixHQUFHLEtBQUs7O1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksMENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNsQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQVk7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELE9BQU8sRUFBRSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxLQUFLO2FBQ2xCLENB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Q0FBQyxTQUFTO2FBQ2hCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBZ0MsQ0FBQztnQkFDckQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUEyQixDQUFDO2FBQ3REO1NBQ0o7UUFFRCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFtQixFQUFFLEdBQVc7UUFDcEQsTUFBTSxZQUFZLEdBQUcsSUFBQSxzQ0FBZSxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztDQUNKLENBQUE7QUE1TlkscUJBQXFCO0lBRGpDLElBQUEsbUJBQVUsR0FBRTtHQUNBLHFCQUFxQixDQTROakM7QUE1Tlksc0RBQXFCIiwiZmlsZSI6ImxpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFR5cGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25lc3Rqcy1jb21tb25cIjtcbmltcG9ydCB7IEZpbmRBdHRyaWJ1dGVPcHRpb25zLCBJbmNsdWRlT3B0aW9ucywgbGl0ZXJhbCwgT3JkZXIgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBBc3NvY2lhdGlvbiwgQmFzZUFzc29jaWF0aW9uLCBnZXRBc3NvY2lhdGlvbnMsIE1vZGVsIH0gZnJvbSBcInNlcXVlbGl6ZS10eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBPcmRlck1vZGVsIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBJbmNsdWRlTW9kZWwgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IFBhdGhNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvcGF0aC5tb2RlbFwiO1xuaW1wb3J0IHsgU2VhcmNoQXR0cmlidXRlc01vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9zZWFyY2gtYXR0cmlidXRlcy5tb2RlbFwiO1xuaW1wb3J0IHsgTSwgU2VxdWVsaXplVXRpbHMgfSBmcm9tIFwiLi4vc2VxdWVsaXplLnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXF1ZWxpemVNb2RlbFNjYW5uZXIge1xuICAgIHB1YmxpYyBnZXRJbmNsdWRlcyhcbiAgICAgICAgbW9kZWw6IHR5cGVvZiBNb2RlbCxcbiAgICAgICAgcGF0aDogUGF0aE1vZGVsLFxuICAgICAgICBhZGRpdGlvbmFsSW5jbHVkZXM6IEluY2x1ZGVNb2RlbFtdLFxuICAgICAgICBhdHRyaWJ1dGVzPzogRmluZEF0dHJpYnV0ZU9wdGlvbnMsXG4gICAgICAgIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZVxuICAgICk6IEluY2x1ZGVPcHRpb25zW10ge1xuICAgICAgICBjb25zdCBvYmplY3RzID0gcGF0aD8ucGF0aD8uc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoIW9iamVjdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBJbmNsdWRlT3B0aW9uc1tdID0gW107XG4gICAgICAgIGxldCBpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXSA9IHJlc3VsdDtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCBvYmopO1xuICAgICAgICAgICAgaW5jbHVkZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgYXM6IGFzc29jaWF0aW9uLmdldEFzKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBpZ25vcmVBdHRyaWJ1dGVzID8gW10gOiB7IGluY2x1ZGU6IFtdIH0sXG4gICAgICAgICAgICAgICAgaW5jbHVkZTogW10sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGkrKyA8IG9iamVjdHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIG1vZGVsID0gaW5jbHVkZXNbMF0ubW9kZWwgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMgPSBpbmNsdWRlc1swXS5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0uYXR0cmlidXRlcyA9IGlnbm9yZUF0dHJpYnV0ZXMgPyBbXSA6IFNlcXVlbGl6ZVV0aWxzLm1lcmdlQXR0cmlidXRlcyhpbmNsdWRlc1swXS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC53aGVyZSkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ud2hlcmUgPSBTZXF1ZWxpemVVdGlscy5tZXJnZVdoZXJlKGluY2x1ZGVzWzBdLndoZXJlLCBwYXRoLndoZXJlKTtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnJlcXVpcmVkID0gISFwYXRoLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpbmNsdWRlc1swXS5wYXJhbm9pZCA9ICEhcGF0aC5wYXJhbm9pZDtcbiAgICAgICAgaW5jbHVkZXNbMF0uc2VwYXJhdGUgPSAhIXBhdGguc2VwYXJhdGU7XG4gICAgICAgIGluY2x1ZGVzWzBdLm9yZGVyID0gcGF0aC5vcmRlcjtcblxuICAgICAgICBpZiAoVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKHBhdGguc3ViUXVlcnkpKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5zdWJRdWVyeSA9IHBhdGguc3ViUXVlcnk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhZGRJbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgaW5jbHVkZSBvZiBhZGRpdGlvbmFsSW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGFkZEluY2x1ZGVzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXNbMF0ubW9kZWwgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGluY2x1ZGUucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmNsdWRlLm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmU6IGluY2x1ZGUud2hlcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogaW5jbHVkZS5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlOiBpbmNsdWRlLnNlcGFyYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW5vaWQ6IGluY2x1ZGUucGFyYW5vaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJRdWVyeTogaW5jbHVkZS5zdWJRdWVyeVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVBdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLmluY2x1ZGUucHVzaCguLi5TZXF1ZWxpemVVdGlscy5yZWR1Y2VJbmNsdWRlcyhhZGRJbmNsdWRlcywgaWdub3JlQXR0cmlidXRlcykpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dHJpYnV0ZXMoXG4gICAgICAgIG1vZGVsOiB0eXBlb2YgTW9kZWwsXG4gICAgICAgIHBhdGg6IFBhdGhNb2RlbCxcbiAgICAgICAgYWRkaXRpb25hbEluY2x1ZGVzOiBJbmNsdWRlTW9kZWxbXSxcbiAgICAgICAgYXR0cmlidXRlcz86IEZpbmRBdHRyaWJ1dGVPcHRpb25zXG4gICAgKTogU2VhcmNoQXR0cmlidXRlc01vZGVsW10ge1xuICAgICAgICBjb25zdCBvYmplY3RzID0gcGF0aC5wYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKCFvYmplY3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBTZWFyY2hBdHRyaWJ1dGVzTW9kZWxbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCBvYmopO1xuICAgICAgICAgICAgbW9kZWwgPSBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgfVxuICAgICAgICBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcyA/XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRNb2RlbFNlYXJjaGFibGVGaWVsZEF0dHJpYnV0ZXMobW9kZWwgYXMgdHlwZW9mIE0sIGF0dHJpYnV0ZXMgYXMgc3RyaW5nW10pIDpcbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE1vZGVsU2VhcmNoYWJsZUF0dHJpYnV0ZXMobW9kZWwgYXMgdHlwZW9mIE0pO1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIC4uLihhdHRyaWJ1dGVzIGFzIHN0cmluZ1tdKS5tYXAoYSA9PiAoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGEsXG4gICAgICAgICAgICAgICAga2V5OiBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShhLCBwYXRoLnBhdGgpLFxuICAgICAgICAgICAgICAgIGxpdGVyYWxLZXk6IFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShhLCBwYXRoLnBhdGgpLFxuICAgICAgICAgICAgICAgIGlzSnNvbjogU2VxdWVsaXplVXRpbHMuaXNDb2x1bW5Kc29uKG1vZGVsIGFzIHR5cGVvZiBNLCBhKVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGFkZGl0aW9uYWxJbmNsdWRlcykge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGUuaWdub3JlSW5TZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgICAgICBtb2RlbCBhcyB0eXBlb2YgTW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGluY2x1ZGUucGF0aFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5zZWFyY2hhYmxlQXR0cmlidXRlcyA/PyBpbmNsdWRlLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApLm1hcChhID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShhLm5hbWUsIFtwYXRoLnBhdGgsIGluY2x1ZGUucGF0aF0uam9pbihcIi5cIikpLFxuICAgICAgICAgICAgICAgICAgICBsaXRlcmFsS2V5OiBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoYS5uYW1lLCBbcGF0aC5wYXRoLCBpbmNsdWRlLnBhdGhdLmpvaW4oXCIuXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgaXNKc29uOiBhLmlzSnNvblxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yZGVyKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9yZGVyT2JqOiBPcmRlck1vZGVsKTogT3JkZXIge1xuICAgICAgICBpZiAoIW9yZGVyT2JqPy5jb2x1bW4gfHwgIW9yZGVyT2JqLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgdmFsdWUpO1xuICAgICAgICAgICAgbW9kZWwgPSBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2wgPSBTZXF1ZWxpemVVdGlscy5maW5kQ29sdW1uRmllbGROYW1lKG1vZGVsIGFzIHR5cGVvZiBNLCBjb2x1bW4pO1xuICAgICAgICBsZXQgbGl0ZXJhbE9yZGVyID0gdmFsdWVzLmxlbmd0aCA/XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoY29sLCB2YWx1ZXMpIDpcbiAgICAgICAgICAgIGBcXGAke21vZGVsLm5hbWV9XFxgLlxcYCR7Y29sfVxcYGA7XG4gICAgICAgIGlmIChvcmRlck9iai5udWxsTGFzdCAmJiBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiYXNjXCIpIHtcbiAgICAgICAgICAgIGxpdGVyYWxPcmRlciA9IGAtJHtsaXRlcmFsT3JkZXJ9YDtcbiAgICAgICAgICAgIG9yZGVyT2JqLmRpcmVjdGlvbiA9IFwiZGVzY1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiZGVzY1wiKSB7XG4gICAgICAgICAgICBsaXRlcmFsT3JkZXIgKz0gYCBERVNDYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGl0ZXJhbChsaXRlcmFsT3JkZXIpIGFzIE9yZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcm91cChtb2RlbDogdHlwZW9mIE1vZGVsLCBvcmRlck9iajogT3JkZXJNb2RlbCk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaiB8fCAhb3JkZXJPYmouY29sdW1uIHx8IG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXA6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIHZhbHVlKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgICAgICBncm91cC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0T3JkZXJGdWxsTmFtZShcImlkXCIsIGdyb3VwKSxcbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE9yZGVyRnVsbE5hbWUoU2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbCBhcyB0eXBlb2YgTSwgY29sdW1uKSwgZ3JvdXApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yZGVySW5jbHVkZXMobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBJbmNsdWRlT3B0aW9uc1tdIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaiB8fCAhb3JkZXJPYmouY29sdW1uIHx8IG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgbGV0IGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdID0gcmVzdWx0O1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICBpbmNsdWRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBhczogYXNzb2NpYXRpb24uZ2V0QXMoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgbW9kZWw6IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIGluY2x1ZGU6IFtdLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aHJvdWdoOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGlvbigpID09PSBBc3NvY2lhdGlvbi5CZWxvbmdzVG9NYW55ID8ge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXVxuICAgICAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaSsrIDwgdmFsdWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbCA9IGluY2x1ZGVzWzBdLm1vZGVsIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICAgICAgICAgIGluY2x1ZGVzID0gaW5jbHVkZXNbMF0uaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5jbHVkZXNbMF0uYXR0cmlidXRlcyA9IFtjb2x1bW5dO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFzc29jaWF0aW9uKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9iajogc3RyaW5nKTogQmFzZUFzc29jaWF0aW9uPGFueSwgYW55PiB7XG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGdldEFzc29jaWF0aW9ucyhtb2RlbC5wcm90b3R5cGUpO1xuXG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gYXNzb2NpYXRpb25zLmZpbmQoYSA9PiBhLmdldEFzKCkgPT09IG9iaik7XG4gICAgICAgIGlmICghYXNzb2NpYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgYXNzb2NpYXRpb24gZm9yICR7b2JqfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhc3NvY2lhdGlvbjtcbiAgICB9XG59XG4iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFDNUMsNERBQXFEO0FBQ3JELHlDQUFpRjtBQUNqRiwrREFBNEY7QUFLNUYsd0RBQXVEO0FBR2hELElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBQ3ZCLFdBQVcsQ0FDZCxLQUFtQixFQUNuQixJQUFlLEVBQ2Ysa0JBQWtDLEVBQ2xDLFVBQWlDLEVBQ2pDLGdCQUFnQixHQUFHLEtBQUs7O1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksMENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNsQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQVk7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELE9BQU8sRUFBRSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxLQUFLO2FBQ2xCLENB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WCxRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUUsV0FBVyxDQUFDLGNBQWMsRUFBRSxLQUFLLGtDQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDbEUsVUFBVSxFQUFFLEVBQUU7aUJBQ2pCLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDaEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDekIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFnQyxDQUFDO2dCQUNyRCxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQTJCLENBQUM7YUFDdEQ7U0FDSjtRQUVELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQW1CLEVBQUUsR0FBVztRQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFBLHNDQUFlLEVBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0NBQ0osQ0FBQTtBQWhPWSxxQkFBcUI7SUFEakMsSUFBQSxtQkFBVSxHQUFFO0dBQ0EscUJBQXFCLENBZ09qQztBQWhPWSxzREFBcUIiLCJmaWxlIjoibGliL3NjYW5uZXJzL3NlcXVlbGl6ZS1tb2RlbC5zY2FubmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgVHlwZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmVzdGpzLWNvbW1vblwiO1xuaW1wb3J0IHsgRmluZEF0dHJpYnV0ZU9wdGlvbnMsIEluY2x1ZGVPcHRpb25zLCBsaXRlcmFsLCBPcmRlciB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IEFzc29jaWF0aW9uLCBCYXNlQXNzb2NpYXRpb24sIGdldEFzc29jaWF0aW9ucywgTW9kZWwgfSBmcm9tIFwic2VxdWVsaXplLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IE9yZGVyTW9kZWwgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IEluY2x1ZGVNb2RlbCB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgUGF0aE1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9wYXRoLm1vZGVsXCI7XG5pbXBvcnQgeyBTZWFyY2hBdHRyaWJ1dGVzTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL3NlYXJjaC1hdHRyaWJ1dGVzLm1vZGVsXCI7XG5pbXBvcnQgeyBNLCBTZXF1ZWxpemVVdGlscyB9IGZyb20gXCIuLi9zZXF1ZWxpemUudXRpbHNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlcXVlbGl6ZU1vZGVsU2Nhbm5lciB7XG4gICAgcHVibGljIGdldEluY2x1ZGVzKFxuICAgICAgICBtb2RlbDogdHlwZW9mIE1vZGVsLFxuICAgICAgICBwYXRoOiBQYXRoTW9kZWwsXG4gICAgICAgIGFkZGl0aW9uYWxJbmNsdWRlczogSW5jbHVkZU1vZGVsW10sXG4gICAgICAgIGF0dHJpYnV0ZXM/OiBGaW5kQXR0cmlidXRlT3B0aW9ucyxcbiAgICAgICAgaWdub3JlQXR0cmlidXRlcyA9IGZhbHNlXG4gICAgKTogSW5jbHVkZU9wdGlvbnNbXSB7XG4gICAgICAgIGNvbnN0IG9iamVjdHMgPSBwYXRoPy5wYXRoPy5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghb2JqZWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQ6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgbGV0IGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdID0gcmVzdWx0O1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3Qgb2JqIG9mIG9iamVjdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIG9iaik7XG4gICAgICAgICAgICBpbmNsdWRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBhczogYXNzb2NpYXRpb24uZ2V0QXMoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgbW9kZWw6IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGlnbm9yZUF0dHJpYnV0ZXMgPyBbXSA6IHsgaW5jbHVkZTogW10gfSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBbXSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaSsrIDwgb2JqZWN0cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcyA9IGluY2x1ZGVzWzBdLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5hdHRyaWJ1dGVzID0gaWdub3JlQXR0cmlidXRlcyA/IFtdIDogU2VxdWVsaXplVXRpbHMubWVyZ2VBdHRyaWJ1dGVzKGluY2x1ZGVzWzBdLmF0dHJpYnV0ZXMsIGF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLndoZXJlKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS53aGVyZSA9IFNlcXVlbGl6ZVV0aWxzLm1lcmdlV2hlcmUoaW5jbHVkZXNbMF0ud2hlcmUsIHBhdGgud2hlcmUpO1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ucmVxdWlyZWQgPSAhIXBhdGgucmVxdWlyZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC5saW1pdCkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ubGltaXQgPSBwYXRoLmxpbWl0O1xuICAgICAgICB9XG5cbiAgICAgICAgaW5jbHVkZXNbMF0ucGFyYW5vaWQgPSAhIXBhdGgucGFyYW5vaWQ7XG4gICAgICAgIGluY2x1ZGVzWzBdLnNlcGFyYXRlID0gISFwYXRoLnNlcGFyYXRlO1xuICAgICAgICBpbmNsdWRlc1swXS5vcmRlciA9IHBhdGgub3JkZXI7XG5cbiAgICAgICAgaWYgKFR5cGVVdGlscy5pc05vdE51bGxPclVuZGVmaW5lZChwYXRoLnN1YlF1ZXJ5KSkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0uc3ViUXVlcnkgPSBwYXRoLnN1YlF1ZXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRkSW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW11bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgYWRkaXRpb25hbEluY2x1ZGVzKSB7XG4gICAgICAgICAgICBhZGRJbmNsdWRlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzWzBdLm1vZGVsIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbmNsdWRlLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5jbHVkZS5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlOiBpbmNsdWRlLndoZXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGluY2x1ZGUucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZTogaW5jbHVkZS5zZXBhcmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFub2lkOiBpbmNsdWRlLnBhcmFub2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViUXVlcnk6IGluY2x1ZGUuc3ViUXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDogaW5jbHVkZS5saW1pdFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVBdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLmluY2x1ZGUucHVzaCguLi5TZXF1ZWxpemVVdGlscy5yZWR1Y2VJbmNsdWRlcyhhZGRJbmNsdWRlcywgaWdub3JlQXR0cmlidXRlcykpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dHJpYnV0ZXMoXG4gICAgICAgIG1vZGVsOiB0eXBlb2YgTW9kZWwsXG4gICAgICAgIHBhdGg6IFBhdGhNb2RlbCxcbiAgICAgICAgYWRkaXRpb25hbEluY2x1ZGVzOiBJbmNsdWRlTW9kZWxbXSxcbiAgICAgICAgYXR0cmlidXRlcz86IEZpbmRBdHRyaWJ1dGVPcHRpb25zXG4gICAgKTogU2VhcmNoQXR0cmlidXRlc01vZGVsW10ge1xuICAgICAgICBjb25zdCBvYmplY3RzID0gcGF0aC5wYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKCFvYmplY3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBTZWFyY2hBdHRyaWJ1dGVzTW9kZWxbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCBvYmopO1xuICAgICAgICAgICAgbW9kZWwgPSBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgfVxuICAgICAgICBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcyA/XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRNb2RlbFNlYXJjaGFibGVGaWVsZEF0dHJpYnV0ZXMobW9kZWwgYXMgdHlwZW9mIE0sIGF0dHJpYnV0ZXMgYXMgc3RyaW5nW10pIDpcbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE1vZGVsU2VhcmNoYWJsZUF0dHJpYnV0ZXMobW9kZWwgYXMgdHlwZW9mIE0pO1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIC4uLihhdHRyaWJ1dGVzIGFzIHN0cmluZ1tdKS5tYXAoYSA9PiAoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGEsXG4gICAgICAgICAgICAgICAga2V5OiBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShhLCBwYXRoLnBhdGgpLFxuICAgICAgICAgICAgICAgIGxpdGVyYWxLZXk6IFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShhLCBwYXRoLnBhdGgpLFxuICAgICAgICAgICAgICAgIGlzSnNvbjogU2VxdWVsaXplVXRpbHMuaXNDb2x1bW5Kc29uKG1vZGVsIGFzIHR5cGVvZiBNLCBhKVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGFkZGl0aW9uYWxJbmNsdWRlcykge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGUuaWdub3JlSW5TZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgICAgICBtb2RlbCBhcyB0eXBlb2YgTW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGluY2x1ZGUucGF0aFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5zZWFyY2hhYmxlQXR0cmlidXRlcyA/PyBpbmNsdWRlLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApLm1hcChhID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShhLm5hbWUsIFtwYXRoLnBhdGgsIGluY2x1ZGUucGF0aF0uam9pbihcIi5cIikpLFxuICAgICAgICAgICAgICAgICAgICBsaXRlcmFsS2V5OiBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoYS5uYW1lLCBbcGF0aC5wYXRoLCBpbmNsdWRlLnBhdGhdLmpvaW4oXCIuXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgaXNKc29uOiBhLmlzSnNvblxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yZGVyKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9yZGVyT2JqOiBPcmRlck1vZGVsKTogT3JkZXIge1xuICAgICAgICBpZiAoIW9yZGVyT2JqPy5jb2x1bW4gfHwgIW9yZGVyT2JqLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgdmFsdWUpO1xuICAgICAgICAgICAgbW9kZWwgPSBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2wgPSBTZXF1ZWxpemVVdGlscy5maW5kQ29sdW1uRmllbGROYW1lKG1vZGVsIGFzIHR5cGVvZiBNLCBjb2x1bW4pO1xuICAgICAgICBsZXQgbGl0ZXJhbE9yZGVyID0gdmFsdWVzLmxlbmd0aCA/XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoY29sLCB2YWx1ZXMpIDpcbiAgICAgICAgICAgIGBcXGAke21vZGVsLm5hbWV9XFxgLlxcYCR7Y29sfVxcYGA7XG4gICAgICAgIGlmIChvcmRlck9iai5udWxsTGFzdCAmJiBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiYXNjXCIpIHtcbiAgICAgICAgICAgIGxpdGVyYWxPcmRlciA9IGAtJHtsaXRlcmFsT3JkZXJ9YDtcbiAgICAgICAgICAgIG9yZGVyT2JqLmRpcmVjdGlvbiA9IFwiZGVzY1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiZGVzY1wiKSB7XG4gICAgICAgICAgICBsaXRlcmFsT3JkZXIgKz0gYCBERVNDYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGl0ZXJhbChsaXRlcmFsT3JkZXIpIGFzIE9yZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcm91cChtb2RlbDogdHlwZW9mIE1vZGVsLCBvcmRlck9iajogT3JkZXJNb2RlbCk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaiB8fCAhb3JkZXJPYmouY29sdW1uIHx8IG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXA6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIHZhbHVlKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgICAgICBncm91cC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0T3JkZXJGdWxsTmFtZShcImlkXCIsIGdyb3VwKSxcbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE9yZGVyRnVsbE5hbWUoU2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbCBhcyB0eXBlb2YgTSwgY29sdW1uKSwgZ3JvdXApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yZGVySW5jbHVkZXMobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBJbmNsdWRlT3B0aW9uc1tdIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaiB8fCAhb3JkZXJPYmouY29sdW1uIHx8IG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgbGV0IGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdID0gcmVzdWx0O1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICBpbmNsdWRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBhczogYXNzb2NpYXRpb24uZ2V0QXMoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgbW9kZWw6IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIGluY2x1ZGU6IFtdLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aHJvdWdoOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGlvbigpID09PSBBc3NvY2lhdGlvbi5CZWxvbmdzVG9NYW55ID8ge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXVxuICAgICAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaSsrIDwgdmFsdWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbCA9IGluY2x1ZGVzWzBdLm1vZGVsIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICAgICAgICAgIGluY2x1ZGVzID0gaW5jbHVkZXNbMF0uaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5jbHVkZXNbMF0uYXR0cmlidXRlcyA9IFtjb2x1bW5dO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFzc29jaWF0aW9uKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9iajogc3RyaW5nKTogQmFzZUFzc29jaWF0aW9uPGFueSwgYW55PiB7XG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGdldEFzc29jaWF0aW9ucyhtb2RlbC5wcm90b3R5cGUpO1xuXG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gYXNzb2NpYXRpb25zLmZpbmQoYSA9PiBhLmdldEFzKCkgPT09IG9iaik7XG4gICAgICAgIGlmICghYXNzb2NpYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgYXNzb2NpYXRpb24gZm9yICR7b2JqfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhc3NvY2lhdGlvbjtcbiAgICB9XG59XG4iXX0=
|
package/lib/sequelize.utils.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export interface GeoPoint {
|
|
|
9
9
|
export declare class M extends Model {
|
|
10
10
|
}
|
|
11
11
|
export declare class SequelizeUtils {
|
|
12
|
-
static reduceIncludes(includes: IncludeOptions[]
|
|
13
|
-
static mergeIncludes(a?: IncludeOptions[], b?: IncludeOptions[], ignoreAttributes?: boolean): IncludeOptions[];
|
|
12
|
+
static reduceIncludes(includes: Array<IncludeOptions | IncludeOptions[]>, ignoreAttributes?: boolean): Includeable[];
|
|
13
|
+
static mergeIncludes(a?: IncludeOptions | IncludeOptions[], b?: IncludeOptions | IncludeOptions[], ignoreAttributes?: boolean): IncludeOptions[];
|
|
14
14
|
static mergeAttributes(a: FindAttributeOptions, b: FindAttributeOptions): FindAttributeOptions;
|
|
15
15
|
static ensureAttributesValidity(attribute: FindAttributeOptions): FindAttributeOptions;
|
|
16
16
|
static mergeWhere(a: WhereOptions, b: WhereOptions): WhereOptions;
|
package/lib/sequelize.utils.js
CHANGED
|
@@ -16,7 +16,13 @@ class SequelizeUtils {
|
|
|
16
16
|
return include;
|
|
17
17
|
}
|
|
18
18
|
static mergeIncludes(a = [], b = [], ignoreAttributes = false) {
|
|
19
|
-
var _a, _b, _c;
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
if (!Array.isArray(a)) {
|
|
21
|
+
a = [a];
|
|
22
|
+
}
|
|
23
|
+
if (!Array.isArray(b)) {
|
|
24
|
+
b = [b];
|
|
25
|
+
}
|
|
20
26
|
for (const bChild of b) {
|
|
21
27
|
const aChild = a.find(value => value.model === bChild.model && value.as === bChild.as);
|
|
22
28
|
if (aChild) {
|
|
@@ -38,9 +44,12 @@ class SequelizeUtils {
|
|
|
38
44
|
if (aChild.separate || bChild.separate) {
|
|
39
45
|
aChild.separate = true;
|
|
40
46
|
}
|
|
47
|
+
if (bChild.limit) {
|
|
48
|
+
(_c = aChild.limit) !== null && _c !== void 0 ? _c : (aChild.limit = bChild.limit);
|
|
49
|
+
}
|
|
41
50
|
aChild.paranoid = !(aChild.paranoid === false || bChild.paranoid === false);
|
|
42
51
|
if (nestjs_common_1.TypeUtils.isNotNullOrUndefined(aChild.subQuery) || nestjs_common_1.TypeUtils.isNotNullOrUndefined(bChild.subQuery)) {
|
|
43
|
-
aChild.subQuery = (
|
|
52
|
+
aChild.subQuery = (_d = aChild.subQuery) !== null && _d !== void 0 ? _d : bChild.subQuery;
|
|
44
53
|
}
|
|
45
54
|
}
|
|
46
55
|
else {
|
|
@@ -225,8 +234,7 @@ class SequelizeUtils {
|
|
|
225
234
|
return false;
|
|
226
235
|
}
|
|
227
236
|
return !["DATE", "DATEONLY", "VIRTUAL"].some(t => t === attr.type.key);
|
|
228
|
-
}).
|
|
229
|
-
map(x => {
|
|
237
|
+
}).map(x => {
|
|
230
238
|
const attr = attributes[x];
|
|
231
239
|
if (!attr) {
|
|
232
240
|
return x;
|
|
@@ -285,4 +293,4 @@ class SequelizeUtils {
|
|
|
285
293
|
}
|
|
286
294
|
exports.SequelizeUtils = SequelizeUtils;
|
|
287
295
|
|
|
288
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDO1FBQ0gsT0FBTyxNQUFBLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBZSxFQUFFLElBQVk7O1FBQ3BELE1BQU0sSUFBSSxHQUFHLE1BQUEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUNBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQzNHLE9BQU8sQ0FBQSxNQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxJQUFvQywwQ0FBRSxHQUFHLE1BQUssTUFBTSxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQWUsRUFBRSxLQUFhO1FBQ3hELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDNUMsQ0FBQztDQUNKO0FBOVVELHdDQThVQyIsImZpbGUiOiJsaWIvc2VxdWVsaXplLnV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyYXlVdGlscywgVHlwZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmVzdGpzLWNvbW1vblwiO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdERhdGFUeXBlQ29uc3RydWN0b3IsXG4gICAgRmluZEF0dHJpYnV0ZU9wdGlvbnMsXG4gICAgSW5jbHVkZWFibGUsXG4gICAgSW5jbHVkZU9wdGlvbnMsXG4gICAgT3AsXG4gICAgT3JkZXIsXG4gICAgT3JkZXJJdGVtLFxuICAgIFdoZXJlT3B0aW9uc1xufSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJzZXF1ZWxpemUtdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgUHJvamVjdGlvbkFsaWFzLCBXaGVyZUF0dHJpYnV0ZUhhc2hWYWx1ZSB9IGZyb20gXCJzZXF1ZWxpemUvdHlwZXMvbW9kZWxcIjtcbmltcG9ydCB7IFJ1bGVNb2RlbCB9IGZyb20gXCIuL2ZpbHRlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb1BvaW50IHtcbiAgICB0eXBlOiBcInBvaW50XCIsXG4gICAgY29vcmRpbmF0ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY2xhc3MgTSBleHRlbmRzIE1vZGVsIHt9XG5cbmV4cG9ydCBjbGFzcyBTZXF1ZWxpemVVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyByZWR1Y2VJbmNsdWRlcyhpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXVtdLCBpZ25vcmVBdHRyaWJ1dGVzID0gZmFsc2UpOiBJbmNsdWRlYWJsZVtdIHtcbiAgICAgICAgbGV0IGluY2x1ZGU6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluY2x1ZGVzKSB7XG4gICAgICAgICAgICBpbmNsdWRlID0gdGhpcy5tZXJnZUluY2x1ZGVzKGluY2x1ZGUsIGksIGlnbm9yZUF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluY2x1ZGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUluY2x1ZGVzKGE6IEluY2x1ZGVPcHRpb25zW10gPSBbXSwgYjogSW5jbHVkZU9wdGlvbnNbXSA9IFtdLCBpZ25vcmVBdHRyaWJ1dGVzID0gZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBiQ2hpbGQgb2YgYikge1xuICAgICAgICAgICAgY29uc3QgYUNoaWxkID0gYS5maW5kKHZhbHVlID0+IHZhbHVlLm1vZGVsID09PSBiQ2hpbGQubW9kZWwgJiYgdmFsdWUuYXMgPT09IGJDaGlsZC5hcyk7XG4gICAgICAgICAgICBpZiAoYUNoaWxkKSB7XG4gICAgICAgICAgICAgICAgYUNoaWxkLmluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIChhQ2hpbGQuaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdKSA/PyBbXSxcbiAgICAgICAgICAgICAgICAgICAgKGJDaGlsZC5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW10pID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVBdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoKGFDaGlsZC5hdHRyaWJ1dGVzIHx8IGJDaGlsZC5hdHRyaWJ1dGVzKSAmJiAhaWdub3JlQXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQuYXR0cmlidXRlcyA9IHRoaXMubWVyZ2VBdHRyaWJ1dGVzKGFDaGlsZC5hdHRyaWJ1dGVzLCBiQ2hpbGQuYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHdoZXJlID0gdGhpcy5tZXJnZVdoZXJlKGFDaGlsZC53aGVyZSwgYkNoaWxkLndoZXJlKTtcbiAgICAgICAgICAgICAgICBpZiAod2hlcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLndoZXJlID0gd2hlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID0gdGhpcy5tZXJnZU9yZGVyKGFDaGlsZC5vcmRlciwgYkNoaWxkLm9yZGVyKTtcbiAgICAgICAgICAgICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLm9yZGVyID0gb3JkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhQ2hpbGQucmVxdWlyZWQgfHwgYkNoaWxkLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhQ2hpbGQuc2VwYXJhdGUgfHwgYkNoaWxkLnNlcGFyYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5zZXBhcmF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFDaGlsZC5wYXJhbm9pZCA9ICEoYUNoaWxkLnBhcmFub2lkID09PSBmYWxzZSB8fCBiQ2hpbGQucGFyYW5vaWQgPT09IGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKGFDaGlsZC5zdWJRdWVyeSkgfHwgVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKGJDaGlsZC5zdWJRdWVyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnN1YlF1ZXJ5ID0gYUNoaWxkLnN1YlF1ZXJ5ID8/IGJDaGlsZC5zdWJRdWVyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGEucHVzaChiQ2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUF0dHJpYnV0ZXMoYTogRmluZEF0dHJpYnV0ZU9wdGlvbnMsIGI6IEZpbmRBdHRyaWJ1dGVPcHRpb25zKTogRmluZEF0dHJpYnV0ZU9wdGlvbnMge1xuICAgICAgICB0eXBlIEF0dHIgPSB7IGV4Y2x1ZGU/OiBzdHJpbmdbXTsgaW5jbHVkZT86IChzdHJpbmcgfCBQcm9qZWN0aW9uQWxpYXMpW107IH07XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBiIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYSwgLi4uYiwgXCJpZFwiXSwgeCA9PiB4KTtcbiAgICAgICAgfSBlbHNlIGlmIChhIHx8IGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFBdHRyaWJ1dGVzID0gKGEgPz8ge30pIGFzIEF0dHI7XG4gICAgICAgICAgICBjb25zdCBiQXR0cmlidXRlcyA9IChiID8/IHt9KSBhcyBBdHRyO1xuXG4gICAgICAgICAgICBpZiAoYUF0dHJpYnV0ZXMuaW5jbHVkZSAmJiAhYikge1xuICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYkF0dHJpYnV0ZXMuaW5jbHVkZSAmJiAhYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYkF0dHIgPSAoYiA/PyB7fSkgYXMgQXR0cjtcbiAgICAgICAgICAgICAgICBpZiAoYkF0dHIuaW5jbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYSwgLi4uYkF0dHIuaW5jbHVkZSwgXCJpZFwiXSwgeCA9PiB4KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYiA/IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKFsuLi5hLCBcImlkXCJdLCB4ID0+IHgpIDogYjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGIgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFBdHRyID0gKGEgPz8ge30pIGFzIEF0dHI7XG4gICAgICAgICAgICAgICAgaWYgKGFBdHRyLmluY2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmIsIC4uLmFBdHRyLmluY2x1ZGUsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYiwgXCJpZFwiXSwgeCA9PiB4KSA6IGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogQXR0ciA9IHt9O1xuICAgICAgICAgICAgaWYgKGFBdHRyaWJ1dGVzLmluY2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmNsdWRlID0gWy4uLmFBdHRyaWJ1dGVzLmluY2x1ZGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJBdHRyaWJ1dGVzLmluY2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmNsdWRlID0gWy4uLihyZXN1bHQuaW5jbHVkZSA/PyBbXSksIC4uLmJBdHRyaWJ1dGVzLmluY2x1ZGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYUF0dHJpYnV0ZXMuZXhjbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBbLi4uYUF0dHJpYnV0ZXMuZXhjbHVkZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYkF0dHJpYnV0ZXMuZXhjbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBbLi4uKHJlc3VsdC5leGNsdWRlID8/IFtdKSwgLi4uYkF0dHJpYnV0ZXMuZXhjbHVkZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQuaW5jbHVkZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmNsdWRlID0gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMocmVzdWx0LmluY2x1ZGUsIHggPT4geCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdWx0LmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZXhjbHVkZSA9IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKHJlc3VsdC5leGNsdWRlLCB4ID0+IHgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pbmNsdWRlICYmICFyZXN1bHQuZXhjbHVkZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgRmluZEF0dHJpYnV0ZU9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGVuc3VyZUF0dHJpYnV0ZXNWYWxpZGl0eShhdHRyaWJ1dGU6IEZpbmRBdHRyaWJ1dGVPcHRpb25zKTogRmluZEF0dHJpYnV0ZU9wdGlvbnMge1xuICAgICAgICBpZiAoYXR0cmlidXRlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuZmluZCgoeCkgPT4geCA9PT0gXCJpZFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlLmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZXhjbHVkZTogYXR0cmlidXRlLmV4Y2x1ZGUuZmlsdGVyKCh4KSA9PiB4ICE9PSBcImlkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2VXaGVyZShhOiBXaGVyZU9wdGlvbnMsIGI6IFdoZXJlT3B0aW9ucyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGlmICghYSAmJiAhYikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYSA/PyB7fSwgYiA/PyB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZU9yZGVyKGE6IE9yZGVyLCBiOiBPcmRlcik6IE9yZGVyIHtcbiAgICAgICAgaWYgKCFhICYmICFiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYSAmJiAhYikge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhICYmIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzOiBPcmRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXMucHVzaCguLi5hKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKC4uLmIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlV2hlcmVWYWx1ZShydWxlOiBSdWxlTW9kZWwpOiBXaGVyZUF0dHJpYnV0ZUhhc2hWYWx1ZTxhbnk+IHtcbiAgICAgICAgc3dpdGNoIChydWxlLm9wZXJhdGlvbikge1xuICAgICAgICAgICAgY2FzZSBcImVxdWFsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUudmFsdWUgYXMgYW55O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2VxdWFsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5lXTogcnVsZS52YWx1ZSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuaW5dOiBydWxlLnZhbHVlIGFzIGFueVtdIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90SW5dOiBydWxlLnZhbHVlIGFzIGFueVtdIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJsZXNzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmx0XTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwibGVzc19vcl9lcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5sdGVdOiBydWxlLnZhbHVlIGFzIGFueX07XG5cbiAgICAgICAgICAgIGNhc2UgXCJncmVhdGVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmd0XTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiZ3JlYXRlcl9vcl9lcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ndGVdOiBydWxlLnZhbHVlIGFzIGFueX07XG5cbiAgICAgICAgICAgIGNhc2UgXCJiZXR3ZWVuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmJldHdlZW5dOiBydWxlLnZhbHVlIGFzIGFueSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2JldHdlZW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90QmV0d2Vlbl06IHJ1bGUudmFsdWUgYXMgYW55IH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJpc19udWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmVxXTogbnVsbCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiaXNfbm90X251bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubmVdOiBudWxsIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJiZWdpbnNfd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5saWtlXTogYCR7cnVsZS52YWx1ZX0lYCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2JlZ2luc193aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdExpa2VdOiBgJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5saWtlXTogYCUke3J1bGUudmFsdWV9JWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9jb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ub3RMaWtlXTogYCUke3J1bGUudmFsdWV9JWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcImVuZHNfd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5saWtlXTogYCUke3J1bGUudmFsdWV9YCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2VuZHNfd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ub3RMaWtlXTogYCUke3J1bGUudmFsdWV9YCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiaXNfZW1wdHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcblxuICAgICAgICAgICAgY2FzZSBcImlzX25vdF9lbXB0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5uZV06IFwiXCIgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXR0cmlidXRlRnVsbE5hbWUoYXR0cmlidXRlOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gYCQke3BhdGh9LiR7YXR0cmlidXRlfSRgO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TGl0ZXJhbEZ1bGxOYW1lKGF0dHJpYnV0ZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYFxcYCR7cGF0aC5qb2luKFwiLT5cIil9XFxgLlxcYCR7YXR0cmlidXRlfVxcYGA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRPcmRlckZ1bGxOYW1lKGF0dHJpYnV0ZTogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gYCR7cGF0aC5qb2luKFwiLT5cIil9LiR7YXR0cmlidXRlfWA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbFNlYXJjaGFibGVBdHRyaWJ1dGVzKG1vZGVsOiB0eXBlb2YgTSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG1vZGVsLnJhd0F0dHJpYnV0ZXMpLmZpbHRlcihcbiAgICAgICAgICAgIGEgPT4gIVtcIkRBVEVcIiwgXCJEQVRFT05MWVwiLCBcIlZJUlRVQUxcIl0uc29tZSh0ID0+IHQgPT09IChtb2RlbC5yYXdBdHRyaWJ1dGVzW2FdLnR5cGUgYXMgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yKS5rZXkpXG4gICAgICAgICkubWFwKHggPT4ge1xuICAgICAgICAgICAgY29uc3QgYXR0ciA9IG1vZGVsLnJhd0F0dHJpYnV0ZXNbeF07XG4gICAgICAgICAgICBpZiAoIWF0dHIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhdHRyLmZpZWxkID8gYXR0ci5maWVsZCA6IHg7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxTZWFyY2hhYmxlRmllbGRBdHRyaWJ1dGVzKG1vZGVsOiB0eXBlb2YgTSwgZmllbGRzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG1vZGVsLnJhd0F0dHJpYnV0ZXM7XG4gICAgICAgIHJldHVybiBmaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHJpYnV0ZXNbeF07XG4gICAgICAgICAgICAgICAgaWYgKCFhdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gIVtcIkRBVEVcIiwgXCJEQVRFT05MWVwiLCBcIlZJUlRVQUxcIl0uc29tZSh0ID0+IHQgPT09IChhdHRyLnR5cGUgYXMgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yKS5rZXkpO1xuICAgICAgICAgICAgfSkuXG4gICAgICAgICAgICBtYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHJpYnV0ZXNbeF07XG4gICAgICAgICAgICAgICAgaWYgKCFhdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyLmZpZWxkID8gYXR0ci5maWVsZCA6IHg7XG4gICAgICAgICAgICB9KVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVkdWNlTW9kZWxGcm9tUGF0aChtb2RlbDogTSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gcGF0aC5zcGxpdChcIi5cIik7XG5cbiAgICAgICAgbGV0IHN0ZXAgPSBzdGVwcy5zaGlmdCgpO1xuICAgICAgICB3aGlsZSAoc3RlcCkge1xuICAgICAgICAgICAgaWYgKG1vZGVsW3N0ZXBdIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWxbc3RlcF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChtb2RlbFtzdGVwXSBhcyBBcnJheTxhbnk+KVxuICAgICAgICAgICAgICAgICAgICAubWFwKHggPT4gdGhpcy5yZWR1Y2VNb2RlbEZyb21QYXRoKHgsIHN0ZXBzLmpvaW4oXCIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYWxsLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbGwsIC4uLmN1cnJlbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbGwsIGN1cnJlbnRdO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1vZGVsID0gbW9kZWxbc3RlcF07XG4gICAgICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RlcCA9IHN0ZXBzLnNoaWZ0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kQ29sdW1uRmllbGROYW1lKG1vZGVsOiB0eXBlb2YgTSwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBPYmplY3Qua2V5cyhtb2RlbC5yYXdBdHRyaWJ1dGVzKS5maW5kKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG1vZGVsLnJhd0F0dHJpYnV0ZXNba2V5XS5maWVsZCA9PT0gbmFtZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtb2RlbC5yYXdBdHRyaWJ1dGVzW2ZpZWxkXS5maWVsZCA/PyBuYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNDb2x1bW5Kc29uKG1vZGVsOiB0eXBlb2YgTSwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzW25hbWVdID8/IE9iamVjdC52YWx1ZXMobW9kZWwucmF3QXR0cmlidXRlcykuZmluZCgoeCkgPT4geC5maWVsZCA9PT0gbmFtZSk7XG4gICAgICAgIHJldHVybiAoYXR0cj8udHlwZSBhcyBBYnN0cmFjdERhdGFUeXBlQ29uc3RydWN0b3IpPy5rZXkgPT09IFwiSlNPTlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0R3JvdXBMaXRlcmFsKG1vZGVsOiB0eXBlb2YgTSwgZ3JvdXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gZ3JvdXAuc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGNvbHVtbiwgaXRlbXMuc2xpY2UoMCwgaXRlbXMubGVuZ3RoIC0gMSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBcXGAke21vZGVsLm5hbWV9XFxgLlxcYCR7Z3JvdXB9XFxgYDtcbiAgICB9XG59XG4iXX0=
|
|
296
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zZXF1ZWxpemUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWlFO0FBQ2pFLHlDQVNtQjtBQUNuQiwrREFBNkM7QUFTN0MsTUFBYSxDQUFFLFNBQVEsNEJBQUs7Q0FBRztBQUEvQixjQUErQjtBQUUvQixNQUFhLGNBQWM7SUFDaEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFrRCxFQUFFLGdCQUFnQixHQUFHLEtBQUs7UUFDckcsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUF1QyxFQUFFLEVBQUUsSUFBdUMsRUFBRSxFQUFFLGdCQUFnQixHQUFHLEtBQUs7O1FBQ3RJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDcEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RixJQUFJLE1BQU0sRUFBRTtnQkFDUixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQy9CLE1BQUMsTUFBTSxDQUFDLE9BQTRCLG1DQUFJLEVBQUUsRUFDMUMsTUFBQyxNQUFNLENBQUMsT0FBNEIsbUNBQUksRUFBRSxFQUMxQyxnQkFBZ0IsQ0FDbkIsQ0FBQztnQkFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDL0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNsRjtnQkFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLEtBQUssRUFBRTtvQkFDUCxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7Z0JBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7aUJBQ3hCO2dCQUNELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNwQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDMUI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQ3BDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2lCQUMxQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsTUFBQSxNQUFNLENBQUMsS0FBSyxvQ0FBWixNQUFNLENBQUMsS0FBSyxHQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUM7aUJBQ2pDO2dCQUNELE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQzVFLElBQUkseUJBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUkseUJBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3BHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBQSxNQUFNLENBQUMsUUFBUSxtQ0FBSSxNQUFNLENBQUMsUUFBUSxDQUFDO2lCQUN4RDthQUNKO2lCQUFNO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEI7U0FDSjtRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBdUIsRUFBRSxDQUF1Qjs7UUFHMUUsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUU7WUFDMUMsT0FBTywwQkFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUQ7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDZixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLEVBQUUsQ0FBUyxDQUFDO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksRUFBRSxDQUFTLENBQUM7WUFFdEMsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUMzQixPQUFPLENBQUMsQ0FBQzthQUNaO1lBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUMzQixPQUFPLENBQUMsQ0FBQzthQUNaO1lBRUQsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO2dCQUNwQixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLEVBQUUsQ0FBUyxDQUFDO2dCQUNoQyxJQUFJLE1BQUEsS0FBSyxDQUFDLE9BQU8sMENBQUUsTUFBTSxFQUFFO29CQUN2QixPQUFPLDBCQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFFO2dCQUVELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoRTtZQUVELElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDcEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxFQUFFLENBQVMsQ0FBQztnQkFDaEMsSUFBSSxNQUFBLEtBQUssQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtvQkFDdkIsT0FBTywwQkFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxRTtnQkFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEU7WUFFRCxNQUFNLE1BQU0sR0FBUyxFQUFFLENBQUM7WUFDeEIsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFBLE1BQU0sQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFBLE1BQU0sQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNoQixNQUFNLENBQUMsT0FBTyxHQUFHLDBCQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwRTtZQUNELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsTUFBTSxDQUFDLE9BQU8sR0FBRywwQkFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEU7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BDLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO1lBRUQsT0FBTyxNQUE4QixDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxTQUErQjtRQUNsRSxJQUFJLFNBQVMsWUFBWSxLQUFLLEVBQUU7WUFDNUIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTztnQkFDSCxJQUFJO2dCQUNKLEdBQUcsU0FBUzthQUNmLENBQUM7U0FDTDtRQUVELElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNuQixPQUFPO2dCQUNILE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQzthQUN2RCxDQUFDO1NBQ0w7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFlLEVBQUUsQ0FBZTtRQUNyRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxFQUFFLEVBQUUsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBUSxFQUFFLENBQVE7UUFDdkMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCxNQUFNLEdBQUcsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZjtRQUNELElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFlO1FBQzVDLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNwQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxJQUFJLENBQUMsS0FBWSxDQUFDO1lBRTdCLEtBQUssV0FBVztnQkFDWixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLEtBQUssSUFBSTtnQkFDTCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQWMsRUFBRSxDQUFDO1lBRTVDLEtBQUssUUFBUTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQWMsRUFBRSxDQUFDO1lBRS9DLEtBQUssTUFBTTtnQkFDUCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQVksRUFBRSxDQUFDO1lBRTFDLEtBQUssZUFBZTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUUzQyxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUUxQyxLQUFLLGtCQUFrQjtnQkFDbkIsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUUzQyxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUUvQyxLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUVsRCxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1lBRTdCLEtBQUssYUFBYTtnQkFDZCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFN0IsS0FBSyxhQUFhO2dCQUNkLE9BQU8sRUFBRSxDQUFDLGNBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRTNDLEtBQUssaUJBQWlCO2dCQUNsQixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUU5QyxLQUFLLFVBQVU7Z0JBQ1gsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFFNUMsS0FBSyxjQUFjO2dCQUNmLE9BQU8sRUFBRSxDQUFDLGNBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRS9DLEtBQUssV0FBVztnQkFDWixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUUzQyxLQUFLLGVBQWU7Z0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGNBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBRTlDLEtBQUssVUFBVTtnQkFDWCxPQUFPLEVBQUUsQ0FBQztZQUVkLEtBQUssY0FBYztnQkFDZixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFNBQWlCLEVBQUUsSUFBWTtRQUM5RCxPQUFPLElBQUksSUFBSSxJQUFJLFNBQVMsR0FBRyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxJQUF1QjtRQUN2RSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLFNBQVMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxJQUFjO1FBQzVELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsS0FBZTtRQUN0RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFvQyxDQUFDLEdBQUcsQ0FBQyxDQUMxSCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxPQUFPLENBQUMsQ0FBQzthQUNaO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGlDQUFpQyxDQUFDLEtBQWUsRUFBRSxNQUFnQjtRQUM3RSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE9BQU8sTUFBTTthQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNSLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQU0sSUFBSSxDQUFDLElBQW9DLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1AsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFRLEVBQUUsSUFBWTtRQUNwRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksRUFBRTtZQUNULElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3RCO2dCQUVELE9BQVEsS0FBSyxDQUFDLElBQUksQ0FBZ0I7cUJBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUN0RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQ3JCLElBQUksT0FBTyxZQUFZLEtBQUssRUFBRTt3QkFDMUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7cUJBQy9CO29CQUNELE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDN0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ2Q7WUFFRCxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsT0FBTyxTQUFTLENBQUM7YUFDcEI7WUFFRCxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFlLEVBQUUsSUFBWTs7UUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBQSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssbUNBQUksSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWUsRUFBRSxJQUFZOztRQUNwRCxNQUFNLElBQUksR0FBRyxNQUFBLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG1DQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztRQUMzRyxPQUFPLENBQUEsTUFBQyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBb0MsMENBQUUsR0FBRyxNQUFLLE1BQU0sQ0FBQztJQUN2RSxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFlLEVBQUUsS0FBYTtRQUN4RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsT0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RjtRQUVELE9BQU8sS0FBSyxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXhWRCx3Q0F3VkMiLCJmaWxlIjoibGliL3NlcXVlbGl6ZS51dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycmF5VXRpbHMsIFR5cGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25lc3Rqcy1jb21tb25cIjtcbmltcG9ydCB7XG4gICAgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yLFxuICAgIEZpbmRBdHRyaWJ1dGVPcHRpb25zLFxuICAgIEluY2x1ZGVhYmxlLFxuICAgIEluY2x1ZGVPcHRpb25zLFxuICAgIE9wLFxuICAgIE9yZGVyLFxuICAgIE9yZGVySXRlbSxcbiAgICBXaGVyZU9wdGlvbnNcbn0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwic2VxdWVsaXplLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IFByb2plY3Rpb25BbGlhcywgV2hlcmVBdHRyaWJ1dGVIYXNoVmFsdWUgfSBmcm9tIFwic2VxdWVsaXplL3R5cGVzL21vZGVsXCI7XG5pbXBvcnQgeyBSdWxlTW9kZWwgfSBmcm9tIFwiLi9maWx0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZW9Qb2ludCB7XG4gICAgdHlwZTogXCJwb2ludFwiLFxuICAgIGNvb3JkaW5hdGVzOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIE0gZXh0ZW5kcyBNb2RlbCB7fVxuXG5leHBvcnQgY2xhc3MgU2VxdWVsaXplVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVkdWNlSW5jbHVkZXMoaW5jbHVkZXM6IEFycmF5PEluY2x1ZGVPcHRpb25zIHwgSW5jbHVkZU9wdGlvbnNbXT4sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSk6IEluY2x1ZGVhYmxlW10ge1xuICAgICAgICBsZXQgaW5jbHVkZTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoaW5jbHVkZSwgaSwgaWdub3JlQXR0cmlidXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jbHVkZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlSW5jbHVkZXMoYTogSW5jbHVkZU9wdGlvbnMgfCBJbmNsdWRlT3B0aW9uc1tdID0gW10sIGI6IEluY2x1ZGVPcHRpb25zIHwgSW5jbHVkZU9wdGlvbnNbXSA9IFtdLCBpZ25vcmVBdHRyaWJ1dGVzID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICAgICAgICBhID0gW2FdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgICAgICBiID0gW2JdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBiQ2hpbGQgb2YgYikge1xuICAgICAgICAgICAgY29uc3QgYUNoaWxkID0gYS5maW5kKHZhbHVlID0+IHZhbHVlLm1vZGVsID09PSBiQ2hpbGQubW9kZWwgJiYgdmFsdWUuYXMgPT09IGJDaGlsZC5hcyk7XG4gICAgICAgICAgICBpZiAoYUNoaWxkKSB7XG4gICAgICAgICAgICAgICAgYUNoaWxkLmluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIChhQ2hpbGQuaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdKSA/PyBbXSxcbiAgICAgICAgICAgICAgICAgICAgKGJDaGlsZC5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW10pID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVBdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoKGFDaGlsZC5hdHRyaWJ1dGVzIHx8IGJDaGlsZC5hdHRyaWJ1dGVzKSAmJiAhaWdub3JlQXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQuYXR0cmlidXRlcyA9IHRoaXMubWVyZ2VBdHRyaWJ1dGVzKGFDaGlsZC5hdHRyaWJ1dGVzLCBiQ2hpbGQuYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHdoZXJlID0gdGhpcy5tZXJnZVdoZXJlKGFDaGlsZC53aGVyZSwgYkNoaWxkLndoZXJlKTtcbiAgICAgICAgICAgICAgICBpZiAod2hlcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLndoZXJlID0gd2hlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID0gdGhpcy5tZXJnZU9yZGVyKGFDaGlsZC5vcmRlciwgYkNoaWxkLm9yZGVyKTtcbiAgICAgICAgICAgICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLm9yZGVyID0gb3JkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhQ2hpbGQucmVxdWlyZWQgfHwgYkNoaWxkLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhQ2hpbGQuc2VwYXJhdGUgfHwgYkNoaWxkLnNlcGFyYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5zZXBhcmF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChiQ2hpbGQubGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLmxpbWl0ID8/PSBiQ2hpbGQubGltaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFDaGlsZC5wYXJhbm9pZCA9ICEoYUNoaWxkLnBhcmFub2lkID09PSBmYWxzZSB8fCBiQ2hpbGQucGFyYW5vaWQgPT09IGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKGFDaGlsZC5zdWJRdWVyeSkgfHwgVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKGJDaGlsZC5zdWJRdWVyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnN1YlF1ZXJ5ID0gYUNoaWxkLnN1YlF1ZXJ5ID8/IGJDaGlsZC5zdWJRdWVyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGEucHVzaChiQ2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUF0dHJpYnV0ZXMoYTogRmluZEF0dHJpYnV0ZU9wdGlvbnMsIGI6IEZpbmRBdHRyaWJ1dGVPcHRpb25zKTogRmluZEF0dHJpYnV0ZU9wdGlvbnMge1xuICAgICAgICB0eXBlIEF0dHIgPSB7IGV4Y2x1ZGU/OiBzdHJpbmdbXTsgaW5jbHVkZT86IChzdHJpbmcgfCBQcm9qZWN0aW9uQWxpYXMpW107IH07XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBiIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYSwgLi4uYiwgXCJpZFwiXSwgeCA9PiB4KTtcbiAgICAgICAgfSBlbHNlIGlmIChhIHx8IGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFBdHRyaWJ1dGVzID0gKGEgPz8ge30pIGFzIEF0dHI7XG4gICAgICAgICAgICBjb25zdCBiQXR0cmlidXRlcyA9IChiID8/IHt9KSBhcyBBdHRyO1xuXG4gICAgICAgICAgICBpZiAoYUF0dHJpYnV0ZXMuaW5jbHVkZSAmJiAhYikge1xuICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYkF0dHJpYnV0ZXMuaW5jbHVkZSAmJiAhYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYkF0dHIgPSAoYiA/PyB7fSkgYXMgQXR0cjtcbiAgICAgICAgICAgICAgICBpZiAoYkF0dHIuaW5jbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYSwgLi4uYkF0dHIuaW5jbHVkZSwgXCJpZFwiXSwgeCA9PiB4KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYiA/IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKFsuLi5hLCBcImlkXCJdLCB4ID0+IHgpIDogYjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGIgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFBdHRyID0gKGEgPz8ge30pIGFzIEF0dHI7XG4gICAgICAgICAgICAgICAgaWYgKGFBdHRyLmluY2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmIsIC4uLmFBdHRyLmluY2x1ZGUsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYiwgXCJpZFwiXSwgeCA9PiB4KSA6IGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogQXR0ciA9IHt9O1xuICAgICAgICAgICAgaWYgKGFBdHRyaWJ1dGVzLmluY2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmNsdWRlID0gWy4uLmFBdHRyaWJ1dGVzLmluY2x1ZGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJBdHRyaWJ1dGVzLmluY2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmNsdWRlID0gWy4uLihyZXN1bHQuaW5jbHVkZSA/PyBbXSksIC4uLmJBdHRyaWJ1dGVzLmluY2x1ZGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYUF0dHJpYnV0ZXMuZXhjbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBbLi4uYUF0dHJpYnV0ZXMuZXhjbHVkZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYkF0dHJpYnV0ZXMuZXhjbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBbLi4uKHJlc3VsdC5leGNsdWRlID8/IFtdKSwgLi4uYkF0dHJpYnV0ZXMuZXhjbHVkZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQuaW5jbHVkZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmNsdWRlID0gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMocmVzdWx0LmluY2x1ZGUsIHggPT4geCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdWx0LmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZXhjbHVkZSA9IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKHJlc3VsdC5leGNsdWRlLCB4ID0+IHgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pbmNsdWRlICYmICFyZXN1bHQuZXhjbHVkZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgRmluZEF0dHJpYnV0ZU9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGVuc3VyZUF0dHJpYnV0ZXNWYWxpZGl0eShhdHRyaWJ1dGU6IEZpbmRBdHRyaWJ1dGVPcHRpb25zKTogRmluZEF0dHJpYnV0ZU9wdGlvbnMge1xuICAgICAgICBpZiAoYXR0cmlidXRlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuZmluZCgoeCkgPT4geCA9PT0gXCJpZFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlLmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZXhjbHVkZTogYXR0cmlidXRlLmV4Y2x1ZGUuZmlsdGVyKCh4KSA9PiB4ICE9PSBcImlkXCIpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlV2hlcmUoYTogV2hlcmVPcHRpb25zLCBiOiBXaGVyZU9wdGlvbnMpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIWEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGEgPz8ge30sIGIgPz8ge30pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2VPcmRlcihhOiBPcmRlciwgYjogT3JkZXIpOiBPcmRlciB7XG4gICAgICAgIGlmICghYSAmJiAhYikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYSAmJiBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlczogT3JkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVzLnB1c2goLi4uYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaChhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXMucHVzaCguLi5iKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVdoZXJlVmFsdWUocnVsZTogUnVsZU1vZGVsKTogV2hlcmVBdHRyaWJ1dGVIYXNoVmFsdWU8YW55PiB7XG4gICAgICAgIHN3aXRjaCAocnVsZS5vcGVyYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgXCJlcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLnZhbHVlIGFzIGFueTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5uZV06IHJ1bGUudmFsdWUgfTtcblxuICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2luXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibGVzc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5sdF06IHJ1bGUudmFsdWUgYXMgYW55IH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJsZXNzX29yX2VxdWFsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmx0ZV06IHJ1bGUudmFsdWUgYXMgYW55IH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJncmVhdGVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmd0XTogcnVsZS52YWx1ZSBhcyBhbnkgfTtcblxuICAgICAgICAgICAgY2FzZSBcImdyZWF0ZXJfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuZ3RlXTogcnVsZS52YWx1ZSBhcyBhbnkgfTtcblxuICAgICAgICAgICAgY2FzZSBcImJldHdlZW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuYmV0d2Vlbl06IHJ1bGUudmFsdWUgYXMgYW55IH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfYmV0d2VlblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ub3RCZXR3ZWVuXTogcnVsZS52YWx1ZSBhcyBhbnkgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX251bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuZXFdOiBudWxsIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJpc19ub3RfbnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5uZV06IG51bGwgfTtcblxuICAgICAgICAgICAgY2FzZSBcImJlZ2luc193aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmxpa2VdOiBgJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfYmVnaW5zX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAke3J1bGUudmFsdWV9JWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcImNvbnRhaW5zXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmxpa2VdOiBgJSR7cnVsZS52YWx1ZX0lYCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2NvbnRhaW5zXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdExpa2VdOiBgJSR7cnVsZS52YWx1ZX0lYCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiZW5kc193aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmxpa2VdOiBgJSR7cnVsZS52YWx1ZX1gIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfZW5kc193aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdExpa2VdOiBgJSR7cnVsZS52YWx1ZX1gIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJpc19lbXB0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuXG4gICAgICAgICAgICBjYXNlIFwiaXNfbm90X2VtcHR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5lXTogXCJcIiB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBdHRyaWJ1dGVGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBgJCR7cGF0aH0uJHthdHRyaWJ1dGV9JGA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRMaXRlcmFsRnVsbE5hbWUoYXR0cmlidXRlOiBzdHJpbmcsIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgXFxgJHtwYXRoLmpvaW4oXCItPlwiKX1cXGAuXFxgJHthdHRyaWJ1dGV9XFxgYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE9yZGVyRnVsbE5hbWUoYXR0cmlidXRlOiBzdHJpbmcsIHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiBgJHtwYXRoLmpvaW4oXCItPlwiKX0uJHthdHRyaWJ1dGV9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsU2VhcmNoYWJsZUF0dHJpYnV0ZXMobW9kZWw6IHR5cGVvZiBNKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMobW9kZWwucmF3QXR0cmlidXRlcykuZmlsdGVyKFxuICAgICAgICAgICAgYSA9PiAhW1wiREFURVwiLCBcIkRBVEVPTkxZXCIsIFwiVklSVFVBTFwiXS5zb21lKHQgPT4gdCA9PT0gKG1vZGVsLnJhd0F0dHJpYnV0ZXNbYV0udHlwZSBhcyBBYnN0cmFjdERhdGFUeXBlQ29uc3RydWN0b3IpLmtleSlcbiAgICAgICAgKS5tYXAoeCA9PiB7XG4gICAgICAgICAgICBjb25zdCBhdHRyID0gbW9kZWwucmF3QXR0cmlidXRlc1t4XTtcbiAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGF0dHIuZmllbGQgPyBhdHRyLmZpZWxkIDogeDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbFNlYXJjaGFibGVGaWVsZEF0dHJpYnV0ZXMobW9kZWw6IHR5cGVvZiBNLCBmaWVsZHM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9kZWwucmF3QXR0cmlidXRlcztcbiAgICAgICAgcmV0dXJuIGZpZWxkc1xuICAgICAgICAgICAgLmZpbHRlcih4ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cmlidXRlc1t4XTtcbiAgICAgICAgICAgICAgICBpZiAoIWF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAhW1wiREFURVwiLCBcIkRBVEVPTkxZXCIsIFwiVklSVFVBTFwiXS5zb21lKHQgPT4gdCA9PT0gKGF0dHIudHlwZSBhcyBBYnN0cmFjdERhdGFUeXBlQ29uc3RydWN0b3IpLmtleSk7XG4gICAgICAgICAgICB9KS5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHJpYnV0ZXNbeF07XG4gICAgICAgICAgICAgICAgaWYgKCFhdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyLmZpZWxkID8gYXR0ci5maWVsZCA6IHg7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZU1vZGVsRnJvbVBhdGgobW9kZWw6IE0sIHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuXG4gICAgICAgIGxldCBzdGVwID0gc3RlcHMuc2hpZnQoKTtcbiAgICAgICAgd2hpbGUgKHN0ZXApIHtcbiAgICAgICAgICAgIGlmIChtb2RlbFtzdGVwXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAobW9kZWxbc3RlcF0gYXMgQXJyYXk8YW55PilcbiAgICAgICAgICAgICAgICAgICAgLm1hcCh4ID0+IHRoaXMucmVkdWNlTW9kZWxGcm9tUGF0aCh4LCBzdGVwcy5qb2luKFwiLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFsbCwgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCAuLi5jdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCBjdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtb2RlbCA9IG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgaWYgKCFtb2RlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0ZXAgPSBzdGVwcy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gT2JqZWN0LmtleXMobW9kZWwucmF3QXR0cmlidXRlcykuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5yYXdBdHRyaWJ1dGVzW2tleV0uZmllbGQgPT09IG5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbW9kZWwucmF3QXR0cmlidXRlc1tmaWVsZF0uZmllbGQgPz8gbmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzQ29sdW1uSnNvbihtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhdHRyID0gbW9kZWwucmF3QXR0cmlidXRlc1tuYW1lXSA/PyBPYmplY3QudmFsdWVzKG1vZGVsLnJhd0F0dHJpYnV0ZXMpLmZpbmQoKHgpID0+IHguZmllbGQgPT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gKGF0dHI/LnR5cGUgYXMgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yKT8ua2V5ID09PSBcIkpTT05cIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEdyb3VwTGl0ZXJhbChtb2RlbDogdHlwZW9mIE0sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGdyb3VwLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShjb2x1bW4sIGl0ZW1zLnNsaWNlKDAsIGl0ZW1zLmxlbmd0aCAtIDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2dyb3VwfVxcYGA7XG4gICAgfVxufVxuIl19
|