@coolon/angular-ui-powerups 0.0.44 → 0.0.47

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.
Files changed (53) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +489 -167
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/esm2015/coolon-angular-ui-powerups.js +2 -2
  7. package/esm2015/index.js +2 -2
  8. package/esm2015/lib/interaction/abstract-activity.js +3 -9
  9. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +17 -12
  10. package/esm2015/lib/place/guards/place-route.guard.js +4 -4
  11. package/esm2015/lib/place/index.js +1 -2
  12. package/esm2015/lib/place/place-component.js +2 -2
  13. package/esm2015/lib/place/place-history.js +29 -6
  14. package/esm2015/lib/place/place-router.js +29 -22
  15. package/esm2015/lib/place/route/parameter-decorators.js +1 -1
  16. package/esm2015/lib/place/route/parameter-definition.class.js +92 -9
  17. package/esm2015/lib/place/route/parameter-sanitiser.js +4 -3
  18. package/esm2015/lib/place/route/parameter-snapshot.js +214 -23
  19. package/esm2015/lib/place/route/route-parameter-sanitiser.js +4 -9
  20. package/esm2015/lib/place/visit.js +3 -3
  21. package/esm2015/public_api.js +2 -2
  22. package/esm5/coolon-angular-ui-powerups.js +2 -2
  23. package/esm5/index.js +2 -2
  24. package/esm5/lib/interaction/abstract-activity.js +14 -10
  25. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +17 -12
  26. package/esm5/lib/place/guards/place-route.guard.js +4 -4
  27. package/esm5/lib/place/index.js +1 -2
  28. package/esm5/lib/place/place-component.js +2 -2
  29. package/esm5/lib/place/place-history.js +39 -6
  30. package/esm5/lib/place/place-router.js +39 -27
  31. package/esm5/lib/place/route/parameter-decorators.js +1 -1
  32. package/esm5/lib/place/route/parameter-definition.class.js +104 -9
  33. package/esm5/lib/place/route/parameter-sanitiser.js +4 -3
  34. package/esm5/lib/place/route/parameter-snapshot.js +273 -24
  35. package/esm5/lib/place/route/route-parameter-sanitiser.js +8 -10
  36. package/esm5/lib/place/visit.js +3 -3
  37. package/esm5/public_api.js +2 -2
  38. package/fesm2015/coolon-angular-ui-powerups.js +388 -153
  39. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  40. package/fesm5/coolon-angular-ui-powerups.js +491 -168
  41. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  42. package/lib/place/components/place-outlet/place-outlet.component.d.ts +0 -1
  43. package/lib/place/index.d.ts +0 -1
  44. package/lib/place/place-history.d.ts +3 -0
  45. package/lib/place/place-router.d.ts +4 -3
  46. package/lib/place/route/parameter-definition.class.d.ts +12 -2
  47. package/lib/place/route/parameter-sanitiser.d.ts +3 -2
  48. package/lib/place/route/parameter-snapshot.d.ts +11 -8
  49. package/lib/place/visit.d.ts +2 -2
  50. package/package.json +1 -1
  51. package/esm2015/lib/place/route/default-parameter-sanitiser.js +0 -66
  52. package/esm5/lib/place/route/default-parameter-sanitiser.js +0 -73
  53. package/lib/place/route/default-parameter-sanitiser.d.ts +0 -11
@@ -13,24 +13,31 @@ var ParameterSnapshot = /** @class */ (function () {
13
13
  }
14
14
  /**
15
15
  * @param {?} other
16
+ * @param {?=} debug
16
17
  * @return {?}
17
18
  */
18
19
  ParameterSnapshot.prototype.hasChanged = /**
19
20
  * @param {?} other
21
+ * @param {?=} debug
20
22
  * @return {?}
21
23
  */
22
- function (other) {
24
+ function (other, debug) {
25
+ if (debug === void 0) { debug = false; }
23
26
  /** @type {?} */
24
27
  var changed = this.resolved.find((/**
25
28
  * @param {?} r
26
29
  * @return {?}
27
30
  */
28
31
  function (r) {
29
- return !r.isSame(other.getResolvedParameterValue(r.parameterDef));
32
+ return !r.isSame(other.getValueOf(r.parameterDef));
30
33
  }));
31
- // if (changed) {
32
- // console.log({ mine: changed, theirs: other.getResolvedParameter(changed.parameterDef) });
33
- // }
34
+ if (changed && debug) {
35
+ console.log({
36
+ name: changed.parameterDef.name,
37
+ mine: changed.value,
38
+ theirs: other.getValueOf(changed.parameterDef)
39
+ });
40
+ }
34
41
  return !!changed;
35
42
  };
36
43
  /**
@@ -38,7 +45,7 @@ var ParameterSnapshot = /** @class */ (function () {
38
45
  * @param {?} parameterDef
39
46
  * @return {?}
40
47
  */
41
- ParameterSnapshot.prototype.getResolvedParameter = /**
48
+ ParameterSnapshot.prototype.getParameter = /**
42
49
  * @template T, S
43
50
  * @param {?} parameterDef
44
51
  * @return {?}
@@ -55,30 +62,30 @@ var ParameterSnapshot = /** @class */ (function () {
55
62
  * @param {?} parameterDef
56
63
  * @return {?}
57
64
  */
58
- ParameterSnapshot.prototype.getResolvedParameterValue = /**
65
+ ParameterSnapshot.prototype.getValueOf = /**
59
66
  * @template T, S
60
67
  * @param {?} parameterDef
61
68
  * @return {?}
62
69
  */
63
70
  function (parameterDef) {
64
71
  /** @type {?} */
65
- var resolvedParameter = this.getResolvedParameter(parameterDef);
72
+ var resolvedParameter = this.getParameter(parameterDef);
66
73
  return resolvedParameter ? resolvedParameter.value : null;
67
74
  };
68
75
  /**
69
76
  * @return {?}
70
77
  */
71
- ParameterSnapshot.prototype.getRouteId = /**
78
+ ParameterSnapshot.prototype.getRouteIdValue = /**
72
79
  * @return {?}
73
80
  */
74
81
  function () {
75
- return this.getResolvedRouteId() ? this.getResolvedRouteId().value : null;
82
+ return this.getRouteIdParameter() ? this.getRouteIdParameter().value : null;
76
83
  };
77
84
  /**
78
85
  * @param {?} name
79
86
  * @return {?}
80
87
  */
81
- ParameterSnapshot.prototype.getRouteParameter = /**
88
+ ParameterSnapshot.prototype.getParameterValue = /**
82
89
  * @param {?} name
83
90
  * @return {?}
84
91
  */
@@ -95,7 +102,7 @@ var ParameterSnapshot = /** @class */ (function () {
95
102
  * @private
96
103
  * @return {?}
97
104
  */
98
- ParameterSnapshot.prototype.getResolvedRouteId = /**
105
+ ParameterSnapshot.prototype.getRouteIdParameter = /**
99
106
  * @private
100
107
  * @return {?}
101
108
  */
@@ -108,6 +115,21 @@ var ParameterSnapshot = /** @class */ (function () {
108
115
  */
109
116
  function (p) { return p.parameterDef.isRouteId; }))));
110
117
  };
118
+ /**
119
+ * @private
120
+ * @return {?}
121
+ */
122
+ ParameterSnapshot.prototype.getRouteParameters = /**
123
+ * @private
124
+ * @return {?}
125
+ */
126
+ function () {
127
+ return this.resolved.filter((/**
128
+ * @param {?} r
129
+ * @return {?}
130
+ */
131
+ function (r) { return !r.parameterDef.isRouteId; }));
132
+ };
111
133
  /**
112
134
  * @return {?}
113
135
  */
@@ -115,7 +137,7 @@ var ParameterSnapshot = /** @class */ (function () {
115
137
  * @return {?}
116
138
  */
117
139
  function () {
118
- return !!this.getResolvedRouteId();
140
+ return !!this.getRouteIdParameter();
119
141
  };
120
142
  /**
121
143
  * @return {?}
@@ -125,7 +147,7 @@ var ParameterSnapshot = /** @class */ (function () {
125
147
  */
126
148
  function () {
127
149
  /** @type {?} */
128
- var routeIdParam = this.getResolvedRouteId();
150
+ var routeIdParam = this.getRouteIdParameter();
129
151
  return routeIdParam ? routeIdParam.formattedValue() : null;
130
152
  };
131
153
  /**
@@ -151,6 +173,25 @@ var ParameterSnapshot = /** @class */ (function () {
151
173
  }));
152
174
  return params;
153
175
  };
176
+ /**
177
+ * @return {?}
178
+ */
179
+ ParameterSnapshot.prototype.getAllFormattedParameters = /**
180
+ * @return {?}
181
+ */
182
+ function () {
183
+ /** @type {?} */
184
+ var params = {};
185
+ /** @type {?} */
186
+ var routeIdParam = this.resolved.forEach((/**
187
+ * @param {?} p
188
+ * @return {?}
189
+ */
190
+ function (p) {
191
+ params[p.parameterDef.name] = p.formattedValue();
192
+ }));
193
+ return params;
194
+ };
154
195
  /**
155
196
  * @template T, S
156
197
  * @param {?} parameter
@@ -172,18 +213,54 @@ var ParameterSnapshot = /** @class */ (function () {
172
213
  return p.parameterDef === parameter ? p.replace(value) : p;
173
214
  })));
174
215
  };
216
+ // @Trace()
217
+ // @Trace()
175
218
  /**
176
219
  * @param {?} injector
177
220
  * @return {?}
178
221
  */
179
- ParameterSnapshot.prototype.sanitise = /**
222
+ ParameterSnapshot.prototype.sanitise =
223
+ // @Trace()
224
+ /**
180
225
  * @param {?} injector
181
226
  * @return {?}
182
227
  */
183
228
  function (injector) {
184
229
  return tslib_1.__awaiter(this, void 0, void 0, function () {
230
+ var routeId, sanitisedValue, result, routeParameters, i, sanitisedValue;
185
231
  return tslib_1.__generator(this, function (_a) {
186
- return [2 /*return*/, this];
232
+ switch (_a.label) {
233
+ case 0:
234
+ if (!this.hasRouteId()) return [3 /*break*/, 2];
235
+ routeId = this.getRouteIdParameter();
236
+ return [4 /*yield*/, routeId.sanitise(this, injector)];
237
+ case 1:
238
+ sanitisedValue = _a.sent();
239
+ if (!routeId.isSame(sanitisedValue)) {
240
+ // if the route id has changed we redirect immediately as other
241
+ // parameter sanitisers might use it.
242
+ return [2 /*return*/, this.replace(routeId.parameterDef, sanitisedValue)];
243
+ }
244
+ _a.label = 2;
245
+ case 2:
246
+ result = this;
247
+ routeParameters = this.getRouteParameters();
248
+ i = 0;
249
+ _a.label = 3;
250
+ case 3:
251
+ if (!(i < routeParameters.length)) return [3 /*break*/, 6];
252
+ return [4 /*yield*/, routeParameters[i].sanitise(this, injector)];
253
+ case 4:
254
+ sanitisedValue = _a.sent();
255
+ if (!routeParameters[i].isSame(sanitisedValue)) {
256
+ result = this.replace(routeParameters[i].parameterDef, sanitisedValue);
257
+ }
258
+ _a.label = 5;
259
+ case 5:
260
+ i++;
261
+ return [3 /*break*/, 3];
262
+ case 6: return [2 /*return*/, result];
263
+ }
187
264
  });
188
265
  });
189
266
  };
@@ -193,25 +270,31 @@ var ParameterSnapshot = /** @class */ (function () {
193
270
  tslib_1.__metadata("design:type", Function),
194
271
  tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
195
272
  tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedParameter)
196
- ], ParameterSnapshot.prototype, "getResolvedParameter", null);
273
+ ], ParameterSnapshot.prototype, "getParameter", null);
197
274
  tslib_1.__decorate([
198
275
  Memoize(),
199
276
  tslib_1.__metadata("design:type", Function),
200
277
  tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
201
278
  tslib_1.__metadata("design:returntype", typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object)
202
- ], ParameterSnapshot.prototype, "getResolvedParameterValue", null);
279
+ ], ParameterSnapshot.prototype, "getValueOf", null);
203
280
  tslib_1.__decorate([
204
281
  Memoize(),
205
282
  tslib_1.__metadata("design:type", Function),
206
283
  tslib_1.__metadata("design:paramtypes", [String]),
207
284
  tslib_1.__metadata("design:returntype", Object)
208
- ], ParameterSnapshot.prototype, "getRouteParameter", null);
285
+ ], ParameterSnapshot.prototype, "getParameterValue", null);
209
286
  tslib_1.__decorate([
210
287
  Memoize(),
211
288
  tslib_1.__metadata("design:type", Function),
212
289
  tslib_1.__metadata("design:paramtypes", []),
213
290
  tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedValueParameter)
214
- ], ParameterSnapshot.prototype, "getResolvedRouteId", null);
291
+ ], ParameterSnapshot.prototype, "getRouteIdParameter", null);
292
+ tslib_1.__decorate([
293
+ Memoize(),
294
+ tslib_1.__metadata("design:type", Function),
295
+ tslib_1.__metadata("design:paramtypes", []),
296
+ tslib_1.__metadata("design:returntype", Array)
297
+ ], ParameterSnapshot.prototype, "getRouteParameters", null);
215
298
  return ParameterSnapshot;
216
299
  }());
217
300
  export { ParameterSnapshot };
@@ -227,10 +310,13 @@ if (false) {
227
310
  (function (ParameterSnapshot) {
228
311
  /**
229
312
  * @param {?} placeDef
230
- * @param {?} paramMap
313
+ * @param {?} params
314
+ * @param {?} urlSegments
231
315
  * @return {?}
232
316
  */
233
- function create(placeDef, paramMap) {
317
+ function create(placeDef, params, urlSegments) {
318
+ /** @type {?} */
319
+ var paramMap = new ConsolidatedParameterMap(params, urlSegments);
234
320
  /** @type {?} */
235
321
  var resolvedParameters = placeDef.getRouteParameters()
236
322
  .map((/**
@@ -240,7 +326,11 @@ if (false) {
240
326
  function (def) {
241
327
  if (def.isArray) {
242
328
  /** @type {?} */
243
- var value = paramMap.has(def.name) ? paramMap.getAll(def.name).map((/**
329
+ var value = paramMap.has(def.name) ? paramMap.getAll(def.name).filter((/**
330
+ * @param {?} s
331
+ * @return {?}
332
+ */
333
+ function (s) { return !_.isEmpty(s); })).map((/**
244
334
  * @param {?} raw
245
335
  * @return {?}
246
336
  */
@@ -256,6 +346,140 @@ if (false) {
256
346
  return new ParameterSnapshot(placeDef, resolvedParameters);
257
347
  }
258
348
  ParameterSnapshot.create = create;
349
+ /**
350
+ * This a work around for the fact that an activated route with multiple segments doesn't
351
+ * include the segment params in the paramMap as well as each segment returns an empty
352
+ * param map even when `parameter`s has content.
353
+ */
354
+ var /**
355
+ * This a work around for the fact that an activated route with multiple segments doesn't
356
+ * include the segment params in the paramMap as well as each segment returns an empty
357
+ * param map even when `parameter`s has content.
358
+ */
359
+ ConsolidatedParameterMap = /** @class */ (function () {
360
+ function ConsolidatedParameterMap(paramMap, urlSegments) {
361
+ this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
362
+ * @param {?} s
363
+ * @return {?}
364
+ */
365
+ function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
366
+ * @param {?} m
367
+ * @return {?}
368
+ */
369
+ function (m) { return !!m; })); // the activated route param map can be null
370
+ }
371
+ /**
372
+ * @param {?} name
373
+ * @return {?}
374
+ */
375
+ ConsolidatedParameterMap.prototype.get = /**
376
+ * @param {?} name
377
+ * @return {?}
378
+ */
379
+ function (name) {
380
+ return this.paramMaps.find((/**
381
+ * @param {?} m
382
+ * @return {?}
383
+ */
384
+ function (m) { return m.has(name); })).get(name);
385
+ };
386
+ /**
387
+ * @param {?} name
388
+ * @return {?}
389
+ */
390
+ ConsolidatedParameterMap.prototype.getAll = /**
391
+ * @param {?} name
392
+ * @return {?}
393
+ */
394
+ function (name) {
395
+ return this.paramMaps.find((/**
396
+ * @param {?} m
397
+ * @return {?}
398
+ */
399
+ function (m) { return m.has(name); })).getAll(name);
400
+ };
401
+ /**
402
+ * @param {?} name
403
+ * @return {?}
404
+ */
405
+ ConsolidatedParameterMap.prototype.has = /**
406
+ * @param {?} name
407
+ * @return {?}
408
+ */
409
+ function (name) {
410
+ return !!this.paramMaps.find((/**
411
+ * @param {?} m
412
+ * @return {?}
413
+ */
414
+ function (m) { return m.has(name); }));
415
+ };
416
+ return ConsolidatedParameterMap;
417
+ }());
418
+ if (false) {
419
+ /**
420
+ * @type {?}
421
+ * @private
422
+ */
423
+ ConsolidatedParameterMap.prototype.paramMaps;
424
+ }
425
+ var ParamMapAdapter = /** @class */ (function () {
426
+ function ParamMapAdapter(params) {
427
+ this.params = params;
428
+ }
429
+ /**
430
+ * @param {?} name
431
+ * @return {?}
432
+ */
433
+ ParamMapAdapter.prototype.get = /**
434
+ * @param {?} name
435
+ * @return {?}
436
+ */
437
+ function (name) {
438
+ return this.params[name];
439
+ };
440
+ /**
441
+ * @param {?} name
442
+ * @return {?}
443
+ */
444
+ ParamMapAdapter.prototype.getAll = /**
445
+ * @param {?} name
446
+ * @return {?}
447
+ */
448
+ function (name) {
449
+ /** @type {?} */
450
+ var value = this.get(name);
451
+ return Array.isArray(value) ? value : [value];
452
+ };
453
+ /**
454
+ * @param {?} name
455
+ * @return {?}
456
+ */
457
+ ParamMapAdapter.prototype.has = /**
458
+ * @param {?} name
459
+ * @return {?}
460
+ */
461
+ function (name) {
462
+ return this.keys.includes(name);
463
+ };
464
+ Object.defineProperty(ParamMapAdapter.prototype, "keys", {
465
+ get: /**
466
+ * @return {?}
467
+ */
468
+ function () {
469
+ return Object.keys(this.params);
470
+ },
471
+ enumerable: true,
472
+ configurable: true
473
+ });
474
+ return ParamMapAdapter;
475
+ }());
476
+ if (false) {
477
+ /**
478
+ * @type {?}
479
+ * @private
480
+ */
481
+ ParamMapAdapter.prototype.params;
482
+ }
259
483
  /**
260
484
  * @abstract
261
485
  * @template T, S
@@ -278,6 +502,31 @@ if (false) {
278
502
  function () {
279
503
  return this.parameterDef.isRouteId;
280
504
  };
505
+ /**
506
+ * @param {?} visit
507
+ * @param {?} injector
508
+ * @return {?}
509
+ */
510
+ ResolvedParameter.prototype.sanitise = /**
511
+ * @param {?} visit
512
+ * @param {?} injector
513
+ * @return {?}
514
+ */
515
+ function (visit, injector) {
516
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
517
+ var sanitiser;
518
+ return tslib_1.__generator(this, function (_a) {
519
+ sanitiser = this.parameterDef.getSanitiser(injector);
520
+ if (sanitiser) {
521
+ return [2 /*return*/, sanitiser.sanitise(this.parameterDef, this.value, visit)];
522
+ }
523
+ else {
524
+ return [2 /*return*/, this.value];
525
+ }
526
+ return [2 /*return*/];
527
+ });
528
+ });
529
+ };
281
530
  return ResolvedParameter;
282
531
  }());
283
532
  ParameterSnapshot.ResolvedParameter = ResolvedParameter;
@@ -433,4 +682,4 @@ if (false) {
433
682
  }(ResolvedParameter));
434
683
  ParameterSnapshot.ResolvedArrayParameter = ResolvedArrayParameter;
435
684
  })(ParameterSnapshot || (ParameterSnapshot = {}));
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkU7SUFFRSwyQkFBcUIsZUFBZ0MsRUFBbUIsUUFBeUQ7UUFBNUcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQWlEO0lBQ2pJLENBQUM7Ozs7O0lBRUQsc0NBQVU7Ozs7SUFBVixVQUFXLEtBQXdCOztZQUMzQixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDLEVBQUM7UUFDRixpQkFBaUI7UUFDakIsOEZBQThGO1FBQzlGLElBQUk7UUFDSixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkIsQ0FBQzs7Ozs7O0lBR0QsZ0RBQW9COzs7OztJQUFwQixVQUEyQixZQUF1QztRQUNoRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQS9CLENBQStCLEVBQUMsQ0FBQztJQUNsRSxDQUFDOzs7Ozs7SUFHRCxxREFBeUI7Ozs7O0lBQXpCLFVBQWdDLFlBQXVDOztZQUMvRCxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JB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IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbU1hcCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhc3NlcnQsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclNuYXBzaG90IGltcGxlbWVudHMgVmlzaXQge1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVkOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSkge1xuICB9XG5cbiAgaGFzQ2hhbmdlZChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5yZXNvbHZlZC5maW5kKChyKSA9PiB7XG4gICAgICByZXR1cm4gIXIuaXNTYW1lKG90aGVyLmdldFJlc29sdmVkUGFyYW1ldGVyVmFsdWUoci5wYXJhbWV0ZXJEZWYpKTtcbiAgICB9KTtcbiAgICAvLyBpZiAoY2hhbmdlZCkge1xuICAgIC8vICAgY29uc29sZS5sb2coeyBtaW5lOiBjaGFuZ2VkLCB0aGVpcnM6IG90aGVyLmdldFJlc29sdmVkUGFyYW1ldGVyKGNoYW5nZWQucGFyYW1ldGVyRGVmKSB9KTtcbiAgICAvLyB9XG4gICAgcmV0dXJuICEhY2hhbmdlZDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkLmZpbmQociA9PiByLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyRGVmKTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UmVzb2x2ZWRQYXJhbWV0ZXJWYWx1ZTxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBTIHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMuZ2V0UmVzb2x2ZWRQYXJhbWV0ZXIocGFyYW1ldGVyRGVmKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRQYXJhbWV0ZXIgPyByZXNvbHZlZFBhcmFtZXRlci52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBnZXRSb3V0ZUlkKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb2x2ZWRSb3V0ZUlkKCkgPyB0aGlzLmdldFJlc29sdmVkUm91dGVJZCgpLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0Um91dGVQYXJhbWV0ZXIobmFtZTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMucmVzb2x2ZWQuZmluZChyID0+IHIucGFyYW1ldGVyRGVmLm5hbWUgPT09IG5hbWUpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRSZXNvbHZlZFJvdXRlSWQoKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+IHtcbiAgICAvLyBSb3V0ZUlkJ3MgYXJlIG5ldmVyIGFycmF5czogc2VlIHBhcmFtZXRlci1kZWNvcmF0b3JzLnRzIGNyZWF0ZURlZmluaXRpb24gbWV0aG9kcy4gSXQgd291bGQgYmUgbmljZSB0b1xuICAgIC8vIGNhcHR1cmUgdGhpcyBpbiB0aGUgdHlwZSBzeXN0ZW0gdGhvdWdoXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmluZChwID0+IHAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCkgYXMgUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+O1xuICB9XG5cbiAgaGFzUm91dGVJZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmdldFJlc29sdmVkUm91dGVJZCgpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkUm91dGVJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMuZ2V0UmVzb2x2ZWRSb3V0ZUlkKCk7XG4gICAgcmV0dXJuIHJvdXRlSWRQYXJhbSA/IHJvdXRlSWRQYXJhbS5mb3JtYXR0ZWRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5yZXNvbHZlZC5maWx0ZXIocCA9PiAhcC5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgcGFyYW1zW3AucGFyYW1ldGVyRGVmLm5hbWVdID0gcC5mb3JtYXR0ZWRWYWx1ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICByZXBsYWNlPFQsIFM+KHBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPiwgdmFsdWU6IFMpOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJTbmFwc2hvdCh0aGlzLnBsYWNlRGVmaW5pdGlvbiwgdGhpcy5yZXNvbHZlZC5tYXAocCA9PiB7XG4gICAgICByZXR1cm4gcC5wYXJhbWV0ZXJEZWYgPT09IHBhcmFtZXRlciA/IHAucmVwbGFjZSh2YWx1ZSkgOiBwO1xuICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHNhbml0aXNlKGluamVjdG9yOiBJbmplY3Rvcik6UHJvbWlzZTxQYXJhbWV0ZXJTbmFwc2hvdD4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGFyYW1ldGVyU25hcHNob3Qge1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGUocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbiwgcGFyYW1NYXA6IFBhcmFtTWFwKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyczogUmVzb2x2ZWRQYXJhbWV0ZXI8YW55LCBhbnk+W10gPSBwbGFjZURlZi5nZXRSb3V0ZVBhcmFtZXRlcnMoKVxuICAgICAgLm1hcChkZWYgPT4ge1xuICAgICAgICBpZiAoZGVmLmlzQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtTWFwLmhhcyhkZWYubmFtZSkgPyBwYXJhbU1hcC5nZXRBbGwoZGVmLm5hbWUpLm1hcChyYXcgPT4gZGVmLnR5cGUucGFyc2UocmF3KSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcihkZWYsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtTWFwLmhhcyhkZWYubmFtZSkgPyBkZWYudHlwZS5wYXJzZShwYXJhbU1hcC5nZXQoZGVmLm5hbWUpKSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyKGRlZiwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHBsYWNlRGVmLCByZXNvbHZlZFBhcmFtZXRlcnMpO1xuICB9XG5cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUyA9IFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHJlYWRvbmx5IHZhbHVlOiBTKSB7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBpc1NhbWUob3RoZXJWYWx1ZTogUyk6IGJvb2xlYW47XG5cbiAgICBpc1JvdXRlSWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gICAgYWJzdHJhY3QgcmVwbGFjZSh2YWx1ZTogUyk6IFJlc29sdmVkUGFyYW1ldGVyPFQsIFM+O1xuICB9XG5cbiAgZXhwb3J0IGNsYXNzIFJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8VD4gZXh0ZW5kcyBSZXNvbHZlZFBhcmFtZXRlcjxULCBUPiB7XG5cbiAgICBpc1NhbWUob3RoZXJWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG90aGVyVmFsdWU7XG4gICAgfVxuXG4gICAgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk6IHZvaWQge1xuICAgICAgZGVzdFt0aGlzLnBhcmFtZXRlckRlZi5uYW1lXSA9IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHJlcGxhY2UodmFsdWU6IFQpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBUPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMudmFsdWUpID8gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodGhpcy52YWx1ZSkgOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZEFycmF5UGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG5cbiAgICBpc1NhbWUob3RoZXJWYWx1ZTogVFtdKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gXy5pc0VxdWFsKHRoaXMudmFsdWUsIG90aGVyVmFsdWUpO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnZhbHVlLm1hcCh2ID0+IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHYpKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUW10pOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBUW10+IHtcbiAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPih0aGlzLnBhcmFtZXRlckRlZiwgdmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSkgOiBbXTtcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=
685
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkU7SUFFRSwyQkFBcUIsZUFBZ0MsRUFBbUIsUUFBeUQ7UUFBNUcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQWlEO0lBQ2pJLENBQUM7Ozs7OztJQUVELHNDQUFVOzs7OztJQUFWLFVBQVcsS0FBd0IsRUFBRSxLQUFhO1FBQWIsc0JBQUEsRUFBQSxhQUFhOztZQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxFQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDL0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQy9DLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25CLENBQUM7Ozs7OztJQUdELHdDQUFZOzs7OztJQUFaLFVBQW1C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S0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFoQyxDQUFnQyxFQUFDLENBQUM7UUFDdkYsQ0FBQzs7Ozs7UUFFRCx3Q0FBTzs7OztRQUFQLFVBQVEsS0FBVTtZQUNoQixPQUFPLElBQUksc0JBQXNCLENBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDOzs7O1FBRUQsK0NBQWM7OztRQUFkO1lBQUEsaUJBRUM7WUFEQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRzs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFoQyxDQUFnQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRixDQUFDO1FBRUgsNkJBQUM7SUFBRCxDQUFDLEFBbEJELENBQStDLGlCQUFpQixHQWtCL0Q7SUFsQlksd0NBQXNCLHlCQWtCbEMsQ0FBQTtBQUVILENBQUMsRUF0SWdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUFzSWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFBhcmFtTWFwLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclNuYXBzaG90IGltcGxlbWVudHMgVmlzaXQge1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVkOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSkge1xuICB9XG5cbiAgaGFzQ2hhbmdlZChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QsIGRlYnVnID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5yZXNvbHZlZC5maW5kKChyKSA9PiB7XG4gICAgICByZXR1cm4gIXIuaXNTYW1lKG90aGVyLmdldFZhbHVlT2Yoci5wYXJhbWV0ZXJEZWYpKTtcbiAgICB9KTtcbiAgICBpZiAoY2hhbmdlZCAmJiBkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coe1xuICAgICAgICBuYW1lOiBjaGFuZ2VkLnBhcmFtZXRlckRlZi5uYW1lLFxuICAgICAgICBtaW5lOiBjaGFuZ2VkLnZhbHVlLFxuICAgICAgICB0aGVpcnM6IG90aGVyLmdldFZhbHVlT2YoY2hhbmdlZC5wYXJhbWV0ZXJEZWYpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICEhY2hhbmdlZDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UGFyYW1ldGVyPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFBhcmFtZXRlclNuYXBzaG90LlJlc29sdmVkUGFyYW1ldGVyPFQsIFM+IHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZC5maW5kKHIgPT4gci5wYXJhbWV0ZXJEZWYgPT09IHBhcmFtZXRlckRlZik7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldFZhbHVlT2Y8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUyB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXJhbWV0ZXIgPSB0aGlzLmdldFBhcmFtZXRlcihwYXJhbWV0ZXJEZWYpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIGdldFJvdXRlSWRWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKSA/IHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UGFyYW1ldGVyVmFsdWUobmFtZTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMucmVzb2x2ZWQuZmluZChyID0+IHIucGFyYW1ldGVyRGVmLm5hbWUgPT09IG5hbWUpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRSb3V0ZUlkUGFyYW1ldGVyKCk6IFBhcmFtZXRlclNuYXBzaG90LlJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8YW55PiB7XG4gICAgLy8gUm91dGVJZCdzIGFyZSBuZXZlciBhcnJheXM6IHNlZSBwYXJhbWV0ZXItZGVjb3JhdG9ycy50cyBjcmVhdGVEZWZpbml0aW9uIG1ldGhvZHMuIEl0IHdvdWxkIGJlIG5pY2UgdG9cbiAgICAvLyBjYXB0dXJlIHRoaXMgaW4gdGhlIHR5cGUgc3lzdGVtIHRob3VnaFxuICAgIHJldHVybiB0aGlzLnJlc29sdmVkLmZpbmQocCA9PiBwLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQpIGFzIFBhcmFtZXRlclNuYXBzaG90LlJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8YW55PjtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRSb3V0ZVBhcmFtZXRlcnMoKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8YW55LCBhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkLmZpbHRlcihyID0+ICFyLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQpO1xuICB9XG5cblxuICBoYXNSb3V0ZUlkKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkUm91dGVJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpO1xuICAgIHJldHVybiByb3V0ZUlkUGFyYW0gPyByb3V0ZUlkUGFyYW0uZm9ybWF0dGVkVmFsdWUoKSA6IG51bGw7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMucmVzb2x2ZWQuZmlsdGVyKHAgPT4gIXAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCkuZm9yRWFjaChwID0+IHtcbiAgICAgIHBhcmFtc1twLnBhcmFtZXRlckRlZi5uYW1lXSA9IHAuZm9ybWF0dGVkVmFsdWUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgZ2V0QWxsRm9ybWF0dGVkUGFyYW1ldGVycygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLnJlc29sdmVkLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5wYXJhbWV0ZXJEZWYubmFtZV0gPSBwLmZvcm1hdHRlZFZhbHVlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHJlcGxhY2U8VCwgUz4ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+LCB2YWx1ZTogUyk6IFBhcmFtZXRlclNuYXBzaG90IHtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHRoaXMucGxhY2VEZWZpbml0aW9uLCB0aGlzLnJlc29sdmVkLm1hcChwID0+IHtcbiAgICAgIHJldHVybiBwLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyID8gcC5yZXBsYWNlKHZhbHVlKSA6IHA7XG4gICAgfSkpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgc2FuaXRpc2UoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxQYXJhbWV0ZXJTbmFwc2hvdD4ge1xuICAgIGlmICh0aGlzLmhhc1JvdXRlSWQoKSkge1xuICAgICAgY29uc3Qgcm91dGVJZCA9IHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCByb3V0ZUlkLnNhbml0aXNlKHRoaXMsIGluamVjdG9yKTtcbiAgICAgIGlmICghcm91dGVJZC5pc1NhbWUoc2FuaXRpc2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBoYXMgY2hhbmdlZCB3ZSByZWRpcmVjdCBpbW1lZGlhdGVseSBhcyBvdGhlclxuICAgICAgICAvLyBwYXJhbWV0ZXIgc2FuaXRpc2VycyBtaWdodCB1c2UgaXQuXG4gICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2Uocm91dGVJZC5wYXJhbWV0ZXJEZWYsIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHJlc3VsdDogUGFyYW1ldGVyU25hcHNob3QgPSB0aGlzO1xuICAgIGNvbnN0IHJvdXRlUGFyYW1ldGVycyA9IHRoaXMuZ2V0Um91dGVQYXJhbWV0ZXJzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZVBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHNhbml0aXNlZFZhbHVlID0gYXdhaXQgcm91dGVQYXJhbWV0ZXJzW2ldLnNhbml0aXNlKHRoaXMsIGluamVjdG9yKTtcbiAgICAgIGlmICghcm91dGVQYXJhbWV0ZXJzW2ldLmlzU2FtZShzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5yZXBsYWNlKHJvdXRlUGFyYW1ldGVyc1tpXS5wYXJhbWV0ZXJEZWYsIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGFyYW1ldGVyU25hcHNob3Qge1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGUocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbiwgcGFyYW1zOiBQYXJhbU1hcCwgdXJsU2VnbWVudHM6VXJsU2VnbWVudFtdKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIGNvbnN0IHBhcmFtTWFwID0gbmV3IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChwYXJhbXMsIHVybFNlZ21lbnRzKTtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlcnM6IFJlc29sdmVkUGFyYW1ldGVyPGFueSwgYW55PltdID0gcGxhY2VEZWYuZ2V0Um91dGVQYXJhbWV0ZXJzKClcbiAgICAgIC5tYXAoZGVmID0+IHtcbiAgICAgICAgaWYgKGRlZi5pc0FycmF5KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gcGFyYW1NYXAuZ2V0QWxsKGRlZi5uYW1lKS5maWx0ZXIocyA9PiAhXy5pc0VtcHR5KHMpKS5tYXAocmF3ID0+IGRlZi50eXBlLnBhcnNlKHJhdykpIDogbnVsbDtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc29sdmVkQXJyYXlQYXJhbWV0ZXIoZGVmLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gZGVmLnR5cGUucGFyc2UocGFyYW1NYXAuZ2V0KGRlZi5uYW1lKSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcihkZWYsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJTbmFwc2hvdChwbGFjZURlZiwgcmVzb2x2ZWRQYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGEgd29yayBhcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgYW4gYWN0aXZhdGVkIHJvdXRlIHdpdGggbXVsdGlwbGUgc2VnbWVudHMgZG9lc24ndFxuICAgKiBpbmNsdWRlIHRoZSBzZWdtZW50IHBhcmFtcyBpbiB0aGUgcGFyYW1NYXAgYXMgd2VsbCBhcyBlYWNoIHNlZ21lbnQgcmV0dXJucyBhbiBlbXB0eVxuICAgKiBwYXJhbSBtYXAgZXZlbiB3aGVuIGBwYXJhbWV0ZXJgcyBoYXMgY29udGVudC5cbiAgICovXG4gIGNsYXNzIENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCB7XG5cbiAgICBwcml2YXRlIHBhcmFtTWFwczogUGFyYW1NYXBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHBhcmFtTWFwOlBhcmFtTWFwLCB1cmxTZWdtZW50czpVcmxTZWdtZW50W10pIHtcbiAgICAgIHRoaXMucGFyYW1NYXBzID0gW3BhcmFtTWFwXS5jb25jYXQoXG4gICAgICAgICh1cmxTZWdtZW50cyB8fCBbXSkubWFwKHMgPT4gbmV3IFBhcmFtTWFwQWRhcHRlcihzLnBhcmFtZXRlcnMpKVxuICAgICAgKS5maWx0ZXIobSA9PiAhIW0pOyAvLyB0aGUgYWN0aXZhdGVkIHJvdXRlIHBhcmFtIG1hcCBjYW4gYmUgbnVsbFxuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0QWxsKG5hbWUpO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOnN0cmluZyk6Ym9vbGVhbiB7XG4gICAgICByZXR1cm4gISF0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFBhcmFtTWFwQWRhcHRlciBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICB9XG5cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUyA9IFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHJlYWRvbmx5IHZhbHVlOiBTKSB7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBpc1NhbWUob3RoZXJWYWx1ZTogUyk6IGJvb2xlYW47XG5cbiAgICBpc1JvdXRlSWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gICAgYWJzdHJhY3QgcmVwbGFjZSh2YWx1ZTogUyk6IFJlc29sdmVkUGFyYW1ldGVyPFQsIFM+O1xuXG4gICAgYXN5bmMgc2FuaXRpc2UodmlzaXQ6IFZpc2l0LCBpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFM+IHtcbiAgICAgIGNvbnN0IHNhbml0aXNlciA9IHRoaXMucGFyYW1ldGVyRGVmLmdldFNhbml0aXNlcihpbmplY3Rvcik7XG4gICAgICBpZiAoc2FuaXRpc2VyKSB7XG4gICAgICAgIHJldHVybiBzYW5pdGlzZXIuc2FuaXRpc2UodGhpcy5wYXJhbWV0ZXJEZWYsIHRoaXMudmFsdWUsIHZpc2l0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvdGhlclZhbHVlO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+KHRoaXMucGFyYW1ldGVyRGVmLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLnZhbHVlKSA/IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPiBleHRlbmRzIFJlc29sdmVkUGFyYW1ldGVyPFQsIFRbXT4ge1xuXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFRbXSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIF8uaXNFcXVhbCh0aGlzLnZhbHVlLCBvdGhlclZhbHVlKTtcbiAgICB9XG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KTogdm9pZCB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSk7XG4gICAgfVxuXG4gICAgcmVwbGFjZSh2YWx1ZTogVFtdKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkQXJyYXlQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubWFwKHYgPT4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodikpIDogW107XG4gICAgfVxuXG4gIH1cblxufVxuIl19
@@ -3,7 +3,7 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { assert, lang, Trace } from '@coolon/pectin';
6
+ import { assert, lang } from '@coolon/pectin';
7
7
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
8
8
  import _ from 'lodash';
9
9
  import { ParameterDefinition } from './parameter-definition.class';
@@ -102,7 +102,7 @@ Sanitiser = /** @class */ (function () {
102
102
  if (!this.sanitiser) return [3 /*break*/, 2];
103
103
  this.initialValue = this.readFrom(this.snapshot);
104
104
  _a = this;
105
- return [4 /*yield*/, this.sanitiser.sanitise(this.initialValue)];
105
+ return [4 /*yield*/, this.sanitiser.sanitise(null, this.initialValue)];
106
106
  case 1:
107
107
  _a._sanitisedValue = _b.sent();
108
108
  if (this.initialValue !== this._sanitisedValue) {
@@ -247,10 +247,14 @@ var RouteParameterSanitiser = /** @class */ (function () {
247
247
  assert.isTruthy(this.parameterSanitisers.length !== 0);
248
248
  return this.routeIdSanitiser && this.routeIdSanitiser.valueChanged;
249
249
  };
250
+ // @Trace()
251
+ // @Trace()
250
252
  /**
251
253
  * @return {?}
252
254
  */
253
- RouteParameterSanitiser.prototype.getRedirectParams = /**
255
+ RouteParameterSanitiser.prototype.getRedirectParams =
256
+ // @Trace()
257
+ /**
254
258
  * @return {?}
255
259
  */
256
260
  function () {
@@ -289,12 +293,6 @@ var RouteParameterSanitiser = /** @class */ (function () {
289
293
  tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
290
294
  tslib_1.__metadata("design:returntype", Object)
291
295
  ], RouteParameterSanitiser.prototype, "getSanitiser", null);
292
- tslib_1.__decorate([
293
- Trace(),
294
- tslib_1.__metadata("design:type", Function),
295
- tslib_1.__metadata("design:paramtypes", []),
296
- tslib_1.__metadata("design:returntype", Array)
297
- ], RouteParameterSanitiser.prototype, "getRedirectParams", null);
298
296
  return RouteParameterSanitiser;
299
297
  }());
300
298
  export { RouteParameterSanitiser };
@@ -434,4 +432,4 @@ if (false) {
434
432
  }(Sanitiser));
435
433
  Sanitiser.Array = Array;
436
434
  })(Sanitiser || (Sanitiser = {}));
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBaUIsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFHbkU7Ozs7SUFLRSxtQkFBcUIsWUFBdUMsRUFBVyxRQUFnQyxFQUFXLFNBQWdDO1FBQTdILGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUFXLGFBQVEsR0FBUixRQUFRLENBQXdCO1FBQVcsY0FBUyxHQUFULFNBQVMsQ0FBdUI7SUFDbEosQ0FBQzs7OztJQUVELDZCQUFTOzs7SUFBVDtRQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVELHNCQUFJLG1DQUFZOzs7O1FBQWhCO1lBQ0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEcsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxxQ0FBYzs7OztRQUFsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixDQUFDOzs7T0FBQTs7Ozs7O0lBRVMsNEJBQVE7Ozs7O0lBQWxCLFVBQW1CLFFBQWdDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJ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LE9BQU8sU0FBUyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBbkMsQ0FBbUMsRUFBQyxDQUFDO1FBQ3JFLENBQUM7Ozs7Ozs7UUFFUywwQkFBVTs7Ozs7O1FBQXBCLFVBQXFCLFlBQWlCLEVBQUUsY0FBbUI7WUFDekQsT0FBTyxZQUFZLEtBQUssY0FBYyxDQUFDO1FBQ3pDLENBQUM7Ozs7O1FBRUQsZ0NBQWdCOzs7O1FBQWhCLFVBQWlCLElBQVE7WUFBekIsaUJBRUM7WUFEQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaEMsQ0FBZ0MsRUFBQyxDQUFDO1FBQ2hHLENBQUM7UUFHSCxZQUFDO0lBQUQsQ0FBQyxBQWhCRCxDQUE4QixTQUFTLEdBZ0J0QztJQWhCWSxlQUFLLFFBZ0JqQixDQUFBO0FBRUgsQ0FBQyxFQXJDZ0IsU0FBUyxLQUFULFNBQVMsUUFxQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXNzZXJ0LCBDb25zdHJ1Y3RhYmxlLCBsYW5nLCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERlZmF1bHRQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL2RlZmF1bHQtcGFyYW1ldGVyLXNhbml0aXNlcic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL3BhcmFtZXRlci1zYW5pdGlzZXInO1xuXG5leHBvcnQgY2xhc3MgU2FuaXRpc2VyPFQsIFM+IHtcblxuICBwcml2YXRlIGluaXRpYWxWYWx1ZTogUztcbiAgcHJpdmF0ZSBfc2FuaXRpc2VkVmFsdWU6IFM7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+LCByZWFkb25seSBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgcmVhZG9ubHkgc2FuaXRpc2VyOiBQYXJhbWV0ZXJTYW5pdGlzZXI8Uz4pIHtcbiAgfVxuXG4gIGlzUm91dGVJZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkO1xuICB9XG5cbiAgZ2V0IHZhbHVlQ2hhbmdlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIV8uaXNOaWwodGhpcy5pbml0aWFsVmFsdWUpICYmIHRoaXMuaGFzQ2hhbmdlZCh0aGlzLmluaXRpYWxWYWx1ZSwgdGhpcy5zYW5pdGlzZWRWYWx1ZSk7XG4gIH1cblxuICBnZXQgc2FuaXRpc2VkVmFsdWUoKTogUyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXNlZFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRGcm9tKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUyB7XG4gICAgcmV0dXJuIGxhbmcuYWJzdHJhY3RNZXRob2QodGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChpbml0aWFsVmFsdWU6IFMsIHNhbml0aXNlZFZhbHVlOiBTKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxhbmcuYWJzdHJhY3RNZXRob2QodGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KSB7XG4gICAgbGFuZy5hYnN0cmFjdE1ldGhvZCh0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGFzeW5jIHNhbml0aXplKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNhbml0aXNlcikge1xuICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnJlYWRGcm9tKHRoaXMuc25hcHNob3QpO1xuICAgICAgdGhpcy5fc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCB0aGlzLnNhbml0aXNlci5zYW5pdGlzZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUgIT09IHRoaXMuX3Nhbml0aXNlZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUm91dGVQYXJhbWV0ZXJTYW5pdGlzZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVJZFNhbml0aXNlcjogU2FuaXRpc2VyPGFueSwgYW55PjtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTYW5pdGlzZXJzOiBTYW5pdGlzZXI8YW55LCBhbnk+W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWZzOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXSxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIGNvbnN0IHNhbml0aXNlcnMgPSBwYXJhbWV0ZXJEZWZzLm1hcChkZWYgPT4ge1xuICAgICAgcmV0dXJuIGRlZi5pc0FycmF5ID9cbiAgICAgICAgbmV3IFNhbml0aXNlci5BcnJheShkZWYsIHNuYXBzaG90LCB0aGlzLmdldFNhbml0aXNlcihkZWYpKSA6XG4gICAgICAgIG5ldyBTYW5pdGlzZXIuVmFsdWUoZGVmLCBzbmFwc2hvdCwgdGhpcy5nZXRTYW5pdGlzZXIoZGVmKSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZUlkU2FuaXRpc2VyID0gc2FuaXRpc2Vycy5maW5kKHAgPT4gcC5pc1JvdXRlSWQoKSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzID0gc2FuaXRpc2Vycy5maWx0ZXIocCA9PiAhcC5pc1JvdXRlSWQoKSk7XG4gIH1cblxuICBhc3luYyBzYW5pdGlzZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZUlkU2FuaXRpc2VyKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlSWRTYW5pdGlzZXIuc2FuaXRpemUoKTtcbiAgICAgIGlmICh0aGlzLnJvdXRlSWRTYW5pdGlzZXIudmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBpc24ndCBvayB3ZSByZWRpcmVjdCBpbW1lZGlhdGVseSBhcyB0aGUgcXVlcnkgcGFyYW1zIG1heSBuZWVkIHRvIGJlIHNhbml0aXNlZCBpbiB0aGVcbiAgICAgICAgLy8gY29udGV4dCBvZiB0aGUgcm91dGUgaWQuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBzYW5pdGlzZXIgb2YgdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzKSB7XG4gICAgICBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpemUoKTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMuZmluZChzID0+IHMudmFsdWVDaGFuZ2VkKTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRTYW5pdGlzZXI8VCwgUz4oZGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUGFyYW1ldGVyU2FuaXRpc2VyPFM+IHtcbiAgICByZXR1cm4gZGVmLmdldFNhbml0aXNlcih0aGlzLmluamVjdG9yKTtcbiAgfVxuXG4gIHJvdXRlSWRIYXNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMubGVuZ3RoICE9PSAwKTtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZUlkU2FuaXRpc2VyICYmIHRoaXMucm91dGVJZFNhbml0aXNlci52YWx1ZUNoYW5nZWQ7XG4gIH1cblxuICBAVHJhY2UoKVxuICBnZXRSZWRpcmVjdFBhcmFtcygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMucm91dGVJZEhhc0NoYW5nZWQoKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnJvdXRlSWRTYW5pdGlzZXIuc2FuaXRpc2VkVmFsdWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByb3V0ZVBhcmFtcyA9IHt9O1xuICAgICAgdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzLmZvckVhY2gocyA9PiBzLmluamVjdFJvdXRlUGFyYW0ocm91dGVQYXJhbXMpKTtcbiAgICAgIHJldHVybiBbcm91dGVQYXJhbXNdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTYW5pdGlzZXJDb250cnVjdG9yPFM+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUeXBlPFBhcmFtZXRlclNhbml0aXNlcjxTPj4ge1xuICAgIHJldHVybiBfLmlzRnVuY3Rpb24odmFsdWUpICYmIGxhbmcuY29uc3RydWN0b3JDaGFpbih2YWx1ZSBhcyB1bmtub3duIGFzIENvbnN0cnVjdGFibGU8YW55PikuaW5jbHVkZXMoU2FuaXRpc2VyKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFNhbml0aXNlciB7XG5cbiAgZXhwb3J0IGNsYXNzIFZhbHVlPFQ+IGV4dGVuZHMgU2FuaXRpc2VyPFQsIFQ+IHtcblxuICAgIHJlYWRGcm9tKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogVCB7XG4gICAgICBjb25zdCByYXdWYWx1ZSA9IHNuYXBzaG90LnBhcmFtTWFwLmdldCh0aGlzLnBhcmFtZXRlckRlZi5uYW1lKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLnBhcnNlKHJhd1ZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChpbml0aWFsVmFsdWU6IFQsIHNhbml0aXNlZFZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaW5pdGlhbFZhbHVlICE9PSBzYW5pdGlzZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KSB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodGhpcy5zYW5pdGlzZWRWYWx1ZSk7XG4gICAgfVxuXG4gIH1cblxuICBleHBvcnQgY2xhc3MgQXJyYXk8VD4gZXh0ZW5kcyBTYW5pdGlzZXI8VCwgVFtdPiB7XG5cbiAgICByZWFkRnJvbShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFRbXSB7XG4gICAgICBjb25zdCByYXdWYWx1ZXMgPSBzbmFwc2hvdC5wYXJhbU1hcC5nZXRBbGwodGhpcy5wYXJhbWV0ZXJEZWYubmFtZSk7XG4gICAgICByZXR1cm4gcmF3VmFsdWVzLm1hcCh2YWx1ZSA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhc0NoYW5nZWQoaW5pdGlhbFZhbHVlOiBUW10sIHNhbml0aXNlZFZhbHVlOiBUW10pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpbml0aWFsVmFsdWUgIT09IHNhbml0aXNlZFZhbHVlO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnNhbml0aXNlZFZhbHVlLm1hcCh2ID0+IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHYpKTtcbiAgICB9XG5cblxuICB9XG5cbn1cbiJdfQ==
435
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBaUIsSUFBSSxFQUFTLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzNFLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUduRTs7OztJQUtFLG1CQUFxQixZQUF1QyxFQUFXLFFBQWdDLEVBQVcsU0FBZ0M7UUFBN0gsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFBVyxjQUFTLEdBQVQsU0FBUyxDQUF1QjtJQUNsSixDQUFDOzs7O0lBRUQsNkJBQVM7OztJQUFUO1FBQ0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0JBQUksbUNBQVk7Ozs7UUFBaEI7WUFDRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFjOzs7O1FBQWxCO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlCLENBQUM7OztPQUFBOzs7Ozs7SUFFUyw0QkFBUTs7Ozs7SUFBbEIsVUFBbUIsUUFBZ0M7UUFDakQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFX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LEdBQUc7Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBbkMsQ0FBbUMsRUFBQyxDQUFDO1FBQ3JFLENBQUM7Ozs7Ozs7UUFFUywwQkFBVTs7Ozs7O1FBQXBCLFVBQXFCLFlBQWlCLEVBQUUsY0FBbUI7WUFDekQsT0FBTyxZQUFZLEtBQUssY0FBYyxDQUFDO1FBQ3pDLENBQUM7Ozs7O1FBRUQsZ0NBQWdCOzs7O1FBQWhCLFVBQWlCLElBQVE7WUFBekIsaUJBRUM7WUFEQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaEMsQ0FBZ0MsRUFBQyxDQUFDO1FBQ2hHLENBQUM7UUFHSCxZQUFDO0lBQUQsQ0FBQyxBQWhCRCxDQUE4QixTQUFTLEdBZ0J0QztJQWhCWSxlQUFLLFFBZ0JqQixDQUFBO0FBRUgsQ0FBQyxFQXJDZ0IsU0FBUyxLQUFULFNBQVMsUUFxQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXNzZXJ0LCBDb25zdHJ1Y3RhYmxlLCBsYW5nLCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhcmFtZXRlclNhbml0aXNlciB9IGZyb20gJy4vcGFyYW1ldGVyLXNhbml0aXNlcic7XG5cbmV4cG9ydCBjbGFzcyBTYW5pdGlzZXI8VCwgUz4ge1xuXG4gIHByaXZhdGUgaW5pdGlhbFZhbHVlOiBTO1xuICBwcml2YXRlIF9zYW5pdGlzZWRWYWx1ZTogUztcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHJlYWRvbmx5IHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByZWFkb25seSBzYW5pdGlzZXI6IFBhcmFtZXRlclNhbml0aXNlcjxTPikge1xuICB9XG5cbiAgaXNSb3V0ZUlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQ7XG4gIH1cblxuICBnZXQgdmFsdWVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhXy5pc05pbCh0aGlzLmluaXRpYWxWYWx1ZSkgJiYgdGhpcy5oYXNDaGFuZ2VkKHRoaXMuaW5pdGlhbFZhbHVlLCB0aGlzLnNhbml0aXNlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCBzYW5pdGlzZWRWYWx1ZSgpOiBTIHtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpc2VkVmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZEZyb20oc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBTIHtcbiAgICByZXR1cm4gbGFuZy5hYnN0cmFjdE1ldGhvZCh0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYXNDaGFuZ2VkKGluaXRpYWxWYWx1ZTogUywgc2FuaXRpc2VkVmFsdWU6IFMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbGFuZy5hYnN0cmFjdE1ldGhvZCh0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pIHtcbiAgICBsYW5nLmFic3RyYWN0TWV0aG9kKHRoaXMuY29uc3RydWN0b3IpO1xuICB9XG5cbiAgYXN5bmMgc2FuaXRpemUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuc2FuaXRpc2VyKSB7XG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IHRoaXMucmVhZEZyb20odGhpcy5zbmFwc2hvdCk7XG4gICAgICB0aGlzLl9zYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHRoaXMuc2FuaXRpc2VyLnNhbml0aXNlKG51bGwsIHRoaXMuaW5pdGlhbFZhbHVlKTtcbiAgICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSAhPT0gdGhpcy5fc2FuaXRpc2VkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBSb3V0ZVBhcmFtZXRlclNhbml0aXNlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZUlkU2FuaXRpc2VyOiBTYW5pdGlzZXI8YW55LCBhbnk+O1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlclNhbml0aXNlcnM6IFNhbml0aXNlcjxhbnksIGFueT5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBhcmFtZXRlckRlZnM6IFBhcmFtZXRlckRlZmluaXRpb248YW55PltdLFxuICAgICAgICAgICAgICByZWFkb25seSBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgY29uc3Qgc2FuaXRpc2VycyA9IHBhcmFtZXRlckRlZnMubWFwKGRlZiA9PiB7XG4gICAgICByZXR1cm4gZGVmLmlzQXJyYXkgP1xuICAgICAgICBuZXcgU2FuaXRpc2VyLkFycmF5KGRlZiwgc25hcHNob3QsIHRoaXMuZ2V0U2FuaXRpc2VyKGRlZikpIDpcbiAgICAgICAgbmV3IFNhbml0aXNlci5WYWx1ZShkZWYsIHNuYXBzaG90LCB0aGlzLmdldFNhbml0aXNlcihkZWYpKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlSWRTYW5pdGlzZXIgPSBzYW5pdGlzZXJzLmZpbmQocCA9PiBwLmlzUm91dGVJZCgpKTtcbiAgICB0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMgPSBzYW5pdGlzZXJzLmZpbHRlcihwID0+ICFwLmlzUm91dGVJZCgpKTtcbiAgfVxuXG4gIGFzeW5jIHNhbml0aXNlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnJvdXRlSWRTYW5pdGlzZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVJZFNhbml0aXNlci5zYW5pdGl6ZSgpO1xuICAgICAgaWYgKHRoaXMucm91dGVJZFNhbml0aXNlci52YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGlzbid0IG9rIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIHRoZSBxdWVyeSBwYXJhbXMgbWF5IG5lZWQgdG8gYmUgc2FuaXRpc2VkIGluIHRoZVxuICAgICAgICAvLyBjb250ZXh0IG9mIHRoZSByb3V0ZSBpZC5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHNhbml0aXNlciBvZiB0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMpIHtcbiAgICAgIGF3YWl0IHNhbml0aXNlci5zYW5pdGl6ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gIXRoaXMucGFyYW1ldGVyU2FuaXRpc2Vycy5maW5kKHMgPT4gcy52YWx1ZUNoYW5nZWQpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFNhbml0aXNlcjxULCBTPihkZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBQYXJhbWV0ZXJTYW5pdGlzZXI8Uz4ge1xuICAgIHJldHVybiBkZWYuZ2V0U2FuaXRpc2VyKHRoaXMuaW5qZWN0b3IpO1xuICB9XG5cbiAgcm91dGVJZEhhc0NoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMucGFyYW1ldGVyU2FuaXRpc2Vycy5sZW5ndGggIT09IDApO1xuICAgIHJldHVybiB0aGlzLnJvdXRlSWRTYW5pdGlzZXIgJiYgdGhpcy5yb3V0ZUlkU2FuaXRpc2VyLnZhbHVlQ2hhbmdlZDtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGdldFJlZGlyZWN0UGFyYW1zKCk6IGFueVtdIHtcbiAgICBpZiAodGhpcy5yb3V0ZUlkSGFzQ2hhbmdlZCgpKSB7XG4gICAgICByZXR1cm4gW3RoaXMucm91dGVJZFNhbml0aXNlci5zYW5pdGlzZWRWYWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJvdXRlUGFyYW1zID0ge307XG4gICAgICB0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMuZm9yRWFjaChzID0+IHMuaW5qZWN0Um91dGVQYXJhbShyb3V0ZVBhcmFtcykpO1xuICAgICAgcmV0dXJuIFtyb3V0ZVBhcmFtc107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1Nhbml0aXNlckNvbnRydWN0b3I8Uz4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFR5cGU8UGFyYW1ldGVyU2FuaXRpc2VyPFM+PiB7XG4gICAgcmV0dXJuIF8uaXNGdW5jdGlvbih2YWx1ZSkgJiYgbGFuZy5jb25zdHJ1Y3RvckNoYWluKHZhbHVlIGFzIHVua25vd24gYXMgQ29uc3RydWN0YWJsZTxhbnk+KS5pbmNsdWRlcyhTYW5pdGlzZXIpO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU2FuaXRpc2VyIHtcblxuICBleHBvcnQgY2xhc3MgVmFsdWU8VD4gZXh0ZW5kcyBTYW5pdGlzZXI8VCwgVD4ge1xuXG4gICAgcmVhZEZyb20oc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBUIHtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gc25hcHNob3QucGFyYW1NYXAuZ2V0KHRoaXMucGFyYW1ldGVyRGVmLm5hbWUpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyRGVmLnR5cGUucGFyc2UocmF3VmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYXNDaGFuZ2VkKGluaXRpYWxWYWx1ZTogVCwgc2FuaXRpc2VkVmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpbml0aWFsVmFsdWUgIT09IHNhbml0aXNlZFZhbHVlO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh0aGlzLnNhbml0aXNlZFZhbHVlKTtcbiAgICB9XG5cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBBcnJheTxUPiBleHRlbmRzIFNhbml0aXNlcjxULCBUW10+IHtcblxuICAgIHJlYWRGcm9tKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogVFtdIHtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlcyA9IHNuYXBzaG90LnBhcmFtTWFwLmdldEFsbCh0aGlzLnBhcmFtZXRlckRlZi5uYW1lKTtcbiAgICAgIHJldHVybiByYXdWYWx1ZXMubWFwKHZhbHVlID0+IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChpbml0aWFsVmFsdWU6IFRbXSwgc2FuaXRpc2VkVmFsdWU6IFRbXSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZSAhPT0gc2FuaXRpc2VkVmFsdWU7XG4gICAgfVxuXG4gICAgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSkge1xuICAgICAgZGVzdFt0aGlzLnBhcmFtZXRlckRlZi5uYW1lXSA9IHRoaXMuc2FuaXRpc2VkVmFsdWUubWFwKHYgPT4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodikpO1xuICAgIH1cblxuXG4gIH1cblxufVxuIl19
@@ -12,11 +12,11 @@ if (false) {
12
12
  /**
13
13
  * @return {?}
14
14
  */
15
- Visit.prototype.getRouteId = function () { };
15
+ Visit.prototype.getRouteIdValue = function () { };
16
16
  /**
17
17
  * @param {?} name
18
18
  * @return {?}
19
19
  */
20
- Visit.prototype.getRouteParameter = function (name) { };
20
+ Visit.prototype.getParameterValue = function (name) { };
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvdmlzaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLDJCQU1DOzs7SUFMQyxnQ0FBMEM7Ozs7SUFFMUMsNkNBQWtCOzs7OztJQUVsQix3REFBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuXG4vLyBUT0RPOiBJdCdkIGJlIG5pY2UgaWYgd2UgZ2VuZXJhdGVkIGEgdHlwZSBmb3IgdGhpcy4uLlxuZXhwb3J0IGludGVyZmFjZSBWaXNpdCB7XG4gIHJlYWRvbmx5IHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uO1xuXG4gIGdldFJvdXRlSWQoKTogYW55O1xuXG4gIGdldFJvdXRlUGFyYW1ldGVyKG5hbWU6IHN0cmluZyk6IGFueTtcbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvdmlzaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLDJCQU1DOzs7SUFMQyxnQ0FBMEM7Ozs7SUFFMUMsa0RBQXVCOzs7OztJQUV2Qix3REFBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuXG4vLyBUT0RPOiBJdCdkIGJlIG5pY2UgaWYgd2UgZ2VuZXJhdGVkIGEgdHlwZSBmb3IgdGhpcy4uLlxuZXhwb3J0IGludGVyZmFjZSBWaXNpdCB7XG4gIHJlYWRvbmx5IHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uO1xuXG4gIGdldFJvdXRlSWRWYWx1ZSgpOiBhbnk7XG5cbiAgZ2V0UGFyYW1ldGVyVmFsdWUobmFtZTogc3RyaW5nKTogYW55O1xufVxuIl19