angular-odata 0.100.0 → 0.102.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/esm2020/lib/api.mjs +65 -55
- package/esm2020/lib/cache/cache.mjs +56 -4
- package/esm2020/lib/cache/memory.mjs +16 -6
- package/esm2020/lib/cache/storage.mjs +23 -4
- package/esm2020/lib/client.mjs +3 -3
- package/esm2020/lib/constants.mjs +2 -1
- package/esm2020/lib/helper.mjs +91 -86
- package/esm2020/lib/models/collection.mjs +103 -43
- package/esm2020/lib/models/model.mjs +20 -7
- package/esm2020/lib/models/options.mjs +200 -133
- package/esm2020/lib/module.mjs +5 -5
- package/esm2020/lib/options.mjs +3 -8
- package/esm2020/lib/resources/query/builder.mjs +2 -2
- package/esm2020/lib/resources/query/expressions/syntax.mjs +1 -1
- package/esm2020/lib/resources/query/handlers.mjs +233 -34
- package/esm2020/lib/resources/query/options.mjs +45 -35
- package/esm2020/lib/resources/request.mjs +24 -35
- package/esm2020/lib/resources/resource.mjs +27 -11
- package/esm2020/lib/resources/responses/annotations.mjs +6 -6
- package/esm2020/lib/resources/responses/metadata.mjs +1 -1
- package/esm2020/lib/resources/responses/options.mjs +1 -1
- package/esm2020/lib/resources/responses/response.mjs +4 -4
- package/esm2020/lib/resources/types/batch.mjs +108 -97
- package/esm2020/lib/resources/types/function.mjs +3 -2
- package/esm2020/lib/resources/types/navigation-property.mjs +4 -2
- package/esm2020/lib/resources/types/options.mjs +1 -1
- package/esm2020/lib/schema/callable.mjs +3 -3
- package/esm2020/lib/schema/enum-type.mjs +5 -2
- package/esm2020/lib/schema/parsers/callable.mjs +10 -20
- package/esm2020/lib/schema/parsers/enum-type.mjs +13 -16
- package/esm2020/lib/schema/parsers/structured-type.mjs +15 -27
- package/esm2020/lib/schema/structured-type.mjs +10 -11
- package/esm2020/lib/services/base.mjs +1 -1
- package/esm2020/lib/services/factory.mjs +3 -3
- package/esm2020/lib/types.mjs +1 -1
- package/esm2020/lib/utils/arrays.mjs +10 -0
- package/esm2020/lib/utils/enums.mjs +3 -3
- package/esm2020/lib/utils/objects.mjs +10 -5
- package/esm2020/lib/utils/types.mjs +5 -1
- package/esm2020/lib/utils/urls.mjs +2 -2
- package/fesm2015/angular-odata.mjs +3343 -2886
- package/fesm2015/angular-odata.mjs.map +1 -1
- package/fesm2020/angular-odata.mjs +3336 -2879
- package/fesm2020/angular-odata.mjs.map +1 -1
- package/{angular-odata.d.ts → index.d.ts} +0 -0
- package/lib/cache/cache.d.ts +62 -1
- package/lib/cache/memory.d.ts +10 -0
- package/lib/cache/storage.d.ts +19 -0
- package/lib/constants.d.ts +1 -0
- package/lib/helper.d.ts +28 -57
- package/lib/models/collection.d.ts +12 -8
- package/lib/models/model.d.ts +13 -16
- package/lib/models/options.d.ts +22 -16
- package/lib/options.d.ts +3 -7
- package/lib/resources/query/builder.d.ts +2 -2
- package/lib/resources/query/handlers.d.ts +158 -6
- package/lib/resources/query/options.d.ts +21 -21
- package/lib/resources/request.d.ts +2 -1
- package/lib/resources/resource.d.ts +7 -6
- package/lib/resources/responses/annotations.d.ts +12 -18
- package/lib/resources/responses/options.d.ts +2 -2
- package/lib/resources/responses/response.d.ts +1 -3
- package/lib/resources/types/batch.d.ts +8 -11
- package/lib/resources/types/options.d.ts +4 -2
- package/lib/schema/callable.d.ts +4 -4
- package/lib/schema/enum-type.d.ts +4 -4
- package/lib/schema/parsers/callable.d.ts +10 -10
- package/lib/schema/parsers/enum-type.d.ts +7 -7
- package/lib/schema/parsers/structured-type.d.ts +11 -11
- package/lib/schema/structured-type.d.ts +4 -4
- package/lib/services/base.d.ts +9 -9
- package/lib/types.d.ts +6 -8
- package/lib/utils/arrays.d.ts +3 -0
- package/lib/utils/enums.d.ts +2 -2
- package/lib/utils/objects.d.ts +1 -1
- package/lib/utils/strings.d.ts +1 -1
- package/lib/utils/types.d.ts +1 -0
- package/package.json +5 -5
|
@@ -3,8 +3,11 @@ import { Objects, Types } from '../../utils';
|
|
|
3
3
|
import { buildPathAndQuery, } from './builder';
|
|
4
4
|
import { ODataQueryOptionHandler } from './handlers';
|
|
5
5
|
export class ODataQueryOptions {
|
|
6
|
-
constructor(
|
|
7
|
-
this.values =
|
|
6
|
+
constructor(values) {
|
|
7
|
+
this.values =
|
|
8
|
+
values instanceof Map
|
|
9
|
+
? values
|
|
10
|
+
: new Map(Object.entries(values || {}));
|
|
8
11
|
}
|
|
9
12
|
// Params
|
|
10
13
|
pathAndParams(escape = false) {
|
|
@@ -21,10 +24,12 @@ export class ODataQueryOptions {
|
|
|
21
24
|
QueryOptionNames.skiptoken,
|
|
22
25
|
QueryOptionNames.expand,
|
|
23
26
|
QueryOptionNames.format,
|
|
27
|
+
QueryOptionNames.levels,
|
|
28
|
+
QueryOptionNames.count,
|
|
24
29
|
]
|
|
25
|
-
.filter((key) => !Types.isEmpty(this.values
|
|
30
|
+
.filter((key) => !Types.isEmpty(this.values.get(key)))
|
|
26
31
|
.reduce((acc, key) => {
|
|
27
|
-
let value = this.values
|
|
32
|
+
let value = this.values.get(key);
|
|
28
33
|
if (Types.rawType(value).endsWith('Expression')) {
|
|
29
34
|
value = value.render({ aliases });
|
|
30
35
|
}
|
|
@@ -41,8 +46,8 @@ export class ODataQueryOptions {
|
|
|
41
46
|
.join('&'));
|
|
42
47
|
}
|
|
43
48
|
toJSON() {
|
|
44
|
-
return
|
|
45
|
-
let value = this.values
|
|
49
|
+
return [...this.values.keys()].reduce((acc, key) => {
|
|
50
|
+
let value = this.values.get(key);
|
|
46
51
|
value =
|
|
47
52
|
Types.isObject(value) && 'toJSON' in value ? value.toJSON() : value;
|
|
48
53
|
return Object.assign(acc, { [key]: value });
|
|
@@ -50,51 +55,56 @@ export class ODataQueryOptions {
|
|
|
50
55
|
}
|
|
51
56
|
toQueryArguments() {
|
|
52
57
|
return {
|
|
53
|
-
select: this.values
|
|
54
|
-
expand: this.values
|
|
55
|
-
transform: this.values
|
|
56
|
-
compute: this.values
|
|
57
|
-
search: this.values
|
|
58
|
-
filter: this.values
|
|
59
|
-
orderBy: this.values
|
|
60
|
-
top: this.values
|
|
61
|
-
skip: this.values
|
|
62
|
-
skiptoken: this.values
|
|
58
|
+
select: this.values.get(QueryOptionNames.select) || null,
|
|
59
|
+
expand: this.values.get(QueryOptionNames.expand) || null,
|
|
60
|
+
transform: this.values.get(QueryOptionNames.transform) || null,
|
|
61
|
+
compute: this.values.get(QueryOptionNames.compute) || null,
|
|
62
|
+
search: this.values.get(QueryOptionNames.search) || null,
|
|
63
|
+
filter: this.values.get(QueryOptionNames.filter) || null,
|
|
64
|
+
orderBy: this.values.get(QueryOptionNames.orderBy) || null,
|
|
65
|
+
top: this.values.get(QueryOptionNames.top) || null,
|
|
66
|
+
skip: this.values.get(QueryOptionNames.skip) || null,
|
|
67
|
+
skiptoken: this.values.get(QueryOptionNames.skiptoken) || null,
|
|
68
|
+
levels: this.values.get(QueryOptionNames.levels) || null,
|
|
69
|
+
count: this.values.get(QueryOptionNames.count) || null,
|
|
63
70
|
};
|
|
64
71
|
}
|
|
65
72
|
clone() {
|
|
66
|
-
|
|
67
|
-
return new ODataQueryOptions(options);
|
|
73
|
+
return new ODataQueryOptions(Objects.clone(this.values));
|
|
68
74
|
}
|
|
69
75
|
// Set Renderable
|
|
70
|
-
expression(
|
|
76
|
+
expression(key, exp) {
|
|
71
77
|
if (exp !== undefined)
|
|
72
|
-
this.values
|
|
73
|
-
return this.values
|
|
78
|
+
this.values.set(key, exp);
|
|
79
|
+
return this.values.get(key);
|
|
74
80
|
}
|
|
75
81
|
// Option Handler
|
|
76
|
-
option(
|
|
82
|
+
option(key, opts) {
|
|
77
83
|
if (opts !== undefined)
|
|
78
|
-
this.values
|
|
79
|
-
return new ODataQueryOptionHandler(this.values,
|
|
84
|
+
this.values.set(key, opts);
|
|
85
|
+
return new ODataQueryOptionHandler(this.values, key);
|
|
80
86
|
}
|
|
81
87
|
// Query Options tools
|
|
82
|
-
has(
|
|
83
|
-
return this.values
|
|
88
|
+
has(key) {
|
|
89
|
+
return this.values.has(key);
|
|
84
90
|
}
|
|
85
|
-
remove(...
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
remove(...keys) {
|
|
92
|
+
[...this.values.keys()]
|
|
93
|
+
.filter((k) => keys.indexOf(k) !== -1)
|
|
94
|
+
.forEach((key) => {
|
|
95
|
+
this.values.delete(key);
|
|
88
96
|
});
|
|
89
97
|
}
|
|
90
|
-
keep(...
|
|
91
|
-
this.values
|
|
92
|
-
.filter((k) =>
|
|
93
|
-
.
|
|
98
|
+
keep(...keys) {
|
|
99
|
+
[...this.values.keys()]
|
|
100
|
+
.filter((k) => keys.indexOf(k) === -1)
|
|
101
|
+
.forEach((key) => {
|
|
102
|
+
this.values.delete(key);
|
|
103
|
+
});
|
|
94
104
|
}
|
|
95
105
|
// Clear
|
|
96
106
|
clear() {
|
|
97
|
-
this.values
|
|
107
|
+
this.values.clear();
|
|
98
108
|
}
|
|
99
109
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixHQU9sQixNQUFNLFdBQVcsQ0FBQztBQVNuQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxPQUFpQztRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1NBQ3hCO2FBQ0UsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2pELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQy9DLEtBQUssR0FBSSxLQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDdEQ7WUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVULE9BQU8saUJBQWlCLENBQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FDTCxJQUFJO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7aUJBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7aUJBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNsRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLEtBQUs7Z0JBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN0RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzlDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUM1QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDNUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzlDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztZQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDeEMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1NBQ3pCLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDaEUsRUFBRSxDQUNILENBQUM7UUFDRixPQUFPLElBQUksaUJBQWlCLENBQUksT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixVQUFVLENBQUMsSUFBc0IsRUFBRSxHQUFtQjtRQUNwRCxJQUFJLEdBQUcsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsTUFBTSxDQUFJLElBQXNCLEVBQUUsSUFBUTtRQUN4QyxJQUFJLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakQsT0FBTyxJQUFJLHVCQUF1QixDQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixHQUFHLENBQUMsSUFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsS0FBeUI7UUFDakMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxLQUF5QjtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzFELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsUUFBUTtJQUNSLEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFBhdGhBbmRRdWVyeSxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBPcmRlckJ5RXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBFeHBhbmRFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9ucy9leHBhbmQnO1xuaW1wb3J0IHsgU2VsZWN0RXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvc2VsZWN0JztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVycyc7XG5cbmV4cG9ydCB0eXBlIE9EYXRhUXVlcnlBcmd1bWVudHM8VD4gPSB7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdF0/OiBTZWxlY3Q8VD4gfCBTZWxlY3RFeHByZXNzaW9uPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5maWx0ZXJdPzogRmlsdGVyPFQ+IHwgRmlsdGVyRXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoXT86IHN0cmluZyB8IFNlYXJjaEV4cHJlc3Npb248VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGVdPzogc3RyaW5nO1xuICBbUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm1dPzogVHJhbnNmb3JtPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5vcmRlckJ5XT86IE9yZGVyQnk8VD4gfCBPcmRlckJ5RXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMudG9wXT86IG51bWJlcjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2tpcF0/OiBudW1iZXI7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbl0/OiBzdHJpbmc7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZF0/OiBFeHBhbmQ8VD4gfCBFeHBhbmRFeHByZXNzaW9uPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5mb3JtYXRdPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25zPFQ+IHtcbiAgdmFsdWVzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLnZhbHVlcyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMudG9wLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0LFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVR5cGVzLmlzRW1wdHkodGhpcy52YWx1ZXNba2V5XSkpXG4gICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlc1trZXldO1xuICAgICAgICBpZiAoVHlwZXMucmF3VHlwZSh2YWx1ZSkuZW5kc1dpdGgoJ0V4cHJlc3Npb24nKSkge1xuICAgICAgICAgIHZhbHVlID0gKHZhbHVlIGFzIEV4cHJlc3Npb248VD4pLnJlbmRlcih7IGFsaWFzZXMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICAgIH0sIHt9KTtcblxuICAgIHJldHVybiBidWlsZFBhdGhBbmRRdWVyeTxhbnk+KHsgLi4ub3B0aW9ucywgYWxpYXNlcywgZXNjYXBlIH0pO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRoICtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhVHlwZXMuaXNFbXB0eSh2YWx1ZSkpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcmJylcbiAgICApO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXNba2V5XTtcbiAgICAgIHZhbHVlID1cbiAgICAgICAgVHlwZXMuaXNPYmplY3QodmFsdWUpICYmICd0b0pTT04nIGluIHZhbHVlID8gdmFsdWUudG9KU09OKCkgOiB2YWx1ZTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgfSwge30pO1xuICB9XG5cbiAgdG9RdWVyeUFyZ3VtZW50cygpOiBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0OiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdF0sXG4gICAgICBleHBhbmQ6IHRoaXMudmFsdWVzW1F1ZXJ5T3B0aW9uTmFtZXMuZXhwYW5kXSxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy52YWx1ZXNbUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm1dLFxuICAgICAgY29tcHV0ZTogdGhpcy52YWx1ZXNbUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlXSxcbiAgICAgIHNlYXJjaDogdGhpcy52YWx1ZXNbUXVlcnlPcHRpb25OYW1lcy5zZWFyY2hdLFxuICAgICAgZmlsdGVyOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLmZpbHRlcl0sXG4gICAgICBvcmRlckJ5OiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLm9yZGVyQnldLFxuICAgICAgdG9wOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnRvcF0sXG4gICAgICBza2lwOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnNraXBdLFxuICAgICAgc2tpcHRva2VuOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbl0sXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBrZXkpID0+XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiBPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzW2tleV0pIH0pLFxuICAgICAge31cbiAgICApO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbnM8Tz4ob3B0aW9ucyk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKG5hbWU6IFF1ZXJ5T3B0aW9uTmFtZXMsIGV4cD86IEV4cHJlc3Npb248VD4pIHtcbiAgICBpZiAoZXhwICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzW25hbWVdID0gZXhwO1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1tuYW1lXTtcbiAgfVxuXG4gIC8vIE9wdGlvbiBIYW5kbGVyXG4gIG9wdGlvbjxPPihuYW1lOiBRdWVyeU9wdGlvbk5hbWVzLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzW25hbWVdID0gb3B0cztcbiAgICByZXR1cm4gbmV3IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPE8+KHRoaXMudmFsdWVzLCBuYW1lKTtcbiAgfVxuXG4gIC8vIFF1ZXJ5IE9wdGlvbnMgdG9vbHNcbiAgaGFzKG5hbWU6IFF1ZXJ5T3B0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbbmFtZV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbW92ZSguLi5uYW1lczogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgZGVsZXRlIHRoaXMudmFsdWVzW25hbWVdO1xuICAgIH0pO1xuICB9XG5cbiAga2VlcCguLi5uYW1lczogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcylcbiAgICAgIC5maWx0ZXIoKGspID0+IG5hbWVzLmluZGV4T2YoayBhcyBRdWVyeU9wdGlvbk5hbWVzKSAhPT0gLTEpXG4gICAgICAucmVkdWNlKChhY2MsIGspID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrXTogdGhpcy52YWx1ZXNba10gfSksIHt9KTtcbiAgfVxuXG4gIC8vIENsZWFyXG4gIGNsZWFyKCkge1xuICAgIHRoaXMudmFsdWVzID0ge307XG4gIH1cbn1cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixHQU9sQixNQUFNLFdBQVcsQ0FBQztBQVVuQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFrQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxNQUE2RDtRQUN2RSxJQUFJLENBQUMsTUFBTTtZQUNULE1BQU0sWUFBWSxHQUFHO2dCQUNuQixDQUFDLENBQUMsTUFBTTtnQkFDUixDQUFDLENBQUMsSUFBSSxHQUFHLENBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFtQyxDQUMvRCxDQUFDO0lBQ1YsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1B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Q0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFBhdGhBbmRRdWVyeSxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBDb21wdXRlRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbixcbiAgRmlsdGVyRXhwcmVzc2lvbixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIFNlYXJjaEV4cHJlc3Npb24sXG59IGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgRXhwYW5kRXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvZXhwYW5kJztcbmltcG9ydCB7IFNlbGVjdEV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb25zL3NlbGVjdCc7XG5pbXBvcnQgeyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+ID0ge1xuICBbUXVlcnlPcHRpb25OYW1lcy5zZWxlY3RdPzogU2VsZWN0PFQ+IHwgU2VsZWN0RXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZF0/OiBFeHBhbmQ8VD4gfCBFeHBhbmRFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuY29tcHV0ZV0/OiBzdHJpbmcgfCBDb21wdXRlRXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmZpbHRlcl0/OiBGaWx0ZXI8VD4gfCBGaWx0ZXJFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoXT86IHN0cmluZyB8IFNlYXJjaEV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm1dPzogVHJhbnNmb3JtPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeV0/OiBPcmRlckJ5PFQ+IHwgT3JkZXJCeUV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb25OYW1lcy50b3BdPzogbnVtYmVyIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2tpcF0/OiBudW1iZXIgfCBudWxsO1xuICBbUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW5dPzogc3RyaW5nIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0XT86IHN0cmluZyB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmxldmVsc10/OiBudW1iZXIgfCAnbWF4JyB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmNvdW50XT86IGJvb2xlYW4gfCBudWxsO1xufTtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25zPFQ+IHtcbiAgdmFsdWVzOiBNYXA8UXVlcnlPcHRpb25OYW1lcywgYW55PjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXA8UXVlcnlPcHRpb25OYW1lcywgYW55PiB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy52YWx1ZXMgPVxuICAgICAgdmFsdWVzIGluc3RhbmNlb2YgTWFwXG4gICAgICAgID8gdmFsdWVzXG4gICAgICAgIDogbmV3IE1hcChcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlcyB8fCB7fSkgYXMgQXJyYXk8W1F1ZXJ5T3B0aW9uTmFtZXMsIGFueV0+XG4gICAgICAgICAgKTtcbiAgfVxuXG4gIC8vIFBhcmFtc1xuICBwYXRoQW5kUGFyYW1zKGVzY2FwZTogYm9vbGVhbiA9IGZhbHNlKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBsZXQgYWxpYXNlczogUXVlcnlDdXN0b21UeXBlW10gPSBbXTtcbiAgICBsZXQgb3B0aW9ucyA9IFtcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuc2VsZWN0LFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5maWx0ZXIsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNlYXJjaCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuY29tcHV0ZSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMudHJhbnNmb3JtLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5vcmRlckJ5LFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy50b3AsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNraXAsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbixcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZXhwYW5kLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5mb3JtYXQsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmxldmVscyxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuY291bnQsXG4gICAgXVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiAhVHlwZXMuaXNFbXB0eSh0aGlzLnZhbHVlcy5nZXQoa2V5KSkpXG4gICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlcy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKFR5cGVzLnJhd1R5cGUodmFsdWUpLmVuZHNXaXRoKCdFeHByZXNzaW9uJykpIHtcbiAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSBhcyBFeHByZXNzaW9uPFQ+KS5yZW5kZXIoeyBhbGlhc2VzIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gYnVpbGRQYXRoQW5kUXVlcnk8YW55Pih7IC4uLm9wdGlvbnMsIGFsaWFzZXMsIGVzY2FwZSB9KTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgY29uc3QgW3BhdGgsIHBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICByZXR1cm4gKFxuICAgICAgcGF0aCArXG4gICAgICBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gIVR5cGVzLmlzRW1wdHkodmFsdWUpKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX09JHt2YWx1ZX1gKVxuICAgICAgICAuam9pbignJicpXG4gICAgKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMudmFsdWVzLmtleXMoKV0ucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICB2YWx1ZSA9XG4gICAgICAgIFR5cGVzLmlzT2JqZWN0KHZhbHVlKSAmJiAndG9KU09OJyBpbiB2YWx1ZSA/IHZhbHVlLnRvSlNPTigpIDogdmFsdWU7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHRvUXVlcnlBcmd1bWVudHMoKTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2VsZWN0KSB8fCBudWxsLFxuICAgICAgZXhwYW5kOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb25OYW1lcy5leHBhbmQpIHx8IG51bGwsXG4gICAgICB0cmFuc2Zvcm06IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSkgfHwgbnVsbCxcbiAgICAgIGNvbXB1dGU6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUpIHx8IG51bGwsXG4gICAgICBzZWFyY2g6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnNlYXJjaCkgfHwgbnVsbCxcbiAgICAgIGZpbHRlcjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyKSB8fCBudWxsLFxuICAgICAgb3JkZXJCeTogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSkgfHwgbnVsbCxcbiAgICAgIHRvcDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMudG9wKSB8fCBudWxsLFxuICAgICAgc2tpcDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcCkgfHwgbnVsbCxcbiAgICAgIHNraXB0b2tlbjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcHRva2VuKSB8fCBudWxsLFxuICAgICAgbGV2ZWxzOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb25OYW1lcy5sZXZlbHMpIHx8IG51bGwsXG4gICAgICBjb3VudDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuY291bnQpIHx8IG51bGwsXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uczxPPihPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzKSk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKGtleTogUXVlcnlPcHRpb25OYW1lcywgZXhwPzogRXhwcmVzc2lvbjxUPikge1xuICAgIGlmIChleHAgIT09IHVuZGVmaW5lZCkgdGhpcy52YWx1ZXMuc2V0KGtleSwgZXhwKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gIH1cblxuICAvLyBPcHRpb24gSGFuZGxlclxuICBvcHRpb248Tz4oa2V5OiBRdWVyeU9wdGlvbk5hbWVzLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzLnNldChrZXksIG9wdHMpO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8Tz4odGhpcy52YWx1ZXMsIGtleSk7XG4gIH1cblxuICAvLyBRdWVyeSBPcHRpb25zIHRvb2xzXG4gIGhhcyhrZXk6IFF1ZXJ5T3B0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaGFzKGtleSk7XG4gIH1cblxuICByZW1vdmUoLi4ua2V5czogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgWy4uLnRoaXMudmFsdWVzLmtleXMoKV1cbiAgICAgIC5maWx0ZXIoKGspID0+IGtleXMuaW5kZXhPZihrKSAhPT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVzLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG4gIH1cblxuICBrZWVwKC4uLmtleXM6IFF1ZXJ5T3B0aW9uTmFtZXNbXSkge1xuICAgIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldXG4gICAgICAuZmlsdGVyKChrKSA9PiBrZXlzLmluZGV4T2YoaykgPT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xlYXJcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -19,7 +19,7 @@ export class ODataRequest {
|
|
|
19
19
|
: init.withCredentials;
|
|
20
20
|
this.fetchPolicy = init.fetchPolicy || this.api.options.fetchPolicy;
|
|
21
21
|
this.bodyQueryOptions =
|
|
22
|
-
|
|
22
|
+
[...(this.api.options.bodyQueryOptions || []), ...(init.bodyQueryOptions || [])];
|
|
23
23
|
// The Path and Params from resource
|
|
24
24
|
const [resourcePath, resourceParams] = this.resource.pathAndParams();
|
|
25
25
|
this._path = resourcePath;
|
|
@@ -96,10 +96,6 @@ export class ODataRequest {
|
|
|
96
96
|
])
|
|
97
97
|
: params;
|
|
98
98
|
//#endregion
|
|
99
|
-
this._queryBody =
|
|
100
|
-
this._method === 'GET' &&
|
|
101
|
-
this.bodyQueryOptions.length > 0 &&
|
|
102
|
-
this.bodyQueryOptions.some((name) => this._params.has(`$${name}`));
|
|
103
99
|
}
|
|
104
100
|
get responseType() {
|
|
105
101
|
return this._responseType &&
|
|
@@ -110,52 +106,45 @@ export class ODataRequest {
|
|
|
110
106
|
: this._responseType;
|
|
111
107
|
}
|
|
112
108
|
get path() {
|
|
113
|
-
return this.
|
|
109
|
+
return this.isQueryBody() ? `${this._path}/${$QUERY}` : this._path;
|
|
114
110
|
}
|
|
115
111
|
get method() {
|
|
116
|
-
return this.
|
|
112
|
+
return this.isQueryBody() ? 'POST' : this._method;
|
|
117
113
|
}
|
|
118
114
|
get body() {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
return this._body;
|
|
125
|
-
}
|
|
115
|
+
return (this.isQueryBody()) ?
|
|
116
|
+
Http.splitHttpParams(this._params, this.bodyQueryOptions.map((name) => `$${name}`))[1].toString() :
|
|
117
|
+
this._body;
|
|
126
118
|
}
|
|
127
119
|
get params() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
return this._params;
|
|
134
|
-
}
|
|
120
|
+
return (this.isQueryBody()) ?
|
|
121
|
+
Http.splitHttpParams(this._params, this.bodyQueryOptions.map((name) => `$${name}`))[0] :
|
|
122
|
+
this._params;
|
|
135
123
|
}
|
|
136
124
|
get headers() {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
else {
|
|
141
|
-
return this._headers;
|
|
142
|
-
}
|
|
125
|
+
return (this.isQueryBody()) ?
|
|
126
|
+
Http.mergeHttpHeaders(this._headers, { CONTENT_TYPE: TEXT_PLAIN }) :
|
|
127
|
+
this._headers;
|
|
143
128
|
}
|
|
144
129
|
get pathWithParams() {
|
|
145
|
-
|
|
146
|
-
if (this._params.keys().length > 0) {
|
|
147
|
-
path = `${path}?${this._params}`;
|
|
148
|
-
}
|
|
149
|
-
return path;
|
|
130
|
+
return (this.params.keys().length > 0) ? `${this.path}?${this.params}` : this.path;
|
|
150
131
|
}
|
|
151
132
|
get url() {
|
|
152
|
-
return `${this.api.serviceRootUrl}${this.
|
|
133
|
+
return `${this.api.serviceRootUrl}${this.path}`;
|
|
153
134
|
}
|
|
154
135
|
get urlWithParams() {
|
|
155
136
|
return `${this.api.serviceRootUrl}${this.pathWithParams}`;
|
|
156
137
|
}
|
|
138
|
+
get cacheKey() {
|
|
139
|
+
return (this._params.keys().length > 0) ? `${this._path}?${this._params}` : this._path;
|
|
140
|
+
}
|
|
141
|
+
isQueryBody() {
|
|
142
|
+
return this._method === 'GET' &&
|
|
143
|
+
this.bodyQueryOptions.length > 0 &&
|
|
144
|
+
this.bodyQueryOptions.some((name) => this._params.has(`$${name}`));
|
|
145
|
+
}
|
|
157
146
|
isBatch() {
|
|
158
|
-
return this.
|
|
147
|
+
return this.path.endsWith($BATCH);
|
|
159
148
|
}
|
|
160
149
|
isFetch() {
|
|
161
150
|
return ['GET'].indexOf(this._method) !== -1;
|
|
@@ -164,4 +153,4 @@ export class ODataRequest {
|
|
|
164
153
|
return ['PUT', 'PATCH', 'POST', 'DELETE'].indexOf(this._method) !== -1;
|
|
165
154
|
}
|
|
166
155
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHaEMsTUFBTSxPQUFPLFlBQVk7SUE2QnZCLFlBQVksSUEyQlg7UUFDQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTVCLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFdkMsV0FBVztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxlQUFlO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEtB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RUFBRTtZQUNsQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgJEJBVENILFxuICAkUVVFUlksXG4gIEFDQ0VQVCxcbiAgSUZfTUFUQ0hfSEVBREVSLFxuICBJRl9OT05FX01BVENIX0hFQURFUixcbiAgUFJFRkVSLFxuICBURVhUX1BMQUlOLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUXVlcnlPcHRpb25OYW1lcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVJlcXVlc3Q8VD4ge1xuICByZWFkb25seSBhcGk6IE9EYXRhQXBpO1xuICByZWFkb25seSBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gIHJlYWRvbmx5IHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYm9keVF1ZXJ5T3B0aW9uczogUXVlcnlPcHRpb25OYW1lc1tdO1xuICByZWFkb25seSBmZXRjaFBvbGljeTpcbiAgICB8ICdjYWNoZS1maXJzdCdcbiAgICB8ICdjYWNoZS1hbmQtbmV0d29yaydcbiAgICB8ICduZXR3b3JrLW9ubHknXG4gICAgfCAnbm8tY2FjaGUnXG4gICAgfCAnY2FjaGUtb25seSc7XG4gIHJlYWRvbmx5IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZVR5cGU/OlxuICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgIHwgJ2Jsb2InXG4gICAgfCAnanNvbidcbiAgICB8ICd0ZXh0J1xuICAgIHwgJ3ZhbHVlJ1xuICAgIHwgJ3Byb3BlcnR5J1xuICAgIHwgJ2VudGl0eSdcbiAgICB8ICdlbnRpdGllcyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldGhvZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ib2R5OiBhbnkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1zOiBIdHRwUGFyYW1zO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1ZXJ5Qm9keTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBhbnk7XG4gICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwgeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgfCAnYmxvYidcbiAgICAgIHwgJ2pzb24nXG4gICAgICB8ICd0ZXh0J1xuICAgICAgfCAndmFsdWUnXG4gICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgIHwgJ2VudGl0eSdcbiAgICAgIHwgJ2VudGl0aWVzJztcbiAgICBmZXRjaFBvbGljeT86XG4gICAgICB8ICdjYWNoZS1maXJzdCdcbiAgICAgIHwgJ2NhY2hlLWFuZC1uZXR3b3JrJ1xuICAgICAgfCAnbmV0d29yay1vbmx5J1xuICAgICAgfCAnbm8tY2FjaGUnXG4gICAgICB8ICdjYWNoZS1vbmx5JztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbk5hbWVzW107XG4gIH0pIHtcbiAgICB0aGlzLl9tZXRob2QgPSBpbml0Lm1ldGhvZDtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcblxuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXBvcnRQcm9ncmVzcyA9IGluaXQucmVwb3J0UHJvZ3Jlc3M7XG4gICAgdGhpcy5vYnNlcnZlID0gaW5pdC5vYnNlcnZlO1xuXG4gICAgLy8gUmVzcG9uc2UgVHlwZVxuICAgIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IGluaXQucmVzcG9uc2VUeXBlO1xuXG4gICAgLy8gVGhlIEJvZHlcbiAgICB0aGlzLl9ib2R5ID0gaW5pdC5ib2R5ICE9PSB1bmRlZmluZWQgPyBpbml0LmJvZHkgOiBudWxsO1xuICAgIGlmICh0aGlzLl9ib2R5ICE9PSBudWxsKSB0aGlzLl9ib2R5ID0gdGhpcy5yZXNvdXJjZS5zZXJpYWxpemUodGhpcy5fYm9keSk7XG5cbiAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9XG4gICAgICBpbml0LndpdGhDcmVkZW50aWFscyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGhpcy5hcGkub3B0aW9ucy53aXRoQ3JlZGVudGlhbHNcbiAgICAgICAgOiBpbml0LndpdGhDcmVkZW50aWFscztcbiAgICB0aGlzLmZldGNoUG9saWN5ID0gaW5pdC5mZXRjaFBvbGljeSB8fCB0aGlzLmFwaS5vcHRpb25zLmZldGNoUG9saWN5O1xuICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucyA9XG4gICAgICBpbml0LmJvZHlRdWVyeU9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zO1xuXG4gICAgLy8gVGhlIFBhdGggYW5kIFBhcmFtcyBmcm9tIHJlc291cmNlXG4gICAgY29uc3QgW3Jlc291cmNlUGF0aCwgcmVzb3VyY2VQYXJhbXNdID0gdGhpcy5yZXNvdXJjZS5wYXRoQW5kUGFyYW1zKCk7XG4gICAgdGhpcy5fcGF0aCA9IHJlc291cmNlUGF0aDtcblxuICAgIC8vI3JlZ2lvbiBIZWFkZXJzXG4gICAgY29uc3QgY3VzdG9tSGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICh0eXBlb2YgaW5pdC5ldGFnID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZNYXRjaCAmJlxuICAgICAgICBbJ1BVVCcsICdQQVRDSCcsICdERUxFVEUnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTUFUQ0hfSEVBREVSXSA9IGluaXQuZXRhZztcbiAgICAgIGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZOb25lTWF0Y2ggJiZcbiAgICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTk9ORV9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdCA9IFtdO1xuICAgIC8vIE1ldGFkYXRhXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goYG9kYXRhLm1ldGFkYXRhPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhfWApO1xuICAgIC8vIElFRUU3NTRcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChcbiAgICAgICAgYElFRUU3NTRDb21wYXRpYmxlPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlfWBcbiAgICAgICk7XG4gICAgLy8gc3RyZWFtaW5nXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmcgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKGBzdHJlYW1pbmc9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uc3RyZWFtaW5nfWApO1xuICAgIC8vIEV4cG9uZW50aWFsRGVjaW1hbHNcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHMgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgRXhwb25lbnRpYWxEZWNpbWFscz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5leHBvbmVudGlhbERlY2ltYWxzfWBcbiAgICAgICk7XG4gICAgaWYgKGFjY2VwdC5sZW5ndGggPiAwKVxuICAgICAgY3VzdG9tSGVhZGVyc1tBQ0NFUFRdID0gW1xuICAgICAgICBgYXBwbGljYXRpb24vanNvbjske2FjY2VwdC5qb2luKCc7Jyl9YCxcbiAgICAgICAgJ3RleHQvcGxhaW4nLFxuICAgICAgICAnKi8qJyxcbiAgICAgIF07XG5cbiAgICBjb25zdCBwcmVmZXIgPSBbXTtcbiAgICAvLyBSZXR1cm5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ucmV0dXJuICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYHJldHVybj0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5yZXR1cm59YCk7XG4gICAgLy8gTWF4UGFnZVNpemVcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ubWF4UGFnZVNpemUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYG9kYXRhLm1heHBhZ2VzaXplPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm1heFBhZ2VTaXplfWApO1xuICAgIC8vIEFubm90YXRpb25zXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmluY2x1ZGVBbm5vdGF0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChcbiAgICAgICAgYG9kYXRhLmluY2x1ZGUtYW5ub3RhdGlvbnM9JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uaW5jbHVkZUFubm90YXRpb25zfWBcbiAgICAgICk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmNvbnRpbnVlT25FcnJvciA9PT0gdHJ1ZSAmJlxuICAgICAgWydQT1NUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGBvZGF0YS5jb250aW51ZS1vbi1lcnJvcmApO1xuICAgIGlmIChwcmVmZXIubGVuZ3RoID4gMCkgY3VzdG9tSGVhZGVyc1tQUkVGRVJdID0gcHJlZmVyO1xuICAgIHRoaXMuX2hlYWRlcnMgPSBIdHRwLm1lcmdlSHR0cEhlYWRlcnMoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLmhlYWRlcnMsXG4gICAgICBjdXN0b21IZWFkZXJzLFxuICAgICAgaW5pdC5oZWFkZXJzIHx8IHt9XG4gICAgKTtcbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiBQYXJhbXNcbiAgICBjb25zdCBjdXN0b21QYXJhbXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH0gPSB7fTtcbiAgICBpZiAoXG4gICAgICBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMSAmJlxuICAgICAgJyRzZWxlY3QnIGluIHJlc291cmNlUGFyYW1zXG4gICAgKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRzZWxlY3QnXSA9IHJlc291cmNlUGFyYW1zWyckc2VsZWN0J107XG4gICAgfVxuICAgIGlmIChbJ1BPU1QnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmICckZXhwYW5kJyBpbiByZXNvdXJjZVBhcmFtcykge1xuICAgICAgY3VzdG9tUGFyYW1zWyckZXhwYW5kJ10gPSByZXNvdXJjZVBhcmFtc1snJGV4cGFuZCddO1xuICAgIH1cbiAgICBpZiAoWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGN1c3RvbVBhcmFtcywgcmVzb3VyY2VQYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wYXJhbXMsXG4gICAgICBjdXN0b21QYXJhbXMsXG4gICAgICBpbml0LnBhcmFtcyB8fCB7fVxuICAgICk7XG5cbiAgICB0aGlzLl9wYXJhbXMgPVxuICAgICAgdGhpcy5fcmVzcG9uc2VUeXBlID09PSAnZW50aXR5J1xuICAgICAgICA/IEh0dHAud2l0aG91dEh0dHBQYXJhbXMocGFyYW1zLCBbXG4gICAgICAgICAgICAnJGZpbHRlcicsXG4gICAgICAgICAgICAnJG9yZGVyYnknLFxuICAgICAgICAgICAgJyRjb3VudCcsXG4gICAgICAgICAgICAnJHNraXAnLFxuICAgICAgICAgICAgJyR0b3AnLFxuICAgICAgICAgIF0pXG4gICAgICAgIDogcGFyYW1zO1xuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgdGhpcy5fcXVlcnlCb2R5ID1cbiAgICAgIHRoaXMuX21ldGhvZCA9PT0gJ0dFVCcgJiZcbiAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMuc29tZSgobmFtZSkgPT4gdGhpcy5fcGFyYW1zLmhhcyhgJCR7bmFtZX1gKSk7XG4gIH1cblxuICBnZXQgcmVzcG9uc2VUeXBlKCk6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCcge1xuICAgIHJldHVybiB0aGlzLl9yZXNwb25zZVR5cGUgJiZcbiAgICAgIFsncHJvcGVydHknLCAnZW50aXR5JywgJ2VudGl0aWVzJ10uaW5kZXhPZih0aGlzLl9yZXNwb25zZVR5cGUpICE9PSAtMVxuICAgICAgPyAnanNvbidcbiAgICAgIDogdGhpcy5fcmVzcG9uc2VUeXBlID09PSAndmFsdWUnXG4gICAgICA/ICd0ZXh0J1xuICAgICAgOiA8J2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jz50aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICBnZXQgcGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlCb2R5ID8gYCR7dGhpcy5fcGF0aH0vJHskUVVFUll9YCA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBnZXQgbWV0aG9kKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUJvZHkgPyAnUE9TVCcgOiB0aGlzLl9tZXRob2Q7XG4gIH1cblxuICBnZXQgYm9keSgpIHtcbiAgICBpZiAodGhpcy5fcXVlcnlCb2R5KSB7XG4gICAgICBsZXQgWywgYm9keVBhcmFtc10gPSBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBib2R5UGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9ib2R5O1xuICAgIH1cbiAgfVxuXG4gIGdldCBwYXJhbXMoKSB7XG4gICAgaWYgKHRoaXMuX3F1ZXJ5Qm9keSkge1xuICAgICAgbGV0IFtxdWVyeVBhcmFtc10gPSBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBxdWVyeVBhcmFtcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcmFtcztcbiAgICB9XG4gIH1cblxuICBnZXQgaGVhZGVycygpIHtcbiAgICBpZiAodGhpcy5fcXVlcnlCb2R5KSB7XG4gICAgICByZXR1cm4gSHR0cC5tZXJnZUh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMsIHsgQ09OVEVOVF9UWVBFOiBURVhUX1BMQUlOIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5faGVhZGVycztcbiAgICB9XG4gIH1cblxuICBnZXQgcGF0aFdpdGhQYXJhbXMoKSB7XG4gICAgbGV0IHBhdGggPSB0aGlzLl9wYXRoO1xuICAgIGlmICh0aGlzLl9wYXJhbXMua2V5cygpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhdGggPSBgJHtwYXRofT8ke3RoaXMuX3BhcmFtc31gO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5fcGF0aH1gO1xuICB9XG5cbiAgZ2V0IHVybFdpdGhQYXJhbXMoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5wYXRoV2l0aFBhcmFtc31gO1xuICB9XG5cbiAgaXNCYXRjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGF0aC5lbmRzV2l0aCgkQkFUQ0gpO1xuICB9XG5cbiAgaXNGZXRjaCgpIHtcbiAgICByZXR1cm4gWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xO1xuICB9XG5cbiAgaXNNdXRhdGUoKSB7XG4gICAgcmV0dXJuIFsnUFVUJywgJ1BBVENIJywgJ1BPU1QnLCAnREVMRVRFJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMTtcbiAgfVxufVxuIl19
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHaEMsTUFBTSxPQUFPLFlBQVk7SUE0QnZCLFlBQVksSUEyQlg7UUFDQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTVCLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFdkMsV0FBVztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxlQUFlO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEtB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Q0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUs7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge1xuICAkQkFUQ0gsXG4gICRRVUVSWSxcbiAgQUNDRVBULFxuICBJRl9NQVRDSF9IRUFERVIsXG4gIElGX05PTkVfTUFUQ0hfSEVBREVSLFxuICBQUkVGRVIsXG4gIFRFWFRfUExBSU4sXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSHR0cCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE9EYXRhUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVxdWVzdDxUPiB7XG4gIHJlYWRvbmx5IGFwaTogT0RhdGFBcGk7XG4gIHJlYWRvbmx5IG9ic2VydmU6ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgcmVhZG9ubHkgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICByZWFkb25seSB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICByZWFkb25seSBib2R5UXVlcnlPcHRpb25zOiBRdWVyeU9wdGlvbk5hbWVzW107XG4gIHJlYWRvbmx5IGZldGNoUG9saWN5OlxuICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgIHwgJ2NhY2hlLWFuZC1uZXR3b3JrJ1xuICAgIHwgJ25ldHdvcmstb25seSdcbiAgICB8ICduby1jYWNoZSdcbiAgICB8ICdjYWNoZS1vbmx5JztcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlVHlwZT86XG4gICAgfCAnYXJyYXlidWZmZXInXG4gICAgfCAnYmxvYidcbiAgICB8ICdqc29uJ1xuICAgIHwgJ3RleHQnXG4gICAgfCAndmFsdWUnXG4gICAgfCAncHJvcGVydHknXG4gICAgfCAnZW50aXR5J1xuICAgIHwgJ2VudGl0aWVzJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0aG9kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHk6IGFueSB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbXM6IEh0dHBQYXJhbXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGg6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBhbnk7XG4gICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwgeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgfCAnYmxvYidcbiAgICAgIHwgJ2pzb24nXG4gICAgICB8ICd0ZXh0J1xuICAgICAgfCAndmFsdWUnXG4gICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgIHwgJ2VudGl0eSdcbiAgICAgIHwgJ2VudGl0aWVzJztcbiAgICBmZXRjaFBvbGljeT86XG4gICAgICB8ICdjYWNoZS1maXJzdCdcbiAgICAgIHwgJ2NhY2hlLWFuZC1uZXR3b3JrJ1xuICAgICAgfCAnbmV0d29yay1vbmx5J1xuICAgICAgfCAnbm8tY2FjaGUnXG4gICAgICB8ICdjYWNoZS1vbmx5JztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbk5hbWVzW107XG4gIH0pIHtcbiAgICB0aGlzLl9tZXRob2QgPSBpbml0Lm1ldGhvZDtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcblxuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXBvcnRQcm9ncmVzcyA9IGluaXQucmVwb3J0UHJvZ3Jlc3M7XG4gICAgdGhpcy5vYnNlcnZlID0gaW5pdC5vYnNlcnZlO1xuXG4gICAgLy8gUmVzcG9uc2UgVHlwZVxuICAgIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IGluaXQucmVzcG9uc2VUeXBlO1xuXG4gICAgLy8gVGhlIEJvZHlcbiAgICB0aGlzLl9ib2R5ID0gaW5pdC5ib2R5ICE9PSB1bmRlZmluZWQgPyBpbml0LmJvZHkgOiBudWxsO1xuICAgIGlmICh0aGlzLl9ib2R5ICE9PSBudWxsKSB0aGlzLl9ib2R5ID0gdGhpcy5yZXNvdXJjZS5zZXJpYWxpemUodGhpcy5fYm9keSk7XG5cbiAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9XG4gICAgICBpbml0LndpdGhDcmVkZW50aWFscyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGhpcy5hcGkub3B0aW9ucy53aXRoQ3JlZGVudGlhbHNcbiAgICAgICAgOiBpbml0LndpdGhDcmVkZW50aWFscztcbiAgICB0aGlzLmZldGNoUG9saWN5ID0gaW5pdC5mZXRjaFBvbGljeSB8fCB0aGlzLmFwaS5vcHRpb25zLmZldGNoUG9saWN5O1xuICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucyA9IFxuICAgICAgWy4uLih0aGlzLmFwaS5vcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMgfHwgW10pLCAuLi4oaW5pdC5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKV07XG5cbiAgICAvLyBUaGUgUGF0aCBhbmQgUGFyYW1zIGZyb20gcmVzb3VyY2VcbiAgICBjb25zdCBbcmVzb3VyY2VQYXRoLCByZXNvdXJjZVBhcmFtc10gPSB0aGlzLnJlc291cmNlLnBhdGhBbmRQYXJhbXMoKTtcbiAgICB0aGlzLl9wYXRoID0gcmVzb3VyY2VQYXRoO1xuXG4gICAgLy8jcmVnaW9uIEhlYWRlcnNcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKHR5cGVvZiBpbml0LmV0YWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk1hdGNoICYmXG4gICAgICAgIFsnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgICAgZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk5vbmVNYXRjaCAmJlxuICAgICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9OT05FX01BVENIX0hFQURFUl0gPSBpbml0LmV0YWc7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0ID0gW107XG4gICAgLy8gTWV0YWRhdGFcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChgb2RhdGEubWV0YWRhdGE9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8ubWV0YWRhdGF9YCk7XG4gICAgLy8gSUVFRTc1NFxuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGUgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgSUVFRTc1NENvbXBhdGlibGU9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGV9YFxuICAgICAgKTtcbiAgICAvLyBzdHJlYW1pbmdcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LnN0cmVhbWluZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goYHN0cmVhbWluZz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmd9YCk7XG4gICAgLy8gRXhwb25lbnRpYWxEZWNpbWFsc1xuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uZXhwb25lbnRpYWxEZWNpbWFscyAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goXG4gICAgICAgIGBFeHBvbmVudGlhbERlY2ltYWxzPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHN9YFxuICAgICAgKTtcbiAgICBpZiAoYWNjZXB0Lmxlbmd0aCA+IDApXG4gICAgICBjdXN0b21IZWFkZXJzW0FDQ0VQVF0gPSBbXG4gICAgICAgIGBhcHBsaWNhdGlvbi9qc29uOyR7YWNjZXB0LmpvaW4oJzsnKX1gLFxuICAgICAgICAndGV4dC9wbGFpbicsXG4gICAgICAgICcqLyonLFxuICAgICAgXTtcblxuICAgIGNvbnN0IHByZWZlciA9IFtdO1xuICAgIC8vIFJldHVyblxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5yZXR1cm4gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydQT1NUJywgJ1BVVCcsICdQQVRDSCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgcmV0dXJuPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LnJldHVybn1gKTtcbiAgICAvLyBNYXhQYWdlU2l6ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5tYXhQYWdlU2l6ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb2RhdGEubWF4cGFnZXNpemU9JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ubWF4UGFnZVNpemV9YCk7XG4gICAgLy8gQW5ub3RhdGlvbnNcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uaW5jbHVkZUFubm90YXRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKFxuICAgICAgICBgb2RhdGEuaW5jbHVkZS1hbm5vdGF0aW9ucz0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5pbmNsdWRlQW5ub3RhdGlvbnN9YFxuICAgICAgKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uY29udGludWVPbkVycm9yID09PSB0cnVlICYmXG4gICAgICBbJ1BPU1QnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYG9kYXRhLmNvbnRpbnVlLW9uLWVycm9yYCk7XG4gICAgaWYgKHByZWZlci5sZW5ndGggPiAwKSBjdXN0b21IZWFkZXJzW1BSRUZFUl0gPSBwcmVmZXI7XG4gICAgdGhpcy5faGVhZGVycyA9IEh0dHAubWVyZ2VIdHRwSGVhZGVycyhcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgIGN1c3RvbUhlYWRlcnMsXG4gICAgICBpbml0LmhlYWRlcnMgfHwge31cbiAgICApO1xuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIFBhcmFtc1xuICAgIGNvbnN0IGN1c3RvbVBhcmFtczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmIChcbiAgICAgIFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmXG4gICAgICAnJHNlbGVjdCcgaW4gcmVzb3VyY2VQYXJhbXNcbiAgICApIHtcbiAgICAgIGN1c3RvbVBhcmFtc1snJHNlbGVjdCddID0gcmVzb3VyY2VQYXJhbXNbJyRzZWxlY3QnXTtcbiAgICB9XG4gICAgaWYgKFsnUE9TVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEgJiYgJyRleHBhbmQnIGluIHJlc291cmNlUGFyYW1zKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRleHBhbmQnXSA9IHJlc291cmNlUGFyYW1zWyckZXhwYW5kJ107XG4gICAgfVxuICAgIGlmIChbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY3VzdG9tUGFyYW1zLCByZXNvdXJjZVBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0gSHR0cC5tZXJnZUh0dHBQYXJhbXMoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnBhcmFtcyxcbiAgICAgIGN1c3RvbVBhcmFtcyxcbiAgICAgIGluaXQucGFyYW1zIHx8IHt9XG4gICAgKTtcblxuICAgIHRoaXMuX3BhcmFtcyA9XG4gICAgICB0aGlzLl9yZXNwb25zZVR5cGUgPT09ICdlbnRpdHknXG4gICAgICAgID8gSHR0cC53aXRob3V0SHR0cFBhcmFtcyhwYXJhbXMsIFtcbiAgICAgICAgICAgICckZmlsdGVyJyxcbiAgICAgICAgICAgICckb3JkZXJieScsXG4gICAgICAgICAgICAnJGNvdW50JyxcbiAgICAgICAgICAgICckc2tpcCcsXG4gICAgICAgICAgICAnJHRvcCcsXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBwYXJhbXM7XG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgfVxuXG4gIGdldCByZXNwb25zZVR5cGUoKTogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JyB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlVHlwZSAmJlxuICAgICAgWydwcm9wZXJ0eScsICdlbnRpdHknLCAnZW50aXRpZXMnXS5pbmRleE9mKHRoaXMuX3Jlc3BvbnNlVHlwZSkgIT09IC0xXG4gICAgICA/ICdqc29uJ1xuICAgICAgOiB0aGlzLl9yZXNwb25zZVR5cGUgPT09ICd2YWx1ZSdcbiAgICAgID8gJ3RleHQnXG4gICAgICA6IDwnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnPnRoaXMuX3Jlc3BvbnNlVHlwZTtcbiAgfVxuXG4gIGdldCBwYXRoKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KCkgPyBgJHt0aGlzLl9wYXRofS8keyRRVUVSWX1gIDogdGhpcy5fcGF0aDtcbiAgfVxuXG4gIGdldCBtZXRob2QoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKSA/ICdQT1NUJyA6IHRoaXMuX21ldGhvZDtcbiAgfVxuXG4gIGdldCBib2R5KCkge1xuICAgIHJldHVybiAodGhpcy5pc1F1ZXJ5Qm9keSgpKSA/XG4gICAgICBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKVxuICAgICAgKVsxXS50b1N0cmluZygpIDpcbiAgICAgIHRoaXMuX2JvZHk7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiAodGhpcy5pc1F1ZXJ5Qm9keSgpKSA/XG4gICAgICBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKVxuICAgICAgKVswXSA6XG4gICAgICB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4gKHRoaXMuaXNRdWVyeUJvZHkoKSkgP1xuICAgICAgSHR0cC5tZXJnZUh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMsIHsgQ09OVEVOVF9UWVBFOiBURVhUX1BMQUlOIH0pIDpcbiAgICAgIHRoaXMuX2hlYWRlcnM7XG4gIH1cblxuICBnZXQgcGF0aFdpdGhQYXJhbXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhcmFtcy5rZXlzKCkubGVuZ3RoID4gMCkgPyBgJHt0aGlzLnBhdGh9PyR7dGhpcy5wYXJhbXN9YCA6IHRoaXMucGF0aDtcbiAgfVxuXG4gIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5wYXRofWA7XG4gIH1cblxuICBnZXQgdXJsV2l0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzLnBhdGhXaXRoUGFyYW1zfWA7XG4gIH1cblxuICBnZXQgY2FjaGVLZXkoKSB7XG4gICAgcmV0dXJuICh0aGlzLl9wYXJhbXMua2V5cygpLmxlbmd0aCA+IDApID8gYCR7dGhpcy5fcGF0aH0/JHt0aGlzLl9wYXJhbXN9YCA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBpc1F1ZXJ5Qm9keSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0aG9kID09PSAnR0VUJyAmJlxuICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5zb21lKChuYW1lKSA9PiB0aGlzLl9wYXJhbXMuaGFzKGAkJHtuYW1lfWApKTtcbiAgfVxuXG4gIGlzQmF0Y2goKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aC5lbmRzV2l0aCgkQkFUQ0gpO1xuICB9XG5cbiAgaXNGZXRjaCgpIHtcbiAgICByZXR1cm4gWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xO1xuICB9XG5cbiAgaXNNdXRhdGUoKSB7XG4gICAgcmV0dXJuIFsnUFVUJywgJ1BBVENIJywgJ1BPU1QnLCAnREVMRVRFJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMTtcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { map } from 'rxjs/operators';
|
|
2
|
-
import { PARAM_SEPARATOR, QUERY_SEPARATOR, VALUE_SEPARATOR, } from '../constants';
|
|
2
|
+
import { DEFAULT_VERSION, PARAM_SEPARATOR, QUERY_SEPARATOR, VALUE_SEPARATOR, } from '../constants';
|
|
3
|
+
import { ODataHelper } from '../helper';
|
|
3
4
|
import { ODataStructuredType } from '../schema';
|
|
5
|
+
import { PathSegmentNames, } from '../types';
|
|
4
6
|
import { Http, Objects, Types } from '../utils/index';
|
|
5
7
|
import { ODataPathSegments, ODataPathSegmentsHandler } from './path';
|
|
6
8
|
import { isQueryCustomType, ODataQueryOptions, ODataQueryOptionsHandler, } from './query';
|
|
@@ -36,6 +38,9 @@ export class ODataResource {
|
|
|
36
38
|
hasKey() {
|
|
37
39
|
return Boolean(this.pathSegments.last({ key: true })?.hasKey());
|
|
38
40
|
}
|
|
41
|
+
hasEntityKey() {
|
|
42
|
+
return Boolean(this.pathSegments.get(PathSegmentNames.entitySet)?.hasKey());
|
|
43
|
+
}
|
|
39
44
|
clearKey() {
|
|
40
45
|
return this.pathSegments.last({ key: true })?.clearKey();
|
|
41
46
|
}
|
|
@@ -117,7 +122,7 @@ export class ODataResource {
|
|
|
117
122
|
}
|
|
118
123
|
__parser(value, options, type) {
|
|
119
124
|
const dataType = options !== undefined && Types.isPlainObject(value)
|
|
120
|
-
? options.
|
|
125
|
+
? ODataHelper[options.version || DEFAULT_VERSION].type(value)
|
|
121
126
|
: undefined;
|
|
122
127
|
if (dataType !== undefined) {
|
|
123
128
|
// Parser from data type
|
|
@@ -134,6 +139,7 @@ export class ODataResource {
|
|
|
134
139
|
return undefined;
|
|
135
140
|
}
|
|
136
141
|
deserialize(value, options) {
|
|
142
|
+
const parserOptions = options || this.api.options.parserOptions;
|
|
137
143
|
const resourceType = this.returnType();
|
|
138
144
|
const _d = (value, options) => {
|
|
139
145
|
const parser = this.__parser(value, options, resourceType);
|
|
@@ -142,10 +148,11 @@ export class ODataResource {
|
|
|
142
148
|
: value;
|
|
143
149
|
};
|
|
144
150
|
return Array.isArray(value)
|
|
145
|
-
? value.map((v) => _d(v,
|
|
146
|
-
: _d(value,
|
|
151
|
+
? value.map((v) => _d(v, parserOptions))
|
|
152
|
+
: _d(value, parserOptions);
|
|
147
153
|
}
|
|
148
154
|
serialize(value, options) {
|
|
155
|
+
const parserOptions = options || this.api.options.parserOptions;
|
|
149
156
|
const resourceType = this.type();
|
|
150
157
|
const _s = (value, options) => {
|
|
151
158
|
const parser = this.__parser(value, options, resourceType);
|
|
@@ -154,10 +161,11 @@ export class ODataResource {
|
|
|
154
161
|
: value;
|
|
155
162
|
};
|
|
156
163
|
return Array.isArray(value)
|
|
157
|
-
? value.map((v) => _s(v,
|
|
158
|
-
: _s(value,
|
|
164
|
+
? value.map((v) => _s(v, parserOptions))
|
|
165
|
+
: _s(value, parserOptions);
|
|
159
166
|
}
|
|
160
167
|
encode(value, options) {
|
|
168
|
+
const parserOptions = options || this.api.options.parserOptions;
|
|
161
169
|
const resourceType = this.type();
|
|
162
170
|
const _e = (value, options) => {
|
|
163
171
|
const parser = this.__parser(value, options, resourceType);
|
|
@@ -166,8 +174,8 @@ export class ODataResource {
|
|
|
166
174
|
: value;
|
|
167
175
|
};
|
|
168
176
|
return Array.isArray(value)
|
|
169
|
-
? value.map((v) => _e(v,
|
|
170
|
-
: _e(value,
|
|
177
|
+
? value.map((v) => _e(v, parserOptions))
|
|
178
|
+
: _e(value, parserOptions);
|
|
171
179
|
}
|
|
172
180
|
toJSON() {
|
|
173
181
|
return {
|
|
@@ -192,7 +200,11 @@ export class ODataResource {
|
|
|
192
200
|
* @returns ODataActionResource
|
|
193
201
|
*/
|
|
194
202
|
segment(f) {
|
|
195
|
-
|
|
203
|
+
/*
|
|
204
|
+
const type = this.type();
|
|
205
|
+
const schema = type ? this.api.findStructuredTypeForType<T>(type) : undefined;
|
|
206
|
+
*/
|
|
207
|
+
f(new ODataPathSegmentsHandler(this.pathSegments), this.schema instanceof ODataStructuredType ? this.schema : undefined);
|
|
196
208
|
return this;
|
|
197
209
|
}
|
|
198
210
|
/**
|
|
@@ -201,7 +213,11 @@ export class ODataResource {
|
|
|
201
213
|
* @param f Function context for handle the query options
|
|
202
214
|
*/
|
|
203
215
|
query(f) {
|
|
204
|
-
|
|
216
|
+
/*
|
|
217
|
+
const type = this.returnType();
|
|
218
|
+
const schema = type ? this.api.findStructuredTypeForType<T>(type) : undefined;
|
|
219
|
+
*/
|
|
220
|
+
f(new ODataQueryOptionsHandler(this.queryOptions), this.schema instanceof ODataStructuredType ? this.schema : undefined);
|
|
205
221
|
return this;
|
|
206
222
|
}
|
|
207
223
|
static resolveKey(value, schema) {
|
|
@@ -276,4 +292,4 @@ export class ODataResource {
|
|
|
276
292
|
return this.request('DELETE', options);
|
|
277
293
|
}
|
|
278
294
|
}
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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QUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsTUFBTSxDQUNkLFVBWUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgUEFSQU1fU0VQQVJBVE9SLFxuICBRVUVSWV9TRVBBUkFUT1IsXG4gIFZBTFVFX1NFUEFSQVRPUixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhU2NoZW1hRWxlbWVudCB9IGZyb20gJy4uL3NjaGVtYS9lbGVtZW50JztcbmltcG9ydCB7IE9wdGlvbnNIZWxwZXIsIFBhcnNlciwgUXVlcnlPcHRpb25OYW1lcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEh0dHAsIE9iamVjdHMsIFR5cGVzIH0gZnJvbSAnLi4vdXRpbHMvaW5kZXgnO1xuaW1wb3J0IHsgT0RhdGFQYXRoU2VnbWVudHMsIE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlciB9IGZyb20gJy4vcGF0aCc7XG5pbXBvcnQge1xuICBpc1F1ZXJ5Q3VzdG9tVHlwZSxcbiAgT0RhdGFRdWVyeU9wdGlvbnMsXG4gIE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcixcbiAgUXVlcnlDdXN0b21UeXBlLFxufSBmcm9tICcuL3F1ZXJ5JztcbmltcG9ydCB7IE9EYXRhUmVxdWVzdCB9IGZyb20gJy4vcmVxdWVzdCc7XG5pbXBvcnQge1xuICBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhUmVzcG9uc2UsXG59IGZyb20gJy4vcmVzcG9uc2VzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlLZXk8VD4gPVxuICB8IHtcbiAgICAgIHJlYWRvbmx5IFtQIGluIGtleW9mIFRdPzogVFtQXTtcbiAgICB9XG4gIHwgUXVlcnlDdXN0b21UeXBlXG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFSZXNvdXJjZTxUPiB7XG4gIC8vIFZBUklBQkxFU1xuICBwdWJsaWMgYXBpOiBPRGF0YUFwaTtcbiAgcHVibGljIHNjaGVtYT86IE9EYXRhU2NoZW1hRWxlbWVudDtcbiAgcHJvdGVjdGVkIHBhdGhTZWdtZW50czogT0RhdGFQYXRoU2VnbWVudHM7XG4gIHByb3RlY3RlZCBxdWVyeU9wdGlvbnM6IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBhcGk6IE9EYXRhQXBpLFxuICAgIHtcbiAgICAgIHNlZ21lbnRzLFxuICAgICAgcXVlcnksXG4gICAgICBzY2hlbWEsXG4gICAgfToge1xuICAgICAgc2VnbWVudHM/OiBPRGF0YVBhdGhTZWdtZW50cztcbiAgICAgIHF1ZXJ5PzogT0RhdGFRdWVyeU9wdGlvbnM8VD47XG4gICAgICBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMuYXBpID0gYXBpO1xuICAgIHRoaXMucGF0aFNlZ21lbnRzID0gc2VnbWVudHMgfHwgbmV3IE9EYXRhUGF0aFNlZ21lbnRzKCk7XG4gICAgdGhpcy5xdWVyeU9wdGlvbnMgPSBxdWVyeSB8fCBuZXcgT0RhdGFRdWVyeU9wdGlvbnMoKTtcbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgVGhlIHR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5sYXN0KCk/LnR5cGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgVGhlIHR5cGUgb2YgdGhlIHJldHVyblxuICAgKi9cbiAgcmV0dXJuVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIEFsbCBjb3ZlcmVkIHR5cGVzIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy50eXBlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGJvb2xlYW4gVGhlIHJlc291cmNlIGhhcyBrZXkgP1xuICAgKi9cbiAgaGFzS2V5KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoeyBrZXk6IHRydWUgfSk/Lmhhc0tleSgpKTtcbiAgfVxuXG4gIGNsZWFyS2V5KCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5jbGVhcktleSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVsc1xuICBhc01vZGVsPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFQ+PihcbiAgICBlbnRpdHk/OiBQYXJ0aWFsPFQ+IHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgeyBhbm5vdHMsIHJlc2V0IH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczsgcmVzZXQ/OiBib29sZWFuIH0gPSB7fVxuICApOiBNIHtcbiAgICBsZXQgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD4gPSB0aGlzIGFzIE9EYXRhUmVzb3VyY2U8VD47XG4gICAgY29uc3QgdHlwZSA9IGFubm90cz8udHlwZSB8fCB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBFcnJvcignJyk7XG4gICAgY29uc3QgTW9kZWwgPSB0aGlzLmFwaS5tb2RlbEZvclR5cGUodHlwZSk7XG4gICAgbGV0IGVudGl0eVNldCA9IGFubm90cz8uZW50aXR5U2V0O1xuICAgIGlmIChlbnRpdHlTZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmFwaS5lbnRpdHlTZXQ8VD4oZW50aXR5U2V0KS5lbnRpdHkoZW50aXR5IGFzIFBhcnRpYWw8VD4pO1xuICAgICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkodGhpcy5xdWVyeU9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9kZWwoZW50aXR5LCB7IHJlc291cmNlLCBhbm5vdHMsIHJlc2V0IH0pIGFzIE07XG4gIH1cblxuICBhc0NvbGxlY3Rpb248TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4sIEMgZXh0ZW5kcyBPRGF0YUNvbGxlY3Rpb248VCwgTT4+KFxuICAgIGVudGl0aWVzPzogUGFydGlhbDxUPltdIHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH1bXSxcbiAgICB7XG4gICAgICBhbm5vdHMsXG4gICAgICByZXNldCxcbiAgICB9OiB7IGFubm90cz86IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczsgcmVzZXQ/OiBib29sZWFuIH0gPSB7fVxuICApOiBDIHtcbiAgICBsZXQgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD4gPSB0aGlzIGFzIE9EYXRhUmVzb3VyY2U8VD47XG4gICAgY29uc3QgdHlwZSA9IGFubm90cz8udHlwZSB8fCB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBFcnJvcignJyk7XG4gICAgY29uc3QgQ29sbGVjdGlvbiA9IHRoaXMuYXBpLmNvbGxlY3Rpb25Gb3JUeXBlKHR5cGUpO1xuICAgIGxldCBwYXRoID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKHBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmFwaS5lbnRpdHlTZXQ8VD4ocGF0aCk7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKGVudGl0aWVzLCB7IHJlc291cmNlLCBhbm5vdHMsIHJlc2V0IH0pIGFzIEM7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgaXNTdWJ0eXBlT2Yob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvdGhlci5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zY2hlbWE/LmlzU3VidHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNTdXBlcnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdXBlcnR5cGVPZihvdGhlci5zY2hlbWEpXG4gICAgKTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+LCB0ZXN0PzogJ3BhdGgnIHwgJ3BhcmFtcycpIHtcbiAgICBjb25zdCBbc2VsZlBhdGgsIHNlbGZQYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgY29uc3QgW290aGVyUGF0aCwgb3RoZXJQYXJhbXNdID0gb3RoZXIucGF0aEFuZFBhcmFtcygpO1xuICAgIHJldHVybiB0ZXN0ID09PSAncGF0aCdcbiAgICAgID8gb3RoZXJQYXRoID09PSBzZWxmUGF0aFxuICAgICAgOiB0ZXN0ID09PSAncGFyYW1zJ1xuICAgICAgPyBUeXBlcy5pc0VxdWFsKHNlbGZQYXJhbXMsIG90aGVyUGFyYW1zKVxuICAgICAgOiBvdGhlclBhdGggPT09IHNlbGZQYXRoICYmIFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpO1xuICB9XG5cbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgY29uc3QgW3NwYXRoLCBzcGFyYW1zXSA9IHRoaXMucGF0aFNlZ21lbnRzLnBhdGhBbmRQYXJhbXMoZXNjYXBlKTtcbiAgICBjb25zdCBbLCBxcGFyYW1zXSA9IHRoaXMucXVlcnlPcHRpb25zLnBhdGhBbmRQYXJhbXMoZXNjYXBlKTtcblxuICAgIHJldHVybiBbc3BhdGgsIHsgLi4uc3BhcmFtcywgLi4ucXBhcmFtcyB9XTtcbiAgfVxuXG4gIGVuZHBvaW50VXJsKHBhcmFtczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBbcGF0aF0gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIGxldCBxdWVyeVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgIC5tYXAoKGUpID0+IGAke2VbMF19JHtWQUxVRV9TRVBBUkFUT1J9JHtlWzFdfWApXG4gICAgICAuam9pbihQQVJBTV9TRVBBUkFUT1IpO1xuICAgIHJldHVybiBxdWVyeVN0cmluZyA/IGAke3BhdGh9JHtRVUVSWV9TRVBBUkFUT1J9JHtxdWVyeVN0cmluZ31gIDogcGF0aDtcbiAgfVxuXG4gIGNsb25lKCk6IE9EYXRhUmVzb3VyY2U8VD4ge1xuICAgIGNvbnN0IEN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBPRGF0YVJlc291cmNlO1xuICAgIHJldHVybiBuZXcgQ3Rvcih0aGlzLmFwaSwge1xuICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgIHNlZ21lbnRzOiB0aGlzLmNsb25lU2VnbWVudHMoKSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmNsb25lUXVlcnk8VD4oKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX19wYXJzZXIodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIsIHR5cGU/OiBzdHJpbmcpOiBQYXJzZXI8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRhdGFUeXBlID0gb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICA/IG9wdGlvbnMuaGVscGVyLnR5cGUodmFsdWUpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gZGF0YSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHRoaXMuc2NoZW1hKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSBzY2hlbWFcbiAgICAgIHJldHVybiAoPGFueT50aGlzLnNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgY29uc3QgX2QgPSAodmFsdWU6IGFueSwgb3B0aW9uczogT3B0aW9uc0hlbHBlcikgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnZGVzZXJpYWxpemUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9kKHYsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucykpXG4gICAgICA6IF9kKHZhbHVlLCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpO1xuICB9XG5cbiAgc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfcyA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdzZXJpYWxpemUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5zZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfcyh2LCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpKVxuICAgICAgOiBfcyh2YWx1ZSwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKTtcbiAgfVxuXG4gIGVuY29kZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgX2UgPSAodmFsdWU6IGFueSwgb3B0aW9uczogT3B0aW9uc0hlbHBlcikgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnZW5jb2RlJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZW5jb2RlKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX2Uodiwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKSlcbiAgICAgIDogX2UodmFsdWUsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZ21lbnRzOiB0aGlzLnBhdGhTZWdtZW50cy50b0pTT04oKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMucXVlcnlPcHRpb25zLnRvSlNPTigpLFxuICAgIH07XG4gIH1cblxuICBjbG9uZVNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5jbG9uZSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFF1ZXJ5IE9wdGlvbnNcbiAgY2xlYXJRdWVyeSgpIHtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgY2xvbmVRdWVyeTxQPigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9wdGlvbnMuY2xvbmU8UD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHNlZ21lbnRzXG4gICAqIEByZXR1cm5zIE9EYXRhQWN0aW9uUmVzb3VyY2VcbiAgICovXG4gIHNlZ21lbnQoZjogKHE6IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPikgPT4gdm9pZCkge1xuICAgIGYobmV3IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPih0aGlzLnBhdGhTZWdtZW50cykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQ3JlYXRlIGFuIG9iamVjdCBoYW5kbGVyIGZvciBtdXRhdGUgdGhlIHF1ZXJ5IG9wdGlvbnMgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSBmIEZ1bmN0aW9uIGNvbnRleHQgZm9yIGhhbmRsZSB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgcXVlcnkoZjogKHE6IE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcjxUPikgPT4gdm9pZCkge1xuICAgIGYobmV3IE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcjxUPih0aGlzLnF1ZXJ5T3B0aW9ucykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmVLZXk8VD4oXG4gICAgdmFsdWU6IGFueSxcbiAgICBzY2hlbWE/OiBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICk6IEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGlzUXVlcnlDdXN0b21UeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBzY2hlbWEgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlXG4gICAgICAgID8gc2NoZW1hLnJlc29sdmVLZXkodmFsdWUpXG4gICAgICAgIDogT2JqZWN0cy5yZXNvbHZlS2V5KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlIGFzIEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlS2V5KHZhbHVlOiBhbnkpOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBPRGF0YVJlc291cmNlLnJlc29sdmVLZXk8VD4oXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMuc2NoZW1hIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD5cbiAgICApO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vIEJhc2UgUmVxdWVzdHNcbiAgcHJvdGVjdGVkIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBhcGlPcHRpb25zID0gdGhpcy5hcGkub3B0aW9ucztcbiAgICBsZXQgcGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgfHwge307XG4gICAgaWYgKG9wdGlvbnMud2l0aENvdW50KSB7XG4gICAgICBwYXJhbXMgPSBIdHRwLm1lcmdlSHR0cFBhcmFtcyhwYXJhbXMsIGFwaU9wdGlvbnMuaGVscGVyLmNvdW50UGFyYW0oKSk7XG4gICAgfVxuXG4gICAgbGV0IGV0YWcgPSBvcHRpb25zLmV0YWc7XG4gICAgaWYgKGV0YWcgPT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuYm9keSkpIHtcbiAgICAgIGV0YWcgPSBhcGlPcHRpb25zLmhlbHBlci5ldGFnKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBPRGF0YVJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgZXRhZyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSxcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICByZXNvdXJjZTogdGhpcyxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgcmVzcG9uc2VUeXBlOiBvcHRpb25zLnJlc3BvbnNlVHlwZSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRpb25zLmZldGNoUG9saWN5LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBvcHRpb25zLndpdGhDcmVkZW50aWFscyxcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM6IG9wdGlvbnMuYm9keVF1ZXJ5T3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcyQgPSB0aGlzLmFwaS5yZXF1ZXN0KHJlcXVlc3QpO1xuICAgIHN3aXRjaCAob3B0aW9ucy5yZXNwb25zZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2VudGl0aWVzJzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmVudGl0aWVzKCkpKTtcbiAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5lbnRpdHkoKSkpO1xuICAgICAgY2FzZSAncHJvcGVydHknOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMucHJvcGVydHkoKSkpO1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMudmFsdWUoKSBhcyBUKSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBPdGhlciByZXNwb25zZVR5cGVzIChhcnJheWJ1ZmZlciwgYmxvYiwganNvbiwgdGV4dCkgcmV0dXJuIGJvZHlcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmJvZHkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0KFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0dFVCcsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBvc3QoXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQT1NUJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1dChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQVVQnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGF0Y2goXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUEFUQ0gnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVsZXRlKFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnREVMRVRFJywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoRCxPQUFPLEVBSUwsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FFekIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWdCekMsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFDRSxHQUFhLEVBQ2IsRUFDRSxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sTUFLSixFQUFFO1FBRU4sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZC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SUFDSCxDQUFDO0lBRVMsR0FBRyxDQUNYLFVBYUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVTLElBQUksQ0FDWixJQUFTLEVBQ1QsVUFXSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVTLEdBQUcsQ0FDWCxJQUFTLEVBQ1QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVTLEtBQUssQ0FDYixJQUFTLEVBQ1QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLE1BQU0sQ0FDZCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIERFRkFVTFRfVkVSU0lPTixcbiAgUEFSQU1fU0VQQVJBVE9SLFxuICBRVUVSWV9TRVBBUkFUT1IsXG4gIFZBTFVFX1NFUEFSQVRPUixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhU2NoZW1hRWxlbWVudCB9IGZyb20gJy4uL3NjaGVtYS9lbGVtZW50JztcbmltcG9ydCB7XG4gIFBhcnNlck9wdGlvbnMsXG4gIFBhcnNlcixcbiAgUXVlcnlPcHRpb25OYW1lcyxcbiAgUGF0aFNlZ21lbnROYW1lcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSHR0cCwgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi91dGlscy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YVBhdGhTZWdtZW50cywgT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7XG4gIGlzUXVlcnlDdXN0b21UeXBlLFxuICBPRGF0YVF1ZXJ5T3B0aW9ucyxcbiAgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyLFxuICBRdWVyeUN1c3RvbVR5cGUsXG59IGZyb20gJy4vcXVlcnknO1xuaW1wb3J0IHsgT0RhdGFSZXF1ZXN0IH0gZnJvbSAnLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyxcbiAgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyxcbiAgT0RhdGFSZXNwb25zZSxcbn0gZnJvbSAnLi9yZXNwb25zZXMvaW5kZXgnO1xuaW1wb3J0IHsgT0RhdGFPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEVudGl0eUtleTxUPiA9XG4gIHwge1xuICAgICAgcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF0/OiBUW1BdO1xuICAgIH1cbiAgfCBRdWVyeUN1c3RvbVR5cGVcbiAgfCBzdHJpbmdcbiAgfCBudW1iZXI7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVJlc291cmNlPFQ+IHtcbiAgLy8gVkFSSUFCTEVTXG4gIHB1YmxpYyBhcGk6IE9EYXRhQXBpO1xuICBwdWJsaWMgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICBwcm90ZWN0ZWQgcGF0aFNlZ21lbnRzOiBPRGF0YVBhdGhTZWdtZW50cztcbiAgcHJvdGVjdGVkIHF1ZXJ5T3B0aW9uczogT0RhdGFRdWVyeU9wdGlvbnM8VD47XG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwaTogT0RhdGFBcGksXG4gICAge1xuICAgICAgc2VnbWVudHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHNjaGVtYSxcbiAgICB9OiB7XG4gICAgICBzZWdtZW50cz86IE9EYXRhUGF0aFNlZ21lbnRzO1xuICAgICAgcXVlcnk/OiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgICAgIHNjaGVtYT86IE9EYXRhU2NoZW1hRWxlbWVudDtcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgdGhpcy5wYXRoU2VnbWVudHMgPSBzZWdtZW50cyB8fCBuZXcgT0RhdGFQYXRoU2VnbWVudHMoKTtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucyA9IHF1ZXJ5IHx8IG5ldyBPRGF0YVF1ZXJ5T3B0aW9ucygpO1xuICAgIHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBUaGUgdHlwZSBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBUaGUgdHlwZSBvZiB0aGUgcmV0dXJuXG4gICAqL1xuICByZXR1cm5UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5sYXN0KCk/LnR5cGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgQWxsIGNvdmVyZWQgdHlwZXMgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICB0eXBlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLnR5cGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYm9vbGVhbiBUaGUgcmVzb3VyY2UgaGFzIGtleSA/XG4gICAqL1xuICBoYXNLZXkoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5wYXRoU2VnbWVudHMubGFzdCh7IGtleTogdHJ1ZSB9KT8uaGFzS2V5KCkpO1xuICB9XG5cbiAgaGFzRW50aXR5S2V5KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucGF0aFNlZ21lbnRzLmdldChQYXRoU2VnbWVudE5hbWVzLmVudGl0eVNldCk/Lmhhc0tleSgpKTtcbiAgfVxuXG4gIGNsZWFyS2V5KCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5jbGVhcktleSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVsc1xuICBhc01vZGVsPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFQ+PihcbiAgICBlbnRpdHk/OiBQYXJ0aWFsPFQ+IHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgeyBhbm5vdHMsIHJlc2V0IH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczsgcmVzZXQ/OiBib29sZWFuIH0gPSB7fVxuICApOiBNIHtcbiAgICBsZXQgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD4gPSB0aGlzIGFzIE9EYXRhUmVzb3VyY2U8VD47XG4gICAgY29uc3QgdHlwZSA9IGFubm90cz8udHlwZSB8fCB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBFcnJvcignJyk7XG4gICAgY29uc3QgTW9kZWwgPSB0aGlzLmFwaS5tb2RlbEZvclR5cGUodHlwZSk7XG4gICAgbGV0IGVudGl0eVNldCA9IGFubm90cz8uZW50aXR5U2V0O1xuICAgIGlmIChlbnRpdHlTZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmFwaS5lbnRpdHlTZXQ8VD4oZW50aXR5U2V0KS5lbnRpdHkoZW50aXR5IGFzIFBhcnRpYWw8VD4pO1xuICAgICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkodGhpcy5xdWVyeU9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9kZWwoZW50aXR5LCB7IHJlc291cmNlLCBhbm5vdHMsIHJlc2V0IH0pIGFzIE07XG4gIH1cblxuICBhc0NvbGxlY3Rpb248TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4sIEMgZXh0ZW5kcyBPRGF0YUNvbGxlY3Rpb248VCwgTT4+KFxuICAgIGVudGl0aWVzPzogUGFydGlhbDxUPltdIHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH1bXSxcbiAgICB7XG4gICAgICBhbm5vdHMsXG4gICAgICByZXNldCxcbiAgICB9OiB7IGFubm90cz86IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczsgcmVzZXQ/OiBib29sZWFuIH0gPSB7fVxuICApOiBDIHtcbiAgICBsZXQgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD4gPSB0aGlzIGFzIE9EYXRhUmVzb3VyY2U8VD47XG4gICAgY29uc3QgdHlwZSA9IGFubm90cz8udHlwZSB8fCB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBFcnJvcignJyk7XG4gICAgY29uc3QgQ29sbGVjdGlvbiA9IHRoaXMuYXBpLmNvbGxlY3Rpb25Gb3JUeXBlKHR5cGUpO1xuICAgIGxldCBwYXRoID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKHBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmFwaS5lbnRpdHlTZXQ8VD4ocGF0aCk7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKGVudGl0aWVzLCB7IHJlc291cmNlLCBhbm5vdHMsIHJlc2V0IH0pIGFzIEM7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgaXNTdWJ0eXBlT2Yob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvdGhlci5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zY2hlbWE/LmlzU3VidHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNTdXBlcnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdXBlcnR5cGVPZihvdGhlci5zY2hlbWEpXG4gICAgKTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+LCB0ZXN0PzogJ3BhdGgnIHwgJ3BhcmFtcycpIHtcbiAgICBjb25zdCBbc2VsZlBhdGgsIHNlbGZQYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgY29uc3QgW290aGVyUGF0aCwgb3RoZXJQYXJhbXNdID0gb3RoZXIucGF0aEFuZFBhcmFtcygpO1xuICAgIHJldHVybiB0ZXN0ID09PSAncGF0aCdcbiAgICAgID8gb3RoZXJQYXRoID09PSBzZWxmUGF0aFxuICAgICAgOiB0ZXN0ID09PSAncGFyYW1zJ1xuICAgICAgPyBUeXBlcy5pc0VxdWFsKHNlbGZQYXJhbXMsIG90aGVyUGFyYW1zKVxuICAgICAgOiBvdGhlclBhdGggPT09IHNlbGZQYXRoICYmIFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpO1xuICB9XG5cbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgY29uc3QgW3NwYXRoLCBzcGFyYW1zXSA9IHRoaXMucGF0aFNlZ21lbnRzLnBhdGhBbmRQYXJhbXMoZXNjYXBlKTtcbiAgICBjb25zdCBbLCBxcGFyYW1zXSA9IHRoaXMucXVlcnlPcHRpb25zLnBhdGhBbmRQYXJhbXMoZXNjYXBlKTtcblxuICAgIHJldHVybiBbc3BhdGgsIHsgLi4uc3BhcmFtcywgLi4ucXBhcmFtcyB9XTtcbiAgfVxuXG4gIGVuZHBvaW50VXJsKHBhcmFtczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBbcGF0aF0gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIGxldCBxdWVyeVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgIC5tYXAoKGUpID0+IGAke2VbMF19JHtWQUxVRV9TRVBBUkFUT1J9JHtlWzFdfWApXG4gICAgICAuam9pbihQQVJBTV9TRVBBUkFUT1IpO1xuICAgIHJldHVybiBxdWVyeVN0cmluZyA/IGAke3BhdGh9JHtRVUVSWV9TRVBBUkFUT1J9JHtxdWVyeVN0cmluZ31gIDogcGF0aDtcbiAgfVxuXG4gIGNsb25lKCk6IE9EYXRhUmVzb3VyY2U8VD4ge1xuICAgIGNvbnN0IEN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBPRGF0YVJlc291cmNlO1xuICAgIHJldHVybiBuZXcgQ3Rvcih0aGlzLmFwaSwge1xuICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgIHNlZ21lbnRzOiB0aGlzLmNsb25lU2VnbWVudHMoKSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmNsb25lUXVlcnk8VD4oKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX19wYXJzZXIoXG4gICAgdmFsdWU6IGFueSxcbiAgICBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyxcbiAgICB0eXBlPzogc3RyaW5nXG4gICk6IFBhcnNlcjxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZGF0YVR5cGUgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICAgID8gT0RhdGFIZWxwZXJbb3B0aW9ucy52ZXJzaW9uIHx8IERFRkFVTFRfVkVSU0lPTl0udHlwZSh2YWx1ZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGRhdGFUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFBhcnNlciBmcm9tIGRhdGEgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4oZGF0YVR5cGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJiAncGFyc2VyJyBpbiB0aGlzLnNjaGVtYSkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2Ugc2NoZW1hXG4gICAgICByZXR1cm4gKDxhbnk+dGhpcy5zY2hlbWEpLnBhcnNlciBhcyBQYXJzZXI8VD4gfCB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmICh0eXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHR5cGVcbiAgICAgIHJldHVybiB0aGlzLmFwaS5wYXJzZXJGb3JUeXBlPFQ+KHR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZGVzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPSBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMucGFyc2VyT3B0aW9ucztcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBfZCA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdkZXNlcmlhbGl6ZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX2QodiwgcGFyc2VyT3B0aW9ucykpXG4gICAgICA6IF9kKHZhbHVlLCBwYXJzZXJPcHRpb25zKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9IG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucy5wYXJzZXJPcHRpb25zO1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMudHlwZSgpO1xuICAgIGNvbnN0IF9zID0gKHZhbHVlOiBhbnksIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ3NlcmlhbGl6ZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLnNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9zKHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgOiBfcyh2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gIH1cblxuICBlbmNvZGUodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPSBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMucGFyc2VyT3B0aW9ucztcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfZSA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdlbmNvZGUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5lbmNvZGUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZSh2LCBwYXJzZXJPcHRpb25zKSlcbiAgICAgIDogX2UodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZWdtZW50czogdGhpcy5wYXRoU2VnbWVudHMudG9KU09OKCksXG4gICAgICBvcHRpb25zOiB0aGlzLnF1ZXJ5T3B0aW9ucy50b0pTT04oKSxcbiAgICB9O1xuICB9XG5cbiAgY2xvbmVTZWdtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMuY2xvbmUoKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBRdWVyeSBPcHRpb25zXG4gIGNsZWFyUXVlcnkoKSB7XG4gICAgdGhpcy5xdWVyeU9wdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIGNsb25lUXVlcnk8UD4oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlPcHRpb25zLmNsb25lPFA+KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcGF0aCBzZWdtZW50cyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBzZWdtZW50c1xuICAgKiBAcmV0dXJucyBPRGF0YUFjdGlvblJlc291cmNlXG4gICAqL1xuICBzZWdtZW50KGY6IChxOiBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXI8VD4sIHM/OiBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+KSA9PiB2b2lkKSB7XG4gICAgLypcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3Qgc2NoZW1hID0gdHlwZSA/IHRoaXMuYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgKi9cbiAgICBmKG5ldyBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXI8VD4odGhpcy5wYXRoU2VnbWVudHMpLCB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGUgPyB0aGlzLnNjaGVtYSA6IHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+LCBzPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPikgPT4gdm9pZCkge1xuICAgIC8qXG4gICAgY29uc3QgdHlwZSA9IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGNvbnN0IHNjaGVtYSA9IHR5cGUgPyB0aGlzLmFwaS5maW5kU3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHR5cGUpIDogdW5kZWZpbmVkO1xuICAgICovXG4gICAgZihuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSwgdGhpcy5zY2hlbWEgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlID8gdGhpcy5zY2hlbWEgOiB1bmRlZmluZWQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmVLZXk8VD4oXG4gICAgdmFsdWU6IGFueSxcbiAgICBzY2hlbWE/OiBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICk6IEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGlzUXVlcnlDdXN0b21UeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBzY2hlbWEgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlXG4gICAgICAgID8gc2NoZW1hLnJlc29sdmVLZXkodmFsdWUpXG4gICAgICAgIDogT2JqZWN0cy5yZXNvbHZlS2V5KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlIGFzIEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlS2V5KHZhbHVlOiBhbnkpOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBPRGF0YVJlc291cmNlLnJlc29sdmVLZXk8VD4oXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMuc2NoZW1hIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD5cbiAgICApO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vIEJhc2UgUmVxdWVzdHNcbiAgcHJvdGVjdGVkIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBhcGlPcHRpb25zID0gdGhpcy5hcGkub3B0aW9ucztcbiAgICBsZXQgcGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgfHwge307XG4gICAgaWYgKG9wdGlvbnMud2l0aENvdW50KSB7XG4gICAgICBwYXJhbXMgPSBIdHRwLm1lcmdlSHR0cFBhcmFtcyhwYXJhbXMsIGFwaU9wdGlvbnMuaGVscGVyLmNvdW50UGFyYW0oKSk7XG4gICAgfVxuXG4gICAgbGV0IGV0YWcgPSBvcHRpb25zLmV0YWc7XG4gICAgaWYgKGV0YWcgPT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuYm9keSkpIHtcbiAgICAgIGV0YWcgPSBhcGlPcHRpb25zLmhlbHBlci5ldGFnKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBPRGF0YVJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgZXRhZyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSxcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICByZXNvdXJjZTogdGhpcyxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgcmVzcG9uc2VUeXBlOiBvcHRpb25zLnJlc3BvbnNlVHlwZSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRpb25zLmZldGNoUG9saWN5LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBvcHRpb25zLndpdGhDcmVkZW50aWFscyxcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM6IG9wdGlvbnMuYm9keVF1ZXJ5T3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcyQgPSB0aGlzLmFwaS5yZXF1ZXN0KHJlcXVlc3QpO1xuICAgIHN3aXRjaCAob3B0aW9ucy5yZXNwb25zZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2VudGl0aWVzJzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmVudGl0aWVzKCkpKTtcbiAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5lbnRpdHkoKSkpO1xuICAgICAgY2FzZSAncHJvcGVydHknOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMucHJvcGVydHkoKSkpO1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMudmFsdWUoKSBhcyBUKSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBPdGhlciByZXNwb25zZVR5cGVzIChhcnJheWJ1ZmZlciwgYmxvYiwganNvbiwgdGV4dCkgcmV0dXJuIGJvZHlcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmJvZHkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0KFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0dFVCcsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBvc3QoXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQT1NUJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1dChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQVVQnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGF0Y2goXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUEFUQ0gnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVsZXRlKFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnREVMRVRFJywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|