@ardium-ui/ui 1.0.1 → 1.0.3
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/README.md +25 -25
- package/esm2022/lib/_internal/boolean-component.mjs +4 -4
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +4 -4
- package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +5 -5
- package/esm2022/lib/_internal/disablable-component.mjs +4 -4
- package/esm2022/lib/_internal/focusable-component.mjs +4 -4
- 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 +4 -4
- package/esm2022/lib/_internal/queue.mjs +1 -1
- package/esm2022/lib/_internal/selectable-list-component.mjs +4 -4
- package/esm2022/lib/badge/badge.directive.mjs +4 -4
- package/esm2022/lib/badge/badge.module.mjs +5 -5
- package/esm2022/lib/badge/badge.types.mjs +1 -1
- package/esm2022/lib/buttons/_button-base.mjs +4 -4
- package/esm2022/lib/buttons/button/button.component.mjs +4 -4
- package/esm2022/lib/buttons/button/button.module.mjs +5 -5
- package/esm2022/lib/buttons/fab/fab.component.mjs +4 -4
- package/esm2022/lib/buttons/fab/fab.module.mjs +5 -5
- package/esm2022/lib/buttons/general-button.types.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +4 -4
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +5 -5
- package/esm2022/lib/calendar/calendar.component.mjs +4 -4
- package/esm2022/lib/calendar/calendar.directives.mjs +25 -25
- package/esm2022/lib/calendar/calendar.helpers.mjs +1 -1
- package/esm2022/lib/calendar/calendar.module.mjs +5 -5
- package/esm2022/lib/calendar/calendar.types.mjs +1 -1
- package/esm2022/lib/card/card.children.mjs +25 -25
- package/esm2022/lib/card/card.component.mjs +7 -7
- package/esm2022/lib/card/card.module.mjs +5 -5
- package/esm2022/lib/card/card.types.mjs +1 -1
- package/esm2022/lib/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/lib/checkbox/checkbox.types.mjs +1 -1
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +4 -4
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +5 -5
- package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +1 -1
- package/esm2022/lib/chip/chip.component.mjs +4 -4
- package/esm2022/lib/chip/chip.module.mjs +5 -5
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +4 -4
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +4 -4
- package/esm2022/lib/color/color-display/color-display.component.mjs +4 -4
- package/esm2022/lib/color/color-display/color-display.module.mjs +5 -5
- package/esm2022/lib/color/color-display/color-display.types.mjs +1 -1
- package/esm2022/lib/color/color-picker/color-picker.component.mjs +4 -4
- package/esm2022/lib/color/color-picker/color-picker.directives.mjs +13 -13
- package/esm2022/lib/color/color-picker/color-picker.module.mjs +5 -5
- package/esm2022/lib/color/color-picker/color-picker.types.mjs +1 -1
- package/esm2022/lib/dialog/dialog.component.mjs +4 -4
- package/esm2022/lib/dialog/dialog.directives.mjs +4 -4
- package/esm2022/lib/dialog/dialog.module.mjs +5 -5
- package/esm2022/lib/dialog/dialog.types.mjs +1 -1
- package/esm2022/lib/divider/divider.component.mjs +4 -4
- package/esm2022/lib/divider/divider.module.mjs +5 -5
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +4 -4
- package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +5 -5
- package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +4 -4
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +10 -10
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +5 -5
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +4 -4
- package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +19 -19
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +5 -5
- package/esm2022/lib/file-inputs/file-input-base.mjs +4 -4
- package/esm2022/lib/file-inputs/file-input-types.mjs +1 -1
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +4 -4
- package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +7 -7
- package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +5 -5
- package/esm2022/lib/icon/icon.component.mjs +4 -4
- package/esm2022/lib/icon/icon.module.mjs +5 -5
- package/esm2022/lib/icon/icon.pipe.mjs +4 -4
- package/esm2022/lib/inputs/color-input/color-input.component.mjs +4 -4
- package/esm2022/lib/inputs/color-input/color-input.directives.mjs +25 -25
- package/esm2022/lib/inputs/color-input/color-input.module.mjs +5 -5
- package/esm2022/lib/inputs/color-input/color-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +4 -4
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +5 -5
- 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/hex-input/hex-input.component.mjs +4 -4
- package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +10 -10
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +5 -5
- package/esm2022/lib/inputs/hex-input.model.mjs +1 -1
- package/esm2022/lib/inputs/input/input.component.mjs +4 -4
- package/esm2022/lib/inputs/input/input.directives.mjs +16 -16
- package/esm2022/lib/inputs/input/input.module.mjs +5 -5
- package/esm2022/lib/inputs/input-transformers.mjs +1 -1
- package/esm2022/lib/inputs/input-types.mjs +1 -1
- package/esm2022/lib/inputs/input-utils.mjs +1 -1
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +4 -4
- package/esm2022/lib/inputs/number-input/number-input.directives.mjs +4 -4
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +5 -5
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +4 -4
- package/esm2022/lib/inputs/password-input/password-input.directives.mjs +13 -13
- package/esm2022/lib/inputs/password-input/password-input.module.mjs +5 -5
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +4 -4
- package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +10 -10
- package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +5 -5
- package/esm2022/lib/kbd/kbd.component.mjs +4 -4
- package/esm2022/lib/kbd/kbd.module.mjs +5 -5
- package/esm2022/lib/kbd/kbd.pipe.mjs +4 -4
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +4 -4
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +5 -5
- package/esm2022/lib/modal/modal.component.mjs +4 -4
- package/esm2022/lib/modal/modal.module.mjs +5 -5
- package/esm2022/lib/option/option.component.mjs +4 -4
- package/esm2022/lib/option/option.module.mjs +5 -5
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +4 -4
- package/esm2022/lib/progress-bar/progress-bar.directive.mjs +4 -4
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +4 -4
- package/esm2022/lib/progress-circle/progress-circle.directive.mjs +4 -4
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +5 -5
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
- package/esm2022/lib/radio/radio/radio.component.mjs +4 -4
- package/esm2022/lib/radio/radio-group.component.mjs +4 -4
- package/esm2022/lib/radio/radio.module.mjs +5 -5
- package/esm2022/lib/search-functions.mjs +1 -1
- package/esm2022/lib/segment/segment.component.mjs +4 -4
- package/esm2022/lib/segment/segment.directives.mjs +4 -4
- package/esm2022/lib/segment/segment.module.mjs +5 -5
- package/esm2022/lib/segment/segment.types.mjs +1 -1
- package/esm2022/lib/select/select.component.mjs +4 -4
- package/esm2022/lib/select/select.directive.mjs +46 -46
- package/esm2022/lib/select/select.module.mjs +5 -5
- package/esm2022/lib/select/select.types.mjs +1 -1
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +4 -4
- package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +5 -5
- package/esm2022/lib/slider/abstract-slider.mjs +4 -4
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +4 -4
- package/esm2022/lib/slider/range-slider/range-slider.module.mjs +5 -5
- package/esm2022/lib/slider/slider.component.mjs +4 -4
- package/esm2022/lib/slider/slider.directive.mjs +4 -4
- package/esm2022/lib/slider/slider.module.mjs +5 -5
- package/esm2022/lib/slider/slider.types.mjs +1 -1
- package/esm2022/lib/snackbar/index.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/lib/snackbar/snackbar.service.mjs +4 -4
- package/esm2022/lib/snackbar/snackbar.token.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
- package/esm2022/lib/spinner/spinner.component.mjs +4 -4
- package/esm2022/lib/spinner/spinner.module.mjs +5 -5
- package/esm2022/lib/star/star-button/star-button.component.mjs +4 -4
- package/esm2022/lib/star/star-button/star-button.module.mjs +5 -5
- package/esm2022/lib/star/star-display/star-display.component.mjs +4 -4
- package/esm2022/lib/star/star-display/star-display.module.mjs +5 -5
- package/esm2022/lib/star/star-input/star-input.component.mjs +4 -4
- package/esm2022/lib/star/star-input/star-input.module.mjs +5 -5
- package/esm2022/lib/star/star.component.mjs +4 -4
- package/esm2022/lib/star/star.module.mjs +5 -5
- package/esm2022/lib/star/star.types.mjs +1 -1
- package/esm2022/lib/statebox/statebox.component.mjs +4 -4
- package/esm2022/lib/statebox/statebox.module.mjs +5 -5
- package/esm2022/lib/statebox/statebox.types.mjs +1 -1
- package/esm2022/lib/table/table-item-storage.mjs +1 -1
- package/esm2022/lib/table/table.component.mjs +4 -4
- package/esm2022/lib/table/table.directives.mjs +16 -16
- package/esm2022/lib/table/table.module.mjs +5 -5
- package/esm2022/lib/table/table.types.mjs +1 -1
- package/esm2022/lib/table/utils.mjs +1 -1
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +4 -4
- package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +5 -5
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +4 -4
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +5 -5
- package/esm2022/lib/table-pagination/table-pagination.types.mjs +1 -1
- package/esm2022/lib/types/alignment.types.mjs +1 -1
- package/esm2022/lib/types/colors.types.mjs +1 -1
- package/esm2022/lib/types/item-storage.types.mjs +1 -1
- package/esm2022/lib/types/theming.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 +618 -618
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/package.json +7 -5
- package/themes/_variables.scss +121 -121
- package/themes/default/_clear-button.scss +73 -73
- package/themes/default/_coloring.scss +137 -137
- package/themes/default/_dropdown-arrow.scss +12 -12
- package/themes/default/_mixins.scss +70 -70
- package/themes/default/badge.scss +94 -94
- package/themes/default/buttons/_button-mixins.scss +144 -144
- package/themes/default/buttons/button.scss +62 -62
- package/themes/default/buttons/fab.scss +72 -72
- package/themes/default/buttons/icon-button.scss +59 -59
- package/themes/default/calendar.scss +182 -182
- package/themes/default/card.scss +126 -126
- package/themes/default/checkbox-list.scss +83 -83
- package/themes/default/checkbox.scss +109 -109
- package/themes/default/chips.scss +206 -206
- package/themes/default/color-display.scss +41 -41
- package/themes/default/color-picker.scss +111 -111
- package/themes/default/core.scss +96 -96
- package/themes/default/dialog.scss +16 -16
- package/themes/default/divider.scss +13 -13
- package/themes/default/dropdown-panel.scss +45 -45
- package/themes/default/file-drop-area.scss +162 -162
- package/themes/default/form-field-frame.scss +78 -78
- package/themes/default/inputs/_shared.scss +46 -46
- package/themes/default/inputs/color-input.scss +46 -46
- package/themes/default/inputs/digit-input.scss +56 -56
- package/themes/default/inputs/file-input.scss +78 -78
- package/themes/default/inputs/hex-input.scss +27 -27
- package/themes/default/inputs/input.scss +52 -52
- package/themes/default/inputs/number-input.scss +121 -121
- package/themes/default/inputs/password-input.scss +43 -43
- package/themes/default/inputs/search-bar.scss +19 -19
- package/themes/default/inputs/simple-input.scss +19 -19
- package/themes/default/kbd-shortcut.scss +13 -13
- package/themes/default/kbd.scss +20 -20
- package/themes/default/modal.scss +93 -93
- package/themes/default/progress-bar.scss +166 -166
- package/themes/default/progress-circle.scss +56 -56
- package/themes/default/radio.scss +112 -112
- package/themes/default/segment.scss +339 -339
- package/themes/default/select.scss +253 -253
- package/themes/default/slide-toggle.scss +151 -151
- package/themes/default/slider.scss +224 -224
- package/themes/default/snackbar.scss +60 -60
- package/themes/default/spinner.scss +21 -21
- package/themes/default/stars.scss +122 -122
- package/themes/default/statebox.scss +109 -109
- package/themes/default/table-pagination.scss +56 -56
- package/themes/default/table.scss +403 -403
package/README.md
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# Ui
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui`.
|
|
8
|
-
|
|
9
|
-
> Note: Don't forget to add `--project ui` or else it will be added to the default project in your `angular.json` file.
|
|
10
|
-
|
|
11
|
-
## Build
|
|
12
|
-
|
|
13
|
-
Run `ng build ui` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
14
|
-
|
|
15
|
-
## Publishing
|
|
16
|
-
|
|
17
|
-
After building your library with `ng build ui`, go to the dist folder `cd dist/ui` and run `npm publish`.
|
|
18
|
-
|
|
19
|
-
## Running unit tests
|
|
20
|
-
|
|
21
|
-
Run `ng test ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
22
|
-
|
|
23
|
-
## Further help
|
|
24
|
-
|
|
25
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
1
|
+
# Ui
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui`.
|
|
8
|
+
|
|
9
|
+
> Note: Don't forget to add `--project ui` or else it will be added to the default project in your `angular.json` file.
|
|
10
|
+
|
|
11
|
+
## Build
|
|
12
|
+
|
|
13
|
+
Run `ng build ui` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
14
|
+
|
|
15
|
+
## Publishing
|
|
16
|
+
|
|
17
|
+
After building your library with `ng build ui`, go to the dist folder `cd dist/ui` and run `npm publish`.
|
|
18
|
+
|
|
19
|
+
## Running unit tests
|
|
20
|
+
|
|
21
|
+
Run `ng test ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
22
|
+
|
|
23
|
+
## Further help
|
|
24
|
+
|
|
25
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -80,10 +80,10 @@ export class _BooleanComponentBase extends _NgModelComponentBase {
|
|
|
80
80
|
if (oldState != false)
|
|
81
81
|
this._emitChange();
|
|
82
82
|
}
|
|
83
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
84
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _BooleanComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
84
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: _BooleanComponentBase, inputs: { selected: "selected" }, outputs: { selectEvent: "select", unselectEvent: "unselect", changeEvent: "change", selectedChange: "selectedChange" }, host: { properties: { "attr.selected": "this.selected", "class.ard-selected": "this.selected" } }, usesInheritance: true, ngImport: i0 }); }
|
|
85
85
|
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _BooleanComponentBase, decorators: [{
|
|
87
87
|
type: Directive
|
|
88
88
|
}], propDecorators: { selectEvent: [{
|
|
89
89
|
type: Output,
|
|
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
105
105
|
}], selectedChange: [{
|
|
106
106
|
type: Output
|
|
107
107
|
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9ib29sZWFuLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFNUQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLHFCQUFxQjtJQUR6RTs7UUFvQkUsVUFBVTtRQUNWOztXQUVHO1FBQ2UsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3pEOztXQUVHO1FBQ2lCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM3RDs7V0FFRztRQUNlLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1RCxnQ0FBZ0M7UUFDaEMsdUNBQXVDO1FBQzdCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFhckM7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0E2QnhEO0lBL0VDLDBCQUEwQjtJQUMxQixVQUFVLENBQUMsQ0FBTTtRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxrQkFBa0I7SUFDbEI7O09BRUc7SUFDTyxXQUFXO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQW1CRDs7T0FFRztJQUNILElBR0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBTTtRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFNRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVqQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxRQUFRLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV2QixJQUFJLFFBQVEsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVDLENBQUM7OEdBL0VtQixxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEMUMsU0FBUzs4QkF3QlUsV0FBVztzQkFBNUIsTUFBTTt1QkFBQyxRQUFRO2dCQUlJLGFBQWE7c0JBQWhDLE1BQU07dUJBQUMsVUFBVTtnQkFJQSxXQUFXO3NCQUE1QixNQUFNO3VCQUFDLFFBQVE7Z0JBV1osUUFBUTtzQkFIWCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGVBQWU7O3NCQUMzQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFVdkIsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBfTmdNb2RlbENvbXBvbmVudEJhc2UgfSBmcm9tICcuL25nbW9kZWwtY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBDb21tb24gY29kZSBmb3IgY29tcG9uZW50cywgd2hpY2ggb25seSBvcGVyYXRlIG9uIHRoZSBcInNlbGVjdGVkXCIgc3RhdGUuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Cb29sZWFuQ29tcG9uZW50QmFzZSBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvclxyXG4gIHdyaXRlVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdjtcclxuICB9XHJcbiAgLy9lbWl0dGVyIGZ1bmN0aW9uXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYWxsIHNlbGVjdC1zdGF0ZS1yZWxhdGVkIGV2ZW50cy5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih0aGlzLnNlbGVjdGVkKTtcclxuXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHRoaXMuc2VsZWN0RXZlbnQuZW1pdChudWxsKTtcclxuICAgIGVsc2UgdGhpcy51bnNlbGVjdEV2ZW50LmVtaXQobnVsbCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGV2ZW50c1xyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBmaXJpbmcgYHNlbGVjdGAgZXZlbnRzLiBGaXJlZCB3aGVuIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGlzIHNldCB0byB0cnVlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ3NlbGVjdCcpIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBmaXJpbmcgYHVuc2VsZWN0YCBldmVudHMuIEZpcmVkIHdoZW4gdGhlIGBzZWxlY3RlZGAgc3RhdGUgaXMgc2V0IHRvIGZhbHNlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ3Vuc2VsZWN0JykgdW5zZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbD4oKTtcclxuICAvKipcclxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBjaGFuZ2VgIGV2ZW50cy4gRmlyZWQgd2hlbiB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBpcyBjaGFuZ2VkLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ2NoYW5nZScpIGNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAvLyEgWyhzZWxlY3RlZCldIHR3by13YXkgYmluZGluZ1xyXG4gIC8vIGNhbiBiZSBzZXQgdXNpbmcgYSBuby12YWx1ZSBhcmd1bWVudFxyXG4gIHByb3RlY3RlZCBfc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUaGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuIENvZXJjaWJsZSBpbnRvIGEgYm9vbGVhbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5zZWxlY3RlZCcpXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hcmQtc2VsZWN0ZWQnKVxyXG4gIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICB9XHJcbiAgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBmaXJpbmcgYHNlbGVjdGVkQ2hhbmdlYCBldmVudHMuIEZpcmVkIHdoZW4gdGhlIGBzZWxlY3RlZGAgc3RhdGUgaXMgY2hhbmdlZC5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZXMgdGhlIHNlbGVjdGVkIHN0YXRlLiBFbWl0cyBhbGwgYXBwcm9wcmlhdGUgZXZlbnRzLlxyXG4gICAqL1xyXG4gIHRvZ2dsZVNlbGVjdGVkKCkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWQgPSAhdGhpcy5fc2VsZWN0ZWQ7XHJcblxyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc3RhdGUgdG8gXCJzZWxlY3RlZFwiLiBFbWl0cyBhbGwgYXBwcm9wcmlhdGUgZXZlbnRzIG9ubHkgaWYgdGhlIHN0YXRlIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgc2VsZWN0KCkge1xyXG4gICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLl9zZWxlY3RlZDtcclxuICAgIHRoaXMuX3NlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAob2xkU3RhdGUgIT0gdHJ1ZSkgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzdGF0ZSB0byBcInVuc2VsZWN0ZWRcIi4gRW1pdHMgYWxsIGFwcHJvcHJpYXRlIGV2ZW50cyBvbmx5IGlmIHRoZSBzdGF0ZSBjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIHVuc2VsZWN0KCkge1xyXG4gICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLl9zZWxlY3RlZDtcclxuICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKG9sZFN0YXRlICE9IGZhbHNlKSB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -2,11 +2,11 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import { _FocusableComponentBase } from './../focusable-component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class _ClearButtonComponent extends _FocusableComponentBase {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _ClearButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: _ClearButtonComponent, selector: "ard-_clear-button", usesInheritance: true, ngImport: i0, template: "<button #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n [tabindex]=\"tabIndex\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-clear-btn\" aria-hidden=\"true\"></div>\r\n</button>", styles: [""] }); }
|
|
7
7
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _ClearButtonComponent, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ selector: 'ard-_clear-button', template: "<button #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n [tabindex]=\"tabIndex\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-clear-btn\" aria-hidden=\"true\"></div>\r\n</button>" }]
|
|
11
11
|
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2NsZWFyLWJ1dHRvbi9jbGVhci1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvY2xlYXItYnV0dG9uL2NsZWFyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU9uRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCOzhHQUFyRCxxQkFBcUI7a0dBQXJCLHFCQUFxQixnRkNSbEMsMFFBT1M7OzJGRENJLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgX0ZvY3VzYWJsZUNvbXBvbmVudEJhc2UgfSBmcm9tICcuLy4uL2ZvY3VzYWJsZS1jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtX2NsZWFyLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NsZWFyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2xlYXItYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBfQ2xlYXJCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB7fVxyXG4iLCI8YnV0dG9uICNmb2N1c2FibGVFbGVtZW50XHJcbiAgICBjbGFzcz1cImFyZC1jbGVhci1idG4td3JhcHBlclwiXHJcbiAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWhpdGJveFwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1mb2N1cy1vdmVybGF5XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWNsZWFyLWJ0blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxyXG48L2J1dHRvbj4iXX0=
|
|
@@ -3,11 +3,11 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { _ClearButtonComponent } from './clear-button.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class _ClearButtonModule {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.
|
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _ClearButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: _ClearButtonModule, declarations: [_ClearButtonComponent], imports: [CommonModule], exports: [_ClearButtonComponent] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _ClearButtonModule, imports: [CommonModule] }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _ClearButtonModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
12
|
args: [{
|
|
13
13
|
declarations: [_ClearButtonComponent],
|
|
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
15
15
|
exports: [_ClearButtonComponent],
|
|
16
16
|
}]
|
|
17
17
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2NsZWFyLWJ1dHRvbi9jbGVhci1idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU9qRSxNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixpQkFKZCxxQkFBcUIsYUFDMUIsWUFBWSxhQUNaLHFCQUFxQjsrR0FFcEIsa0JBQWtCLFlBSG5CLFlBQVk7OzJGQUdYLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBfQ2xlYXJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NsZWFyLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtfQ2xlYXJCdXR0b25Db21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtfQ2xlYXJCdXR0b25Db21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgX0NsZWFyQnV0dG9uTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -19,10 +19,10 @@ export class _DisablableComponentBase {
|
|
|
19
19
|
set disabled(v) {
|
|
20
20
|
this._disabled = coerceBooleanProperty(v);
|
|
21
21
|
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
23
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _DisablableComponentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: _DisablableComponentBase, inputs: { readonly: "readonly", disabled: "disabled" }, host: { properties: { "attr.readonly": "this.readonly", "class.ard-readonly": "this.readonly", "attr.disabled": "this.disabled", "class.ard-disabled": "this.disabled" } }, ngImport: i0 }); }
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _DisablableComponentBase, decorators: [{
|
|
26
26
|
type: Directive
|
|
27
27
|
}], propDecorators: { readonly: [{
|
|
28
28
|
type: Input
|
|
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
41
41
|
type: HostBinding,
|
|
42
42
|
args: ['class.ard-disabled']
|
|
43
43
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsYWJsZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9kaXNhYmxhYmxlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRzFELE1BQU0sT0FBZ0Isd0JBQXdCO0lBRDlDO1FBRUUsc0JBQXNCO1FBQ1osY0FBUyxHQUFZLEtBQUssQ0FBQztRQWMzQixjQUFTLEdBQVksS0FBSyxDQUFDO0tBYXRDO0lBMUJDLElBTUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBTTtRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFHRCxJQU1JLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBTTtRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7OEdBNUJtQix3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUzs4QkFVSixRQUFRO3NCQU5YLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQWtCN0IsUUFBUTtzQkFOWCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGVBQWU7O3NCQUMzQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0Rpc2FibGFibGVDb21wb25lbnRCYXNlIHtcclxuICAvLyEgbm8gdmFsdWUgYXJndW1lbnRzXHJcbiAgcHJvdGVjdGVkIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJlYWRvbmx5JylcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFyZC1yZWFkb25seScpXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlYWQtb25seS4gRGVmaW5lcyB0aGUgYHJlYWRvbmx5YCBob3N0IGF0dHJpYnV0ZSBhbmQgYGFyZC1yZWFkb25seWAgaG9zdCBjbGFzcy4gQ29lYXJjaWJsZSBpbnRvIGEgYm9vbGVhbi5cclxuICAgKi9cclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgfVxyXG4gIHNldCByZWFkb25seSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFyZC1kaXNhYmxlZCcpXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLiBEZWZpbmVzIHRoZSBgZGlzYWJsZWRgIGhvc3QgYXR0cmlidXRlIGFuZCBgYXJkLWRpc2FibGVkYCBob3N0IGNsYXNzLiBDb2VhcmNpYmxlIGludG8gYSBib29sZWFuLlxyXG4gICAqL1xyXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuICBzZXQgZGlzYWJsZWQodjogYW55KSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -71,10 +71,10 @@ export class _FocusableComponentBase extends _DisablableComponentBase {
|
|
|
71
71
|
this.isFocused = false;
|
|
72
72
|
this.blurEvent.emit(event);
|
|
73
73
|
}
|
|
74
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
75
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _FocusableComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
75
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: _FocusableComponentBase, inputs: { tabIndex: "tabIndex" }, outputs: { focusEvent: "focus", blurEvent: "blur" }, viewQueries: [{ propertyName: "_focusableElement", predicate: ["focusableElement"], descendants: true }], usesInheritance: true, ngImport: i0 }); }
|
|
76
76
|
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: _FocusableComponentBase, decorators: [{
|
|
78
78
|
type: Directive
|
|
79
79
|
}], propDecorators: { _focusableElement: [{
|
|
80
80
|
type: ViewChildren,
|
|
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
88
88
|
type: Output,
|
|
89
89
|
args: ['blur']
|
|
90
90
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2ZvY3VzYWJsZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBR2xFLE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsd0JBQXdCO0lBRDlFOztRQStCRSxZQUFZO1FBQ0YsY0FBUyxHQUFXLENBQUMsQ0FBQztRQVloQyxVQUFVO1FBQ1Y7O1dBRUc7UUFDYyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUM3RDs7V0FFRztRQUNhLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRTNELHdCQUF3QjtRQUN4Qjs7V0FFRztRQUNJLGNBQVMsR0FBWSxLQUFLLENBQUM7S0FrQm5DO0lBdEVDOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7T0FFRztJQUNJLFVBQVU7UUFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUNEOztPQUVHO0lBQ0ksSUFBSTtRQUNULElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUlEOztPQUVHO0lBQ0gsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBTTtRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBa0JEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBMUVtQix1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFENUMsU0FBUzs4QkFJUyxpQkFBaUI7c0JBRGpDLFlBQVk7dUJBQUMsa0JBQWtCO2dCQWtDNUIsUUFBUTtzQkFEWCxLQUFLO2dCQVlXLFVBQVU7c0JBQTFCLE1BQU07dUJBQUMsT0FBTztnQkFJQyxTQUFTO3NCQUF4QixNQUFNO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IF9EaXNhYmxhYmxlQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vZGlzYWJsYWJsZS1jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSBleHRlbmRzIF9EaXNhYmxhYmxlQ29tcG9uZW50QmFzZSB7XHJcbiAgLy8hIG1ha2UgdGhlIGNvbXBvbmVudCBmb2N1c2FibGUgcHJvZ3JhbW1hdGljYWxseVxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZvY3VzYWJsZUVsZW1lbnQnKVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzYWJsZUVsZW1lbnQhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xyXG5cclxuICAvKipcclxuICAgKiBGb2N1c2VzIHRoZSBjb3JyZWN0IGVsZW1lbnQgaW4gdGhlIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mb2N1c2FibGVFbGVtZW50Py5maXJzdD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGb2N1c2VzIHRoZSBmaXJzdCBvZiBhbGwgYXZhaWxhYmxlIGVsZW1lbnRzIGluIHRoZSBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgcHVibGljIGZvY3VzRmlyc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZvY3VzZXMgdGhlIGxhc3Qgb2YgYWxsIGF2YWlsYWJsZSBlbGVtZW50cyBpbiB0aGUgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBmb2N1c0xhc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mb2N1c2FibGVFbGVtZW50Py5sYXN0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEJsdXJzIGFsbCBmb2N1c2FibGUgZWxlbWVudHMgaW4gdGhlIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBwdWJsaWMgYmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQ/LmZvckVhY2goZWwgPT4gZWwubmF0aXZlRWxlbWVudC5ibHVyKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHRhYmluZGV4XHJcbiAgcHJvdGVjdGVkIF90YWJJbmRleDogbnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBUaGUgY29tcG9uZW50J3Mgb3ZlcmFsbCB0YWIgaW5kZXguIElmIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQsIGl0IGlzIGFsd2F5cyBgLTFgLiBDb2VyY2libGUgaW50byBhIG51bWJlciwgZGVmYXVsdHMgdG8gYDBgLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy5fdGFiSW5kZXg7XHJcbiAgfVxyXG4gIHNldCB0YWJJbmRleCh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgMCk7XHJcbiAgfVxyXG5cclxuICAvLyEgZXZlbnRzXHJcbiAgLyoqXHJcbiAgICogVGhlIGV2ZW50IGVtaXR0ZXIgcmVzcG9uc2libGUgZm9yIGZpcmluZyBgZm9jdXNgIGV2ZW50cy5cclxuICAgKi9cclxuICBAT3V0cHV0KCdmb2N1cycpIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcbiAgLyoqXHJcbiAgICogVGhlIGV2ZW50IGVtaXR0ZXIgcmVzcG9uc2libGUgZm9yIGZpcmluZyBgYmx1cmAgZXZlbnRzLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ2JsdXInKSBibHVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcblxyXG4gIC8vISBmb2N1cyBldmVudCBoYW5kbGVyc1xyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBjdXJyZW50bHkgZm9jdXNlZC5cclxuICAgKi9cclxuICBwdWJsaWMgaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIGhhbmRsZSB3aGVuIGFuIGVsZW1lbnQgaXMgZm9jdXNlZC4gU2V0cyBgaXNGb2N1c2VkYCBhbmQgZmlyZXMgdGhlIGBmb2N1c2AgZXZlbnQuXHJcbiAgICogQHBhcmFtIGV2ZW50IFRoZSBmb2N1cyBldmVudCB0byBlbWl0LlxyXG4gICAqL1xyXG4gIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gdG8gaGFuZGxlIHdoZW4gYW4gZWxlbWVudCBpcyBibHVycmVkLiBTZXRzIGBpc0ZvY3VzZWRgIGFuZCBmaXJlcyB0aGUgYGJsdXJgIGV2ZW50LlxyXG4gICAqIEBwYXJhbSBldmVudCBUaGUgZm9jdXMgZXZlbnQgdG8gZW1pdC5cclxuICAgKi9cclxuICBvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmJsdXJFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -433,4 +433,4 @@ export class ItemStorage {
|
|
|
433
433
|
this._populateGroups();
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9kcm9wZG93bi1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlDbEcsTUFBTSxPQUFPLFdBQVc7SUFTdEIsWUFBb0IsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBUjNDLFlBQU8sR0FBb0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkQsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFDekIsbUJBQWMsR0FBZ0IsRUFBRSxDQUFDO1FBQ2pDLHNCQUFpQixHQUFnQixFQUFFLENBQUM7UUFDcEMsdUJBQWtCLEdBQXFCLEVBQUUsQ0FBQztRQUUxQyxtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFxT2pDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztJQW5PTSxDQUFDO0lBRXZELElBQUksTUFBTTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENB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QixFQUFFO1lBQzVDLFVBQVUsR0FBRyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUM3QztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDOztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRTdELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRTthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZE9wdGlvbkdyb3VwLCBBcmRPcHRpb24sIEdyb3VwQnlGbiwgQXJkSXRlbUdyb3VwTWFwLCBTZWFyY2hGbiwgQ29tcGFyZVdpdGhGbiB9IGZyb20gJy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgcmVzb2x2ZVBhdGggZnJvbSAncmVzb2x2ZS1vYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBhbnksIGV2YWx1YXRlLCBpc0FycmF5LCBpc0RlZmluZWQsIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSwgaXNQcm9taXNlIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuaW1wb3J0IHsgQWRkQ3VzdG9tRm4gfSBmcm9tICcuLi8uLi9zZWxlY3Qvc2VsZWN0LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cyB7XG4gIHZhbHVlRnJvbTogc3RyaW5nO1xuICBsYWJlbEZyb206IHN0cmluZztcbiAgZGlzYWJsZWRGcm9tOiBzdHJpbmc7XG4gIGdyb3VwTGFiZWxGcm9tOiBzdHJpbmc7XG4gIGdyb3VwRGlzYWJsZWRGcm9tOiBzdHJpbmc7XG4gIGNoaWxkcmVuRnJvbTogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1TdG9yYWdlSG9zdCB7XG4gIHZhbHVlRnJvbT86IHN0cmluZztcbiAgbGFiZWxGcm9tPzogc3RyaW5nO1xuICBkaXNhYmxlZEZyb20/OiBzdHJpbmc7XG4gIGludmVydERpc2FibGVkPzogYm9vbGVhbjtcbiAgZ3JvdXBMYWJlbEZyb20/OiBzdHJpbmcgfCBHcm91cEJ5Rm47XG4gIGdyb3VwRGlzYWJsZWRGcm9tPzogc3RyaW5nO1xuICBjaGlsZHJlbkZyb20/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IERFRkFVTFRTOiBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cztcbiAgZ3JvdXBJdGVtcz86IGJvb2xlYW47XG4gIGl0ZW1zQWxyZWFkeUdyb3VwZWQ/OiBib29sZWFuO1xuICBoaWRlU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHNlYXJjaENhc2VTZW5zaXRpdmU6IGJvb2xlYW47XG4gIHNlYXJjaEZuOiBTZWFyY2hGbjtcbiAgY29tcGFyZVdpdGg/OiBDb21wYXJlV2l0aEZuO1xuICBtdWx0aXNlbGVjdGFibGU6IGJvb2xlYW47XG4gIHNvcnRNdWx0aXBsZVZhbHVlczogYm9vbGVhbjtcbiAgbWF4U2VsZWN0ZWRJdGVtcz86IG51bWJlcjtcbiAgYWRkQ3VzdG9tOiBib29sZWFuIHwgQWRkQ3VzdG9tRm48YW55PiB8IEFkZEN1c3RvbUZuPFByb21pc2U8YW55Pj47XG59XG5cbmV4cG9ydCBjbGFzcyBJdGVtU3RvcmFnZSB7XG4gIHByaXZhdGUgX2dyb3VwczogQXJkSXRlbUdyb3VwTWFwID0gdGhpcy5fY3JlYXRlRW1wdHlHcm91cE1hcCgpO1xuICBwcml2YXRlIF9pdGVtczogQXJkT3B0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfZmlsdGVyZWRJdGVtczogQXJkT3B0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0ZWRJdGVtczogQXJkT3B0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0ZWRHcm91cHM6IEFyZE9wdGlvbkdyb3VwW10gPSBbXTtcbiAgcHJpdmF0ZSBfcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0/OiBBcmRPcHRpb247XG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IEFyZE9wdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkUGFyZW50Q29tcDogSXRlbVN0b3JhZ2VIb3N0KSB7fVxuXG4gIGdldCBncm91cHMoKTogQXJkT3B0aW9uR3JvdXBbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fZ3JvdXBzLmVudHJpZXMoKSlcbiAgICAgIC5tYXAoKFtfLCBncm91cF0pID0+IGdyb3VwKVxuICAgICAgLmZpbHRlcihncm91cCA9PiBncm91cC5jaGlsZHJlbi5sZW5ndGgpO1xuICB9XG4gIGdldCBpdGVtcygpOiBBcmRPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG4gIGdldCBmaWx0ZXJlZEl0ZW1zKCk6IEFyZE9wdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRJdGVtcztcbiAgfVxuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBBcmRPcHRpb25bXSB7XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuc29ydE11bHRpcGxlVmFsdWVzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcztcbiAgfVxuICBnZXQgaGlnaGxpZ2h0ZWRJdGVtcygpOiBBcmRPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXM7XG4gIH1cbiAgZ2V0IGxhc3RTZWxlY3RlZEl0ZW0oKTogQXJkT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRJdGVtcy5sYXN0KDEsIGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xuICB9XG4gIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG4gIHByaXZhdGUgX2l0ZW1zVG9WYWx1ZShpdGVtczogQXJkT3B0aW9uW10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICB9XG5cbiAgZ2V0IGlzTm9JdGVtc1RvU2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGggPT0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XG4gIH1cbiAgZ2V0IGlzTm9JdGVtc0ZvdW5kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PSAwO1xuICB9XG4gIGdldCBpc0FueUl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwO1xuICB9XG4gIGdldCBpc0FueUl0ZW1IaWdobGlnaHRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5sZW5ndGggPiAwO1xuICB9XG4gIGdldCBpc0l0ZW1MaW1pdFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlICYmXG4gICAgICBpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKSAmJlxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zISA8PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoXG4gICAgKTtcbiAgfVxuXG4gIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwSXRlbXMgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5pdGVtc0FscmVhZHlHcm91cGVkKSB7XG4gICAgICBsZXQgbmV3SXRlbXMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgaXRlbXMpIHtcbiAgICAgICAgbGV0IGNoaWxkcmVuOiBhbnlbXTtcbiAgICAgICAgW2NoaWxkcmVuLCBhcmVJdGVtc1ByaW1pdGl2ZV0gPSB0aGlzLl91bmdyb3VwQWxyZWFkeUdyb3VwZWRJdGVtcyhncm91cCk7XG4gICAgICAgIG5ld0l0ZW1zLnB1c2goLi4uY2hpbGRyZW4pO1xuICAgICAgfVxuICAgICAgaXRlbXMgPSBuZXdJdGVtcztcbiAgICB9XG4gICAgaWYgKGFueShpdGVtcywgaXNQcmltaXRpdmUpKSB7XG4gICAgICBpdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLl9wcmltaXRpdmVJdGVtc01hcEZuKTtcbiAgICAgIGFyZUl0ZW1zUHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIGluZGV4LCBhcmVJdGVtc1ByaW1pdGl2ZSk7XG4gICAgfSk7XG5cbiAgICAvL2FkZCBhbGwgaXRlbXMgdG8gZmlsdGVyIGFycmF5XG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2l0ZW1zO1xuXG4gICAgLy9hZGQgaXRlbXMgdG8gZ3JvdXBzXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIC8vd3JpdGUgdmFsdWUgaWYgaXQgd2FzXG4gICAgaWYgKHRoaXMuX3ZhbHVlVG9Xcml0ZUFmdGVySXRlbXNMb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGFuZGxlV3JpdGVWYWx1ZSh0aGlzLl92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZUl0ZW1zUHJpbWl0aXZlO1xuICB9XG4gIHByaXZhdGUgX2FkZFNpbmdsZUl0ZW0oaXRlbTogYW55KTogQXJkT3B0aW9uIHtcbiAgICBsZXQgaXNJdGVtUHJpbWl0aXZlID0gaXNQcmltaXRpdmUoaXRlbSk7XG4gICAgLy9tYXAgYSBwcmltaXRpdmUgaXRlbSB0byBhIHVzYWJsZSBvYmplY3RcbiAgICBpZiAoaXNJdGVtUHJpbWl0aXZlKSB7XG4gICAgICBpdGVtID0gdGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbihpdGVtKTtcbiAgICB9XG4gICAgLy9tYXAgdGhlIGl0ZW0gdG8gY3JlYXRlIGRhdGEgYmluZGluZ3NcbiAgICBjb25zdCBhcmRPcHRpb24gPSB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIHRoaXMuX2l0ZW1zLmxhc3QoKT8uaW5kZXggKyAxLCBpc0l0ZW1QcmltaXRpdmUpO1xuXG4gICAgLy9wdXNoIHRoZSBpdGVtIGludG8gYWxsIGl0ZW1zXG4gICAgdGhpcy5faXRlbXMucHVzaChhcmRPcHRpb24pO1xuXG4gICAgLy9hZGQgaXRlbSB0byBncm91cHNcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuXG4gICAgcmV0dXJuIGFyZE9wdGlvbjtcbiAgfVxuICBwcml2YXRlIF9wcmltaXRpdmVJdGVtc01hcEZuPFQ+KGl0ZW06IFQpOiB7IHZhbHVlOiBUIH0ge1xuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XG4gIH1cbiAgcHJpdmF0ZSBfdW5ncm91cEFscmVhZHlHcm91cGVkSXRlbXM8VCBleHRlbmRzIG9iamVjdD4oZ3JvdXA6IFQpOiBbYW55W10sIGJvb2xlYW5dIHtcbiAgICAvL2RldGVybWluZSBncm91cEJ5IChncm91cExhYmVsKSBwYXRoXG4gICAgbGV0IGdyb3VwQnkgPSB0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuZ3JvdXBMYWJlbEZyb207XG5cbiAgICAvL2dldCBncm91cCBsYWJlbCBmcm9tIG9iamVjdFxuICAgIGxldCBncm91cE5hbWU6IGFueTtcbiAgICBpZiAodHlwZW9mIGdyb3VwQnkgPT0gJ3N0cmluZycpIHtcbiAgICAgIGdyb3VwTmFtZSA9IHJlc29sdmVQYXRoKGdyb3VwLCBncm91cEJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBOYW1lID0gZ3JvdXBCeShncm91cCk7XG4gICAgfVxuXG4gICAgLy9kZXRlcm1pbmUgZ3JvdXAgY2hpbGRyZW4gcGF0aFxuICAgIGxldCBjaGlsZHJlblBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmNoaWxkcmVuRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmNoaWxkcmVuRnJvbTtcblxuICAgIC8vZ2V0IGdyb3VwIGNoaWxkcmVuXG4gICAgbGV0IGdyb3VwSXRlbXM6IGFueSA9IHJlc29sdmVQYXRoKGdyb3VwLCBjaGlsZHJlblBhdGgpO1xuXG4gICAgLy9yZXR1cm4gZW1wdHkgYXJyYXkgaWYgZ3JvdXBJdGVtcyBpcyBub3QgYW4gYXJyYXkgb3IgaXMgZW1wdHlcbiAgICBpZiAoIWlzQXJyYXkoZ3JvdXBJdGVtcykgfHwgZ3JvdXBJdGVtcy5sZW5ndGggPT0gMCkgcmV0dXJuIFtbXSwgZmFsc2VdO1xuXG4gICAgLy9jaGVjayBpZiB0aGUgYXJyYXkgaXMgYW4gYXJyYXkgb2YgcHJpbWl0aXZlcywgYW5kIG1hcCBpdCBpZiBuZWVkZWRcbiAgICBsZXQgYXJlSXRlbXNQcmltaXRpdmUgPSBmYWxzZTtcbiAgICBpZiAoYW55KGdyb3VwSXRlbXMsIGlzUHJpbWl0aXZlKSkge1xuICAgICAgZ3JvdXBJdGVtcyA9IGdyb3VwSXRlbXMubWFwKHRoaXMuX3ByaW1pdGl2ZUl0ZW1zTWFwRm4pO1xuICAgIH1cbiAgICAvL2FkZCBncm91cCBuYW1lIHRvIGV2ZXJ5IGNoaWxkXG4gICAgZ3JvdXBJdGVtcyA9IGdyb3VwSXRlbXMubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGl0ZW0uJGFyZGdyb3VwID0gZ3JvdXBOYW1lO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2dyb3VwSXRlbXMsIGFyZUl0ZW1zUHJpbWl0aXZlXTtcbiAgfVxuICBwcml2YXRlIF9zZXRJdGVtc01hcEZuKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIsIGFyZUl0ZW1zUHJpbWl0aXZlOiBib29sZWFuKTogQXJkT3B0aW9uIHtcbiAgICBpZiAoYXJlSXRlbXNQcmltaXRpdmUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1EYXRhOiByYXdJdGVtRGF0YSxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHZhbHVlOiByYXdJdGVtRGF0YS52YWx1ZSxcbiAgICAgICAgbGFiZWw6IHJhd0l0ZW1EYXRhLnZhbHVlPy50b1N0cmluZz8uKCkgPz8gU3RyaW5nKHJhd0l0ZW1EYXRhLnZhbHVlKSxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vZ2V0IHZhbHVlXG4gICAgY29uc3QgdmFsdWVQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy52YWx1ZUZyb207XG4gICAgY29uc3QgdmFsdWUgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgdmFsdWVQYXRoKTtcblxuICAgIC8vZ2V0IGxhYmVsXG4gICAgY29uc3QgbGFiZWxQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5sYWJlbEZyb207XG4gICAgY29uc3QgbGFiZWwgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgbGFiZWxQYXRoKSA/PyB2YWx1ZTtcblxuICAgIC8vZ2V0IGRpc2FibGVkXG4gICAgY29uc3QgZGlzYWJsZWRQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5kaXNhYmxlZEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5kaXNhYmxlZEZyb207XG4gICAgbGV0IGRpc2FibGVkID0gZXZhbHVhdGUocmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGRpc2FibGVkUGF0aCkpO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydERpc2FibGVkKSB7XG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvL2dldCBncm91cHNcbiAgICBsZXQgZ3JvdXA6IGFueSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5ncm91cEl0ZW1zKSB7XG4gICAgICBpZiAocmF3SXRlbURhdGEuJGFyZGdyb3VwKSB7XG4gICAgICAgIGdyb3VwID0gcmF3SXRlbURhdGEuJGFyZGdyb3VwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGdyb3VwQnkgPSB0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuZ3JvdXBMYWJlbEZyb207XG4gICAgICAgIGlmICh0eXBlb2YgZ3JvdXBCeSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgIGdyb3VwID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGdyb3VwQnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwID0gKGdyb3VwQnkgYXMgR3JvdXBCeUZuKShyYXdJdGVtRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpdGVtRGF0YSA9IGFyZUl0ZW1zUHJpbWl0aXZlID8gcmF3SXRlbURhdGEudmFsdWUgOiByYXdJdGVtRGF0YTtcblxuICAgIC8vcmV0dXJuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1EYXRhLFxuICAgICAgaW5kZXgsXG4gICAgICB2YWx1ZSxcbiAgICAgIGxhYmVsOiBsYWJlbD8udG9TdHJpbmc/LigpID8/IFN0cmluZyhsYWJlbCksXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGdyb3VwLFxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBfcG9wdWxhdGVHcm91cHMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ3JvdXBzID0gdGhpcy5fY3JlYXRlRW1wdHlHcm91cE1hcCgpO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2ZpbHRlcmVkSXRlbXMpIHtcbiAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCAmJiBpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcblxuICAgICAgdGhpcy5fYWRkVG9Hcm91cChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYWRkVG9Hcm91cChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBncm91cEtleSA9IGl0ZW0uZ3JvdXA7XG4gICAgbGV0IHRhcmdldEdyb3VwID0gdGhpcy5fZ3JvdXBzLmdldChncm91cEtleSk7XG4gICAgLy9jcmVhdGUgbmV3IGdyb3VwIGlmIG5lZWRlZFxuICAgIGlmICghdGFyZ2V0R3JvdXApIHtcbiAgICAgIHRoaXMuX2dyb3Vwcy5zZXQoZ3JvdXBLZXksIHtcbiAgICAgICAgbGFiZWw6IFN0cmluZyhncm91cEtleSA/PyAnJyksXG4gICAgICAgIGNoaWxkcmVuOiBbaXRlbV0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFyZ2V0R3JvdXAuY2hpbGRyZW4ucHVzaChpdGVtKTtcbiAgfVxuICBwcml2YXRlIF9jcmVhdGVFbXB0eUdyb3VwTWFwKCkge1xuICAgIHJldHVybiBuZXcgTWFwKFtbdW5kZWZpbmVkLCB7IGxhYmVsOiAnJywgY2hpbGRyZW46IFtdIH1dXSk7XG4gIH1cbiAgcHJpdmF0ZSBfaXNXcml0ZVZhbHVlVmFsaWQobmdNb2RlbDogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmdNb2RlbC5ldmVyeShpdGVtID0+IHtcbiAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgpICYmIGlzT2JqZWN0KGl0ZW0pICYmIHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgU2V0dGluZyBvYmplY3QoJHtKU09OLnN0cmluZ2lmeShpdGVtKX0pIGFzIHlvdXIgbW9kZWwgd2l0aCBbdmFsdWVGcm9tXSBpcyBub3QgYWxsb3dlZCB1bmxlc3MgW2NvbXBhcmVXaXRoXSBpcyB1c2VkLmApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIF92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZDogYW55O1xuICBwcml2YXRlIF93YXNWYWx1ZVdyaXRlRGVmZXJyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGFuZGxlV3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IHZvaWQge1xuICAgIC8vZGVmZXIgd3JpdGluZyB0aGUgdmFsdWUgaWYgbm8gb3B0aW9ucyBhcmUgeWV0IGxvYWRlZFxuICAgIGlmICghdGhpcy5fd2FzVmFsdWVXcml0ZURlZmVycmVkICYmIHRoaXMuX2l0ZW1zLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLl92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZCA9IG5nTW9kZWw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckFsbFNlbGVjdGVkKCk7XG5cbiAgICBpZiAoIXRoaXMuX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgbGV0IGl0ZW0gPSB0aGlzLmZpbmRJdGVtQnlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc29sZS53YXJuKGBDb3VsZG4ndCBmaW5kIGFuIGl0ZW0gd2l0aCB2YWx1ZSAke3ZhbHVlPy50b1N0cmluZz8uKCkgfHwgU3RyaW5nKHZhbHVlKX0uYCk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBvZiBuZ01vZGVsKSB7XG4gICAgICBzZWxlY3RJdGVtQnlWYWx1ZShtb2RlbFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZmluZEl0ZW1CeVZhbHVlKHZhbHVlVG9GaW5kOiBhbnkpOiBBcmRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb24pID0+IGJvb2xlYW47XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgpIHtcbiAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gdGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCEodmFsdWVUb0ZpbmQsIGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5kQnkgPSBpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlVG9GaW5kO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGZpbmRCeShpdGVtKSk7XG4gIH1cbiAgYXN5bmMgYWRkQ3VzdG9tT3B0aW9uKHZhbHVlOiBzdHJpbmcsIGZuOiBBZGRDdXN0b21Gbjxhbnk+IHwgQWRkQ3VzdG9tRm48UHJvbWlzZTxhbnk+Pik6IFByb21pc2U8QXJkT3B0aW9uPiB7XG4gICAgY29uc3QgZm5SZXN1bHQgPSBmbih2YWx1ZSk7XG5cbiAgICBsZXQgb3B0aW9uVmFsdWUgPSBmblJlc3VsdDtcbiAgICBpZiAoaXNQcm9taXNlKG9wdGlvblZhbHVlKSkgb3B0aW9uVmFsdWUgPSBhd2FpdCBvcHRpb25WYWx1ZTtcblxuICAgIGNvbnN0IG5ld09wdGlvbk9iaiA9IHRoaXMuX2FkZFNpbmdsZUl0ZW0ob3B0aW9uVmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ld09wdGlvbk9iajtcbiAgfVxuXG4gIGNsZWFyQWxsU2VsZWN0ZWQocmVwb3B1bGF0ZUdyb3VwczogYm9vbGVhbiA9IGZhbHNlKTogYW55W10ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGxldCByZW1vdmVkSXRlbVZhbHVlcyA9IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICBpZiAocmVwb3B1bGF0ZUdyb3VwcyAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIHJldHVybiByZW1vdmVkSXRlbVZhbHVlcztcbiAgfVxuICBjbGVhckxhc3RTZWxlY3RlZCgpOiBBcmRPcHRpb24ge1xuICAgIGxldCBpdGVtID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5sYXN0KCk7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gaXRlbTtcbiAgICB0aGlzLnVuc2VsZWN0SXRlbShpdGVtKTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IFthbnlbXSwgYW55W10sIGFueVtdXSB7XG4gICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKSB7XG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XG4gICAgfVxuICAgIGxldCB1bnNlbGVjdGVkID0gW107XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSkge1xuICAgICAgdW5zZWxlY3RlZCA9IHRoaXMuY2xlYXJBbGxTZWxlY3RlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgbGV0IGl0ZW1zU2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaXRlbXNTZWxlY3RlZENvdW50Kys7XG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCkgY29udGludWU7XG4gICAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXNGYWlsZWRUb1NlbGVjdCA9IGl0ZW1zLnNsaWNlKGl0ZW1zU2VsZWN0ZWRDb3VudCAtIDEpO1xuICAgIHJldHVybiBbdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zU2VsZWN0ZWQpLCB1bnNlbGVjdGVkLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNGYWlsZWRUb1NlbGVjdCldO1xuICB9XG4gIHVuc2VsZWN0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uW10pOiBhbnlbXSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0uc2VsZWN0ZWQpIGNvbnRpbnVlO1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKTtcblxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXMpO1xuICB9XG5cbiAgY2xlYXJBbGxIaWdobGlnaHRzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zKSB7XG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5faGlnaGxpZ2h0ZWRHcm91cHMpIHtcbiAgICAgIGdyb3VwLmhpZ2hsaWdodGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLl9oaWdobGlnaHRlZEdyb3VwcyA9IFtdO1xuICB9XG4gIGhpZ2hsaWdodEdyb3VwKGdyb3VwOiBBcmRPcHRpb25Hcm91cCk6IEFyZE9wdGlvbiB7XG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcbiAgICBncm91cC5oaWdobGlnaHRlZCA9IHRydWU7XG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLmdyb3VwLmNoaWxkcmVuKTtcbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4uZmlyc3QoKTtcbiAgfVxuICBoaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW06IEFyZE9wdGlvbik6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIGlmICghaXRlbSB8fCBpdGVtLmRpc2FibGVkKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG4gIH1cbiAgaGlnaGxpZ2h0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uW10pOiBBcmRPcHRpb24ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMucHVzaCguLi5pdGVtcyk7XG4gICAgcmV0dXJuIGl0ZW1zLmxhc3QoKTtcbiAgfVxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQpIHJldHVybjtcblxuICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LmhpZ2hsaWdodGVkKTtcbiAgfVxuICBoaWdobGlnaHRGaXJzdEl0ZW0oKTogQXJkT3B0aW9uIHwgbnVsbCB7XG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcbiAgICBsZXQgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtc1RvSGlnaGxpZ2h0LmZpcnN0KCkpO1xuICB9XG4gIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0oaXRlbXNUb0hpZ2hsaWdodC5sYXN0KCkpO1xuICB9XG4gIHByaXZhdGUgX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk6IEFyZE9wdGlvbltdIHtcbiAgICBsZXQgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2ZpbHRlcmVkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCkge1xuICAgICAgaXRlbXNUb0hpZ2hsaWdodCA9IGl0ZW1zVG9IaWdobGlnaHQuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uc2VsZWN0ZWQpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXNUb0hpZ2hsaWdodDtcbiAgfVxuICBoaWdobGlnaHRBbGxJdGVtcygpOiB2b2lkIHtcbiAgICBsZXQgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2ZpbHRlcmVkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xuXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKSB7XG4gICAgICBpdGVtc1RvSGlnaGxpZ2h0ID0gaXRlbXNUb0hpZ2hsaWdodC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMuaGlnaGxpZ2h0SXRlbSguLi5pdGVtc1RvSGlnaGxpZ2h0KTtcbiAgfVxuICBwcml2YXRlIF9jbGVhclJlY2VudGx5SGlnaGxpZ2h0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtKSB7XG4gICAgICB0aGlzLl9yZWNlbnRseUhpZ2hsaWdodGVkSXRlbS5oaWdobGlnaHRlZF9yZWNlbnRseSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzZXRSZWNlbnRseUhpZ2hsaWdodGVkKGl0ZW06IEFyZE9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFyUmVjZW50bHlIaWdobGlnaHRlZCgpO1xuICAgIHRoaXMuX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtID0gaXRlbTtcbiAgICB0aGlzLl9yZWNlbnRseUhpZ2hsaWdodGVkSXRlbS5oaWdobGlnaHRlZF9yZWNlbnRseSA9IHRydWU7XG4gIH1cbiAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIsIGhhc1NoaWZ0PzogYm9vbGVhbik6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5oaWdobGlnaHRlZEl0ZW1zLmxhc3QoKTtcbiAgICBjb25zdCBoaWdobGlnaHRhYmxlSXRlbXMgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluRmlsdGVyZWQgPSBoaWdobGlnaHRhYmxlSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pbmRleCA9PSBjdXJyZW50SXRlbS5pbmRleCk7XG5cbiAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IGN1cnJlbnRJbmRleEluRmlsdGVyZWQgKyBvZmZzZXQ7XG4gICAgaWYgKG5leHRJdGVtSW5kZXggPj0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCAtPSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAobmV4dEl0ZW1JbmRleCA8IDApIHtcbiAgICAgIG5leHRJdGVtSW5kZXggKz0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gaGlnaGxpZ2h0YWJsZUl0ZW1zW25leHRJdGVtSW5kZXhdO1xuXG4gICAgaWYgKGhhc1NoaWZ0ICYmIHRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICBpZiAoaXRlbVRvSGlnaGxpZ2h0LmhpZ2hsaWdodGVkKSB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRJdGVtKGN1cnJlbnRJdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIGZpbHRlcihmaWx0ZXJUZXJtOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgaWYgKCFmaWx0ZXJUZXJtKSB7XG4gICAgICB0aGlzLnJlc2V0RmlsdGVyZWQoKTtcbiAgICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5fZmlsdGVyZWRJdGVtcyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5zZWFyY2hDYXNlU2Vuc2l0aXZlKSB7XG4gICAgICBmaWx0ZXJUZXJtID0gZmlsdGVyVGVybS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaEZuID0gdGhpcy5fYXJkUGFyZW50Q29tcC5zZWFyY2hGbjtcbiAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gc2VhcmNoRm4oZmlsdGVyVGVybSwgaXRlbSkpO1xuXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIGlmICghdGhpcy5pc05vSXRlbXNGb3VuZCkgdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICBlbHNlIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX2ZpbHRlcmVkSXRlbXMpO1xuICB9XG4gIHJlc2V0RmlsdGVyZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlcmVkSXRlbXMubGVuZ3RoID09IHRoaXMuX2l0ZW1zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkICYmIHRoaXMuaXNBbnlJdGVtU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMgPSB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMgPSB0aGlzLl9pdGVtcztcbiAgICB9XG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcbiAgfVxufVxuIl19
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9kcm9wZG93bi1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlDbEcsTUFBTSxPQUFPLFdBQVc7SUFTdEIsWUFBb0IsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBUjNDLFlBQU8sR0FBb0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkQsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFDekIsbUJBQWMsR0FBZ0IsRUFBRSxDQUFDO1FBQ2pDLHNCQUFpQixHQUFnQixFQUFFLENBQUM7UUFDcEMsdUJBQWtCLEdBQXFCLEVBQUUsQ0FBQztRQUUxQyxtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFxT2pDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztJQW5PTSxDQUFDO0lBRXZELElBQUksTUFBTTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENB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QixFQUFFO1lBQzVDLFVBQVUsR0FBRyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUM3QztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDOztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRTdELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRTthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZE9wdGlvbkdyb3VwLCBBcmRPcHRpb24sIEdyb3VwQnlGbiwgQXJkSXRlbUdyb3VwTWFwLCBTZWFyY2hGbiwgQ29tcGFyZVdpdGhGbiB9IGZyb20gJy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XHJcbmltcG9ydCByZXNvbHZlUGF0aCBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcclxuaW1wb3J0IHsgYW55LCBldmFsdWF0ZSwgaXNBcnJheSwgaXNEZWZpbmVkLCBpc09iamVjdCwgaXNQcmltaXRpdmUsIGlzUHJvbWlzZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgQWRkQ3VzdG9tRm4gfSBmcm9tICcuLi8uLi9zZWxlY3Qvc2VsZWN0LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHMge1xyXG4gIHZhbHVlRnJvbTogc3RyaW5nO1xyXG4gIGxhYmVsRnJvbTogc3RyaW5nO1xyXG4gIGRpc2FibGVkRnJvbTogc3RyaW5nO1xyXG4gIGdyb3VwTGFiZWxGcm9tOiBzdHJpbmc7XHJcbiAgZ3JvdXBEaXNhYmxlZEZyb206IHN0cmluZztcclxuICBjaGlsZHJlbkZyb206IHN0cmluZztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJdGVtU3RvcmFnZUhvc3Qge1xyXG4gIHZhbHVlRnJvbT86IHN0cmluZztcclxuICBsYWJlbEZyb20/OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWRGcm9tPzogc3RyaW5nO1xyXG4gIGludmVydERpc2FibGVkPzogYm9vbGVhbjtcclxuICBncm91cExhYmVsRnJvbT86IHN0cmluZyB8IEdyb3VwQnlGbjtcclxuICBncm91cERpc2FibGVkRnJvbT86IHN0cmluZztcclxuICBjaGlsZHJlbkZyb20/OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgREVGQVVMVFM6IEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzO1xyXG4gIGdyb3VwSXRlbXM/OiBib29sZWFuO1xyXG4gIGl0ZW1zQWxyZWFkeUdyb3VwZWQ/OiBib29sZWFuO1xyXG4gIGhpZGVTZWxlY3RlZDogYm9vbGVhbjtcclxuICBzZWFyY2hDYXNlU2Vuc2l0aXZlOiBib29sZWFuO1xyXG4gIHNlYXJjaEZuOiBTZWFyY2hGbjtcclxuICBjb21wYXJlV2l0aD86IENvbXBhcmVXaXRoRm47XHJcbiAgbXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gIHNvcnRNdWx0aXBsZVZhbHVlczogYm9vbGVhbjtcclxuICBtYXhTZWxlY3RlZEl0ZW1zPzogbnVtYmVyO1xyXG4gIGFkZEN1c3RvbTogYm9vbGVhbiB8IEFkZEN1c3RvbUZuPGFueT4gfCBBZGRDdXN0b21GbjxQcm9taXNlPGFueT4+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSXRlbVN0b3JhZ2Uge1xyXG4gIHByaXZhdGUgX2dyb3VwczogQXJkSXRlbUdyb3VwTWFwID0gdGhpcy5fY3JlYXRlRW1wdHlHcm91cE1hcCgpO1xyXG4gIHByaXZhdGUgX2l0ZW1zOiBBcmRPcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgX2ZpbHRlcmVkSXRlbXM6IEFyZE9wdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0ZWRJdGVtczogQXJkT3B0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF9oaWdobGlnaHRlZEdyb3VwczogQXJkT3B0aW9uR3JvdXBbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtPzogQXJkT3B0aW9uO1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IEFyZE9wdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FyZFBhcmVudENvbXA6IEl0ZW1TdG9yYWdlSG9zdCkge31cclxuXHJcbiAgZ2V0IGdyb3VwcygpOiBBcmRPcHRpb25Hcm91cFtdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2dyb3Vwcy5lbnRyaWVzKCkpXHJcbiAgICAgIC5tYXAoKFtfLCBncm91cF0pID0+IGdyb3VwKVxyXG4gICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmNoaWxkcmVuLmxlbmd0aCk7XHJcbiAgfVxyXG4gIGdldCBpdGVtcygpOiBBcmRPcHRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgfVxyXG4gIGdldCBmaWx0ZXJlZEl0ZW1zKCk6IEFyZE9wdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBBcmRPcHRpb25bXSB7XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5zb3J0TXVsdGlwbGVWYWx1ZXMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcztcclxuICB9XHJcbiAgZ2V0IGhpZ2hsaWdodGVkSXRlbXMoKTogQXJkT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXM7XHJcbiAgfVxyXG4gIGdldCBsYXN0U2VsZWN0ZWRJdGVtKCk6IEFyZE9wdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRJdGVtcy5sYXN0KDEsIGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuICBwcml2YXRlIF9pdGVtc1RvVmFsdWUoaXRlbXM6IEFyZE9wdGlvbltdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTm9JdGVtc1RvU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aCA9PSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICB9XHJcbiAgZ2V0IGlzTm9JdGVtc0ZvdW5kKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgfVxyXG4gIGdldCBpc0FueUl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG4gIGdldCBpc0FueUl0ZW1IaWdobGlnaHRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG4gIGdldCBpc0l0ZW1MaW1pdFJlYWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSAmJlxyXG4gICAgICBpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKSAmJlxyXG4gICAgICB0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMhIDw9IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRJdGVtcyhpdGVtczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuZ3JvdXBJdGVtcyAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLml0ZW1zQWxyZWFkeUdyb3VwZWQpIHtcclxuICAgICAgbGV0IG5ld0l0ZW1zID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgaXRlbXMpIHtcclxuICAgICAgICBsZXQgY2hpbGRyZW46IGFueVtdO1xyXG4gICAgICAgIFtjaGlsZHJlbiwgYXJlSXRlbXNQcmltaXRpdmVdID0gdGhpcy5fdW5ncm91cEFscmVhZHlHcm91cGVkSXRlbXMoZ3JvdXApO1xyXG4gICAgICAgIG5ld0l0ZW1zLnB1c2goLi4uY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW1zID0gbmV3SXRlbXM7XHJcbiAgICB9XHJcbiAgICBpZiAoYW55KGl0ZW1zLCBpc1ByaW1pdGl2ZSkpIHtcclxuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XHJcbiAgICAgIGFyZUl0ZW1zUHJpbWl0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaW5kZXgsIGFyZUl0ZW1zUHJpbWl0aXZlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vYWRkIGFsbCBpdGVtcyB0byBmaWx0ZXIgYXJyYXlcclxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMgPSB0aGlzLl9pdGVtcztcclxuXHJcbiAgICAvL2FkZCBpdGVtcyB0byBncm91cHNcclxuICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XHJcblxyXG4gICAgLy93cml0ZSB2YWx1ZSBpZiBpdCB3YXNcclxuICAgIGlmICh0aGlzLl92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlV3JpdGVWYWx1ZSh0aGlzLl92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFyZUl0ZW1zUHJpbWl0aXZlO1xyXG4gIH1cclxuICBwcml2YXRlIF9hZGRTaW5nbGVJdGVtKGl0ZW06IGFueSk6IEFyZE9wdGlvbiB7XHJcbiAgICBsZXQgaXNJdGVtUHJpbWl0aXZlID0gaXNQcmltaXRpdmUoaXRlbSk7XHJcbiAgICAvL21hcCBhIHByaW1pdGl2ZSBpdGVtIHRvIGEgdXNhYmxlIG9iamVjdFxyXG4gICAgaWYgKGlzSXRlbVByaW1pdGl2ZSkge1xyXG4gICAgICBpdGVtID0gdGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbihpdGVtKTtcclxuICAgIH1cclxuICAgIC8vbWFwIHRoZSBpdGVtIHRvIGNyZWF0ZSBkYXRhIGJpbmRpbmdzXHJcbiAgICBjb25zdCBhcmRPcHRpb24gPSB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIHRoaXMuX2l0ZW1zLmxhc3QoKT8uaW5kZXggKyAxLCBpc0l0ZW1QcmltaXRpdmUpO1xyXG5cclxuICAgIC8vcHVzaCB0aGUgaXRlbSBpbnRvIGFsbCBpdGVtc1xyXG4gICAgdGhpcy5faXRlbXMucHVzaChhcmRPcHRpb24pO1xyXG5cclxuICAgIC8vYWRkIGl0ZW0gdG8gZ3JvdXBzXHJcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG5cclxuICAgIHJldHVybiBhcmRPcHRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ByaW1pdGl2ZUl0ZW1zTWFwRm48VD4oaXRlbTogVCk6IHsgdmFsdWU6IFQgfSB7XHJcbiAgICByZXR1cm4geyB2YWx1ZTogaXRlbSB9O1xyXG4gIH1cclxuICBwcml2YXRlIF91bmdyb3VwQWxyZWFkeUdyb3VwZWRJdGVtczxUIGV4dGVuZHMgb2JqZWN0Pihncm91cDogVCk6IFthbnlbXSwgYm9vbGVhbl0ge1xyXG4gICAgLy9kZXRlcm1pbmUgZ3JvdXBCeSAoZ3JvdXBMYWJlbCkgcGF0aFxyXG4gICAgbGV0IGdyb3VwQnkgPSB0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuZ3JvdXBMYWJlbEZyb207XHJcblxyXG4gICAgLy9nZXQgZ3JvdXAgbGFiZWwgZnJvbSBvYmplY3RcclxuICAgIGxldCBncm91cE5hbWU6IGFueTtcclxuICAgIGlmICh0eXBlb2YgZ3JvdXBCeSA9PSAnc3RyaW5nJykge1xyXG4gICAgICBncm91cE5hbWUgPSByZXNvbHZlUGF0aChncm91cCwgZ3JvdXBCeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncm91cE5hbWUgPSBncm91cEJ5KGdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICAvL2RldGVybWluZSBncm91cCBjaGlsZHJlbiBwYXRoXHJcbiAgICBsZXQgY2hpbGRyZW5QYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5jaGlsZHJlbkZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5jaGlsZHJlbkZyb207XHJcblxyXG4gICAgLy9nZXQgZ3JvdXAgY2hpbGRyZW5cclxuICAgIGxldCBncm91cEl0ZW1zOiBhbnkgPSByZXNvbHZlUGF0aChncm91cCwgY2hpbGRyZW5QYXRoKTtcclxuXHJcbiAgICAvL3JldHVybiBlbXB0eSBhcnJheSBpZiBncm91cEl0ZW1zIGlzIG5vdCBhbiBhcnJheSBvciBpcyBlbXB0eVxyXG4gICAgaWYgKCFpc0FycmF5KGdyb3VwSXRlbXMpIHx8IGdyb3VwSXRlbXMubGVuZ3RoID09IDApIHJldHVybiBbW10sIGZhbHNlXTtcclxuXHJcbiAgICAvL2NoZWNrIGlmIHRoZSBhcnJheSBpcyBhbiBhcnJheSBvZiBwcmltaXRpdmVzLCBhbmQgbWFwIGl0IGlmIG5lZWRlZFxyXG4gICAgbGV0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XHJcbiAgICBpZiAoYW55KGdyb3VwSXRlbXMsIGlzUHJpbWl0aXZlKSkge1xyXG4gICAgICBncm91cEl0ZW1zID0gZ3JvdXBJdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XHJcbiAgICB9XHJcbiAgICAvL2FkZCBncm91cCBuYW1lIHRvIGV2ZXJ5IGNoaWxkXHJcbiAgICBncm91cEl0ZW1zID0gZ3JvdXBJdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpdGVtLiRhcmRncm91cCA9IGdyb3VwTmFtZTtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gW2dyb3VwSXRlbXMsIGFyZUl0ZW1zUHJpbWl0aXZlXTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvbiB7XHJcbiAgICBpZiAoYXJlSXRlbXNQcmltaXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpdGVtRGF0YTogcmF3SXRlbURhdGEsXHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgdmFsdWU6IHJhd0l0ZW1EYXRhLnZhbHVlLFxyXG4gICAgICAgIGxhYmVsOiByYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSksXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICAvL2dldCB2YWx1ZVxyXG4gICAgY29uc3QgdmFsdWVQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy52YWx1ZUZyb207XHJcbiAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCB2YWx1ZVBhdGgpO1xyXG5cclxuICAgIC8vZ2V0IGxhYmVsXHJcbiAgICBjb25zdCBsYWJlbFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmxhYmVsRnJvbTtcclxuICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGxhYmVsUGF0aCkgPz8gdmFsdWU7XHJcblxyXG4gICAgLy9nZXQgZGlzYWJsZWRcclxuICAgIGNvbnN0IGRpc2FibGVkUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuZGlzYWJsZWRGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuZGlzYWJsZWRGcm9tO1xyXG4gICAgbGV0IGRpc2FibGVkID0gZXZhbHVhdGUocmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGRpc2FibGVkUGF0aCkpO1xyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaW52ZXJ0RGlzYWJsZWQpIHtcclxuICAgICAgZGlzYWJsZWQgPSAhZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXQgZ3JvdXBzXHJcbiAgICBsZXQgZ3JvdXA6IGFueSA9IHVuZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwSXRlbXMpIHtcclxuICAgICAgaWYgKHJhd0l0ZW1EYXRhLiRhcmRncm91cCkge1xyXG4gICAgICAgIGdyb3VwID0gcmF3SXRlbURhdGEuJGFyZGdyb3VwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBncm91cEJ5ID0gdGhpcy5fYXJkUGFyZW50Q29tcC5ncm91cExhYmVsRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmdyb3VwTGFiZWxGcm9tO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZ3JvdXBCeSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgZ3JvdXAgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZ3JvdXBCeSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGdyb3VwID0gKGdyb3VwQnkgYXMgR3JvdXBCeUZuKShyYXdJdGVtRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbURhdGEgPSBhcmVJdGVtc1ByaW1pdGl2ZSA/IHJhd0l0ZW1EYXRhLnZhbHVlIDogcmF3SXRlbURhdGE7XHJcblxyXG4gICAgLy9yZXR1cm5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGl0ZW1EYXRhLFxyXG4gICAgICBpbmRleCxcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIGxhYmVsOiBsYWJlbD8udG9TdHJpbmc/LigpID8/IFN0cmluZyhsYWJlbCksXHJcbiAgICAgIGRpc2FibGVkLFxyXG4gICAgICBncm91cCxcclxuICAgIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX3BvcHVsYXRlR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ3JvdXBzID0gdGhpcy5fY3JlYXRlRW1wdHlHcm91cE1hcCgpO1xyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9maWx0ZXJlZEl0ZW1zKSB7XHJcbiAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCAmJiBpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcclxuXHJcbiAgICAgIHRoaXMuX2FkZFRvR3JvdXAoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZFRvR3JvdXAoaXRlbTogQXJkT3B0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cEtleSA9IGl0ZW0uZ3JvdXA7XHJcbiAgICBsZXQgdGFyZ2V0R3JvdXAgPSB0aGlzLl9ncm91cHMuZ2V0KGdyb3VwS2V5KTtcclxuICAgIC8vY3JlYXRlIG5ldyBncm91cCBpZiBuZWVkZWRcclxuICAgIGlmICghdGFyZ2V0R3JvdXApIHtcclxuICAgICAgdGhpcy5fZ3JvdXBzLnNldChncm91cEtleSwge1xyXG4gICAgICAgIGxhYmVsOiBTdHJpbmcoZ3JvdXBLZXkgPz8gJycpLFxyXG4gICAgICAgIGNoaWxkcmVuOiBbaXRlbV0sXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0YXJnZXRHcm91cC5jaGlsZHJlbi5wdXNoKGl0ZW0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9jcmVhdGVFbXB0eUdyb3VwTWFwKCkge1xyXG4gICAgcmV0dXJuIG5ldyBNYXAoW1t1bmRlZmluZWQsIHsgbGFiZWw6ICcnLCBjaGlsZHJlbjogW10gfV1dKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNXcml0ZVZhbHVlVmFsaWQobmdNb2RlbDogYW55W10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBuZ01vZGVsLmV2ZXJ5KGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKSAmJiBpc09iamVjdChpdGVtKSAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgU2V0dGluZyBvYmplY3QoJHtKU09OLnN0cmluZ2lmeShpdGVtKX0pIGFzIHlvdXIgbW9kZWwgd2l0aCBbdmFsdWVGcm9tXSBpcyBub3QgYWxsb3dlZCB1bmxlc3MgW2NvbXBhcmVXaXRoXSBpcyB1c2VkLmApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZDogYW55O1xyXG4gIHByaXZhdGUgX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhbmRsZVdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiB2b2lkIHtcclxuICAgIC8vZGVmZXIgd3JpdGluZyB0aGUgdmFsdWUgaWYgbm8gb3B0aW9ucyBhcmUgeWV0IGxvYWRlZFxyXG4gICAgaWYgKCF0aGlzLl93YXNWYWx1ZVdyaXRlRGVmZXJyZWQgJiYgdGhpcy5faXRlbXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5fdmFsdWVUb1dyaXRlQWZ0ZXJJdGVtc0xvYWQgPSBuZ01vZGVsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhckFsbFNlbGVjdGVkKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9pc1dyaXRlVmFsdWVWYWxpZChuZ01vZGVsKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgaXRlbSA9IHRoaXMuZmluZEl0ZW1CeVZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLndhcm4oYENvdWxkbid0IGZpbmQgYW4gaXRlbSB3aXRoIHZhbHVlICR7dmFsdWU/LnRvU3RyaW5nPy4oKSB8fCBTdHJpbmcodmFsdWUpfS5gKTtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBtb2RlbFZhbHVlIG9mIG5nTW9kZWwpIHtcclxuICAgICAgc2VsZWN0SXRlbUJ5VmFsdWUobW9kZWxWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZpbmRJdGVtQnlWYWx1ZSh2YWx1ZVRvRmluZDogYW55KTogQXJkT3B0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb24pID0+IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCkge1xyXG4gICAgICBmaW5kQnkgPSBpdGVtID0+IHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGghKHZhbHVlVG9GaW5kLCBpdGVtLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWVUb0ZpbmQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGZpbmRCeShpdGVtKSk7XHJcbiAgfVxyXG4gIGFzeW5jIGFkZEN1c3RvbU9wdGlvbih2YWx1ZTogc3RyaW5nLCBmbjogQWRkQ3VzdG9tRm48YW55PiB8IEFkZEN1c3RvbUZuPFByb21pc2U8YW55Pj4pOiBQcm9taXNlPEFyZE9wdGlvbj4ge1xyXG4gICAgY29uc3QgZm5SZXN1bHQgPSBmbih2YWx1ZSk7XHJcblxyXG4gICAgbGV0IG9wdGlvblZhbHVlID0gZm5SZXN1bHQ7XHJcbiAgICBpZiAoaXNQcm9taXNlKG9wdGlvblZhbHVlKSkgb3B0aW9uVmFsdWUgPSBhd2FpdCBvcHRpb25WYWx1ZTtcclxuXHJcbiAgICBjb25zdCBuZXdPcHRpb25PYmogPSB0aGlzLl9hZGRTaW5nbGVJdGVtKG9wdGlvblZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gbmV3T3B0aW9uT2JqO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxTZWxlY3RlZChyZXBvcHVsYXRlR3JvdXBzOiBib29sZWFuID0gZmFsc2UpOiBhbnlbXSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgcmVtb3ZlZEl0ZW1WYWx1ZXMgPSB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5fc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XHJcblxyXG4gICAgaWYgKHJlcG9wdWxhdGVHcm91cHMgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQpIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XHJcblxyXG4gICAgcmV0dXJuIHJlbW92ZWRJdGVtVmFsdWVzO1xyXG4gIH1cclxuICBjbGVhckxhc3RTZWxlY3RlZCgpOiBBcmRPcHRpb24ge1xyXG4gICAgbGV0IGl0ZW0gPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxhc3QoKTtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuIGl0ZW07XHJcbiAgICB0aGlzLnVuc2VsZWN0SXRlbShpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IFthbnlbXSwgYW55W10sIGFueVtdXSB7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQpIHtcclxuICAgICAgcmV0dXJuIFtbXSwgW10sIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyldO1xyXG4gICAgfVxyXG4gICAgbGV0IHVuc2VsZWN0ZWQgPSBbXTtcclxuICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUpIHtcclxuICAgICAgdW5zZWxlY3RlZCA9IHRoaXMuY2xlYXJBbGxTZWxlY3RlZChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGl0ZW1zU2VsZWN0ZWRDb3VudCA9IDA7XHJcbiAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaXRlbXNTZWxlY3RlZENvdW50Kys7XHJcbiAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcclxuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgaXRlbXNTZWxlY3RlZC5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGl0ZW1zRmFpbGVkVG9TZWxlY3QgPSBpdGVtcy5zbGljZShpdGVtc1NlbGVjdGVkQ291bnQgLSAxKTtcclxuICAgIHJldHVybiBbdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zU2VsZWN0ZWQpLCB1bnNlbGVjdGVkLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNGYWlsZWRUb1NlbGVjdCldO1xyXG4gIH1cclxuICB1bnNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogYW55W10ge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZCkgY29udGludWU7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZpbHRlcih2ID0+IHYuc2VsZWN0ZWQpO1xyXG5cclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsSGlnaGxpZ2h0cygpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zKSB7XHJcbiAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5faGlnaGxpZ2h0ZWRHcm91cHMpIHtcclxuICAgICAgZ3JvdXAuaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzID0gW107XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEdyb3VwKGdyb3VwOiBBcmRPcHRpb25Hcm91cCk6IEFyZE9wdGlvbiB7XHJcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG4gICAgZ3JvdXAuaGlnaGxpZ2h0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLmdyb3VwLmNoaWxkcmVuKTtcclxuICAgIHJldHVybiBncm91cC5jaGlsZHJlbi5maXJzdCgpO1xyXG4gIH1cclxuICBoaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW06IEFyZE9wdGlvbik6IEFyZE9wdGlvbiB8IG51bGwge1xyXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogQXJkT3B0aW9uIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMucHVzaCguLi5pdGVtcyk7XHJcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xyXG4gIH1cclxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmhpZ2hsaWdodGVkKSByZXR1cm47XHJcblxyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LmhpZ2hsaWdodGVkKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZE9wdGlvbiB8IG51bGwge1xyXG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcclxuICAgIGxldCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0oaXRlbXNUb0hpZ2hsaWdodC5maXJzdCgpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0TGFzdEl0ZW0oKTogQXJkT3B0aW9uIHwgbnVsbCB7XHJcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtc1RvSGlnaGxpZ2h0Lmxhc3QoKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk6IEFyZE9wdGlvbltdIHtcclxuICAgIGxldCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZmlsdGVyZWRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCk7XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQpIHtcclxuICAgICAgaXRlbXNUb0hpZ2hsaWdodCA9IGl0ZW1zVG9IaWdobGlnaHQuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1zVG9IaWdobGlnaHQ7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEFsbEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9maWx0ZXJlZEl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQpIHtcclxuICAgICAgaXRlbXNUb0hpZ2hsaWdodCA9IGl0ZW1zVG9IaWdobGlnaHQuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLml0ZW1zVG9IaWdobGlnaHQpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jbGVhclJlY2VudGx5SGlnaGxpZ2h0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0pIHtcclxuICAgICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0uaGlnaGxpZ2h0ZWRfcmVjZW50bHkgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0UmVjZW50bHlIaWdobGlnaHRlZChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX2NsZWFyUmVjZW50bHlIaWdobGlnaHRlZCgpO1xyXG4gICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0gPSBpdGVtO1xyXG4gICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0uaGlnaGxpZ2h0ZWRfcmVjZW50bHkgPSB0cnVlO1xyXG4gIH1cclxuICBoaWdobGlnaHROZXh0SXRlbShvZmZzZXQ6IG51bWJlciwgaGFzU2hpZnQ/OiBib29sZWFuKTogQXJkT3B0aW9uIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBbnlJdGVtSGlnaGxpZ2h0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcy5sYXN0KCk7XHJcbiAgICBjb25zdCBoaWdobGlnaHRhYmxlSXRlbXMgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4SW5GaWx0ZXJlZCA9IGhpZ2hsaWdodGFibGVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4ID09IGN1cnJlbnRJdGVtLmluZGV4KTtcclxuXHJcbiAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IGN1cnJlbnRJbmRleEluRmlsdGVyZWQgKyBvZmZzZXQ7XHJcbiAgICBpZiAobmV4dEl0ZW1JbmRleCA+PSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgIG5leHRJdGVtSW5kZXggLT0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4ICs9IGhpZ2hsaWdodGFibGVJdGVtcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSBoaWdobGlnaHRhYmxlSXRlbXNbbmV4dEl0ZW1JbmRleF07XHJcblxyXG4gICAgaWYgKGhhc1NoaWZ0ICYmIHRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlKSB7XHJcbiAgICAgIGlmIChpdGVtVG9IaWdobGlnaHQuaGlnaGxpZ2h0ZWQpIHtcclxuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0SXRlbShjdXJyZW50SXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG4gIH1cclxuICBmaWx0ZXIoZmlsdGVyVGVybTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgaWYgKCFmaWx0ZXJUZXJtKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXJlZCgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX2ZpbHRlcmVkSXRlbXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLnNlYXJjaENhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgZmlsdGVyVGVybSA9IGZpbHRlclRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hGbiA9IHRoaXMuX2FyZFBhcmVudENvbXAuc2VhcmNoRm47XHJcbiAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gc2VhcmNoRm4oZmlsdGVyVGVybSwgaXRlbSkpO1xyXG5cclxuICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzTm9JdGVtc0ZvdW5kKSB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xyXG4gICAgZWxzZSB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5fZmlsdGVyZWRJdGVtcyk7XHJcbiAgfVxyXG4gIHJlc2V0RmlsdGVyZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZmlsdGVyZWRJdGVtcy5sZW5ndGggPT0gdGhpcy5faXRlbXMubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkICYmIHRoaXMuaXNBbnlJdGVtU2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5fZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLnNlbGVjdGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMgPSB0aGlzLl9pdGVtcztcclxuICAgIH1cclxuICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -346,4 +346,4 @@ export class SimpleItemStorage {
|
|
|
346
346
|
return this._items.filter(item => !item.disabled);
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWl0ZW0tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW1COUUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUFvQixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKakQsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFDL0Isc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQztRQUMxQyxtQkFBYyxHQUFzQixFQUFFLENBQUM7SUFFYSxDQUFDO0lBRTdEOztPQUVHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLEtBQXdCO1FBQzVDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJ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QkFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRDs7O09BR0c7SUFDSyxxQkFBcUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZE9wdGlvblNpbXBsZSwgQ29tcGFyZVdpdGhGbiB9IGZyb20gJy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgcmVzb2x2ZVBhdGggZnJvbSAncmVzb2x2ZS1vYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBhbnksIGV2YWx1YXRlLCBpc0RlZmluZWQsIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cyB7XG4gIHZhbHVlRnJvbTogc3RyaW5nO1xuICBsYWJlbEZyb206IHN0cmluZztcbiAgZGlzYWJsZWRGcm9tOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZUl0ZW1TdG9yYWdlSG9zdCB7XG4gIHZhbHVlRnJvbT86IHN0cmluZztcbiAgbGFiZWxGcm9tPzogc3RyaW5nO1xuICBkaXNhYmxlZEZyb20/OiBzdHJpbmc7XG4gIGludmVydERpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgREVGQVVMVFM6IEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzO1xuICBjb21wYXJlV2l0aD86IENvbXBhcmVXaXRoRm47XG4gIG11bHRpc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgcmVxdWlyZVZhbHVlOiBib29sZWFuO1xuICBtYXhTZWxlY3RlZEl0ZW1zPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlSXRlbVN0b3JhZ2Uge1xuICBwcml2YXRlIF9pdGVtczogQXJkT3B0aW9uU2ltcGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0ZWRJdGVtczogQXJkT3B0aW9uU2ltcGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtczogQXJkT3B0aW9uU2ltcGxlW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcmRQYXJlbnRDb21wOiBTaW1wbGVJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGl0ZW1zLlxuICAgKi9cbiAgZ2V0IGl0ZW1zKCk6IEFyZE9wdGlvblNpbXBsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldHMgYWxsIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcy5cbiAgICovXG4gIGdldCBzZWxlY3RlZEl0ZW1zKCk6IEFyZE9wdGlvblNpbXBsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcztcbiAgfVxuICAvKipcbiAgICogR2V0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgKi9cbiAgZ2V0IGhpZ2hsaWdodGVkSXRlbXMoKTogQXJkT3B0aW9uU2ltcGxlW10ge1xuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcy5cbiAgICovXG4gIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG4gIC8qKlxuICAgKiBNYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gdGhlaXIgdmFsdWVzLlxuICAgKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGNvbnZlcnQgdG8gdmFsdWUuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW0gdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXRlbXNUb1ZhbHVlKGl0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBpdGVtIGlzIGhpZ2hsaWdodGVkLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBnZXQgaXNBbnlJdGVtSGlnaGxpZ2h0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXJlbnQgY29tcG9uZW50IGRlZmluZXMgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RhYmxlIGl0ZW1zIGFuZCB0aGUgYW1vdW50IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBtYXRjaGVzIHRoYXQgbGltaXQuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLlxuICAgKlxuICAgKiAqKlRMRFIqKjogdHJ1ZSBpZiBgbWF4U2VsZWN0ZWRJdGVtc2AgaXMgZGVmaW5lZCBhbmQgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBtYXRjaGVzIHRoYXQgdmFsdWUuXG4gICAqL1xuICBnZXQgaXNJdGVtTGltaXRSZWFjaGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUgfHwgIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMgPD0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQncyBpdGVtcy4gVGFrZXMgaW50byBhY2NvdW50IHRoZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudCBmb3IgYHZhbHVlRnJvbWAsIGBsYWJlbEZyb21gLCBhbmQgYGRpc2FibGVkRnJvbWAuXG4gICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBzZXQgYXMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaXRlbXMgaXMgb2YgcHJpbWl0aXZlIHR5cGUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChhbnkoaXRlbXMsIGlzUHJpbWl0aXZlKSkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XG4gICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5faXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0SXRlbXNNYXBGbihpdGVtLCBpbmRleCwgYXJlSXRlbXNQcmltaXRpdmUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyZUl0ZW1zUHJpbWl0aXZlO1xuICB9XG4gIHByaXZhdGUgX3ByaW1pdGl2ZUl0ZW1zTWFwRm48VD4oaXRlbTogVCk6IHsgdmFsdWU6IFQgfSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IGl0ZW0gfTtcbiAgfVxuICBwcml2YXRlIF9zZXRJdGVtc01hcEZuKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIsIGFyZUl0ZW1zUHJpbWl0aXZlOiBib29sZWFuKTogQXJkT3B0aW9uU2ltcGxlIHtcbiAgICBpZiAoYXJlSXRlbXNQcmltaXRpdmUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1EYXRhOiByYXdJdGVtRGF0YSxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHZhbHVlOiByYXdJdGVtRGF0YS52YWx1ZSxcbiAgICAgICAgbGFiZWw6IHJhd0l0ZW1EYXRhLnZhbHVlPy50b1N0cmluZz8uKCkgPz8gU3RyaW5nKHJhd0l0ZW1EYXRhLnZhbHVlKSxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vZ2V0IHZhbHVlXG4gICAgY29uc3QgdmFsdWVQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy52YWx1ZUZyb207XG4gICAgY29uc3QgdmFsdWUgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgdmFsdWVQYXRoKTtcblxuICAgIC8vZ2V0IGxhYmVsXG4gICAgY29uc3QgbGFiZWxQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5sYWJlbEZyb207XG4gICAgY29uc3QgbGFiZWwgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgbGFiZWxQYXRoKSA/PyB2YWx1ZTtcblxuICAgIC8vZ2V0IGRpc2FibGVkXG4gICAgY29uc3QgZGlzYWJsZWRQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5kaXNhYmxlZEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5kaXNhYmxlZEZyb207XG4gICAgbGV0IGRpc2FibGVkID0gZXZhbHVhdGUocmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGRpc2FibGVkUGF0aCkpO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydERpc2FibGVkKSB7XG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtRGF0YSA9IGFyZUl0ZW1zUHJpbWl0aXZlID8gcmF3SXRlbURhdGEudmFsdWUgOiByYXdJdGVtRGF0YTtcblxuICAgIC8vcmV0dXJuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1EYXRhLFxuICAgICAgaW5kZXgsXG4gICAgICB2YWx1ZSxcbiAgICAgIGxhYmVsOiBsYWJlbD8udG9TdHJpbmc/LigpID8/IFN0cmluZyhsYWJlbCksXG4gICAgICBkaXNhYmxlZCxcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGl0ZW0gc3RvcmFnZS4gU2VsZWN0cyB0aGUgY29ycmVjdCBpdGVtcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsdWVzLCB3YXJuaW5nIHRoZSB1c2VyIGlmIHRoZSB2YWx1ZSBpcyBub3QgZm91bmQuXG4gICAqIEBwYXJhbSBuZ01vZGVsIFRoZSB2YWx1ZSBvZiB0aGUgbmdNb2RlbCB0byBzZXQuXG4gICAqL1xuICB3cml0ZVZhbHVlKG5nTW9kZWw6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xuXG4gICAgaWYgKCF0aGlzLl92YWxpZGF0ZVdyaXRlVmFsdWUobmdNb2RlbCkpIHJldHVybjtcblxuICAgIGNvbnN0IHNlbGVjdEl0ZW1CeVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGxldCBpdGVtID0gdGhpcy5maW5kSXRlbUJ5VmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihgQ291bGRuJ3QgZmluZCBhbiBpdGVtIHdpdGggdmFsdWUgJHt2YWx1ZT8udG9TdHJpbmc/LigpIHx8IFN0cmluZyh2YWx1ZSl9LmApO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsVmFsdWUgb2YgbmdNb2RlbCkge1xuICAgICAgc2VsZWN0SXRlbUJ5VmFsdWUobW9kZWxWYWx1ZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBhbGwgdmFsdWVzIG9mIHRoZSB2YWx1ZSB0byBiZSB3cml0dGVuIGFyZSBhYmxlIHRvIGJlIGFjY3VyYXRlbHkgY29tcGFyZWQgYWdhaW5zdCB0aGUgc3RvcmFnZSBpdGVtcy5cbiAgICpcbiAgICogQW4gaXRlbSBmcm9tIHRoZSBuZ01vZGVsIGFycmF5IGlzIGNvbnNpZGVyZWQgdmFsaWQgaWYgaXQgaXMgYSBwcmltaXRpdmUgdmFsdWUsIG9yIGlmIGFsbCBvZiB0aGUgYmVsb3cgcG9pbnRzIGFyZSBtZXQ6XG4gICAqIDEuIFRoZSBwYXJlbnQgY29tcG9uZW50IGRlZmluZXMgdGhlIGBjb21wYXJlV2l0aGAgcHJvcGVydHkuXG4gICAqIDIuIFRoZSBuZ01vZGVsIHZhbHVlIGl0ZW0gaXMgYW4gb2JqZWN0IChvciBhcnJheSkuXG4gICAqIDMuIFRoZSBwYXJlbnQgY29tcG9uZW50IGhhcyBhIGRlZmluZWQgYHZhbHVlRnJvbWAgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBuZ01vZGVsIFRoZSB2YWx1ZSBvZiBuZ01vZGVsIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFsbCBpdGVtcyBhcmUgdmFsaWQsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlV3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZ01vZGVsLmV2ZXJ5KGl0ZW0gPT4ge1xuICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCkgJiYgaXNPYmplY3QoaXRlbSkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20pIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBTZXR0aW5nIG9iamVjdCgke0pTT04uc3RyaW5naWZ5KGl0ZW0pfSkgYXMgeW91ciBtb2RlbCB3aXRoIFt2YWx1ZUZyb21dIGlzIG5vdCBhbGxvd2VkIHVubGVzcyBbY29tcGFyZVdpdGhdIGlzIHVzZWQuYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIGZpbmRJdGVtQnlWYWx1ZSh2YWx1ZVRvRmluZDogYW55KTogQXJkT3B0aW9uU2ltcGxlIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZmluZEJ5OiAoaXRlbTogQXJkT3B0aW9uU2ltcGxlKSA9PiBib29sZWFuO1xuICAgIGlmIChpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCkpIHtcbiAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gdGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCEodmFsdWVUb0ZpbmQsIGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5kQnkgPSBpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlVG9GaW5kO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGZpbmRCeShpdGVtKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcy5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBjb21wb25lbnQgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHZhbHVlIHRvIGJlIHNlbGVjdGVkIGF0IGFsbCB0aW1lcywgdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW1zIGlzIGxlZnQgc2VsZWN0ZWQuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICovXG4gIHVuc2VsZWN0QWxsKCk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcykge1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcblxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLnJlcXVpcmVWYWx1ZSAmJiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlyc3QoKS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICByZXQuc3BsaWNlKDAsIDEpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgLyoqXG4gICAqIFVuc2VsZWN0cyBhbGwgc2VsZWN0ZWQgaXRlbXMsIG5vIG1hdHRlciB3aGF0IHRoZSBjb21wb25lbnQgc2V0dGluZ3MgYXJlLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyBjbGVhcmVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIF9mb3JjZVVuc2VsZWN0QWxsKCk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcykge1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcblxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdHMgb25lIG9yIG11bHRpcGxlIGl0ZW1zLlxuICAgKlxuICAgKiBBY2NvdW50cyBmb3IgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gb2JqZWN0cyB0byBiZSBzZWxlY3RlZC5cbiAgICogQHJldHVybnMgQSB0dXBsZSBjb250YWluaW5nIHRocmVlIGFycmF5cywgYWxsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlczpcbiAgICogKiBBbiBhcnJheSBvZiBpdGVtcyBzZWxlY3RlZCxcbiAgICogKiBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLFxuICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIGZhaWxlZCB0byBzZWxlY3QgZHVlIHRvIHRoZSBsaW1pdC5cbiAgICovXG4gIHNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogW2FueVtdLCBhbnlbXSwgYW55W11dIHtcbiAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQpIHtcbiAgICAgIHJldHVybiBbW10sIFtdLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXMpXTtcbiAgICB9XG4gICAgbGV0IHVuc2VsZWN0ZWQgPSBbXTtcbiAgICBpZiAoIXRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICB1bnNlbGVjdGVkID0gdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xuICAgIH1cblxuICAgIGxldCBpdGVtc1NlbGVjdGVkQ291bnQgPSAwO1xuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGl0ZW1zU2VsZWN0ZWRDb3VudCsrO1xuICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIGNvbnRpbnVlO1xuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICBpdGVtc1NlbGVjdGVkLnB1c2goaXRlbSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXNGYWlsZWRUb1NlbGVjdCA9IGl0ZW1zLnNsaWNlKGl0ZW1zU2VsZWN0ZWRDb3VudCAtIDEpO1xuICAgIHJldHVybiBbdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zU2VsZWN0ZWQpLCB1bnNlbGVjdGVkLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNGYWlsZWRUb1NlbGVjdCldO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gb2JqZWN0cyB0byBiZSB1bnNlbGVjdGVkLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXG4gICAqL1xuICB1bnNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogYW55W10ge1xuICAgIGxldCBza2lwcGVkSXRlbSA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAucmVxdWlyZVZhbHVlICYmICFza2lwcGVkSXRlbSkge1xuICAgICAgICBza2lwcGVkSXRlbSA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWl0ZW0uc2VsZWN0ZWQpIGNvbnRpbnVlO1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKTtcblxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuaGlnaGxpZ2h0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgKi9cbiAgdW5oaWdobGlnaHRBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMpIHtcbiAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcyA9IFtdO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBnaXZlbiBpdGVtLCB3aGlsZSB1bmhpZ2hsaWdodGluZyBhbGwgb3RoZXIgaXRlbXMuIERvZXMgbm90aGluZyB3aGVuIHRoZSBpdGVtIGlzIGRpc2FibGVkLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBiZSBoaWdobGlnaHRlZC5cbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IEFyZE9wdGlvblNpbXBsZSB8IG51bGwge1xuICAgIGlmICghaXRlbSB8fCBpdGVtLmRpc2FibGVkKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtKTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIEByZXR1cm5zIFRoZSBsYXN0IGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IEFyZE9wdGlvblNpbXBsZSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5wdXNoKC4uLml0ZW1zKTtcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xuICB9XG4gIC8qKlxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW1zIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXG4gICAqL1xuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQpIHJldHVybjtcblxuICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LmhpZ2hsaWdodGVkKTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgZmlyc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICovXG4gIGhpZ2hsaWdodEZpcnN0SXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG5cbiAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgbGFzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgKi9cbiAgaGlnaGxpZ2h0TGFzdEl0ZW0oKTogQXJkT3B0aW9uU2ltcGxlIHwgbnVsbCB7XG4gICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xuXG4gICAgbGV0IGl0ZW1Ub0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkubGFzdCgpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgbm9uLWRpc2FibGVkIGl0ZW1zLlxuICAgKi9cbiAgaGlnaGxpZ2h0QWxsSXRlbXMoKTogdm9pZCB7XG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xuXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLml0ZW1zVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBuZXh0IG5vbi1kaXNhYmxlZCBpdGVtIGRlZmluZWQgYnkgdGhlIG9mZnNldCBhbW91bnQuXG4gICAqXG4gICAqIElmIGBoYXNTaGlmdGAgaXMgc2V0IHRvIHRydWUsIGFsbCBvcmlnaW5hbGx5IGhpZ2hsaWdodGVkIGl0ZW1zIGFyZSBrZXB0LiBPdGhlcndpc2UsIGFsbCBvcmlnaW5hbCBpdGVtcyBhcmUgdW5zZWxlY3RlZC5cbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYW1vdW50IG9mIGl0ZW1zIHRvIG9mZnNldCB0aGUgaGlnaGxpZ2h0IGJ5LlxuICAgKiBAcGFyYW0gaGFzU2hpZnQgV2hldGhlciB0aGUgdXNlciBoYXMgdGhlIHNoaWZ0IGtleSBwcmVzc2VkLlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBoaWdobGlnaHRlZC5cbiAgICovXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNBbnlJdGVtSGlnaGxpZ2h0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcy5sYXN0KCk7XG4gICAgY29uc3QgaXRlbXNXaXRob3V0RGlzYWJsZWQgPSB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCAmJiAoIXRoaXMuaXNJdGVtTGltaXRSZWFjaGVkIHx8IGl0ZW0uc2VsZWN0ZWQpKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXhJbkl0ZW1zID0gaXRlbXNXaXRob3V0RGlzYWJsZWQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pbmRleCA9PSBjdXJyZW50SXRlbS5pbmRleCk7XG5cbiAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IGN1cnJlbnRJbmRleEluSXRlbXMgKyBvZmZzZXQ7XG4gICAgaWYgKG5leHRJdGVtSW5kZXggPj0gaXRlbXNXaXRob3V0RGlzYWJsZWQubGVuZ3RoKSB7XG4gICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKG5leHRJdGVtSW5kZXggPCAwKSB7XG4gICAgICBuZXh0SXRlbUluZGV4ICs9IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gaXRlbXNXaXRob3V0RGlzYWJsZWRbbmV4dEl0ZW1JbmRleF07XG5cbiAgICBpZiAoaGFzU2hpZnQgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIGlmIChpdGVtVG9IaWdobGlnaHQuaGlnaGxpZ2h0ZWQpIHtcbiAgICAgICAgdGhpcy51bmhpZ2hsaWdodEl0ZW0oY3VycmVudEl0ZW0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpbmRzIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgaGlnaGxpZ2h0YWJsZSBpZiBpdCBpcyAqKm5vdCoqIGRpc2FibGVkLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgaGlnaGxpZ2h0YWJsZSBpdGVtcy5cbiAgICovXG4gIHByaXZhdGUgX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk6IEFyZE9wdGlvblNpbXBsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xuICB9XG59XG4iXX0=
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWl0ZW0tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW1COUUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUFvQixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKakQsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFDL0Isc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQztRQUMxQyxtQkFBYyxHQUFzQixFQUFFLENBQUM7SUFFYSxDQUFDO0lBRTdEOztPQUVHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLEtBQXdCO1FBQzVDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJ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QkFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRDs7O09BR0c7SUFDSyxxQkFBcUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZE9wdGlvblNpbXBsZSwgQ29tcGFyZVdpdGhGbiB9IGZyb20gJy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XHJcbmltcG9ydCByZXNvbHZlUGF0aCBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcclxuaW1wb3J0IHsgYW55LCBldmFsdWF0ZSwgaXNEZWZpbmVkLCBpc09iamVjdCwgaXNQcmltaXRpdmUgfSBmcm9tICdzaW1wbGUtYm9vbCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzIHtcclxuICB2YWx1ZUZyb206IHN0cmluZztcclxuICBsYWJlbEZyb206IHN0cmluZztcclxuICBkaXNhYmxlZEZyb206IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZUl0ZW1TdG9yYWdlSG9zdCB7XHJcbiAgdmFsdWVGcm9tPzogc3RyaW5nO1xyXG4gIGxhYmVsRnJvbT86IHN0cmluZztcclxuICBkaXNhYmxlZEZyb20/OiBzdHJpbmc7XHJcbiAgaW52ZXJ0RGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IERFRkFVTFRTOiBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cztcclxuICBjb21wYXJlV2l0aD86IENvbXBhcmVXaXRoRm47XHJcbiAgbXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gIHJlcXVpcmVWYWx1ZTogYm9vbGVhbjtcclxuICBtYXhTZWxlY3RlZEl0ZW1zPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2ltcGxlSXRlbVN0b3JhZ2Uge1xyXG4gIHByaXZhdGUgX2l0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSA9IFtdO1xyXG4gIHByaXZhdGUgX2hpZ2hsaWdodGVkSXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdID0gW107XHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtczogQXJkT3B0aW9uU2ltcGxlW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkUGFyZW50Q29tcDogU2ltcGxlSXRlbVN0b3JhZ2VIb3N0KSB7fVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGFsbCBpdGVtcy5cclxuICAgKi9cclxuICBnZXQgaXRlbXMoKTogQXJkT3B0aW9uU2ltcGxlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogQXJkT3B0aW9uU2ltcGxlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgYWxsIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtcy5cclxuICAgKi9cclxuICBnZXQgaGlnaGxpZ2h0ZWRJdGVtcygpOiBBcmRPcHRpb25TaW1wbGVbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdmFsdWVzIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgZ2V0IHZhbHVlKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIHRoZWlyIHZhbHVlcy5cclxuICAgKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGNvbnZlcnQgdG8gdmFsdWUuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbSB2YWx1ZXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaXRlbXNUb1ZhbHVlKGl0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIGdldCBpc0FueUl0ZW1IaWdobGlnaHRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0YWJsZSBpdGVtcyBhbmQgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IGxpbWl0LiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cclxuICAgKlxyXG4gICAqICoqVExEUioqOiB0cnVlIGlmIGBtYXhTZWxlY3RlZEl0ZW1zYCBpcyBkZWZpbmVkIGFuZCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG1hdGNoZXMgdGhhdCB2YWx1ZS5cclxuICAgKi9cclxuICBnZXQgaXNJdGVtTGltaXRSZWFjaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSB8fCAhaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcyA8PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgaXRlbXMuIFRha2VzIGludG8gYWNjb3VudCB0aGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQgZm9yIGB2YWx1ZUZyb21gLCBgbGFiZWxGcm9tYCwgYW5kIGBkaXNhYmxlZEZyb21gLlxyXG4gICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBzZXQgYXMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLlxyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBpdGVtcyBpcyBvZiBwcmltaXRpdmUgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XHJcbiAgICBpZiAoYW55KGl0ZW1zLCBpc1ByaW1pdGl2ZSkpIHtcclxuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XHJcbiAgICAgIGFyZUl0ZW1zUHJpbWl0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaW5kZXgsIGFyZUl0ZW1zUHJpbWl0aXZlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhcmVJdGVtc1ByaW1pdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcHJpbWl0aXZlSXRlbXNNYXBGbjxUPihpdGVtOiBUKTogeyB2YWx1ZTogVCB9IHtcclxuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NldEl0ZW1zTWFwRm4ocmF3SXRlbURhdGE6IGFueSwgaW5kZXg6IG51bWJlciwgYXJlSXRlbXNQcmltaXRpdmU6IGJvb2xlYW4pOiBBcmRPcHRpb25TaW1wbGUge1xyXG4gICAgaWYgKGFyZUl0ZW1zUHJpbWl0aXZlKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXRlbURhdGE6IHJhd0l0ZW1EYXRhLFxyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIHZhbHVlOiByYXdJdGVtRGF0YS52YWx1ZSxcclxuICAgICAgICBsYWJlbDogcmF3SXRlbURhdGEudmFsdWU/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcocmF3SXRlbURhdGEudmFsdWUpLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy9nZXQgdmFsdWVcclxuICAgIGNvbnN0IHZhbHVlUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMudmFsdWVGcm9tO1xyXG4gICAgY29uc3QgdmFsdWUgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgdmFsdWVQYXRoKTtcclxuXHJcbiAgICAvL2dldCBsYWJlbFxyXG4gICAgY29uc3QgbGFiZWxQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5sYWJlbEZyb207XHJcbiAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBsYWJlbFBhdGgpID8/IHZhbHVlO1xyXG5cclxuICAgIC8vZ2V0IGRpc2FibGVkXHJcbiAgICBjb25zdCBkaXNhYmxlZFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmRpc2FibGVkRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmRpc2FibGVkRnJvbTtcclxuICAgIGxldCBkaXNhYmxlZCA9IGV2YWx1YXRlKHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBkaXNhYmxlZFBhdGgpKTtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydERpc2FibGVkKSB7XHJcbiAgICAgIGRpc2FibGVkID0gIWRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGl0ZW1EYXRhID0gYXJlSXRlbXNQcmltaXRpdmUgPyByYXdJdGVtRGF0YS52YWx1ZSA6IHJhd0l0ZW1EYXRhO1xyXG5cclxuICAgIC8vcmV0dXJuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpdGVtRGF0YSxcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIHZhbHVlLFxyXG4gICAgICBsYWJlbDogbGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpLFxyXG4gICAgICBkaXNhYmxlZCxcclxuICAgIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgaXRlbSBzdG9yYWdlLiBTZWxlY3RzIHRoZSBjb3JyZWN0IGl0ZW1zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2YWx1ZXMsIHdhcm5pbmcgdGhlIHVzZXIgaWYgdGhlIHZhbHVlIGlzIG5vdCBmb3VuZC5cclxuICAgKiBAcGFyYW0gbmdNb2RlbCBUaGUgdmFsdWUgb2YgdGhlIG5nTW9kZWwgdG8gc2V0LlxyXG4gICAqL1xyXG4gIHdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZvcmNlVW5zZWxlY3RBbGwoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX3ZhbGlkYXRlV3JpdGVWYWx1ZShuZ01vZGVsKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdEl0ZW1CeVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGl0ZW0gPSB0aGlzLmZpbmRJdGVtQnlWYWx1ZSh2YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS53YXJuKGBDb3VsZG4ndCBmaW5kIGFuIGl0ZW0gd2l0aCB2YWx1ZSAke3ZhbHVlPy50b1N0cmluZz8uKCkgfHwgU3RyaW5nKHZhbHVlKX0uYCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBvZiBuZ01vZGVsKSB7XHJcbiAgICAgIHNlbGVjdEl0ZW1CeVZhbHVlKG1vZGVsVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgdGhhdCBhbGwgdmFsdWVzIG9mIHRoZSB2YWx1ZSB0byBiZSB3cml0dGVuIGFyZSBhYmxlIHRvIGJlIGFjY3VyYXRlbHkgY29tcGFyZWQgYWdhaW5zdCB0aGUgc3RvcmFnZSBpdGVtcy5cclxuICAgKlxyXG4gICAqIEFuIGl0ZW0gZnJvbSB0aGUgbmdNb2RlbCBhcnJheSBpcyBjb25zaWRlcmVkIHZhbGlkIGlmIGl0IGlzIGEgcHJpbWl0aXZlIHZhbHVlLCBvciBpZiBhbGwgb2YgdGhlIGJlbG93IHBvaW50cyBhcmUgbWV0OlxyXG4gICAqIDEuIFRoZSBwYXJlbnQgY29tcG9uZW50IGRlZmluZXMgdGhlIGBjb21wYXJlV2l0aGAgcHJvcGVydHkuXHJcbiAgICogMi4gVGhlIG5nTW9kZWwgdmFsdWUgaXRlbSBpcyBhbiBvYmplY3QgKG9yIGFycmF5KS5cclxuICAgKiAzLiBUaGUgcGFyZW50IGNvbXBvbmVudCBoYXMgYSBkZWZpbmVkIGB2YWx1ZUZyb21gIHByb3BlcnR5LlxyXG4gICAqIEBwYXJhbSBuZ01vZGVsIFRoZSB2YWx1ZSBvZiBuZ01vZGVsIHRvIHZhbGlkYXRlLlxyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWxsIGl0ZW1zIGFyZSB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3ZhbGlkYXRlV3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG5nTW9kZWwuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgpICYmIGlzT2JqZWN0KGl0ZW0pICYmIHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBTZXR0aW5nIG9iamVjdCgke0pTT04uc3RyaW5naWZ5KGl0ZW0pfSkgYXMgeW91ciBtb2RlbCB3aXRoIFt2YWx1ZUZyb21dIGlzIG5vdCBhbGxvd2VkIHVubGVzcyBbY29tcGFyZVdpdGhdIGlzIHVzZWQuYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZpbmRJdGVtQnlWYWx1ZSh2YWx1ZVRvRmluZDogYW55KTogQXJkT3B0aW9uU2ltcGxlIHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb25TaW1wbGUpID0+IGJvb2xlYW47XHJcbiAgICBpZiAoaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgpKSB7XHJcbiAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gdGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCEodmFsdWVUb0ZpbmQsIGl0ZW0udmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmluZEJ5ID0gaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZVRvRmluZDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9pdGVtcy5maW5kKGl0ZW0gPT4gZmluZEJ5KGl0ZW0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc2VsZWN0cyBhbGwgc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgcGFyZW50IGNvbXBvbmVudCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgdmFsdWUgdG8gYmUgc2VsZWN0ZWQgYXQgYWxsIHRpbWVzLCB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbXMgaXMgbGVmdCBzZWxlY3RlZC5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyBjbGVhcmVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXHJcbiAgICovXHJcbiAgdW5zZWxlY3RBbGwoKTogYW55W10ge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3NlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJldCA9IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5yZXF1aXJlVmFsdWUgJiYgdGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlyc3QoKS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIHJldC5zcGxpY2UoMCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVuc2VsZWN0cyBhbGwgc2VsZWN0ZWQgaXRlbXMsIG5vIG1hdHRlciB3aGF0IHRoZSBjb21wb25lbnQgc2V0dGluZ3MgYXJlLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cclxuICAgKi9cclxuICBwcml2YXRlIF9mb3JjZVVuc2VsZWN0QWxsKCk6IGFueVtdIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXQgPSB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5fc2VsZWN0ZWRJdGVtcyk7XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgb25lIG9yIG11bHRpcGxlIGl0ZW1zLlxyXG4gICAqXHJcbiAgICogQWNjb3VudHMgZm9yIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gb2JqZWN0cyB0byBiZSBzZWxlY3RlZC5cclxuICAgKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmcgdGhyZWUgYXJyYXlzLCBhbGwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzOlxyXG4gICAqICogQW4gYXJyYXkgb2YgaXRlbXMgc2VsZWN0ZWQsXHJcbiAgICogKiBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLFxyXG4gICAqICogQW4gYXJyYXkgb2YgaXRlbXMgZmFpbGVkIHRvIHNlbGVjdCBkdWUgdG8gdGhlIGxpbWl0LlxyXG4gICAqL1xyXG4gIHNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogW2FueVtdLCBhbnlbXSwgYW55W11dIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCkge1xyXG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XHJcbiAgICB9XHJcbiAgICBsZXQgdW5zZWxlY3RlZCA9IFtdO1xyXG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSkge1xyXG4gICAgICB1bnNlbGVjdGVkID0gdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpdGVtc1NlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGl0ZW1zU2VsZWN0ZWRDb3VudCsrO1xyXG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCkgY29udGludWU7XHJcbiAgICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCkge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXMuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XHJcbiAgICByZXR1cm4gW3RoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1NlbGVjdGVkKSwgdW5zZWxlY3RlZCwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zRmFpbGVkVG9TZWxlY3QpXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gb2JqZWN0cyB0byBiZSB1bnNlbGVjdGVkLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIHVuc2VsZWN0ZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cclxuICAgKi9cclxuICB1bnNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogYW55W10ge1xyXG4gICAgbGV0IHNraXBwZWRJdGVtID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAucmVxdWlyZVZhbHVlICYmICFza2lwcGVkSXRlbSkge1xyXG4gICAgICAgIHNraXBwZWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlsdGVyKHYgPT4gdi5zZWxlY3RlZCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtcy5cclxuICAgKi9cclxuICB1bmhpZ2hsaWdodEFsbCgpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zKSB7XHJcbiAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSBbXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyB0aGUgZ2l2ZW4gaXRlbSwgd2hpbGUgdW5oaWdobGlnaHRpbmcgYWxsIG90aGVyIGl0ZW1zLiBEb2VzIG5vdGhpbmcgd2hlbiB0aGUgaXRlbSBpcyBkaXNhYmxlZC5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBiZSBoaWdobGlnaHRlZC5cclxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cclxuICAgKi9cclxuICBoaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IEFyZE9wdGlvblNpbXBsZSB8IG51bGwge1xyXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXHJcbiAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtcyB0byBiZSBoaWdobGlnaHRlZC5cclxuICAgKiBAcmV0dXJucyBUaGUgbGFzdCBoaWdobGlnaHRlZCBpdGVtLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogQXJkT3B0aW9uU2ltcGxlIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMucHVzaCguLi5pdGVtcyk7XHJcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxyXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbXMgdG8gYmUgdW5oaWdobGlnaHRlZC5cclxuICAgKi9cclxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmhpZ2hsaWdodGVkKSByZXR1cm47XHJcblxyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LmhpZ2hsaWdodGVkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyB0aGUgZmlyc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxyXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodEZpcnN0SXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcclxuICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcclxuXHJcbiAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIHRoZSBsYXN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cclxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cclxuICAgKi9cclxuICBoaWdobGlnaHRMYXN0SXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcclxuICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcclxuXHJcbiAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKS5sYXN0KCk7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgYWxsIG5vbi1kaXNhYmxlZCBpdGVtcy5cclxuICAgKi9cclxuICBoaWdobGlnaHRBbGxJdGVtcygpOiB2b2lkIHtcclxuICAgIGxldCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTtcclxuXHJcbiAgICB0aGlzLmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXNUb0hpZ2hsaWdodCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgdGhlIG5leHQgbm9uLWRpc2FibGVkIGl0ZW0gZGVmaW5lZCBieSB0aGUgb2Zmc2V0IGFtb3VudC5cclxuICAgKlxyXG4gICAqIElmIGBoYXNTaGlmdGAgaXMgc2V0IHRvIHRydWUsIGFsbCBvcmlnaW5hbGx5IGhpZ2hsaWdodGVkIGl0ZW1zIGFyZSBrZXB0LiBPdGhlcndpc2UsIGFsbCBvcmlnaW5hbCBpdGVtcyBhcmUgdW5zZWxlY3RlZC5cclxuICAgKiBAcGFyYW0gb2Zmc2V0IFRoZSBhbW91bnQgb2YgaXRlbXMgdG8gb2Zmc2V0IHRoZSBoaWdobGlnaHQgYnkuXHJcbiAgICogQHBhcmFtIGhhc1NoaWZ0IFdoZXRoZXIgdGhlIHVzZXIgaGFzIHRoZSBzaGlmdCBrZXkgcHJlc3NlZC5cclxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBoaWdobGlnaHRlZC5cclxuICAgKi9cclxuICBoaWdobGlnaHROZXh0SXRlbShvZmZzZXQ6IG51bWJlciwgaGFzU2hpZnQ/OiBib29sZWFuKTogQXJkT3B0aW9uU2ltcGxlIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBbnlJdGVtSGlnaGxpZ2h0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcy5sYXN0KCk7XHJcbiAgICBjb25zdCBpdGVtc1dpdGhvdXREaXNhYmxlZCA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkICYmICghdGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQgfHwgaXRlbS5zZWxlY3RlZCkpO1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4SW5JdGVtcyA9IGl0ZW1zV2l0aG91dERpc2FibGVkLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaW5kZXggPT0gY3VycmVudEl0ZW0uaW5kZXgpO1xyXG5cclxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5JdGVtcyArIG9mZnNldDtcclxuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4ICs9IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IGl0ZW1zV2l0aG91dERpc2FibGVkW25leHRJdGVtSW5kZXhdO1xyXG5cclxuICAgIGlmIChoYXNTaGlmdCAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSkge1xyXG4gICAgICBpZiAoaXRlbVRvSGlnaGxpZ2h0LmhpZ2hsaWdodGVkKSB7XHJcbiAgICAgICAgdGhpcy51bmhpZ2hsaWdodEl0ZW0oY3VycmVudEl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmluZHMgYWxsIGhpZ2hsaWdodGFibGUgaXRlbXMuIEFuIGl0ZW0gaXMgY29uc2lkZXJlZCBoaWdobGlnaHRhYmxlIGlmIGl0IGlzICoqbm90KiogZGlzYWJsZWQuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIGhpZ2hsaWdodGFibGUgaXRlbXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTogQXJkT3B0aW9uU2ltcGxlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKTtcclxuICB9XHJcbn1cclxuIl19
|