@wemake4u/form-player-se 1.0.49 → 1.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/actionsCellRenderer/actionsCellRenderer.component.mjs +1 -1
- package/esm2022/lib/components/setFilter/setFilter.component.mjs +2 -2
- package/esm2022/lib/dialog/dialog.component.mjs +3 -2
- package/esm2022/lib/directives/date.directive.mjs +39 -35
- package/esm2022/lib/directives/dialog.directive.mjs +13 -13
- package/esm2022/lib/directives/dropdown.directive.mjs +59 -72
- package/esm2022/lib/directives/filemanager.directive.mjs +5 -4
- package/esm2022/lib/directives/number.directive.mjs +3 -2
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +2 -2
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +6 -3
- package/esm2022/lib/services/dialog.service.mjs +1 -1
- package/fesm2022/wemake4u-form-player-se.mjs +124 -127
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/date.directive.d.ts +4 -6
- package/lib/directives/dropdown.directive.d.ts +5 -2
- package/lib/dynamic-form/dynamic-form.component.d.ts +1 -0
- package/lib/services/dialog.service.d.ts +2 -0
- package/package.json +2 -2
|
@@ -43,10 +43,11 @@ export class DropdownDirective {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
handleSearchable() {
|
|
46
|
-
const
|
|
46
|
+
const el = this.getPanelElementRef();
|
|
47
|
+
const searchable = el.nativeElement.querySelector('.searchable');
|
|
47
48
|
if (searchable) {
|
|
48
|
-
const dropDown = this.
|
|
49
|
-
const dropMenu =
|
|
49
|
+
const dropDown = this.getDropDownElement();
|
|
50
|
+
const dropMenu = this.getDropDownMenuElement();
|
|
50
51
|
const input = searchable.querySelector('input');
|
|
51
52
|
this.renderer.insertBefore(dropDown, searchable, dropMenu);
|
|
52
53
|
this.listenerService.listen(input, 'focus', () => {
|
|
@@ -68,6 +69,7 @@ export class DropdownDirective {
|
|
|
68
69
|
this.sirioSelect.panel.panelClosed
|
|
69
70
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
70
71
|
.subscribe(() => this.deactivate(searchable));
|
|
72
|
+
this.sirioSelect.panel.scroll = this.scroll.bind(this);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
handleOptionsChanges() {
|
|
@@ -104,6 +106,15 @@ export class DropdownDirective {
|
|
|
104
106
|
this.onSelectionChanged(options);
|
|
105
107
|
});
|
|
106
108
|
}
|
|
109
|
+
getPanelElementRef() {
|
|
110
|
+
return this.sirioSelect.panel.elementRef;
|
|
111
|
+
}
|
|
112
|
+
getDropDownElement() {
|
|
113
|
+
return this.el.nativeElement.querySelector('.sirio-dropdown');
|
|
114
|
+
}
|
|
115
|
+
getDropDownMenuElement() {
|
|
116
|
+
return this.getPanelElementRef().nativeElement.querySelector('.sirio-dropdown-menu');
|
|
117
|
+
}
|
|
107
118
|
canValidate = false;
|
|
108
119
|
validator = this.validateOptions.bind(this);
|
|
109
120
|
addValidator() {
|
|
@@ -139,7 +150,7 @@ export class DropdownDirective {
|
|
|
139
150
|
if (!input)
|
|
140
151
|
return;
|
|
141
152
|
input.value = currentValue;
|
|
142
|
-
const dropMenu = this.
|
|
153
|
+
const dropMenu = this.getPanelElementRef().nativeElement;
|
|
143
154
|
this.sirioSelect.options.forEach((option) => {
|
|
144
155
|
this.show(option, true);
|
|
145
156
|
if (currentValue == option.text) {
|
|
@@ -147,6 +158,7 @@ export class DropdownDirective {
|
|
|
147
158
|
}
|
|
148
159
|
});
|
|
149
160
|
this.renderer.setStyle(element, 'display', 'inline-block');
|
|
161
|
+
this.doSerach(input);
|
|
150
162
|
setTimeout(() => {
|
|
151
163
|
input.setSelectionRange(input.value.length, input.value.length);
|
|
152
164
|
input.focus();
|
|
@@ -162,23 +174,7 @@ export class DropdownDirective {
|
|
|
162
174
|
case 'Escape':
|
|
163
175
|
return;
|
|
164
176
|
}
|
|
165
|
-
|
|
166
|
-
const exactMatch = this.sirioSelect.options.find(option => this.comparable(option.text) === value);
|
|
167
|
-
let firstMatch = true;
|
|
168
|
-
this.sirioSelect.options.forEach((option, index) => {
|
|
169
|
-
const comparableText = this.comparable(option.text);
|
|
170
|
-
const match = exactMatch
|
|
171
|
-
? comparableText === value
|
|
172
|
-
: comparableText.includes(value);
|
|
173
|
-
this.show(option, match);
|
|
174
|
-
if (match && firstMatch) {
|
|
175
|
-
option.setFocus();
|
|
176
|
-
firstMatch = false;
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
option.removeFocus();
|
|
180
|
-
}
|
|
181
|
-
});
|
|
177
|
+
this.doSerach(input);
|
|
182
178
|
}
|
|
183
179
|
onKeyDown(event) {
|
|
184
180
|
const panel = this.sirioSelect.panel;
|
|
@@ -195,20 +191,12 @@ export class DropdownDirective {
|
|
|
195
191
|
panel.optionFocused?.onOptionSelected(event);
|
|
196
192
|
}
|
|
197
193
|
else {
|
|
198
|
-
panel.close(
|
|
194
|
+
panel.close();
|
|
199
195
|
event?.preventDefault();
|
|
200
196
|
}
|
|
201
197
|
break;
|
|
202
|
-
case 'ArrowDown':
|
|
203
|
-
this.scrollDown();
|
|
204
|
-
event?.preventDefault();
|
|
205
|
-
break;
|
|
206
|
-
case 'ArrowUp':
|
|
207
|
-
this.scrollUp();
|
|
208
|
-
event?.preventDefault();
|
|
209
|
-
break;
|
|
210
198
|
case 'Escape':
|
|
211
|
-
panel.close(
|
|
199
|
+
panel.close();
|
|
212
200
|
break;
|
|
213
201
|
default:
|
|
214
202
|
break;
|
|
@@ -218,7 +206,7 @@ export class DropdownDirective {
|
|
|
218
206
|
switch (code) {
|
|
219
207
|
case 'Enter':
|
|
220
208
|
case 'Space':
|
|
221
|
-
panel.open(
|
|
209
|
+
panel.open();
|
|
222
210
|
event?.preventDefault();
|
|
223
211
|
break;
|
|
224
212
|
default:
|
|
@@ -238,68 +226,67 @@ export class DropdownDirective {
|
|
|
238
226
|
comparable(text) {
|
|
239
227
|
return text.toLowerCase().trim();
|
|
240
228
|
}
|
|
241
|
-
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}
|
|
229
|
+
doSerach(input) {
|
|
230
|
+
const value = this.comparable(input.value);
|
|
231
|
+
const exactMatch = this.sirioSelect.options.find(option => this.comparable(option.text) === value);
|
|
232
|
+
let firstMatch = true;
|
|
233
|
+
this.sirioSelect.options.forEach((option, index) => {
|
|
234
|
+
const comparableText = this.comparable(option.text);
|
|
235
|
+
const match = exactMatch
|
|
236
|
+
? comparableText === value
|
|
237
|
+
: comparableText.includes(value);
|
|
238
|
+
this.show(option, match);
|
|
239
|
+
if (match && firstMatch) {
|
|
240
|
+
option.focus();
|
|
241
|
+
firstMatch = false;
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
option.removeFocus();
|
|
245
|
+
}
|
|
246
|
+
});
|
|
260
247
|
}
|
|
261
|
-
|
|
248
|
+
scroll(down = false) {
|
|
262
249
|
const panel = this.sirioSelect.panel;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
panel.
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
const nextOptionFocused = this.findPreviousVisibleOption(panel.optionFocusedIndex - 1, panel.options);
|
|
269
|
-
if (nextOptionFocused) {
|
|
270
|
-
panel.scrollBarUp();
|
|
271
|
-
panel.optionFocused?.removeFocus();
|
|
272
|
-
nextOptionFocused?.setFocus();
|
|
250
|
+
const optionFocusedIndex = panel.optionFocusedIndex;
|
|
251
|
+
if (optionFocusedIndex === -1) {
|
|
252
|
+
panel.focusFirstOption();
|
|
273
253
|
return;
|
|
274
254
|
}
|
|
275
|
-
panel.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
255
|
+
panel.blurCurrent();
|
|
256
|
+
let newIndex = down
|
|
257
|
+
? this.findNextVisibleOption(optionFocusedIndex + 1, panel.options)
|
|
258
|
+
: this.findPreviousVisibleOption(optionFocusedIndex - 1, panel.options);
|
|
259
|
+
if (newIndex === -1) {
|
|
260
|
+
newIndex = down
|
|
261
|
+
? this.findNextVisibleOption(0, panel.options)
|
|
262
|
+
: this.findPreviousVisibleOption(panel.options.length - 1, panel.options);
|
|
280
263
|
}
|
|
264
|
+
if (newIndex < 0 || newIndex >= panel.options.length)
|
|
265
|
+
return;
|
|
266
|
+
const nextOptionFocused = panel.options.get(newIndex);
|
|
267
|
+
nextOptionFocused?.focus();
|
|
281
268
|
}
|
|
282
269
|
findPreviousVisibleOption(startIndex, options) {
|
|
283
270
|
let i = startIndex;
|
|
284
271
|
while (i >= 0) {
|
|
285
272
|
const option = options.get(i);
|
|
286
273
|
if (!this.isHidden(option)) {
|
|
287
|
-
return
|
|
274
|
+
return i;
|
|
288
275
|
}
|
|
289
276
|
i--;
|
|
290
277
|
}
|
|
291
|
-
return
|
|
278
|
+
return -1;
|
|
292
279
|
}
|
|
293
280
|
findNextVisibleOption(startIndex, options) {
|
|
294
281
|
let i = startIndex;
|
|
295
282
|
while (i < options.length) {
|
|
296
283
|
const option = options.get(i);
|
|
297
284
|
if (!this.isHidden(option)) {
|
|
298
|
-
return
|
|
285
|
+
return i;
|
|
299
286
|
}
|
|
300
287
|
i++;
|
|
301
288
|
}
|
|
302
|
-
return
|
|
289
|
+
return -1;
|
|
303
290
|
}
|
|
304
291
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ListenerService }, { token: i0.DestroyRef }, { token: i2.SirioSelectComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
305
292
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DropdownDirective, isStandalone: true, selector: "[dropdown]", inputs: { component: ["register", "component"], onSelectionChanged: "onSelectionChanged" }, providers: [
|
|
@@ -323,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
323
310
|
}], onSelectionChanged: [{
|
|
324
311
|
type: Input
|
|
325
312
|
}] } });
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kcm9wZG93bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0MsSUFBSSxFQUF5QixLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVVoRSxNQUFNLE9BQU8saUJBQWlCO0lBS2xCO0lBQ0E7SUFDQTtJQUNBO0lBQ1E7SUFSQyxTQUFTLEdBQVEsSUFBSSxDQUFDO0lBQ2hDLGtCQUFrQixDQUF1QztJQUVsRSxZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixlQUFnQyxFQUNoQyxVQUFzQixFQUNkLFdBQWlDO1FBSnpDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO0lBR25ELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FB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Q2hCO2lCQUNGOzswQkFVSSxJQUFJO3lDQVJZLFNBQVM7c0JBQTNCLEtBQUs7dUJBQUMsVUFBVTtnQkFDUixrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdCwgUmVuZGVyZXIyLCBEZXN0cm95UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExpc3RlbmVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xpc3RlbmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaXJpb1NlbGVjdENvbXBvbmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgRXZhbHVhdGVPcHRpb25zIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZHJvcGRvd25dJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dChcInJlZ2lzdGVyXCIpIGNvbXBvbmVudDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQ/OiAob3B0aW9ucz86IEV2YWx1YXRlT3B0aW9ucykgPT4gdm9pZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5lclNlcnZpY2U6IExpc3RlbmVyU2VydmljZSwgICAgXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgICBASG9zdCgpIHByaXZhdGUgc2lyaW9TZWxlY3Q6IFNpcmlvU2VsZWN0Q29tcG9uZW50XHJcbiAgKSB7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlVmFsdWUoKTtcclxuICAgIHRoaXMuaGFuZGxlU2VhcmNoYWJsZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVPcHRpb25zQ2hhbmdlcygpO1xyXG4gICAgdGhpcy5oYW5kbGVPcHRpb25TZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZhbHN5VmFsdWVzID0gW251bGwsIGZhbHNlLCAwLCBcIlwiXTtcclxuXHJcbiAgICBpZiAodGhpcy5zaXJpb1NlbGVjdFxyXG4gICAgICAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucylcclxuICAgICAgJiYgZmFsc3lWYWx1ZXMuaW5jbHVkZXModGhpcy5zaXJpb1NlbGVjdC52YWx1ZSkpXHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHZhbHVlT3B0aW9uID0gdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZpbmQoXHJcbiAgICAgICAgb3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5zaXJpb1NlbGVjdC52YWx1ZVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgICAgdmFsdWVPcHRpb24uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VhcmNoYWJsZSgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2hhYmxlJyk7XHJcbiAgICBpZiAoc2VhcmNoYWJsZSkge1xyXG4gICAgICBjb25zdCBkcm9wRG93biA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24nKTtcclxuICAgICAgY29uc3QgZHJvcE1lbnUgPSBkcm9wRG93bi5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHNlYXJjaGFibGUucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZHJvcERvd24sIHNlYXJjaGFibGUsIGRyb3BNZW51KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2ZvY3VzJywgKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2JsdXInLCAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAhPT0gZHJvcE1lbnUpXHJcbiAgICAgICAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5saXN0ZW5lclNlcnZpY2UubGlzdGVuKGlucHV0LCAna2V5dXAnLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5VXAoZXZlbnQsIGlucHV0KTsgICAgICAgIFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5RG93bihldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbE9wZW5lZFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hY3RpdmF0ZShzZWFyY2hhYmxlKSk7XHJcblxyXG4gICAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLnBhbmVsQ2xvc2VkXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRlYWN0aXZhdGUoc2VhcmNoYWJsZSkpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT3B0aW9uc0NoYW5nZXMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5vcHRpb25zLmNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUoKTtcclxuICAgICAgICAgICAgdGhpcy5jYW5WYWxpZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU9wdGlvblNlbGVjdGVkKCk6IHZvaWQge1xyXG5cclxuICAgIGlmICghdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLm9wdGlvblNlbGVjdGVkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb246IHtcclxuICAgICAgICAgICAgdmFsdWU6IGUuY29tcG9uZW50LnZhbHVlLFxyXG4gICAgICAgICAgICBsYWJlbDogZS5jb21wb25lbnQudGV4dFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge1xyXG4gICAgICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICAgICAgXCJldmVudFwiOiBldmVudFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBpbnZva2VBcmdzOiBbZXZlbnRdXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZChvcHRpb25zKSAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5WYWxpZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHZhbGlkYXRvciA9IHRoaXMudmFsaWRhdGVPcHRpb25zLmJpbmQodGhpcyk7XHJcblxyXG4gIHByaXZhdGUgYWRkVmFsaWRhdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5jb250cm9sPy5hZGRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlVmFsaWRhdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5jb250cm9sPy5yZW1vdmVWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVPcHRpb25zKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5jYW5WYWxpZGF0ZSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgdmFsdWVPcHRpb24gPSB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZmluZChcclxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXZhbHVlT3B0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IGBcIiR7dmFsdWV9XCIgbm9uIMOoIHVuIHZhbG9yZSB2YWxpZG9gIH07XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVhY3RpdmF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICBsZXQgY3VycmVudFZhbHVlID0gXCJcIjtcclxuXHJcbiAgICBpZiAodGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zU2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnNTZWxlY3RlZFswXS50ZXh0XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuXHJcbiAgICBpZiAoIWlucHV0KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaW5wdXQudmFsdWUgPSBjdXJyZW50VmFsdWU7XHJcblxyXG4gICAgY29uc3QgZHJvcE1lbnUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNpcmlvLWRyb3Bkb3duLW1lbnUnKTtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvdyhvcHRpb24sIHRydWUpO1xyXG4gICAgICBpZiAoY3VycmVudFZhbHVlID09IG9wdGlvbi50ZXh0KSB7XHJcbiAgICAgICAgZHJvcE1lbnUuc2Nyb2xsVG9wID0gdGhpcy5uYXRpdmUob3B0aW9uKS5vZmZzZXRUb3A7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ2Rpc3BsYXknLCAnaW5saW5lLWJsb2NrJyk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGlucHV0LnZhbHVlLmxlbmd0aCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcclxuICAgICAgaW5wdXQuZm9jdXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbnB1dDogYW55KSB7XHJcbiAgICBjb25zdCB7IGNvZGUgfSA9IGV2ZW50O1xyXG5cclxuICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb21wYXJhYmxlKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBleGFjdE1hdGNoID0gdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+XHJcbiAgICAgIHRoaXMuY29tcGFyYWJsZShvcHRpb24udGV4dCkgPT09IHZhbHVlXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBmaXJzdE1hdGNoID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBjb21wYXJhYmxlVGV4dCA9IHRoaXMuY29tcGFyYWJsZShvcHRpb24udGV4dCk7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gZXhhY3RNYXRjaFxyXG4gICAgICAgID8gY29tcGFyYWJsZVRleHQgPT09IHZhbHVlXHJcbiAgICAgICAgOiBjb21wYXJhYmxlVGV4dC5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2hvdyhvcHRpb24sIG1hdGNoKTtcclxuICAgICAgaWYgKG1hdGNoICYmIGZpcnN0TWF0Y2gpIHtcclxuICAgICAgICBvcHRpb24uc2V0Rm9jdXMoKTtcclxuICAgICAgICBmaXJzdE1hdGNoID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFuZWxJc09wZW4gPSBwYW5lbC5wYW5lbElzT3BlbjtcclxuICAgIGNvbnN0IHsgY29kZSB9ID0gZXZlbnQ7XHJcbiAgICBpZiAocGFuZWxJc09wZW4pIHtcclxuICAgICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgICAgIGlmIChwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/Lm9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhbmVsLmNsb3NlKGV2ZW50KTtcclxuICAgICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XHJcbiAgICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xyXG4gICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICAgICAgcGFuZWwuY2xvc2UoZXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXBhbmVsSXNPcGVuKSB7XHJcbiAgICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICBjYXNlICdTcGFjZSc6XHJcbiAgICAgICAgICBwYW5lbC5vcGVuKGV2ZW50KTtcclxuICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdGl2ZShvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbi52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNIaWRkZW4ob3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLm5hdGl2ZShvcHRpb24pLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdyhvcHRpb246IGFueSwgdmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubmF0aXZlKG9wdGlvbikuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gJycgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmFibGUodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsRG93bigpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwub3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBwYW5lbC5zY3JvbGxCYXJUb3AoKTtcclxuICAgICAgcGFuZWwub3B0aW9ucy5maXJzdC5zZXRGb2N1cygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXh0T3B0aW9uRm9jdXNlZCA9IHRoaXMuZmluZE5leHRWaXNpYmxlT3B0aW9uKHBhbmVsLm9wdGlvbkZvY3VzZWRJbmRleCArIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgcGFuZWwuc2Nyb2xsQmFyRG93bigpO1xyXG4gICAgcGFuZWwub3B0aW9uRm9jdXNlZD8ucmVtb3ZlRm9jdXMoKTtcclxuICAgIGlmIChuZXh0T3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBuZXh0T3B0aW9uRm9jdXNlZD8uc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcGFuZWwuc2Nyb2xsQmFyVG9wKCk7XHJcbiAgICBjb25zdCBmaXJzdFZpc2libGUgPSB0aGlzLmZpbmROZXh0VmlzaWJsZU9wdGlvbigwLCBwYW5lbC5vcHRpb25zKTtcclxuICAgIGlmIChmaXJzdFZpc2libGUpIHtcclxuICAgICAgZmlyc3RWaXNpYmxlLnNldEZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFVwKCkge1xyXG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsO1xyXG4gICAgaWYgKCFwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgIHBhbmVsLnNjcm9sbEJhclRvcCgpO1xyXG4gICAgICBwYW5lbC5vcHRpb25zLmxhc3Quc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSAgICBcclxuICAgIGNvbnN0IG5leHRPcHRpb25Gb2N1c2VkID0gdGhpcy5maW5kUHJldmlvdXNWaXNpYmxlT3B0aW9uKHBhbmVsLm9wdGlvbkZvY3VzZWRJbmRleCAtIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgaWYgKG5leHRPcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgIHBhbmVsLnNjcm9sbEJhclVwKCk7XHJcbiAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/LnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIG5leHRPcHRpb25Gb2N1c2VkPy5zZXRGb2N1cygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBwYW5lbC5vcHRpb25Gb2N1c2VkPy5yZW1vdmVGb2N1cygpO1xyXG4gICAgcGFuZWwuc2Nyb2xsQmFyQm90dG9tKCk7XHJcbiAgICBjb25zdCBsYXN0VmlzaWJsZSA9IHRoaXMuZmluZFByZXZpb3VzVmlzaWJsZU9wdGlvbihwYW5lbC5vcHRpb25zLmxlbmd0aCAtIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgaWYgKGxhc3RWaXNpYmxlKSB7XHJcbiAgICAgIGxhc3RWaXNpYmxlLnNldEZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRQcmV2aW91c1Zpc2libGVPcHRpb24oc3RhcnRJbmRleDogbnVtYmVyLCBvcHRpb25zOiBhbnkpOiBhbnkgfCBudWxsIHtcclxuICAgIGxldCBpID0gc3RhcnRJbmRleDtcclxuICAgIHdoaWxlIChpID49IDApIHtcclxuICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9ucy5nZXQoaSk7XHJcbiAgICAgIGlmICghdGhpcy5pc0hpZGRlbihvcHRpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBpLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZE5leHRWaXNpYmxlT3B0aW9uKHN0YXJ0SW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogYW55IHwgbnVsbCB7XHJcbiAgICBsZXQgaSA9IHN0YXJ0SW5kZXg7XHJcbiAgICB3aGlsZSAoaSA8IG9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZ2V0KGkpO1xyXG4gICAgICBpZiAoIXRoaXMuaXNIaWRkZW4ob3B0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kcm9wZG93bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0MsSUFBSSxFQUF5QixLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVVoRSxNQUFNLE9BQU8saUJBQWlCO0lBS2xCO0lBQ0E7SUFDQTtJQUNBO0lBQ1E7SUFSQyxTQUFTLEdBQVEsSUFBSSxDQUFDO0lBQ2hDLGtCQUFrQixDQUF1QztJQUVsRSxZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixlQUFnQyxFQUNoQyxVQUFzQixFQUNkLFdBQWlDO1FBSnpDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO0lBR25ELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FB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QUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7WUFDRCxDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVPLHFCQUFxQixDQUFDLFVBQWtCLEVBQUUsT0FBWTtRQUM1RCxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1lBQ0QsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBdFZVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFKQUpqQjtZQUNULGVBQWU7U0FDaEI7OzRGQUVVLGlCQUFpQjtrQkFQN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCxlQUFlO3FCQUNoQjtpQkFDRjs7MEJBVUksSUFBSTt5Q0FSWSxTQUFTO3NCQUEzQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1Isa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYsIEhvc3QsIFJlbmRlcmVyMiwgRGVzdHJveVJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saXN0ZW5lci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2lyaW9TZWxlY3RDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEV2YWx1YXRlT3B0aW9ucyB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Ryb3Bkb3duXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIExpc3RlbmVyU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoXCJyZWdpc3RlclwiKSBjb21wb25lbnQ6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkPzogKG9wdGlvbnM/OiBFdmFsdWF0ZU9wdGlvbnMpID0+IHZvaWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgbGlzdGVuZXJTZXJ2aWNlOiBMaXN0ZW5lclNlcnZpY2UsICAgIFxyXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxyXG4gICAgQEhvc3QoKSBwcml2YXRlIHNpcmlvU2VsZWN0OiBTaXJpb1NlbGVjdENvbXBvbmVudFxyXG4gICkge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhhbmRsZVZhbHVlKCk7XHJcbiAgICB0aGlzLmhhbmRsZVNlYXJjaGFibGUoKTtcclxuICAgIHRoaXMuaGFuZGxlT3B0aW9uc0NoYW5nZXMoKTtcclxuICAgIHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0ZWQoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmYWxzeVZhbHVlcyA9IFtudWxsLCBmYWxzZSwgMCwgXCJcIl07XHJcblxyXG4gICAgaWYgKHRoaXMuc2lyaW9TZWxlY3RcclxuICAgICAgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMpXHJcbiAgICAgICYmIGZhbHN5VmFsdWVzLmluY2x1ZGVzKHRoaXMuc2lyaW9TZWxlY3QudmFsdWUpKVxyXG4gICAge1xyXG4gICAgICBjb25zdCB2YWx1ZU9wdGlvbiA9IHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5maW5kKFxyXG4gICAgICAgIG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMuc2lyaW9TZWxlY3QudmFsdWVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICAgIHZhbHVlT3B0aW9uLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNlYXJjaGFibGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZ2V0UGFuZWxFbGVtZW50UmVmKCk7XHJcbiAgICBjb25zdCBzZWFyY2hhYmxlID0gZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoYWJsZScpO1xyXG4gICAgaWYgKHNlYXJjaGFibGUpIHtcclxuICAgICAgY29uc3QgZHJvcERvd24gPSB0aGlzLmdldERyb3BEb3duRWxlbWVudCgpO1xyXG4gICAgICBjb25zdCBkcm9wTWVudSA9IHRoaXMuZ2V0RHJvcERvd25NZW51RWxlbWVudCgpO1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHNlYXJjaGFibGUucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZHJvcERvd24sIHNlYXJjaGFibGUsIGRyb3BNZW51KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2ZvY3VzJywgKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2JsdXInLCAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAhPT0gZHJvcE1lbnUpXHJcbiAgICAgICAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5saXN0ZW5lclNlcnZpY2UubGlzdGVuKGlucHV0LCAna2V5dXAnLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5VXAoZXZlbnQsIGlucHV0KTsgICAgICAgIFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5RG93bihldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbE9wZW5lZFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hY3RpdmF0ZShzZWFyY2hhYmxlKSk7XHJcblxyXG4gICAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLnBhbmVsQ2xvc2VkXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRlYWN0aXZhdGUoc2VhcmNoYWJsZSkpO1xyXG5cclxuICAgICAgKHRoaXMuc2lyaW9TZWxlY3QucGFuZWwgYXMgYW55KS5zY3JvbGwgPSB0aGlzLnNjcm9sbC5iaW5kKHRoaXMpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT3B0aW9uc0NoYW5nZXMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5vcHRpb25zLmNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUoKTtcclxuICAgICAgICAgICAgdGhpcy5jYW5WYWxpZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU9wdGlvblNlbGVjdGVkKCk6IHZvaWQge1xyXG5cclxuICAgIGlmICghdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLm9wdGlvblNlbGVjdGVkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb246IHtcclxuICAgICAgICAgICAgdmFsdWU6IGUuY29tcG9uZW50LnZhbHVlLFxyXG4gICAgICAgICAgICBsYWJlbDogZS5jb21wb25lbnQudGV4dFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge1xyXG4gICAgICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICAgICAgXCJldmVudFwiOiBldmVudFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBpbnZva2VBcmdzOiBbZXZlbnRdXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZChvcHRpb25zKSAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYW5lbEVsZW1lbnRSZWYoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuc2lyaW9TZWxlY3QucGFuZWwgYXMgYW55KS5lbGVtZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREcm9wRG93bkVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zaXJpby1kcm9wZG93bicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREcm9wRG93bk1lbnVFbGVtZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFuZWxFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5WYWxpZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHZhbGlkYXRvciA9IHRoaXMudmFsaWRhdGVPcHRpb25zLmJpbmQodGhpcyk7XHJcblxyXG4gIHByaXZhdGUgYWRkVmFsaWRhdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5jb250cm9sPy5hZGRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlVmFsaWRhdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5jb250cm9sPy5yZW1vdmVWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVPcHRpb25zKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5jYW5WYWxpZGF0ZSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgdmFsdWVPcHRpb24gPSB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZmluZChcclxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXZhbHVlT3B0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IGBcIiR7dmFsdWV9XCIgbm9uIMOoIHVuIHZhbG9yZSB2YWxpZG9gIH07XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVhY3RpdmF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICBsZXQgY3VycmVudFZhbHVlID0gXCJcIjtcclxuXHJcbiAgICBpZiAodGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zU2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnNTZWxlY3RlZFswXS50ZXh0XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuXHJcbiAgICBpZiAoIWlucHV0KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaW5wdXQudmFsdWUgPSBjdXJyZW50VmFsdWU7XHJcblxyXG4gICAgY29uc3QgZHJvcE1lbnUgPSB0aGlzLmdldFBhbmVsRWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICB0aGlzLnNob3cob3B0aW9uLCB0cnVlKTtcclxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBvcHRpb24udGV4dCkge1xyXG4gICAgICAgIGRyb3BNZW51LnNjcm9sbFRvcCA9IHRoaXMubmF0aXZlKG9wdGlvbikub2Zmc2V0VG9wO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdkaXNwbGF5JywgJ2lubGluZS1ibG9jaycpO1xyXG5cclxuICAgIHRoaXMuZG9TZXJhY2goaW5wdXQpOyAgXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGlucHV0LnZhbHVlLmxlbmd0aCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcclxuICAgICAgaW5wdXQuZm9jdXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbnB1dDogYW55KSB7XHJcbiAgICBjb25zdCB7IGNvZGUgfSA9IGV2ZW50O1xyXG5cclxuICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kb1NlcmFjaChpbnB1dCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFuZWxJc09wZW4gPSBwYW5lbC5wYW5lbElzT3BlbjtcclxuICAgIGNvbnN0IHsgY29kZSB9ID0gZXZlbnQ7XHJcbiAgICBpZiAocGFuZWxJc09wZW4pIHtcclxuICAgICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgICAgIGlmIChwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/Lm9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhbmVsLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICAgIHBhbmVsLmNsb3NlKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghcGFuZWxJc09wZW4pIHtcclxuICAgICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgICAgIHBhbmVsLm9wZW4oKTtcclxuICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdGl2ZShvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbi52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNIaWRkZW4ob3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLm5hdGl2ZShvcHRpb24pLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdyhvcHRpb246IGFueSwgdmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubmF0aXZlKG9wdGlvbikuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gJycgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmFibGUodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZG9TZXJhY2goaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb21wYXJhYmxlKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBleGFjdE1hdGNoID0gdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+XHJcbiAgICAgIHRoaXMuY29tcGFyYWJsZShvcHRpb24udGV4dCkgPT09IHZhbHVlXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBmaXJzdE1hdGNoID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBjb21wYXJhYmxlVGV4dCA9IHRoaXMuY29tcGFyYWJsZShvcHRpb24udGV4dCk7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gZXhhY3RNYXRjaFxyXG4gICAgICAgID8gY29tcGFyYWJsZVRleHQgPT09IHZhbHVlXHJcbiAgICAgICAgOiBjb21wYXJhYmxlVGV4dC5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2hvdyhvcHRpb24sIG1hdGNoKTtcclxuICAgICAgaWYgKG1hdGNoICYmIGZpcnN0TWF0Y2gpIHtcclxuICAgICAgICBvcHRpb24uZm9jdXMoKTtcclxuICAgICAgICBmaXJzdE1hdGNoID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGwoZG93biA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBwYW5lbCA9IHRoaXMuc2lyaW9TZWxlY3QucGFuZWw7XHJcbiAgICBjb25zdCBvcHRpb25Gb2N1c2VkSW5kZXggPSBwYW5lbC5vcHRpb25Gb2N1c2VkSW5kZXg7XHJcbiAgICBpZiAob3B0aW9uRm9jdXNlZEluZGV4ID09PSAtMSkge1xyXG4gICAgICBwYW5lbC5mb2N1c0ZpcnN0T3B0aW9uKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIChwYW5lbCBhcyBhbnkpLmJsdXJDdXJyZW50KCk7XHJcbiAgICBsZXQgbmV3SW5kZXggPSBkb3duXHJcbiAgICAgID8gdGhpcy5maW5kTmV4dFZpc2libGVPcHRpb24ob3B0aW9uRm9jdXNlZEluZGV4ICsgMSwgcGFuZWwub3B0aW9ucylcclxuICAgICAgOiB0aGlzLmZpbmRQcmV2aW91c1Zpc2libGVPcHRpb24ob3B0aW9uRm9jdXNlZEluZGV4IC0gMSwgcGFuZWwub3B0aW9ucylcclxuXHJcbiAgICBpZiAobmV3SW5kZXggPT09IC0xKSB7XHJcbiAgICAgIG5ld0luZGV4ID0gZG93blxyXG4gICAgICAgID8gdGhpcy5maW5kTmV4dFZpc2libGVPcHRpb24oMCwgcGFuZWwub3B0aW9ucylcclxuICAgICAgICA6IHRoaXMuZmluZFByZXZpb3VzVmlzaWJsZU9wdGlvbihwYW5lbC5vcHRpb25zLmxlbmd0aCAtIDEsIHBhbmVsLm9wdGlvbnMpOyAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXdJbmRleCA8IDAgfHwgbmV3SW5kZXggPj0gcGFuZWwub3B0aW9ucy5sZW5ndGgpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBuZXh0T3B0aW9uRm9jdXNlZCA9IHBhbmVsLm9wdGlvbnMuZ2V0KG5ld0luZGV4KTtcclxuICAgIG5leHRPcHRpb25Gb2N1c2VkPy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kUHJldmlvdXNWaXNpYmxlT3B0aW9uKHN0YXJ0SW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBsZXQgaSA9IHN0YXJ0SW5kZXg7XHJcbiAgICB3aGlsZSAoaSA+PSAwKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZ2V0KGkpO1xyXG4gICAgICBpZiAoIXRoaXMuaXNIaWRkZW4ob3B0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICAgIGktLTtcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZE5leHRWaXNpYmxlT3B0aW9uKHN0YXJ0SW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogYW55IHwgbnVsbCB7XHJcbiAgICBsZXQgaSA9IHN0YXJ0SW5kZXg7XHJcbiAgICB3aGlsZSAoaSA8IG9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZ2V0KGkpO1xyXG4gICAgICBpZiAoIXRoaXMuaXNIaWRkZW4ob3B0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxuICB9ICBcclxufVxyXG4iXX0=
|
|
@@ -63,16 +63,17 @@ export class FileManagerDirective extends FileHandlerDirective {
|
|
|
63
63
|
lastSingleUploaded = null;
|
|
64
64
|
setupInstant() {
|
|
65
65
|
this.instantSubscription.add(this.fileUpload.fileUploadedEvent.subscribe((e) => {
|
|
66
|
-
const
|
|
66
|
+
const addedFiles = this.fileUpload.fileList
|
|
67
|
+
.filter(file => !this.getStatus(file));
|
|
67
68
|
if (this.multiple) {
|
|
68
|
-
for (const file of Array.from(
|
|
69
|
+
for (const file of Array.from(addedFiles ?? [])) {
|
|
69
70
|
this.onAddFile(file);
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
else {
|
|
73
74
|
if (this.lastSingleUploaded)
|
|
74
75
|
this.onRemoveFile(this.lastSingleUploaded);
|
|
75
|
-
this.lastSingleUploaded =
|
|
76
|
+
this.lastSingleUploaded = addedFiles[0] ?? null;
|
|
76
77
|
this.onAddFile(this.lastSingleUploaded);
|
|
77
78
|
}
|
|
78
79
|
}));
|
|
@@ -230,4 +231,4 @@ export var UploadStatus;
|
|
|
230
231
|
UploadStatus[UploadStatus["Deleted"] = 3] = "Deleted";
|
|
231
232
|
UploadStatus[UploadStatus["Failed"] = 4] = "Failed";
|
|
232
233
|
})(UploadStatus || (UploadStatus = {}));
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW1hbmFnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9maWxlbWFuYWdlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBRSxLQUFLLEVBQW1DLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFjLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQU94RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsb0JBQW9CO0lBa0IxQztJQUNSO0lBQ0E7SUFqQlYsYUFBYSxHQUFtQixLQUFLLENBQUM7SUFHdEMsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFHakMsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFHakMsYUFBYSxDQUFtQztJQUdoRCxhQUFhLENBQXVDO0lBRXBELFlBQ2tCLFNBQW9CLEVBQzVCLFVBQW9DLEVBQ3BDLFFBQW1CLEVBQzNCLFlBQTBCLEVBQzFCLFVBQXNCO1FBRXRCLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFOaEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBSzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQztlQUM5QyxPQUFPLENB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RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFFckIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUMvQixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F6UlUsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQW1CSSxJQUFJOzRKQWZQLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7O0FBOFFSLE1BQU0sQ0FBTixJQUFZLFlBTVg7QUFORCxXQUFZLFlBQVk7SUFDdEIseURBQVMsQ0FBQTtJQUNULHVEQUFRLENBQUE7SUFDUix1REFBUSxDQUFBO0lBQ1IscURBQU8sQ0FBQTtJQUNQLG1EQUFNLENBQUE7QUFDUixDQUFDLEVBTlcsWUFBWSxLQUFaLFlBQVksUUFNdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBTZWxmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTaXJpb0ZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVIYW5kbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9maWxlLmRpcmVjdGl2ZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tmaWxlTWFuYWdlcl0nLFxyXG4gIGV4cG9ydEFzOiAnZmlsZU1hbmFnZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVNYW5hZ2VyRGlyZWN0aXZlIGV4dGVuZHMgRmlsZUhhbmRsZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5zdGFudFVwbG9hZDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtdWx0aXBsZTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB1cGxvYWRIYW5kbGVyPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBkZWxldGVIYW5kbGVyPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkOiBTaXJpb0ZpbGVVcGxvYWRDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcclxuICApIHtcclxuICAgIHN1cGVyKHRvYXN0U2VydmljZSwgZGVzdHJveVJlZik7XHJcbiAgfVxyXG4gIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhbnVwSW5zdGFudCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJpbnN0YW50VXBsb2FkXCJdIHx8IGNoYW5nZXNbXCJtdWx0aXBsZVwiXVxyXG4gICAgICB8fCBjaGFuZ2VzW1widXBsb2FkSGFuZGxlclwiXSB8fCBjaGFuZ2VzW1wiZGVsZXRlSGFuZGxlclwiXSApIHtcclxuICAgICAgdGhpcy5jbGVhbnVwSW5zdGFudCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaW5zdGFudFVwbG9hZCAmJiB0aGlzLnVwbG9hZEhhbmRsZXIgJiYgdGhpcy5kZWxldGVIYW5kbGVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cEluc3RhbnQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXR1cEJ1dHRvbigpOyAgICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5SZW1vdmUoZmlsZTogRmlsZSk6IGJvb2xlYW5cclxuICB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCAhZmlsZSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmluc3RhbnRVcGxvYWQpXHJcbiAgICAgIHJldHVybiAhdGhpcy5pc1VwbG9hZGluZyhmaWxlKSAmJiAhdGhpcy5pc0RlbGV0aW5nKGZpbGUpO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmlsZShmaWxlOiBGaWxlKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNhblJlbW92ZShmaWxlKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMub25SZW1vdmluZ0ZpbGUoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBjYW5Eb3dubG9hZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaW5zdGFudFVwbG9hZClcclxuICAgICAgcmV0dXJuIHN1cGVyLmNhbkRvd25sb2FkKGZpbGUpO1xyXG5cclxuICAgIHJldHVybiAhdGhpcy5pc1VwbG9hZGluZyhmaWxlKVxyXG4gICAgICAmJiAhdGhpcy5pc0RlbGV0aW5nKGZpbGUpXHJcbiAgICAgICYmIHN1cGVyLmNhbkRvd25sb2FkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgaXNVcGxvYWRpbmcoZmlsZTogRmlsZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhdHVzKGZpbGUpID09PSBVcGxvYWRTdGF0dXMuVXBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgaXNEZWxldGluZyhmaWxlOiBGaWxlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTdGF0dXMoZmlsZSkgPT09IFVwbG9hZFN0YXR1cy5EZWxldGluZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5zdGFudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0U2luZ2xlVXBsb2FkZWQ6IEZpbGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEluc3RhbnQoKSB7XHJcblxyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWxlVXBsb2FkLmZpbGVVcGxvYWRlZEV2ZW50LnN1YnNjcmliZSgoZSkgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXQgPSBlLmV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIEFycmF5LmZyb20odGFyZ2V0LmZpbGVzID8/IFtdKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uQWRkRmlsZShmaWxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMubGFzdFNpbmdsZVVwbG9hZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlRmlsZSh0aGlzLmxhc3RTaW5nbGVVcGxvYWRlZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQgPSB0YXJnZXQuZmlsZXM/LlswXSA/PyBudWxsO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLm9uQWRkRmlsZSh0aGlzLmxhc3RTaW5nbGVVcGxvYWRlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWxlVXBsb2FkLmZpbGVEZWxldGVkRXZlbnQuc3Vic2NyaWJlKChlKSA9PiB7ICAgICAgICBcclxuICAgICAgICB0aGlzLm9uUmVtb3ZlRmlsZShlLmRhdGEuZmlsZURlbGV0ZWQpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmxhc3RTaW5nbGVVcGxvYWRlZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFudXBJbnN0YW50KCkge1xyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmluc3RhbnRTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEJ1dHRvbigpIHtcclxuICAgIHRoaXMuaW5zdGFudFN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEJ1dHRvbih2YWx1ZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZnJlc2hCdXR0b24odGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udmFsdWUpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25BZGRGaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogdm9pZCB7XHJcbiAgICBcclxuICAgIGlmICghZmlsZSB8fCAhdGhpcy51cGxvYWRIYW5kbGVyKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0dXMoZmlsZSwgVXBsb2FkU3RhdHVzLlVwbG9hZGluZyk7XHJcblxyXG4gICAgdGhpcy51cGxvYWRIYW5kbGVyKGZpbGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0dXMoZmlsZSwgVXBsb2FkU3RhdHVzLlVwbG9hZGVkKTtcclxuICAgICAgICAgIHRoaXMubWFya1VwbG9hZGVkKGZpbGUsIHJlc3VsdCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0dXMoZmlsZSwgVXBsb2FkU3RhdHVzLkZhaWxlZCk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21VcGxvYWRlcihmaWxlKTtcclxuICAgICAgICAgIHRoaXMubG9nRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SZW1vdmVGaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCFmaWxlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY3VycmVudFN0YXR1cyA9IHRoaXMuZ2V0U3RhdHVzKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHNob3VsZERlbGV0ZSA9IHRoaXMuZGVsZXRlSGFuZGxlclxyXG4gICAgICAmJiAoY3VycmVudFN0YXR1cyA9PT0gVXBsb2FkU3RhdHVzLlVwbG9hZGVkXHJcbiAgICAgIHx8IGN1cnJlbnRTdGF0dXMgPT0gbnVsbCk7XHJcblxyXG4gICAgaWYgKCFzaG91bGREZWxldGUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUhhbmRsZXI/LihmaWxlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SZW1vdmluZ0ZpbGUoZmlsZTogRmlsZSkge1xyXG5cclxuICAgIGlmICghdGhpcy5kZWxldGVIYW5kbGVyKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlRnJvbVVwbG9hZGVyKGZpbGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudFN0YXR1cyA9IHRoaXMuZ2V0U3RhdHVzKGZpbGUpO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5EZWxldGluZyk7XHJcblxyXG4gICAgdGhpcy5kZWxldGVIYW5kbGVyPy4oZmlsZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICB0YXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVsZXRlIGZhaWxlZCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5EZWxldGVkKTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbVVwbG9hZGVyKGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIGN1cnJlbnRTdGF0dXMpO1xyXG4gICAgICAgICAgdGhpcy5sb2dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTsgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVGcm9tVXBsb2FkZXIoZmlsZTogRmlsZSkge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkLm9uRmlsZURlbGV0ZWQoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hCdXR0b24odmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgaGlkZUJ1dHRvbiA9ICh2YWx1ZT8ubGVuZ3RoID8/IDApID4gMCAmJiAhdGhpcy5tdWx0aXBsZTtcclxuXHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmZpbGVVcGxvYWQuc2lyaW9JbnB1dD8uc2lyaW9CdXR0b24/Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKCFidXR0b24pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyW2hpZGVCdXR0b24gPyAnYWRkQ2xhc3MnIDogJ3JlbW92ZUNsYXNzJ10oXHJcbiAgICAgIGJ1dHRvbixcclxuICAgICAgJ2Qtbm9uZSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtVcGxvYWRlZChmaWxlOiBGaWxlLCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHJcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHQpKSB7XHJcblxyXG4gICAgICBpZiAoa2V5IGluIGZpbGUpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZpbGUsIGtleSwge1xyXG4gICAgICAgIHZhbHVlLFxyXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZpbGUsIFwidXBsb2FkZWRcIiwge1xyXG4gICAgICB2YWx1ZTogdHJ1ZSxcclxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxyXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFN0YXR1cyhmaWxlOiBGaWxlKTogVXBsb2FkU3RhdHVzIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiAoZmlsZSBhcyBhbnkpLnN0YXR1cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U3RhdHVzKGZpbGU6IEZpbGUsIHN0YXR1czogVXBsb2FkU3RhdHVzIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXkgPSAnc3RhdHVzJztcclxuXHJcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZpbGUsIGtleSkpIHtcclxuICAgICAgKGZpbGUgYXMgYW55KVtrZXldID0gc3RhdHVzO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZpbGUsIGtleSwge1xyXG4gICAgICB2YWx1ZTogc3RhdHVzLFxyXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBVcGxvYWRTdGF0dXMge1xyXG4gIFVwbG9hZGluZyxcclxuICBVcGxvYWRlZCxcclxuICBEZWxldGluZyxcclxuICBEZWxldGVkLFxyXG4gIEZhaWxlZFxyXG59XHJcbiJdfQ==
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW1hbmFnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9maWxlbWFuYWdlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBRSxLQUFLLEVBQW1DLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFjLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQU94RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsb0JBQW9CO0lBa0IxQztJQUNSO0lBQ0E7SUFqQlYsYUFBYSxHQUFtQixLQUFLLENBQUM7SUFHdEMsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFHakMsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFHakMsYUFBYSxDQUFtQztJQUdoRCxhQUFhLENBQXVDO0lBRXBELFlBQ2tCLFNBQW9CLEVBQzVCLFVBQW9DLEVBQ3BDLFFBQW1CLEVBQzNCLFlBQTBCLEVBQzFCLFVBQXNCO1FBRXRCLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFOaEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBSzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQztlQUM5QyxPQUFPLENB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Q0FBQztJQUM5QixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQVUsRUFBRSxNQUFnQztRQUM1RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFFckIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUMvQixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0ExUlUsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQW1CSSxJQUFJOzRKQWZQLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7O0FBK1FSLE1BQU0sQ0FBTixJQUFZLFlBTVg7QUFORCxXQUFZLFlBQVk7SUFDdEIseURBQVMsQ0FBQTtJQUNULHVEQUFRLENBQUE7SUFDUix1REFBUSxDQUFBO0lBQ1IscURBQU8sQ0FBQTtJQUNQLG1EQUFNLENBQUE7QUFDUixDQUFDLEVBTlcsWUFBWSxLQUFaLFlBQVksUUFNdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBTZWxmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTaXJpb0ZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVIYW5kbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9maWxlLmRpcmVjdGl2ZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tmaWxlTWFuYWdlcl0nLFxyXG4gIGV4cG9ydEFzOiAnZmlsZU1hbmFnZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVNYW5hZ2VyRGlyZWN0aXZlIGV4dGVuZHMgRmlsZUhhbmRsZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5zdGFudFVwbG9hZDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtdWx0aXBsZTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB1cGxvYWRIYW5kbGVyPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBkZWxldGVIYW5kbGVyPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkOiBTaXJpb0ZpbGVVcGxvYWRDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcclxuICApIHtcclxuICAgIHN1cGVyKHRvYXN0U2VydmljZSwgZGVzdHJveVJlZik7XHJcbiAgfVxyXG4gIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhbnVwSW5zdGFudCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJpbnN0YW50VXBsb2FkXCJdIHx8IGNoYW5nZXNbXCJtdWx0aXBsZVwiXVxyXG4gICAgICB8fCBjaGFuZ2VzW1widXBsb2FkSGFuZGxlclwiXSB8fCBjaGFuZ2VzW1wiZGVsZXRlSGFuZGxlclwiXSApIHtcclxuICAgICAgdGhpcy5jbGVhbnVwSW5zdGFudCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaW5zdGFudFVwbG9hZCAmJiB0aGlzLnVwbG9hZEhhbmRsZXIgJiYgdGhpcy5kZWxldGVIYW5kbGVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cEluc3RhbnQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXR1cEJ1dHRvbigpOyAgICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5SZW1vdmUoZmlsZTogRmlsZSk6IGJvb2xlYW5cclxuICB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCAhZmlsZSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmluc3RhbnRVcGxvYWQpXHJcbiAgICAgIHJldHVybiAhdGhpcy5pc1VwbG9hZGluZyhmaWxlKSAmJiAhdGhpcy5pc0RlbGV0aW5nKGZpbGUpO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmlsZShmaWxlOiBGaWxlKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNhblJlbW92ZShmaWxlKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMub25SZW1vdmluZ0ZpbGUoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBjYW5Eb3dubG9hZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaW5zdGFudFVwbG9hZClcclxuICAgICAgcmV0dXJuIHN1cGVyLmNhbkRvd25sb2FkKGZpbGUpO1xyXG5cclxuICAgIHJldHVybiAhdGhpcy5pc1VwbG9hZGluZyhmaWxlKVxyXG4gICAgICAmJiAhdGhpcy5pc0RlbGV0aW5nKGZpbGUpXHJcbiAgICAgICYmIHN1cGVyLmNhbkRvd25sb2FkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgaXNVcGxvYWRpbmcoZmlsZTogRmlsZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhdHVzKGZpbGUpID09PSBVcGxvYWRTdGF0dXMuVXBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgaXNEZWxldGluZyhmaWxlOiBGaWxlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTdGF0dXMoZmlsZSkgPT09IFVwbG9hZFN0YXR1cy5EZWxldGluZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5zdGFudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0U2luZ2xlVXBsb2FkZWQ6IEZpbGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEluc3RhbnQoKSB7XHJcblxyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWxlVXBsb2FkLmZpbGVVcGxvYWRlZEV2ZW50LnN1YnNjcmliZSgoZSkgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCBhZGRlZEZpbGVzID0gdGhpcy5maWxlVXBsb2FkLmZpbGVMaXN0XHJcbiAgICAgICAgICAuZmlsdGVyKGZpbGUgPT4gIXRoaXMuZ2V0U3RhdHVzKGZpbGUpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGFkZGVkRmlsZXMgPz8gW10pKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25BZGRGaWxlKGZpbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQpXHJcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmVGaWxlKHRoaXMubGFzdFNpbmdsZVVwbG9hZGVkKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmxhc3RTaW5nbGVVcGxvYWRlZCA9IGFkZGVkRmlsZXNbMF0gPz8gbnVsbDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5vbkFkZEZpbGUodGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuaW5zdGFudFN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZC5maWxlRGVsZXRlZEV2ZW50LnN1YnNjcmliZSgoZSkgPT4geyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vblJlbW92ZUZpbGUoZS5kYXRhLmZpbGVEZWxldGVkKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhbnVwSW5zdGFudCgpIHtcclxuICAgIHRoaXMuaW5zdGFudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAgIHRoaXMubGFzdFNpbmdsZVVwbG9hZGVkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBCdXR0b24oKSB7XHJcbiAgICB0aGlzLmluc3RhbnRTdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hCdXR0b24odmFsdWUpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoQnV0dG9uKHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQWRkRmlsZShmaWxlOiBGaWxlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICBpZiAoIWZpbGUgfHwgIXRoaXMudXBsb2FkSGFuZGxlcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5VcGxvYWRpbmcpO1xyXG5cclxuICAgIHRoaXMudXBsb2FkSGFuZGxlcihmaWxlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5VcGxvYWRlZCk7XHJcbiAgICAgICAgICB0aGlzLm1hcmtVcGxvYWRlZChmaWxlLCByZXN1bHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5GYWlsZWQpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tVXBsb2FkZXIoZmlsZSk7XHJcbiAgICAgICAgICB0aGlzLmxvZ0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlIHwgbnVsbCk6IHZvaWQge1xyXG5cclxuICAgIGlmICghZmlsZSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSB0aGlzLmdldFN0YXR1cyhmaWxlKTtcclxuXHJcbiAgICBjb25zdCBzaG91bGREZWxldGUgPSB0aGlzLmRlbGV0ZUhhbmRsZXJcclxuICAgICAgJiYgKGN1cnJlbnRTdGF0dXMgPT09IFVwbG9hZFN0YXR1cy5VcGxvYWRlZFxyXG4gICAgICB8fCBjdXJyZW50U3RhdHVzID09IG51bGwpO1xyXG5cclxuICAgIGlmICghc2hvdWxkRGVsZXRlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kZWxldGVIYW5kbGVyPy4oZmlsZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmVtb3ZpbmdGaWxlKGZpbGU6IEZpbGUpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGVsZXRlSGFuZGxlcikge1xyXG4gICAgICB0aGlzLnJlbW92ZUZyb21VcGxvYWRlcihmaWxlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSB0aGlzLmdldFN0YXR1cyhmaWxlKTtcclxuXHJcbiAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCBVcGxvYWRTdGF0dXMuRGVsZXRpbmcpO1xyXG5cclxuICAgIHRoaXMuZGVsZXRlSGFuZGxlcj8uKGZpbGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgdGFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlbGV0ZSBmYWlsZWQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCBVcGxvYWRTdGF0dXMuRGVsZXRlZCk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21VcGxvYWRlcihmaWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCBjdXJyZW50U3RhdHVzKTtcclxuICAgICAgICAgIHRoaXMubG9nRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRnJvbVVwbG9hZGVyKGZpbGU6IEZpbGUpIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZC5vbkZpbGVEZWxldGVkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoQnV0dG9uKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IGhpZGVCdXR0b24gPSAodmFsdWU/Lmxlbmd0aCA/PyAwKSA+IDAgJiYgIXRoaXMubXVsdGlwbGU7XHJcblxyXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5maWxlVXBsb2FkLnNpcmlvSW5wdXQ/LnNpcmlvQnV0dG9uPy5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlmICghYnV0dG9uKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlcltoaWRlQnV0dG9uID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKFxyXG4gICAgICBidXR0b24sXHJcbiAgICAgICdkLW5vbmUnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXJrVXBsb2FkZWQoZmlsZTogRmlsZSwgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0KSkge1xyXG5cclxuICAgICAgaWYgKGtleSBpbiBmaWxlKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBrZXksIHtcclxuICAgICAgICB2YWx1ZSxcclxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBcInVwbG9hZGVkXCIsIHtcclxuICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGF0dXMoZmlsZTogRmlsZSk6IFVwbG9hZFN0YXR1cyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gKGZpbGUgYXMgYW55KS5zdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXR1cyhmaWxlOiBGaWxlLCBzdGF0dXM6IFVwbG9hZFN0YXR1cyB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgY29uc3Qga2V5ID0gJ3N0YXR1cyc7XHJcblxyXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWxlLCBrZXkpKSB7XHJcbiAgICAgIChmaWxlIGFzIGFueSlba2V5XSA9IHN0YXR1cztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBrZXksIHtcclxuICAgICAgdmFsdWU6IHN0YXR1cyxcclxuICAgICAgd3JpdGFibGU6IHRydWUsXHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gVXBsb2FkU3RhdHVzIHtcclxuICBVcGxvYWRpbmcsXHJcbiAgVXBsb2FkZWQsXHJcbiAgRGVsZXRpbmcsXHJcbiAgRGVsZXRlZCxcclxuICBGYWlsZWRcclxufVxyXG4iXX0=
|
|
@@ -27,6 +27,7 @@ export class NumberDirective {
|
|
|
27
27
|
writeValue(value, event);
|
|
28
28
|
};
|
|
29
29
|
const coerceValue = (value) => {
|
|
30
|
+
const original = value;
|
|
30
31
|
if (value === null && this.defaultValue !== null) {
|
|
31
32
|
value = this.defaultValue;
|
|
32
33
|
}
|
|
@@ -37,7 +38,7 @@ export class NumberDirective {
|
|
|
37
38
|
if (this.maximum !== null && value > this.maximum) {
|
|
38
39
|
value = this.maximum;
|
|
39
40
|
}
|
|
40
|
-
if (this.decimalDigits != null && this.decimalDigits >= 0) {
|
|
41
|
+
if (original != value || (this.decimalDigits != null && this.decimalDigits >= 0)) {
|
|
41
42
|
writeValue(formatNumber(value), false);
|
|
42
43
|
}
|
|
43
44
|
}
|
|
@@ -120,4 +121,4 @@ function valueToStore(value) {
|
|
|
120
121
|
return null;
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBaUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEUsTUFBTSxPQUFPLGVBQWU7SUFNRTtJQUxuQixZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixhQUFhLEdBQWtCLElBQUksQ0FBQztJQUU3QyxZQUE0QixVQUErQjtRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUV6RCxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQW9CLEVBQTBCLEVBQUU7WUFDcEUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM1QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtRQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUV0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FB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WUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO1NBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQWUsQ0FBQztJQUN6QixDQUFDO1NBQ0ksQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIEFmdGVyVmlld0luaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvSW5wdXRDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW251bWJlcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIE51bWJlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgbWluaW11bTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgbWF4aW11bTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgZGVjaW1hbERpZ2l0czogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHJpdmF0ZSBzaXJpb0lucHV0OiBTaXJpb0lucHV0Q29tcG9uZW50KSB7XHJcblxyXG4gICAgY29uc3QgZm9ybWF0TnVtYmVyID0gKHZhbHVlOiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRlY2ltYWxEaWdpdHMgIT0gbnVsbCAmJiB0aGlzLmRlY2ltYWxEaWdpdHMgPj0gMCkge1xyXG4gICAgICAgIGNvbnN0IGZhY3RvciA9IE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxEaWdpdHMpO1xyXG4gICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGZhY3RvcikgLyBmYWN0b3I7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQodGhpcy5kZWNpbWFsRGlnaXRzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpcnN0V3JpdGUgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHdyaXRlVmFsdWUgPSB0aGlzLnNpcmlvSW5wdXQud3JpdGVWYWx1ZS5iaW5kKHRoaXMuc2lyaW9JbnB1dCk7XHJcblxyXG4gICAgdGhpcy5zaXJpb0lucHV0LndyaXRlVmFsdWUgPSBmdW5jdGlvbiAodmFsdWU6IGFueSwgZXZlbnQ/OiBib29sZWFuKSB7XHJcbiAgICAgIGlmIChmaXJzdFdyaXRlKSB7XHJcbiAgICAgICAgZmlyc3RXcml0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHZhbHVlID0gZm9ybWF0TnVtYmVyKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB3cml0ZVZhbHVlKHZhbHVlLCBldmVudCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvZXJjZVZhbHVlID0gKHZhbHVlOiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgdGhpcy5kZWZhdWx0VmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbmltdW0gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbmltdW0pIHtcclxuICAgICAgICAgIHZhbHVlID0gdGhpcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWF4aW11bSAhPT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4aW11bSkge1xyXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLm1heGltdW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFsRGlnaXRzICE9IG51bGwgJiYgdGhpcy5kZWNpbWFsRGlnaXRzID49IDApIHtcclxuICAgICAgICAgIHdyaXRlVmFsdWUoZm9ybWF0TnVtYmVyKHZhbHVlKSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZWdpc3Rlck9uQ2hhbmdlID0gdGhpcy5zaXJpb0lucHV0LnJlZ2lzdGVyT25DaGFuZ2UuYmluZCh0aGlzLnNpcmlvSW5wdXQpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9JbnB1dC5yZWdpc3Rlck9uQ2hhbmdlID0gZnVuY3Rpb24gKGZuOiAoXzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgIHJlZ2lzdGVyT25DaGFuZ2UoZnVuY3Rpb24gKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBmbihjb2VyY2VWYWx1ZSh2YWx1ZVRvU3RvcmUodmFsdWUpKSk7ICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5zaXJpb0lucHV0LnNpcmlvSW5wdXQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICBjb25zdCBlID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcclxuICAgICAgaWYgKGUua2V5ID09PSAnLidcclxuICAgICAgICB8fCAoZS5rZXkgPT09ICcsJyAmJiAhdGhpcy5hY2NlcHREZWNpbWFsKCkpXHJcbiAgICAgICAgfHwgKGUua2V5ID09PSAnLScgJiYgIXRoaXMuYWNjZXB0U2lnbigpKSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGUgPSBldmVudCBhcyBDbGlwYm9hcmRFdmVudDtcclxuICAgICAgY29uc3QgdGV4dCA9IGUuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpIHx8ICcnO1xyXG4gICAgICBpZiAodGV4dC5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgfHwgKHRleHQuaW5jbHVkZXMoJywnKSAmJiAhdGhpcy5hY2NlcHREZWNpbWFsKCkpXHJcbiAgICAgICAgfHwgKHRleHQuaW5jbHVkZXMoJy0nKSAmJiAhdGhpcy5hY2NlcHRTaWduKCkpKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWNjZXB0U2lnbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1pbmltdW0gIT09IG51bGwgJiYgdGhpcy5taW5pbXVtID49IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjY2VwdERlY2ltYWwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5kZWNpbWFsRGlnaXRzICE9PSBudWxsICYmIHRoaXMuZGVjaW1hbERpZ2l0cyA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9ICBcclxufVxyXG5cclxuZnVuY3Rpb24gdmFsdWVUb1N0b3JlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcclxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBpZiAodmFsdWUudHJpbSgpID09PSAnJykgeyBcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgIGlmIChpc05hTihudW1lcmljVmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcclxuICB9XHJcbiAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIHZhbHVlIGFzIG51bWJlcjtcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBaUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEUsTUFBTSxPQUFPLGVBQWU7SUFNRTtJQUxuQixZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixhQUFhLEdBQWtCLElBQUksQ0FBQztJQUU3QyxZQUE0QixVQUErQjtRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUV6RCxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQW9CLEVBQTBCLEVBQUU7WUFDcEUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM1QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtRQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUV0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FB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TUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztTQUNJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFlLENBQUM7SUFDekIsQ0FBQztTQUNJLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0LCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXJpb0lucHV0Q29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tudW1iZXJdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG1pbmltdW06IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG1heGltdW06IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxEaWdpdHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgc2lyaW9JbnB1dDogU2lyaW9JbnB1dENvbXBvbmVudCkge1xyXG5cclxuICAgIGNvbnN0IGZvcm1hdE51bWJlciA9ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB8IHN0cmluZyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgJiYgdGhpcy5kZWNpbWFsRGlnaXRzICE9IG51bGwgJiYgdGhpcy5kZWNpbWFsRGlnaXRzID49IDApIHtcclxuICAgICAgICBjb25zdCBmYWN0b3IgPSBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsRGlnaXRzKTtcclxuICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgKiBmYWN0b3IpIC8gZmFjdG9yO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKHRoaXMuZGVjaW1hbERpZ2l0cyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmaXJzdFdyaXRlID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB3cml0ZVZhbHVlID0gdGhpcy5zaXJpb0lucHV0LndyaXRlVmFsdWUuYmluZCh0aGlzLnNpcmlvSW5wdXQpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9JbnB1dC53cml0ZVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlOiBhbnksIGV2ZW50PzogYm9vbGVhbikge1xyXG4gICAgICBpZiAoZmlyc3RXcml0ZSkge1xyXG4gICAgICAgIGZpcnN0V3JpdGUgPSBmYWxzZTtcclxuICAgICAgICB2YWx1ZSA9IGZvcm1hdE51bWJlcih2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgd3JpdGVWYWx1ZSh2YWx1ZSwgZXZlbnQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjb2VyY2VWYWx1ZSA9ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB8IG51bGwgPT4ge1xyXG5cclxuICAgICAgY29uc3Qgb3JpZ2luYWwgPSB2YWx1ZTtcclxuXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiB0aGlzLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1pbmltdW0gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbmltdW0pIHtcclxuICAgICAgICAgIHZhbHVlID0gdGhpcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWF4aW11bSAhPT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4aW11bSkge1xyXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLm1heGltdW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3JpZ2luYWwgIT0gdmFsdWUgfHwgKHRoaXMuZGVjaW1hbERpZ2l0cyAhPSBudWxsICYmIHRoaXMuZGVjaW1hbERpZ2l0cyA+PSAwKSkge1xyXG4gICAgICAgICAgd3JpdGVWYWx1ZShmb3JtYXROdW1iZXIodmFsdWUpLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlZ2lzdGVyT25DaGFuZ2UgPSB0aGlzLnNpcmlvSW5wdXQucmVnaXN0ZXJPbkNoYW5nZS5iaW5kKHRoaXMuc2lyaW9JbnB1dCk7XHJcblxyXG4gICAgdGhpcy5zaXJpb0lucHV0LnJlZ2lzdGVyT25DaGFuZ2UgPSBmdW5jdGlvbiAoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbiAodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGZuKGNvZXJjZVZhbHVlKHZhbHVlVG9TdG9yZSh2YWx1ZSkpKTsgICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnNpcmlvSW5wdXQuc2lyaW9JbnB1dC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGUgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xyXG4gICAgICBpZiAoZS5rZXkgPT09ICcuJ1xyXG4gICAgICAgIHx8IChlLmtleSA9PT0gJywnICYmICF0aGlzLmFjY2VwdERlY2ltYWwoKSlcclxuICAgICAgICB8fCAoZS5rZXkgPT09ICctJyAmJiAhdGhpcy5hY2NlcHRTaWduKCkpKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdwYXN0ZScsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgZSA9IGV2ZW50IGFzIENsaXBib2FyZEV2ZW50O1xyXG4gICAgICBjb25zdCB0ZXh0ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgfHwgJyc7XHJcbiAgICAgIGlmICh0ZXh0LmluY2x1ZGVzKCcuJylcclxuICAgICAgICB8fCAodGV4dC5pbmNsdWRlcygnLCcpICYmICF0aGlzLmFjY2VwdERlY2ltYWwoKSlcclxuICAgICAgICB8fCAodGV4dC5pbmNsdWRlcygnLScpICYmICF0aGlzLmFjY2VwdFNpZ24oKSkpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY2NlcHRTaWduKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubWluaW11bSAhPT0gbnVsbCAmJiB0aGlzLm1pbmltdW0gPj0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWNjZXB0RGVjaW1hbCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmRlY2ltYWxEaWdpdHMgIT09IG51bGwgJiYgdGhpcy5kZWNpbWFsRGlnaXRzID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gIFxyXG59XHJcblxyXG5mdW5jdGlvbiB2YWx1ZVRvU3RvcmUodmFsdWU6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xyXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGlmICh2YWx1ZS50cmltKCkgPT09ICcnKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgaWYgKGlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtZXJpY1ZhbHVlO1xyXG4gIH1cclxuICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICByZXR1cm4gdmFsdWUgYXMgbnVtYmVyO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
|