@coolon/angular-ui-powerups 0.0.43 → 0.0.46

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 (131) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +1499 -1188
  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.d.ts +16 -15
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +16 -15
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/components/disposable-component.js +1 -1
  10. package/esm2015/lib/components/forms/number-input/number-input.component.js +1 -1
  11. package/esm2015/lib/components/forms/password-input/password-input.component.js +1 -1
  12. package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
  13. package/esm2015/lib/components/resize-aware.component.js +1 -1
  14. package/esm2015/lib/components/types/bounds.class.js +1 -1
  15. package/esm2015/lib/components/types/dimension.class.js +1 -1
  16. package/esm2015/lib/components/types/point.class.js +1 -1
  17. package/esm2015/lib/directives/command.directive.js +1 -1
  18. package/esm2015/lib/directives/focus-binding.directive.js +2 -2
  19. package/esm2015/lib/interaction/alert.js +1 -1
  20. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -2
  21. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +6 -1
  22. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
  23. package/esm2015/lib/interaction/confirm.js +1 -1
  24. package/esm2015/lib/interaction/interaction.module.js +2 -2
  25. package/esm2015/lib/interaction/result.js +1 -1
  26. package/esm2015/lib/interaction/services/dialog-interaction.service.js +2 -2
  27. package/esm2015/lib/place/components/abstract-place-navigation.component.js +3 -2
  28. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +135 -84
  29. package/esm2015/lib/place/components/place-outlet/route-animations.js +2 -2
  30. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  31. package/esm2015/lib/place/guards/leave-place.guard.js +12 -10
  32. package/esm2015/lib/place/guards/place-route.guard.js +40 -33
  33. package/esm2015/lib/place/index.js +5 -6
  34. package/esm2015/lib/place/nav-item.js +1 -1
  35. package/esm2015/lib/place/place-component.js +39 -169
  36. package/esm2015/lib/place/place-definition.js +79 -0
  37. package/esm2015/lib/place/place-history.js +77 -0
  38. package/esm2015/lib/place/place-router.js +98 -0
  39. package/esm2015/lib/place/place.decorator.js +30 -3
  40. package/esm2015/lib/place/place.module.js +2 -5
  41. package/esm2015/lib/place/route/json-types.js +1 -1
  42. package/esm2015/lib/place/route/parameter-decorators.js +7 -60
  43. package/esm2015/lib/place/route/parameter-definition.class.js +187 -9
  44. package/esm2015/lib/place/route/parameter-sanitiser.js +4 -17
  45. package/esm2015/lib/place/route/parameter-snapshot.js +228 -72
  46. package/esm2015/lib/place/route/parameter-type.js +2 -2
  47. package/esm2015/lib/place/route/route-parameter-sanitiser.js +7 -21
  48. package/esm2015/lib/place/visit.js +3 -3
  49. package/esm2015/public_api.js +2 -2
  50. package/esm5/coolon-angular-ui-powerups.js +16 -15
  51. package/esm5/index.js +2 -2
  52. package/esm5/lib/components/disposable-component.js +1 -1
  53. package/esm5/lib/components/forms/number-input/number-input.component.js +1 -1
  54. package/esm5/lib/components/forms/password-input/password-input.component.js +1 -1
  55. package/esm5/lib/components/forms/string-input/string-input.component.js +1 -1
  56. package/esm5/lib/components/resize-aware.component.js +1 -1
  57. package/esm5/lib/components/types/bounds.class.js +1 -1
  58. package/esm5/lib/components/types/dimension.class.js +1 -1
  59. package/esm5/lib/components/types/point.class.js +1 -1
  60. package/esm5/lib/directives/command.directive.js +1 -1
  61. package/esm5/lib/directives/focus-binding.directive.js +2 -2
  62. package/esm5/lib/interaction/alert.js +1 -1
  63. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -2
  64. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +6 -1
  65. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
  66. package/esm5/lib/interaction/confirm.js +1 -1
  67. package/esm5/lib/interaction/interaction.module.js +2 -2
  68. package/esm5/lib/interaction/result.js +1 -1
  69. package/esm5/lib/interaction/services/dialog-interaction.service.js +2 -2
  70. package/esm5/lib/place/components/abstract-place-navigation.component.js +3 -2
  71. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +153 -113
  72. package/esm5/lib/place/components/place-outlet/route-animations.js +2 -2
  73. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  74. package/esm5/lib/place/guards/leave-place.guard.js +12 -10
  75. package/esm5/lib/place/guards/place-route.guard.js +40 -32
  76. package/esm5/lib/place/index.js +5 -6
  77. package/esm5/lib/place/nav-item.js +1 -1
  78. package/esm5/lib/place/place-component.js +53 -199
  79. package/esm5/lib/place/place-definition.js +88 -0
  80. package/esm5/lib/place/place-history.js +90 -0
  81. package/esm5/lib/place/place-router.js +118 -0
  82. package/esm5/lib/place/place.decorator.js +30 -3
  83. package/esm5/lib/place/place.module.js +2 -5
  84. package/esm5/lib/place/route/json-types.js +1 -1
  85. package/esm5/lib/place/route/parameter-decorators.js +7 -60
  86. package/esm5/lib/place/route/parameter-definition.class.js +227 -9
  87. package/esm5/lib/place/route/parameter-sanitiser.js +4 -17
  88. package/esm5/lib/place/route/parameter-snapshot.js +295 -80
  89. package/esm5/lib/place/route/parameter-type.js +2 -2
  90. package/esm5/lib/place/route/route-parameter-sanitiser.js +7 -20
  91. package/esm5/lib/place/visit.js +3 -3
  92. package/esm5/public_api.js +2 -2
  93. package/fesm2015/coolon-angular-ui-powerups.js +1144 -904
  94. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  95. package/fesm5/coolon-angular-ui-powerups.js +1462 -1154
  96. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  97. package/index.d.ts +1 -1
  98. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +7 -0
  99. package/lib/place/components/abstract-place-navigation.component.d.ts +3 -2
  100. package/lib/place/components/place-outlet/place-outlet.component.d.ts +30 -19
  101. package/lib/place/guards/place-route.guard.d.ts +7 -6
  102. package/lib/place/index.d.ts +3 -4
  103. package/lib/place/place-component.d.ts +13 -41
  104. package/lib/place/place-definition.d.ts +20 -0
  105. package/lib/place/place-history.d.ts +13 -0
  106. package/lib/place/place-router.d.ts +10 -0
  107. package/lib/place/place.decorator.d.ts +13 -1
  108. package/lib/place/route/parameter-decorators.d.ts +0 -4
  109. package/lib/place/route/parameter-definition.class.d.ts +39 -6
  110. package/lib/place/route/parameter-sanitiser.d.ts +3 -8
  111. package/lib/place/route/parameter-snapshot.d.ts +15 -12
  112. package/lib/place/route/route-parameter-sanitiser.d.ts +1 -3
  113. package/lib/place/visit.d.ts +4 -4
  114. package/package.json +1 -1
  115. package/schematics/place-routes/index.js.map +1 -1
  116. package/schematics/place-routes/place-def.js +1 -1
  117. package/schematics/place-routes/place-def.js.map +1 -1
  118. package/schematics/place-routes/templates/place-destinations.ts.template +21 -0
  119. package/schematics/place-routes/templates/{places.ts.template → place-routes.ts.template} +1 -13
  120. package/esm2015/lib/place/place-component-like.js +0 -17
  121. package/esm2015/lib/place/place-updates-service.js +0 -16
  122. package/esm2015/lib/place/place.service.js +0 -102
  123. package/esm2015/lib/place/route/default-parameter-sanitiser.js +0 -78
  124. package/esm5/lib/place/place-component-like.js +0 -17
  125. package/esm5/lib/place/place-updates-service.js +0 -16
  126. package/esm5/lib/place/place.service.js +0 -136
  127. package/esm5/lib/place/route/default-parameter-sanitiser.js +0 -85
  128. package/lib/place/place-component-like.d.ts +0 -5
  129. package/lib/place/place-updates-service.d.ts +0 -10
  130. package/lib/place/place.service.d.ts +0 -22
  131. package/lib/place/route/default-parameter-sanitiser.d.ts +0 -13
@@ -3,13 +3,11 @@
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, Trace } from '@coolon/pectin';
6
+ import { Injector } from '@angular/core';
7
+ import { Trace } from '@coolon/pectin';
7
8
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
8
- import * as _ from 'lodash';
9
- // TODO: there are really two types of snapshot, ones with id's and ones without.
10
- // Id snapshot are repesented by 2 url segments
11
- // ID => [{'/basePath', params}, {'id', params}]
12
- // NO ID => [{'/basePath', params}]
9
+ import _ from 'lodash';
10
+ import { ParameterDefinition } from './parameter-definition.class';
13
11
  var ParameterSnapshot = /** @class */ (function () {
14
12
  function ParameterSnapshot(placeDefinition, resolved) {
15
13
  this.placeDefinition = placeDefinition;
@@ -17,64 +15,39 @@ var ParameterSnapshot = /** @class */ (function () {
17
15
  }
18
16
  /**
19
17
  * @param {?} other
18
+ * @param {?=} debug
20
19
  * @return {?}
21
20
  */
22
21
  ParameterSnapshot.prototype.hasChanged = /**
23
22
  * @param {?} other
23
+ * @param {?=} debug
24
24
  * @return {?}
25
25
  */
26
- function (other) {
26
+ function (other, debug) {
27
+ if (debug === void 0) { debug = false; }
27
28
  /** @type {?} */
28
29
  var changed = this.resolved.find((/**
29
30
  * @param {?} r
30
31
  * @return {?}
31
32
  */
32
33
  function (r) {
33
- return !r.isSame(other.getResolvedParameterValue(r.parameterDef));
34
+ return !r.isSame(other.getValueOf(r.parameterDef));
34
35
  }));
35
- if (changed) {
36
- console.log({ mine: changed, theirs: other.getResolvedParameter(changed.parameterDef) });
36
+ if (changed && debug) {
37
+ console.log({
38
+ name: changed.parameterDef.name,
39
+ mine: changed.value,
40
+ theirs: other.getValueOf(changed.parameterDef)
41
+ });
37
42
  }
38
43
  return !!changed;
39
44
  };
40
- /**
41
- * @param {?} other
42
- * @return {?}
43
- */
44
- ParameterSnapshot.prototype.asUrlSegment = /**
45
- * @param {?} other
46
- * @return {?}
47
- */
48
- function (other) {
49
- assert.isTruthy(this.hasChanged(other));
50
- /** @type {?} */
51
- var routeParts = [];
52
- /** @type {?} */
53
- var gainedId = this.getFormattedRouteId() && !other.getFormattedRouteId();
54
- /** @type {?} */
55
- var sameId = this.getFormattedRouteId() === other.getFormattedRouteId();
56
- /** @type {?} */
57
- var lostId = (!this.getFormattedRouteId() && other.getFormattedRouteId());
58
- /** @type {?} */
59
- var changedId = (this.getFormattedRouteId() !== other.getFormattedRouteId());
60
- if (lostId || changedId) {
61
- routeParts.push('..');
62
- if (changedId) {
63
- routeParts.push(this.getFormattedRouteId());
64
- }
65
- }
66
- else {
67
- routeParts.push('.');
68
- }
69
- routeParts.push(this.getFormattedParameters());
70
- return routeParts;
71
- };
72
45
  /**
73
46
  * @template T, S
74
47
  * @param {?} parameterDef
75
48
  * @return {?}
76
49
  */
77
- ParameterSnapshot.prototype.getResolvedParameter = /**
50
+ ParameterSnapshot.prototype.getParameter = /**
78
51
  * @template T, S
79
52
  * @param {?} parameterDef
80
53
  * @return {?}
@@ -91,30 +64,30 @@ var ParameterSnapshot = /** @class */ (function () {
91
64
  * @param {?} parameterDef
92
65
  * @return {?}
93
66
  */
94
- ParameterSnapshot.prototype.getResolvedParameterValue = /**
67
+ ParameterSnapshot.prototype.getValueOf = /**
95
68
  * @template T, S
96
69
  * @param {?} parameterDef
97
70
  * @return {?}
98
71
  */
99
72
  function (parameterDef) {
100
73
  /** @type {?} */
101
- var resolvedParameter = this.getResolvedParameter(parameterDef);
74
+ var resolvedParameter = this.getParameter(parameterDef);
102
75
  return resolvedParameter ? resolvedParameter.value : null;
103
76
  };
104
77
  /**
105
78
  * @return {?}
106
79
  */
107
- ParameterSnapshot.prototype.getRouteId = /**
80
+ ParameterSnapshot.prototype.getRouteIdValue = /**
108
81
  * @return {?}
109
82
  */
110
83
  function () {
111
- return this.getResolvedRouteId() ? this.getResolvedRouteId().value : null;
84
+ return this.getRouteIdParameter() ? this.getRouteIdParameter().value : null;
112
85
  };
113
86
  /**
114
87
  * @param {?} name
115
88
  * @return {?}
116
89
  */
117
- ParameterSnapshot.prototype.getRouteParameter = /**
90
+ ParameterSnapshot.prototype.getParameterValue = /**
118
91
  * @param {?} name
119
92
  * @return {?}
120
93
  */
@@ -131,7 +104,7 @@ var ParameterSnapshot = /** @class */ (function () {
131
104
  * @private
132
105
  * @return {?}
133
106
  */
134
- ParameterSnapshot.prototype.getResolvedRouteId = /**
107
+ ParameterSnapshot.prototype.getRouteIdParameter = /**
135
108
  * @private
136
109
  * @return {?}
137
110
  */
@@ -144,6 +117,21 @@ var ParameterSnapshot = /** @class */ (function () {
144
117
  */
145
118
  function (p) { return p.parameterDef.isRouteId; }))));
146
119
  };
120
+ /**
121
+ * @private
122
+ * @return {?}
123
+ */
124
+ ParameterSnapshot.prototype.getRouteParameters = /**
125
+ * @private
126
+ * @return {?}
127
+ */
128
+ function () {
129
+ return this.resolved.filter((/**
130
+ * @param {?} r
131
+ * @return {?}
132
+ */
133
+ function (r) { return !r.parameterDef.isRouteId; }));
134
+ };
147
135
  /**
148
136
  * @return {?}
149
137
  */
@@ -151,7 +139,7 @@ var ParameterSnapshot = /** @class */ (function () {
151
139
  * @return {?}
152
140
  */
153
141
  function () {
154
- return !!this.getResolvedRouteId();
142
+ return !!this.getRouteIdParameter();
155
143
  };
156
144
  /**
157
145
  * @return {?}
@@ -161,7 +149,7 @@ var ParameterSnapshot = /** @class */ (function () {
161
149
  */
162
150
  function () {
163
151
  /** @type {?} */
164
- var routeIdParam = this.getResolvedRouteId();
152
+ var routeIdParam = this.getRouteIdParameter();
165
153
  return routeIdParam ? routeIdParam.formattedValue() : null;
166
154
  };
167
155
  /**
@@ -187,6 +175,25 @@ var ParameterSnapshot = /** @class */ (function () {
187
175
  }));
188
176
  return params;
189
177
  };
178
+ /**
179
+ * @return {?}
180
+ */
181
+ ParameterSnapshot.prototype.getAllFormattedParameters = /**
182
+ * @return {?}
183
+ */
184
+ function () {
185
+ /** @type {?} */
186
+ var params = {};
187
+ /** @type {?} */
188
+ var routeIdParam = this.resolved.forEach((/**
189
+ * @param {?} p
190
+ * @return {?}
191
+ */
192
+ function (p) {
193
+ params[p.parameterDef.name] = p.formattedValue();
194
+ }));
195
+ return params;
196
+ };
190
197
  /**
191
198
  * @template T, S
192
199
  * @param {?} parameter
@@ -209,41 +216,89 @@ var ParameterSnapshot = /** @class */ (function () {
209
216
  })));
210
217
  };
211
218
  /**
212
- * @param {?} url
219
+ * @param {?} injector
213
220
  * @return {?}
214
221
  */
215
- ParameterSnapshot.prototype.updateUrl = /**
216
- * @param {?} url
222
+ ParameterSnapshot.prototype.sanitise = /**
223
+ * @param {?} injector
217
224
  * @return {?}
218
225
  */
219
- function (url) {
220
- return url;
226
+ function (injector) {
227
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
228
+ var routeId, sanitisedValue, result, routeParameters, i, sanitisedValue;
229
+ return tslib_1.__generator(this, function (_a) {
230
+ switch (_a.label) {
231
+ case 0:
232
+ if (!this.hasRouteId()) return [3 /*break*/, 2];
233
+ routeId = this.getRouteIdParameter();
234
+ return [4 /*yield*/, routeId.sanitise(this, injector)];
235
+ case 1:
236
+ sanitisedValue = _a.sent();
237
+ if (!routeId.isSame(sanitisedValue)) {
238
+ // if the route id has changed we redirect immediately as other
239
+ // parameter sanitisers might use it.
240
+ return [2 /*return*/, this.replace(routeId.parameterDef, sanitisedValue)];
241
+ }
242
+ _a.label = 2;
243
+ case 2:
244
+ result = this;
245
+ routeParameters = this.getRouteParameters();
246
+ i = 0;
247
+ _a.label = 3;
248
+ case 3:
249
+ if (!(i < routeParameters.length)) return [3 /*break*/, 6];
250
+ return [4 /*yield*/, routeParameters[i].sanitise(this, injector)];
251
+ case 4:
252
+ sanitisedValue = _a.sent();
253
+ if (!routeParameters[i].isSame(sanitisedValue)) {
254
+ result = this.replace(routeParameters[i].parameterDef, sanitisedValue);
255
+ }
256
+ _a.label = 5;
257
+ case 5:
258
+ i++;
259
+ return [3 /*break*/, 3];
260
+ case 6: return [2 /*return*/, result];
261
+ }
262
+ });
263
+ });
221
264
  };
222
265
  var _a;
223
266
  tslib_1.__decorate([
224
267
  Memoize(),
225
268
  tslib_1.__metadata("design:type", Function),
226
- tslib_1.__metadata("design:paramtypes", [Object]),
269
+ tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
227
270
  tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedParameter)
228
- ], ParameterSnapshot.prototype, "getResolvedParameter", null);
271
+ ], ParameterSnapshot.prototype, "getParameter", null);
229
272
  tslib_1.__decorate([
230
273
  Memoize(),
231
274
  tslib_1.__metadata("design:type", Function),
232
- tslib_1.__metadata("design:paramtypes", [Object]),
275
+ tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
233
276
  tslib_1.__metadata("design:returntype", typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object)
234
- ], ParameterSnapshot.prototype, "getResolvedParameterValue", null);
277
+ ], ParameterSnapshot.prototype, "getValueOf", null);
235
278
  tslib_1.__decorate([
236
279
  Memoize(),
237
280
  tslib_1.__metadata("design:type", Function),
238
281
  tslib_1.__metadata("design:paramtypes", [String]),
239
282
  tslib_1.__metadata("design:returntype", Object)
240
- ], ParameterSnapshot.prototype, "getRouteParameter", null);
283
+ ], ParameterSnapshot.prototype, "getParameterValue", null);
241
284
  tslib_1.__decorate([
242
285
  Memoize(),
243
286
  tslib_1.__metadata("design:type", Function),
244
287
  tslib_1.__metadata("design:paramtypes", []),
245
288
  tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedValueParameter)
246
- ], ParameterSnapshot.prototype, "getResolvedRouteId", null);
289
+ ], ParameterSnapshot.prototype, "getRouteIdParameter", null);
290
+ tslib_1.__decorate([
291
+ Memoize(),
292
+ tslib_1.__metadata("design:type", Function),
293
+ tslib_1.__metadata("design:paramtypes", []),
294
+ tslib_1.__metadata("design:returntype", Array)
295
+ ], ParameterSnapshot.prototype, "getRouteParameters", null);
296
+ tslib_1.__decorate([
297
+ Trace(),
298
+ tslib_1.__metadata("design:type", Function),
299
+ tslib_1.__metadata("design:paramtypes", [Injector]),
300
+ tslib_1.__metadata("design:returntype", Promise)
301
+ ], ParameterSnapshot.prototype, "sanitise", null);
247
302
  return ParameterSnapshot;
248
303
  }());
249
304
  export { ParameterSnapshot };
@@ -259,10 +314,13 @@ if (false) {
259
314
  (function (ParameterSnapshot) {
260
315
  /**
261
316
  * @param {?} placeDef
262
- * @param {?} paramMap
317
+ * @param {?} params
318
+ * @param {?} urlSegments
263
319
  * @return {?}
264
320
  */
265
- function create(placeDef, paramMap) {
321
+ function create(placeDef, params, urlSegments) {
322
+ /** @type {?} */
323
+ var paramMap = new ConsolidatedParameterMap(params, urlSegments);
266
324
  /** @type {?} */
267
325
  var resolvedParameters = placeDef.getRouteParameters()
268
326
  .map((/**
@@ -272,7 +330,11 @@ if (false) {
272
330
  function (def) {
273
331
  if (def.isArray) {
274
332
  /** @type {?} */
275
- var value = paramMap.has(def.name) ? paramMap.getAll(def.name).map((/**
333
+ var value = paramMap.has(def.name) ? paramMap.getAll(def.name).filter((/**
334
+ * @param {?} s
335
+ * @return {?}
336
+ */
337
+ function (s) { return !_.isEmpty(s); })).map((/**
276
338
  * @param {?} raw
277
339
  * @return {?}
278
340
  */
@@ -288,6 +350,140 @@ if (false) {
288
350
  return new ParameterSnapshot(placeDef, resolvedParameters);
289
351
  }
290
352
  ParameterSnapshot.create = create;
353
+ /**
354
+ * This a work around for the fact that an activated route with multiple segments doesn't
355
+ * include the segment params in the paramMap as well as each segment returns an empty
356
+ * param map even when `parameter`s has content.
357
+ */
358
+ var /**
359
+ * This a work around for the fact that an activated route with multiple segments doesn't
360
+ * include the segment params in the paramMap as well as each segment returns an empty
361
+ * param map even when `parameter`s has content.
362
+ */
363
+ ConsolidatedParameterMap = /** @class */ (function () {
364
+ function ConsolidatedParameterMap(paramMap, urlSegments) {
365
+ this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
366
+ * @param {?} s
367
+ * @return {?}
368
+ */
369
+ function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
370
+ * @param {?} m
371
+ * @return {?}
372
+ */
373
+ function (m) { return !!m; })); // the activated route param map can be null
374
+ }
375
+ /**
376
+ * @param {?} name
377
+ * @return {?}
378
+ */
379
+ ConsolidatedParameterMap.prototype.get = /**
380
+ * @param {?} name
381
+ * @return {?}
382
+ */
383
+ function (name) {
384
+ return this.paramMaps.find((/**
385
+ * @param {?} m
386
+ * @return {?}
387
+ */
388
+ function (m) { return m.has(name); })).get(name);
389
+ };
390
+ /**
391
+ * @param {?} name
392
+ * @return {?}
393
+ */
394
+ ConsolidatedParameterMap.prototype.getAll = /**
395
+ * @param {?} name
396
+ * @return {?}
397
+ */
398
+ function (name) {
399
+ return this.paramMaps.find((/**
400
+ * @param {?} m
401
+ * @return {?}
402
+ */
403
+ function (m) { return m.has(name); })).getAll(name);
404
+ };
405
+ /**
406
+ * @param {?} name
407
+ * @return {?}
408
+ */
409
+ ConsolidatedParameterMap.prototype.has = /**
410
+ * @param {?} name
411
+ * @return {?}
412
+ */
413
+ function (name) {
414
+ return !!this.paramMaps.find((/**
415
+ * @param {?} m
416
+ * @return {?}
417
+ */
418
+ function (m) { return m.has(name); }));
419
+ };
420
+ return ConsolidatedParameterMap;
421
+ }());
422
+ if (false) {
423
+ /**
424
+ * @type {?}
425
+ * @private
426
+ */
427
+ ConsolidatedParameterMap.prototype.paramMaps;
428
+ }
429
+ var ParamMapAdapter = /** @class */ (function () {
430
+ function ParamMapAdapter(params) {
431
+ this.params = params;
432
+ }
433
+ /**
434
+ * @param {?} name
435
+ * @return {?}
436
+ */
437
+ ParamMapAdapter.prototype.get = /**
438
+ * @param {?} name
439
+ * @return {?}
440
+ */
441
+ function (name) {
442
+ return this.params[name];
443
+ };
444
+ /**
445
+ * @param {?} name
446
+ * @return {?}
447
+ */
448
+ ParamMapAdapter.prototype.getAll = /**
449
+ * @param {?} name
450
+ * @return {?}
451
+ */
452
+ function (name) {
453
+ /** @type {?} */
454
+ var value = this.get(name);
455
+ return Array.isArray(value) ? value : [value];
456
+ };
457
+ /**
458
+ * @param {?} name
459
+ * @return {?}
460
+ */
461
+ ParamMapAdapter.prototype.has = /**
462
+ * @param {?} name
463
+ * @return {?}
464
+ */
465
+ function (name) {
466
+ return this.keys.includes(name);
467
+ };
468
+ Object.defineProperty(ParamMapAdapter.prototype, "keys", {
469
+ get: /**
470
+ * @return {?}
471
+ */
472
+ function () {
473
+ return Object.keys(this.params);
474
+ },
475
+ enumerable: true,
476
+ configurable: true
477
+ });
478
+ return ParamMapAdapter;
479
+ }());
480
+ if (false) {
481
+ /**
482
+ * @type {?}
483
+ * @private
484
+ */
485
+ ParamMapAdapter.prototype.params;
486
+ }
291
487
  /**
292
488
  * @abstract
293
489
  * @template T, S
@@ -310,6 +506,31 @@ if (false) {
310
506
  function () {
311
507
  return this.parameterDef.isRouteId;
312
508
  };
509
+ /**
510
+ * @param {?} visit
511
+ * @param {?} injector
512
+ * @return {?}
513
+ */
514
+ ResolvedParameter.prototype.sanitise = /**
515
+ * @param {?} visit
516
+ * @param {?} injector
517
+ * @return {?}
518
+ */
519
+ function (visit, injector) {
520
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
521
+ var sanitiser;
522
+ return tslib_1.__generator(this, function (_a) {
523
+ sanitiser = this.parameterDef.getSanitiser(injector);
524
+ if (sanitiser) {
525
+ return [2 /*return*/, sanitiser.sanitise(this.parameterDef, this.value, visit)];
526
+ }
527
+ else {
528
+ return [2 /*return*/, this.value];
529
+ }
530
+ return [2 /*return*/];
531
+ });
532
+ });
533
+ };
313
534
  return ResolvedParameter;
314
535
  }());
315
536
  ParameterSnapshot.ResolvedParameter = ResolvedParameter;
@@ -345,7 +566,10 @@ if (false) {
345
566
  /**
346
567
  * @template T
347
568
  */
348
- var ResolvedValueParameter = /** @class */ (function (_super) {
569
+ var /**
570
+ * @template T
571
+ */
572
+ ResolvedValueParameter = /** @class */ (function (_super) {
349
573
  tslib_1.__extends(ResolvedValueParameter, _super);
350
574
  function ResolvedValueParameter() {
351
575
  return _super !== null && _super.apply(this, arguments) || this;
@@ -392,19 +616,16 @@ if (false) {
392
616
  function () {
393
617
  return !_.isNil(this.value) ? this.parameterDef.type.format(this.value) : null;
394
618
  };
395
- tslib_1.__decorate([
396
- Trace(),
397
- tslib_1.__metadata("design:type", Function),
398
- tslib_1.__metadata("design:paramtypes", [Object]),
399
- tslib_1.__metadata("design:returntype", Boolean)
400
- ], ResolvedValueParameter.prototype, "isSame", null);
401
619
  return ResolvedValueParameter;
402
620
  }(ResolvedParameter));
403
621
  ParameterSnapshot.ResolvedValueParameter = ResolvedValueParameter;
404
622
  /**
405
623
  * @template T
406
624
  */
407
- var ResolvedArrayParameter = /** @class */ (function (_super) {
625
+ var /**
626
+ * @template T
627
+ */
628
+ ResolvedArrayParameter = /** @class */ (function (_super) {
408
629
  tslib_1.__extends(ResolvedArrayParameter, _super);
409
630
  function ResolvedArrayParameter() {
410
631
  return _super !== null && _super.apply(this, arguments) || this;
@@ -461,14 +682,8 @@ if (false) {
461
682
  */
462
683
  function (v) { return _this.parameterDef.type.format(v); })) : [];
463
684
  };
464
- tslib_1.__decorate([
465
- Trace(),
466
- tslib_1.__metadata("design:type", Function),
467
- tslib_1.__metadata("design:paramtypes", [Array]),
468
- tslib_1.__metadata("design:returntype", Boolean)
469
- ], ResolvedArrayParameter.prototype, "isSame", null);
470
685
  return ResolvedArrayParameter;
471
686
  }(ResolvedParameter));
472
687
  ParameterSnapshot.ResolvedArrayParameter = ResolvedArrayParameter;
473
688
  })(ParameterSnapshot || (ParameterSnapshot = {}));
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzNFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQVM1QjtJQUVFLDJCQUFxQixlQUEwQyxFQUFtQixRQUF5RDtRQUF0SCxvQkFBZSxHQUFmLGVBQWUsQ0FBMkI7UUFBbUIsYUFBUSxHQUFSLFFBQVEsQ0FBaUQ7SUFDM0ksQ0FBQzs7Ozs7SUFFRCxzQ0FBVTs7OztJQUFWLFVBQVcsS0FBd0I7O1lBQzNCLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Ozs7UUFBQyxVQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsRUFBQztRQUNGLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFGO1FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25CLENBQUM7Ozs7O0lBRUQsd0NBQVk7Ozs7SUFBWixVQUFhLEtBQXdCO1FBQ25DLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOztZQUNsQyxV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Ozs7O1FBaEJDLHVDQUFNOzs7O1FBQU4sVUFBTyxVQUFlO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7Ozs7O1FBRUQsaURBQWdCOzs7O1FBQWhCLFVBQWlCLElBQVE7WUFBekIsaUJBRUM7WUFEQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaEMsQ0FBZ0MsRUFBQyxDQUFDO1FBQ3ZGLENBQUM7Ozs7O1FBRUQsd0NBQU87Ozs7UUFBUCxVQUFRLEtBQVU7WUFDaEIsT0FBTyxJQUFJLHNCQUFzQixDQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsQ0FBQzs7OztRQUVELCtDQUFjOzs7UUFBZDtZQUFBLGlCQUVDO1lBREMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaEMsQ0FBZ0MsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakYsQ0FBQztRQWREO1lBREMsS0FBSyxFQUFFOzs7OzREQUdQO1FBY0gsNkJBQUM7S0FBQSxBQWxCRCxDQUErQyxpQkFBaUIsR0FrQi9EO0lBbEJZLHdDQUFzQix5QkFrQmxDLENBQUE7QUFHSCxDQUFDLEVBMUVnQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBMEVqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcmFtTWFwLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGFzc2VydCwgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuXG4vLyBUT0RPOiB0aGVyZSBhcmUgcmVhbGx5IHR3byB0eXBlcyBvZiBzbmFwc2hvdCwgb25lcyB3aXRoIGlkJ3MgYW5kIG9uZXMgd2l0aG91dC5cbi8vIElkIHNuYXBzaG90IGFyZSByZXBlc2VudGVkIGJ5IDIgdXJsIHNlZ21lbnRzXG4vLyBJRCA9PiBbeycvYmFzZVBhdGgnLCBwYXJhbXN9LCB7J2lkJywgcGFyYW1zfV1cbi8vIE5PIElEID0+IFt7Jy9iYXNlUGF0aCcsIHBhcmFtc31dXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyU25hcHNob3QgaW1wbGVtZW50cyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVkOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSkge1xuICB9XG5cbiAgaGFzQ2hhbmdlZChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5yZXNvbHZlZC5maW5kKChyKSA9PiB7XG4gICAgICByZXR1cm4gIXIuaXNTYW1lKG90aGVyLmdldFJlc29sdmVkUGFyYW1ldGVyVmFsdWUoci5wYXJhbWV0ZXJEZWYpKTtcbiAgICB9KTtcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgY29uc29sZS5sb2coeyBtaW5lOiBjaGFuZ2VkLCB0aGVpcnM6IG90aGVyLmdldFJlc29sdmVkUGFyYW1ldGVyKGNoYW5nZWQucGFyYW1ldGVyRGVmKSB9KTtcbiAgICB9XG4gICAgcmV0dXJuICEhY2hhbmdlZDtcbiAgfVxuXG4gIGFzVXJsU2VnbWVudChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QpOiBhbnlbXSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaGFzQ2hhbmdlZChvdGhlcikpO1xuICAgIGNvbnN0IHJvdXRlUGFydHMgPSBbXTtcbiAgICBjb25zdCBnYWluZWRJZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpICYmICFvdGhlci5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCk7XG4gICAgY29uc3Qgc2FtZUlkID0gdGhpcy5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCkgPT09IG90aGVyLmdldEZvcm1hdHRlZFJvdXRlSWQoKTtcbiAgICBjb25zdCBsb3N0SWQgPSAoIXRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpICYmIG90aGVyLmdldEZvcm1hdHRlZFJvdXRlSWQoKSk7XG4gICAgY29uc3QgY2hhbmdlZElkID0gKHRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpICE9PSBvdGhlci5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCkpO1xuICAgIGlmIChsb3N0SWQgfHwgY2hhbmdlZElkKSB7XG4gICAgICByb3V0ZVBhcnRzLnB1c2goJy4uJyk7XG4gICAgICBpZiAoY2hhbmdlZElkKSB7XG4gICAgICAgIHJvdXRlUGFydHMucHVzaCh0aGlzLmdldEZvcm1hdHRlZFJvdXRlSWQoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlUGFydHMucHVzaCgnLicpO1xuICAgIH1cbiAgICByb3V0ZVBhcnRzLnB1c2godGhpcy5nZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkpO1xuICAgIHJldHVybiByb3V0ZVBhcnRzO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRSZXNvbHZlZFBhcmFtZXRlcjxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBTPiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmluZChyID0+IHIucGFyYW1ldGVyRGVmID09PSBwYXJhbWV0ZXJEZWYpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRSZXNvbHZlZFBhcmFtZXRlclZhbHVlPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFMge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5nZXRSZXNvbHZlZFBhcmFtZXRlcihwYXJhbWV0ZXJEZWYpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIGdldFJvdXRlSWQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvbHZlZFJvdXRlSWQoKSA/IHRoaXMuZ2V0UmVzb2x2ZWRSb3V0ZUlkKCkudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRSb3V0ZVBhcmFtZXRlcihuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5yZXNvbHZlZC5maW5kKHIgPT4gci5wYXJhbWV0ZXJEZWYubmFtZSA9PT0gbmFtZSk7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJlc29sdmVkUm91dGVJZCgpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFZhbHVlUGFyYW1ldGVyPGFueT4ge1xuICAgIC8vIFJvdXRlSWQncyBhcmUgbmV2ZXIgYXJyYXlzOiBzZWUgcGFyYW1ldGVyLWRlY29yYXRvcnMudHMgY3JlYXRlRGVmaW5pdGlvbiBtZXRob2RzLiBJdCB3b3VsZCBiZSBuaWNlIHRvXG4gICAgLy8gY2FwdHVyZSB0aGlzIGluIHRoZSB0eXBlIHN5c3RlbSB0aG91Z2hcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZC5maW5kKHAgPT4gcC5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkKSBhcyBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFZhbHVlUGFyYW1ldGVyPGFueT47XG4gIH1cblxuICBoYXNSb3V0ZUlkKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0UmVzb2x2ZWRSb3V0ZUlkKCk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXRSZXNvbHZlZFJvdXRlSWQoKTtcbiAgICByZXR1cm4gcm91dGVJZFBhcmFtID8gcm91dGVJZFBhcmFtLmZvcm1hdHRlZFZhbHVlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLnJlc29sdmVkLmZpbHRlcihwID0+ICFwLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQpLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5wYXJhbWV0ZXJEZWYubmFtZV0gPSBwLmZvcm1hdHRlZFZhbHVlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHJlcGxhY2U8VCwgUz4ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+LCB2YWx1ZTogUyk6IFBhcmFtZXRlclNuYXBzaG90IHtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHRoaXMucGxhY2VEZWZpbml0aW9uLCB0aGlzLnJlc29sdmVkLm1hcChwID0+IHtcbiAgICAgIHJldHVybiBwLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyID8gcC5yZXBsYWNlKHZhbHVlKSA6IHA7XG4gICAgfSkpO1xuICB9XG5cbiAgdXBkYXRlVXJsKHVybDogVXJsU2VnbWVudFtdKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBhcmFtZXRlclNuYXBzaG90IHtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlKHBsYWNlRGVmOiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uLCBwYXJhbU1hcDogUGFyYW1NYXApOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXJhbWV0ZXJzOiBSZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSA9IHBsYWNlRGVmLmdldFJvdXRlUGFyYW1ldGVycygpXG4gICAgICAubWFwKGRlZiA9PiB7XG4gICAgICBpZiAoZGVmLmlzQXJyYXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gcGFyYW1NYXAuZ2V0QWxsKGRlZi5uYW1lKS5tYXAocmF3ID0+IGRlZi50eXBlLnBhcnNlKHJhdykpIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZEFycmF5UGFyYW1ldGVyKGRlZiwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gZGVmLnR5cGUucGFyc2UocGFyYW1NYXAuZ2V0KGRlZi5uYW1lKSkgOiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJlc29sdmVkVmFsdWVQYXJhbWV0ZXIoZGVmLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJTbmFwc2hvdChwbGFjZURlZiwgcmVzb2x2ZWRQYXJhbWV0ZXJzKTtcbiAgfVxuXG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc29sdmVkUGFyYW1ldGVyPFQsIFMgPSBUPiB7XG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgcGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+LCByZWFkb25seSB2YWx1ZTogUykge1xuICAgIH1cblxuICAgIGFic3RyYWN0IGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgaXNTYW1lKG90aGVyVmFsdWU6IFMpOiBib29sZWFuO1xuXG4gICAgaXNSb3V0ZUlkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyRGVmLmlzUm91dGVJZDtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAgIGFic3RyYWN0IHJlcGxhY2UodmFsdWU6IFMpOiBSZXNvbHZlZFBhcmFtZXRlcjxULCBTPjtcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuICAgIEBUcmFjZSgpXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvdGhlclZhbHVlO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+KHRoaXMucGFyYW1ldGVyRGVmLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLnZhbHVlKSA/IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPiBleHRlbmRzIFJlc29sdmVkUGFyYW1ldGVyPFQsIFRbXT4ge1xuICAgIEBUcmFjZSgpXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFRbXSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIF8uaXNFcXVhbCh0aGlzLnZhbHVlLCBvdGhlclZhbHVlKTtcbiAgICB9XG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KTogdm9pZCB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSk7XG4gICAgfVxuXG4gICAgcmVwbGFjZSh2YWx1ZTogVFtdKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkQXJyYXlQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubWFwKHYgPT4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodikpIDogW107XG4gICAgfVxuXG4gIH1cblxuXG59XG4iXX0=
689
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkU7SUFFRSwyQkFBcUIsZUFBZ0MsRUFBbUIsUUFBeUQ7UUFBNUcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQWlEO0lBQ2pJLENBQUM7Ozs7OztJQUVELHNDQUFVOzs7OztJQUFWLFVBQVcsS0FBd0IsRUFBRSxLQUFhO1FBQWIsc0JBQUEsRUFBQSxhQUFhOztZQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxFQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDL0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQy9DLENB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QXpCLGlCQUVDO1lBREMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQztRQUN2RixDQUFDOzs7OztRQUVELHdDQUFPOzs7O1FBQVAsVUFBUSxLQUFVO1lBQ2hCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUM7Ozs7UUFFRCwrQ0FBYzs7O1FBQWQ7WUFBQSxpQkFFQztZQURDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pGLENBQUM7UUFFSCw2QkFBQztJQUFELENBQUMsQUFsQkQsQ0FBK0MsaUJBQWlCLEdBa0IvRDtJQWxCWSx3Q0FBc0IseUJBa0JsQyxDQUFBO0FBRUgsQ0FBQyxFQXRJZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQXNJakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUGFyYW1NYXAsIFVybFNlZ21lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyU25hcHNob3QgaW1wbGVtZW50cyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24sIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWQ6IFBhcmFtZXRlclNuYXBzaG90LlJlc29sdmVkUGFyYW1ldGVyPGFueSwgYW55PltdKSB7XG4gIH1cblxuICBoYXNDaGFuZ2VkKG90aGVyOiBQYXJhbWV0ZXJTbmFwc2hvdCwgZGVidWcgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLnJlc29sdmVkLmZpbmQoKHIpID0+IHtcbiAgICAgIHJldHVybiAhci5pc1NhbWUob3RoZXIuZ2V0VmFsdWVPZihyLnBhcmFtZXRlckRlZikpO1xuICAgIH0pO1xuICAgIGlmIChjaGFuZ2VkICYmIGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgIG5hbWU6IGNoYW5nZWQucGFyYW1ldGVyRGVmLm5hbWUsXG4gICAgICAgIG1pbmU6IGNoYW5nZWQudmFsdWUsXG4gICAgICAgIHRoZWlyczogb3RoZXIuZ2V0VmFsdWVPZihjaGFuZ2VkLnBhcmFtZXRlckRlZilcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gISFjaGFuZ2VkO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXI8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkLmZpbmQociA9PiByLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyRGVmKTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0VmFsdWVPZjxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBTIHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMuZ2V0UGFyYW1ldGVyKHBhcmFtZXRlckRlZik7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0Um91dGVJZFZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpID8gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCkudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5yZXNvbHZlZC5maW5kKHIgPT4gci5wYXJhbWV0ZXJEZWYubmFtZSA9PT0gbmFtZSk7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlSWRQYXJhbWV0ZXIoKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+IHtcbiAgICAvLyBSb3V0ZUlkJ3MgYXJlIG5ldmVyIGFycmF5czogc2VlIHBhcmFtZXRlci1kZWNvcmF0b3JzLnRzIGNyZWF0ZURlZmluaXRpb24gbWV0aG9kcy4gSXQgd291bGQgYmUgbmljZSB0b1xuICAgIC8vIGNhcHR1cmUgdGhpcyBpbiB0aGUgdHlwZSBzeXN0ZW0gdGhvdWdoXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmluZChwID0+IHAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCkgYXMgUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+O1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlUGFyYW1ldGVycygpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmlsdGVyKHIgPT4gIXIucGFyYW1ldGVyRGVmLmlzUm91dGVJZCk7XG4gIH1cblxuXG4gIGhhc1JvdXRlSWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgcmV0dXJuIHJvdXRlSWRQYXJhbSA/IHJvdXRlSWRQYXJhbS5mb3JtYXR0ZWRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5yZXNvbHZlZC5maWx0ZXIocCA9PiAhcC5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgcGFyYW1zW3AucGFyYW1ldGVyRGVmLm5hbWVdID0gcC5mb3JtYXR0ZWRWYWx1ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBnZXRBbGxGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMucmVzb2x2ZWQuZm9yRWFjaChwID0+IHtcbiAgICAgIHBhcmFtc1twLnBhcmFtZXRlckRlZi5uYW1lXSA9IHAuZm9ybWF0dGVkVmFsdWUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcmVwbGFjZTxULCBTPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHZhbHVlOiBTKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyU25hcHNob3QodGhpcy5wbGFjZURlZmluaXRpb24sIHRoaXMucmVzb2x2ZWQubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIHAucGFyYW1ldGVyRGVmID09PSBwYXJhbWV0ZXIgPyBwLnJlcGxhY2UodmFsdWUpIDogcDtcbiAgICB9KSk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBhc3luYyBzYW5pdGlzZShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFBhcmFtZXRlclNuYXBzaG90PiB7XG4gICAgaWYgKHRoaXMuaGFzUm91dGVJZCgpKSB7XG4gICAgICBjb25zdCByb3V0ZUlkID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWQuc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKCFyb3V0ZUlkLmlzU2FtZShzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGhhcyBjaGFuZ2VkIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIG90aGVyXG4gICAgICAgIC8vIHBhcmFtZXRlciBzYW5pdGlzZXJzIG1pZ2h0IHVzZSBpdC5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZShyb3V0ZUlkLnBhcmFtZXRlckRlZiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBQYXJhbWV0ZXJTbmFwc2hvdCA9IHRoaXM7XG4gICAgY29uc3Qgcm91dGVQYXJhbWV0ZXJzID0gdGhpcy5nZXRSb3V0ZVBhcmFtZXRlcnMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlUGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCByb3V0ZVBhcmFtZXRlcnNbaV0uc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKCFyb3V0ZVBhcmFtZXRlcnNbaV0uaXNTYW1lKHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnJlcGxhY2Uocm91dGVQYXJhbWV0ZXJzW2ldLnBhcmFtZXRlckRlZiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQYXJhbWV0ZXJTbmFwc2hvdCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uLCBwYXJhbXM6IFBhcmFtTWFwLCB1cmxTZWdtZW50czpVcmxTZWdtZW50W10pOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgY29uc3QgcGFyYW1NYXAgPSBuZXcgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwKHBhcmFtcywgdXJsU2VnbWVudHMpO1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyczogUmVzb2x2ZWRQYXJhbWV0ZXI8YW55LCBhbnk+W10gPSBwbGFjZURlZi5nZXRSb3V0ZVBhcmFtZXRlcnMoKVxuICAgICAgLm1hcChkZWYgPT4ge1xuICAgICAgICBpZiAoZGVmLmlzQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtTWFwLmhhcyhkZWYubmFtZSkgPyBwYXJhbU1hcC5nZXRBbGwoZGVmLm5hbWUpLmZpbHRlcihzID0+ICFfLmlzRW1wdHkocykpLm1hcChyYXcgPT4gZGVmLnR5cGUucGFyc2UocmF3KSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcihkZWYsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtTWFwLmhhcyhkZWYubmFtZSkgPyBkZWYudHlwZS5wYXJzZShwYXJhbU1hcC5nZXQoZGVmLm5hbWUpKSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyKGRlZiwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHBsYWNlRGVmLCByZXNvbHZlZFBhcmFtZXRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgYSB3b3JrIGFyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBhbiBhY3RpdmF0ZWQgcm91dGUgd2l0aCBtdWx0aXBsZSBzZWdtZW50cyBkb2Vzbid0XG4gICAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gICAqIHBhcmFtIG1hcCBldmVuIHdoZW4gYHBhcmFtZXRlcmBzIGhhcyBjb250ZW50LlxuICAgKi9cbiAgY2xhc3MgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwIHtcblxuICAgIHByaXZhdGUgcGFyYW1NYXBzOiBQYXJhbU1hcFtdO1xuXG4gICAgY29uc3RydWN0b3IocGFyYW1NYXA6UGFyYW1NYXAsIHVybFNlZ21lbnRzOlVybFNlZ21lbnRbXSkge1xuICAgICAgdGhpcy5wYXJhbU1hcHMgPSBbcGFyYW1NYXBdLmNvbmNhdChcbiAgICAgICAgKHVybFNlZ21lbnRzIHx8IFtdKS5tYXAocyA9PiBuZXcgUGFyYW1NYXBBZGFwdGVyKHMucGFyYW1ldGVycykpXG4gICAgICApLmZpbHRlcihtID0+ICEhbSk7IC8vIHRoZSBhY3RpdmF0ZWQgcm91dGUgcGFyYW0gbWFwIGNhbiBiZSBudWxsXG4gICAgfVxuXG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIGdldEFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKS5nZXRBbGwobmFtZSk7XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6c3RyaW5nKTpib29sZWFuIHtcbiAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgUGFyYW1NYXBBZGFwdGVyIGltcGxlbWVudHMgUGFyYW1NYXAge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFyYW1zOiB7IFtwOiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtc1tuYW1lXTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChuYW1lKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5rZXlzLmluY2x1ZGVzKG5hbWUpO1xuICAgIH1cblxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcyk7XG4gICAgfVxuXG4gIH1cblxuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNvbHZlZFBhcmFtZXRlcjxULCBTID0gVD4ge1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPiwgcmVhZG9ubHkgdmFsdWU6IFMpIHtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KTogdm9pZDtcblxuICAgIGFic3RyYWN0IGlzU2FtZShvdGhlclZhbHVlOiBTKTogYm9vbGVhbjtcblxuICAgIGlzUm91dGVJZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQ7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgICBhYnN0cmFjdCByZXBsYWNlKHZhbHVlOiBTKTogUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz47XG5cbiAgICBhc3luYyBzYW5pdGlzZSh2aXNpdDogVmlzaXQsIGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8Uz4ge1xuICAgICAgY29uc3Qgc2FuaXRpc2VyID0gdGhpcy5wYXJhbWV0ZXJEZWYuZ2V0U2FuaXRpc2VyKGluamVjdG9yKTtcbiAgICAgIGlmIChzYW5pdGlzZXIpIHtcbiAgICAgICAgcmV0dXJuIHNhbml0aXNlci5zYW5pdGlzZSh0aGlzLnBhcmFtZXRlckRlZiwgdGhpcy52YWx1ZSwgdmlzaXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIFJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8VD4gZXh0ZW5kcyBSZXNvbHZlZFBhcmFtZXRlcjxULCBUPiB7XG5cbiAgICBpc1NhbWUob3RoZXJWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG90aGVyVmFsdWU7XG4gICAgfVxuXG4gICAgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk6IHZvaWQge1xuICAgICAgZGVzdFt0aGlzLnBhcmFtZXRlckRlZi5uYW1lXSA9IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHJlcGxhY2UodmFsdWU6IFQpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBUPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMudmFsdWUpID8gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodGhpcy52YWx1ZSkgOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZEFycmF5UGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG5cbiAgICBpc1NhbWUob3RoZXJWYWx1ZTogVFtdKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gXy5pc0VxdWFsKHRoaXMudmFsdWUsIG90aGVyVmFsdWUpO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnZhbHVlLm1hcCh2ID0+IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHYpKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUW10pOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBUW10+IHtcbiAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPih0aGlzLnBhcmFtZXRlckRlZiwgdmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSkgOiBbXTtcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=
@@ -2,7 +2,7 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import * as _ from 'lodash';
5
+ import _ from 'lodash';
6
6
  // WARNING: interface has both a type and a value, skipping emit
7
7
  export var ParameterType;
8
8
  (function (ParameterType) {
@@ -91,4 +91,4 @@ export var ParameterType;
91
91
  ParameterType.NUMBER = new NumberType();
92
92
  ParameterType.BOOLEAN = new BooleanType();
93
93
  })(ParameterType || (ParameterType = {}));
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXR5cGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvcGFyYW1ldGVyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQVE1QixNQUFNLEtBQVcsYUFBYSxDQW1DN0I7QUFuQ0QsV0FBaUIsYUFBYTtJQUU1QjtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQywyQkFBTTs7OztRQUFOLFVBQU8sS0FBYTtZQUNsQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7Ozs7O1FBRUQsMEJBQUs7Ozs7UUFBTCxVQUFNLEtBQWE7WUFDakIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0gsaUJBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQUVEO1FBQUE7UUFRQSxDQUFDOzs7OztRQVBDLDJCQUFNOzs7O1FBQU4sVUFBTyxLQUFhO1lBQ2xCLE9BQU8sS0FBRyxLQUFPLENBQUM7UUFDcEIsQ0FBQzs7Ozs7UUFFRCwwQkFBSzs7OztRQUFMLFVBQU0sS0FBYTtZQUNqQixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RCxDQUFDO1FBQ0gsaUJBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQUVEO1FBQUE7UUFRQSxDQUFDOzs7OztRQVBDLDRCQUFNOzs7O1FBQU4sVUFBTyxLQUFjO1lBQ25CLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxDQUFDOzs7OztRQUVELDJCQUFLOzs7O1FBQUwsVUFBTSxLQUFhO1lBQ2pCLE9BQU8sS0FBSyxLQUFLLE1BQU0sQ0FBQztRQUMxQixDQUFDO1FBQ0gsa0JBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQUVZLG9CQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7SUFDekIsb0JBQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtJQUN6QixxQkFBTyxHQUFHLElBQUksV0FBVyxFQUFFO0FBQzFDLENBQUMsRUFuQ2dCLGFBQWEsS0FBYixhQUFhLFFBbUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXJUeXBlPFQ+IHtcbiAgZm9ybWF0KHZhbHVlOiBUKTogc3RyaW5nO1xuXG4gIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBUO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBhcmFtZXRlclR5cGUge1xuXG4gIGNsYXNzIFN0cmluZ1R5cGUgaW1wbGVtZW50cyBQYXJhbWV0ZXJUeXBlPHN0cmluZz4ge1xuICAgIGZvcm1hdCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBjbGFzcyBOdW1iZXJUeXBlIGltcGxlbWVudHMgUGFyYW1ldGVyVHlwZTxudW1iZXI+IHtcbiAgICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICB9XG5cbiAgICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiBfLmlzTmlsKHZhbHVlKSB8fCBfLmlzRW1wdHkodmFsdWUpID8gbnVsbCA6ICt2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBjbGFzcyBCb29sZWFuVHlwZSBpbXBsZW1lbnRzIFBhcmFtZXRlclR5cGU8Ym9vbGVhbj4ge1xuICAgIGZvcm1hdCh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBTVFJJTkcgPSBuZXcgU3RyaW5nVHlwZSgpO1xuICBleHBvcnQgY29uc3QgTlVNQkVSID0gbmV3IE51bWJlclR5cGUoKTtcbiAgZXhwb3J0IGNvbnN0IEJPT0xFQU4gPSBuZXcgQm9vbGVhblR5cGUoKTtcbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXR5cGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvcGFyYW1ldGVyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFRdkIsTUFBTSxLQUFXLGFBQWEsQ0FtQzdCO0FBbkNELFdBQWlCLGFBQWE7SUFFNUI7UUFBQTtRQVFBLENBQUM7Ozs7O1FBUEMsMkJBQU07Ozs7UUFBTixVQUFPLEtBQWE7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDOzs7OztRQUVELDBCQUFLOzs7O1FBQUwsVUFBTSxLQUFhO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFRDtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQywyQkFBTTs7OztRQUFOLFVBQU8sS0FBYTtZQUNsQixPQUFPLEtBQUcsS0FBTyxDQUFDO1FBQ3BCLENBQUM7Ozs7O1FBRUQsMEJBQUs7Ozs7UUFBTCxVQUFNLEtBQWE7WUFDakIsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUQsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFRDtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQyw0QkFBTTs7OztRQUFOLFVBQU8sS0FBYztZQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQzs7Ozs7UUFFRCwyQkFBSzs7OztRQUFMLFVBQU0sS0FBYTtZQUNqQixPQUFPLEtBQUssS0FBSyxNQUFNLENBQUM7UUFDMUIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFWSxvQkFBTSxHQUFHLElBQUksVUFBVSxFQUFFO0lBQ3pCLG9CQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7SUFDekIscUJBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRTtBQUMxQyxDQUFDLEVBbkNnQixhQUFhLEtBQWIsYUFBYSxRQW1DN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlclR5cGU8VD4ge1xuICBmb3JtYXQodmFsdWU6IFQpOiBzdHJpbmc7XG5cbiAgcGFyc2UodmFsdWU6IHN0cmluZyk6IFQ7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGFyYW1ldGVyVHlwZSB7XG5cbiAgY2xhc3MgU3RyaW5nVHlwZSBpbXBsZW1lbnRzIFBhcmFtZXRlclR5cGU8c3RyaW5nPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIE51bWJlclR5cGUgaW1wbGVtZW50cyBQYXJhbWV0ZXJUeXBlPG51bWJlcj4ge1xuICAgIGZvcm1hdCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIF8uaXNOaWwodmFsdWUpIHx8IF8uaXNFbXB0eSh2YWx1ZSkgPyBudWxsIDogK3ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIEJvb2xlYW5UeXBlIGltcGxlbWVudHMgUGFyYW1ldGVyVHlwZTxib29sZWFuPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgcGFyc2UodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSAndHJ1ZSc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNvbnN0IFNUUklORyA9IG5ldyBTdHJpbmdUeXBlKCk7XG4gIGV4cG9ydCBjb25zdCBOVU1CRVIgPSBuZXcgTnVtYmVyVHlwZSgpO1xuICBleHBvcnQgY29uc3QgQk9PTEVBTiA9IG5ldyBCb29sZWFuVHlwZSgpO1xufVxuIl19