@ng-nest/ui 18.0.8 → 18.0.10
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/alert/alert.component.d.ts +3 -3
- package/auto-complete/auto-complete-portal.component.d.ts +6 -9
- package/auto-complete/auto-complete.component.d.ts +1 -0
- package/cascade/cascade-portal.component.d.ts +7 -9
- package/cascade/cascade.component.d.ts +1 -9
- package/cascade/cascade.property.d.ts +5 -2
- package/checkbox/checkbox.property.d.ts +10 -98
- package/color-picker/color-picker-portal.component.d.ts +6 -9
- package/core/functions/convert.d.ts +5 -0
- package/core/util/public-api.d.ts +1 -0
- package/core/util/sleep.d.ts +5 -0
- package/date-picker/date-picker-portal.component.d.ts +5 -6
- package/date-picker/date-picker.property.d.ts +1 -31
- package/date-picker/date-range-portal.component.d.ts +5 -6
- package/dialog/dialog.component.d.ts +4 -3
- package/dropdown/dropdown-portal.component.d.ts +5 -7
- package/esm2022/alert/alert.component.mjs +13 -10
- package/esm2022/auto-complete/auto-complete-portal.component.mjs +17 -10
- package/esm2022/auto-complete/auto-complete.component.mjs +7 -4
- package/esm2022/back-top/back-top.component.mjs +4 -2
- package/esm2022/cascade/cascade-portal.component.mjs +20 -11
- package/esm2022/cascade/cascade.component.mjs +5 -3
- package/esm2022/cascade/cascade.property.mjs +2 -2
- package/esm2022/checkbox/checkbox.property.mjs +3 -43
- package/esm2022/color-picker/color-picker-portal.component.mjs +17 -10
- package/esm2022/color-picker/color-picker.component.mjs +3 -3
- package/esm2022/color-picker/color-picker.property.mjs +3 -3
- package/esm2022/core/functions/convert.mjs +15 -1
- package/esm2022/core/util/public-api.mjs +2 -1
- package/esm2022/core/util/sleep.mjs +8 -0
- package/esm2022/date-picker/date-picker-portal.component.mjs +17 -6
- package/esm2022/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/date-picker/date-picker.property.mjs +2 -17
- package/esm2022/date-picker/date-range-portal.component.mjs +17 -6
- package/esm2022/date-picker/date-range.component.mjs +3 -3
- package/esm2022/dialog/dialog.component.mjs +23 -18
- package/esm2022/dropdown/dropdown-portal.component.mjs +17 -8
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/find/find.component.mjs +15 -8
- package/esm2022/find/find.property.mjs +7 -57
- package/esm2022/form/form.component.mjs +3 -3
- package/esm2022/form/form.property.mjs +1 -1
- package/esm2022/highlight/highlight.component.mjs +3 -3
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/image/image.component.mjs +3 -3
- package/esm2022/input/input.component.mjs +3 -3
- package/esm2022/input-number/input-number.component.mjs +3 -3
- package/esm2022/input-number/input-number.property.mjs +3 -23
- package/esm2022/loading/loading.component.mjs +3 -3
- package/esm2022/loading/loading.property.mjs +5 -5
- package/esm2022/radio/radio.property.mjs +3 -53
- package/esm2022/rate/rate.property.mjs +3 -58
- package/esm2022/select/select-portal.component.mjs +17 -10
- package/esm2022/select/select.component.mjs +23 -5
- package/esm2022/select/select.property.mjs +2 -2
- package/esm2022/slider-select/slider-select.property.mjs +3 -58
- package/esm2022/switch/switch.property.mjs +3 -58
- package/esm2022/table/table-body.component.mjs +5 -4
- package/esm2022/table/table.component.mjs +3 -3
- package/esm2022/table/table.property.mjs +14 -4
- package/esm2022/textarea/textarea.property.mjs +3 -38
- package/esm2022/time-picker/time-picker-portal.component.mjs +17 -6
- package/esm2022/time-picker/time-picker.component.mjs +3 -3
- package/esm2022/time-picker/time-picker.property.mjs +3 -3
- package/esm2022/transfer/transfer.component.mjs +3 -3
- package/esm2022/tree/tree-node.component.mjs +10 -2
- package/esm2022/tree/tree.component.mjs +11 -9
- package/esm2022/tree/tree.property.mjs +1 -1
- package/esm2022/tree/tree.service.mjs +28 -4
- package/esm2022/tree-select/tree-select-portal.component.mjs +17 -6
- package/esm2022/tree-select/tree-select.component.mjs +20 -4
- package/fesm2022/ng-nest-ui-alert.mjs +12 -9
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +21 -11
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +3 -1
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +24 -13
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +2 -42
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +20 -13
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +23 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +36 -29
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +22 -17
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +19 -10
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +20 -63
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +2 -2
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +2 -2
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +2 -2
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +4 -24
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +2 -2
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +6 -6
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +2 -52
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +2 -57
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +39 -14
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +2 -57
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +2 -57
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +19 -8
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +2 -37
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +20 -9
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +2 -2
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +35 -8
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +46 -12
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/find/find.component.d.ts +2 -0
- package/find/find.property.d.ts +20 -97
- package/form/form.property.d.ts +13 -6
- package/input-number/input-number.property.d.ts +4 -56
- package/loading/loading.property.d.ts +4 -4
- package/package.json +124 -124
- package/radio/radio.property.d.ts +10 -118
- package/rate/rate.property.d.ts +16 -121
- package/select/select-portal.component.d.ts +6 -9
- package/select/select.component.d.ts +5 -1
- package/slider-select/slider-select.property.d.ts +6 -113
- package/switch/switch.property.d.ts +2 -117
- package/table/table-body.component.d.ts +1 -1
- package/table/table.property.d.ts +13 -3
- package/textarea/textarea.property.d.ts +10 -45
- package/time-picker/time-picker-portal.component.d.ts +5 -6
- package/time-picker/time-picker.property.d.ts +1 -2
- package/tree/tree.component.d.ts +2 -3
- package/tree/tree.property.d.ts +1 -1
- package/tree/tree.service.d.ts +1 -1
- package/tree-select/tree-select-portal.component.d.ts +5 -6
- package/tree-select/tree-select.component.d.ts +7 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener, input, output, computed, viewChild, signal, inject, model } from '@angular/core';
|
|
1
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener, input, output, computed, viewChild, signal, inject, model, DestroyRef } from '@angular/core';
|
|
2
2
|
import { XDateRangePortalPrefix } from './date-picker.property';
|
|
3
3
|
import { XIsEmpty, XConnectBaseAnimation, XAddMonths, XAddYears, XIsNull, XIsArray, XIsNumber, XIsString, XAddDays } from '@ng-nest/ui/core';
|
|
4
4
|
import { map } from 'rxjs/operators';
|
|
@@ -50,6 +50,8 @@ export class XDateRangePortalComponent {
|
|
|
50
50
|
this.timeModel = signal(null);
|
|
51
51
|
this.timeHover = signal(false);
|
|
52
52
|
this.nodeClickCount = signal(0);
|
|
53
|
+
this.destroy = signal(false);
|
|
54
|
+
this.destroyRef = inject(DestroyRef);
|
|
53
55
|
this.isDatePicker = computed(() => {
|
|
54
56
|
return ['date', 'quarter', 'week', 'month', 'year'].includes(this.type());
|
|
55
57
|
});
|
|
@@ -71,11 +73,20 @@ export class XDateRangePortalComponent {
|
|
|
71
73
|
get getPlacement() {
|
|
72
74
|
return this.placement();
|
|
73
75
|
}
|
|
74
|
-
done(
|
|
75
|
-
|
|
76
|
+
done() {
|
|
77
|
+
if (this.destroy())
|
|
78
|
+
return;
|
|
79
|
+
this.animating.emit(false);
|
|
80
|
+
}
|
|
81
|
+
start() {
|
|
82
|
+
if (this.destroy())
|
|
83
|
+
return;
|
|
84
|
+
this.animating.emit(true);
|
|
76
85
|
}
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
ngOnInit() {
|
|
87
|
+
this.destroyRef.onDestroy(() => {
|
|
88
|
+
this.destroy.set(true);
|
|
89
|
+
});
|
|
79
90
|
}
|
|
80
91
|
ngAfterViewInit() {
|
|
81
92
|
this.init();
|
|
@@ -335,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
335
346
|
type: HostListener,
|
|
336
347
|
args: ['@x-connect-base-animation.start', ['$event']]
|
|
337
348
|
}] } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFtQixLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQTZCLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBd0J0RCxNQUFNLE9BQU8seUJBQXlCO0lBdEJ0QztRQWlDRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUIsZ0JBQVcsR0FBRyxTQUFTLENBQXNFLGFBQWEsQ0FBQyxDQUFDO1FBQzVHLGNBQVMsR0FBRyxTQUFTLENBQXNFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hHLG9CQUFlLEdBQUcsU0FBUyxDQUE0QixpQkFBaUIsQ0FBQyxDQUFDO1FBRTFFLFVBQUssR0FBRyxLQUFLLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFDeEMsU0FBSSxHQUFHLEtBQUssQ0FBa0IsTUFBTSxDQUFDLENBQUM7UUFDdEMsV0FBTSxHQUFHLEtBQUssQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxLQUFLLEVBQWEsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLEtBQUssRUFBMkIsQ0FBQztRQUNoRCxpQkFBWSxHQUFHLEtBQUssRUFBMkIsQ0FBQztRQUNoRCxlQUFVLEdBQUcsS0FBSyxDQUFrQixPQUFPLENBQUMsQ0FBQztRQUU3QyxjQUFTLEdBQUcsTUFBTSxFQUFXLENBQUM7UUFDOUIsY0FBUyxHQUFHLE1BQU0sRUFBcUMsQ0FBQztRQUN4RCxxQkFBZ0IsR0FBRyxNQUFNLEVBQWtFLENBQUM7UUFDNUYsbUJBQWMsR0FBRyxNQUFNLEVBQWtFLENBQUM7UUFFMUYsWUFBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0IsVUFBSyxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUNsQyxlQUFVLEdBQUcsTUFBTSxDQUFjLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxNQUFNLENBQWMsSUFBSSxDQUFDLENBQUM7UUFDckMsY0FBUyxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDeEMsaUJBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhELFdBQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQTZCLENBQUMsQ0FBQyxFQUFFO1lBQzFGLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtTQUMvQixDQUFDLENBQUM7UUFDSCxTQUFJLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUN0QyxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNCLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUVILGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFHLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxDQUNMLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztvQkFDbkQsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO29CQUN2RCxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FDeEQsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztLQXFQSjtJQXhUQyxJQUFxRCxZQUFZO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDMkQsSUFBSSxDQUFDLEtBQTBCO1FBQ3pGLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDNEQsS0FBSyxDQUFDLEtBQTBCO1FBQzNGLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUE2REQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFhLEVBQUUsTUFBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsT0FBTyxTQUFTLENBQUMsT0FBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxPQUFPLFNBQVMsQ0FBQyxPQUFRLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxVQUFVLENBQUMsT0FBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWU7UUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssTUFBTTtZQUFFLE9BQU87UUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFHLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUNELEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztnQkFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBVTtRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRyxDQUFDLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBRUQsT0FBTyxJQUFJLElBQUksQ0FDYixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBcUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVztRQUNuQixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVU7UUFDdkIsT0FBUSxJQUFJLENBQUMsTUFBTSxFQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO2FBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0YsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVcsRUFBRSxJQUFzQjtRQUM1QyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxJQUFzQjtRQUM3QyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQStCLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDL0MsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNwQixHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNqRSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNsQixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RyxLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM1QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBc0I7UUFDakMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7aUlBeFRVLHlCQUF5QjtxSEFBekIseUJBQXlCLHE5Q0FGekIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLG9YQ3JFdEMscTJWQTBSQSw2MVVEck9JLGdCQUFnQiwrSUFDaEIsUUFBUSw2Q0FDUixvQkFBb0IsMERBQ3BCLHFCQUFxQiwyREFDckIsb0JBQW9CLDBEQUNwQix1QkFBdUIsNERBQ3ZCLGlCQUFpQixzUkFDakIsZ0JBQWdCLHFEQUNoQixjQUFjLG1EQUNkLGdCQUFnQiwrRUFNTixDQUFDLHFCQUFxQixDQUFDOzsyRkFHeEIseUJBQXlCO2tCQXRCckMsU0FBUzsrQkFDRSxHQUFHLHNCQUFzQixFQUFFLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1Isb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ2pCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUN4QixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7OEJBR2lCLFlBQVk7c0JBQWhFLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUdvQixJQUFJO3NCQUEvRCxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUdHLEtBQUs7c0JBQWpFLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgdmlld0NoaWxkLFxyXG4gIHNpZ25hbCxcclxuICBpbmplY3QsXHJcbiAgbW9kZWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYRGF0ZVJhbmdlUG9ydGFsUHJlZml4LFxyXG4gIFhEYXRlUGlja2VyVHlwZSxcclxuICBYRGF0ZUNlbGwsXHJcbiAgWERhdGVSYW5nZVByZXNldCxcclxuICBYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZSxcclxuICBYRGF0ZVBpY2tlckRpc2FibGVkVGltZVxyXG59IGZyb20gJy4vZGF0ZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhDb25uZWN0QmFzZUFuaW1hdGlvbixcclxuICBYUG9zaXRpb25Ub3BCb3R0b20sXHJcbiAgWEFkZE1vbnRocyxcclxuICBYQWRkWWVhcnMsXHJcbiAgWElzTnVsbCxcclxuICBYVGVtcGxhdGUsXHJcbiAgWElzQXJyYXksXHJcbiAgWElzTnVtYmVyLFxyXG4gIFhJc1N0cmluZyxcclxuICBYQWRkRGF5c1xyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4bkRhdGVQaWNrZXIsIHpoX0NOIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IFhQaWNrZXJNb250aENvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLW1vbnRoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhQaWNrZXJZZWFyQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXIteWVhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYUGlja2VyRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFRpbWVQaWNrZXJGcmFtZUNvbXBvbmVudCwgWFRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IFhQaWNrZXJRdWFydGVyQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItcXVhcnRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgWExpbmtDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9saW5rJztcclxuaW1wb3J0IHsgWE91dGxldERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQb3J0YWxQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIFhQaWNrZXJEYXRlQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlck1vbnRoQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlclllYXJDb21wb25lbnQsXHJcbiAgICBYUGlja2VyUXVhcnRlckNvbXBvbmVudCxcclxuICAgIFhUaW1lUGlja2VyTW9kdWxlLFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFhMaW5rQ29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcG9ydGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1hDb25uZWN0QmFzZUFuaW1hdGlvbl0sXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQEhvc3RCaW5kaW5nKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uJykgcHVibGljIGdldCBnZXRQbGFjZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wbGFjZW1lbnQoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5kb25lJywgWyckZXZlbnQnXSkgZG9uZShldmVudDogeyB0b1N0YXRlOiBzdHJpbmcgfSkge1xyXG4gICAgZXZlbnQudG9TdGF0ZSAhPT0gJ3ZvaWQnICYmIHRoaXMuYW5pbWF0aW5nLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uLnN0YXJ0JywgWyckZXZlbnQnXSkgc3RhcnQoZXZlbnQ6IHsgdG9TdGF0ZTogc3RyaW5nIH0pIHtcclxuICAgIGV2ZW50LnRvU3RhdGUgIT09ICd2b2lkJyAmJiB0aGlzLmFuaW1hdGluZy5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gIGxvd2VyQ2FzZVBpcGUgPSBpbmplY3QoTG93ZXJDYXNlUGlwZSk7XHJcbiAgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG5cclxuICBzdGFydFBpY2tlciA9IHZpZXdDaGlsZDxYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50Pignc3RhcnRQaWNrZXInKTtcclxuICBlbmRQaWNrZXIgPSB2aWV3Q2hpbGQ8WFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudD4oJ2VuZFBpY2tlcicpO1xyXG4gIHRpbWVQaWNrZXJGcmFtZSA9IHZpZXdDaGlsZDxYVGltZVBpY2tlckZyYW1lQ29tcG9uZW50PigndGltZVBpY2tlckZyYW1lJyk7XHJcblxyXG4gIHZhbHVlID0gbW9kZWw8KG51bWJlciB8IG51bGwpW10+KFtdKTtcclxuICBwbGFjZW1lbnQgPSBpbnB1dDxYUG9zaXRpb25Ub3BCb3R0b20+KCk7XHJcbiAgdHlwZSA9IG1vZGVsPFhEYXRlUGlja2VyVHlwZT4oJ2RhdGUnKTtcclxuICBwcmVzZXQgPSBpbnB1dDxYRGF0ZVJhbmdlUHJlc2V0W10+KFtdKTtcclxuICBleHRyYUZvb3RlciA9IGlucHV0PFhUZW1wbGF0ZT4oKTtcclxuICBkaXNhYmxlZERhdGUgPSBpbnB1dDxYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZT4oKTtcclxuICBkaXNhYmxlZFRpbWUgPSBpbnB1dDxYRGF0ZVBpY2tlckRpc2FibGVkVGltZT4oKTtcclxuICBhY3RpdmVUeXBlID0gaW5wdXQ8J3N0YXJ0JyB8ICdlbmQnPignc3RhcnQnKTtcclxuXHJcbiAgYW5pbWF0aW5nID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcbiAgbm9kZUNsaWNrID0gb3V0cHV0PHsgZGF0ZTogRGF0ZVtdOyBjbG9zZT86IGJvb2xlYW4gfT4oKTtcclxuICBzdGFydE5vZGVDaGFuZ2VkID0gb3V0cHV0PHsgZGF0ZTogRGF0ZSB8IG51bGw7IGNsb3NlPzogYm9vbGVhbjsgaXNEYXRlUGlja2VyPzogYm9vbGVhbiB9PigpO1xyXG4gIGVuZE5vZGVDaGFuZ2VkID0gb3V0cHV0PHsgZGF0ZTogRGF0ZSB8IG51bGw7IGNsb3NlPzogYm9vbGVhbjsgaXNEYXRlUGlja2VyPzogYm9vbGVhbiB9PigpO1xyXG5cclxuICBkaXNwbGF5ID0gc2lnbmFsKG5ldyBEYXRlKCkpO1xyXG4gIG1vZGVsID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcclxuICBzdGFydE1vZGVsID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcclxuICBlbmRNb2RlbCA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgc3RhcnRZZWFyID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xyXG4gIHN0YXJ0RGlzcGxheSA9IHNpZ25hbChuZXcgRGF0ZSgpKTtcclxuICBlbmREaXNwbGF5ID0gc2lnbmFsKFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXkoKSwgMSkpO1xyXG5cclxuICBsb2NhbGUgPSB0b1NpZ25hbCh0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUobWFwKCh4KSA9PiB4LmRhdGVQaWNrZXIgYXMgWEkxOG5EYXRlUGlja2VyKSksIHtcclxuICAgIGluaXRpYWxWYWx1ZTogemhfQ04uZGF0ZVBpY2tlclxyXG4gIH0pO1xyXG4gIHRpbWUgPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XHJcbiAgdGltZURpc3BsYXkgPSBzaWduYWwobmV3IERhdGUoKSk7XHJcbiAgdGltZU1vZGVsID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcclxuICB0aW1lSG92ZXIgPSBzaWduYWwoZmFsc2UpO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gc2lnbmFsKDApO1xyXG5cclxuICBpc0RhdGVQaWNrZXIgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKCkpO1xyXG4gIH0pO1xyXG5cclxuICBzdXJlRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUoKSAmJiAhWElzRW1wdHkodGhpcy50aW1lKCkpKSB7XHJcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUodGhpcy50aW1lKCkhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lKCk/LnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lKCk/LnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZSgpPy5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlKCkpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoW251bGwsIG51bGxdKTtcclxuICAgICAgdGhpcy5tb2RlbC5zZXQodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwuc2V0KHRoaXMubW9kZWwoKSk7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5tb2RlbCgpISwgdGhpcy5pc0RhdGVQaWNrZXIoKSA/IDEgOiAwKSk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheSh0aGlzLm1vZGVsKCkhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE1vZGVsQnlUeXBlKGJ5TW9kZWw6IERhdGUsIG51bTogbnVtYmVyID0gMSkge1xyXG4gICAgaWYgKFsnbW9udGgnLCAncXVhcnRlciddLmluY2x1ZGVzKHRoaXMudHlwZSgpKSkge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIDEwICogbnVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYQWRkTW9udGhzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3dlZWsnKSByZXR1cm47XHJcbiAgICB0aGlzLnN0YXJ0UGlja2VyKCk/LnNldERhdGVzU3RhdGUoY2VsbCk7XHJcbiAgICB0aGlzLmVuZFBpY2tlcigpPy5zZXREYXRlc1N0YXRlKGNlbGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdCgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFjdGl2ZVR5cGUoKSB8fCAnc3RhcnQnO1xyXG4gICAgdGhpcy50aW1lSG92ZXIuc2V0KCF0aGlzLnZhbHVlKCkuZXZlcnkoKHgpID0+IHggPT09IG51bGwpKTtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbC5zZXQobmV3IERhdGUodGhpcy52YWx1ZSgpWzBdISkpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheS5zZXQodGhpcy5zdGFydE1vZGVsKCkhKTtcclxuICAgICAgdGhpcy5lbmRNb2RlbC5zZXQodGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLnN0YXJ0TW9kZWwoKSEsIHRoaXMuaXNEYXRlUGlja2VyKCkgPyAxIDogMCkpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuZW5kTW9kZWwoKSEpO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbC5zZXQodGhpcy5zdGFydE1vZGVsKCkpO1xyXG4gICAgICB0aGlzLnRpbWVEaXNwbGF5LnNldCh0aGlzLnN0YXJ0RGlzcGxheSgpKTtcclxuICAgICAgdGhpcy50aW1lLnNldCh0aGlzLnN0YXJ0TW9kZWwoKSEuZ2V0VGltZSgpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5lbmRNb2RlbC5zZXQobmV3IERhdGUodGhpcy52YWx1ZSgpWzFdISkpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuZW5kTW9kZWwoKSEpO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5lbmRNb2RlbCgpISwgdGhpcy5pc0RhdGVQaWNrZXIoKSA/IC0xIDogMCkpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheS5zZXQodGhpcy5zdGFydE1vZGVsKCkhKTtcclxuICAgICAgdGhpcy50aW1lTW9kZWwuc2V0KHRoaXMuZW5kTW9kZWwoKSk7XHJcbiAgICAgIHRoaXMudGltZURpc3BsYXkuc2V0KHRoaXMuZW5kRGlzcGxheSgpKTtcclxuICAgICAgdGhpcy50aW1lLnNldCh0aGlzLmVuZE1vZGVsKCkhLmdldFRpbWUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheS5zZXQobmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5LnNldCh0aGlzLmRpc3BsYXkoKSk7XHJcbiAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5kaXNwbGF5KCksIHRoaXMuaXNEYXRlUGlja2VyKCkgPyAxIDogMCkpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLm5vZGVDbGlja0NvdW50LnVwZGF0ZSgoeCkgPT4geCArIDEpO1xyXG4gICAgbGV0IGNsb3NlID0gdGhpcy5ub2RlQ2xpY2tDb3VudCgpID09PSAyO1xyXG4gICAgbGV0IHRpbWUgPSB0aGlzLnNldERhdGVDaGFuZ2VUaW1lKGRhdGUpO1xyXG4gICAgY29uc3QgaXNEYXRlUGlja2VyID0gdGhpcy5pc0RhdGVQaWNrZXIoKTtcclxuICAgIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVR5cGUoKSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnZhbHVlKClbMF0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZSgpWzFdKSAmJiB0aW1lID4gdGhpcy52YWx1ZSgpWzFdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50KCkgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQudXBkYXRlKCh4KSA9PiB4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRNb2RlbC5zZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgIHhbMV0gPSBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWlzRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgdGhpcy50aW1lSG92ZXIuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZTogbnVsbCwgY2xvc2UsIGlzRGF0ZVBpY2tlciB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZUNoYW5nZWQuZW1pdCh7IGRhdGUsIGNsb3NlLCBpc0RhdGVQaWNrZXIgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVHlwZSgpID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnZhbHVlKClbMV0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZSgpWzBdKSAmJiB0aW1lIDwgdGhpcy52YWx1ZSgpWzBdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50KCkgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQudXBkYXRlKCh4KSA9PiB4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydE1vZGVsLnNldChudWxsKTtcclxuICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeFswXSA9IG51bGw7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWVIb3Zlci5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0Tm9kZUNoYW5nZWQuZW1pdCh7IGRhdGU6IG51bGwsIGNsb3NlLCBpc0RhdGVQaWNrZXIgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZSwgY2xvc2UsIGlzRGF0ZVBpY2tlciB9KTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52YWx1ZSgpLmluY2x1ZGVzKG51bGwpICYmIGlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogdGhpcy52YWx1ZSgpLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKSwgY2xvc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlQ2hhbmdlVGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVQaWNrZXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgdGltZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGlmICh0aGlzLnRpbWUoKSkge1xyXG4gICAgICAgIHRpbWUgPSBuZXcgRGF0ZSh0aGlzLnRpbWUoKSEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGltZS5zZXQodGltZS5nZXRUaW1lKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChbJ2RhdGUtaG91cicsICdkYXRlLW1pbnV0ZSddLmluY2x1ZGVzKHRoaXMudHlwZSgpKSkge1xyXG4gICAgICAgIHRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICdkYXRlLWhvdXInKSB7XHJcbiAgICAgICAgdGltZS5zZXRNaW51dGVzKDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgICB0aW1lLmdldEhvdXJzKCksXHJcbiAgICAgICAgdGltZS5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgdGltZS5nZXRTZWNvbmRzKClcclxuICAgICAgKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlLnNldCh0eXBlKTtcclxuICB9XHJcblxyXG4gIHllYXJTdGFydENoYW5nZShudW1iZXI6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGFydFllYXIuc2V0KG51bWJlcik7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXIobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhci51cGRhdGUoKHgpID0+IHghICsgbnVtKTtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcih0aGlzLnN0YXJ0WWVhcigpISk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGVNb250aChkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gKHRoaXMubG9jYWxlKCkgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZS5zZXQodGltZS5nZXRUaW1lKCkpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGltZU1vZGVsKCkpKSB7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsLnNldChuZXcgRGF0ZSgpKTtcclxuICAgIH1cclxuICAgIHRoaXMudGltZU1vZGVsKCk/LnNldEhvdXJzKHRpbWUuZ2V0SG91cnMoKSk7XHJcbiAgICB0aGlzLnRpbWVNb2RlbCgpPy5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsKCk/LnNldFNlY29uZHModGltZS5nZXRTZWNvbmRzKCkpO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlKHRoaXMudGltZU1vZGVsKCkhKTtcclxuICB9XHJcblxyXG4gIHN1cmVUaW1lKCkge1xyXG4gICAgaWYgKHRoaXMuc3VyZURpc2FibGVkKCkpIHJldHVybjtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUoKTtcclxuICAgIGlmIChYSXNOdWxsKHN0YXJ0KSAmJiAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZS5zZXQobnVsbCk7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZTogbmV3IERhdGUoZW5kISksIGNsb3NlOiBmYWxzZSwgaXNEYXRlUGlja2VyOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZS5zZXQobnVsbCk7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5zdGFydE5vZGVDaGFuZ2VkLmVtaXQoeyBkYXRlOiBuZXcgRGF0ZShzdGFydCEpLCBjbG9zZTogZmFsc2UsIGlzRGF0ZVBpY2tlcjogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoeyBkYXRlOiB0aGlzLnZhbHVlKCkubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLCBjbG9zZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheS51cGRhdGUoKHgpID0+IFhBZGRZZWFycyh4LCBudW0pKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkudXBkYXRlKCh4KSA9PiBYQWRkWWVhcnMoeCwgbnVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aENoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5LnVwZGF0ZSgoeCkgPT4gWEFkZE1vbnRocyh4LCBudW0pKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkudXBkYXRlKCh4KSA9PiBYQWRkTW9udGhzKHgsIG51bSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmVzZXQodHlwZTogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJywgbnVtID0gMCkge1xyXG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgIG5vdyA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSk7XHJcbiAgICAgIGNvbnN0IHdlZWsgPSBub3cuZ2V0RGF5KCk7XHJcbiAgICAgIGNvbnN0IHdlZWtMaXN0ID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHdlZWtMaXN0LmluZGV4T2Yod2Vlayk7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgIGRhdGU6IFtYQWRkRGF5cyhub3csIHdlZWtMaXN0WzBdIC0gKGluZGV4ICsgMSkgKyBudW0gKiA3KSwgWEFkZERheXMobm93LCB3ZWVrTGlzdFs2XSAtIChpbmRleCArIDEpICsgbnVtICogNyldLFxyXG4gICAgICAgIGNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gWEFkZE1vbnRocyhub3csIG51bSk7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUobW9udGguZ2V0RnVsbFllYXIoKSwgbW9udGguZ2V0TW9udGgoKSwgMSk7XHJcbiAgICAgIGNvbnN0IGxhc3REYXkgPSBYQWRkRGF5cyhYQWRkTW9udGhzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogW2ZpcnN0RGF5LCBsYXN0RGF5XSwgY2xvc2U6IHRydWUgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgeWVhciA9IFhBZGRZZWFycyhub3csIG51bSk7XHJcbiAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgIGxldCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZFllYXJzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogW2ZpcnN0RGF5LCBsYXN0RGF5XSwgY2xvc2U6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldEZ1bmMoaXRlbTogWERhdGVSYW5nZVByZXNldCkge1xyXG4gICAgbGV0IHZhbHVlID0gaXRlbS5mdW5jKCk7XHJcbiAgICBpZiAoWElzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaWYgKFhJc051bWJlcih2YWx1ZVswXSkgfHwgWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh7IGRhdGU6IHZhbHVlLCBjbG9zZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwge3sgdHlwZSgpIH19XCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgQHN3aXRjaCAodHlwZSgpKSB7XHJcbiAgICAgIEBjYXNlICgnZGF0ZScpIHtcclxuICAgICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbmV4dE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd3ZWVrJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICB0eXBlPVwid2Vla1wiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtuZXh0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgdHlwZT1cIndlZWtcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtsYXN0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItbW9udGg+XHJcbiAgICAgICAgPHgtcGlja2VyLW1vbnRoXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWUoKVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGUoKVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd5ZWFyJykge1xyXG4gICAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISDptbTpzcycsIHRpbWVUeXBlOiAndGltZScgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISCcsIHRpbWVUeXBlOiAnaG91cicgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tJywgdGltZVR5cGU6ICdtaW51dGUnIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoaXNEYXRlUGlja2VyKCkpIHtcclxuICAgIEBpZiAoZXh0cmFGb290ZXIoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1leHRyYS1mb290ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZXh0cmFGb290ZXIoKVwiPnt7IGV4dHJhRm9vdGVyKCkgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlc2V0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGF0ZVRpbWVIb3VyTWludXRlVHBsIGxldC10aW1lRm9ybWF0PVwidGltZUZvcm1hdFwiIGxldC10aW1lVHlwZT1cInRpbWVUeXBlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZGF0ZVwiPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XT1cImFjdGl2ZVR5cGUoKSA9PT0gJ3N0YXJ0J1wiXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXT1cImFjdGl2ZVR5cGUoKSA9PT0gJ2VuZCdcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwidGltZURpc3BsYXlcIlxyXG4gICAgICAgIFsobW9kZWwpXT1cInRpbWVNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlSG92ZXJdPVwidGltZUhvdmVyKClcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC10aW1lLWxhYmVsXCI+XHJcbiAgICAgICAge3sgdGltZSgpIHwgZGF0ZTogdGltZUZvcm1hdCB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHgtdGltZS1waWNrZXItZnJhbWVcclxuICAgICAgICAjdGltZVBpY2tlckZyYW1lXHJcbiAgICAgICAgW3R5cGVdPVwidGltZVR5cGVcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ0aW1lKClcIlxyXG4gICAgICAgIChub2RlRW1pdCk9XCJzZWxlY3RUaW1lKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVQYXJhbV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVdPVwiZGlzYWJsZWRUaW1lKClcIlxyXG4gICAgICAgIFtkZWZhdWx0Tm93XT1cImZhbHNlXCJcclxuICAgICAgPjwveC10aW1lLXBpY2tlci1mcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoIWlzRGF0ZVBpY2tlcigpICYmIGV4dHJhRm9vdGVyKCkpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlcigpXCI+e3sgZXh0cmFGb290ZXIoKSB9fTwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3Rlci1sZWZ0XCI+XHJcbiAgICAgIEBpZiAoIWlzRGF0ZVBpY2tlcigpKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIHRleHQgKGNsaWNrKT1cIiFzdXJlRGlzYWJsZWQoKSAmJiBzdXJlVGltZSgpXCIgc2l6ZT1cInNtYWxsXCIgW2Rpc2FibGVkXT1cInN1cmVEaXNhYmxlZCgpIVwiPnt7XHJcbiAgICAgIGxvY2FsZSgpLnN1cmVcclxuICAgIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlc2V0VHBsPlxyXG4gIEBpZiAocHJlc2V0KCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXByZXNldFwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIHByZXNldCgpOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgQHN3aXRjaCAoaXRlbS5pZCkge1xyXG4gICAgICAgICAgQGNhc2UgKCd0aGlzV2VlaycpIHtcclxuICAgICAgICAgICAgPHgtbGluayAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAwKVwiPnt7IGxvY2FsZSgpLnRoaXNXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ2xhc3RXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZSgpLmxhc3RXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ25leHRXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDEpXCI+e3sgbG9jYWxlKCkubmV4dFdlZWsgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgndGhpc01vbnRoJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAwKVwiPnt7IGxvY2FsZSgpLnRoaXNNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdsYXN0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZSgpLmxhc3RNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCduZXh0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDEpXCI+e3sgbG9jYWxlKCkubmV4dE1vbnRoIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ3RoaXNZZWFyJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDApXCI+e3sgbG9jYWxlKCkudGhpc1llYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbGFzdFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlKCkubGFzdFllYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbmV4dFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMSlcIj57eyBsb2NhbGUoKS5uZXh0WWVhciB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKCEhaXRlbS5mdW5jKSB7XHJcbiAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldEZ1bmMoaXRlbSlcIj57eyBpdGVtLmxhYmVsIH19PC94LWxpbms+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsc0JBQXNCLEVBTXZCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBRVAsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsUUFBUSxFQUNULE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBbUIsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FB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QUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekYs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QUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXLEVBQUUsSUFBc0I7UUFDNUMsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXLEVBQUUsSUFBc0I7UUFDN0MsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUErQixFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQy9DLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDcEIsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUcsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDNUIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDL0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRCxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXNCO1FBQ2pDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO2lJQW5VVSx5QkFBeUI7cUhBQXpCLHlCQUF5QixxOUNBRnpCLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxvWEN0RXRDLHEyVkEwUkEsNjFVRHBPSSxnQkFBZ0IsK0lBQ2hCLFFBQVEsNkNBQ1Isb0JBQW9CLDBEQUNwQixxQkFBcUIsMkRBQ3JCLG9CQUFvQiwwREFDcEIsdUJBQXVCLDREQUN2QixpQkFBaUIsc1JBQ2pCLGdCQUFnQixxREFDaEIsY0FBYyxtREFDZCxnQkFBZ0IsK0VBTU4sQ0FBQyxxQkFBcUIsQ0FBQzs7MkZBR3hCLHlCQUF5QjtrQkF0QnJDLFNBQVM7K0JBQ0UsR0FBRyxzQkFBc0IsRUFBRSxjQUN6QixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixRQUFRO3dCQUNSLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNqQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMscUJBQXFCLENBQUMsYUFDeEIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDOzhCQUdpQixZQUFZO3NCQUFoRSxXQUFXO3VCQUFDLDJCQUEyQjtnQkFHb0IsSUFBSTtzQkFBL0QsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxLQUFLO3NCQUFqRSxZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5wdXQsXHJcbiAgb3V0cHV0LFxyXG4gIGNvbXB1dGVkLFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWwsXHJcbiAgaW5qZWN0LFxyXG4gIG1vZGVsLFxyXG4gIERlc3Ryb3lSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYRGF0ZVJhbmdlUG9ydGFsUHJlZml4LFxyXG4gIFhEYXRlUGlja2VyVHlwZSxcclxuICBYRGF0ZUNlbGwsXHJcbiAgWERhdGVSYW5nZVByZXNldCxcclxuICBYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZSxcclxuICBYRGF0ZVBpY2tlckRpc2FibGVkVGltZVxyXG59IGZyb20gJy4vZGF0ZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhDb25uZWN0QmFzZUFuaW1hdGlvbixcclxuICBYUG9zaXRpb25Ub3BCb3R0b20sXHJcbiAgWEFkZE1vbnRocyxcclxuICBYQWRkWWVhcnMsXHJcbiAgWElzTnVsbCxcclxuICBYVGVtcGxhdGUsXHJcbiAgWElzQXJyYXksXHJcbiAgWElzTnVtYmVyLFxyXG4gIFhJc1N0cmluZyxcclxuICBYQWRkRGF5c1xyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4bkRhdGVQaWNrZXIsIHpoX0NOIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IFhQaWNrZXJNb250aENvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLW1vbnRoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhQaWNrZXJZZWFyQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXIteWVhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYUGlja2VyRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFRpbWVQaWNrZXJGcmFtZUNvbXBvbmVudCwgWFRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IFhQaWNrZXJRdWFydGVyQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItcXVhcnRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgWExpbmtDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9saW5rJztcclxuaW1wb3J0IHsgWE91dGxldERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQb3J0YWxQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIFhQaWNrZXJEYXRlQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlck1vbnRoQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlclllYXJDb21wb25lbnQsXHJcbiAgICBYUGlja2VyUXVhcnRlckNvbXBvbmVudCxcclxuICAgIFhUaW1lUGlja2VyTW9kdWxlLFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFhMaW5rQ29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcG9ydGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1hDb25uZWN0QmFzZUFuaW1hdGlvbl0sXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQEhvc3RCaW5kaW5nKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uJykgcHVibGljIGdldCBnZXRQbGFjZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wbGFjZW1lbnQoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5kb25lJywgWyckZXZlbnQnXSkgZG9uZSgpIHtcclxuICAgIGlmICh0aGlzLmRlc3Ryb3koKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hbmltYXRpbmcuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uc3RhcnQnLCBbJyRldmVudCddKSBzdGFydCgpIHtcclxuICAgIGlmICh0aGlzLmRlc3Ryb3koKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hbmltYXRpbmcuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICBsb3dlckNhc2VQaXBlID0gaW5qZWN0KExvd2VyQ2FzZVBpcGUpO1xyXG4gIGkxOG4gPSBpbmplY3QoWEkxOG5TZXJ2aWNlKTtcclxuXHJcbiAgc3RhcnRQaWNrZXIgPSB2aWV3Q2hpbGQ8WFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudD4oJ3N0YXJ0UGlja2VyJyk7XHJcbiAgZW5kUGlja2VyID0gdmlld0NoaWxkPFhQaWNrZXJEYXRlQ29tcG9uZW50IHwgWFBpY2tlck1vbnRoQ29tcG9uZW50IHwgWFBpY2tlclllYXJDb21wb25lbnQ+KCdlbmRQaWNrZXInKTtcclxuICB0aW1lUGlja2VyRnJhbWUgPSB2aWV3Q2hpbGQ8WFRpbWVQaWNrZXJGcmFtZUNvbXBvbmVudD4oJ3RpbWVQaWNrZXJGcmFtZScpO1xyXG5cclxuICB2YWx1ZSA9IG1vZGVsPChudW1iZXIgfCBudWxsKVtdPihbXSk7XHJcbiAgcGxhY2VtZW50ID0gaW5wdXQ8WFBvc2l0aW9uVG9wQm90dG9tPigpO1xyXG4gIHR5cGUgPSBtb2RlbDxYRGF0ZVBpY2tlclR5cGU+KCdkYXRlJyk7XHJcbiAgcHJlc2V0ID0gaW5wdXQ8WERhdGVSYW5nZVByZXNldFtdPihbXSk7XHJcbiAgZXh0cmFGb290ZXIgPSBpbnB1dDxYVGVtcGxhdGU+KCk7XHJcbiAgZGlzYWJsZWREYXRlID0gaW5wdXQ8WERhdGVQaWNrZXJEaXNhYmxlZERhdGU+KCk7XHJcbiAgZGlzYWJsZWRUaW1lID0gaW5wdXQ8WERhdGVQaWNrZXJEaXNhYmxlZFRpbWU+KCk7XHJcbiAgYWN0aXZlVHlwZSA9IGlucHV0PCdzdGFydCcgfCAnZW5kJz4oJ3N0YXJ0Jyk7XHJcblxyXG4gIGFuaW1hdGluZyA9IG91dHB1dDxib29sZWFuPigpO1xyXG4gIG5vZGVDbGljayA9IG91dHB1dDx7IGRhdGU6IERhdGVbXTsgY2xvc2U/OiBib29sZWFuIH0+KCk7XHJcbiAgc3RhcnROb2RlQ2hhbmdlZCA9IG91dHB1dDx7IGRhdGU6IERhdGUgfCBudWxsOyBjbG9zZT86IGJvb2xlYW47IGlzRGF0ZVBpY2tlcj86IGJvb2xlYW4gfT4oKTtcclxuICBlbmROb2RlQ2hhbmdlZCA9IG91dHB1dDx7IGRhdGU6IERhdGUgfCBudWxsOyBjbG9zZT86IGJvb2xlYW47IGlzRGF0ZVBpY2tlcj86IGJvb2xlYW4gfT4oKTtcclxuXHJcbiAgZGlzcGxheSA9IHNpZ25hbChuZXcgRGF0ZSgpKTtcclxuICBtb2RlbCA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgc3RhcnRNb2RlbCA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgZW5kTW9kZWwgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwpO1xyXG4gIHN0YXJ0WWVhciA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBzdGFydERpc3BsYXkgPSBzaWduYWwobmV3IERhdGUoKSk7XHJcbiAgZW5kRGlzcGxheSA9IHNpZ25hbChYQWRkTW9udGhzKHRoaXMuc3RhcnREaXNwbGF5KCksIDEpKTtcclxuXHJcbiAgbG9jYWxlID0gdG9TaWduYWwodGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKG1hcCgoeCkgPT4geC5kYXRlUGlja2VyIGFzIFhJMThuRGF0ZVBpY2tlcikpLCB7XHJcbiAgICBpbml0aWFsVmFsdWU6IHpoX0NOLmRhdGVQaWNrZXJcclxuICB9KTtcclxuICB0aW1lID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xyXG4gIHRpbWVEaXNwbGF5ID0gc2lnbmFsKG5ldyBEYXRlKCkpO1xyXG4gIHRpbWVNb2RlbCA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgdGltZUhvdmVyID0gc2lnbmFsKGZhbHNlKTtcclxuICBub2RlQ2xpY2tDb3VudCA9IHNpZ25hbCgwKTtcclxuXHJcbiAgZGVzdHJveSA9IHNpZ25hbChmYWxzZSk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuICBpc0RhdGVQaWNrZXIgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKCkpO1xyXG4gIH0pO1xyXG5cclxuICBzdXJlRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUoKSAmJiAhWElzRW1wdHkodGhpcy50aW1lKCkpKSB7XHJcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUodGhpcy50aW1lKCkhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lKCk/LnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lKCk/LnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZSgpPy5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcclxuICAgICAgdGhpcy5kZXN0cm95LnNldCh0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlKCkpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoW251bGwsIG51bGxdKTtcclxuICAgICAgdGhpcy5tb2RlbC5zZXQodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwuc2V0KHRoaXMubW9kZWwoKSk7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5tb2RlbCgpISwgdGhpcy5pc0RhdGVQaWNrZXIoKSA/IDEgOiAwKSk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheSh0aGlzLm1vZGVsKCkhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE1vZGVsQnlUeXBlKGJ5TW9kZWw6IERhdGUsIG51bTogbnVtYmVyID0gMSkge1xyXG4gICAgaWYgKFsnbW9udGgnLCAncXVhcnRlciddLmluY2x1ZGVzKHRoaXMudHlwZSgpKSkge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIDEwICogbnVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYQWRkTW9udGhzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3dlZWsnKSByZXR1cm47XHJcbiAgICB0aGlzLnN0YXJ0UGlja2VyKCk/LnNldERhdGVzU3RhdGUoY2VsbCk7XHJcbiAgICB0aGlzLmVuZFBpY2tlcigpPy5zZXREYXRlc1N0YXRlKGNlbGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdCgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFjdGl2ZVR5cGUoKSB8fCAnc3RhcnQnO1xyXG4gICAgdGhpcy50aW1lSG92ZXIuc2V0KCF0aGlzLnZhbHVlKCkuZXZlcnkoKHgpID0+IHggPT09IG51bGwpKTtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbC5zZXQobmV3IERhdGUodGhpcy52YWx1ZSgpWzBdISkpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheS5zZXQodGhpcy5zdGFydE1vZGVsKCkhKTtcclxuICAgICAgdGhpcy5lbmRNb2RlbC5zZXQodGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLnN0YXJ0TW9kZWwoKSEsIHRoaXMuaXNEYXRlUGlja2VyKCkgPyAxIDogMCkpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuZW5kTW9kZWwoKSEpO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbC5zZXQodGhpcy5zdGFydE1vZGVsKCkpO1xyXG4gICAgICB0aGlzLnRpbWVEaXNwbGF5LnNldCh0aGlzLnN0YXJ0RGlzcGxheSgpKTtcclxuICAgICAgdGhpcy50aW1lLnNldCh0aGlzLnN0YXJ0TW9kZWwoKSEuZ2V0VGltZSgpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5lbmRNb2RlbC5zZXQobmV3IERhdGUodGhpcy52YWx1ZSgpWzFdISkpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuZW5kTW9kZWwoKSEpO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5lbmRNb2RlbCgpISwgdGhpcy5pc0RhdGVQaWNrZXIoKSA/IC0xIDogMCkpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheS5zZXQodGhpcy5zdGFydE1vZGVsKCkhKTtcclxuICAgICAgdGhpcy50aW1lTW9kZWwuc2V0KHRoaXMuZW5kTW9kZWwoKSk7XHJcbiAgICAgIHRoaXMudGltZURpc3BsYXkuc2V0KHRoaXMuZW5kRGlzcGxheSgpKTtcclxuICAgICAgdGhpcy50aW1lLnNldCh0aGlzLmVuZE1vZGVsKCkhLmdldFRpbWUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheS5zZXQobmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5LnNldCh0aGlzLmRpc3BsYXkoKSk7XHJcbiAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5kaXNwbGF5KCksIHRoaXMuaXNEYXRlUGlja2VyKCkgPyAxIDogMCkpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLm5vZGVDbGlja0NvdW50LnVwZGF0ZSgoeCkgPT4geCArIDEpO1xyXG4gICAgbGV0IGNsb3NlID0gdGhpcy5ub2RlQ2xpY2tDb3VudCgpID09PSAyO1xyXG4gICAgbGV0IHRpbWUgPSB0aGlzLnNldERhdGVDaGFuZ2VUaW1lKGRhdGUpO1xyXG4gICAgY29uc3QgaXNEYXRlUGlja2VyID0gdGhpcy5pc0RhdGVQaWNrZXIoKTtcclxuICAgIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVR5cGUoKSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnZhbHVlKClbMF0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZSgpWzFdKSAmJiB0aW1lID4gdGhpcy52YWx1ZSgpWzFdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50KCkgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQudXBkYXRlKCh4KSA9PiB4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRNb2RlbC5zZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgIHhbMV0gPSBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWlzRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgdGhpcy50aW1lSG92ZXIuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZTogbnVsbCwgY2xvc2UsIGlzRGF0ZVBpY2tlciB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZUNoYW5nZWQuZW1pdCh7IGRhdGUsIGNsb3NlLCBpc0RhdGVQaWNrZXIgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVHlwZSgpID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnZhbHVlKClbMV0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZSgpWzBdKSAmJiB0aW1lIDwgdGhpcy52YWx1ZSgpWzBdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50KCkgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQudXBkYXRlKCh4KSA9PiB4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydE1vZGVsLnNldChudWxsKTtcclxuICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeFswXSA9IG51bGw7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWVIb3Zlci5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0Tm9kZUNoYW5nZWQuZW1pdCh7IGRhdGU6IG51bGwsIGNsb3NlLCBpc0RhdGVQaWNrZXIgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZSwgY2xvc2UsIGlzRGF0ZVBpY2tlciB9KTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52YWx1ZSgpLmluY2x1ZGVzKG51bGwpICYmIGlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogdGhpcy52YWx1ZSgpLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKSwgY2xvc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlQ2hhbmdlVGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVQaWNrZXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgdGltZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGlmICh0aGlzLnRpbWUoKSkge1xyXG4gICAgICAgIHRpbWUgPSBuZXcgRGF0ZSh0aGlzLnRpbWUoKSEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGltZS5zZXQodGltZS5nZXRUaW1lKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChbJ2RhdGUtaG91cicsICdkYXRlLW1pbnV0ZSddLmluY2x1ZGVzKHRoaXMudHlwZSgpKSkge1xyXG4gICAgICAgIHRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICdkYXRlLWhvdXInKSB7XHJcbiAgICAgICAgdGltZS5zZXRNaW51dGVzKDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgICB0aW1lLmdldEhvdXJzKCksXHJcbiAgICAgICAgdGltZS5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgdGltZS5nZXRTZWNvbmRzKClcclxuICAgICAgKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlLnNldCh0eXBlKTtcclxuICB9XHJcblxyXG4gIHllYXJTdGFydENoYW5nZShudW1iZXI6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGFydFllYXIuc2V0KG51bWJlcik7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXIobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhci51cGRhdGUoKHgpID0+IHghICsgbnVtKTtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcih0aGlzLnN0YXJ0WWVhcigpISk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGVNb250aChkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gKHRoaXMubG9jYWxlKCkgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZS5zZXQodGltZS5nZXRUaW1lKCkpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGltZU1vZGVsKCkpKSB7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsLnNldChuZXcgRGF0ZSgpKTtcclxuICAgIH1cclxuICAgIHRoaXMudGltZU1vZGVsKCk/LnNldEhvdXJzKHRpbWUuZ2V0SG91cnMoKSk7XHJcbiAgICB0aGlzLnRpbWVNb2RlbCgpPy5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsKCk/LnNldFNlY29uZHModGltZS5nZXRTZWNvbmRzKCkpO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlKHRoaXMudGltZU1vZGVsKCkhKTtcclxuICB9XHJcblxyXG4gIHN1cmVUaW1lKCkge1xyXG4gICAgaWYgKHRoaXMuc3VyZURpc2FibGVkKCkpIHJldHVybjtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUoKTtcclxuICAgIGlmIChYSXNOdWxsKHN0YXJ0KSAmJiAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZS5zZXQobnVsbCk7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZTogbmV3IERhdGUoZW5kISksIGNsb3NlOiBmYWxzZSwgaXNEYXRlUGlja2VyOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZS5zZXQobnVsbCk7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5zdGFydE5vZGVDaGFuZ2VkLmVtaXQoeyBkYXRlOiBuZXcgRGF0ZShzdGFydCEpLCBjbG9zZTogZmFsc2UsIGlzRGF0ZVBpY2tlcjogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoeyBkYXRlOiB0aGlzLnZhbHVlKCkubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLCBjbG9zZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheS51cGRhdGUoKHgpID0+IFhBZGRZZWFycyh4LCBudW0pKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkudXBkYXRlKCh4KSA9PiBYQWRkWWVhcnMoeCwgbnVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aENoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5LnVwZGF0ZSgoeCkgPT4gWEFkZE1vbnRocyh4LCBudW0pKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkudXBkYXRlKCh4KSA9PiBYQWRkTW9udGhzKHgsIG51bSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmVzZXQodHlwZTogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJywgbnVtID0gMCkge1xyXG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgIG5vdyA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSk7XHJcbiAgICAgIGNvbnN0IHdlZWsgPSBub3cuZ2V0RGF5KCk7XHJcbiAgICAgIGNvbnN0IHdlZWtMaXN0ID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHdlZWtMaXN0LmluZGV4T2Yod2Vlayk7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgIGRhdGU6IFtYQWRkRGF5cyhub3csIHdlZWtMaXN0WzBdIC0gKGluZGV4ICsgMSkgKyBudW0gKiA3KSwgWEFkZERheXMobm93LCB3ZWVrTGlzdFs2XSAtIChpbmRleCArIDEpICsgbnVtICogNyldLFxyXG4gICAgICAgIGNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gWEFkZE1vbnRocyhub3csIG51bSk7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUobW9udGguZ2V0RnVsbFllYXIoKSwgbW9udGguZ2V0TW9udGgoKSwgMSk7XHJcbiAgICAgIGNvbnN0IGxhc3REYXkgPSBYQWRkRGF5cyhYQWRkTW9udGhzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogW2ZpcnN0RGF5LCBsYXN0RGF5XSwgY2xvc2U6IHRydWUgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgeWVhciA9IFhBZGRZZWFycyhub3csIG51bSk7XHJcbiAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgIGxldCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZFllYXJzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogW2ZpcnN0RGF5LCBsYXN0RGF5XSwgY2xvc2U6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldEZ1bmMoaXRlbTogWERhdGVSYW5nZVByZXNldCkge1xyXG4gICAgbGV0IHZhbHVlID0gaXRlbS5mdW5jKCk7XHJcbiAgICBpZiAoWElzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaWYgKFhJc051bWJlcih2YWx1ZVswXSkgfHwgWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh7IGRhdGU6IHZhbHVlLCBjbG9zZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwge3sgdHlwZSgpIH19XCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgQHN3aXRjaCAodHlwZSgpKSB7XHJcbiAgICAgIEBjYXNlICgnZGF0ZScpIHtcclxuICAgICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbmV4dE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd3ZWVrJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICB0eXBlPVwid2Vla1wiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtuZXh0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgdHlwZT1cIndlZWtcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtsYXN0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItbW9udGg+XHJcbiAgICAgICAgPHgtcGlja2VyLW1vbnRoXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWUoKVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGUoKVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd5ZWFyJykge1xyXG4gICAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISDptbTpzcycsIHRpbWVUeXBlOiAndGltZScgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISCcsIHRpbWVUeXBlOiAnaG91cicgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tJywgdGltZVR5cGU6ICdtaW51dGUnIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoaXNEYXRlUGlja2VyKCkpIHtcclxuICAgIEBpZiAoZXh0cmFGb290ZXIoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1leHRyYS1mb290ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZXh0cmFGb290ZXIoKVwiPnt7IGV4dHJhRm9vdGVyKCkgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlc2V0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGF0ZVRpbWVIb3VyTWludXRlVHBsIGxldC10aW1lRm9ybWF0PVwidGltZUZvcm1hdFwiIGxldC10aW1lVHlwZT1cInRpbWVUeXBlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZGF0ZVwiPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XT1cImFjdGl2ZVR5cGUoKSA9PT0gJ3N0YXJ0J1wiXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXT1cImFjdGl2ZVR5cGUoKSA9PT0gJ2VuZCdcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwidGltZURpc3BsYXlcIlxyXG4gICAgICAgIFsobW9kZWwpXT1cInRpbWVNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlSG92ZXJdPVwidGltZUhvdmVyKClcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC10aW1lLWxhYmVsXCI+XHJcbiAgICAgICAge3sgdGltZSgpIHwgZGF0ZTogdGltZUZvcm1hdCB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHgtdGltZS1waWNrZXItZnJhbWVcclxuICAgICAgICAjdGltZVBpY2tlckZyYW1lXHJcbiAgICAgICAgW3R5cGVdPVwidGltZVR5cGVcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ0aW1lKClcIlxyXG4gICAgICAgIChub2RlRW1pdCk9XCJzZWxlY3RUaW1lKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVQYXJhbV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVdPVwiZGlzYWJsZWRUaW1lKClcIlxyXG4gICAgICAgIFtkZWZhdWx0Tm93XT1cImZhbHNlXCJcclxuICAgICAgPjwveC10aW1lLXBpY2tlci1mcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoIWlzRGF0ZVBpY2tlcigpICYmIGV4dHJhRm9vdGVyKCkpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlcigpXCI+e3sgZXh0cmFGb290ZXIoKSB9fTwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3Rlci1sZWZ0XCI+XHJcbiAgICAgIEBpZiAoIWlzRGF0ZVBpY2tlcigpKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIHRleHQgKGNsaWNrKT1cIiFzdXJlRGlzYWJsZWQoKSAmJiBzdXJlVGltZSgpXCIgc2l6ZT1cInNtYWxsXCIgW2Rpc2FibGVkXT1cInN1cmVEaXNhYmxlZCgpIVwiPnt7XHJcbiAgICAgIGxvY2FsZSgpLnN1cmVcclxuICAgIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlc2V0VHBsPlxyXG4gIEBpZiAocHJlc2V0KCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXByZXNldFwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIHByZXNldCgpOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgQHN3aXRjaCAoaXRlbS5pZCkge1xyXG4gICAgICAgICAgQGNhc2UgKCd0aGlzV2VlaycpIHtcclxuICAgICAgICAgICAgPHgtbGluayAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAwKVwiPnt7IGxvY2FsZSgpLnRoaXNXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ2xhc3RXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZSgpLmxhc3RXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ25leHRXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDEpXCI+e3sgbG9jYWxlKCkubmV4dFdlZWsgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgndGhpc01vbnRoJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAwKVwiPnt7IGxvY2FsZSgpLnRoaXNNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdsYXN0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZSgpLmxhc3RNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCduZXh0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDEpXCI+e3sgbG9jYWxlKCkubmV4dE1vbnRoIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ3RoaXNZZWFyJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDApXCI+e3sgbG9jYWxlKCkudGhpc1llYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbGFzdFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlKCkubGFzdFllYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbmV4dFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMSlcIj57eyBsb2NhbGUoKS5uZXh0WWVhciB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKCEhaXRlbS5mdW5jKSB7XHJcbiAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldEZ1bmMoaXRlbSlcIj57eyBpdGVtLmxhYmVsIH19PC94LWxpbms+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|