@ardium-ui/ui 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_internal/boolean-component.mjs +1 -1
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +3 -3
- package/esm2022/lib/_internal/disablable-component.mjs +1 -1
- package/esm2022/lib/_internal/focusable-component.mjs +1 -1
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +1 -1
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +1 -1
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +1 -1
- package/esm2022/lib/_internal/models/pagination.model.mjs +1 -1
- package/esm2022/lib/_internal/ngmodel-component.mjs +1 -1
- package/esm2022/lib/_internal/selectable-list-component.mjs +1 -1
- package/esm2022/lib/badge/badge.directive.mjs +1 -1
- package/esm2022/lib/badge/index.mjs +1 -1
- package/esm2022/lib/buttons/_button-base.mjs +1 -1
- package/esm2022/lib/buttons/button/button.component.mjs +5 -3
- package/esm2022/lib/buttons/button/index.mjs +1 -1
- package/esm2022/lib/buttons/fab/fab.component.mjs +5 -3
- package/esm2022/lib/buttons/fab/index.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +5 -3
- package/esm2022/lib/buttons/icon-button/index.mjs +1 -1
- package/esm2022/lib/card/card.children.mjs +3 -3
- package/esm2022/lib/card/card.component.mjs +1 -1
- package/esm2022/lib/card/index.mjs +1 -1
- package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/checkbox/index.mjs +1 -1
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +3 -3
- package/esm2022/lib/checkbox-list/index.mjs +1 -1
- package/esm2022/lib/chip/chip.component.mjs +3 -3
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +3 -3
- package/esm2022/lib/chip/index.mjs +1 -1
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +3 -3
- package/esm2022/lib/color/color-display/color-display.component.mjs +3 -3
- package/esm2022/lib/color/color-display/index.mjs +1 -1
- package/esm2022/lib/color/color-picker/color-picker.types.mjs +1 -1
- package/esm2022/lib/dialog/dialog.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog.types.mjs +1 -1
- package/esm2022/lib/dialog/index.mjs +1 -1
- package/esm2022/lib/divider/divider.component.mjs +1 -1
- package/esm2022/lib/divider/index.mjs +1 -1
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +4 -4
- package/esm2022/lib/dropdown-panel/index.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +3 -3
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/index.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/file-inputs/file-input/index.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input-base.mjs +1 -1
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +3 -3
- package/esm2022/lib/form-field-frame/index.mjs +1 -1
- package/esm2022/lib/icon/icon.component.mjs +3 -3
- package/esm2022/lib/icon/index.mjs +1 -1
- package/esm2022/lib/inputs/color-input/color-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +3 -3
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/index.mjs +1 -1
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +3 -3
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +1 -1
- package/esm2022/lib/inputs/hex-input/index.mjs +1 -1
- package/esm2022/lib/inputs/hex-input.model.mjs +1 -1
- package/esm2022/lib/inputs/input/index.mjs +1 -1
- package/esm2022/lib/inputs/input/input.component.mjs +3 -3
- package/esm2022/lib/inputs/input/input.directives.mjs +1 -1
- package/esm2022/lib/inputs/input/input.module.mjs +1 -1
- package/esm2022/lib/inputs/input-transformers.mjs +1 -1
- package/esm2022/lib/inputs/input-utils.mjs +1 -1
- package/esm2022/lib/inputs/number-input/index.mjs +1 -1
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +3 -3
- package/esm2022/lib/inputs/password-input/index.mjs +1 -1
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/index.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +3 -3
- package/esm2022/lib/kbd/index.mjs +1 -1
- package/esm2022/lib/kbd/kbd.component.mjs +3 -3
- package/esm2022/lib/kbd-shortcut/index.mjs +1 -1
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +3 -3
- package/esm2022/lib/modal/index.mjs +1 -1
- package/esm2022/lib/modal/modal.component.mjs +3 -3
- package/esm2022/lib/option/index.mjs +1 -1
- package/esm2022/lib/option/option.component.mjs +1 -1
- package/esm2022/lib/progress-bar/index.mjs +1 -1
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
- package/esm2022/lib/progress-circle/index.mjs +1 -1
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +3 -3
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
- package/esm2022/lib/radio/index.mjs +1 -1
- package/esm2022/lib/radio/radio/radio.component.mjs +3 -3
- package/esm2022/lib/radio/radio-group.component.mjs +1 -1
- package/esm2022/lib/search-functions.mjs +1 -1
- package/esm2022/lib/segment/index.mjs +1 -1
- package/esm2022/lib/segment/segment.component.mjs +3 -3
- package/esm2022/lib/segment/segment.directives.mjs +1 -1
- package/esm2022/lib/select/index.mjs +1 -1
- package/esm2022/lib/select/select.component.mjs +3 -3
- package/esm2022/lib/select/select.directive.mjs +1 -1
- package/esm2022/lib/select/select.types.mjs +1 -1
- package/esm2022/lib/slide-toggle/index.mjs +1 -1
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +3 -3
- package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +1 -1
- package/esm2022/lib/slider/index.mjs +1 -1
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +3 -3
- package/esm2022/lib/slider/slider.component.mjs +3 -3
- package/esm2022/lib/slider/slider.module.mjs +1 -1
- package/esm2022/lib/slider/slider.types.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/lib/snackbar/snackbar.service.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
- package/esm2022/lib/spinner/index.mjs +1 -1
- package/esm2022/lib/spinner/spinner.component.mjs +3 -3
- package/esm2022/lib/star/index.mjs +1 -1
- package/esm2022/lib/star/star-button/index.mjs +1 -1
- package/esm2022/lib/star/star-button/star-button.component.mjs +3 -3
- package/esm2022/lib/star/star-display/index.mjs +1 -1
- package/esm2022/lib/star/star-display/star-display.component.mjs +3 -3
- package/esm2022/lib/star/star-input/index.mjs +1 -1
- package/esm2022/lib/star/star-input/star-input.component.mjs +3 -3
- package/esm2022/lib/star/star.component.mjs +3 -3
- package/esm2022/lib/statebox/index.mjs +1 -1
- package/esm2022/lib/statebox/statebox.component.mjs +3 -3
- package/esm2022/lib/statebox/statebox.types.mjs +1 -1
- package/esm2022/lib/tabber/index.mjs +1 -1
- package/esm2022/lib/tabber/tab/tab.component.mjs +3 -3
- package/esm2022/lib/tabber/tabber.component.mjs +3 -3
- package/esm2022/lib/tabber/tabber.module.mjs +1 -1
- package/esm2022/lib/table/index.mjs +1 -1
- package/esm2022/lib/table/table-item-storage.mjs +1 -1
- package/esm2022/lib/table/table.component.mjs +3 -3
- package/esm2022/lib/table/table.directives.mjs +1 -1
- package/esm2022/lib/table-from-csv/index.mjs +1 -1
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +3 -3
- package/esm2022/lib/table-pagination/index.mjs +1 -1
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +3 -3
- package/esm2022/lib/types/button.types.mjs +6 -0
- package/esm2022/lib/types/item-storage.types.mjs +1 -1
- package/esm2022/lib/types/utility.types.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ardium-ui-ui.mjs +102 -93
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/buttons/button/button.component.d.ts +3 -1
- package/lib/buttons/fab/fab.component.d.ts +3 -1
- package/lib/buttons/icon-button/icon-button.component.d.ts +3 -1
- package/lib/types/button.types.d.ts +6 -0
- package/package.json +2 -2
- package/prebuilt-themes/default/buttons/button.css +9 -0
- package/prebuilt-themes/default/buttons/button.css.map +1 -1
- package/prebuilt-themes/default/buttons/icon-button.css +4 -2
- package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
- package/prebuilt-themes/default/card.css +3 -0
- package/prebuilt-themes/default/card.css.map +1 -1
- package/themes/default/_clear-button.scss +73 -73
- package/themes/default/badge.scss +94 -94
- package/themes/default/buttons/button.scss +72 -62
- package/themes/default/buttons/fab.scss +74 -74
- package/themes/default/buttons/icon-button.scss +62 -59
- package/themes/default/card.scss +129 -126
- package/themes/default/chips.scss +200 -200
- package/themes/default/core.scss +99 -99
- package/themes/default/inputs/digit-input.scss +56 -56
- package/themes/default/inputs/file-input.scss +85 -85
- package/themes/default/inputs/hex-input.scss +27 -27
- package/themes/default/modal.scss +93 -93
- package/themes/default/segment.scss +340 -340
- package/themes/default/select.scss +255 -255
- package/themes/default/snackbar.scss +58 -58
- package/themes/default/tabber.scss +86 -86
|
@@ -27,11 +27,11 @@ export class ArdiumTabComponent {
|
|
|
27
27
|
this.selectedChange.emit(this.selected());
|
|
28
28
|
}
|
|
29
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.2", type: ArdiumTabComponent, selector: "ard-tab", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, _selected: { classPropertyName: "_selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, _label: { classPropertyName: "_label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { focusEvent: "focusEvent", blurEvent: "blurEvent", selectedChange: "selectedChange" }, host: { properties: { "class.ard-tab-selected": "this._selectedHostAttribute" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.2", type: ArdiumTabComponent, selector: "ard-tab", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, _selected: { classPropertyName: "_selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, _label: { classPropertyName: "_label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { focusEvent: "focusEvent", blurEvent: "blurEvent", selectedChange: "selectedChange" }, host: { properties: { "class.ard-tab-selected": "this._selectedHostAttribute" } }, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
31
31
|
}
|
|
32
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumTabComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
|
-
args: [{ selector: 'ard-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
|
|
34
|
+
args: [{ selector: 'ard-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\r\n" }]
|
|
35
35
|
}], propDecorators: { _selected: [{
|
|
36
36
|
type: Input,
|
|
37
37
|
args: ['selected']
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
39
39
|
type: HostBinding,
|
|
40
40
|
args: ['class.ard-tab-selected']
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdGFiYmVyL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJiZXIvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBUzFELE1BQU0sT0FBTyxrQkFBa0I7SUFQL0I7UUFRVyxhQUFRLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBb0JsQyxZQUFPLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWpDLFdBQU0sR0FBRyxLQUFLLENBQWdCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXRELFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFakMsZUFBVSxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUMzQixtQkFBYyxHQUFHLE1BQU0sRUFBVyxDQUFDO0tBQzdDO0lBN0JDLElBQ0ksU0FBUyxDQUFDLENBQU07UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDOzhHQXJCVSxrQkFBa0I7a0dBQWxCLGtCQUFrQixxdUJDcEIvQiwrQkFDQTs7MkZEbUJhLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxTQUFTLGlCQUdKLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBTzNDLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxVQUFVO2dCQVdiLHNCQUFzQjtzQkFEekIsV0FBVzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBjb21wdXRlZCxcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC10YWInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90YWIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJDb21wb25lbnQge1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBzZWxlY3RlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgQElucHV0KCdzZWxlY3RlZCcpXHJcbiAgc2V0IF9zZWxlY3RlZCh2OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQuc2V0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZChzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZC5zZXQoc3RhdGUpO1xyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hcmQtdGFiLXNlbGVjdGVkJylcclxuICBnZXQgX3NlbGVjdGVkSG9zdEF0dHJpYnV0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQoKSk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBmb2N1c2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcmVhZG9ubHkgX2xhYmVsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCwgeyBhbGlhczogJ2xhYmVsJyB9KTtcclxuICByZWFkb25seSBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2xhYmVsKCkgPz8gdGhpcy50YWJJZCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgdGFiSWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGZvY3VzRXZlbnQgPSBvdXRwdXQ8dm9pZD4oKTtcclxuICByZWFkb25seSBibHVyRXZlbnQgPSBvdXRwdXQ8dm9pZD4oKTtcclxuICByZWFkb25seSBzZWxlY3RlZENoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xyXG59XHJcbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuIl19
|
|
@@ -74,10 +74,10 @@ export class ArdiumTabberComponent {
|
|
|
74
74
|
this.currentFocusedTab.set(null);
|
|
75
75
|
}
|
|
76
76
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumTabberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumTabberComponent, selector: "ard-tabber", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, stretchTabs: { classPropertyName: "stretchTabs", publicName: "stretchTabs", isSignal: true, isRequired: false, transformFunction: null }, tabAlignment: { classPropertyName: "tabAlignment", publicName: "tabAlignment", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusEvent: "focus", blurEvent: "blur", changeTab: "changeTab" }, queries: [{ propertyName: "tabs", predicate: ArdiumTabComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"ard-tabber\"\n [ngClass]=\"ngClasses()\"\n>\n <div\n class=\"ard-tabber-tabs\"\n [ngClass]=\"tabContainerClasses()\"\n >\n @for (tab of tabs(); track tab) {\n
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumTabberComponent, selector: "ard-tabber", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, stretchTabs: { classPropertyName: "stretchTabs", publicName: "stretchTabs", isSignal: true, isRequired: false, transformFunction: null }, tabAlignment: { classPropertyName: "tabAlignment", publicName: "tabAlignment", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusEvent: "focus", blurEvent: "blur", changeTab: "changeTab" }, queries: [{ propertyName: "tabs", predicate: ArdiumTabComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n >\r\n @for (tab of tabs(); track tab) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tab.tabId()\"\r\n [class.ard-tab-active]=\"tab === currentTab()\"\r\n [class.ard-tab-focused]=\"tab === currentFocusedTab()\"\r\n (click)=\"!tab.selected() && onTabClick(tab)\"\r\n (focus)=\"onTabFocus(tab)\"\r\n (blur)=\"onTabBlur(tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".ard-tabber ard-tab{display:none}.ard-tabber ard-tab.ard-tab-selected{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
78
78
|
}
|
|
79
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumTabberComponent, decorators: [{
|
|
80
80
|
type: Component,
|
|
81
|
-
args: [{ selector: 'ard-tabber', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ard-tabber\"\n [ngClass]=\"ngClasses()\"\n>\n <div\n class=\"ard-tabber-tabs\"\n [ngClass]=\"tabContainerClasses()\"\n >\n @for (tab of tabs(); track tab) {\n
|
|
81
|
+
args: [{ selector: 'ard-tabber', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n >\r\n @for (tab of tabs(); track tab) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tab.tabId()\"\r\n [class.ard-tab-active]=\"tab === currentTab()\"\r\n [class.ard-tab-focused]=\"tab === currentFocusedTab()\"\r\n (click)=\"!tab.selected() && onTabClick(tab)\"\r\n (focus)=\"onTabFocus(tab)\"\r\n (blur)=\"onTabBlur(tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".ard-tabber ard-tab{display:none}.ard-tabber ard-tab.ard-tab-selected{display:block}\n"] }]
|
|
82
82
|
}] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdGFiYmVyL3RhYmJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmJlci90YWJiZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixlQUFlLEVBQ2YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFTekQsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQVFrQixTQUFJLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekUsZUFBVSxHQUFHLE1BQU0sQ0FBNEIsSUFBSSxDQUFDLENBQUM7UUFDckQsc0JBQWlCLEdBQUcsTUFBTSxDQUE0QixJQUFJLENBQUMsQ0FBQztRQTZENUQsZUFBVSxHQUFHLE1BQU0sQ0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFFdEMsY0FBYztRQUNMLFVBQUssR0FBRyxLQUFLLENBQWlCLGNB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Q2xDLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQXVCO1FBQ2hDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQXVCO1FBQy9CLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQS9EVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixnckJBQ08sa0JBQWtCLGdFQ3hCM0QsNHlCQWdDQTs7MkZEVGEscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkcmVuLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgT25lQXhpc0FsaWdubWVudCB9IGZyb20gJy4uL3R5cGVzL2FsaWdubWVudC50eXBlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRDb2xvciB9IGZyb20gJy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XG5pbXBvcnQgeyBBcmRpdW1UYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYi90YWIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLXRhYmJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJiZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGFiYmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVRhYmJlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgdGFicyA9IGNvbnRlbnRDaGlsZHJlbihBcmRpdW1UYWJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFRhYiA9IHNpZ25hbDxBcmRpdW1UYWJDb21wb25lbnQgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgY3VycmVudEZvY3VzZWRUYWIgPSBzaWduYWw8QXJkaXVtVGFiQ29tcG9uZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZENtcDogQXJkaXVtVGFiQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjbXAgb2YgdGhpcy50YWJzKCkpIHtcbiAgICAgIGlmIChjbXAuc2VsZWN0ZWQoKSkge1xuICAgICAgICAvLyBlbnN1cmUgb25seSBvbmUgdGFiIGlzIHNlbGVjdGVkXG4gICAgICAgIGlmIChzZWxlY3RlZENtcCkge1xuICAgICAgICAgIGNtcC5zZWxlY3RlZC5zZXQoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0ZWRDbXAgPSBjbXA7XG4gICAgICB9XG5cbiAgICAgIGNtcC5mb2N1c0V2ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KGNtcC50YWJJZCgpKTtcbiAgICAgIH0pO1xuICAgICAgY21wLmJsdXJFdmVudC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KGNtcC50YWJJZCgpKTtcbiAgICAgIH0pO1xuICAgICAgY21wLnNlbGVjdGVkQ2hhbmdlLnN1YnNjcmliZShpc1NlbGVjdGVkID0+IHtcbiAgICAgICAgaWYgKCFpc1NlbGVjdGVkKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2hhbmdlVGFiLmVtaXQoY21wLnRhYklkKCkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFzZWxlY3RlZENtcCkge1xuICAgICAgc2VsZWN0ZWRDbXAgPSB0aGlzLnRhYnMoKVswXSA/PyBudWxsO1xuXG4gICAgICBpZiAoc2VsZWN0ZWRDbXApIHtcbiAgICAgICAgc2VsZWN0ZWRDbXAuc2VsZWN0ZWQuc2V0KHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFRhYi5zZXQoc2VsZWN0ZWRDbXApO1xuICB9XG5cbiAgb25UYWJDbGljayh0YWI6IEFyZGl1bVRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnIgPSB0aGlzLmN1cnJlbnRUYWIoKTtcbiAgICBpZiAoY3Vycikge1xuICAgICAgY3Vyci5zZWxlY3RlZC5zZXQoZmFsc2UpO1xuICAgICAgY3Vyci5zZWxlY3RlZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50VGFiLnNldCh0YWIpO1xuXG4gICAgdGFiLnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICB0YWIuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuICBvblRhYkZvY3VzKHRhYjogQXJkaXVtVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGFiLmZvY3VzRXZlbnQuZW1pdCgpO1xuICAgIHRhYi5mb2N1c2VkLnNldCh0cnVlKTtcblxuICAgIHRoaXMuY3VycmVudEZvY3VzZWRUYWIuc2V0KHRhYik7XG4gIH1cbiAgb25UYWJCbHVyKHRhYjogQXJkaXVtVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGFiLmJsdXJFdmVudC5lbWl0KCk7XG4gICAgdGFiLmZvY3VzZWQuc2V0KGZhbHNlKTtcblxuICAgIHRoaXMuY3VycmVudEZvY3VzZWRUYWIuc2V0KG51bGwpO1xuICB9XG5cbiAgcmVhZG9ubHkgZm9jdXNFdmVudCA9IG91dHB1dDxzdHJpbmc+KHsgYWxpYXM6ICdmb2N1cycgfSk7XG4gIHJlYWRvbmx5IGJsdXJFdmVudCA9IG91dHB1dDxzdHJpbmc+KHsgYWxpYXM6ICdibHVyJyB9KTtcbiAgcmVhZG9ubHkgY2hhbmdlVGFiID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAvLyEgYXBwZWFyYW5jZVxuICByZWFkb25seSBjb2xvciA9IGlucHV0PENvbXBvbmVudENvbG9yPihDb21wb25lbnRDb2xvci5QcmltYXJ5KTtcblxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKSA9PiBbYGFyZC1jb2xvci0ke3RoaXMuY29sb3IoKX1gXS5qb2luKCcgJykpO1xuXG4gIC8vISB0YWIgY29udGFpbmVyIHNldHRpbmdzXG4gIHJlYWRvbmx5IHN0cmV0Y2hUYWJzID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0cnVlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG4gIHJlYWRvbmx5IHRhYkFsaWdubWVudCA9IGlucHV0PE9uZUF4aXNBbGlnbm1lbnQ+KE9uZUF4aXNBbGlnbm1lbnQuTGVmdCk7XG5cbiAgcmVhZG9ubHkgdGFiQ29udGFpbmVyQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgW3RoaXMuc3RyZXRjaFRhYnMoKSA/ICdhcmQtc3RyZXRjaC10YWJzJyA6ICcnLCB0aGlzLnN0cmV0Y2hUYWJzKCkgPyAnJyA6IGBhcmQtdGFiLWFsaWduLSR7dGhpcy50YWJBbGlnbm1lbnQoKX1gXS5qb2luKCcgJylcbiAgKTtcblxuICAvLyEgb3RoZXJcbiAgcmVhZG9ubHkgdGFiSW5kZXggPSBpbnB1dDxudW1iZXIgfCBzdHJpbmc+KDApO1xufVxuIiwiPGRpdlxuICBjbGFzcz1cImFyZC10YWJiZXJcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFyZC10YWJiZXItdGFic1wiXG4gICAgW25nQ2xhc3NdPVwidGFiQ29udGFpbmVyQ2xhc3NlcygpXCJcbiAgPlxuICAgIEBmb3IgKHRhYiBvZiB0YWJzKCk7IHRyYWNrIHRhYikge1xuICAgICAgPGJ1dHRvblxuICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgY2xhc3M9XCJhcmQtdGFiLWJ1dHRvblwiXG4gICAgICAgIFtpZF09XCJ0YWIudGFiSWQoKVwiXG4gICAgICAgIFtjbGFzcy5hcmQtdGFiLWFjdGl2ZV09XCJ0YWIgPT09IGN1cnJlbnRUYWIoKVwiXG4gICAgICAgIFtjbGFzcy5hcmQtdGFiLWZvY3VzZWRdPVwidGFiID09PSBjdXJyZW50Rm9jdXNlZFRhYigpXCJcbiAgICAgICAgKGNsaWNrKT1cIiF0YWIuc2VsZWN0ZWQoKSAmJiBvblRhYkNsaWNrKHRhYilcIlxuICAgICAgICAoZm9jdXMpPVwib25UYWJGb2N1cyh0YWIpXCJcbiAgICAgICAgKGJsdXIpPVwib25UYWJCbHVyKHRhYilcIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9jdXMtb3ZlcmxheVwiPjwvZGl2PlxuICAgICAgICB7eyB0YWIubGFiZWwoKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgY2xhc3M9XCJhcmQtdGFiYmVyLWNvbnRlbnRcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdGFiYmVyL3RhYmJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmJlci90YWJiZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixlQUFlLEVBQ2YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFTekQsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQVFrQixTQUFJLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekUsZUFBVSxHQUFHLE1BQU0sQ0FBNEIsSUFBSSxDQUFDLENBQUM7UUFDckQsc0JBQWlCLEdBQUcsTUFBTSxDQUE0QixJQUFJLENBQUMsQ0FBQztRQTZENUQsZUFBVSxHQUFHLE1BQU0sQ0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFFdEMsY0FBYztRQUNMLFVBQUssR0FBRyxLQUFLLENBQWlCLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RCxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTdFLDBCQUEwQjtRQUNqQixnQkFBVyxHQUFHLEtBQUssQ0FBZSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEYsaUJBQVksR0FBRyxLQUFLLENBQW1CLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlELHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDM0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDM0gsQ0FBQztRQUVGLFNBQVM7UUFDQSxhQUFRLEdBQUcsS0FBSyxDQUFrQixDQUFDLENBQUMsQ0FBQztLQUMvQztJQTlFQyxrQkFBa0I7UUFDaEIsSUFBSSxXQUFXLEdBQThCLElBQUksQ0FBQztRQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzlCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7Z0JBQ25CLGtDQUFrQztnQkFDbEMsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7Z0JBRUQsV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUNwQixDQUFDO1lBRUQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNILEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDSCxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFVBQVU7b0JBQUUsT0FBTztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1lBRXJDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUF1QjtRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQXVCO1FBQ2hDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQXVCO1FBQy9CLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQS9EVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixnckJBQ08sa0JBQWtCLGdFQ3hCM0QsbzRCQWtDQTs7MkZEWGEscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgY29tcHV0ZWQsXHJcbiAgY29udGVudENoaWxkcmVuLFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgT25lQXhpc0FsaWdubWVudCB9IGZyb20gJy4uL3R5cGVzL2FsaWdubWVudC50eXBlcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbG9yIH0gZnJvbSAnLi4vdHlwZXMvY29sb3JzLnR5cGVzJztcclxuaW1wb3J0IHsgQXJkaXVtVGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWIvdGFiLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC10YWJiZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJiZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90YWJiZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJiZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgdGFicyA9IGNvbnRlbnRDaGlsZHJlbihBcmRpdW1UYWJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGN1cnJlbnRUYWIgPSBzaWduYWw8QXJkaXVtVGFiQ29tcG9uZW50IHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgY3VycmVudEZvY3VzZWRUYWIgPSBzaWduYWw8QXJkaXVtVGFiQ29tcG9uZW50IHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZENtcDogQXJkaXVtVGFiQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgICBmb3IgKGNvbnN0IGNtcCBvZiB0aGlzLnRhYnMoKSkge1xyXG4gICAgICBpZiAoY21wLnNlbGVjdGVkKCkpIHtcclxuICAgICAgICAvLyBlbnN1cmUgb25seSBvbmUgdGFiIGlzIHNlbGVjdGVkXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkQ21wKSB7XHJcbiAgICAgICAgICBjbXAuc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGVjdGVkQ21wID0gY21wO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjbXAuZm9jdXNFdmVudC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KGNtcC50YWJJZCgpKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNtcC5ibHVyRXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KGNtcC50YWJJZCgpKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNtcC5zZWxlY3RlZENoYW5nZS5zdWJzY3JpYmUoaXNTZWxlY3RlZCA9PiB7XHJcbiAgICAgICAgaWYgKCFpc1NlbGVjdGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VUYWIuZW1pdChjbXAudGFiSWQoKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghc2VsZWN0ZWRDbXApIHtcclxuICAgICAgc2VsZWN0ZWRDbXAgPSB0aGlzLnRhYnMoKVswXSA/PyBudWxsO1xyXG5cclxuICAgICAgaWYgKHNlbGVjdGVkQ21wKSB7XHJcbiAgICAgICAgc2VsZWN0ZWRDbXAuc2VsZWN0ZWQuc2V0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50VGFiLnNldChzZWxlY3RlZENtcCk7XHJcbiAgfVxyXG5cclxuICBvblRhYkNsaWNrKHRhYjogQXJkaXVtVGFiQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyID0gdGhpcy5jdXJyZW50VGFiKCk7XHJcbiAgICBpZiAoY3Vycikge1xyXG4gICAgICBjdXJyLnNlbGVjdGVkLnNldChmYWxzZSk7XHJcbiAgICAgIGN1cnIuc2VsZWN0ZWRDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRUYWIuc2V0KHRhYik7XHJcblxyXG4gICAgdGFiLnNlbGVjdGVkLnNldCh0cnVlKTtcclxuICAgIHRhYi5zZWxlY3RlZENoYW5nZS5lbWl0KHRydWUpO1xyXG4gIH1cclxuICBvblRhYkZvY3VzKHRhYjogQXJkaXVtVGFiQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICB0YWIuZm9jdXNFdmVudC5lbWl0KCk7XHJcbiAgICB0YWIuZm9jdXNlZC5zZXQodHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50Rm9jdXNlZFRhYi5zZXQodGFiKTtcclxuICB9XHJcbiAgb25UYWJCbHVyKHRhYjogQXJkaXVtVGFiQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICB0YWIuYmx1ckV2ZW50LmVtaXQoKTtcclxuICAgIHRhYi5mb2N1c2VkLnNldChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50Rm9jdXNlZFRhYi5zZXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBmb2N1c0V2ZW50ID0gb3V0cHV0PHN0cmluZz4oeyBhbGlhczogJ2ZvY3VzJyB9KTtcclxuICByZWFkb25seSBibHVyRXZlbnQgPSBvdXRwdXQ8c3RyaW5nPih7IGFsaWFzOiAnYmx1cicgfSk7XHJcbiAgcmVhZG9ubHkgY2hhbmdlVGFiID0gb3V0cHV0PHN0cmluZz4oKTtcclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBjb2xvciA9IGlucHV0PENvbXBvbmVudENvbG9yPihDb21wb25lbnRDb2xvci5QcmltYXJ5KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCkgPT4gW2BhcmQtY29sb3ItJHt0aGlzLmNvbG9yKCl9YF0uam9pbignICcpKTtcclxuXHJcbiAgLy8hIHRhYiBjb250YWluZXIgc2V0dGluZ3NcclxuICByZWFkb25seSBzdHJldGNoVGFicyA9IGlucHV0PGJvb2xlYW4sIGFueT4odHJ1ZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IHRhYkFsaWdubWVudCA9IGlucHV0PE9uZUF4aXNBbGlnbm1lbnQ+KE9uZUF4aXNBbGlnbm1lbnQuTGVmdCk7XHJcblxyXG4gIHJlYWRvbmx5IHRhYkNvbnRhaW5lckNsYXNzZXMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgW3RoaXMuc3RyZXRjaFRhYnMoKSA/ICdhcmQtc3RyZXRjaC10YWJzJyA6ICcnLCB0aGlzLnN0cmV0Y2hUYWJzKCkgPyAnJyA6IGBhcmQtdGFiLWFsaWduLSR7dGhpcy50YWJBbGlnbm1lbnQoKX1gXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgb3RoZXJcclxuICByZWFkb25seSB0YWJJbmRleCA9IGlucHV0PG51bWJlciB8IHN0cmluZz4oMCk7XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiYXJkLXRhYmJlclwiXHJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhcmQtdGFiYmVyLXRhYnNcIlxyXG4gICAgW25nQ2xhc3NdPVwidGFiQ29udGFpbmVyQ2xhc3NlcygpXCJcclxuICA+XHJcbiAgICBAZm9yICh0YWIgb2YgdGFicygpOyB0cmFjayB0YWIpIHtcclxuICAgIDxidXR0b25cclxuICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICBjbGFzcz1cImFyZC10YWItYnV0dG9uXCJcclxuICAgICAgW2lkXT1cInRhYi50YWJJZCgpXCJcclxuICAgICAgW2NsYXNzLmFyZC10YWItYWN0aXZlXT1cInRhYiA9PT0gY3VycmVudFRhYigpXCJcclxuICAgICAgW2NsYXNzLmFyZC10YWItZm9jdXNlZF09XCJ0YWIgPT09IGN1cnJlbnRGb2N1c2VkVGFiKClcIlxyXG4gICAgICAoY2xpY2spPVwiIXRhYi5zZWxlY3RlZCgpICYmIG9uVGFiQ2xpY2sodGFiKVwiXHJcbiAgICAgIChmb2N1cyk9XCJvblRhYkZvY3VzKHRhYilcIlxyXG4gICAgICAoYmx1cik9XCJvblRhYkJsdXIodGFiKVwiXHJcbiAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImFyZC1mb2N1cy1vdmVybGF5XCI+PC9kaXY+XHJcbiAgICAgIHt7IHRhYi5sYWJlbCgpIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICByb2xlPVwidGFicGFuZWxcIlxyXG4gICAgY2xhc3M9XCJhcmQtdGFiYmVyLWNvbnRlbnRcIlxyXG4gID5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
16
16
|
exports: [ArdiumTabberComponent, ArdiumTabComponent],
|
|
17
17
|
}]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdGFiYmVyL3RhYmJlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBT3pELE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQUpkLHFCQUFxQixFQUFFLGtCQUFrQixhQUM5QyxZQUFZLGFBQ1oscUJBQXFCLEVBQUUsa0JBQWtCOytHQUV4QyxrQkFBa0IsWUFIbkIsWUFBWTs7MkZBR1gsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDO29CQUN6RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDO2lCQUNyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFyZGl1bVRhYmJlckNvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFyZGl1bVRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiL3RhYi5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1UYWJiZXJDb21wb25lbnQsIEFyZGl1bVRhYkNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgZXhwb3J0czogW0FyZGl1bVRhYmJlckNvbXBvbmVudCwgQXJkaXVtVGFiQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bVRhYmJlck1vZHVsZSB7fVxyXG4iXX0=
|
|
@@ -2,4 +2,4 @@ export * from './table.module';
|
|
|
2
2
|
export * from './table.component';
|
|
3
3
|
export * from './table.directives';
|
|
4
4
|
export * from './table.types';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuZGlyZWN0aXZlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUudHlwZXMnO1xyXG4iXX0=
|
|
@@ -561,4 +561,4 @@ export class TableItemStorage {
|
|
|
561
561
|
this._sortedItems.set([...this.items()].sort((a, b) => sortFn(a.data()[sortColumnIndex], b.data()[sortColumnIndex])));
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFELE9BQU8sRUFBRSxRQUFRLEVBQW1CLHVCQUF1QixFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTdFLE1BQU0sT0FBTyxXQUFXO0lBd0J0QixZQUNFLFFBQWEsRUFDYixLQUFhLEVBQ2IsSUFBVyxFQUNYLFdBQThCLEVBQzlCLFFBQWlCLEVBQ2pCLElBQWEsRUFDYixPQUFPLEdBQUcsS0FBSztRQTlCQSxjQUFTLEdBQUcsTUFBTSxDQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLFdBQU0sR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV6QixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTdCLFVBQUssR0FBRyxNQUFNLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEMsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdkIsaUJBQVksR0FBRyxNQUFNLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELGdCQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVyQyxXQUFNLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWpDLGFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEMsU0FBSSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBVzVDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDL0IsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFvQkQsTUFBTSxPQUFPLFVBQVU7SUFLckIsWUFBWSxJQUFzQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUM7UUFKbkUsU0FBSSxHQUFHLE1BQU0sQ0FBbUMsU0FBZ0IsQ0FBQyxDQUFDO1FBQ2xFLFlBQU8sR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsWUFBTyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUduQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLFNBQVMsQ0FBQyxLQUFrQztRQUNsRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztRQUNuRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsWUFBNkIsY0FBb0M7UUFBcEMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBTmhELFdBQU0sR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUV6QyxpQkFBWSxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxNQUFNLENBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBSTNEOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3REOztXQUVHO1FBQ00sbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsS0FBSyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEgsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ0g7O1dBRUc7UUFDTSxrQkFBYSxHQUFHLFFBQVEsQ0FBZ0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckc7O1dBRUc7UUFDTSxxQkFBZ0IsR0FBRyxRQUFRLENBQWdCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNHOztXQUVHO1FBQ00sdUJBQWtCLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVHOztXQUVHO1FBQ00sVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFVMUU7O1dBRUc7UUFDTSx5QkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25GOzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdFOzs7V0FHRztRQUNNLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEk7Ozs7V0FJRztRQUNNLHVCQUFrQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVIOzs7V0FHRztRQUNNLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0RDs7O1dBR0c7UUFDTSxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQXlYNUUsV0FBVztRQUNILHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFDekMscUJBQWdCLEdBQW9CLElBQUksQ0FBQztJQTVjbUIsQ0FBQztJQW9DckU7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxLQUFvQjtRQUN4QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBd0NELG1CQUFtQjtJQUNuQjs7O09BR0c7SUFDSCxVQUFVLENBQUMsSUFBMEM7UUFDbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssa0JBQWtCLENBQUMsS0FBOEI7UUFDdkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBbUIsQ0FBQztJQUMzRCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLG1CQUFtQixDQUFDLElBQTBDO1FBQ3BFLE1BQU0sV0FBVyxHQUFzQixFQUFFLENBQUM7UUFFMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsU0FBUztZQUNYLENBQUM7WUFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLG9CQUFvQixDQUFDLElBQTBDO1FBQ3JFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQXFCLEVBQUUsQ0FBQztZQUM1RSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxJQUFJLE1BQU0sR0FBRyxHQUFHO2dCQUFFLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNLLGtCQUFrQixDQUN4QixJQUEwQyxFQUMxQyxVQUFrQixFQUNsQixjQUFzQjtRQUV0QixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFVBQVUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDekUsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBNEIsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0gsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNuQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxhQUFhLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFBRSxPQUFPO1FBRXRDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRDs7Ozs7OztPQU9HO0lBQ0ssY0FBYyxDQUFDLFdBQWdCLEVBQUUsS0FBYTtRQUNwRCxVQUFVO1FBQ1YsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVqRSxVQUFVO1FBQ1YsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDdEcsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN4QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDZixDQUFDO1FBRUQsY0FBYztRQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQzNHLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUM1QyxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNLLFdBQVcsQ0FBQyxXQUFnQixFQUFFLEtBQWE7UUFDakQsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBRXpDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ25DLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7b0JBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEQsU0FBUztZQUNYLENBQUM7WUFDRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixTQUFTO1lBQ1gsQ0FBQztZQUNELElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDekMsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUM5RixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxZQUFZLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLE9BQWlCO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsbUJBQW1CO0lBQ25COzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEtBQWE7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFdBQVc7UUFDVCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRDs7O09BR0c7SUFDSyxpQkFBaUI7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0Q7Ozs7Ozs7OztPQVNHO0lBQ0gsVUFBVSxDQUFDLEdBQUcsT0FBaUI7UUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNHLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLGtCQUFrQixHQUFHLENBQUMsQ0FBQztRQUMzQixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzdHLEtBQUssTUFBTSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxTQUFTO1lBQzlCLElBQUksbUJBQW1CLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU07WUFDUixDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxHQUFHLE9BQWlCO1FBQy9CLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RixLQUFLLE1BQU0sSUFBSSxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxzQkFBc0I7SUFDdEI7O09BRUc7SUFDSCxjQUFjO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUMsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsR0FBRyxPQUFpQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsR0FBRyxPQUFpQjtRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQUUsT0FBTztZQUV6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDZixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsUUFBa0I7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUMvQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDNUUsQ0FBQztRQUNGLE1BQU0sbUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXpHLElBQUksYUFBYSxHQUFHLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNqRCxJQUFJLGFBQWEsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqRCxhQUFhLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixhQUFhLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDO1FBQy9DLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU1RCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBTUQsdUJBQXVCLENBQUMsTUFBYztRQUNwQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzlDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsTUFBYztRQUM5QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ08sbUJBQW1CLENBQUMsV0FBcUI7UUFDL0MsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDaEQsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYix5RkFBeUYsZUFBZSwyRUFBMkUsQ0FDcEwsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FDVixVQUFVLENBQUMsTUFBTTtZQUNqQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNSLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgcmVzb2x2ZVBhdGggZnJvbSAncmVzb2x2ZS1vYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBldmFsdWF0ZSwgaXNEZWZpbmVkLCBpc051bGwgfSBmcm9tICdzaW1wbGUtYm9vbCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xuaW1wb3J0IHsgU29ydFR5cGUsIFRhYmxlRGF0YUNvbHVtbiwgVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3ksIFRhYmxlU3ViaGVhZGVyIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBhcmVBbGxEYXRhQ29sdW1ucywgaXNUYWJsZVN1YmhlYWRlciwgbWVyZ2UyZEFycmF5cyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQXJkVGFibGVSb3cge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtRGF0YSA9IHNpZ25hbDxhbnk+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGl0ZW1EYXRhID0gdGhpcy5faXRlbURhdGEuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuICByZWFkb25seSBpbmRleCA9IHRoaXMuX2luZGV4LmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0VtcHR5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNFbXB0eSA9IHRoaXMuX2lzRW1wdHkuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGEgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgcmVhZG9ubHkgZGF0YSA9IHRoaXMuX2RhdGEuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFDb2x1bW5zID0gc2lnbmFsPFRhYmxlRGF0YUNvbHVtbltdPihbXSk7XG4gIHJlYWRvbmx5IGRhdGFDb2x1bW5zID0gdGhpcy5fZGF0YUNvbHVtbnMuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsYXNzID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICByZWFkb25seSBjbGFzcyA9IHRoaXMuX2NsYXNzLmFzUmVhZG9ubHkoKTtcblxuICByZWFkb25seSBkaXNhYmxlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGJvbGQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzZWxlY3RlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpdGVtRGF0YTogYW55LFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZGF0YTogYW55W10sXG4gICAgZGF0YUNvbHVtbnM6IFRhYmxlRGF0YUNvbHVtbltdLFxuICAgIGRpc2FibGVkOiBib29sZWFuLFxuICAgIGJvbGQ6IGJvb2xlYW4sXG4gICAgaXNFbXB0eSA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMuX2l0ZW1EYXRhLnNldChpdGVtRGF0YSk7XG4gICAgdGhpcy5faW5kZXguc2V0KGluZGV4KTtcbiAgICB0aGlzLl9kYXRhLnNldChkYXRhKTtcbiAgICB0aGlzLl9kYXRhQ29sdW1ucy5zZXQoZGF0YUNvbHVtbnMpO1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGRpc2FibGVkKTtcbiAgICB0aGlzLmJvbGQuc2V0KGJvbGQpO1xuICAgIHRoaXMuX2lzRW1wdHkuc2V0KGlzRW1wdHkpO1xuICB9XG4gIHN0YXRpYyBuZXdFbXB0eUNlbGwoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgQXJkVGFibGVSb3cobnVsbCwgaW5kZXgsIFtdLCBbXSwgZmFsc2UsIGZhbHNlLCB0cnVlKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzIHtcbiAgcmVhZG9ubHkgcm93RGlzYWJsZWRGcm9tOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJvd0JvbGRGcm9tOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlSXRlbVN0b3JhZ2VIb3N0IHtcbiAgcmVhZG9ubHkgcm93RGlzYWJsZWRGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XG4gIHJlYWRvbmx5IHJvd0JvbGRGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XG4gIHJlYWRvbmx5IGludmVydFJvd0Rpc2FibGVkOiBTaWduYWw8TnVsbGFibGU8Ym9vbGVhbj4+O1xuICByZWFkb25seSBpbnZlcnRSb3dCb2xkOiBTaWduYWw8TnVsbGFibGU8Ym9vbGVhbj4+O1xuICByZWFkb25seSBkYXRhOiBTaWduYWw8TnVsbGFibGU8YW55Pj5bXTtcbiAgcmVhZG9ubHkgREVGQVVMVFM6IFRhYmxlSXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHM7XG4gIHJlYWRvbmx5IG1heFNlbGVjdGVkSXRlbXM6IFNpZ25hbDxOdWxsYWJsZTxudW1iZXI+PjtcbiAgcmVhZG9ubHkgdHJlYXREYXRhU291cmNlQXNTdHJpbmc6IFNpZ25hbDxOdWxsYWJsZTxib29sZWFuPj47XG5cbiAgcmVhZG9ubHkgcGFnaW5hdGVkOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHBhZ2luYXRpb25TdHJhdGVneTogU2lnbmFsPFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5PjtcbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlOiBTaWduYWw8bnVtYmVyPjtcbiAgcmVhZG9ubHkgcGFnZTogU2lnbmFsPG51bWJlcj47XG59XG5leHBvcnQgY2xhc3MgSGVhZGVyQ2VsbCB7XG4gIHJlYWRvbmx5IGNlbGwgPSBzaWduYWw8VGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXI+KHVuZGVmaW5lZCBhcyBhbnkpO1xuICByZWFkb25seSBjb2xzcGFuID0gc2lnbmFsPG51bWJlcj4oMSk7XG4gIHJlYWRvbmx5IHJvd3NwYW4gPSBzaWduYWw8bnVtYmVyPigxKTtcblxuICBjb25zdHJ1Y3RvcihjZWxsOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlciwgY29sc3BhbiA9IDEsIHJvd3NwYW4gPSAxKSB7XG4gICAgdGhpcy5jZWxsLnNldChjZWxsKTtcbiAgICB0aGlzLmNvbHNwYW4uc2V0KGNvbHNwYW4pO1xuICAgIHRoaXMucm93c3Bhbi5zZXQocm93c3Bhbik7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY2VsbCA9IHRoaXMuY2VsbCgpO1xuICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKGNlbGwpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5fZ2V0V2lkdGgoY2VsbC53aWR0aCk7XG4gIH1cbiAgZ2V0IG1pbldpZHRoKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGwoKTtcbiAgICBpZiAoaXNUYWJsZVN1YmhlYWRlcihjZWxsKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuX2dldFdpZHRoKGNlbGwubWluV2lkdGgpO1xuICB9XG4gIC8qKlxuICAgKiBUaHJhbnNmb3JtcyBhIG51bWVyaWMgd2lkdGggaW50byBhIENTUyBzdHJpbmcgaWYgbmVlZGVkLiBQdXJlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIHRvIGJlIGNvbnZlcnRlZC5cbiAgICogQHJldHVybnMgVGhlIHdpZHRoIGV4cHJlc3NlZCBhcyBhIENTUy1jb21wYXRpYmxlIHN0cmluZyBvciBudWxsLlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0V2lkdGgod2lkdGg6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghd2lkdGgpIHJldHVybiBudWxsO1xuICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInKSByZXR1cm4gYCR7d2lkdGh9cHhgO1xuICAgIHJldHVybiB3aWR0aDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVJdGVtU3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zID0gc2lnbmFsPEFyZFRhYmxlUm93W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydGVkSXRlbXMgPSBzaWduYWw8QXJkVGFibGVSb3dbXT4oW10pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFDb2x1bW5zID0gc2lnbmFsPFRhYmxlRGF0YUNvbHVtbltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlckNlbGxzID0gc2lnbmFsPEhlYWRlckNlbGxbXVtdPihbXSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfYXJkUGFyZW50Q29tcDogVGFibGVJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGl0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXMgPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHNvcnRlZEl0ZW1zID0gdGhpcy5fc29ydGVkSXRlbXMuYXNSZWFkb25seSgpO1xuICAvKipcbiAgICogR2V0cyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VycmVudCBwYWdpbmF0aW9uIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFnaW5hdGVkSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLnBhZ2luYXRlZCgpIHx8IHRoaXMuX2FyZFBhcmVudENvbXAucGFnaW5hdGlvblN0cmF0ZWd5KCkgPT09IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3ApIHtcbiAgICAgIHJldHVybiB0aGlzLnNvcnRlZEl0ZW1zKCk7XG4gICAgfVxuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLl9hcmRQYXJlbnRDb21wLnBhZ2UoKTtcbiAgICBjb25zdCBJUFAgPSB0aGlzLl9hcmRQYXJlbnRDb21wLml0ZW1zUGVyUGFnZSgpO1xuICAgIGNvbnN0IGl0ZW1zU3RhcnQgPSAocGFnZSAtIDEpICogSVBQO1xuICAgIGNvbnN0IGl0ZW1zRW5kID0gcGFnZSAqIElQUDtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRJdGVtcygpLnNsaWNlKGl0ZW1zU3RhcnQsIGl0ZW1zRW5kKTtcbiAgfSk7XG4gIC8qKlxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zID0gY29tcHV0ZWQ8QXJkVGFibGVSb3dbXT4oKCkgPT4gdGhpcy5pdGVtcygpLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQoKSkpO1xuICAvKipcbiAgICogR2V0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRJdGVtcyA9IGNvbXB1dGVkPEFyZFRhYmxlUm93W10+KCgpID0+IHRoaXMuaXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmhpZ2hsaWdodGVkKCkpKTtcbiAgLyoqXG4gICAqIEdldHMgYWxsIGhpZ2hsaWdodGFibGUgaXRlbXMuIEFuIGl0ZW0gaXMgY29uc2lkZXJlZCBoaWdobGlnaHRhYmxlIGlmIGl0IGlzICoqbm90KiogZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBoaWdobGlnaHRhYmxlSXRlbXMgPSBjb21wdXRlZDxBcmRUYWJsZVJvd1tdPigoKSA9PiB0aGlzLl9pdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKCkpKTtcbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlcyBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKCkpKTtcbiAgLyoqXG4gICAqIE1hcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byB0aGVpciB2YWx1ZXMuXG4gICAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbXMgdG8gY29udmVydCB0byB2YWx1ZS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbSB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIF9pdGVtc1RvVmFsdWUoaXRlbXM6IEFyZFRhYmxlUm93W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uaXRlbURhdGEoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBpdGVtIGlzIGhpZ2hsaWdodGVkLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICByZWFkb25seSBpc0FueUl0ZW1IaWdobGlnaHRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xuICAvKipcbiAgICogQ2hlY2tzIGlmIGFueSBpdGVtIGluIHRoZSB0YWJsZSBpcyBzZWxlY3RlZC5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgYW55IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSBpc0FueUl0ZW1TZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xuICAvKipcbiAgICogQ2hlY2tzIGlmIGFsbCBpdGVtcyBpbiB0aGUgdGFibGUgYXJlIHNlbGVjdGVkLlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiBhbGwgaXRlbXMgYXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJlQWxsU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPT09IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSkubGVuZ3RoKTtcbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0YWJsZSBpdGVtcyBhbmQgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IGxpbWl0LiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAgICpcbiAgICogKipUTERSKio6IHRydWUgaWYgYG1heFNlbGVjdGVkSXRlbXNgIGlzIGRlZmluZWQgYW5kIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNJdGVtTGltaXRSZWFjaGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1heCA9IHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpO1xuICAgIGlmICghaXNEZWZpbmVkKG1heCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG1heCA8PSB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGg7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWFkZXIgY2VsbHMgb2YgdGhlIHRhYmxlLlxuICAgKiBAcmV0dXJucyBhIDJEIGFycmF5IG9mIGhlYWRlciBjZWxscy5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlckNlbGxzID0gdGhpcy5faGVhZGVyQ2VsbHMuYXNSZWFkb25seSgpO1xuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB0YWJsZSBoYXMgZGVmaW5lZCBjb2x1bW5zLlxuICAgKiBAcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiB0aGUgdGFibGUgaGFzIGRlZmluZWQgY29sdW1ucy5cbiAgICovXG4gIHJlYWRvbmx5IGhhc0RlZmluZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGF0YUNvbHVtbnMoKS5sZW5ndGggPiAwKTtcblxuICAvLyEgc2V0dGluZyBjb2x1bW5zXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cbiAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXG4gICAqL1xuICBzZXRDb2x1bW5zKGNvbHM6IChUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcilbXSk6IHZvaWQge1xuICAgIGNvbnN0IG1heE5lc3RpbmdMZXZlbCA9IHRoaXMuX2dldEhlYWRlck1heE5lc3RpbmcoY29scyk7XG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSB0aGlzLl9tYXBDb2x1bW5zVG9BcnJheShjb2xzLCBtYXhOZXN0aW5nTGV2ZWwsIDApO1xuICAgIHRoaXMuX2hlYWRlckNlbGxzLnNldCh0aGlzLl9maWx0ZXJIZWFkZXJDZWxscyhoZWFkZXJDZWxscykpO1xuICAgIHRoaXMuX2RhdGFDb2x1bW5zLnNldCh0aGlzLl9leHRyYWN0RGF0YVNvdXJjZXMoY29scykpO1xuICB9XG4gIC8qKlxuICAgKiBGaWx0ZXJzIG91dCBudWxsIHZhbHVlcyBmcm9tIHRoZSBoZWFkZXIgY2VsbHMgYXJyYXkuIFB1cmUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBjZWxscyBhIDJEIGFycmF5IG9mIGhlYWRlciBjZWxscyBvciBudWxsIHZhbHVlcy5cbiAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMgd2l0aG91dCBudWxsIHZhbHVlcyBhbmQgZW1wdHkgYXJyYXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmlsdGVySGVhZGVyQ2VsbHMoY2VsbHM6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdKTogSGVhZGVyQ2VsbFtdW10ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNlbGxzW2ldID0gY2VsbHNbaV0uZmlsdGVyKHYgPT4gdiAhPT0gbnVsbCk7XG4gICAgfVxuICAgIHJldHVybiBjZWxscy5maWx0ZXIocm93ID0+IHJvdy5sZW5ndGgpIGFzIEhlYWRlckNlbGxbXVtdO1xuICB9XG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgZGF0YSBzb3VyY2VzIGZyb20gdGhlIGNvbHVtbnMgYXJyYXkuIFB1cmUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBjb2xzIGFuIGFycmF5IG9mIHRhYmxlIGRhdGEgY29sdW1ucyBvciB0YWJsZSBzdWJoZWFkZXJzLlxuICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMuXG4gICAqL1xuICBwcml2YXRlIF9leHRyYWN0RGF0YVNvdXJjZXMoY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdKTogVGFibGVEYXRhQ29sdW1uW10ge1xuICAgIGNvbnN0IGRhdGFDb2x1bW5zOiBUYWJsZURhdGFDb2x1bW5bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKCFpc1RhYmxlU3ViaGVhZGVyKGNvbCkpIHtcbiAgICAgICAgZGF0YUNvbHVtbnMucHVzaChjb2wpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGRhdGFDb2x1bW5zLnB1c2goLi4udGhpcy5fZXh0cmFjdERhdGFTb3VyY2VzKGNvbC5jaGlsZHJlbikpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhQ29sdW1ucztcbiAgfVxuICAvKipcbiAgICogR2V0cyB0aGUgbWF4aW11bSBuZXN0aW5nIGxldmVsIG9mIHRoZSBjb2x1bW5zIGFycmF5LiBQdXJlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gY29scyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMgb3IgdGFibGUgc3ViaGVhZGVycy5cbiAgICogQHJldHVybnMgdGhlIG1heGltdW0gbmVzdGluZyBsZXZlbCBhcyBhIG51bWJlci5cbiAgICovXG4gIHByaXZhdGUgX2dldEhlYWRlck1heE5lc3RpbmcoY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdKTogbnVtYmVyIHtcbiAgICBpZiAoYXJlQWxsRGF0YUNvbHVtbnMoY29scykpIHJldHVybiAxO1xuICAgIGxldCBtYXggPSAxO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMuZmlsdGVyKHYgPT4gaXNUYWJsZVN1YmhlYWRlcih2KSkgYXMgVGFibGVTdWJoZWFkZXJbXSkge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gMSArIHRoaXMuX2dldEhlYWRlck1heE5lc3RpbmcoY29sLmNoaWxkcmVuKTtcbiAgICAgIGlmIChoZWlnaHQgPiBtYXgpIG1heCA9IGhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuICAvKipcbiAgICogTWFwcyB0aGUgY29sdW1ucyB0cmVlIHRvIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzIG9yIG51bGwgdmFsdWVzLiBQdXJlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gY29scyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMgb3IgdGFibGUgc3ViaGVhZGVycy5cbiAgICogQHBhcmFtIG1heE5lc3RpbmcgdGhlIG1heGltdW0gbmVzdGluZyBsZXZlbCBvZiB0aGUgY29sdW1ucyBhcnJheS5cbiAgICogQHBhcmFtIGN1cnJlbnROZXN0aW5nIHRoZSBjdXJyZW50IG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXG4gICAqIEByZXR1cm5zIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzIG9yIG51bGwgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfbWFwQ29sdW1uc1RvQXJyYXkoXG4gICAgY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdLFxuICAgIG1heE5lc3Rpbmc6IG51bWJlcixcbiAgICBjdXJyZW50TmVzdGluZzogbnVtYmVyXG4gICk6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdIHtcbiAgICBpZiAoYXJlQWxsRGF0YUNvbHVtbnMoY29scykpIHtcbiAgICAgIHJldHVybiBbY29scy5tYXAoY29sID0+IG5ldyBIZWFkZXJDZWxsKGNvbCwgMSwgbWF4TmVzdGluZyAtIGN1cnJlbnROZXN0aW5nKSldO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJDZWxsczogKEhlYWRlckNlbGwgfCBudWxsKVtdW10gPSBbW11dO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmICghaXNUYWJsZVN1YmhlYWRlcihjb2wpKSB7XG4gICAgICAgIGhlYWRlckNlbGxzWzBdLnB1c2gobmV3IEhlYWRlckNlbGwoY29sLCAxLCBtYXhOZXN0aW5nIC0gY3VycmVudE5lc3RpbmcpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBjaGlsZENlbGxzOiAoSGVhZGVyQ2VsbCB8IG51bGwpW11bXSA9IFtbXSwgLi4udGhpcy5fbWFwQ29sdW1uc1RvQXJyYXkoY29sLmNoaWxkcmVuLCBtYXhOZXN0aW5nLCBjdXJyZW50TmVzdGluZyArIDEpXTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGNoaWxkQ2VsbHMubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IHdpZHRoID0gY2hpbGRDZWxsc1sxXS5sZW5ndGg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7XG4gICAgICAgIGhlYWRlckNlbGxzLnB1c2goW251bGxdKTtcbiAgICAgIH1cbiAgICAgIGhlYWRlckNlbGxzWzBdLnB1c2gobmV3IEhlYWRlckNlbGwoY29sLCB3aWR0aCwgMSkpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aCAtIDE7IGkrKykge1xuICAgICAgICBoZWFkZXJDZWxsc1swXS5wdXNoKG51bGwpO1xuICAgICAgfVxuICAgICAgbWVyZ2UyZEFycmF5cyhoZWFkZXJDZWxscywgY2hpbGRDZWxscyk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJDZWxscztcbiAgfVxuXG4gIC8vISBzZXR0aW5nIGl0ZW1zXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQncyBpdGVtcy4gVGFrZXMgaW50byBhY2NvdW50IHRoZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudCBmb3IgYHJvd0Rpc2FibGVkRnJvbWAsIGByb3dCb2xkRnJvbWAsIGFuZCBgcm93SGlnaGxpZ2h0ZWRGcm9tYC5cbiAgICogQHBhcmFtIGl0ZW1zIEFuIGFycmF5IG9mIGl0ZW1zIHRvIGJlIHNldCBhcyB0aGUgY29tcG9uZW50J3MgaXRlbXMuXG4gICAqL1xuICBzZXRJdGVtcyhpdGVtczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRGVmaW5lZENvbHVtbnMoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0sIGkpID0+IHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaSkpO1xuICAgIHRoaXMuX2l0ZW1zLnNldChtYXBwZWRJdGVtcyk7XG4gICAgdGhpcy5fc29ydGVkSXRlbXMuc2V0KG1hcHBlZEl0ZW1zKTtcbiAgfVxuICAvKipcbiAgICogTWFwcyByYXcgaXRlbSBkYXRhIHRvIGFuIHtAbGluayBBcmRUYWJsZVJvd30gb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gcmF3SXRlbURhdGEgLSBUaGUgcmF3IGRhdGEgb2YgdGhlIGl0ZW0uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICogQHJldHVybnMge0FyZFRhYmxlUm93fSBSZXR1cm5zIGFuIEFyZFRhYmxlUm93IG9iamVjdCB3aXRoIG1hcHBlZCBwcm9wZXJ0aWVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyKTogQXJkVGFibGVSb3cge1xuICAgIC8vZ2V0IGRhdGFcbiAgICBjb25zdCBbZGF0YSwgZGF0YUNvbHVtbnNdID0gdGhpcy5fZ2V0Um93RGF0YShyYXdJdGVtRGF0YSwgaW5kZXgpO1xuXG4gICAgLy9nZXQgYm9sZFxuICAgIGNvbnN0IHJvd0JvbGRGcm9tUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAucm93Qm9sZEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLnJvd0JvbGRGcm9tO1xuICAgIGxldCBib2xkID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHJvd0JvbGRGcm9tUGF0aCk7XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaW52ZXJ0Um93Qm9sZCgpKSB7XG4gICAgICBib2xkID0gIWJvbGQ7XG4gICAgfVxuXG4gICAgLy9nZXQgZGlzYWJsZWRcbiAgICBjb25zdCBkaXNhYmxlZFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLnJvd0Rpc2FibGVkRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMucm93RGlzYWJsZWRGcm9tO1xuICAgIGxldCBkaXNhYmxlZCA9IGV2YWx1YXRlKHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBkaXNhYmxlZFBhdGgpKTtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5pbnZlcnRSb3dEaXNhYmxlZCgpKSB7XG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEFyZFRhYmxlUm93KHJhd0l0ZW1EYXRhLCBpbmRleCwgZGF0YSwgZGF0YUNvbHVtbnMsIGRpc2FibGVkLCBib2xkKTtcbiAgfVxuICAvKipcbiAgICogUmV0cmlldmVzIGRhdGEgZm9yIGEgcm93IGJhc2VkIG9uIGRhdGEgY29sdW1ucyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gcmF3SXRlbURhdGEgLSBUaGUgcmF3IGRhdGEgb2YgdGhlIGl0ZW0uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICogQHJldHVybnMge2FueVtdfSBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJvdyBkYXRhLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0Um93RGF0YShyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyKTogW2FueVtdLCBUYWJsZURhdGFDb2x1bW5bXV0ge1xuICAgIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG4gICAgY29uc3QgX2NvbHMgPSB0aGlzLl9kYXRhQ29sdW1ucygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX2NvbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGRhdGFDb2x1bW4gPSBfY29sc1tpXTtcbiAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBkYXRhQ29sdW1uLmRhdGFTb3VyY2U7XG5cbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAudHJlYXREYXRhU291cmNlQXNTdHJpbmcoKSkge1xuICAgICAgICAgIGRhdGEucHVzaChyYXdJdGVtRGF0YVtzb3VyY2VQYXRoXSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5wdXNoKHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBzb3VyY2VQYXRoKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNvdXJjZVBhdGgudHlwZSA9PT0gJ2F1dG9jb3VudCcpIHtcbiAgICAgICAgZGF0YS5wdXNoKGluZGV4ICsgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNvdXJjZVBhdGgudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBkYXRhLnB1c2goeyBfYXJkQ2hlY2tib3g6IHRydWUsIGluZGV4IH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNvdXJjZVN0cmluZyA9IHR5cGVvZiBzb3VyY2VQYXRoID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KHNvdXJjZVBhdGgpIDogc291cmNlUGF0aDtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELUZUNTA1MjogVW5leHBlY3RlZCBkYXRhIHNvdXJjZSBcIiR7c291cmNlU3RyaW5nfVwiIGF0IGluZGV4ICR7aX0uYCk7XG4gICAgfVxuICAgIHJldHVybiBbZGF0YSwgdGhpcy5fZGF0YUNvbHVtbnMoKV07XG4gIH1cbiAgLyoqXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgaXRlbSBzdG9yYWdlLiBTZWxlY3RzIHRoZSBjb3JyZWN0IGl0ZW1zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2YWx1ZXMsIHdhcm5pbmcgdGhlIHVzZXIgaWYgdGhlIHZhbHVlIGlzIG5vdCBmb3VuZC5cbiAgICogQHBhcmFtIGluZGV4ZXMgVGhlIHZhbHVlIG9mIHRoZSBuZ01vZGVsIHRvIHNldC5cbiAgICovXG4gIHdyaXRlVmFsdWUoaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZVVuc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5zZWxlY3RJdGVtKC4uLmluZGV4ZXMpO1xuICB9XG5cbiAgLy8hIHNlbGVjdGluZyBpdGVtc1xuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaW5kZXggaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBfdHJ1ZV8gaWYgdGhlIGl0ZW0gaXMgc2VsZWN0ZWQsIG90aGVyd2lzZSBfZmFsc2VfLlxuICAgKi9cbiAgaXNJdGVtU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMoKS5zb21lKGl0ZW0gPT4gaXRlbS5pbmRleCgpID09PSBpbmRleCk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdHMgYWxsIGl0ZW1zLlxuICAgKlxuICAgKiBBY2NvdW50cyBmb3IgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgdHdvIGFycmF5czpcbiAgICogKiBBbiBhcnJheSBvZiBpdGVtcyBzZWxlY3RlZC5cbiAgICogKiBBbiBhcnJheSBvZiBpdGVtcyBmYWlsZWQgdG8gc2VsZWN0LlxuICAgKi9cbiAgc2VsZWN0QWxsKCk6IFthbnlbXSwgYW55W11dIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RJdGVtKC4uLnRoaXMuX2l0ZW1zKCkubWFwKHYgPT4gdi5pbmRleCgpKSk7XG4gIH1cbiAgLyoqXG4gICAqIFVuc2VsZWN0cyBhbGwgc2VsZWN0ZWQgaXRlbXMuXG4gICAqXG4gICAqIElmIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSB2YWx1ZSB0byBiZSBzZWxlY3RlZCBhdCBhbGwgdGltZXMsIHRoZSBmaXJzdCBzZWxlY3RlZCBpdGVtcyBpcyBsZWZ0IHNlbGVjdGVkLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyBjbGVhcmVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXG4gICAqL1xuICB1bnNlbGVjdEFsbCgpOiBhbnlbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc2VsZWN0ZWQpIHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHNlbGVjdGVkKTtcbiAgfVxuICAvKipcbiAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcywgbm8gbWF0dGVyIHdoYXQgdGhlIGNvbXBvbmVudCBzZXR0aW5ncyBhcmUuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgX2ZvcmNlVW5zZWxlY3RBbGwoKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEl0ZW1zKCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNlbGVjdGVkKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShzZWxlY3RlZCk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdHMgb25lIG9yIG11bHRpcGxlIGl0ZW1zLlxuICAgKlxuICAgKiBBY2NvdW50cyBmb3IgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhlcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbSBpbmRleGVzIHRvIGJlIHNlbGVjdGVkLlxuICAgKiBAcmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgdHdvIGFycmF5czpcbiAgICogLSBBbiBhcnJheSBvZiBpdGVtcyBzZWxlY3RlZC5cbiAgICogLSBBbiBhcnJheSBvZiBpdGVtcyBmYWlsZWQgdG8gc2VsZWN0LlxuICAgKi9cbiAgc2VsZWN0SXRlbSguLi5pbmRleGVzOiBudW1iZXJbXSk6IFthbnlbXSwgYW55W11dIHtcbiAgICBjb25zdCBpdGVtc1RvQmVTZWxlY3RlZCA9IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSAmJiBpbmRleGVzLmluY2x1ZGVzKGl0ZW0uaW5kZXgoKSkpO1xuICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpKSB7XG4gICAgICByZXR1cm4gW1tdLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNUb0JlU2VsZWN0ZWQpXTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcbiAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gW107XG4gICAgbGV0IGl0ZW1zTGVmdFVudGlsTGltaXQgPSAodGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKCkgPz8gSW5maW5pdHkpIC0gdGhpcy5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVTZWxlY3RlZCkge1xuICAgICAgaXRlbXNTZWxlY3RlZENvdW50Kys7XG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcbiAgICAgIGlmIChpdGVtc0xlZnRVbnRpbExpbWl0IDw9IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpdGVtc0xlZnRVbnRpbExpbWl0LS07XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXNUb0JlU2VsZWN0ZWQuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XG4gICAgcmV0dXJuIFt0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNTZWxlY3RlZCksIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc0ZhaWxlZFRvU2VsZWN0KV07XG4gIH1cbiAgLyoqXG4gICAqIFVuc2VsZWN0cyBvbmUgb3IgbXVsdGlwbGUgaXRlbXMuXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbSBpbmRleGVzIHRvIGJlIHVuc2VsZWN0ZWQuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIHVuc2VsZWN0ZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICovXG4gIHVuc2VsZWN0SXRlbSguLi5pbmRleGVzOiBudW1iZXJbXSk6IGFueVtdIHtcbiAgICBjb25zdCBpdGVtc1RvQmVVbnNlbGVjdGVkID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpbmRleGVzLmluY2x1ZGVzKGl0ZW0uaW5kZXgoKSkpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVVbnNlbGVjdGVkKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1RvQmVVbnNlbGVjdGVkKTtcbiAgfVxuXG4gIC8vISBoaWdobGlnaHRpbmcgaXRlbXNcbiAgLyoqXG4gICAqIFVuaGlnaGxpZ2h0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgKi9cbiAgdW5oaWdobGlnaHRBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGlnaGxpZ2h0ZWQpIHtcbiAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgdGhlIGdpdmVuIGl0ZW0sIHdoaWxlIHVuaGlnaGxpZ2h0aW5nIGFsbCBvdGhlciBpdGVtcy4gRG9lcyBub3RoaW5nIHdoZW4gdGhlIGl0ZW0gaXMgZGlzYWJsZWQuXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byBiZSBoaWdobGlnaHRlZC5cbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRTaW5nbGVJdGVtKGluZGV4OiBudW1iZXIpOiBBcmRUYWJsZVJvdyB8IG51bGwge1xuICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGluZGV4KTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbSBpbmRleGVzIHRvIGJlIGhpZ2hsaWdodGVkLlxuICAgKiBAcmV0dXJucyBUaGUgbGFzdCBoaWdobGlnaHRlZCBpdGVtLlxuICAgKi9cbiAgaGlnaGxpZ2h0SXRlbSguLi5pbmRleGVzOiBudW1iZXJbXSk6IEFyZFRhYmxlUm93IHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gaW5kZXhlcy5pbmNsdWRlcyhpdGVtLmluZGV4KCkpKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xuICB9XG4gIC8qKlxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gaW5kZXhlcyB0byBiZSB1bmhpZ2hsaWdodGVkLlxuICAgKi9cbiAgdW5oaWdobGlnaHRJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLl9pdGVtcygpLmZpbHRlcihpdGVtID0+IGluZGV4ZXMuaW5jbHVkZXMoaXRlbS5pbmRleCgpKSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQoKSkgcmV0dXJuO1xuXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBmaXJzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgKi9cbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xuXG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5oaWdobGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpLmluZGV4KCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBsYXN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRMYXN0SXRlbSgpOiBBcmRUYWJsZVJvdyB8IG51bGwge1xuICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcblxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IHRoaXMuaGlnaGxpZ2h0YWJsZUl0ZW1zKCkubGFzdCgpLmluZGV4KCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIGFsbCBub24tZGlzYWJsZWQgaXRlbXMuXG4gICAqL1xuICBoaWdobGlnaHRBbGxJdGVtcygpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5oaWdobGlnaHRhYmxlSXRlbXMoKS5tYXAodiA9PiB2LmluZGV4KCkpO1xuICAgIHRoaXMuaGlnaGxpZ2h0SXRlbSguLi5pdGVtc1RvSGlnaGxpZ2h0KTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgbmV4dCBub24tZGlzYWJsZWQgaXRlbSBkZWZpbmVkIGJ5IHRoZSBvZmZzZXQgYW1vdW50LlxuICAgKlxuICAgKiBJZiBgaGFzU2hpZnRgIGlzIHNldCB0byB0cnVlLCBhbGwgb3JpZ2luYWxseSBoaWdobGlnaHRlZCBpdGVtcyBhcmUga2VwdC4gT3RoZXJ3aXNlLCBhbGwgb3JpZ2luYWwgaXRlbXMgYXJlIHVuc2VsZWN0ZWQuXG4gICAqIEBwYXJhbSBvZmZzZXQgVGhlIGFtb3VudCBvZiBpdGVtcyB0byBvZmZzZXQgdGhlIGhpZ2hsaWdodCBieS5cbiAgICogQHBhcmFtIGhhc1NoaWZ0IFdoZXRoZXIgdGhlIHVzZXIgaGFzIHRoZSBzaGlmdCBrZXkgcHJlc3NlZC5cbiAgICogQHJldHVybnMgVGhlIGl0ZW0gaGlnaGxpZ2h0ZWQuXG4gICAqL1xuICBoaWdobGlnaHROZXh0SXRlbShvZmZzZXQ6IG51bWJlciwgaGFzU2hpZnQ/OiBib29sZWFuKTogQXJkVGFibGVSb3cgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNBbnlJdGVtSGlnaGxpZ2h0ZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5oaWdobGlnaHRlZEl0ZW1zKCkubGFzdCgpO1xuICAgIGNvbnN0IGl0ZW1zV2l0aG91dERpc2FibGVkID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoXG4gICAgICBpdGVtID0+ICFpdGVtLmRpc2FibGVkKCkgJiYgKCF0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpIHx8IGl0ZW0uc2VsZWN0ZWQoKSlcbiAgICApO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4KCkgPT09IGN1cnJlbnRJdGVtLmluZGV4KCkpO1xuXG4gICAgbGV0IG5leHRJdGVtSW5kZXggPSBjdXJyZW50SW5kZXhJbkl0ZW1zICsgb2Zmc2V0O1xuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCAtPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCArPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IGl0ZW1zV2l0aG91dERpc2FibGVkW25leHRJdGVtSW5kZXhdO1xuXG4gICAgaWYgKGhhc1NoaWZ0KSB7XG4gICAgICBpZiAoaXRlbVRvSGlnaGxpZ2h0LmhpZ2hsaWdodGVkKCkpIHtcbiAgICAgICAgdGhpcy51bmhpZ2hsaWdodEl0ZW0obmV4dEl0ZW1JbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKG5leHRJdGVtSW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRTaW5nbGVJdGVtKG5leHRJdGVtSW5kZXgpO1xuICB9XG5cbiAgLy8hIHNvcnRpbmdcbiAgcHJpdmF0ZSBfY3VycmVudFNvcnRDb2x1bW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9jdXJyZW50U29ydFR5cGU6IFNvcnRUeXBlIHwgbnVsbCA9IG51bGw7XG5cbiAgdG9nZ2xlQ3VycmVudFNvcnRDb2x1bW4oY29sdW1uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudFNvcnRDb2x1bW4gPT09IGNvbHVtbikge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9PT0gU29ydFR5cGUuQXNjZW5kaW5nKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IFNvcnRUeXBlLkRlc2NlbmRpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jdXJyZW50U29ydFR5cGUgPSBTb3J0VHlwZS5Bc2NlbmRpbmc7XG4gICAgICB9XG4gICAgICB0aGlzLl9nZW5lcmF0ZVNvcnRlZFJvd3ModHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2N1cnJlbnRTb3J0Q29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IFNvcnRUeXBlLkFzY2VuZGluZztcbiAgICB0aGlzLl9nZW5lcmF0ZVNvcnRlZFJvd3MoKTtcbiAgfVxuICByZXNldFNvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5fY3VycmVudFNvcnRDb2x1bW4gPSBudWxsO1xuICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IG51bGw7XG4gICAgdGhpcy5fc29ydGVkSXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zKCldKTtcbiAgfVxuICBnZXRDb2x1bW5Tb3J0VHlwZShjb2x1bW46IG51bWJlcik6IFNvcnRUeXBlIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRTb3J0Q29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U29ydFR5cGU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHByaXZhdGUgX2dlbmVyYXRlU29ydGVkUm93cyhqdXN0UmV2ZXJzZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoanVzdFJldmVyc2UpIHtcbiAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zKCkucmV2ZXJzZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3J0Q29sdW1uSW5kZXggPSB0aGlzLl9jdXJyZW50U29ydENvbHVtbjtcbiAgICBpZiAoaXNOdWxsKHNvcnRDb2x1bW5JbmRleCkgfHwgIXRoaXMuX2N1cnJlbnRTb3J0VHlwZSkge1xuICAgICAgdGhpcy5fc29ydGVkSXRlbXMuc2V0KHRoaXMuaXRlbXMoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNvcnRDb2x1bW4gPSB0aGlzLl9kYXRhQ29sdW1ucygpW3NvcnRDb2x1bW5JbmRleF07XG4gICAgaWYgKCFzb3J0Q29sdW1uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBUkQtSVM1MDU5OiBFbmNvdW50ZXJlZCBhbiBpc3N1ZSBpbiA8YXJkLXRhYmxlPjogY291bGQgbm90IGZpbmQgdGhlIGNvbHVtbiB3aXRoIGluZGV4ICR7c29ydENvbHVtbkluZGV4fS4gVGhpcyBpcyBtb3N0IGxpa2VseSBhbiBBcmRpdW0gVUkgYnVnLCBwbGVhc2UgcmVwb3J0IGl0IHRvIHRoZSBjcmVhdG9ycy5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9PT0gU29ydFR5cGUuQXNjZW5kaW5nID8gMSA6IC0xO1xuICAgIGNvbnN0IHNvcnRGbiA9XG4gICAgICBzb3J0Q29sdW1uLnNvcnRGbiA/P1xuICAgICAgKChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIGRpcmVjdGlvbjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTEgKiBkaXJlY3Rpb247XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zb3J0ZWRJdGVtcy5zZXQoWy4uLnRoaXMuaXRlbXMoKV0uc29ydCgoYSwgYikgPT4gc29ydEZuKGEuZGF0YSgpW3NvcnRDb2x1bW5JbmRleF0sIGIuZGF0YSgpW3NvcnRDb2x1bW5JbmRleF0pKSk7XG4gIH1cbn1cbiJdfQ==
|
|
564
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFELE9BQU8sRUFBRSxRQUFRLEVBQW1CLHVCQUF1QixFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTdFLE1BQU0sT0FBTyxXQUFXO0lBd0J0QixZQUNFLFFBQWEsRUFDYixLQUFhLEVBQ2IsSUFBVyxFQUNYLFdBQThCLEVBQzlCLFFBQWlCLEVBQ2pCLElBQWEsRUFDYixPQUFPLEdBQUcsS0FBSztRQTlCQSxjQUFTLEdBQUcsTUFBTSxDQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLFdBQU0sR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV6QixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTdCLFVBQUssR0FBRyxNQUFNLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEMsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxF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QUM7b0JBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCByZXNvbHZlUGF0aCBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcclxuaW1wb3J0IHsgZXZhbHVhdGUsIGlzRGVmaW5lZCwgaXNOdWxsIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xyXG5pbXBvcnQgeyBTb3J0VHlwZSwgVGFibGVEYXRhQ29sdW1uLCBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSwgVGFibGVTdWJoZWFkZXIgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcclxuaW1wb3J0IHsgYXJlQWxsRGF0YUNvbHVtbnMsIGlzVGFibGVTdWJoZWFkZXIsIG1lcmdlMmRBcnJheXMgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBcmRUYWJsZVJvdyB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbURhdGEgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGl0ZW1EYXRhID0gdGhpcy5faXRlbURhdGEuYXNSZWFkb25seSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcclxuICByZWFkb25seSBpbmRleCA9IHRoaXMuX2luZGV4LmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNFbXB0eSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgaXNFbXB0eSA9IHRoaXMuX2lzRW1wdHkuYXNSZWFkb25seSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhID0gc2lnbmFsPGFueVtdPihbXSk7XHJcbiAgcmVhZG9ubHkgZGF0YSA9IHRoaXMuX2RhdGEuYXNSZWFkb25seSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhQ29sdW1ucyA9IHNpZ25hbDxUYWJsZURhdGFDb2x1bW5bXT4oW10pO1xyXG4gIHJlYWRvbmx5IGRhdGFDb2x1bW5zID0gdGhpcy5fZGF0YUNvbHVtbnMuYXNSZWFkb25seSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jbGFzcyA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuICByZWFkb25seSBjbGFzcyA9IHRoaXMuX2NsYXNzLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IGJvbGQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IHNlbGVjdGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSBoaWdobGlnaHRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaXRlbURhdGE6IGFueSxcclxuICAgIGluZGV4OiBudW1iZXIsXHJcbiAgICBkYXRhOiBhbnlbXSxcclxuICAgIGRhdGFDb2x1bW5zOiBUYWJsZURhdGFDb2x1bW5bXSxcclxuICAgIGRpc2FibGVkOiBib29sZWFuLFxyXG4gICAgYm9sZDogYm9vbGVhbixcclxuICAgIGlzRW1wdHkgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgdGhpcy5faXRlbURhdGEuc2V0KGl0ZW1EYXRhKTtcclxuICAgIHRoaXMuX2luZGV4LnNldChpbmRleCk7XHJcbiAgICB0aGlzLl9kYXRhLnNldChkYXRhKTtcclxuICAgIHRoaXMuX2RhdGFDb2x1bW5zLnNldChkYXRhQ29sdW1ucyk7XHJcbiAgICB0aGlzLmRpc2FibGVkLnNldChkaXNhYmxlZCk7XHJcbiAgICB0aGlzLmJvbGQuc2V0KGJvbGQpO1xyXG4gICAgdGhpcy5faXNFbXB0eS5zZXQoaXNFbXB0eSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBuZXdFbXB0eUNlbGwoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG5ldyBBcmRUYWJsZVJvdyhudWxsLCBpbmRleCwgW10sIFtdLCBmYWxzZSwgZmFsc2UsIHRydWUpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlSXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHMge1xyXG4gIHJlYWRvbmx5IHJvd0Rpc2FibGVkRnJvbTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IHJvd0JvbGRGcm9tOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUl0ZW1TdG9yYWdlSG9zdCB7XHJcbiAgcmVhZG9ubHkgcm93RGlzYWJsZWRGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XHJcbiAgcmVhZG9ubHkgcm93Qm9sZEZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmc+PjtcclxuICByZWFkb25seSBpbnZlcnRSb3dEaXNhYmxlZDogU2lnbmFsPE51bGxhYmxlPGJvb2xlYW4+PjtcclxuICByZWFkb25seSBpbnZlcnRSb3dCb2xkOiBTaWduYWw8TnVsbGFibGU8Ym9vbGVhbj4+O1xyXG4gIHJlYWRvbmx5IGRhdGE6IFNpZ25hbDxOdWxsYWJsZTxhbnk+PltdO1xyXG4gIHJlYWRvbmx5IERFRkFVTFRTOiBUYWJsZUl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzO1xyXG4gIHJlYWRvbmx5IG1heFNlbGVjdGVkSXRlbXM6IFNpZ25hbDxOdWxsYWJsZTxudW1iZXI+PjtcclxuICByZWFkb25seSB0cmVhdERhdGFTb3VyY2VBc1N0cmluZzogU2lnbmFsPE51bGxhYmxlPGJvb2xlYW4+PjtcclxuXHJcbiAgcmVhZG9ubHkgcGFnaW5hdGVkOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgcmVhZG9ubHkgcGFnaW5hdGlvblN0cmF0ZWd5OiBTaWduYWw8VGFibGVQYWdpbmF0aW9uU3RyYXRlZ3k+O1xyXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZTogU2lnbmFsPG51bWJlcj47XHJcbiAgcmVhZG9ubHkgcGFnZTogU2lnbmFsPG51bWJlcj47XHJcbn1cclxuZXhwb3J0IGNsYXNzIEhlYWRlckNlbGwge1xyXG4gIHJlYWRvbmx5IGNlbGwgPSBzaWduYWw8VGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXI+KHVuZGVmaW5lZCBhcyBhbnkpO1xyXG4gIHJlYWRvbmx5IGNvbHNwYW4gPSBzaWduYWw8bnVtYmVyPigxKTtcclxuICByZWFkb25seSByb3dzcGFuID0gc2lnbmFsPG51bWJlcj4oMSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNlbGw6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyLCBjb2xzcGFuID0gMSwgcm93c3BhbiA9IDEpIHtcclxuICAgIHRoaXMuY2VsbC5zZXQoY2VsbCk7XHJcbiAgICB0aGlzLmNvbHNwYW4uc2V0KGNvbHNwYW4pO1xyXG4gICAgdGhpcy5yb3dzcGFuLnNldChyb3dzcGFuKTtcclxuICB9XHJcblxyXG4gIGdldCB3aWR0aCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGwoKTtcclxuICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKGNlbGwpKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLl9nZXRXaWR0aChjZWxsLndpZHRoKTtcclxuICB9XHJcbiAgZ2V0IG1pbldpZHRoKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgY2VsbCA9IHRoaXMuY2VsbCgpO1xyXG4gICAgaWYgKGlzVGFibGVTdWJoZWFkZXIoY2VsbCkpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldFdpZHRoKGNlbGwubWluV2lkdGgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUaHJhbnNmb3JtcyBhIG51bWVyaWMgd2lkdGggaW50byBhIENTUyBzdHJpbmcgaWYgbmVlZGVkLiBQdXJlIGZ1bmN0aW9uLlxyXG4gICAqIEBwYXJhbSB3aWR0aCB0aGUgd2lkdGggdG8gYmUgY29udmVydGVkLlxyXG4gICAqIEByZXR1cm5zIFRoZSB3aWR0aCBleHByZXNzZWQgYXMgYSBDU1MtY29tcGF0aWJsZSBzdHJpbmcgb3IgbnVsbC5cclxuICAgKi9cclxuICBwcml2YXRlIF9nZXRXaWR0aCh3aWR0aDogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIXdpZHRoKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInKSByZXR1cm4gYCR7d2lkdGh9cHhgO1xyXG4gICAgcmV0dXJuIHdpZHRoO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlSXRlbVN0b3JhZ2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zID0gc2lnbmFsPEFyZFRhYmxlUm93W10+KFtdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0ZWRJdGVtcyA9IHNpZ25hbDxBcmRUYWJsZVJvd1tdPihbXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFDb2x1bW5zID0gc2lnbmFsPFRhYmxlRGF0YUNvbHVtbltdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaGVhZGVyQ2VsbHMgPSBzaWduYWw8SGVhZGVyQ2VsbFtdW10+KFtdKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfYXJkUGFyZW50Q29tcDogVGFibGVJdGVtU3RvcmFnZUhvc3QpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYWxsIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGl0ZW1zID0gdGhpcy5faXRlbXMuYXNSZWFkb25seSgpO1xyXG4gIHJlYWRvbmx5IHNvcnRlZEl0ZW1zID0gdGhpcy5fc29ydGVkSXRlbXMuYXNSZWFkb25seSgpO1xyXG4gIC8qKlxyXG4gICAqIEdldHMgaXRlbXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBzdGF0ZS5cclxuICAgKi9cclxuICByZWFkb25seSBwYWdpbmF0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5wYWdpbmF0ZWQoKSB8fCB0aGlzLl9hcmRQYXJlbnRDb21wLnBhZ2luYXRpb25TdHJhdGVneSgpID09PSBUYWJsZVBhZ2luYXRpb25TdHJhdGVneS5Ob29wKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnRlZEl0ZW1zKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYWdlID0gdGhpcy5fYXJkUGFyZW50Q29tcC5wYWdlKCk7XHJcbiAgICBjb25zdCBJUFAgPSB0aGlzLl9hcmRQYXJlbnRDb21wLml0ZW1zUGVyUGFnZSgpO1xyXG4gICAgY29uc3QgaXRlbXNTdGFydCA9IChwYWdlIC0gMSkgKiBJUFA7XHJcbiAgICBjb25zdCBpdGVtc0VuZCA9IHBhZ2UgKiBJUFA7XHJcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRJdGVtcygpLnNsaWNlKGl0ZW1zU3RhcnQsIGl0ZW1zRW5kKTtcclxuICB9KTtcclxuICAvKipcclxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkPEFyZFRhYmxlUm93W10+KCgpID0+IHRoaXMuaXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKCkpKTtcclxuICAvKipcclxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRJdGVtcyA9IGNvbXB1dGVkPEFyZFRhYmxlUm93W10+KCgpID0+IHRoaXMuaXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmhpZ2hsaWdodGVkKCkpKTtcclxuICAvKipcclxuICAgKiBHZXRzIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgaGlnaGxpZ2h0YWJsZSBpZiBpdCBpcyAqKm5vdCoqIGRpc2FibGVkLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGhpZ2hsaWdodGFibGVJdGVtcyA9IGNvbXB1dGVkPEFyZFRhYmxlUm93W10+KCgpID0+IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSkpO1xyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHZhbHVlcyBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcygpKSk7XHJcbiAgLyoqXHJcbiAgICogTWFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIHRoZWlyIHZhbHVlcy5cclxuICAgKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGNvbnZlcnQgdG8gdmFsdWUuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbSB2YWx1ZXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaXRlbXNUb1ZhbHVlKGl0ZW1zOiBBcmRUYWJsZVJvd1tdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uaXRlbURhdGEoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIGl0ZW0gaXMgaGlnaGxpZ2h0ZWQsIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICByZWFkb25seSBpc0FueUl0ZW1IaWdobGlnaHRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBhbnkgaXRlbSBpbiB0aGUgdGFibGUgaXMgc2VsZWN0ZWQuXHJcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgYW55IGl0ZW0gaXMgc2VsZWN0ZWQuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaXNBbnlJdGVtU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwKTtcclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgYWxsIGl0ZW1zIGluIHRoZSB0YWJsZSBhcmUgc2VsZWN0ZWQuXHJcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgYWxsIGl0ZW1zIGFyZSBzZWxlY3RlZC5cclxuICAgKi9cclxuICByZWFkb25seSBhcmVBbGxTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA9PT0gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCgpKS5sZW5ndGgpO1xyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0YWJsZSBpdGVtcyBhbmQgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IGxpbWl0LiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cclxuICAgKlxyXG4gICAqICoqVExEUioqOiB0cnVlIGlmIGBtYXhTZWxlY3RlZEl0ZW1zYCBpcyBkZWZpbmVkIGFuZCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG1hdGNoZXMgdGhhdCB2YWx1ZS5cclxuICAgKi9cclxuICByZWFkb25seSBpc0l0ZW1MaW1pdFJlYWNoZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMoKTtcclxuICAgIGlmICghaXNEZWZpbmVkKG1heCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1heCA8PSB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGg7XHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGhlYWRlciBjZWxscyBvZiB0aGUgdGFibGUuXHJcbiAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaGVhZGVyQ2VsbHMgPSB0aGlzLl9oZWFkZXJDZWxscy5hc1JlYWRvbmx5KCk7XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIHRoZSB0YWJsZSBoYXMgZGVmaW5lZCBjb2x1bW5zLlxyXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIGlmIHRoZSB0YWJsZSBoYXMgZGVmaW5lZCBjb2x1bW5zLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGhhc0RlZmluZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGF0YUNvbHVtbnMoKS5sZW5ndGggPiAwKTtcclxuXHJcbiAgLy8hIHNldHRpbmcgY29sdW1uc1xyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGNvbHVtbnMgb2YgdGhlIHRhYmxlLlxyXG4gICAqIEBwYXJhbSBjb2xzIGFuIGFycmF5IG9mIHRhYmxlIGRhdGEgY29sdW1ucyBvciB0YWJsZSBzdWJoZWFkZXJzLlxyXG4gICAqL1xyXG4gIHNldENvbHVtbnMoY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXhOZXN0aW5nTGV2ZWwgPSB0aGlzLl9nZXRIZWFkZXJNYXhOZXN0aW5nKGNvbHMpO1xyXG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSB0aGlzLl9tYXBDb2x1bW5zVG9BcnJheShjb2xzLCBtYXhOZXN0aW5nTGV2ZWwsIDApO1xyXG4gICAgdGhpcy5faGVhZGVyQ2VsbHMuc2V0KHRoaXMuX2ZpbHRlckhlYWRlckNlbGxzKGhlYWRlckNlbGxzKSk7XHJcbiAgICB0aGlzLl9kYXRhQ29sdW1ucy5zZXQodGhpcy5fZXh0cmFjdERhdGFTb3VyY2VzKGNvbHMpKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmlsdGVycyBvdXQgbnVsbCB2YWx1ZXMgZnJvbSB0aGUgaGVhZGVyIGNlbGxzIGFycmF5LiBQdXJlIGZ1bmN0aW9uLlxyXG4gICAqIEBwYXJhbSBjZWxscyBhIDJEIGFycmF5IG9mIGhlYWRlciBjZWxscyBvciBudWxsIHZhbHVlcy5cclxuICAgKiBAcmV0dXJucyBhIDJEIGFycmF5IG9mIGhlYWRlciBjZWxscyB3aXRob3V0IG51bGwgdmFsdWVzIGFuZCBlbXB0eSBhcnJheXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZmlsdGVySGVhZGVyQ2VsbHMoY2VsbHM6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdKTogSGVhZGVyQ2VsbFtdW10ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxscy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjZWxsc1tpXSA9IGNlbGxzW2ldLmZpbHRlcih2ID0+IHYgIT09IG51bGwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNlbGxzLmZpbHRlcihyb3cgPT4gcm93Lmxlbmd0aCkgYXMgSGVhZGVyQ2VsbFtdW107XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3RzIHRoZSBkYXRhIHNvdXJjZXMgZnJvbSB0aGUgY29sdW1ucyBhcnJheS4gUHVyZSBmdW5jdGlvbi5cclxuICAgKiBAcGFyYW0gY29scyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMgb3IgdGFibGUgc3ViaGVhZGVycy5cclxuICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZXh0cmFjdERhdGFTb3VyY2VzKGNvbHM6IChUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcilbXSk6IFRhYmxlRGF0YUNvbHVtbltdIHtcclxuICAgIGNvbnN0IGRhdGFDb2x1bW5zOiBUYWJsZURhdGFDb2x1bW5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKCFpc1RhYmxlU3ViaGVhZGVyKGNvbCkpIHtcclxuICAgICAgICBkYXRhQ29sdW1ucy5wdXNoKGNvbCk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZGF0YUNvbHVtbnMucHVzaCguLi50aGlzLl9leHRyYWN0RGF0YVNvdXJjZXMoY29sLmNoaWxkcmVuKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGFDb2x1bW5zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtYXhpbXVtIG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuIFB1cmUgZnVuY3Rpb24uXHJcbiAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXHJcbiAgICogQHJldHVybnMgdGhlIG1heGltdW0gbmVzdGluZyBsZXZlbCBhcyBhIG51bWJlci5cclxuICAgKi9cclxuICBwcml2YXRlIF9nZXRIZWFkZXJNYXhOZXN0aW5nKGNvbHM6IChUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcilbXSk6IG51bWJlciB7XHJcbiAgICBpZiAoYXJlQWxsRGF0YUNvbHVtbnMoY29scykpIHJldHVybiAxO1xyXG4gICAgbGV0IG1heCA9IDE7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzLmZpbHRlcih2ID0+IGlzVGFibGVTdWJoZWFkZXIodikpIGFzIFRhYmxlU3ViaGVhZGVyW10pIHtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gMSArIHRoaXMuX2dldEhlYWRlck1heE5lc3RpbmcoY29sLmNoaWxkcmVuKTtcclxuICAgICAgaWYgKGhlaWdodCA+IG1heCkgbWF4ID0gaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1heDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWFwcyB0aGUgY29sdW1ucyB0cmVlIHRvIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzIG9yIG51bGwgdmFsdWVzLiBQdXJlIGZ1bmN0aW9uLlxyXG4gICAqIEBwYXJhbSBjb2xzIGFuIGFycmF5IG9mIHRhYmxlIGRhdGEgY29sdW1ucyBvciB0YWJsZSBzdWJoZWFkZXJzLlxyXG4gICAqIEBwYXJhbSBtYXhOZXN0aW5nIHRoZSBtYXhpbXVtIG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXHJcbiAgICogQHBhcmFtIGN1cnJlbnROZXN0aW5nIHRoZSBjdXJyZW50IG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXHJcbiAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMgb3IgbnVsbCB2YWx1ZXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbWFwQ29sdW1uc1RvQXJyYXkoXHJcbiAgICBjb2xzOiAoVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpW10sXHJcbiAgICBtYXhOZXN0aW5nOiBudW1iZXIsXHJcbiAgICBjdXJyZW50TmVzdGluZzogbnVtYmVyXHJcbiAgKTogKEhlYWRlckNlbGwgfCBudWxsKVtdW10ge1xyXG4gICAgaWYgKGFyZUFsbERhdGFDb2x1bW5zKGNvbHMpKSB7XHJcbiAgICAgIHJldHVybiBbY29scy5tYXAoY29sID0+IG5ldyBIZWFkZXJDZWxsKGNvbCwgMSwgbWF4TmVzdGluZyAtIGN1cnJlbnROZXN0aW5nKSldO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGVhZGVyQ2VsbHM6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdID0gW1tdXTtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKCFpc1RhYmxlU3ViaGVhZGVyKGNvbCkpIHtcclxuICAgICAgICBoZWFkZXJDZWxsc1swXS5wdXNoKG5ldyBIZWFkZXJDZWxsKGNvbCwgMSwgbWF4TmVzdGluZyAtIGN1cnJlbnROZXN0aW5nKSk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY2hpbGRDZWxsczogKEhlYWRlckNlbGwgfCBudWxsKVtdW10gPSBbW10sIC4uLnRoaXMuX21hcENvbHVtbnNUb0FycmF5KGNvbC5jaGlsZHJlbiwgbWF4TmVzdGluZywgY3VycmVudE5lc3RpbmcgKyAxKV07XHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IGNoaWxkQ2VsbHMubGVuZ3RoIC0gMTtcclxuICAgICAgY29uc3Qgd2lkdGggPSBjaGlsZENlbGxzWzFdLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykge1xyXG4gICAgICAgIGhlYWRlckNlbGxzLnB1c2goW251bGxdKTtcclxuICAgICAgfVxyXG4gICAgICBoZWFkZXJDZWxsc1swXS5wdXNoKG5ldyBIZWFkZXJDZWxsKGNvbCwgd2lkdGgsIDEpKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGhlYWRlckNlbGxzWzBdLnB1c2gobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgbWVyZ2UyZEFycmF5cyhoZWFkZXJDZWxscywgY2hpbGRDZWxscyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGVhZGVyQ2VsbHM7XHJcbiAgfVxyXG5cclxuICAvLyEgc2V0dGluZyBpdGVtc1xyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLiBUYWtlcyBpbnRvIGFjY291bnQgdGhlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciBgcm93RGlzYWJsZWRGcm9tYCwgYHJvd0JvbGRGcm9tYCwgYW5kIGByb3dIaWdobGlnaHRlZEZyb21gLlxyXG4gICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBzZXQgYXMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc0RlZmluZWRDb2x1bW5zKCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtYXBwZWRJdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaSkgPT4gdGhpcy5fc2V0SXRlbXNNYXBGbihpdGVtLCBpKSk7XHJcbiAgICB0aGlzLl9pdGVtcy5zZXQobWFwcGVkSXRlbXMpO1xyXG4gICAgdGhpcy5fc29ydGVkSXRlbXMuc2V0KG1hcHBlZEl0ZW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWFwcyByYXcgaXRlbSBkYXRhIHRvIGFuIHtAbGluayBBcmRUYWJsZVJvd30gb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IHJhd0l0ZW1EYXRhIC0gVGhlIHJhdyBkYXRhIG9mIHRoZSBpdGVtLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cclxuICAgKiBAcmV0dXJucyB7QXJkVGFibGVSb3d9IFJldHVybnMgYW4gQXJkVGFibGVSb3cgb2JqZWN0IHdpdGggbWFwcGVkIHByb3BlcnRpZXMuXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9zZXRJdGVtc01hcEZuKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIpOiBBcmRUYWJsZVJvdyB7XHJcbiAgICAvL2dldCBkYXRhXHJcbiAgICBjb25zdCBbZGF0YSwgZGF0YUNvbHVtbnNdID0gdGhpcy5fZ2V0Um93RGF0YShyYXdJdGVtRGF0YSwgaW5kZXgpO1xyXG5cclxuICAgIC8vZ2V0IGJvbGRcclxuICAgIGNvbnN0IHJvd0JvbGRGcm9tUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAucm93Qm9sZEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLnJvd0JvbGRGcm9tO1xyXG4gICAgbGV0IGJvbGQgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgcm93Qm9sZEZyb21QYXRoKTtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydFJvd0JvbGQoKSkge1xyXG4gICAgICBib2xkID0gIWJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXQgZGlzYWJsZWRcclxuICAgIGNvbnN0IGRpc2FibGVkUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAucm93RGlzYWJsZWRGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5yb3dEaXNhYmxlZEZyb207XHJcbiAgICBsZXQgZGlzYWJsZWQgPSBldmFsdWF0ZShyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZGlzYWJsZWRQYXRoKSk7XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5pbnZlcnRSb3dEaXNhYmxlZCgpKSB7XHJcbiAgICAgIGRpc2FibGVkID0gIWRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgQXJkVGFibGVSb3cocmF3SXRlbURhdGEsIGluZGV4LCBkYXRhLCBkYXRhQ29sdW1ucywgZGlzYWJsZWQsIGJvbGQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgZGF0YSBmb3IgYSByb3cgYmFzZWQgb24gZGF0YSBjb2x1bW5zIGNvbmZpZ3VyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2FueX0gcmF3SXRlbURhdGEgLSBUaGUgcmF3IGRhdGEgb2YgdGhlIGl0ZW0uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtLlxyXG4gICAqIEByZXR1cm5zIHthbnlbXX0gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSByb3cgZGF0YS5cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2dldFJvd0RhdGEocmF3SXRlbURhdGE6IGFueSwgaW5kZXg6IG51bWJlcik6IFthbnlbXSwgVGFibGVEYXRhQ29sdW1uW11dIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBfY29scyA9IHRoaXMuX2RhdGFDb2x1bW5zKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9jb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRhdGFDb2x1bW4gPSBfY29sc1tpXTtcclxuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IGRhdGFDb2x1bW4uZGF0YVNvdXJjZTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC50cmVhdERhdGFTb3VyY2VBc1N0cmluZygpKSB7XHJcbiAgICAgICAgICBkYXRhLnB1c2gocmF3SXRlbURhdGFbc291cmNlUGF0aF0pO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRhdGEucHVzaChyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgc291cmNlUGF0aCkpO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzb3VyY2VQYXRoLnR5cGUgPT09ICdhdXRvY291bnQnKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGluZGV4ICsgMSk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNvdXJjZVBhdGgudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgIGRhdGEucHVzaCh7IF9hcmRDaGVja2JveDogdHJ1ZSwgaW5kZXggfSk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc291cmNlU3RyaW5nID0gdHlwZW9mIHNvdXJjZVBhdGggPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkoc291cmNlUGF0aCkgOiBzb3VyY2VQYXRoO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1GVDUwNTI6IFVuZXhwZWN0ZWQgZGF0YSBzb3VyY2UgXCIke3NvdXJjZVN0cmluZ31cIiBhdCBpbmRleCAke2l9LmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtkYXRhLCB0aGlzLl9kYXRhQ29sdW1ucygpXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBpdGVtIHN0b3JhZ2UuIFNlbGVjdHMgdGhlIGNvcnJlY3QgaXRlbXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhbHVlcywgd2FybmluZyB0aGUgdXNlciBpZiB0aGUgdmFsdWUgaXMgbm90IGZvdW5kLlxyXG4gICAqIEBwYXJhbSBpbmRleGVzIFRoZSB2YWx1ZSBvZiB0aGUgbmdNb2RlbCB0byBzZXQuXHJcbiAgICovXHJcbiAgd3JpdGVWYWx1ZShpbmRleGVzOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xyXG4gICAgdGhpcy5zZWxlY3RJdGVtKC4uLmluZGV4ZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHNlbGVjdGluZyBpdGVtc1xyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBhbiBpdGVtIHdpdGggdGhlIGdpdmVuIGluZGV4IGlzIHNlbGVjdGVkLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byBjaGVjay5cclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gX3RydWVfIGlmIHRoZSBpdGVtIGlzIHNlbGVjdGVkLCBvdGhlcndpc2UgX2ZhbHNlXy5cclxuICAgKi9cclxuICBpc0l0ZW1TZWxlY3RlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zKCkuc29tZShpdGVtID0+IGl0ZW0uaW5kZXgoKSA9PT0gaW5kZXgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZWxlY3RzIGFsbCBpdGVtcy5cclxuICAgKlxyXG4gICAqIEFjY291bnRzIGZvciB0aGUgbGltaXQgb2YgY29uY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQuXHJcbiAgICogQHJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIHR3byBhcnJheXM6XHJcbiAgICogKiBBbiBhcnJheSBvZiBpdGVtcyBzZWxlY3RlZC5cclxuICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIGZhaWxlZCB0byBzZWxlY3QuXHJcbiAgICovXHJcbiAgc2VsZWN0QWxsKCk6IFthbnlbXSwgYW55W11dIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdEl0ZW0oLi4udGhpcy5faXRlbXMoKS5tYXAodiA9PiB2LmluZGV4KCkpKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcy5cclxuICAgKlxyXG4gICAqIElmIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSB2YWx1ZSB0byBiZSBzZWxlY3RlZCBhdCBhbGwgdGltZXMsIHRoZSBmaXJzdCBzZWxlY3RlZCBpdGVtcyBpcyBsZWZ0IHNlbGVjdGVkLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cclxuICAgKi9cclxuICB1bnNlbGVjdEFsbCgpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNlbGVjdGVkKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHNlbGVjdGVkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcywgbm8gbWF0dGVyIHdoYXQgdGhlIGNvbXBvbmVudCBzZXR0aW5ncyBhcmUuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgY2xlYXJlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2ZvcmNlVW5zZWxlY3RBbGwoKTogYW55W10ge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBzZWxlY3RlZCkge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShzZWxlY3RlZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgb25lIG9yIG11bHRpcGxlIGl0ZW1zLlxyXG4gICAqXHJcbiAgICogQWNjb3VudHMgZm9yIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpbmRleGVzIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgc2VsZWN0ZWQuXHJcbiAgICogQHJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIHR3byBhcnJheXM6XHJcbiAgICogLSBBbiBhcnJheSBvZiBpdGVtcyBzZWxlY3RlZC5cclxuICAgKiAtIEFuIGFycmF5IG9mIGl0ZW1zIGZhaWxlZCB0byBzZWxlY3QuXHJcbiAgICovXHJcbiAgc2VsZWN0SXRlbSguLi5pbmRleGVzOiBudW1iZXJbXSk6IFthbnlbXSwgYW55W11dIHtcclxuICAgIGNvbnN0IGl0ZW1zVG9CZVNlbGVjdGVkID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCgpICYmIGluZGV4ZXMuaW5jbHVkZXMoaXRlbS5pbmRleCgpKSk7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQoKSkge1xyXG4gICAgICByZXR1cm4gW1tdLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNUb0JlU2VsZWN0ZWQpXTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcclxuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQgPSBbXTtcclxuICAgIGxldCBpdGVtc0xlZnRVbnRpbExpbWl0ID0gKHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpID8/IEluZmluaXR5KSAtIHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aDtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVTZWxlY3RlZCkge1xyXG4gICAgICBpdGVtc1NlbGVjdGVkQ291bnQrKztcclxuICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQoKSkgY29udGludWU7XHJcbiAgICAgIGlmIChpdGVtc0xlZnRVbnRpbExpbWl0IDw9IDApIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBpdGVtc0xlZnRVbnRpbExpbWl0LS07XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KHRydWUpO1xyXG4gICAgICBpdGVtc1NlbGVjdGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbXNGYWlsZWRUb1NlbGVjdCA9IGl0ZW1zVG9CZVNlbGVjdGVkLnNsaWNlKGl0ZW1zU2VsZWN0ZWRDb3VudCAtIDEpO1xyXG4gICAgcmV0dXJuIFt0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNTZWxlY3RlZCksIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc0ZhaWxlZFRvU2VsZWN0KV07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVuc2VsZWN0cyBvbmUgb3IgbXVsdGlwbGUgaXRlbXMuXHJcbiAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgdW5zZWxlY3RlZC5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXHJcbiAgICovXHJcbiAgdW5zZWxlY3RJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogYW55W10ge1xyXG4gICAgY29uc3QgaXRlbXNUb0JlVW5zZWxlY3RlZCA9IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gaW5kZXhlcy5pbmNsdWRlcyhpdGVtLmluZGV4KCkpKTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVVbnNlbGVjdGVkKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zVG9CZVVuc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGhpZ2hsaWdodGluZyBpdGVtc1xyXG4gIC8qKlxyXG4gICAqIFVuaGlnaGxpZ2h0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHVuaGlnaGxpZ2h0QWxsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBoaWdobGlnaHRlZCkge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgdGhlIGdpdmVuIGl0ZW0sIHdoaWxlIHVuaGlnaGxpZ2h0aW5nIGFsbCBvdGhlciBpdGVtcy4gRG9lcyBub3RoaW5nIHdoZW4gdGhlIGl0ZW0gaXMgZGlzYWJsZWQuXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIGJlIGhpZ2hsaWdodGVkLlxyXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodFNpbmdsZUl0ZW0oaW5kZXg6IG51bWJlcik6IEFyZFRhYmxlUm93IHwgbnVsbCB7XHJcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGluZGV4KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXHJcbiAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXHJcbiAgICogQHJldHVybnMgVGhlIGxhc3QgaGlnaGxpZ2h0ZWQgaXRlbS5cclxuICAgKi9cclxuICBoaWdobGlnaHRJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogQXJkVGFibGVSb3cge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLl9pdGVtcygpLmZpbHRlcihpdGVtID0+IGluZGV4ZXMuaW5jbHVkZXMoaXRlbS5pbmRleCgpKSk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxyXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbSBpbmRleGVzIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXHJcbiAgICovXHJcbiAgdW5oaWdobGlnaHRJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogdm9pZCB7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gaW5kZXhlcy5pbmNsdWRlcyhpdGVtLmluZGV4KCkpKTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIHRoZSBmaXJzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXHJcbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XHJcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XHJcblxyXG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5oaWdobGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpLmluZGV4KCk7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgdGhlIGxhc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxyXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XHJcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XHJcblxyXG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5oaWdobGlnaHRhYmxlSXRlbXMoKS5sYXN0KCkuaW5kZXgoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyBhbGwgbm9uLWRpc2FibGVkIGl0ZW1zLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodEFsbEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuaGlnaGxpZ2h0YWJsZUl0ZW1zKCkubWFwKHYgPT4gdi5pbmRleCgpKTtcclxuICAgIHRoaXMuaGlnaGxpZ2h0SXRlbSguLi5pdGVtc1RvSGlnaGxpZ2h0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyB0aGUgbmV4dCBub24tZGlzYWJsZWQgaXRlbSBkZWZpbmVkIGJ5IHRoZSBvZmZzZXQgYW1vdW50LlxyXG4gICAqXHJcbiAgICogSWYgYGhhc1NoaWZ0YCBpcyBzZXQgdG8gdHJ1ZSwgYWxsIG9yaWdpbmFsbHkgaGlnaGxpZ2h0ZWQgaXRlbXMgYXJlIGtlcHQuIE90aGVyd2lzZSwgYWxsIG9yaWdpbmFsIGl0ZW1zIGFyZSB1bnNlbGVjdGVkLlxyXG4gICAqIEBwYXJhbSBvZmZzZXQgVGhlIGFtb3VudCBvZiBpdGVtcyB0byBvZmZzZXQgdGhlIGhpZ2hsaWdodCBieS5cclxuICAgKiBAcGFyYW0gaGFzU2hpZnQgV2hldGhlciB0aGUgdXNlciBoYXMgdGhlIHNoaWZ0IGtleSBwcmVzc2VkLlxyXG4gICAqIEByZXR1cm5zIFRoZSBpdGVtIGhpZ2hsaWdodGVkLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRUYWJsZVJvdyB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmlzQW55SXRlbUhpZ2hsaWdodGVkKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcygpLmxhc3QoKTtcclxuICAgIGNvbnN0IGl0ZW1zV2l0aG91dERpc2FibGVkID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoXHJcbiAgICAgIGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSAmJiAoIXRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkgfHwgaXRlbS5zZWxlY3RlZCgpKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4KCkgPT09IGN1cnJlbnRJdGVtLmluZGV4KCkpO1xyXG5cclxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5JdGVtcyArIG9mZnNldDtcclxuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4ICs9IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IGl0ZW1zV2l0aG91dERpc2FibGVkW25leHRJdGVtSW5kZXhdO1xyXG5cclxuICAgIGlmIChoYXNTaGlmdCkge1xyXG4gICAgICBpZiAoaXRlbVRvSGlnaGxpZ2h0LmhpZ2hsaWdodGVkKCkpIHtcclxuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0SXRlbShuZXh0SXRlbUluZGV4KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKG5leHRJdGVtSW5kZXgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShuZXh0SXRlbUluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vISBzb3J0aW5nXHJcbiAgcHJpdmF0ZSBfY3VycmVudFNvcnRDb2x1bW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRTb3J0VHlwZTogU29ydFR5cGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgdG9nZ2xlQ3VycmVudFNvcnRDb2x1bW4oY29sdW1uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50U29ydENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50U29ydFR5cGUgPT09IFNvcnRUeXBlLkFzY2VuZGluZykge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IFNvcnRUeXBlLkRlc2NlbmRpbmc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFNvcnRUeXBlID0gU29ydFR5cGUuQXNjZW5kaW5nO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2dlbmVyYXRlU29ydGVkUm93cyh0cnVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudFNvcnRDb2x1bW4gPSBjb2x1bW47XHJcbiAgICB0aGlzLl9jdXJyZW50U29ydFR5cGUgPSBTb3J0VHlwZS5Bc2NlbmRpbmc7XHJcbiAgICB0aGlzLl9nZW5lcmF0ZVNvcnRlZFJvd3MoKTtcclxuICB9XHJcbiAgcmVzZXRTb3J0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudFNvcnRDb2x1bW4gPSBudWxsO1xyXG4gICAgdGhpcy5fY3VycmVudFNvcnRUeXBlID0gbnVsbDtcclxuICAgIHRoaXMuX3NvcnRlZEl0ZW1zLnNldChbLi4udGhpcy5pdGVtcygpXSk7XHJcbiAgfVxyXG4gIGdldENvbHVtblNvcnRUeXBlKGNvbHVtbjogbnVtYmVyKTogU29ydFR5cGUgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50U29ydENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U29ydFR5cGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2VuZXJhdGVTb3J0ZWRSb3dzKGp1c3RSZXZlcnNlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGp1c3RSZXZlcnNlKSB7XHJcbiAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zKCkucmV2ZXJzZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzb3J0Q29sdW1uSW5kZXggPSB0aGlzLl9jdXJyZW50U29ydENvbHVtbjtcclxuICAgIGlmIChpc051bGwoc29ydENvbHVtbkluZGV4KSB8fCAhdGhpcy5fY3VycmVudFNvcnRUeXBlKSB7XHJcbiAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zLnNldCh0aGlzLml0ZW1zKCkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzb3J0Q29sdW1uID0gdGhpcy5fZGF0YUNvbHVtbnMoKVtzb3J0Q29sdW1uSW5kZXhdO1xyXG4gICAgaWYgKCFzb3J0Q29sdW1uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBgQVJELUlTNTA1OTogRW5jb3VudGVyZWQgYW4gaXNzdWUgaW4gPGFyZC10YWJsZT46IGNvdWxkIG5vdCBmaW5kIHRoZSBjb2x1bW4gd2l0aCBpbmRleCAke3NvcnRDb2x1bW5JbmRleH0uIFRoaXMgaXMgbW9zdCBsaWtlbHkgYW4gQXJkaXVtIFVJIGJ1ZywgcGxlYXNlIHJlcG9ydCBpdCB0byB0aGUgY3JlYXRvcnMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9PT0gU29ydFR5cGUuQXNjZW5kaW5nID8gMSA6IC0xO1xyXG4gICAgY29uc3Qgc29ydEZuID1cclxuICAgICAgc29ydENvbHVtbi5zb3J0Rm4gPz9cclxuICAgICAgKChhLCBiKSA9PiB7XHJcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gZGlyZWN0aW9uO1xyXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xICogZGlyZWN0aW9uO1xyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zb3J0ZWRJdGVtcy5zZXQoWy4uLnRoaXMuaXRlbXMoKV0uc29ydCgoYSwgYikgPT4gc29ydEZuKGEuZGF0YSgpW3NvcnRDb2x1bW5JbmRleF0sIGIuZGF0YSgpW3NvcnRDb2x1bW5JbmRleF0pKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|