@coolon/angular-ui-powerups 0.0.51 → 0.0.54
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/bundles/coolon-angular-ui-powerups.umd.js +382 -746
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +2 -2
- package/esm2015/index.js +2 -2
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +2 -2
- package/esm2015/lib/place/guards/place-route.guard.js +2 -2
- package/esm2015/lib/place/index.js +2 -2
- package/esm2015/lib/place/route/parameter-definition.class.js +11 -35
- package/esm2015/lib/place/route/parameter-sanitiser.js +3 -4
- package/esm2015/lib/place/route/parameter-snapshot.js +65 -209
- package/esm2015/lib/place/route/route-parameter-value.js +223 -0
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +2 -2
- package/esm5/index.js +2 -2
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +2 -2
- package/esm5/lib/place/guards/place-route.guard.js +2 -2
- package/esm5/lib/place/index.js +2 -2
- package/esm5/lib/place/route/parameter-definition.class.js +12 -44
- package/esm5/lib/place/route/parameter-sanitiser.js +3 -4
- package/esm5/lib/place/route/parameter-snapshot.js +69 -274
- package/esm5/lib/place/route/route-parameter-value.js +309 -0
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +298 -539
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +385 -748
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/place/index.d.ts +1 -1
- package/lib/place/route/parameter-definition.class.d.ts +2 -2
- package/lib/place/route/parameter-sanitiser.d.ts +2 -2
- package/lib/place/route/parameter-snapshot.d.ts +5 -27
- package/lib/place/route/route-parameter-value.d.ts +42 -0
- package/package.json +1 -1
- package/esm2015/lib/place/route/route-parameter-sanitiser.js +0 -296
- package/esm5/lib/place/route/route-parameter-sanitiser.js +0 -435
- package/lib/place/route/route-parameter-sanitiser.d.ts +0 -44
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
|
+
import { Trace } from '@coolon/pectin';
|
|
6
7
|
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
7
|
-
import _ from 'lodash';
|
|
8
8
|
import { ParameterDefinition } from './parameter-definition.class';
|
|
9
|
+
import { RouteParameterValue } from './route-parameter-value';
|
|
9
10
|
var ParameterSnapshot = /** @class */ (function () {
|
|
10
|
-
function ParameterSnapshot(placeDefinition,
|
|
11
|
+
function ParameterSnapshot(placeDefinition, parameters) {
|
|
11
12
|
this.placeDefinition = placeDefinition;
|
|
12
|
-
this.
|
|
13
|
+
this.parameters = parameters;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
16
|
* @param {?} other
|
|
@@ -24,18 +25,18 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
24
25
|
function (other, debug) {
|
|
25
26
|
if (debug === void 0) { debug = false; }
|
|
26
27
|
/** @type {?} */
|
|
27
|
-
var changed = this.
|
|
28
|
+
var changed = this.parameters.find((/**
|
|
28
29
|
* @param {?} r
|
|
29
30
|
* @return {?}
|
|
30
31
|
*/
|
|
31
32
|
function (r) {
|
|
32
|
-
return
|
|
33
|
+
return r.hasChanged(other.getValueOf(r.definition));
|
|
33
34
|
}));
|
|
34
35
|
if (changed && debug) {
|
|
35
36
|
console.log({
|
|
36
|
-
name: changed.
|
|
37
|
+
name: changed.definition.name,
|
|
37
38
|
mine: changed.value,
|
|
38
|
-
theirs: other.getValueOf(changed.
|
|
39
|
+
theirs: other.getValueOf(changed.definition)
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
42
|
return !!changed;
|
|
@@ -51,11 +52,11 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
51
52
|
* @return {?}
|
|
52
53
|
*/
|
|
53
54
|
function (parameterDef) {
|
|
54
|
-
return this.
|
|
55
|
+
return this.parameters.find((/**
|
|
55
56
|
* @param {?} r
|
|
56
57
|
* @return {?}
|
|
57
58
|
*/
|
|
58
|
-
function (r) { return r.
|
|
59
|
+
function (r) { return r.definition === parameterDef; }));
|
|
59
60
|
};
|
|
60
61
|
/**
|
|
61
62
|
* @template T, S
|
|
@@ -91,11 +92,11 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
91
92
|
*/
|
|
92
93
|
function (name) {
|
|
93
94
|
/** @type {?} */
|
|
94
|
-
var resolvedParameter = this.
|
|
95
|
+
var resolvedParameter = this.parameters.find((/**
|
|
95
96
|
* @param {?} r
|
|
96
97
|
* @return {?}
|
|
97
98
|
*/
|
|
98
|
-
function (r) { return r.
|
|
99
|
+
function (r) { return r.definition.name === name; }));
|
|
99
100
|
return resolvedParameter ? resolvedParameter.value : null;
|
|
100
101
|
};
|
|
101
102
|
/**
|
|
@@ -109,11 +110,11 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
109
110
|
function () {
|
|
110
111
|
// RouteId's are never arrays: see parameter-decorators.ts createDefinition methods. It would be nice to
|
|
111
112
|
// capture this in the type system though
|
|
112
|
-
return (/** @type {?} */ (this.
|
|
113
|
+
return (/** @type {?} */ (this.parameters.find((/**
|
|
113
114
|
* @param {?} p
|
|
114
115
|
* @return {?}
|
|
115
116
|
*/
|
|
116
|
-
function (p) { return p.
|
|
117
|
+
function (p) { return p.definition.isRouteId; }))));
|
|
117
118
|
};
|
|
118
119
|
/**
|
|
119
120
|
* @private
|
|
@@ -124,11 +125,11 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
124
125
|
* @return {?}
|
|
125
126
|
*/
|
|
126
127
|
function () {
|
|
127
|
-
return this.
|
|
128
|
+
return this.parameters.filter((/**
|
|
128
129
|
* @param {?} r
|
|
129
130
|
* @return {?}
|
|
130
131
|
*/
|
|
131
|
-
function (r) { return !r.
|
|
132
|
+
function (r) { return !r.definition.isRouteId; }));
|
|
132
133
|
};
|
|
133
134
|
/**
|
|
134
135
|
* @return {?}
|
|
@@ -153,43 +154,37 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
153
154
|
/**
|
|
154
155
|
* @return {?}
|
|
155
156
|
*/
|
|
156
|
-
ParameterSnapshot.prototype.
|
|
157
|
+
ParameterSnapshot.prototype.getNonEmptyParameters = /**
|
|
157
158
|
* @return {?}
|
|
158
159
|
*/
|
|
159
160
|
function () {
|
|
160
|
-
/**
|
|
161
|
-
var params = {};
|
|
162
|
-
/** @type {?} */
|
|
163
|
-
var routeIdParam = this.resolved.filter((/**
|
|
161
|
+
return this.parameters.filter((/**
|
|
164
162
|
* @param {?} p
|
|
165
163
|
* @return {?}
|
|
166
164
|
*/
|
|
167
|
-
function (p) { return !p.
|
|
168
|
-
* @param {?} p
|
|
169
|
-
* @return {?}
|
|
170
|
-
*/
|
|
171
|
-
function (p) {
|
|
172
|
-
params[p.parameterDef.name] = p.formattedValue();
|
|
173
|
-
}));
|
|
174
|
-
return params;
|
|
165
|
+
function (p) { return !p.isEmpty(); }));
|
|
175
166
|
};
|
|
176
167
|
/**
|
|
177
168
|
* @return {?}
|
|
178
169
|
*/
|
|
179
|
-
ParameterSnapshot.prototype.
|
|
170
|
+
ParameterSnapshot.prototype.getFormattedParameters = /**
|
|
180
171
|
* @return {?}
|
|
181
172
|
*/
|
|
182
173
|
function () {
|
|
183
174
|
/** @type {?} */
|
|
184
175
|
var params = {};
|
|
185
176
|
/** @type {?} */
|
|
186
|
-
var routeIdParam = this.
|
|
177
|
+
var routeIdParam = this.getNonEmptyParameters()
|
|
178
|
+
.filter((/**
|
|
187
179
|
* @param {?} p
|
|
188
180
|
* @return {?}
|
|
189
181
|
*/
|
|
190
|
-
function (p) {
|
|
191
|
-
|
|
192
|
-
|
|
182
|
+
function (p) { return !p.definition.isRouteId; }))
|
|
183
|
+
.forEach((/**
|
|
184
|
+
* @param {?} p
|
|
185
|
+
* @return {?}
|
|
186
|
+
*/
|
|
187
|
+
function (p) { return params[p.definition.name] = p.formattedValue(); }));
|
|
193
188
|
return params;
|
|
194
189
|
};
|
|
195
190
|
/**
|
|
@@ -202,12 +197,12 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
202
197
|
/** @type {?} */
|
|
203
198
|
var params = {};
|
|
204
199
|
/** @type {?} */
|
|
205
|
-
var routeIdParam = this.
|
|
200
|
+
var routeIdParam = this.parameters.forEach((/**
|
|
206
201
|
* @param {?} p
|
|
207
202
|
* @return {?}
|
|
208
203
|
*/
|
|
209
204
|
function (p) {
|
|
210
|
-
params[p.
|
|
205
|
+
params[p.definition.name] = p.value;
|
|
211
206
|
}));
|
|
212
207
|
return params;
|
|
213
208
|
};
|
|
@@ -224,12 +219,12 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
224
219
|
* @return {?}
|
|
225
220
|
*/
|
|
226
221
|
function (parameter, value) {
|
|
227
|
-
return new ParameterSnapshot(this.placeDefinition, this.
|
|
222
|
+
return new ParameterSnapshot(this.placeDefinition, this.parameters.map((/**
|
|
228
223
|
* @param {?} p
|
|
229
224
|
* @return {?}
|
|
230
225
|
*/
|
|
231
226
|
function (p) {
|
|
232
|
-
return p.
|
|
227
|
+
return p.definition === parameter ? p.replace(value) : p;
|
|
233
228
|
})));
|
|
234
229
|
};
|
|
235
230
|
/**
|
|
@@ -251,10 +246,10 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
251
246
|
return [4 /*yield*/, routeId.sanitise(this, injector)];
|
|
252
247
|
case 1:
|
|
253
248
|
sanitisedValue = _a.sent();
|
|
254
|
-
if (
|
|
249
|
+
if (routeId.hasChanged(sanitisedValue)) {
|
|
255
250
|
// if the route id has changed we redirect immediately as other
|
|
256
251
|
// parameter sanitisers might use it.
|
|
257
|
-
return [2 /*return*/, this.replace(routeId.
|
|
252
|
+
return [2 /*return*/, this.replace(routeId.definition, sanitisedValue)];
|
|
258
253
|
}
|
|
259
254
|
_a.label = 2;
|
|
260
255
|
case 2:
|
|
@@ -268,8 +263,8 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
268
263
|
return [4 /*yield*/, routeParameter.sanitise(this, injector)];
|
|
269
264
|
case 4:
|
|
270
265
|
sanitisedValue = _a.sent();
|
|
271
|
-
if (
|
|
272
|
-
result = result.replace(routeParameter.
|
|
266
|
+
if (routeParameter.hasChanged(sanitisedValue)) {
|
|
267
|
+
result = result.replace(routeParameter.definition, sanitisedValue);
|
|
273
268
|
}
|
|
274
269
|
_a.label = 5;
|
|
275
270
|
case 5:
|
|
@@ -285,7 +280,7 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
285
280
|
Memoize(),
|
|
286
281
|
tslib_1.__metadata("design:type", Function),
|
|
287
282
|
tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
|
|
288
|
-
tslib_1.__metadata("design:returntype",
|
|
283
|
+
tslib_1.__metadata("design:returntype", RouteParameterValue)
|
|
289
284
|
], ParameterSnapshot.prototype, "getParameter", null);
|
|
290
285
|
tslib_1.__decorate([
|
|
291
286
|
Memoize(),
|
|
@@ -303,7 +298,7 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
303
298
|
Memoize(),
|
|
304
299
|
tslib_1.__metadata("design:type", Function),
|
|
305
300
|
tslib_1.__metadata("design:paramtypes", []),
|
|
306
|
-
tslib_1.__metadata("design:returntype",
|
|
301
|
+
tslib_1.__metadata("design:returntype", RouteParameterValue.Scalar)
|
|
307
302
|
], ParameterSnapshot.prototype, "getRouteIdParameter", null);
|
|
308
303
|
tslib_1.__decorate([
|
|
309
304
|
Memoize(),
|
|
@@ -311,6 +306,12 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
311
306
|
tslib_1.__metadata("design:paramtypes", []),
|
|
312
307
|
tslib_1.__metadata("design:returntype", Array)
|
|
313
308
|
], ParameterSnapshot.prototype, "getRouteParameters", null);
|
|
309
|
+
tslib_1.__decorate([
|
|
310
|
+
Trace(),
|
|
311
|
+
tslib_1.__metadata("design:type", Function),
|
|
312
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
313
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
314
|
+
], ParameterSnapshot.prototype, "getFormattedParameters", null);
|
|
314
315
|
return ParameterSnapshot;
|
|
315
316
|
}());
|
|
316
317
|
export { ParameterSnapshot };
|
|
@@ -321,7 +322,7 @@ if (false) {
|
|
|
321
322
|
* @type {?}
|
|
322
323
|
* @private
|
|
323
324
|
*/
|
|
324
|
-
ParameterSnapshot.prototype.
|
|
325
|
+
ParameterSnapshot.prototype.parameters;
|
|
325
326
|
}
|
|
326
327
|
(function (ParameterSnapshot) {
|
|
327
328
|
/**
|
|
@@ -334,31 +335,11 @@ if (false) {
|
|
|
334
335
|
/** @type {?} */
|
|
335
336
|
var paramMap = new ConsolidatedParameterMap(params, urlSegments);
|
|
336
337
|
/** @type {?} */
|
|
337
|
-
var resolvedParameters = placeDef.getRouteParameters()
|
|
338
|
-
.map((/**
|
|
338
|
+
var resolvedParameters = placeDef.getRouteParameters().map((/**
|
|
339
339
|
* @param {?} def
|
|
340
340
|
* @return {?}
|
|
341
341
|
*/
|
|
342
|
-
function (def) {
|
|
343
|
-
if (def.isArray) {
|
|
344
|
-
/** @type {?} */
|
|
345
|
-
var value = paramMap.has(def.name) ? paramMap.getAll(def.name).filter((/**
|
|
346
|
-
* @param {?} s
|
|
347
|
-
* @return {?}
|
|
348
|
-
*/
|
|
349
|
-
function (s) { return !_.isEmpty(s); })).map((/**
|
|
350
|
-
* @param {?} raw
|
|
351
|
-
* @return {?}
|
|
352
|
-
*/
|
|
353
|
-
function (raw) { return def.type.parse(raw); })) : null;
|
|
354
|
-
return new ResolvedArrayParameter(def, value);
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
/** @type {?} */
|
|
358
|
-
var value = paramMap.has(def.name) ? def.type.parse(paramMap.get(def.name)) : null;
|
|
359
|
-
return new ResolvedValueParameter(def, value);
|
|
360
|
-
}
|
|
361
|
-
}));
|
|
342
|
+
function (def) { return RouteParameterValue.create(def, paramMap); }));
|
|
362
343
|
return new ParameterSnapshot(placeDef, resolvedParameters);
|
|
363
344
|
}
|
|
364
345
|
ParameterSnapshot.create = create;
|
|
@@ -367,12 +348,7 @@ if (false) {
|
|
|
367
348
|
* include the segment params in the paramMap as well as each segment returns an empty
|
|
368
349
|
* param map even when `parameter`s has content.
|
|
369
350
|
*/
|
|
370
|
-
var /**
|
|
371
|
-
* This a work around for the fact that an activated route with multiple segments doesn't
|
|
372
|
-
* include the segment params in the paramMap as well as each segment returns an empty
|
|
373
|
-
* param map even when `parameter`s has content.
|
|
374
|
-
*/
|
|
375
|
-
ConsolidatedParameterMap = /** @class */ (function () {
|
|
351
|
+
var ConsolidatedParameterMap = /** @class */ (function () {
|
|
376
352
|
function ConsolidatedParameterMap(paramMap, urlSegments) {
|
|
377
353
|
this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
|
|
378
354
|
* @param {?} s
|
|
@@ -429,6 +405,26 @@ if (false) {
|
|
|
429
405
|
*/
|
|
430
406
|
function (m) { return m.has(name); }));
|
|
431
407
|
};
|
|
408
|
+
Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
|
|
409
|
+
get: /**
|
|
410
|
+
* @return {?}
|
|
411
|
+
*/
|
|
412
|
+
function () {
|
|
413
|
+
return this.paramMaps.reduce((/**
|
|
414
|
+
* @param {?} result
|
|
415
|
+
* @param {?} params
|
|
416
|
+
* @return {?}
|
|
417
|
+
*/
|
|
418
|
+
function (result, params) { return result.concat(params.keys); }), []);
|
|
419
|
+
},
|
|
420
|
+
enumerable: true,
|
|
421
|
+
configurable: true
|
|
422
|
+
});
|
|
423
|
+
tslib_1.__decorate([
|
|
424
|
+
Memoize(),
|
|
425
|
+
tslib_1.__metadata("design:type", Array),
|
|
426
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
427
|
+
], ConsolidatedParameterMap.prototype, "keys", null);
|
|
432
428
|
return ConsolidatedParameterMap;
|
|
433
429
|
}());
|
|
434
430
|
if (false) {
|
|
@@ -496,206 +492,5 @@ if (false) {
|
|
|
496
492
|
*/
|
|
497
493
|
ParamMapAdapter.prototype.params;
|
|
498
494
|
}
|
|
499
|
-
/**
|
|
500
|
-
* @abstract
|
|
501
|
-
* @template T, S
|
|
502
|
-
*/
|
|
503
|
-
var /**
|
|
504
|
-
* @abstract
|
|
505
|
-
* @template T, S
|
|
506
|
-
*/
|
|
507
|
-
ResolvedParameter = /** @class */ (function () {
|
|
508
|
-
function ResolvedParameter(parameterDef, value) {
|
|
509
|
-
this.parameterDef = parameterDef;
|
|
510
|
-
this.value = value;
|
|
511
|
-
}
|
|
512
|
-
/**
|
|
513
|
-
* @return {?}
|
|
514
|
-
*/
|
|
515
|
-
ResolvedParameter.prototype.isRouteId = /**
|
|
516
|
-
* @return {?}
|
|
517
|
-
*/
|
|
518
|
-
function () {
|
|
519
|
-
return this.parameterDef.isRouteId;
|
|
520
|
-
};
|
|
521
|
-
/**
|
|
522
|
-
* @param {?} visit
|
|
523
|
-
* @param {?} injector
|
|
524
|
-
* @return {?}
|
|
525
|
-
*/
|
|
526
|
-
ResolvedParameter.prototype.sanitise = /**
|
|
527
|
-
* @param {?} visit
|
|
528
|
-
* @param {?} injector
|
|
529
|
-
* @return {?}
|
|
530
|
-
*/
|
|
531
|
-
function (visit, injector) {
|
|
532
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
533
|
-
var sanitiser;
|
|
534
|
-
return tslib_1.__generator(this, function (_a) {
|
|
535
|
-
sanitiser = this.parameterDef.getSanitiser(injector);
|
|
536
|
-
if (sanitiser) {
|
|
537
|
-
return [2 /*return*/, sanitiser.sanitise(this.parameterDef, this.value, visit)];
|
|
538
|
-
}
|
|
539
|
-
else {
|
|
540
|
-
return [2 /*return*/, this.value];
|
|
541
|
-
}
|
|
542
|
-
return [2 /*return*/];
|
|
543
|
-
});
|
|
544
|
-
});
|
|
545
|
-
};
|
|
546
|
-
return ResolvedParameter;
|
|
547
|
-
}());
|
|
548
|
-
ParameterSnapshot.ResolvedParameter = ResolvedParameter;
|
|
549
|
-
if (false) {
|
|
550
|
-
/** @type {?} */
|
|
551
|
-
ResolvedParameter.prototype.parameterDef;
|
|
552
|
-
/** @type {?} */
|
|
553
|
-
ResolvedParameter.prototype.value;
|
|
554
|
-
/**
|
|
555
|
-
* @abstract
|
|
556
|
-
* @param {?} dest
|
|
557
|
-
* @return {?}
|
|
558
|
-
*/
|
|
559
|
-
ResolvedParameter.prototype.injectRouteParam = function (dest) { };
|
|
560
|
-
/**
|
|
561
|
-
* @abstract
|
|
562
|
-
* @param {?} otherValue
|
|
563
|
-
* @return {?}
|
|
564
|
-
*/
|
|
565
|
-
ResolvedParameter.prototype.isSame = function (otherValue) { };
|
|
566
|
-
/**
|
|
567
|
-
* @abstract
|
|
568
|
-
* @return {?}
|
|
569
|
-
*/
|
|
570
|
-
ResolvedParameter.prototype.formattedValue = function () { };
|
|
571
|
-
/**
|
|
572
|
-
* @abstract
|
|
573
|
-
* @param {?} value
|
|
574
|
-
* @return {?}
|
|
575
|
-
*/
|
|
576
|
-
ResolvedParameter.prototype.replace = function (value) { };
|
|
577
|
-
}
|
|
578
|
-
/**
|
|
579
|
-
* @template T
|
|
580
|
-
*/
|
|
581
|
-
var /**
|
|
582
|
-
* @template T
|
|
583
|
-
*/
|
|
584
|
-
ResolvedValueParameter = /** @class */ (function (_super) {
|
|
585
|
-
tslib_1.__extends(ResolvedValueParameter, _super);
|
|
586
|
-
function ResolvedValueParameter() {
|
|
587
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
588
|
-
}
|
|
589
|
-
/**
|
|
590
|
-
* @param {?} otherValue
|
|
591
|
-
* @return {?}
|
|
592
|
-
*/
|
|
593
|
-
ResolvedValueParameter.prototype.isSame = /**
|
|
594
|
-
* @param {?} otherValue
|
|
595
|
-
* @return {?}
|
|
596
|
-
*/
|
|
597
|
-
function (otherValue) {
|
|
598
|
-
return this.value === otherValue;
|
|
599
|
-
};
|
|
600
|
-
/**
|
|
601
|
-
* @param {?} dest
|
|
602
|
-
* @return {?}
|
|
603
|
-
*/
|
|
604
|
-
ResolvedValueParameter.prototype.injectRouteParam = /**
|
|
605
|
-
* @param {?} dest
|
|
606
|
-
* @return {?}
|
|
607
|
-
*/
|
|
608
|
-
function (dest) {
|
|
609
|
-
dest[this.parameterDef.name] = this.parameterDef.type.format(this.value);
|
|
610
|
-
};
|
|
611
|
-
/**
|
|
612
|
-
* @param {?} value
|
|
613
|
-
* @return {?}
|
|
614
|
-
*/
|
|
615
|
-
ResolvedValueParameter.prototype.replace = /**
|
|
616
|
-
* @param {?} value
|
|
617
|
-
* @return {?}
|
|
618
|
-
*/
|
|
619
|
-
function (value) {
|
|
620
|
-
return new ResolvedValueParameter(this.parameterDef, value);
|
|
621
|
-
};
|
|
622
|
-
/**
|
|
623
|
-
* @return {?}
|
|
624
|
-
*/
|
|
625
|
-
ResolvedValueParameter.prototype.formattedValue = /**
|
|
626
|
-
* @return {?}
|
|
627
|
-
*/
|
|
628
|
-
function () {
|
|
629
|
-
return !_.isNil(this.value) ? this.parameterDef.type.format(this.value) : null;
|
|
630
|
-
};
|
|
631
|
-
return ResolvedValueParameter;
|
|
632
|
-
}(ResolvedParameter));
|
|
633
|
-
ParameterSnapshot.ResolvedValueParameter = ResolvedValueParameter;
|
|
634
|
-
/**
|
|
635
|
-
* @template T
|
|
636
|
-
*/
|
|
637
|
-
var /**
|
|
638
|
-
* @template T
|
|
639
|
-
*/
|
|
640
|
-
ResolvedArrayParameter = /** @class */ (function (_super) {
|
|
641
|
-
tslib_1.__extends(ResolvedArrayParameter, _super);
|
|
642
|
-
function ResolvedArrayParameter() {
|
|
643
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
644
|
-
}
|
|
645
|
-
/**
|
|
646
|
-
* @param {?} otherValue
|
|
647
|
-
* @return {?}
|
|
648
|
-
*/
|
|
649
|
-
ResolvedArrayParameter.prototype.isSame = /**
|
|
650
|
-
* @param {?} otherValue
|
|
651
|
-
* @return {?}
|
|
652
|
-
*/
|
|
653
|
-
function (otherValue) {
|
|
654
|
-
return _.isEqual(this.value, otherValue);
|
|
655
|
-
};
|
|
656
|
-
/**
|
|
657
|
-
* @param {?} dest
|
|
658
|
-
* @return {?}
|
|
659
|
-
*/
|
|
660
|
-
ResolvedArrayParameter.prototype.injectRouteParam = /**
|
|
661
|
-
* @param {?} dest
|
|
662
|
-
* @return {?}
|
|
663
|
-
*/
|
|
664
|
-
function (dest) {
|
|
665
|
-
var _this = this;
|
|
666
|
-
dest[this.parameterDef.name] = this.value.map((/**
|
|
667
|
-
* @param {?} v
|
|
668
|
-
* @return {?}
|
|
669
|
-
*/
|
|
670
|
-
function (v) { return _this.parameterDef.type.format(v); }));
|
|
671
|
-
};
|
|
672
|
-
/**
|
|
673
|
-
* @param {?} value
|
|
674
|
-
* @return {?}
|
|
675
|
-
*/
|
|
676
|
-
ResolvedArrayParameter.prototype.replace = /**
|
|
677
|
-
* @param {?} value
|
|
678
|
-
* @return {?}
|
|
679
|
-
*/
|
|
680
|
-
function (value) {
|
|
681
|
-
return new ResolvedArrayParameter(this.parameterDef, value);
|
|
682
|
-
};
|
|
683
|
-
/**
|
|
684
|
-
* @return {?}
|
|
685
|
-
*/
|
|
686
|
-
ResolvedArrayParameter.prototype.formattedValue = /**
|
|
687
|
-
* @return {?}
|
|
688
|
-
*/
|
|
689
|
-
function () {
|
|
690
|
-
var _this = this;
|
|
691
|
-
return this.value ? this.value.map((/**
|
|
692
|
-
* @param {?} v
|
|
693
|
-
* @return {?}
|
|
694
|
-
*/
|
|
695
|
-
function (v) { return _this.parameterDef.type.format(v); })) : [];
|
|
696
|
-
};
|
|
697
|
-
return ResolvedArrayParameter;
|
|
698
|
-
}(ResolvedParameter));
|
|
699
|
-
ParameterSnapshot.ResolvedArrayParameter = ResolvedArrayParameter;
|
|
700
495
|
})(ParameterSnapshot || (ParameterSnapshot = {}));
|
|
701
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkU7SUFFRSwyQkFBcUIsZUFBZ0MsRUFBbUIsUUFBeUQ7UUFBNUcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQWlEO0lBQ2pJLENBQUM7Ozs7OztJQUVELHNDQUFVOzs7OztJQUFWLFVBQVcsS0FBd0IsRUFBRSxLQUFhO1FBQWIsc0JBQUEsRUFBQSxhQUFhOztZQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxFQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDL0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQy9DLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25CLENBQUM7Ozs7OztJQUdELHdDQUFZOzs7OztJQUFaLFVBQW1C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QUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDOzs7OztRQUVELGlEQUFnQjs7OztRQUFoQixVQUFpQixJQUFRO1lBQXpCLGlCQUVDO1lBREMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQztRQUN2RixDQUFDOzs7OztRQUVELHdDQUFPOzs7O1FBQVAsVUFBUSxLQUFVO1lBQ2hCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUM7Ozs7UUFFRCwrQ0FBYzs7O1FBQWQ7WUFBQSxpQkFFQztZQURDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pGLENBQUM7UUFFSCw2QkFBQztJQUFELENBQUMsQUFsQkQsQ0FBK0MsaUJBQWlCLEdBa0IvRDtJQWxCWSx3Q0FBc0IseUJBa0JsQyxDQUFBO0FBRUgsQ0FBQyxFQXRJZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQXNJakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUGFyYW1NYXAsIFVybFNlZ21lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyU25hcHNob3QgaW1wbGVtZW50cyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24sIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWQ6IFBhcmFtZXRlclNuYXBzaG90LlJlc29sdmVkUGFyYW1ldGVyPGFueSwgYW55PltdKSB7XG4gIH1cblxuICBoYXNDaGFuZ2VkKG90aGVyOiBQYXJhbWV0ZXJTbmFwc2hvdCwgZGVidWcgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLnJlc29sdmVkLmZpbmQoKHIpID0+IHtcbiAgICAgIHJldHVybiAhci5pc1NhbWUob3RoZXIuZ2V0VmFsdWVPZihyLnBhcmFtZXRlckRlZikpO1xuICAgIH0pO1xuICAgIGlmIChjaGFuZ2VkICYmIGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgIG5hbWU6IGNoYW5nZWQucGFyYW1ldGVyRGVmLm5hbWUsXG4gICAgICAgIG1pbmU6IGNoYW5nZWQudmFsdWUsXG4gICAgICAgIHRoZWlyczogb3RoZXIuZ2V0VmFsdWVPZihjaGFuZ2VkLnBhcmFtZXRlckRlZilcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gISFjaGFuZ2VkO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXI8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkLmZpbmQociA9PiByLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyRGVmKTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0VmFsdWVPZjxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBTIHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMuZ2V0UGFyYW1ldGVyKHBhcmFtZXRlckRlZik7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0Um91dGVJZFZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpID8gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCkudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5yZXNvbHZlZC5maW5kKHIgPT4gci5wYXJhbWV0ZXJEZWYubmFtZSA9PT0gbmFtZSk7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlSWRQYXJhbWV0ZXIoKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+IHtcbiAgICAvLyBSb3V0ZUlkJ3MgYXJlIG5ldmVyIGFycmF5czogc2VlIHBhcmFtZXRlci1kZWNvcmF0b3JzLnRzIGNyZWF0ZURlZmluaXRpb24gbWV0aG9kcy4gSXQgd291bGQgYmUgbmljZSB0b1xuICAgIC8vIGNhcHR1cmUgdGhpcyBpbiB0aGUgdHlwZSBzeXN0ZW0gdGhvdWdoXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmluZChwID0+IHAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCkgYXMgUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+O1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlUGFyYW1ldGVycygpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmlsdGVyKHIgPT4gIXIucGFyYW1ldGVyRGVmLmlzUm91dGVJZCk7XG4gIH1cblxuICBoYXNSb3V0ZUlkKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkUm91dGVJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpO1xuICAgIHJldHVybiByb3V0ZUlkUGFyYW0gPyByb3V0ZUlkUGFyYW0uZm9ybWF0dGVkVmFsdWUoKSA6IG51bGw7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMucmVzb2x2ZWQuZmlsdGVyKHAgPT4gIXAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCkuZm9yRWFjaChwID0+IHtcbiAgICAgIHBhcmFtc1twLnBhcmFtZXRlckRlZi5uYW1lXSA9IHAuZm9ybWF0dGVkVmFsdWUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgZ2V0QWxsRm9ybWF0dGVkUGFyYW1ldGVycygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLnJlc29sdmVkLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5wYXJhbWV0ZXJEZWYubmFtZV0gPSBwLmZvcm1hdHRlZFZhbHVlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGdldEFsbFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5yZXNvbHZlZC5mb3JFYWNoKHAgPT4ge1xuICAgICAgcGFyYW1zW3AucGFyYW1ldGVyRGVmLm5hbWVdID0gcC52YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcmVwbGFjZTxULCBTPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHZhbHVlOiBTKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyU25hcHNob3QodGhpcy5wbGFjZURlZmluaXRpb24sIHRoaXMucmVzb2x2ZWQubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIHAucGFyYW1ldGVyRGVmID09PSBwYXJhbWV0ZXIgPyBwLnJlcGxhY2UodmFsdWUpIDogcDtcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBzYW5pdGlzZShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFBhcmFtZXRlclNuYXBzaG90PiB7XG4gICAgaWYgKHRoaXMuaGFzUm91dGVJZCgpKSB7XG4gICAgICBjb25zdCByb3V0ZUlkID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWQuc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKCFyb3V0ZUlkLmlzU2FtZShzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGhhcyBjaGFuZ2VkIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIG90aGVyXG4gICAgICAgIC8vIHBhcmFtZXRlciBzYW5pdGlzZXJzIG1pZ2h0IHVzZSBpdC5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZShyb3V0ZUlkLnBhcmFtZXRlckRlZiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBQYXJhbWV0ZXJTbmFwc2hvdCA9IHRoaXM7XG4gICAgY29uc3Qgcm91dGVQYXJhbWV0ZXJzID0gdGhpcy5nZXRSb3V0ZVBhcmFtZXRlcnMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlUGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm91dGVQYXJhbWV0ZXIgPSByb3V0ZVBhcmFtZXRlcnNbaV07XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlUGFyYW1ldGVyLnNhbml0aXNlKHRoaXMsIGluamVjdG9yKTtcbiAgICAgIGlmICghcm91dGVQYXJhbWV0ZXIuaXNTYW1lKHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyb3V0ZVBhcmFtZXRlci5wYXJhbWV0ZXJEZWYsIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGFyYW1ldGVyU25hcHNob3Qge1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGUocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbiwgcGFyYW1zOiBQYXJhbU1hcCwgdXJsU2VnbWVudHM6VXJsU2VnbWVudFtdKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIGNvbnN0IHBhcmFtTWFwID0gbmV3IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChwYXJhbXMsIHVybFNlZ21lbnRzKTtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlcnM6IFJlc29sdmVkUGFyYW1ldGVyPGFueSwgYW55PltdID0gcGxhY2VEZWYuZ2V0Um91dGVQYXJhbWV0ZXJzKClcbiAgICAgIC5tYXAoZGVmID0+IHtcbiAgICAgICAgaWYgKGRlZi5pc0FycmF5KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gcGFyYW1NYXAuZ2V0QWxsKGRlZi5uYW1lKS5maWx0ZXIocyA9PiAhXy5pc0VtcHR5KHMpKS5tYXAocmF3ID0+IGRlZi50eXBlLnBhcnNlKHJhdykpIDogbnVsbDtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc29sdmVkQXJyYXlQYXJhbWV0ZXIoZGVmLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gZGVmLnR5cGUucGFyc2UocGFyYW1NYXAuZ2V0KGRlZi5uYW1lKSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcihkZWYsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJTbmFwc2hvdChwbGFjZURlZiwgcmVzb2x2ZWRQYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGEgd29yayBhcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgYW4gYWN0aXZhdGVkIHJvdXRlIHdpdGggbXVsdGlwbGUgc2VnbWVudHMgZG9lc24ndFxuICAgKiBpbmNsdWRlIHRoZSBzZWdtZW50IHBhcmFtcyBpbiB0aGUgcGFyYW1NYXAgYXMgd2VsbCBhcyBlYWNoIHNlZ21lbnQgcmV0dXJucyBhbiBlbXB0eVxuICAgKiBwYXJhbSBtYXAgZXZlbiB3aGVuIGBwYXJhbWV0ZXJgcyBoYXMgY29udGVudC5cbiAgICovXG4gIGNsYXNzIENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCB7XG5cbiAgICBwcml2YXRlIHBhcmFtTWFwczogUGFyYW1NYXBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHBhcmFtTWFwOlBhcmFtTWFwLCB1cmxTZWdtZW50czpVcmxTZWdtZW50W10pIHtcbiAgICAgIHRoaXMucGFyYW1NYXBzID0gW3BhcmFtTWFwXS5jb25jYXQoXG4gICAgICAgICh1cmxTZWdtZW50cyB8fCBbXSkubWFwKHMgPT4gbmV3IFBhcmFtTWFwQWRhcHRlcihzLnBhcmFtZXRlcnMpKVxuICAgICAgKS5maWx0ZXIobSA9PiAhIW0pOyAvLyB0aGUgYWN0aXZhdGVkIHJvdXRlIHBhcmFtIG1hcCBjYW4gYmUgbnVsbFxuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0QWxsKG5hbWUpO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOnN0cmluZyk6Ym9vbGVhbiB7XG4gICAgICByZXR1cm4gISF0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFBhcmFtTWFwQWRhcHRlciBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICB9XG5cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUyA9IFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHJlYWRvbmx5IHZhbHVlOiBTKSB7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBpc1NhbWUob3RoZXJWYWx1ZTogUyk6IGJvb2xlYW47XG5cbiAgICBpc1JvdXRlSWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gICAgYWJzdHJhY3QgcmVwbGFjZSh2YWx1ZTogUyk6IFJlc29sdmVkUGFyYW1ldGVyPFQsIFM+O1xuXG4gICAgYXN5bmMgc2FuaXRpc2UodmlzaXQ6IFZpc2l0LCBpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFM+IHtcbiAgICAgIGNvbnN0IHNhbml0aXNlciA9IHRoaXMucGFyYW1ldGVyRGVmLmdldFNhbml0aXNlcihpbmplY3Rvcik7XG4gICAgICBpZiAoc2FuaXRpc2VyKSB7XG4gICAgICAgIHJldHVybiBzYW5pdGlzZXIuc2FuaXRpc2UodGhpcy5wYXJhbWV0ZXJEZWYsIHRoaXMudmFsdWUsIHZpc2l0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvdGhlclZhbHVlO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+KHRoaXMucGFyYW1ldGVyRGVmLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLnZhbHVlKSA/IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPiBleHRlbmRzIFJlc29sdmVkUGFyYW1ldGVyPFQsIFRbXT4ge1xuXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFRbXSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIF8uaXNFcXVhbCh0aGlzLnZhbHVlLCBvdGhlclZhbHVlKTtcbiAgICB9XG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KTogdm9pZCB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSk7XG4gICAgfVxuXG4gICAgcmVwbGFjZSh2YWx1ZTogVFtdKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkQXJyYXlQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubWFwKHYgPT4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodikpIDogW107XG4gICAgfVxuXG4gIH1cblxufVxuIl19
|
|
496
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQ7SUFFRSwyQkFBcUIsZUFBZ0MsRUFBbUIsVUFBZ0Q7UUFBbkcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGVBQVUsR0FBVixVQUFVLENBQXNDO0lBQ3hILENBQUM7Ozs7OztJQUVELHNDQUFVOzs7OztJQUFWLFVBQVcsS0FBd0IsRUFBRSxLQUFhO1FBQWIsc0JBQUEsRUFBQSxhQUFhOztZQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFBQztRQUNGLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRTtZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNWLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUk7Z0JBQzdCLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDbkIsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQzthQUM3QyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sQ0FBQyxDQUFD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QUFyQkQsSUFxQkM7Ozs7OztRQXBCYSxpQ0FBZ0Q7O0FBdUJoRSxDQUFDLEVBakVnQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBaUVqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbU1hcCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFJvdXRlUGFyYW1ldGVyVmFsdWUgfSBmcm9tICcuL3JvdXRlLXBhcmFtZXRlci12YWx1ZSc7XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJTbmFwc2hvdCBpbXBsZW1lbnRzIFZpc2l0IHtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbiwgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJzOiBSb3V0ZVBhcmFtZXRlclZhbHVlPGFueSwgYW55LCBhbnk+W10pIHtcbiAgfVxuXG4gIGhhc0NoYW5nZWQob3RoZXI6IFBhcmFtZXRlclNuYXBzaG90LCBkZWJ1ZyA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMucGFyYW1ldGVycy5maW5kKChyKSA9PiB7XG4gICAgICByZXR1cm4gci5oYXNDaGFuZ2VkKG90aGVyLmdldFZhbHVlT2Yoci5kZWZpbml0aW9uKSk7XG4gICAgfSk7XG4gICAgaWYgKGNoYW5nZWQgJiYgZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKHtcbiAgICAgICAgbmFtZTogY2hhbmdlZC5kZWZpbml0aW9uLm5hbWUsXG4gICAgICAgIG1pbmU6IGNoYW5nZWQudmFsdWUsXG4gICAgICAgIHRoZWlyczogb3RoZXIuZ2V0VmFsdWVPZihjaGFuZ2VkLmRlZmluaXRpb24pXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICEhY2hhbmdlZDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UGFyYW1ldGVyPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFJvdXRlUGFyYW1ldGVyVmFsdWU8UywgVCwgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycy5maW5kKHIgPT4gci5kZWZpbml0aW9uID09PSBwYXJhbWV0ZXJEZWYpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRWYWx1ZU9mPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFMge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5nZXRQYXJhbWV0ZXIocGFyYW1ldGVyRGVmKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRQYXJhbWV0ZXIgPyByZXNvbHZlZFBhcmFtZXRlci52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBnZXRSb3V0ZUlkVmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCkgPyB0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKS52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldFBhcmFtZXRlclZhbHVlKG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXJhbWV0ZXIgPSB0aGlzLnBhcmFtZXRlcnMuZmluZChyID0+IHIuZGVmaW5pdGlvbi5uYW1lID09PSBuYW1lKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRQYXJhbWV0ZXIgPyByZXNvbHZlZFBhcmFtZXRlci52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0Um91dGVJZFBhcmFtZXRlcigpOiBSb3V0ZVBhcmFtZXRlclZhbHVlLlNjYWxhcjxhbnk+IHtcbiAgICAvLyBSb3V0ZUlkJ3MgYXJlIG5ldmVyIGFycmF5czogc2VlIHBhcmFtZXRlci1kZWNvcmF0b3JzLnRzIGNyZWF0ZURlZmluaXRpb24gbWV0aG9kcy4gSXQgd291bGQgYmUgbmljZSB0b1xuICAgIC8vIGNhcHR1cmUgdGhpcyBpbiB0aGUgdHlwZSBzeXN0ZW0gdGhvdWdoXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycy5maW5kKHAgPT4gcC5kZWZpbml0aW9uLmlzUm91dGVJZCkgYXMgUm91dGVQYXJhbWV0ZXJWYWx1ZS5TY2FsYXI8YW55PjtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRSb3V0ZVBhcmFtZXRlcnMoKTogUm91dGVQYXJhbWV0ZXJWYWx1ZTxhbnksIGFueSwgYW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcihyID0+ICFyLmRlZmluaXRpb24uaXNSb3V0ZUlkKTtcbiAgfVxuXG4gIGhhc1JvdXRlSWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgcmV0dXJuIHJvdXRlSWRQYXJhbSA/IHJvdXRlSWRQYXJhbS5mb3JtYXR0ZWRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldE5vbkVtcHR5UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcihwID0+ICFwLmlzRW1wdHkoKSk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBnZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMuZ2V0Tm9uRW1wdHlQYXJhbWV0ZXJzKClcbiAgICAgIC5maWx0ZXIocCA9PiAhcC5kZWZpbml0aW9uLmlzUm91dGVJZClcbiAgICAgIC5mb3JFYWNoKHAgPT4gcGFyYW1zW3AuZGVmaW5pdGlvbi5uYW1lXSA9IHAuZm9ybWF0dGVkVmFsdWUoKSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGdldEFsbFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5kZWZpbml0aW9uLm5hbWVdID0gcC52YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcmVwbGFjZTxULCBTPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHZhbHVlOiBTKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyU25hcHNob3QodGhpcy5wbGFjZURlZmluaXRpb24sIHRoaXMucGFyYW1ldGVycy5tYXAocCA9PiB7XG4gICAgICByZXR1cm4gcC5kZWZpbml0aW9uID09PSBwYXJhbWV0ZXIgPyBwLnJlcGxhY2UodmFsdWUpIDogcDtcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBzYW5pdGlzZShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFBhcmFtZXRlclNuYXBzaG90PiB7XG4gICAgaWYgKHRoaXMuaGFzUm91dGVJZCgpKSB7XG4gICAgICBjb25zdCByb3V0ZUlkID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWQuc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKHJvdXRlSWQuaGFzQ2hhbmdlZChzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGhhcyBjaGFuZ2VkIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIG90aGVyXG4gICAgICAgIC8vIHBhcmFtZXRlciBzYW5pdGlzZXJzIG1pZ2h0IHVzZSBpdC5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZShyb3V0ZUlkLmRlZmluaXRpb24sIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHJlc3VsdDogUGFyYW1ldGVyU25hcHNob3QgPSB0aGlzO1xuICAgIGNvbnN0IHJvdXRlUGFyYW1ldGVycyA9IHRoaXMuZ2V0Um91dGVQYXJhbWV0ZXJzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZVBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdXRlUGFyYW1ldGVyID0gcm91dGVQYXJhbWV0ZXJzW2ldO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCByb3V0ZVBhcmFtZXRlci5zYW5pdGlzZSh0aGlzLCBpbmplY3Rvcik7XG4gICAgICBpZiAocm91dGVQYXJhbWV0ZXIuaGFzQ2hhbmdlZChzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2Uocm91dGVQYXJhbWV0ZXIuZGVmaW5pdGlvbiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQYXJhbWV0ZXJTbmFwc2hvdCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uLCBwYXJhbXM6IFBhcmFtTWFwLCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIGNvbnN0IHBhcmFtTWFwID0gbmV3IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChwYXJhbXMsIHVybFNlZ21lbnRzKTtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlcnMgPSBwbGFjZURlZi5nZXRSb3V0ZVBhcmFtZXRlcnMoKS5tYXAoZGVmID0+IFJvdXRlUGFyYW1ldGVyVmFsdWUuY3JlYXRlKGRlZiwgcGFyYW1NYXApKTtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHBsYWNlRGVmLCByZXNvbHZlZFBhcmFtZXRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgYSB3b3JrIGFyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBhbiBhY3RpdmF0ZWQgcm91dGUgd2l0aCBtdWx0aXBsZSBzZWdtZW50cyBkb2Vzbid0XG4gICAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gICAqIHBhcmFtIG1hcCBldmVuIHdoZW4gYHBhcmFtZXRlcmBzIGhhcyBjb250ZW50LlxuICAgKi9cbiAgY2xhc3MgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwIGltcGxlbWVudHMgUGFyYW1NYXAge1xuXG4gICAgcHJpdmF0ZSBwYXJhbU1hcHM6IFBhcmFtTWFwW107XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbU1hcDogUGFyYW1NYXAsIHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10pIHtcbiAgICAgIHRoaXMucGFyYW1NYXBzID0gW3BhcmFtTWFwXS5jb25jYXQoXG4gICAgICAgICh1cmxTZWdtZW50cyB8fCBbXSkubWFwKHMgPT4gbmV3IFBhcmFtTWFwQWRhcHRlcihzLnBhcmFtZXRlcnMpKVxuICAgICAgKS5maWx0ZXIobSA9PiAhIW0pOyAvLyB0aGUgYWN0aXZhdGVkIHJvdXRlIHBhcmFtIG1hcCBjYW4gYmUgbnVsbFxuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0QWxsKG5hbWUpO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgfVxuXG4gICAgQE1lbW9pemUoKVxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5yZWR1Y2UoKHJlc3VsdCwgcGFyYW1zKSA9PiByZXN1bHQuY29uY2F0KHBhcmFtcy5rZXlzKSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFBhcmFtTWFwQWRhcHRlciBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICB9XG5cblxufVxuIl19
|