@ardium-ui/ui 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_internal/boolean-component.mjs +1 -1
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +1 -1
- package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +1 -1
- package/esm2022/lib/_internal/disablable-component.mjs +1 -1
- package/esm2022/lib/_internal/focusable-component.mjs +1 -1
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +1 -1
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +1 -1
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +1 -1
- package/esm2022/lib/_internal/models/pagination.model.mjs +1 -1
- package/esm2022/lib/_internal/ngmodel-component.mjs +1 -1
- package/esm2022/lib/_internal/queue.mjs +1 -1
- package/esm2022/lib/_internal/selectable-list-component.mjs +1 -1
- package/esm2022/lib/badge/badge.directive.mjs +1 -1
- package/esm2022/lib/badge/badge.module.mjs +1 -1
- package/esm2022/lib/badge/badge.types.mjs +1 -1
- package/esm2022/lib/buttons/_button-base.mjs +1 -1
- package/esm2022/lib/buttons/button/button.component.mjs +1 -1
- package/esm2022/lib/buttons/button/button.module.mjs +1 -1
- package/esm2022/lib/buttons/fab/fab.component.mjs +1 -1
- package/esm2022/lib/buttons/fab/fab.module.mjs +1 -1
- package/esm2022/lib/buttons/general-button.types.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +1 -1
- package/esm2022/lib/calendar/calendar.component.mjs +2 -5
- package/esm2022/lib/calendar/calendar.directives.mjs +1 -1
- package/esm2022/lib/calendar/calendar.helpers.mjs +1 -1
- package/esm2022/lib/calendar/calendar.module.mjs +1 -1
- package/esm2022/lib/calendar/calendar.types.mjs +1 -1
- package/esm2022/lib/card/card.children.mjs +1 -1
- package/esm2022/lib/card/card.component.mjs +1 -1
- package/esm2022/lib/card/card.module.mjs +1 -1
- package/esm2022/lib/card/card.types.mjs +1 -1
- package/esm2022/lib/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/lib/checkbox/checkbox.module.mjs +1 -1
- package/esm2022/lib/checkbox/checkbox.types.mjs +1 -1
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +1 -1
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +1 -1
- package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +1 -1
- package/esm2022/lib/chip/chip.component.mjs +1 -1
- package/esm2022/lib/chip/chip.module.mjs +1 -1
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +1 -1
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +1 -1
- package/esm2022/lib/color/color-display/color-display.component.mjs +1 -1
- package/esm2022/lib/color/color-display/color-display.module.mjs +1 -1
- package/esm2022/lib/color/color-display/color-display.types.mjs +1 -1
- package/esm2022/lib/color/color-picker/color-picker.component.mjs +1 -1
- package/esm2022/lib/color/color-picker/color-picker.directives.mjs +1 -1
- package/esm2022/lib/color/color-picker/color-picker.module.mjs +1 -1
- package/esm2022/lib/color/color-picker/color-picker.types.mjs +1 -1
- package/esm2022/lib/dialog/dialog.component.mjs +1 -1
- package/esm2022/lib/dialog/dialog.directives.mjs +1 -1
- package/esm2022/lib/dialog/dialog.module.mjs +1 -1
- package/esm2022/lib/dialog/dialog.types.mjs +1 -1
- package/esm2022/lib/divider/divider.component.mjs +1 -1
- package/esm2022/lib/divider/divider.module.mjs +1 -1
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +1 -1
- package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +1 -1
- package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input-base.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input-types.mjs +1 -1
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +1 -1
- package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +1 -1
- package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +1 -1
- package/esm2022/lib/icon/icon.component.mjs +1 -1
- package/esm2022/lib/icon/icon.module.mjs +1 -1
- package/esm2022/lib/icon/icon.pipe.mjs +1 -1
- package/esm2022/lib/inputs/color-input/color-input.component.mjs +1 -1
- package/esm2022/lib/inputs/color-input/color-input.directives.mjs +1 -1
- package/esm2022/lib/inputs/color-input/color-input.module.mjs +1 -1
- package/esm2022/lib/inputs/color-input/color-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +2 -3
- package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +1 -1
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +1 -1
- package/esm2022/lib/inputs/hex-input.model.mjs +1 -1
- package/esm2022/lib/inputs/input/input.component.mjs +1 -1
- package/esm2022/lib/inputs/input/input.directives.mjs +1 -1
- package/esm2022/lib/inputs/input/input.module.mjs +1 -1
- package/esm2022/lib/inputs/input-transformers.mjs +1 -1
- package/esm2022/lib/inputs/input-types.mjs +1 -1
- package/esm2022/lib/inputs/input-utils.mjs +1 -1
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +2 -3
- package/esm2022/lib/inputs/number-input/number-input.directives.mjs +1 -1
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +1 -1
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +2 -3
- package/esm2022/lib/inputs/password-input/password-input.directives.mjs +1 -1
- package/esm2022/lib/inputs/password-input/password-input.module.mjs +1 -1
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +2 -3
- package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +1 -1
- package/esm2022/lib/kbd/kbd.component.mjs +1 -1
- package/esm2022/lib/kbd/kbd.module.mjs +1 -1
- package/esm2022/lib/kbd/kbd.pipe.mjs +1 -1
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +1 -1
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +1 -1
- package/esm2022/lib/modal/modal.component.mjs +1 -1
- package/esm2022/lib/modal/modal.module.mjs +1 -1
- package/esm2022/lib/option/option.component.mjs +1 -1
- package/esm2022/lib/option/option.module.mjs +1 -1
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +1 -1
- package/esm2022/lib/progress-bar/progress-bar.directive.mjs +1 -1
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +1 -1
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +1 -1
- package/esm2022/lib/progress-circle/progress-circle.directive.mjs +1 -1
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +1 -1
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
- package/esm2022/lib/radio/radio/radio.component.mjs +1 -1
- package/esm2022/lib/radio/radio-group.component.mjs +1 -1
- package/esm2022/lib/radio/radio.module.mjs +1 -1
- package/esm2022/lib/search-functions.mjs +1 -1
- package/esm2022/lib/segment/segment.component.mjs +1 -1
- package/esm2022/lib/segment/segment.directives.mjs +1 -1
- package/esm2022/lib/segment/segment.module.mjs +1 -1
- package/esm2022/lib/segment/segment.types.mjs +1 -1
- package/esm2022/lib/select/select.component.mjs +2 -4
- package/esm2022/lib/select/select.directive.mjs +1 -1
- package/esm2022/lib/select/select.module.mjs +1 -1
- package/esm2022/lib/select/select.types.mjs +1 -1
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +1 -1
- package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +1 -1
- package/esm2022/lib/slider/abstract-slider.mjs +1 -1
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +1 -1
- package/esm2022/lib/slider/range-slider/range-slider.module.mjs +1 -1
- package/esm2022/lib/slider/slider.component.mjs +1 -1
- package/esm2022/lib/slider/slider.directive.mjs +1 -1
- package/esm2022/lib/slider/slider.module.mjs +1 -1
- package/esm2022/lib/slider/slider.types.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.component.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.service.mjs +1 -1
- 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 +1 -1
- package/esm2022/lib/spinner/spinner.module.mjs +1 -1
- package/esm2022/lib/star/star-button/star-button.component.mjs +1 -1
- package/esm2022/lib/star/star-button/star-button.module.mjs +1 -1
- package/esm2022/lib/star/star-display/star-display.component.mjs +1 -1
- package/esm2022/lib/star/star-display/star-display.module.mjs +1 -1
- package/esm2022/lib/star/star-input/star-input.component.mjs +1 -1
- package/esm2022/lib/star/star-input/star-input.module.mjs +1 -1
- package/esm2022/lib/star/star.component.mjs +1 -1
- package/esm2022/lib/star/star.module.mjs +1 -1
- package/esm2022/lib/star/star.types.mjs +1 -1
- package/esm2022/lib/statebox/statebox.component.mjs +1 -1
- package/esm2022/lib/statebox/statebox.module.mjs +1 -1
- 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 +2 -2
- package/esm2022/lib/table/table.directives.mjs +1 -1
- package/esm2022/lib/table/table.module.mjs +1 -1
- 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 +1 -1
- package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +1 -1
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +1 -1
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +1 -1
- 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/fesm2022/ardium-ui-ui.mjs +7 -16
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/color/color-picker/color-picker.component.d.ts +12 -12
- package/lib/inputs/color-input/color-input.component.d.ts +24 -24
- package/package.json +6 -2
- package/prebuilt-themes/default/badge.css.map +1 -1
- package/prebuilt-themes/default/buttons/button.css.map +1 -1
- package/prebuilt-themes/default/buttons/fab.css.map +1 -1
- package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
- package/prebuilt-themes/default/calendar.css.map +1 -1
- package/prebuilt-themes/default/card.css.map +1 -1
- package/prebuilt-themes/default/checkbox-list.css.map +1 -1
- package/prebuilt-themes/default/checkbox.css.map +1 -1
- package/prebuilt-themes/default/chips.css.map +1 -1
- package/prebuilt-themes/default/color-display.css.map +1 -1
- package/prebuilt-themes/default/color-picker.css.map +1 -1
- package/prebuilt-themes/default/core.css.map +1 -1
- package/prebuilt-themes/default/dialog.css.map +1 -1
- package/prebuilt-themes/default/divider.css.map +1 -1
- package/prebuilt-themes/default/dropdown-panel.css.map +1 -1
- package/prebuilt-themes/default/file-drop-area.css.map +1 -1
- package/prebuilt-themes/default/form-field-frame.css.map +1 -1
- package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/digit-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/input.css.map +1 -1
- package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/password-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
- package/prebuilt-themes/default/inputs/simple-input.css.map +1 -1
- package/prebuilt-themes/default/kbd-shortcut.css.map +1 -1
- package/prebuilt-themes/default/kbd.css.map +1 -1
- package/prebuilt-themes/default/modal.css.map +1 -1
- package/prebuilt-themes/default/progress-bar.css.map +1 -1
- package/prebuilt-themes/default/progress-circle.css.map +1 -1
- package/prebuilt-themes/default/radio.css.map +1 -1
- package/prebuilt-themes/default/segment.css.map +1 -1
- package/prebuilt-themes/default/select.css.map +1 -1
- package/prebuilt-themes/default/slide-toggle.css.map +1 -1
- package/prebuilt-themes/default/slider.css.map +1 -1
- package/prebuilt-themes/default/snackbar.css.map +1 -1
- package/prebuilt-themes/default/spinner.css.map +1 -1
- package/prebuilt-themes/default/stars.css.map +1 -1
- package/prebuilt-themes/default/statebox.css.map +1 -1
- package/prebuilt-themes/default/table-pagination.css.map +1 -1
- package/prebuilt-themes/default/table.css.map +1 -1
- package/themes/default/_clear-button.scss +59 -59
- package/themes/default/_coloring.scss +133 -133
- package/themes/default/_dropdown-arrow.scss +8 -8
- package/themes/default/_mixins.scss +50 -50
- package/themes/default/badge.scss +79 -79
- package/themes/default/buttons/_button-mixins.scss +112 -112
- package/themes/default/buttons/button.scss +47 -47
- package/themes/default/buttons/fab.scss +53 -53
- package/themes/default/buttons/icon-button.scss +40 -40
- package/themes/default/calendar.scss +154 -154
- package/themes/default/card.scss +90 -90
- package/themes/default/checkbox-list.scss +67 -67
- package/themes/default/checkbox.scss +87 -87
- package/themes/default/chips.scss +167 -167
- package/themes/default/color-display.scss +29 -29
- package/themes/default/color-picker.scss +97 -97
- package/themes/default/core.scss +75 -75
- package/themes/default/dialog.scss +8 -8
- package/themes/default/divider.scss +7 -7
- package/themes/default/dropdown-panel.scss +33 -33
- package/themes/default/file-drop-area.scss +139 -139
- package/themes/default/form-field-frame.scss +59 -59
- package/themes/default/inputs/_shared.scss +34 -34
- package/themes/default/inputs/color-input.scss +30 -30
- package/themes/default/inputs/digit-input.scss +37 -37
- package/themes/default/inputs/file-input.scss +62 -62
- package/themes/default/inputs/hex-input.scss +16 -16
- package/themes/default/inputs/input.scss +34 -34
- package/themes/default/inputs/number-input.scss +95 -95
- package/themes/default/inputs/password-input.scss +31 -31
- package/themes/default/inputs/search-bar.scss +9 -9
- package/themes/default/inputs/simple-input.scss +9 -9
- package/themes/default/kbd-shortcut.scss +8 -8
- package/themes/default/kbd.scss +15 -15
- package/themes/default/modal.scss +75 -75
- package/themes/default/progress-bar.scss +140 -140
- package/themes/default/progress-circle.scss +43 -43
- package/themes/default/radio.scss +87 -87
- package/themes/default/segment.scss +283 -283
- package/themes/default/select.scss +226 -226
- package/themes/default/slide-toggle.scss +121 -121
- package/themes/default/slider.scss +206 -206
- package/themes/default/snackbar.scss +40 -40
- package/themes/default/spinner.scss +12 -12
- package/themes/default/stars.scss +93 -93
- package/themes/default/statebox.scss +91 -91
- package/themes/default/table-pagination.scss +44 -44
- package/themes/default/table.scss +345 -345
|
@@ -557,4 +557,4 @@ export class TableItemStorage {
|
|
|
557
557
|
this._sortedItems = [...this.items].sort((a, b) => sortFn(a.data[sortColumnIndex], b.data[sortColumnIndex]));
|
|
558
558
|
}
|
|
559
559
|
}
|
|
560
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFELE9BQU8sRUFBRSxRQUFRLEVBQW1CLHVCQUF1QixFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBaUM3RSxNQUFNLE9BQU8sVUFBVTtJQUtuQixJQUFJLEtBQUs7UUFDTCxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1IsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNPLFNBQVMsQ0FBQyxLQUFrQztRQUNoRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtZQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxJQUFzQyxFQUFFLFVBQWtCLENBQUMsRUFBRSxVQUFr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QkFDTixJQUFJLENBQUMsR0FBRyxDQUFDO29CQUFFLE9BQU8sU0FBUyxDQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDO29CQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO2dCQUNqQyxPQUFPLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZXNvbHZlUGF0aCBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcbmltcG9ydCB7IGV2YWx1YXRlLCBpc0RlZmluZWQsIGlzTnVsbCB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IENvbXBhcmVXaXRoRm4gfSBmcm9tICcuLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xuaW1wb3J0IHsgU29ydFR5cGUsIFRhYmxlRGF0YUNvbHVtbiwgVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3ksIFRhYmxlU3ViaGVhZGVyIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBhcmVBbGxEYXRhQ29sdW1ucywgaXNUYWJsZVN1YmhlYWRlciwgbWVyZ2UyZEFycmF5cyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFyZFRhYmxlUm93IHtcbiAgICByZWFkb25seSBpdGVtRGF0YTogYW55O1xuICAgIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgaXNFbXB0eT86IGJvb2xlYW47XG4gICAgZGF0YTogYW55W107XG4gICAgZGF0YUNvbHVtbnM6IFRhYmxlRGF0YUNvbHVtbltdO1xuICAgIGNsYXNzPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBib2xkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgaGlnaGxpZ2h0ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzIHtcbiAgICByb3dEaXNhYmxlZEZyb206IHN0cmluZztcbiAgICByb3dCb2xkRnJvbTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUl0ZW1TdG9yYWdlSG9zdCB7XG4gICAgcm93RGlzYWJsZWRGcm9tPzogc3RyaW5nO1xuICAgIHJvd0JvbGRGcm9tPzogc3RyaW5nO1xuICAgIGludmVydFJvd0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnZlcnRSb3dCb2xkPzogYm9vbGVhbjtcbiAgICBkYXRhPzogYW55W107XG4gICAgcmVhZG9ubHkgREVGQVVMVFM6IFRhYmxlSXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHM7XG4gICAgbWF4U2VsZWN0ZWRJdGVtcz86IG51bWJlcjtcbiAgICB0cmVhdERhdGFTb3VyY2VBc1N0cmluZz86IGJvb2xlYW47XG5cbiAgICBwYWdpbmF0ZWQ6IGJvb2xlYW47XG4gICAgcGFnaW5hdGlvblN0cmF0ZWd5OiBUYWJsZVBhZ2luYXRpb25TdHJhdGVneTtcbiAgICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgICBwYWdlOiBudW1iZXI7XG59XG5leHBvcnQgY2xhc3MgSGVhZGVyQ2VsbCB7XG4gICAgY29sc3BhbiE6IG51bWJlcjtcbiAgICByb3dzcGFuITogbnVtYmVyO1xuICAgIGNlbGwhOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcjtcblxuICAgIGdldCB3aWR0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzVGFibGVTdWJoZWFkZXIodGhpcy5jZWxsKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRXaWR0aCh0aGlzLmNlbGwud2lkdGgpO1xuICAgIH1cbiAgICBnZXQgbWluV2lkdGgoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKHRoaXMuY2VsbCkpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0V2lkdGgodGhpcy5jZWxsLm1pbldpZHRoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZ2V0V2lkdGgod2lkdGg6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXdpZHRoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKHR5cGVvZiB3aWR0aCA9PSAnbnVtYmVyJykgcmV0dXJuIGAke3dpZHRofXB4YDtcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGNlbGw6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyLCBjb2xzcGFuOiBudW1iZXIgPSAxLCByb3dzcGFuOiBudW1iZXIgPSAxKSB7XG4gICAgICAgIHRoaXMuY2VsbCA9IGNlbGw7XG4gICAgICAgIHRoaXMuY29sc3BhbiA9IGNvbHNwYW47XG4gICAgICAgIHRoaXMucm93c3BhbiA9IHJvd3NwYW47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVJdGVtU3RvcmFnZSB7XG4gICAgcHJpdmF0ZSBfaXRlbXM6IEFyZFRhYmxlUm93W10gPSBbXTtcbiAgICBwcml2YXRlIF9zb3J0ZWRJdGVtczogQXJkVGFibGVSb3dbXSA9IFtdO1xuICAgIHByaXZhdGUgX2hpZ2hsaWdodGVkSXRlbXM6IEFyZFRhYmxlUm93W10gPSBbXTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBBcmRUYWJsZVJvd1tdID0gW107XG5cbiAgICBwcml2YXRlIF9kYXRhQ29sdW1uczogVGFibGVEYXRhQ29sdW1uW10gPSBbXTtcbiAgICBwcml2YXRlIF9oZWFkZXJDZWxsczogSGVhZGVyQ2VsbFtdW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FyZFBhcmVudENvbXA6IFRhYmxlSXRlbVN0b3JhZ2VIb3N0KSB7fVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgaXRlbXMuXG4gICAgICovXG4gICAgZ2V0IGl0ZW1zKCk6IEFyZFRhYmxlUm93W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuICAgIGdldCBzb3J0ZWRJdGVtcygpOiBBcmRUYWJsZVJvd1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZEl0ZW1zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBhZ2luYXRpb24gc3RhdGUuXG4gICAgICovXG4gICAgZ2V0IHBhZ2luYXRlZEl0ZW1zKCk6IEFyZFRhYmxlUm93W10ge1xuICAgICAgICAvL3ByZXR0aWVyLWlnbm9yZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5fYXJkUGFyZW50Q29tcC5wYWdpbmF0ZWRcbiAgICAgICAgICAgIHx8IHRoaXMuX2FyZFBhcmVudENvbXAucGFnaW5hdGlvblN0cmF0ZWd5ID09IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3BcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0ZWRJdGVtcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5fYXJkUGFyZW50Q29tcC5wYWdlO1xuICAgICAgICBjb25zdCBJUFAgPSB0aGlzLl9hcmRQYXJlbnRDb21wLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgY29uc3QgaXRlbXNTdGFydCA9IChwYWdlIC0gMSkgKiBJUFA7XG4gICAgICAgIGNvbnN0IGl0ZW1zRW5kID0gcGFnZSAqIElQUDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydGVkSXRlbXMuc2xpY2UoaXRlbXNTdGFydCwgaXRlbXNFbmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXG4gICAgICovXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogQXJkVGFibGVSb3dbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXG4gICAgICovXG4gICAgZ2V0IGhpZ2hsaWdodGVkSXRlbXMoKTogQXJkVGFibGVSb3dbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcy5cbiAgICAgKi9cbiAgICBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byB0aGVpciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBjb252ZXJ0IHRvIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW0gdmFsdWVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2l0ZW1zVG9WYWx1ZShpdGVtczogQXJkVGFibGVSb3dbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uaXRlbURhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIGdldCBpc0FueUl0ZW1IaWdobGlnaHRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFueSBpdGVtIGluIHRoZSB0YWJsZSBpcyBzZWxlY3RlZC5cbiAgICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiBhbnkgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBnZXQgaXNBbnlJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhbGwgaXRlbXMgaW4gdGhlIHRhYmxlIGFyZSBzZWxlY3RlZC5cbiAgICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiBhbGwgaXRlbXMgYXJlIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIGdldCBhcmVBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMubGVuZ3RoID09IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKS5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0YWJsZSBpdGVtcyBhbmQgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IGxpbWl0LiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAgICAgKlxuICAgICAqICoqVExEUioqOiB0cnVlIGlmIGBtYXhTZWxlY3RlZEl0ZW1zYCBpcyBkZWZpbmVkIGFuZCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG1hdGNoZXMgdGhhdCB2YWx1ZS5cbiAgICAgKi9cbiAgICBnZXQgaXNJdGVtTGltaXRSZWFjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcyA8PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhlYWRlciBjZWxscyBvZiB0aGUgdGFibGUuXG4gICAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMuXG4gICAgICovXG4gICAgZ2V0IGhlYWRlckNlbGxzKCk6IEhlYWRlckNlbGxbXVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlckNlbGxzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHRhYmxlIGhhcyBkZWZpbmVkIGNvbHVtbnMuXG4gICAgICogQHJldHVybnMgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHRhYmxlIGhhcyBkZWZpbmVkIGNvbHVtbnMuXG4gICAgICovXG4gICAgZ2V0IGhhc0RlZmluZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUNvbHVtbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvLyEgc2V0dGluZyBjb2x1bW5zXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY29sdW1ucyBvZiB0aGUgdGFibGUuXG4gICAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXG4gICAgICovXG4gICAgc2V0Q29sdW1ucyhjb2xzOiAoVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWF4TmVzdGluZ0xldmVsID0gdGhpcy5fZ2V0SGVhZGVyTWF4TmVzdGluZyhjb2xzKTtcbiAgICAgICAgY29uc3QgaGVhZGVyQ2VsbHMgPSB0aGlzLl9tYXBDb2x1bW5zVG9BcnJheShjb2xzLCBtYXhOZXN0aW5nTGV2ZWwsIDApO1xuICAgICAgICB0aGlzLl9oZWFkZXJDZWxscyA9IHRoaXMuX2ZpbHRlckhlYWRlckNlbGxzKGhlYWRlckNlbGxzKTtcbiAgICAgICAgdGhpcy5fZGF0YUNvbHVtbnMgPSB0aGlzLl9leHRyYWN0RGF0YVNvdXJjZXMoY29scyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgb3V0IG51bGwgdmFsdWVzIGZyb20gdGhlIGhlYWRlciBjZWxscyBhcnJheS5cbiAgICAgKiBAcGFyYW0gY2VsbHMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMgb3IgbnVsbCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMgd2l0aG91dCBudWxsIHZhbHVlcyBhbmQgZW1wdHkgYXJyYXlzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpbHRlckhlYWRlckNlbGxzKGNlbGxzOiAoSGVhZGVyQ2VsbCB8IG51bGwpW11bXSk6IEhlYWRlckNlbGxbXVtdIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY2VsbHNbaV0gPSBjZWxsc1tpXS5maWx0ZXIodiA9PiB2ICE9IG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjZWxscy5maWx0ZXIocm93ID0+IHJvdy5sZW5ndGgpIGFzIEhlYWRlckNlbGxbXVtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgZGF0YSBzb3VyY2VzIGZyb20gdGhlIGNvbHVtbnMgYXJyYXkuXG4gICAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXG4gICAgICogQHJldHVybnMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2V4dHJhY3REYXRhU291cmNlcyhjb2xzOiAoVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpW10pOiBUYWJsZURhdGFDb2x1bW5bXSB7XG4gICAgICAgIGxldCBkYXRhQ29sdW1uczogVGFibGVEYXRhQ29sdW1uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICAgICAgICBpZiAoIWlzVGFibGVTdWJoZWFkZXIoY29sKSkge1xuICAgICAgICAgICAgICAgIGRhdGFDb2x1bW5zLnB1c2goY29sKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGFDb2x1bW5zLnB1c2goLi4udGhpcy5fZXh0cmFjdERhdGFTb3VyY2VzKGNvbC5jaGlsZHJlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFDb2x1bW5zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXhpbXVtIG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXG4gICAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXG4gICAgICogQHJldHVybnMgdGhlIG1heGltdW0gbmVzdGluZyBsZXZlbCBhcyBhIG51bWJlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRIZWFkZXJNYXhOZXN0aW5nKGNvbHM6IChUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcilbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChhcmVBbGxEYXRhQ29sdW1ucyhjb2xzKSkgcmV0dXJuIDE7XG4gICAgICAgIGxldCBtYXggPSAxO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzLmZpbHRlcih2ID0+IGlzVGFibGVTdWJoZWFkZXIodikpIGFzIFRhYmxlU3ViaGVhZGVyW10pIHtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IDEgKyB0aGlzLl9nZXRIZWFkZXJNYXhOZXN0aW5nKGNvbC5jaGlsZHJlbik7XG4gICAgICAgICAgICBpZiAoaGVpZ2h0ID4gbWF4KSBtYXggPSBoZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTWFwcyB0aGUgY29sdW1ucyB0cmVlIHRvIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzIG9yIG51bGwgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBjb2xzIGFuIGFycmF5IG9mIHRhYmxlIGRhdGEgY29sdW1ucyBvciB0YWJsZSBzdWJoZWFkZXJzLlxuICAgICAqIEBwYXJhbSBtYXhOZXN0aW5nIHRoZSBtYXhpbXVtIG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXG4gICAgICogQHBhcmFtIGN1cnJlbnROZXN0aW5nIHRoZSBjdXJyZW50IG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXG4gICAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMgb3IgbnVsbCB2YWx1ZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbWFwQ29sdW1uc1RvQXJyYXkoY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdLCBtYXhOZXN0aW5nOiBudW1iZXIsIGN1cnJlbnROZXN0aW5nOiBudW1iZXIpOiAoSGVhZGVyQ2VsbCB8IG51bGwpW11bXSB7XG4gICAgICAgIGlmIChhcmVBbGxEYXRhQ29sdW1ucyhjb2xzKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtjb2xzLm1hcChjb2wgPT4gbmV3IEhlYWRlckNlbGwoY29sLCAxLCBtYXhOZXN0aW5nIC0gY3VycmVudE5lc3RpbmcpKV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVyQ2VsbHM6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdID0gW1tdXTtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgICAgICAgaWYgKCFpc1RhYmxlU3ViaGVhZGVyKGNvbCkpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJDZWxsc1swXS5wdXNoKG5ldyBIZWFkZXJDZWxsKGNvbCwgMSwgbWF4TmVzdGluZyAtIGN1cnJlbnROZXN0aW5nKSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaGlsZENlbGxzOiAoSGVhZGVyQ2VsbCB8IG51bGwpW11bXSA9IFtbXSwgLi4udGhpcy5fbWFwQ29sdW1uc1RvQXJyYXkoY29sLmNoaWxkcmVuLCBtYXhOZXN0aW5nLCBjdXJyZW50TmVzdGluZyArIDEpXTtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNoaWxkQ2VsbHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gY2hpbGRDZWxsc1sxXS5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyQ2VsbHMucHVzaChbbnVsbF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGVhZGVyQ2VsbHNbMF0ucHVzaChuZXcgSGVhZGVyQ2VsbChjb2wsIHdpZHRoLCAxKSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyQ2VsbHNbMF0ucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1lcmdlMmRBcnJheXMoaGVhZGVyQ2VsbHMsIGNoaWxkQ2VsbHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoZWFkZXJDZWxscztcbiAgICB9XG5cbiAgICAvLyEgc2V0dGluZyBpdGVtc1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLiBUYWtlcyBpbnRvIGFjY291bnQgdGhlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciBgcm93RGlzYWJsZWRGcm9tYCwgYHJvd0JvbGRGcm9tYCwgYW5kIGByb3dIaWdobGlnaHRlZEZyb21gLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBzZXQgYXMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLlxuICAgICAqL1xuICAgIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzRGVmaW5lZENvbHVtbnMpIHJldHVybjtcblxuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIGluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zID0gdGhpcy5faXRlbXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcHMgcmF3IGl0ZW0gZGF0YSB0byBhbiB7QGxpbmsgQXJkVGFibGVSb3d9IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7YW55fSByYXdJdGVtRGF0YSAtIFRoZSByYXcgZGF0YSBvZiB0aGUgaXRlbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0uXG4gICAgICogQHJldHVybnMge0FyZFRhYmxlUm93fSBSZXR1cm5zIGFuIEFyZFRhYmxlUm93IG9iamVjdCB3aXRoIG1hcHBlZCBwcm9wZXJ0aWVzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyKTogQXJkVGFibGVSb3cge1xuICAgICAgICAvL2dldCBkYXRhXG4gICAgICAgIGNvbnN0IFtkYXRhLCBkYXRhQ29sdW1uc10gPSB0aGlzLl9nZXRSb3dEYXRhKHJhd0l0ZW1EYXRhLCBpbmRleCk7XG5cbiAgICAgICAgLy9nZXQgYm9sZFxuICAgICAgICBjb25zdCByb3dCb2xkRnJvbVBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLnJvd0JvbGRGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMucm93Qm9sZEZyb207XG4gICAgICAgIGxldCBib2xkID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHJvd0JvbGRGcm9tUGF0aCk7XG4gICAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydFJvd0JvbGQpIHtcbiAgICAgICAgICAgIGJvbGQgPSAhYm9sZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vZ2V0IGRpc2FibGVkXG4gICAgICAgIGNvbnN0IGRpc2FibGVkUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAucm93RGlzYWJsZWRGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMucm93RGlzYWJsZWRGcm9tO1xuICAgICAgICBsZXQgZGlzYWJsZWQgPSBldmFsdWF0ZShyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZGlzYWJsZWRQYXRoKSk7XG4gICAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydFJvd0Rpc2FibGVkKSB7XG4gICAgICAgICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vcmV0dXJuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtRGF0YTogcmF3SXRlbURhdGEsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBkYXRhQ29sdW1ucyxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgYm9sZCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGRhdGEgZm9yIGEgcm93IGJhc2VkIG9uIGRhdGEgY29sdW1ucyBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IHJhd0l0ZW1EYXRhIC0gVGhlIHJhdyBkYXRhIG9mIHRoZSBpdGVtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICAgKiBAcmV0dXJucyB7YW55W119IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgcm93IGRhdGEuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRSb3dEYXRhKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIpOiBbYW55W10sIFRhYmxlRGF0YUNvbHVtbltdXSB7XG4gICAgICAgIGxldCBkYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGRhdGFDb2x1bW4gb2YgdGhpcy5fZGF0YUNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBkYXRhQ29sdW1uLmRhdGFTb3VyY2U7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlUGF0aCA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLnRyZWF0RGF0YVNvdXJjZUFzU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaChyYXdJdGVtRGF0YVtzb3VyY2VQYXRoXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhLnB1c2gocmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHNvdXJjZVBhdGgpKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3VyY2VQYXRoLnR5cGUgPT0gJ2F1dG9jb3VudCcpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3VyY2VQYXRoLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7IF9hcmRDaGVja2JveDogdHJ1ZSwgaW5kZXggfSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VTdHJpbmcgPSB0eXBlb2Ygc291cmNlUGF0aCA9PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KHNvdXJjZVBhdGgpIDogc291cmNlUGF0aDtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGEgc291cmNlIFwiJHtzb3VyY2VTdHJpbmd9XCIuYCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZGF0YSwgdGhpcy5fZGF0YUNvbHVtbnNdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGl0ZW0gc3RvcmFnZS4gU2VsZWN0cyB0aGUgY29ycmVjdCBpdGVtcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsdWVzLCB3YXJuaW5nIHRoZSB1c2VyIGlmIHRoZSB2YWx1ZSBpcyBub3QgZm91bmQuXG4gICAgICogQHBhcmFtIGluZGV4ZXMgVGhlIHZhbHVlIG9mIHRoZSBuZ01vZGVsIHRvIHNldC5cbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKGluZGV4ZXM6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvcmNlVW5zZWxlY3RBbGwoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKC4uLmluZGV4ZXMpO1xuICAgIH1cblxuICAgIC8vISBzZWxlY3RpbmcgaXRlbXNcbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYW4gaXRlbSB3aXRoIHRoZSBnaXZlbiBpbmRleCBpcyBzZWxlY3RlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IF90cnVlXyBpZiB0aGUgaXRlbSBpcyBzZWxlY3RlZCwgb3RoZXJ3aXNlIF9mYWxzZV8uXG4gICAgICovXG4gICAgaXNJdGVtU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5pbmRleCA9PSBpbmRleCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYWxsIGl0ZW1zLlxuICAgICAqXG4gICAgICogQWNjb3VudHMgZm9yIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAgICAgKiBAcmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgdHdvIGFycmF5czpcbiAgICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIHNlbGVjdGVkLlxuICAgICAqICogQW4gYXJyYXkgb2YgaXRlbXMgZmFpbGVkIHRvIHNlbGVjdC5cbiAgICAgKi9cbiAgICBzZWxlY3RBbGwoKTogW2FueVtdLCBhbnlbXV0ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RJdGVtKC4uLnRoaXMuX2l0ZW1zLm1hcCh2ID0+IHYuaW5kZXgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcy5cbiAgICAgKlxuICAgICAqIElmIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSB2YWx1ZSB0byBiZSBzZWxlY3RlZCBhdCBhbGwgdGltZXMsIHRoZSBmaXJzdCBzZWxlY3RlZCBpdGVtcyBpcyBsZWZ0IHNlbGVjdGVkLlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICAgKi9cbiAgICB1bnNlbGVjdEFsbCgpOiBhbnlbXSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXQgPSB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5fc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVuc2VsZWN0cyBhbGwgc2VsZWN0ZWQgaXRlbXMsIG5vIG1hdHRlciB3aGF0IHRoZSBjb21wb25lbnQgc2V0dGluZ3MgYXJlLlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9mb3JjZVVuc2VsZWN0QWxsKCk6IGFueVtdIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3NlbGVjdGVkSXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJldCA9IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBvbmUgb3IgbXVsdGlwbGUgaXRlbXMuXG4gICAgICpcbiAgICAgKiBBY2NvdW50cyBmb3IgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4ZXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gaW5kZXhlcyB0byBiZSBzZWxlY3RlZC5cbiAgICAgKiBAcmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgdHdvIGFycmF5czpcbiAgICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIHNlbGVjdGVkLlxuICAgICAqICogQW4gYXJyYXkgb2YgaXRlbXMgZmFpbGVkIHRvIHNlbGVjdC5cbiAgICAgKi9cbiAgICBzZWxlY3RJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogW2FueVtdLCBhbnlbXV0ge1xuICAgICAgICBjb25zdCBpdGVtc1RvQmVTZWxlY3RlZCA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkICYmIGluZGV4ZXMuaW5jbHVkZXMoaXRlbS5pbmRleCkpO1xuICAgICAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBbW10sIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1RvQmVTZWxlY3RlZCldO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGl0ZW1zU2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zVG9CZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpdGVtc1NlbGVjdGVkQ291bnQrKztcbiAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICBpdGVtc1NlbGVjdGVkLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXNUb0JlU2VsZWN0ZWQuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XG4gICAgICAgIHJldHVybiBbdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zU2VsZWN0ZWQpLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNGYWlsZWRUb1NlbGVjdCldO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVbnNlbGVjdHMgb25lIG9yIG11bHRpcGxlIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbSBpbmRleGVzIHRvIGJlIHVuc2VsZWN0ZWQuXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgdW5zZWxlY3RlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxuICAgICAqL1xuICAgIHVuc2VsZWN0SXRlbSguLi5pbmRleGVzOiBudW1iZXJbXSk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgaXRlbXNUb0JlU2VsZWN0ZWQgPSB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiBpbmRleGVzLmluY2x1ZGVzKGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zVG9CZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlsdGVyKHYgPT4gdi5zZWxlY3RlZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1RvQmVTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLy8hIGhpZ2hsaWdodGluZyBpdGVtc1xuICAgIC8qKlxuICAgICAqIFVuaGlnaGxpZ2h0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIHVuaGlnaGxpZ2h0QWxsKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcykge1xuICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSBbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGlnaGxpZ2h0cyB0aGUgZ2l2ZW4gaXRlbSwgd2hpbGUgdW5oaWdobGlnaHRpbmcgYWxsIG90aGVyIGl0ZW1zLiBEb2VzIG5vdGhpbmcgd2hlbiB0aGUgaXRlbSBpcyBkaXNhYmxlZC5cbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAgICovXG4gICAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpbmRleDogbnVtYmVyKTogQXJkVGFibGVSb3cgfCBudWxsIHtcbiAgICAgICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGluZGV4KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXG4gICAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAgICogQHJldHVybnMgVGhlIGxhc3QgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICAgKi9cbiAgICBoaWdobGlnaHRJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogQXJkVGFibGVSb3cge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+IGluZGV4ZXMuaW5jbHVkZXMoaXRlbS5pbmRleCkpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMucHVzaCguLi5pdGVtcyk7XG4gICAgICAgIHJldHVybiBpdGVtcy5sYXN0KCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVuaGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXG4gICAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgdW5oaWdobGlnaHRlZC5cbiAgICAgKi9cbiAgICB1bmhpZ2hsaWdodEl0ZW0oLi4uaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiBpbmRleGVzLmluY2x1ZGVzKGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQpIHJldHVybjtcblxuICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmZpbHRlcih2ID0+IHYuaGlnaGxpZ2h0ZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWdobGlnaHRzIHRoZSBmaXJzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXG4gICAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAgICovXG4gICAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcblxuICAgICAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpLmluZGV4O1xuICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIGxhc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgICAqL1xuICAgIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcblxuICAgICAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKS5sYXN0KCkuaW5kZXg7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGlnaGxpZ2h0cyBhbGwgbm9uLWRpc2FibGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGhpZ2hsaWdodEFsbEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBsZXQgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkubWFwKHYgPT4gdi5pbmRleCk7XG5cbiAgICAgICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLml0ZW1zVG9IaWdobGlnaHQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWdobGlnaHRzIHRoZSBuZXh0IG5vbi1kaXNhYmxlZCBpdGVtIGRlZmluZWQgYnkgdGhlIG9mZnNldCBhbW91bnQuXG4gICAgICpcbiAgICAgKiBJZiBgaGFzU2hpZnRgIGlzIHNldCB0byB0cnVlLCBhbGwgb3JpZ2luYWxseSBoaWdobGlnaHRlZCBpdGVtcyBhcmUga2VwdC4gT3RoZXJ3aXNlLCBhbGwgb3JpZ2luYWwgaXRlbXMgYXJlIHVuc2VsZWN0ZWQuXG4gICAgICogQHBhcmFtIG9mZnNldCBUaGUgYW1vdW50IG9mIGl0ZW1zIHRvIG9mZnNldCB0aGUgaGlnaGxpZ2h0IGJ5LlxuICAgICAqIEBwYXJhbSBoYXNTaGlmdCBXaGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgc2hpZnQga2V5IHByZXNzZWQuXG4gICAgICogQHJldHVybnMgVGhlIGl0ZW0gaGlnaGxpZ2h0ZWQuXG4gICAgICovXG4gICAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIsIGhhc1NoaWZ0PzogYm9vbGVhbik6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMubGFzdCgpO1xuICAgICAgICBjb25zdCBpdGVtc1dpdGhvdXREaXNhYmxlZCA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkICYmICghdGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQgfHwgaXRlbS5zZWxlY3RlZCkpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXhJbkl0ZW1zID0gaXRlbXNXaXRob3V0RGlzYWJsZWQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pbmRleCA9PSBjdXJyZW50SXRlbS5pbmRleCk7XG5cbiAgICAgICAgbGV0IG5leHRJdGVtSW5kZXggPSBjdXJyZW50SW5kZXhJbkl0ZW1zICsgb2Zmc2V0O1xuICAgICAgICBpZiAobmV4dEl0ZW1JbmRleCA+PSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5leHRJdGVtSW5kZXggLT0gaXRlbXNXaXRob3V0RGlzYWJsZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xuICAgICAgICAgICAgbmV4dEl0ZW1JbmRleCArPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gaXRlbXNXaXRob3V0RGlzYWJsZWRbbmV4dEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKGhhc1NoaWZ0KSB7XG4gICAgICAgICAgICBpZiAoaXRlbVRvSGlnaGxpZ2h0LmhpZ2hsaWdodGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bmhpZ2hsaWdodEl0ZW0obmV4dEl0ZW1JbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKG5leHRJdGVtSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0obmV4dEl0ZW1JbmRleCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmRzIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgaGlnaGxpZ2h0YWJsZSBpZiBpdCBpcyAqKm5vdCoqIGRpc2FibGVkLlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk6IEFyZFRhYmxlUm93W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIC8vISBzb3J0aW5nXG4gICAgcHJpdmF0ZSBfY3VycmVudFNvcnRDb2x1bW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX2N1cnJlbnRTb3J0VHlwZTogU29ydFR5cGUgfCBudWxsID0gbnVsbDtcblxuICAgIHRvZ2dsZUN1cnJlbnRTb3J0Q29sdW1uKGNvbHVtbjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50U29ydENvbHVtbiA9PSBjb2x1bW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U29ydFR5cGUgPT0gU29ydFR5cGUuQXNjZW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFNvcnRUeXBlID0gU29ydFR5cGUuRGVzY2VuZGluZztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFNvcnRUeXBlID0gU29ydFR5cGUuQXNjZW5kaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVTb3J0ZWRSb3dzKHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTb3J0Q29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLl9jdXJyZW50U29ydFR5cGUgPSBTb3J0VHlwZS5Bc2NlbmRpbmc7XG4gICAgICAgIHRoaXMuX2dlbmVyYXRlU29ydGVkUm93cygpO1xuICAgIH1cbiAgICByZXNldFNvcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTb3J0Q29sdW1uID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY3VycmVudFNvcnRUeXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fc29ydGVkSXRlbXMgPSBbLi4udGhpcy5pdGVtc107XG4gICAgfVxuICAgIGdldENvbHVtblNvcnRUeXBlKGNvbHVtbjogbnVtYmVyKTogU29ydFR5cGUgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRTb3J0Q29sdW1uID09IGNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTb3J0VHlwZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVTb3J0ZWRSb3dzKGp1c3RSZXZlcnNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoanVzdFJldmVyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zLnJldmVyc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb3J0Q29sdW1uSW5kZXggPSB0aGlzLl9jdXJyZW50U29ydENvbHVtbjtcbiAgICAgICAgaWYgKGlzTnVsbChzb3J0Q29sdW1uSW5kZXgpIHx8ICF0aGlzLl9jdXJyZW50U29ydFR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb3J0Q29sdW1uID0gdGhpcy5fZGF0YUNvbHVtbnNbc29ydENvbHVtbkluZGV4XTtcbiAgICAgICAgaWYgKCFzb3J0Q29sdW1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEVuY291bnRlcmVkIGFuIGlzc3VlIGluIDxhcmQtdGFibGU+OiBjb3VsZCBub3QgZmluZCB0aGUgY29sdW1uIHdpdGggaW5kZXggJHtzb3J0Q29sdW1uSW5kZXh9LiBUaGlzIGlzIG1vc3QgbGlrZWx5IGFuIEFyZGl1bSBidWcsIHBsZWFzZSByZXBvcnQgaXQgb24gR2l0SHViLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLl9jdXJyZW50U29ydFR5cGUgPT0gU29ydFR5cGUuQXNjZW5kaW5nID8gMSA6IC0xO1xuICAgICAgICBjb25zdCBzb3J0Rm4gPVxuICAgICAgICAgICAgc29ydENvbHVtbi5zb3J0Rm4gPz9cbiAgICAgICAgICAgICgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIGRpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMSAqIGRpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zID0gWy4uLnRoaXMuaXRlbXNdLnNvcnQoKGEsIGIpID0+IHNvcnRGbihhLmRhdGFbc29ydENvbHVtbkluZGV4XSwgYi5kYXRhW3NvcnRDb2x1bW5JbmRleF0pKTtcbiAgICB9XG59XG4iXX0=
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFELE9BQU8sRUFBRSxRQUFRLEVBQW1CLHVCQUF1QixFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBaUM3RSxNQUFNLE9BQU8sVUFBVTtJQUtyQixJQUFJLEtBQUs7UUFDUCxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNPLFNBQVMsQ0FBQyxLQUFrQztRQUNsRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtZQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxZQUFZLElBQXNDLEVBQUUsVUFBa0IsQ0FBQyxFQUFFLFVBQWtC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QUNSLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlc29sdmVQYXRoIGZyb20gJ3Jlc29sdmUtb2JqZWN0LXBhdGgnO1xuaW1wb3J0IHsgZXZhbHVhdGUsIGlzRGVmaW5lZCwgaXNOdWxsIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuaW1wb3J0IHsgQ29tcGFyZVdpdGhGbiB9IGZyb20gJy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgeyBTb3J0VHlwZSwgVGFibGVEYXRhQ29sdW1uLCBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSwgVGFibGVTdWJoZWFkZXIgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IGFyZUFsbERhdGFDb2x1bW5zLCBpc1RhYmxlU3ViaGVhZGVyLCBtZXJnZTJkQXJyYXlzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJkVGFibGVSb3cge1xuICByZWFkb25seSBpdGVtRGF0YTogYW55O1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xuICByZWFkb25seSBpc0VtcHR5PzogYm9vbGVhbjtcbiAgZGF0YTogYW55W107XG4gIGRhdGFDb2x1bW5zOiBUYWJsZURhdGFDb2x1bW5bXTtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgYm9sZD86IGJvb2xlYW47XG4gIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaGlnaGxpZ2h0ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzIHtcbiAgcm93RGlzYWJsZWRGcm9tOiBzdHJpbmc7XG4gIHJvd0JvbGRGcm9tOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlSXRlbVN0b3JhZ2VIb3N0IHtcbiAgcm93RGlzYWJsZWRGcm9tPzogc3RyaW5nO1xuICByb3dCb2xkRnJvbT86IHN0cmluZztcbiAgaW52ZXJ0Um93RGlzYWJsZWQ/OiBib29sZWFuO1xuICBpbnZlcnRSb3dCb2xkPzogYm9vbGVhbjtcbiAgZGF0YT86IGFueVtdO1xuICByZWFkb25seSBERUZBVUxUUzogVGFibGVJdGVtU3RvcmFnZUhvc3REZWZhdWx0cztcbiAgbWF4U2VsZWN0ZWRJdGVtcz86IG51bWJlcjtcbiAgdHJlYXREYXRhU291cmNlQXNTdHJpbmc/OiBib29sZWFuO1xuXG4gIHBhZ2luYXRlZDogYm9vbGVhbjtcbiAgcGFnaW5hdGlvblN0cmF0ZWd5OiBUYWJsZVBhZ2luYXRpb25TdHJhdGVneTtcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBIZWFkZXJDZWxsIHtcbiAgY29sc3BhbiE6IG51bWJlcjtcbiAgcm93c3BhbiE6IG51bWJlcjtcbiAgY2VsbCE6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyO1xuXG4gIGdldCB3aWR0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoaXNUYWJsZVN1YmhlYWRlcih0aGlzLmNlbGwpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5fZ2V0V2lkdGgodGhpcy5jZWxsLndpZHRoKTtcbiAgfVxuICBnZXQgbWluV2lkdGgoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGlzVGFibGVTdWJoZWFkZXIodGhpcy5jZWxsKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuX2dldFdpZHRoKHRoaXMuY2VsbC5taW5XaWR0aCk7XG4gIH1cbiAgcHJpdmF0ZSBfZ2V0V2lkdGgod2lkdGg6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghd2lkdGgpIHJldHVybiBudWxsO1xuICAgIGlmICh0eXBlb2Ygd2lkdGggPT0gJ251bWJlcicpIHJldHVybiBgJHt3aWR0aH1weGA7XG4gICAgcmV0dXJuIHdpZHRoO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2VsbDogVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIsIGNvbHNwYW46IG51bWJlciA9IDEsIHJvd3NwYW46IG51bWJlciA9IDEpIHtcbiAgICB0aGlzLmNlbGwgPSBjZWxsO1xuICAgIHRoaXMuY29sc3BhbiA9IGNvbHNwYW47XG4gICAgdGhpcy5yb3dzcGFuID0gcm93c3BhbjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVJdGVtU3RvcmFnZSB7XG4gIHByaXZhdGUgX2l0ZW1zOiBBcmRUYWJsZVJvd1tdID0gW107XG4gIHByaXZhdGUgX3NvcnRlZEl0ZW1zOiBBcmRUYWJsZVJvd1tdID0gW107XG4gIHByaXZhdGUgX2hpZ2hsaWdodGVkSXRlbXM6IEFyZFRhYmxlUm93W10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtczogQXJkVGFibGVSb3dbXSA9IFtdO1xuXG4gIHByaXZhdGUgX2RhdGFDb2x1bW5zOiBUYWJsZURhdGFDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIF9oZWFkZXJDZWxsczogSGVhZGVyQ2VsbFtdW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcmRQYXJlbnRDb21wOiBUYWJsZUl0ZW1TdG9yYWdlSG9zdCkge31cblxuICAvKipcbiAgICogR2V0cyBhbGwgaXRlbXMuXG4gICAqL1xuICBnZXQgaXRlbXMoKTogQXJkVGFibGVSb3dbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG4gIGdldCBzb3J0ZWRJdGVtcygpOiBBcmRUYWJsZVJvd1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydGVkSXRlbXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldHMgaXRlbXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBzdGF0ZS5cbiAgICovXG4gIGdldCBwYWdpbmF0ZWRJdGVtcygpOiBBcmRUYWJsZVJvd1tdIHtcbiAgICAvL3ByZXR0aWVyLWlnbm9yZVxuICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLl9hcmRQYXJlbnRDb21wLnBhZ2luYXRlZFxuICAgICAgICAgICAgfHwgdGhpcy5fYXJkUGFyZW50Q29tcC5wYWdpbmF0aW9uU3RyYXRlZ3kgPT0gVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3kuTm9vcFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnRlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX2FyZFBhcmVudENvbXAucGFnZTtcbiAgICBjb25zdCBJUFAgPSB0aGlzLl9hcmRQYXJlbnRDb21wLml0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBpdGVtc1N0YXJ0ID0gKHBhZ2UgLSAxKSAqIElQUDtcbiAgICBjb25zdCBpdGVtc0VuZCA9IHBhZ2UgKiBJUFA7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkSXRlbXMuc2xpY2UoaXRlbXNTdGFydCwgaXRlbXNFbmQpO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXG4gICAqL1xuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBBcmRUYWJsZVJvd1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcztcbiAgfVxuICAvKipcbiAgICogR2V0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgKi9cbiAgZ2V0IGhpZ2hsaWdodGVkSXRlbXMoKTogQXJkVGFibGVSb3dbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlcyBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zLlxuICAgKi9cbiAgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cbiAgLyoqXG4gICAqIE1hcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byB0aGVpciB2YWx1ZXMuXG4gICAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbXMgdG8gY29udmVydCB0byB2YWx1ZS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbSB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIF9pdGVtc1RvVmFsdWUoaXRlbXM6IEFyZFRhYmxlUm93W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uaXRlbURhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgZ2V0IGlzQW55SXRlbUhpZ2hsaWdodGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbnkgaXRlbSBpbiB0aGUgdGFibGUgaXMgc2VsZWN0ZWQuXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIGlmIGFueSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgZ2V0IGlzQW55SXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbGwgaXRlbXMgaW4gdGhlIHRhYmxlIGFyZSBzZWxlY3RlZC5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgYWxsIGl0ZW1zIGFyZSBzZWxlY3RlZC5cbiAgICovXG4gIGdldCBhcmVBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpLmxlbmd0aDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXJlbnQgY29tcG9uZW50IGRlZmluZXMgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RhYmxlIGl0ZW1zIGFuZCB0aGUgYW1vdW50IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBtYXRjaGVzIHRoYXQgbGltaXQuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLlxuICAgKlxuICAgKiAqKlRMRFIqKjogdHJ1ZSBpZiBgbWF4U2VsZWN0ZWRJdGVtc2AgaXMgZGVmaW5lZCBhbmQgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBtYXRjaGVzIHRoYXQgdmFsdWUuXG4gICAqL1xuICBnZXQgaXNJdGVtTGltaXRSZWFjaGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcyA8PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlYWRlciBjZWxscyBvZiB0aGUgdGFibGUuXG4gICAqIEByZXR1cm5zIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzLlxuICAgKi9cbiAgZ2V0IGhlYWRlckNlbGxzKCk6IEhlYWRlckNlbGxbXVtdIHtcbiAgICByZXR1cm4gdGhpcy5faGVhZGVyQ2VsbHM7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgdGFibGUgaGFzIGRlZmluZWQgY29sdW1ucy5cbiAgICogQHJldHVybnMgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHRhYmxlIGhhcyBkZWZpbmVkIGNvbHVtbnMuXG4gICAqL1xuICBnZXQgaGFzRGVmaW5lZENvbHVtbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFDb2x1bW5zLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvLyEgc2V0dGluZyBjb2x1bW5zXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cbiAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXG4gICAqL1xuICBzZXRDb2x1bW5zKGNvbHM6IChUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcilbXSk6IHZvaWQge1xuICAgIGNvbnN0IG1heE5lc3RpbmdMZXZlbCA9IHRoaXMuX2dldEhlYWRlck1heE5lc3RpbmcoY29scyk7XG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSB0aGlzLl9tYXBDb2x1bW5zVG9BcnJheShjb2xzLCBtYXhOZXN0aW5nTGV2ZWwsIDApO1xuICAgIHRoaXMuX2hlYWRlckNlbGxzID0gdGhpcy5fZmlsdGVySGVhZGVyQ2VsbHMoaGVhZGVyQ2VsbHMpO1xuICAgIHRoaXMuX2RhdGFDb2x1bW5zID0gdGhpcy5fZXh0cmFjdERhdGFTb3VyY2VzKGNvbHMpO1xuICB9XG4gIC8qKlxuICAgKiBGaWx0ZXJzIG91dCBudWxsIHZhbHVlcyBmcm9tIHRoZSBoZWFkZXIgY2VsbHMgYXJyYXkuXG4gICAqIEBwYXJhbSBjZWxscyBhIDJEIGFycmF5IG9mIGhlYWRlciBjZWxscyBvciBudWxsIHZhbHVlcy5cbiAgICogQHJldHVybnMgYSAyRCBhcnJheSBvZiBoZWFkZXIgY2VsbHMgd2l0aG91dCBudWxsIHZhbHVlcyBhbmQgZW1wdHkgYXJyYXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmlsdGVySGVhZGVyQ2VsbHMoY2VsbHM6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdKTogSGVhZGVyQ2VsbFtdW10ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNlbGxzW2ldID0gY2VsbHNbaV0uZmlsdGVyKHYgPT4gdiAhPSBudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIGNlbGxzLmZpbHRlcihyb3cgPT4gcm93Lmxlbmd0aCkgYXMgSGVhZGVyQ2VsbFtdW107XG4gIH1cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBkYXRhIHNvdXJjZXMgZnJvbSB0aGUgY29sdW1ucyBhcnJheS5cbiAgICogQHBhcmFtIGNvbHMgYW4gYXJyYXkgb2YgdGFibGUgZGF0YSBjb2x1bW5zIG9yIHRhYmxlIHN1YmhlYWRlcnMuXG4gICAqIEByZXR1cm5zIGFuIGFycmF5IG9mIHRhYmxlIGRhdGEgY29sdW1ucy5cbiAgICovXG4gIHByaXZhdGUgX2V4dHJhY3REYXRhU291cmNlcyhjb2xzOiAoVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpW10pOiBUYWJsZURhdGFDb2x1bW5bXSB7XG4gICAgbGV0IGRhdGFDb2x1bW5zOiBUYWJsZURhdGFDb2x1bW5bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKCFpc1RhYmxlU3ViaGVhZGVyKGNvbCkpIHtcbiAgICAgICAgZGF0YUNvbHVtbnMucHVzaChjb2wpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGRhdGFDb2x1bW5zLnB1c2goLi4udGhpcy5fZXh0cmFjdERhdGFTb3VyY2VzKGNvbC5jaGlsZHJlbikpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhQ29sdW1ucztcbiAgfVxuICAvKipcbiAgICogR2V0cyB0aGUgbWF4aW11bSBuZXN0aW5nIGxldmVsIG9mIHRoZSBjb2x1bW5zIGFycmF5LlxuICAgKiBAcGFyYW0gY29scyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMgb3IgdGFibGUgc3ViaGVhZGVycy5cbiAgICogQHJldHVybnMgdGhlIG1heGltdW0gbmVzdGluZyBsZXZlbCBhcyBhIG51bWJlci5cbiAgICovXG4gIHByaXZhdGUgX2dldEhlYWRlck1heE5lc3RpbmcoY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdKTogbnVtYmVyIHtcbiAgICBpZiAoYXJlQWxsRGF0YUNvbHVtbnMoY29scykpIHJldHVybiAxO1xuICAgIGxldCBtYXggPSAxO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMuZmlsdGVyKHYgPT4gaXNUYWJsZVN1YmhlYWRlcih2KSkgYXMgVGFibGVTdWJoZWFkZXJbXSkge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gMSArIHRoaXMuX2dldEhlYWRlck1heE5lc3RpbmcoY29sLmNoaWxkcmVuKTtcbiAgICAgIGlmIChoZWlnaHQgPiBtYXgpIG1heCA9IGhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuICAvKipcbiAgICogTWFwcyB0aGUgY29sdW1ucyB0cmVlIHRvIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzIG9yIG51bGwgdmFsdWVzLlxuICAgKiBAcGFyYW0gY29scyBhbiBhcnJheSBvZiB0YWJsZSBkYXRhIGNvbHVtbnMgb3IgdGFibGUgc3ViaGVhZGVycy5cbiAgICogQHBhcmFtIG1heE5lc3RpbmcgdGhlIG1heGltdW0gbmVzdGluZyBsZXZlbCBvZiB0aGUgY29sdW1ucyBhcnJheS5cbiAgICogQHBhcmFtIGN1cnJlbnROZXN0aW5nIHRoZSBjdXJyZW50IG5lc3RpbmcgbGV2ZWwgb2YgdGhlIGNvbHVtbnMgYXJyYXkuXG4gICAqIEByZXR1cm5zIGEgMkQgYXJyYXkgb2YgaGVhZGVyIGNlbGxzIG9yIG51bGwgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfbWFwQ29sdW1uc1RvQXJyYXkoY29sczogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdLCBtYXhOZXN0aW5nOiBudW1iZXIsIGN1cnJlbnROZXN0aW5nOiBudW1iZXIpOiAoSGVhZGVyQ2VsbCB8IG51bGwpW11bXSB7XG4gICAgaWYgKGFyZUFsbERhdGFDb2x1bW5zKGNvbHMpKSB7XG4gICAgICByZXR1cm4gW2NvbHMubWFwKGNvbCA9PiBuZXcgSGVhZGVyQ2VsbChjb2wsIDEsIG1heE5lc3RpbmcgLSBjdXJyZW50TmVzdGluZykpXTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVyQ2VsbHM6IChIZWFkZXJDZWxsIHwgbnVsbClbXVtdID0gW1tdXTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICBpZiAoIWlzVGFibGVTdWJoZWFkZXIoY29sKSkge1xuICAgICAgICBoZWFkZXJDZWxsc1swXS5wdXNoKG5ldyBIZWFkZXJDZWxsKGNvbCwgMSwgbWF4TmVzdGluZyAtIGN1cnJlbnROZXN0aW5nKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY2hpbGRDZWxsczogKEhlYWRlckNlbGwgfCBudWxsKVtdW10gPSBbW10sIC4uLnRoaXMuX21hcENvbHVtbnNUb0FycmF5KGNvbC5jaGlsZHJlbiwgbWF4TmVzdGluZywgY3VycmVudE5lc3RpbmcgKyAxKV07XG4gICAgICBjb25zdCBoZWlnaHQgPSBjaGlsZENlbGxzLmxlbmd0aCAtIDE7XG4gICAgICBjb25zdCB3aWR0aCA9IGNoaWxkQ2VsbHNbMV0ubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykge1xuICAgICAgICBoZWFkZXJDZWxscy5wdXNoKFtudWxsXSk7XG4gICAgICB9XG4gICAgICBoZWFkZXJDZWxsc1swXS5wdXNoKG5ldyBIZWFkZXJDZWxsKGNvbCwgd2lkdGgsIDEpKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGggLSAxOyBpKyspIHtcbiAgICAgICAgaGVhZGVyQ2VsbHNbMF0ucHVzaChudWxsKTtcbiAgICAgIH1cbiAgICAgIG1lcmdlMmRBcnJheXMoaGVhZGVyQ2VsbHMsIGNoaWxkQ2VsbHMpO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyQ2VsbHM7XG4gIH1cblxuICAvLyEgc2V0dGluZyBpdGVtc1xuICAvKipcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgaXRlbXMuIFRha2VzIGludG8gYWNjb3VudCB0aGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQgZm9yIGByb3dEaXNhYmxlZEZyb21gLCBgcm93Qm9sZEZyb21gLCBhbmQgYHJvd0hpZ2hsaWdodGVkRnJvbWAuXG4gICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBzZXQgYXMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLlxuICAgKi9cbiAgc2V0SXRlbXMoaXRlbXM6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0RlZmluZWRDb2x1bW5zKSByZXR1cm47XG5cbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIGluZGV4KTtcbiAgICB9KTtcbiAgICB0aGlzLl9zb3J0ZWRJdGVtcyA9IHRoaXMuX2l0ZW1zO1xuICB9XG4gIC8qKlxuICAgKiBNYXBzIHJhdyBpdGVtIGRhdGEgdG8gYW4ge0BsaW5rIEFyZFRhYmxlUm93fSBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSByYXdJdGVtRGF0YSAtIFRoZSByYXcgZGF0YSBvZiB0aGUgaXRlbS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtLlxuICAgKiBAcmV0dXJucyB7QXJkVGFibGVSb3d9IFJldHVybnMgYW4gQXJkVGFibGVSb3cgb2JqZWN0IHdpdGggbWFwcGVkIHByb3BlcnRpZXMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9zZXRJdGVtc01hcEZuKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIpOiBBcmRUYWJsZVJvdyB7XG4gICAgLy9nZXQgZGF0YVxuICAgIGNvbnN0IFtkYXRhLCBkYXRhQ29sdW1uc10gPSB0aGlzLl9nZXRSb3dEYXRhKHJhd0l0ZW1EYXRhLCBpbmRleCk7XG5cbiAgICAvL2dldCBib2xkXG4gICAgY29uc3Qgcm93Qm9sZEZyb21QYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5yb3dCb2xkRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLnJvd0JvbGRGcm9tO1xuICAgIGxldCBib2xkID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHJvd0JvbGRGcm9tUGF0aCk7XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaW52ZXJ0Um93Qm9sZCkge1xuICAgICAgYm9sZCA9ICFib2xkO1xuICAgIH1cblxuICAgIC8vZ2V0IGRpc2FibGVkXG4gICAgY29uc3QgZGlzYWJsZWRQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5yb3dEaXNhYmxlZEZyb20gPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5yb3dEaXNhYmxlZEZyb207XG4gICAgbGV0IGRpc2FibGVkID0gZXZhbHVhdGUocmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGRpc2FibGVkUGF0aCkpO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydFJvd0Rpc2FibGVkKSB7XG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvL3JldHVyblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtRGF0YTogcmF3SXRlbURhdGEsXG4gICAgICBpbmRleCxcbiAgICAgIGRhdGEsXG4gICAgICBkYXRhQ29sdW1ucyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgYm9sZCxcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgZGF0YSBmb3IgYSByb3cgYmFzZWQgb24gZGF0YSBjb2x1bW5zIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSByYXdJdGVtRGF0YSAtIFRoZSByYXcgZGF0YSBvZiB0aGUgaXRlbS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtLlxuICAgKiBAcmV0dXJucyB7YW55W119IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgcm93IGRhdGEuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRSb3dEYXRhKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIpOiBbYW55W10sIFRhYmxlRGF0YUNvbHVtbltdXSB7XG4gICAgbGV0IGRhdGE6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBkYXRhQ29sdW1uIG9mIHRoaXMuX2RhdGFDb2x1bW5zKSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gZGF0YUNvbHVtbi5kYXRhU291cmNlO1xuXG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVBhdGggPT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAudHJlYXREYXRhU291cmNlQXNTdHJpbmcpIHtcbiAgICAgICAgICBkYXRhLnB1c2gocmF3SXRlbURhdGFbc291cmNlUGF0aF0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEucHVzaChyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgc291cmNlUGF0aCkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzb3VyY2VQYXRoLnR5cGUgPT0gJ2F1dG9jb3VudCcpIHtcbiAgICAgICAgZGF0YS5wdXNoKGluZGV4ICsgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNvdXJjZVBhdGgudHlwZSA9PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGRhdGEucHVzaCh7IF9hcmRDaGVja2JveDogdHJ1ZSwgaW5kZXggfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc291cmNlU3RyaW5nID0gdHlwZW9mIHNvdXJjZVBhdGggPT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShzb3VyY2VQYXRoKSA6IHNvdXJjZVBhdGg7XG4gICAgICBjb25zb2xlLmVycm9yKG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhIHNvdXJjZSBcIiR7c291cmNlU3RyaW5nfVwiLmApKTtcbiAgICB9XG4gICAgcmV0dXJuIFtkYXRhLCB0aGlzLl9kYXRhQ29sdW1uc107XG4gIH1cbiAgLyoqXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgaXRlbSBzdG9yYWdlLiBTZWxlY3RzIHRoZSBjb3JyZWN0IGl0ZW1zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2YWx1ZXMsIHdhcm5pbmcgdGhlIHVzZXIgaWYgdGhlIHZhbHVlIGlzIG5vdCBmb3VuZC5cbiAgICogQHBhcmFtIGluZGV4ZXMgVGhlIHZhbHVlIG9mIHRoZSBuZ01vZGVsIHRvIHNldC5cbiAgICovXG4gIHdyaXRlVmFsdWUoaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZVVuc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5zZWxlY3RJdGVtKC4uLmluZGV4ZXMpO1xuICB9XG5cbiAgLy8hIHNlbGVjdGluZyBpdGVtc1xuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaW5kZXggaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBfdHJ1ZV8gaWYgdGhlIGl0ZW0gaXMgc2VsZWN0ZWQsIG90aGVyd2lzZSBfZmFsc2VfLlxuICAgKi9cbiAgaXNJdGVtU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLmluZGV4ID09IGluZGV4KTtcbiAgfVxuICAvKipcbiAgICogU2VsZWN0cyBhbGwgaXRlbXMuXG4gICAqXG4gICAqIEFjY291bnRzIGZvciB0aGUgbGltaXQgb2YgY29uY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIGEgdHVwbGUgY29udGFpbmluZyB0d28gYXJyYXlzOlxuICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIHNlbGVjdGVkLlxuICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIGZhaWxlZCB0byBzZWxlY3QuXG4gICAqL1xuICBzZWxlY3RBbGwoKTogW2FueVtdLCBhbnlbXV0ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEl0ZW0oLi4udGhpcy5faXRlbXMubWFwKHYgPT4gdi5pbmRleCkpO1xuICB9XG4gIC8qKlxuICAgKiBVbnNlbGVjdHMgYWxsIHNlbGVjdGVkIGl0ZW1zLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IGNvbXBvbmVudCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgdmFsdWUgdG8gYmUgc2VsZWN0ZWQgYXQgYWxsIHRpbWVzLCB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbXMgaXMgbGVmdCBzZWxlY3RlZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgY2xlYXJlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxuICAgKi9cbiAgdW5zZWxlY3RBbGwoKTogYW55W10ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMpO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICAvKipcbiAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcywgbm8gbWF0dGVyIHdoYXQgdGhlIGNvbXBvbmVudCBzZXR0aW5ncyBhcmUuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgX2ZvcmNlVW5zZWxlY3RBbGwoKTogYW55W10ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMpO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICAvKipcbiAgICogU2VsZWN0cyBvbmUgb3IgbXVsdGlwbGUgaXRlbXMuXG4gICAqXG4gICAqIEFjY291bnRzIGZvciB0aGUgbGltaXQgb2YgY29uY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleGVzIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgc2VsZWN0ZWQuXG4gICAqIEByZXR1cm5zIGEgdHVwbGUgY29udGFpbmluZyB0d28gYXJyYXlzOlxuICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIHNlbGVjdGVkLlxuICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIGZhaWxlZCB0byBzZWxlY3QuXG4gICAqL1xuICBzZWxlY3RJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogW2FueVtdLCBhbnlbXV0ge1xuICAgIGNvbnN0IGl0ZW1zVG9CZVNlbGVjdGVkID0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQgJiYgaW5kZXhlcy5pbmNsdWRlcyhpdGVtLmluZGV4KSk7XG4gICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKSB7XG4gICAgICByZXR1cm4gW1tdLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNUb0JlU2VsZWN0ZWQpXTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcbiAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zVG9CZVNlbGVjdGVkKSB7XG4gICAgICBpdGVtc1NlbGVjdGVkQ291bnQrKztcbiAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcbiAgICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgaXRlbXNTZWxlY3RlZC5wdXNoKGl0ZW0pO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zRmFpbGVkVG9TZWxlY3QgPSBpdGVtc1RvQmVTZWxlY3RlZC5zbGljZShpdGVtc1NlbGVjdGVkQ291bnQgLSAxKTtcbiAgICByZXR1cm4gW3RoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1NlbGVjdGVkKSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zRmFpbGVkVG9TZWxlY3QpXTtcbiAgfVxuICAvKipcbiAgICogVW5zZWxlY3RzIG9uZSBvciBtdWx0aXBsZSBpdGVtcy5cbiAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgdW5zZWxlY3RlZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgdW5zZWxlY3RlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxuICAgKi9cbiAgdW5zZWxlY3RJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogYW55W10ge1xuICAgIGNvbnN0IGl0ZW1zVG9CZVNlbGVjdGVkID0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gaW5kZXhlcy5pbmNsdWRlcyhpdGVtLmluZGV4KSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zVG9CZVNlbGVjdGVkKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZpbHRlcih2ID0+IHYuc2VsZWN0ZWQpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1RvQmVTZWxlY3RlZCk7XG4gIH1cblxuICAvLyEgaGlnaGxpZ2h0aW5nIGl0ZW1zXG4gIC8qKlxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtcy5cbiAgICovXG4gIHVuaGlnaGxpZ2h0QWxsKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zKSB7XG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSBbXTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgZ2l2ZW4gaXRlbSwgd2hpbGUgdW5oaWdobGlnaHRpbmcgYWxsIG90aGVyIGl0ZW1zLiBEb2VzIG5vdGhpbmcgd2hlbiB0aGUgaXRlbSBpcyBkaXNhYmxlZC5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIGJlIGhpZ2hsaWdodGVkLlxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICovXG4gIGhpZ2hsaWdodFNpbmdsZUl0ZW0oaW5kZXg6IG51bWJlcik6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaW5kZXgpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIGFsbCBnaXZlbiBpdGVtcy5cbiAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIGluZGV4ZXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIEByZXR1cm5zIFRoZSBsYXN0IGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogQXJkVGFibGVSb3cge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gaW5kZXhlcy5pbmNsdWRlcyhpdGVtLmluZGV4KSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5wdXNoKC4uLml0ZW1zKTtcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xuICB9XG4gIC8qKlxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gaW5kZXhlcyB0byBiZSB1bmhpZ2hsaWdodGVkLlxuICAgKi9cbiAgdW5oaWdobGlnaHRJdGVtKC4uLmluZGV4ZXM6IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiBpbmRleGVzLmluY2x1ZGVzKGl0ZW0uaW5kZXgpKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmICghaXRlbSB8fCAhaXRlbS5oaWdobGlnaHRlZCkgcmV0dXJuO1xuXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMgPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmZpbHRlcih2ID0+IHYuaGlnaGxpZ2h0ZWQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBmaXJzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgKi9cbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xuXG4gICAgbGV0IGl0ZW1Ub0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkuZmlyc3QoKS5pbmRleDtcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgdGhlIGxhc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICovXG4gIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZFRhYmxlUm93IHwgbnVsbCB7XG4gICAgdGhpcy51bmhpZ2hsaWdodEFsbCgpO1xuXG4gICAgbGV0IGl0ZW1Ub0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkubGFzdCgpLmluZGV4O1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgbm9uLWRpc2FibGVkIGl0ZW1zLlxuICAgKi9cbiAgaGlnaGxpZ2h0QWxsSXRlbXMoKTogdm9pZCB7XG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpLm1hcCh2ID0+IHYuaW5kZXgpO1xuXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLml0ZW1zVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBuZXh0IG5vbi1kaXNhYmxlZCBpdGVtIGRlZmluZWQgYnkgdGhlIG9mZnNldCBhbW91bnQuXG4gICAqXG4gICAqIElmIGBoYXNTaGlmdGAgaXMgc2V0IHRvIHRydWUsIGFsbCBvcmlnaW5hbGx5IGhpZ2hsaWdodGVkIGl0ZW1zIGFyZSBrZXB0LiBPdGhlcndpc2UsIGFsbCBvcmlnaW5hbCBpdGVtcyBhcmUgdW5zZWxlY3RlZC5cbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYW1vdW50IG9mIGl0ZW1zIHRvIG9mZnNldCB0aGUgaGlnaGxpZ2h0IGJ5LlxuICAgKiBAcGFyYW0gaGFzU2hpZnQgV2hldGhlciB0aGUgdXNlciBoYXMgdGhlIHNoaWZ0IGtleSBwcmVzc2VkLlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBoaWdobGlnaHRlZC5cbiAgICovXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRUYWJsZVJvdyB8IG51bGwge1xuICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5oaWdobGlnaHRlZEl0ZW1zLmxhc3QoKTtcbiAgICBjb25zdCBpdGVtc1dpdGhvdXREaXNhYmxlZCA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkICYmICghdGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQgfHwgaXRlbS5zZWxlY3RlZCkpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4ID09IGN1cnJlbnRJdGVtLmluZGV4KTtcblxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5JdGVtcyArIG9mZnNldDtcbiAgICBpZiAobmV4dEl0ZW1JbmRleCA+PSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGgpIHtcbiAgICAgIG5leHRJdGVtSW5kZXggLT0gaXRlbXNXaXRob3V0RGlzYWJsZWQubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAobmV4dEl0ZW1JbmRleCA8IDApIHtcbiAgICAgIG5leHRJdGVtSW5kZXggKz0gaXRlbXNXaXRob3V0RGlzYWJsZWQubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSBpdGVtc1dpdGhvdXREaXNhYmxlZFtuZXh0SXRlbUluZGV4XTtcblxuICAgIGlmIChoYXNTaGlmdCkge1xuICAgICAgaWYgKGl0ZW1Ub0hpZ2hsaWdodC5oaWdobGlnaHRlZCkge1xuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0SXRlbShuZXh0SXRlbUluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0obmV4dEl0ZW1JbmRleCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0obmV4dEl0ZW1JbmRleCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpbmRzIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgaGlnaGxpZ2h0YWJsZSBpZiBpdCBpcyAqKm5vdCoqIGRpc2FibGVkLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgaGlnaGxpZ2h0YWJsZSBpdGVtcy5cbiAgICovXG4gIHByaXZhdGUgX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk6IEFyZFRhYmxlUm93W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCk7XG4gIH1cblxuICAvLyEgc29ydGluZ1xuICBwcml2YXRlIF9jdXJyZW50U29ydENvbHVtbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2N1cnJlbnRTb3J0VHlwZTogU29ydFR5cGUgfCBudWxsID0gbnVsbDtcblxuICB0b2dnbGVDdXJyZW50U29ydENvbHVtbihjb2x1bW46IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50U29ydENvbHVtbiA9PSBjb2x1bW4pIHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50U29ydFR5cGUgPT0gU29ydFR5cGUuQXNjZW5kaW5nKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IFNvcnRUeXBlLkRlc2NlbmRpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jdXJyZW50U29ydFR5cGUgPSBTb3J0VHlwZS5Bc2NlbmRpbmc7XG4gICAgICB9XG4gICAgICB0aGlzLl9nZW5lcmF0ZVNvcnRlZFJvd3ModHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2N1cnJlbnRTb3J0Q29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IFNvcnRUeXBlLkFzY2VuZGluZztcbiAgICB0aGlzLl9nZW5lcmF0ZVNvcnRlZFJvd3MoKTtcbiAgfVxuICByZXNldFNvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5fY3VycmVudFNvcnRDb2x1bW4gPSBudWxsO1xuICAgIHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9IG51bGw7XG4gICAgdGhpcy5fc29ydGVkSXRlbXMgPSBbLi4udGhpcy5pdGVtc107XG4gIH1cbiAgZ2V0Q29sdW1uU29ydFR5cGUoY29sdW1uOiBudW1iZXIpOiBTb3J0VHlwZSB8IG51bGwge1xuICAgIGlmICh0aGlzLl9jdXJyZW50U29ydENvbHVtbiA9PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U29ydFR5cGU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHByaXZhdGUgX2dlbmVyYXRlU29ydGVkUm93cyhqdXN0UmV2ZXJzZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoanVzdFJldmVyc2UpIHtcbiAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zLnJldmVyc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc29ydENvbHVtbkluZGV4ID0gdGhpcy5fY3VycmVudFNvcnRDb2x1bW47XG4gICAgaWYgKGlzTnVsbChzb3J0Q29sdW1uSW5kZXgpIHx8ICF0aGlzLl9jdXJyZW50U29ydFR5cGUpIHtcbiAgICAgIHRoaXMuX3NvcnRlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc29ydENvbHVtbiA9IHRoaXMuX2RhdGFDb2x1bW5zW3NvcnRDb2x1bW5JbmRleF07XG4gICAgaWYgKCFzb3J0Q29sdW1uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFbmNvdW50ZXJlZCBhbiBpc3N1ZSBpbiA8YXJkLXRhYmxlPjogY291bGQgbm90IGZpbmQgdGhlIGNvbHVtbiB3aXRoIGluZGV4ICR7c29ydENvbHVtbkluZGV4fS4gVGhpcyBpcyBtb3N0IGxpa2VseSBhbiBBcmRpdW0gYnVnLCBwbGVhc2UgcmVwb3J0IGl0IG9uIEdpdEh1Yi5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuX2N1cnJlbnRTb3J0VHlwZSA9PSBTb3J0VHlwZS5Bc2NlbmRpbmcgPyAxIDogLTE7XG4gICAgY29uc3Qgc29ydEZuID1cbiAgICAgIHNvcnRDb2x1bW4uc29ydEZuID8/XG4gICAgICAoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gZGlyZWN0aW9uO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMSAqIGRpcmVjdGlvbjtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3NvcnRlZEl0ZW1zID0gWy4uLnRoaXMuaXRlbXNdLnNvcnQoKGEsIGIpID0+IHNvcnRGbihhLmRhdGFbc29ydENvbHVtbkluZGV4XSwgYi5kYXRhW3NvcnRDb2x1bW5JbmRleF0pKTtcbiAgfVxufVxuIl19
|
|
@@ -146,7 +146,7 @@ export class ArdiumTableComponent extends _FocusableComponentBase {
|
|
|
146
146
|
this._page = coerceNumberProperty(v);
|
|
147
147
|
}
|
|
148
148
|
get isDefinedTotalItems() {
|
|
149
|
-
return (
|
|
149
|
+
return (this.paginationStrategy == TablePaginationStrategy.Noop && isDefined(this.totalItems)) || this.paginationStrategy != TablePaginationStrategy.Noop;
|
|
150
150
|
}
|
|
151
151
|
get canDisplayPagination() {
|
|
152
152
|
//prettier-ignore
|
|
@@ -465,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
465
465
|
type: Output,
|
|
466
466
|
args: ['unselectRow']
|
|
467
467
|
}] } });
|
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQXdCLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RSxPQUFPLEVBQTJCLGdCQUFnQixFQUF3QixNQUFNLHNCQUFzQixDQUFDO0FBQ3ZHLE9BQU8sRUFDSCxtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLDBDQUEwQyxFQUMxQyw0QkFBNEIsR0FDL0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBRUgsY0FBYyxFQUNkLGVBQWUsRUFNZix1QkFBdUIsRUFFdkIsWUFBWSxHQUVmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7O0FBUzNDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7SUFQakU7O1FBUXFCLGlCQUFZLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxhQUFRLEdBQUc7WUFDaEIsZUFBZSxFQUFFLFVBQVU7WUFDM0IsV0FBVyxFQUFFLE1BQU07U0FDdEIsQ0FBQztRQUtNLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQVNwQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQVNoQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQWN6QyxjQUFjO1FBQ0wsZUFBVSxHQUFvQixlQUFlLENBQUMsTUFBTSxDQUFDO1FBQ3JELFlBQU8sR0FBaUIsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxVQUFLLEdBQW1CLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDL0MsVUFBSyxHQUFtQixjQUFjLENBQUMsVUFBVSxDQUFDO1FBQ2xELGdCQUFXLEdBQW1CLGNBQWMsQ0FBQyxVQUFVLENBQUM7UUFFekQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVMxQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBU3hCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBd0J2QyxjQUFjO1FBQ04sZUFBVSxHQUFZLEtBQUssQ0FBQztRQVMzQix1QkFBa0IsR0FBNEIsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1FBRTNFLHNCQUFpQixHQUFrRCxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFaEYsb0JBQWUsR0FBbUIsY0FBYyxDQUFDLElBQUksQ0FBQztRQUN0RCxvQkFBZSxHQUFvQixlQUFlLENBQUMsS0FBSyxDQUFDO1FBQ3pELHFCQUFnQixHQUFXLGlCQUFpQixDQUFDO1FBQzdDLHlCQUFvQixHQUF5QixDQUFDLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUMxRyxPQUFPLEdBQUcsaUJBQWlCLE1BQU0sZ0JBQWdCLE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDekUsQ0FBQyxDQUFDO1FBRU0sdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBU3BDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQVNyQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFTdEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFRekIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRCxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBUWhCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBeUMxQyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBVWxCLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQW1CMUMsbUJBQWMsR0FBd0MsRUFBRSxDQUFDO1FBb0huQyw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3ZELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDdkQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3pDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7S0F1RHZFO0lBdFlHLElBQ0ksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLGlCQUFpQixDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFHRCxJQUNJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLENBQU07UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBR0QsSUFDSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxDQUFNO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQWVELElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsQ0FBTTtRQUNkLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUdELElBQ0ksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsQ0FBTTtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdELElBQ0ksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsQ0FBTTtRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPO1lBQ0gsa0JBQWtCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkMsZUFBZSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzdCLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN6QixhQUFhLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDekIsb0JBQW9CLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzVDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFJRCxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLENBQU07UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBY0QsSUFDSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksaUJBQWlCLENBQUMsQ0FBTTtRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUdELElBQ0ksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLGtCQUFrQixDQUFDLENBQU07UUFDekIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFHRCxJQUNJLG1CQUFtQjtRQUNuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxDQUFNO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBR0QsSUFDSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxDQUFNO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUlELElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBTTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUdELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQ3JKLENBQUM7SUFDTixDQUFDO0lBQ0QsSUFBSSxvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDdEQsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixNQUFNLEtBQUssR0FBa0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFFOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLElBQ0ksT0FBTyxDQUFDLENBQXVDO1FBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUNJLElBQUksQ0FBQyxDQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxJQUNJLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxDQUFNO1FBQzlCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBZ0JELGtCQUFrQjtRQUNkLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQyxDQUFDO2dCQUM5RSxTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQXFEO1FBQ25FLElBQUksT0FBTyxHQUFHLElBQUksUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELHNCQUFzQjtRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksZUFBZSxDQUFDLE1BQU07WUFBRSxPQUFPLG9CQUFvQixDQUFDLFlBQVksQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUErQjtRQUMzQyxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUMzQiwrQkFBK0I7UUFDL0IsSUFBSSxHQUFHLFlBQVksV0FBVztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQzNDLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsa0RBQWtELEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuRixPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUNELHFCQUFxQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFlBQVksQ0FBQyxJQUFzQztRQUMvQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sNkJBQTZCLENBQUM7UUFDakUsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekYsT0FBTyxDQUFDLFNBQVMsS0FBSyxJQUFJLE9BQU8sRUFBRSxFQUFFLGFBQWEsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsZUFBZSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBYSxFQUFFLEtBQWlCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQWlCO1FBQzVCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQWEsRUFBRSxLQUFpQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxlQUFlLENBQUMsS0FBYSxFQUFFLEtBQWlCO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkI7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEtBQWE7UUFDM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDSCxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNEOztPQUVHO0lBQ0gscUJBQXFCO1FBQ2pCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUU7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDSCxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ08sV0FBVztRQUNmLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELGNBQWMsQ0FBQyxJQUFTO1FBQ3BCLE9BQU8sT0FBTyxJQUFJLElBQUksUUFBUSxJQUFJLGNBQWMsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQztJQUNoRixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsSUFBZ0I7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzdDLElBQUksT0FBTyxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN6RCxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztJQUNsRCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsSUFBZ0I7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzdDLE9BQU8sUUFBUSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQVdELGdCQUFnQixDQUFDLElBQXNDLEVBQUUsS0FBYTtRQUNsRSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDaEQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDdEIsT0FBTztnQkFDSCxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUN0QixDQUFDO1FBQ04sT0FBTztZQUNILFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSztZQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7WUFDcEQsYUFBYSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztZQUNsRixrQkFBa0IsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUM3QixDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFDRCx3QkFBd0I7UUFDcEIsSUFBSSxLQUFLLEdBQWtCLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFO1lBQ3JDLEtBQUssR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUU7Z0JBQ2xDLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO2FBQ2xDO1NBQ0o7UUFDRCxPQUFPO1lBQ0gsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSztZQUNMLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakMsQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsS0FBYTtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBRSxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ3hDLE9BQU87WUFDSCxTQUFTLEVBQUUsUUFBUTtZQUNuQixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7OEdBalpRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHd4Q0EyTmYsb0NBQW9DLDJCQUFVLFdBQVcsc0VBRXpELDBDQUEwQywyQkFDOUMsV0FBVywrREFHUCxtQ0FBbUMsMkJBQVUsV0FBVyxtREFJckQsNEJBQTRCLG9EQ3RSakQscWhUQTZLUTs7MkZENUhLLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBVXRDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFJRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBVUYsYUFBYTtzQkFEaEIsS0FBSztnQkFVRixjQUFjO3NCQURqQixLQUFLO2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQTBCRixTQUFTO3NCQURaLEtBQUs7Z0JBUUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQU1GLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFVRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBVUYsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVVGLFlBQVk7c0JBRGYsS0FBSztnQkFPSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBSUgsSUFBSTtzQkFEUCxLQUFLO2dCQU9JLFVBQVU7c0JBQW5CLE1BQU07Z0JBc0NILE9BQU87c0JBRFYsS0FBSztnQkFNRixJQUFJO3NCQURQLEtBQUs7Z0JBV0YsdUJBQXVCO3NCQUQxQixLQUFLO2dCQVVOLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLG9DQUFvQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFLekUsc0JBQXNCO3NCQUhyQixZQUFZO3VCQUFDLDBDQUEwQyxFQUFFO3dCQUN0RCxJQUFJLEVBQUUsV0FBVztxQkFDcEI7Z0JBR0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLG1DQUFtQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFLeEUsZ0JBQWdCO3NCQURmLGVBQWU7dUJBQUMsNEJBQTRCO2dCQW1IZix1QkFBdUI7c0JBQXBELE1BQU07dUJBQUMsb0JBQW9CO2dCQUNELG9CQUFvQjtzQkFBOUMsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBQ0osY0FBYztzQkFBbEMsTUFBTTt1QkFBQyxXQUFXO2dCQUNJLGdCQUFnQjtzQkFBdEMsTUFBTTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICdzaW1wbGUtYm9vbCc7XG5pbXBvcnQgeyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb2N1c2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94U3RhdGUgfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC50eXBlcyc7XG5pbXBvcnQgeyBDdXJyZW50SXRlbXNGb3JtYXRGbiwgUGFnaW5hdGlvbkFsaWduIH0gZnJvbSAnLi4vdGFibGUtcGFnaW5hdGlvbi90YWJsZS1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IENvbXBvbmVudENvbG9yLCBTaW1wbGVDb21wb25lbnRDb2xvciB9IGZyb20gJy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XG5pbXBvcnQgeyBBcmRUYWJsZVJvdywgSGVhZGVyQ2VsbCwgVGFibGVJdGVtU3RvcmFnZSwgVGFibGVJdGVtU3RvcmFnZUhvc3QgfSBmcm9tICcuL3RhYmxlLWl0ZW0tc3RvcmFnZSc7XG5pbXBvcnQge1xuICAgIEFyZGl1bVRhYmxlQ2FwdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZGl1bVRhYmxlQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRpdW1UYWJsZUhlYWRlckNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQXJkaXVtVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi90YWJsZS5kaXJlY3RpdmVzJztcbmltcG9ydCB7XG4gICAgU29ydFR5cGUsXG4gICAgVGFibGVBbGlnblR5cGUsXG4gICAgVGFibGVBcHBlYXJhbmNlLFxuICAgIFRhYmxlQ2FwdGlvbkNvbnRleHQsXG4gICAgVGFibGVDaGVja2JveENvbnRleHQsXG4gICAgVGFibGVEYXRhQ29sdW1uLFxuICAgIFRhYmxlSGVhZGVyQ2hlY2tib3hDb250ZXh0LFxuICAgIFRhYmxlSGVhZGVyQ29udGV4dCxcbiAgICBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSxcbiAgICBUYWJsZVN1YmhlYWRlcixcbiAgICBUYWJsZVZhcmlhbnQsXG4gICAgVGFibGVTdWJoZWFkZXJDb250ZXh0LFxufSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IGlzVGFibGVTdWJoZWFkZXIgfSBmcm9tICcuL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcmQtdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJsZUNvbXBvbmVudCBleHRlbmRzIF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIGltcGxlbWVudHMgVGFibGVJdGVtU3RvcmFnZUhvc3QsIEFmdGVyQ29udGVudEluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1TdG9yYWdlID0gbmV3IFRhYmxlSXRlbVN0b3JhZ2UodGhpcyk7XG5cbiAgICByZWFkb25seSBERUZBVUxUUyA9IHtcbiAgICAgICAgcm93RGlzYWJsZWRGcm9tOiAnZGlzYWJsZWQnLFxuICAgICAgICByb3dCb2xkRnJvbTogJ2JvbGQnLFxuICAgIH07XG5cbiAgICBASW5wdXQoKSByb3dEaXNhYmxlZEZyb20/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcm93Qm9sZEZyb20/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9pbnZlcnRSb3dEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGludmVydFJvd0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52ZXJ0Um93RGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBpbnZlcnRSb3dEaXNhYmxlZCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5faW52ZXJ0Um93RGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW52ZXJ0Um93Qm9sZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGludmVydFJvd0JvbGQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZlcnRSb3dCb2xkO1xuICAgIH1cbiAgICBzZXQgaW52ZXJ0Um93Qm9sZCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5faW52ZXJ0Um93Qm9sZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RhYmxlUm93czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNlbGVjdGFibGVSb3dzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZVJvd3M7XG4gICAgfVxuICAgIHNldCBzZWxlY3RhYmxlUm93cyh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0YWJsZVJvd3MgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY2FwdGlvbj86IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlzTG9hZGluZz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgbG9hZGluZ1Byb2dyZXNzPzogbnVtYmVyOyAvL1RPRE8gYWRkIHByb2dyZXNzIGJhclxuXG4gICAgLy8hIGFwcGVhcmFuY2VcbiAgICBASW5wdXQoKSBhcHBlYXJhbmNlOiBUYWJsZUFwcGVhcmFuY2UgPSBUYWJsZUFwcGVhcmFuY2UuU3Ryb25nO1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6IFRhYmxlVmFyaWFudCA9IFRhYmxlVmFyaWFudC5Sb3VuZGVkO1xuICAgIEBJbnB1dCgpIGNvbG9yOiBDb21wb25lbnRDb2xvciA9IENvbXBvbmVudENvbG9yLlByaW1hcnk7XG4gICAgQElucHV0KCkgYWxpZ246IFRhYmxlQWxpZ25UeXBlID0gVGFibGVBbGlnblR5cGUuQ2VudGVyTGVmdDtcbiAgICBASW5wdXQoKSBoZWFkZXJBbGlnbjogVGFibGVBbGlnblR5cGUgPSBUYWJsZUFsaWduVHlwZS5DZW50ZXJMZWZ0O1xuXG4gICAgcHJpdmF0ZSBfY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYWN0O1xuICAgIH1cbiAgICBzZXQgY29tcGFjdCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fY29tcGFjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF96ZWJyYTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHplYnJhKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5femVicmE7XG4gICAgfVxuICAgIHNldCB6ZWJyYSh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5femVicmEgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RpY2t5SGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc3RpY2t5SGVhZGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RpY2t5SGVhZGVyO1xuICAgIH1cbiAgICBzZXQgc3RpY2t5SGVhZGVyKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9zdGlja3lIZWFkZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgZ2V0IG5nQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlfWAsXG4gICAgICAgICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnR9YCxcbiAgICAgICAgICAgIGBhcmQtY29sb3ItJHt0aGlzLmNvbG9yfWAsXG4gICAgICAgICAgICBgYXJkLWFsaWduLSR7dGhpcy5hbGlnbn1gLFxuICAgICAgICAgICAgYGFyZC1oZWFkZXItYWxpZ24tJHt0aGlzLmhlYWRlckFsaWdufWAsXG4gICAgICAgICAgICB0aGlzLmNvbXBhY3QgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgICAgICAgICB0aGlzLnplYnJhID8gJ2FyZC16ZWJyYS10YWJsZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZVJvd3MgPyAnYXJkLXNlbGVjdGFibGUtcm93cycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5SGVhZGVyID8gJ2FyZC1zdGlja3ktaGVhZGVyJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPyAnYXJkLXRhYmxlLWxvYWRpbmcnIDogJycsXG4gICAgICAgIF0uam9pbignICcpO1xuICAgIH1cblxuICAgIC8vISBwYWdpbmF0aW9uXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcGFnaW5hdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnaW5hdGVkO1xuICAgIH1cbiAgICBzZXQgcGFnaW5hdGVkKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9wYWdpbmF0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcGFnaW5hdGlvblN0cmF0ZWd5OiBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSA9IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3A7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0aW9uT3B0aW9uczogbnVtYmVyW10gfCB7IHZhbHVlOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdID0gWzEwLCAyNSwgNTBdO1xuICAgIEBJbnB1dCgpIHRvdGFsSXRlbXM/OiBudW1iZXI7XG4gICAgQElucHV0KCkgcGFnaW5hdGlvbkNvbG9yOiBDb21wb25lbnRDb2xvciA9IENvbXBvbmVudENvbG9yLk5vbmU7XG4gICAgQElucHV0KCkgcGFnaW5hdGlvbkFsaWduOiBQYWdpbmF0aW9uQWxpZ24gPSBQYWdpbmF0aW9uQWxpZ24uU3BsaXQ7XG4gICAgQElucHV0KCkgaXRlbXNQZXJQYWdlVGV4dDogc3RyaW5nID0gJ0l0ZW1zIHBlciBwYWdlOic7XG4gICAgQElucHV0KCkgY3VycmVudEl0ZW1zRm9ybWF0Rm46IEN1cnJlbnRJdGVtc0Zvcm1hdEZuID0gKHsgY3VycmVudEl0ZW1zRmlyc3QsIGN1cnJlbnRJdGVtc0xhc3QsIHRvdGFsSXRlbXMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gYCR7Y3VycmVudEl0ZW1zRmlyc3R9IOKAkyAke2N1cnJlbnRJdGVtc0xhc3R9IG9mICR7dG90YWxJdGVtc31gO1xuICAgIH07XG5cbiAgICBwcml2YXRlIF9wYWdlRmlsbFJlbWFpbmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHBhZ2VGaWxsUmVtYWluaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZUZpbGxSZW1haW5pbmc7XG4gICAgfVxuICAgIHNldCBwYWdlRmlsbFJlbWFpbmluZyh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcGFnZUZpbGxSZW1haW5pbmcgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcGFnaW5hdGlvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnaW5hdGlvbkRpc2FibGVkO1xuICAgIH1cbiAgICBzZXQgcGFnaW5hdGlvbkRpc2FibGVkKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uRGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXNlRmlyc3RMYXN0QnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHVzZUZpcnN0TGFzdEJ1dHRvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VGaXJzdExhc3RCdXR0b25zO1xuICAgIH1cbiAgICBzZXQgdXNlRmlyc3RMYXN0QnV0dG9ucyh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fdXNlRmlyc3RMYXN0QnV0dG9ucyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2U6IG51bWJlciA9IDUwO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlO1xuICAgIH1cbiAgICBzZXQgaXRlbXNQZXJQYWdlKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2UgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2KTtcbiAgICB9XG4gICAgQE91dHB1dCgpIGl0ZW1zUGVyUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgcHJpdmF0ZSBfcGFnZTogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBwYWdlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cbiAgICBzZXQgcGFnZSh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcGFnZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHYpO1xuICAgIH1cbiAgICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgZ2V0IGlzRGVmaW5lZFRvdGFsSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5wYWdpbmF0aW9uU3RyYXRlZ3kgPT0gVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3kuTm9vcCAmJiBpc0RlZmluZWQodGhpcy50b3RhbEl0ZW1zKSkgfHwgdGhpcy5wYWdpbmF0aW9uU3RyYXRlZ3kgIT0gVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3kuTm9vcFxuICAgICAgICApO1xuICAgIH1cbiAgICBnZXQgY2FuRGlzcGxheVBhZ2luYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIC8vcHJldHRpZXItaWdub3JlXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlZCAmJiB0aGlzLmlzRGVmaW5lZFRvdGFsSXRlbXM7XG4gICAgfVxuXG4gICAgLy8hIGl0ZW0gc3RvcmFnZSBnZXR0ZXJzXG4gICAgZ2V0IGhlYWRlckNlbGxzKCk6IEhlYWRlckNlbGxbXVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1TdG9yYWdlLmhlYWRlckNlbGxzO1xuICAgIH1cbiAgICBnZXQgZGF0YVJvd3MoKTogQXJkVGFibGVSb3dbXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBBcmRUYWJsZVJvd1tdID0gdGhpcy5faXRlbVN0b3JhZ2UucGFnaW5hdGVkSXRlbXM7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBhZ2VGaWxsUmVtYWluaW5nKSByZXR1cm4gaXRlbXM7XG4gICAgICAgIGlmICghdGhpcy5pc0RlZmluZWRUb3RhbEl0ZW1zKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJzxhcmQtdGFibGU+IHJlcXVpcmVzIFt0b3RhbEl0ZW1zXSB0byBiZSBkZWZpbmVkLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhZ2UgPT0gMSkgcmV0dXJuIGl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoOyBpIDwgdGhpcy5pdGVtc1BlclBhZ2U7IGkrKykge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaXRlbURhdGE6IG51bGwsXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICAgICAgZGF0YUNvbHVtbnM6IFtdLFxuICAgICAgICAgICAgICAgIGlzRW1wdHk6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLy8hIGNvbHVtbnMvZGF0YSBzZXR0ZXJzXG4gICAgQElucHV0KClcbiAgICBzZXQgY29sdW1ucyh2OiAoVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpW10pIHtcbiAgICAgICAgdGhpcy5faXRlbVN0b3JhZ2Uuc2V0Q29sdW1ucyh2KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZGF0YTogYW55W10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhKHY6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSB2O1xuICAgICAgICB0aGlzLl9pdGVtU3RvcmFnZS5zZXRJdGVtcyh2KTtcbiAgICB9XG4gICAgZ2V0IGRhdGEoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90cmVhdERhdGFTb3VyY2VBc1N0cmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRyZWF0RGF0YVNvdXJjZUFzU3RyaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJlYXREYXRhU291cmNlQXNTdHJpbmc7XG4gICAgfVxuICAgIHNldCB0cmVhdERhdGFTb3VyY2VBc1N0cmluZyh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fdHJlYXREYXRhU291cmNlQXNTdHJpbmcgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgLy8hIHRlbXBsYXRlc1xuICAgIEBDb250ZW50Q2hpbGQoQXJkaXVtVGFibGVDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgY2hlY2tib3hUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRhYmxlQ2hlY2tib3hDb250ZXh0PjtcbiAgICBAQ29udGVudENoaWxkKEFyZGl1bVRhYmxlSGVhZGVyQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSwge1xuICAgICAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICB9KVxuICAgIGhlYWRlckNoZWNrYm94VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUYWJsZUhlYWRlckNoZWNrYm94Q29udGV4dD47XG4gICAgQENvbnRlbnRDaGlsZChBcmRpdW1UYWJsZUNhcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIGNhcHRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRhYmxlQ2FwdGlvbkNvbnRleHQ+O1xuXG4gICAgcHJpdmF0ZSBfaXRlbVRlbXBsYXRlczogeyBba2V5OiBzdHJpbmddOiBUZW1wbGF0ZVJlZjxhbnk+IH0gPSB7fTtcbiAgICBAQ29udGVudENoaWxkcmVuKEFyZGl1bVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgdGVtcGxhdGVDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxBcmRpdW1UYWJsZVRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVzID0gQXJyYXkuZnJvbSh0aGlzLnRlbXBsYXRlQ2hpbGRyZW4pO1xuICAgICAgICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIHRlbXBsYXRlcykge1xuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoJ1thcmQtdGFibGUtdG1wXSByZXF1aXJlcyBhIHZhbHVlIHRvIGJlIHNwZWNpZmllZC4nKSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pdGVtVGVtcGxhdGVzW2luc3RhbmNlLm5hbWVdID0gaW5zdGFuY2UudGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRIZWFkZXJUZW1wbGF0ZSh0bXA6IHN0cmluZyB8IHsgdGVtcGxhdGU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfSk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIHRtcCA9PSAnc3RyaW5nJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFRlbXBsYXRlKHRtcC50ZW1wbGF0ZSk7XG4gICAgfVxuICAgIGdldEhlYWRlckNoZWNrYm94Q29sb3IoKTogU2ltcGxlQ29tcG9uZW50Q29sb3Ige1xuICAgICAgICBpZiAodGhpcy5hcHBlYXJhbmNlID09IFRhYmxlQXBwZWFyYW5jZS5TdHJvbmcpIHJldHVybiBTaW1wbGVDb21wb25lbnRDb2xvci5DdXJyZW50Q29sb3I7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICAgIH1cbiAgICBnZXRDZWxsVGVtcGxhdGUodG1wPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pik6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICAvL3JldHVybiB1bmRlZmluZWRcbiAgICAgICAgaWYgKCF0bXApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vcmV0dXJuIHRlbXBsYXRlLCBpZiBpdCBpcyBvbmVcbiAgICAgICAgaWYgKHRtcCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSByZXR1cm4gdG1wO1xuICAgICAgICAvL2NoZWNrIGlmIHRoZSBuYW1lIGNhbiBiZSBmb3VuZFxuICAgICAgICBpZiAoISh0bXAgaW4gdGhpcy5faXRlbVRlbXBsYXRlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobmV3IEVycm9yKGA8YXJkLXRhYmxlPiBlcnJvcjogY2Fubm90IGZpbmQgdGVtcGxhdGUgbmFtZWQgXCIke3RtcH1cImApKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy9yZXR1cm4gdGhlIHRlbXBsYXRlXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtVGVtcGxhdGVzW3RtcF07XG4gICAgfVxuICAgIGdldENlbGxTdHlsZShjZWxsOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKGNlbGwpKSByZXR1cm4gJ3dpZHRoOnVuc2V0O21pbi13aWR0aDp1bnNldCc7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdHlwZW9mIGNlbGwud2lkdGggPT0gJ251bWJlcicgPyBgJHtjZWxsLndpZHRofXB4YCA6IGNlbGwud2lkdGg7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoID0gdHlwZW9mIGNlbGwubWluV2lkdGggPT0gJ251bWJlcicgPyBgJHtjZWxsLm1pbldpZHRofXB4YCA6IGNlbGwubWluV2lkdGg7XG4gICAgICAgIHJldHVybiBbYHdpZHRoOiR7d2lkdGggPz8gJ3Vuc2V0J31gLCBgbWluLXdpZHRoOiR7bWluV2lkdGggPz8gJ3Vuc2V0J31gXS5qb2luKCc7Jyk7XG4gICAgfVxuXG4gICAgLy8hIGNsaWNrICYgaG92ZXIgaGFuZGxlcnNcbiAgICBvbkNoZWNrYm94Q2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZVJvd1NlbGVjdGVkKGluZGV4KTtcbiAgICB9XG4gICAgb25Sb3dDbGljayhpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZVJvd3MpIHJldHVybjtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudG9nZ2xlUm93U2VsZWN0ZWQoaW5kZXgpO1xuICAgIH1cbiAgICBvblJvd01vdXNlT3ZlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgb25Sb3dNb3VzZUVudGVyKGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RhYmxlUm93cykgcmV0dXJuO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5faXRlbVN0b3JhZ2UuaGlnaGxpZ2h0U2luZ2xlSXRlbShpbmRleCk7XG4gICAgfVxuICAgIG9uUm93TW91c2VMZWF2ZShpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZVJvd3MpIHJldHVybjtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnVuaGlnaGxpZ2h0SXRlbShpbmRleCk7XG4gICAgfVxuXG4gICAgLy8hIHNlbGVjdCBoYW5kbGVyc1xuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBhIHJvdyBpbiB0aGUgdGFibGUuXG4gICAgICogQHBhcmFtIHNlbGVjdGVkIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIGlmIHRoZSByb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLlxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIHJvdyBpbiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgdG9nZ2xlUm93U2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXRlbVN0b3JhZ2UuaXNJdGVtU2VsZWN0ZWQoaW5kZXgpKSB7XG4gICAgICAgICAgICBjb25zdCB1bnNlbGVjdGVkID0gdGhpcy5faXRlbVN0b3JhZ2UudW5zZWxlY3RJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RSb3dFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgW3NlbGVjdGVkLCBmYWlsZWRdID0gdGhpcy5faXRlbVN0b3JhZ2Uuc2VsZWN0SXRlbShpbmRleCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFJvd0V2ZW50LmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy5mYWlsZWRTZWxlY3RSb3dFdmVudC5lbWl0KGZhaWxlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdFNlbGVjdCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYWxsIHJvd3MgaW4gdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIHRvZ2dsZUFsbFJvd3NTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1TdG9yYWdlLmFyZUFsbFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB1bnNlbGVjdGVkID0gdGhpcy5faXRlbVN0b3JhZ2UudW5zZWxlY3RBbGwoKTtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RSb3dFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgW3NlbGVjdGVkLCBmYWlsZWRdID0gdGhpcy5faXRlbVN0b3JhZ2Uuc2VsZWN0QWxsKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFJvd0V2ZW50LmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy5mYWlsZWRTZWxlY3RSb3dFdmVudC5lbWl0KGZhaWxlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdFNlbGVjdCgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9lbWl0U2VsZWN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5faXRlbVN0b3JhZ2UudmFsdWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlRXZlbnQuZW1pdCh2KTtcbiAgICB9XG4gICAgaXNDZWxsQ2hlY2tib3goY2VsbDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgY2VsbCA9PSAnb2JqZWN0JyAmJiAnX2FyZENoZWNrYm94JyBpbiBjZWxsICYmICdpbmRleCcgaW4gY2VsbDtcbiAgICB9XG4gICAgaXNIZWFkZXJDZWxsQ2hlY2tib3goY2VsbDogSGVhZGVyQ2VsbCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRhQ2VsbCA9IGNlbGwuY2VsbDtcbiAgICAgICAgaWYgKGlzVGFibGVTdWJoZWFkZXIoZGF0YUNlbGwpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YUNlbGwuZGF0YVNvdXJjZSA9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gZGF0YUNlbGwuZGF0YVNvdXJjZS50eXBlID09ICdjaGVja2JveCc7XG4gICAgfVxuICAgIGlzSGVhZGVyQ2VsbFNvcnRhYmxlKGNlbGw6IEhlYWRlckNlbGwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF0YUNlbGwgPSBjZWxsLmNlbGw7XG4gICAgICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKGRhdGFDZWxsKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gZGF0YUNlbGwuc29ydGFibGUgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgQE91dHB1dCgnc2VsZWN0ZWRSb3dzQ2hhbmdlJykgc2VsZWN0ZWRSb3dzQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICAgIEBPdXRwdXQoJ2ZhaWxlZFNlbGVjdFJvdycpIGZhaWxlZFNlbGVjdFJvd0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgICBAT3V0cHV0KCdzZWxlY3RSb3cnKSBzZWxlY3RSb3dFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gICAgQE91dHB1dCgndW5zZWxlY3RSb3cnKSB1bnNlbGVjdFJvd0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8vISBjb250ZXh0c1xuICAgIGdldEhlYWRlckNvbnRleHQoY2VsbDogVGFibGVEYXRhQ29sdW1uLCBpbmRleDogbnVtYmVyKTogVGFibGVIZWFkZXJDb250ZXh0IHwgbnVsbDtcbiAgICBnZXRIZWFkZXJDb250ZXh0KGNlbGw6IFRhYmxlU3ViaGVhZGVyLCBpbmRleDogbnVtYmVyKTogVGFibGVTdWJoZWFkZXJDb250ZXh0IHwgbnVsbDtcbiAgICBnZXRIZWFkZXJDb250ZXh0KGNlbGw6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyLCBpbmRleDogbnVtYmVyKTogVGFibGVIZWFkZXJDb250ZXh0IHwgVGFibGVTdWJoZWFkZXJDb250ZXh0IHwgbnVsbDtcbiAgICBnZXRIZWFkZXJDb250ZXh0KGNlbGw6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyLCBpbmRleDogbnVtYmVyKTogVGFibGVIZWFkZXJDb250ZXh0IHwgVGFibGVTdWJoZWFkZXJDb250ZXh0IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY2VsbC5oZWFkZXIgIT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoaXNUYWJsZVN1YmhlYWRlcihjZWxsKSlcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjZWxsLmhlYWRlcixcbiAgICAgICAgICAgICAgICBoZWFkZXI6IGNlbGwuaGVhZGVyLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogY2VsbC5oZWFkZXIsXG4gICAgICAgICAgICBoZWFkZXI6IGNlbGwuaGVhZGVyLFxuICAgICAgICAgICAgc29ydGFibGU6IGNlbGwuc29ydGFibGUgPz8gZmFsc2UsXG4gICAgICAgICAgICBzb3J0VHlwZTogdGhpcy5faXRlbVN0b3JhZ2UuZ2V0Q29sdW1uU29ydFR5cGUoaW5kZXgpLFxuICAgICAgICAgICAgb25UcmlnZ2VyU29ydDogKGV2ZW50PzogRXZlbnQpID0+IHRoaXMuX2l0ZW1TdG9yYWdlLnRvZ2dsZUN1cnJlbnRTb3J0Q29sdW1uKGluZGV4KSxcbiAgICAgICAgICAgIG9uVHJpZ2dlclJlc2V0U29ydDogKGV2ZW50PzogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pdGVtU3RvcmFnZS5yZXNldFNvcnQoKTtcbiAgICAgICAgICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRIZWFkZXJDaGVja2JveENvbnRleHQoKTogVGFibGVIZWFkZXJDaGVja2JveENvbnRleHQge1xuICAgICAgICBsZXQgc3RhdGU6IENoZWNrYm94U3RhdGUgPSBDaGVja2JveFN0YXRlLlVuc2VsZWN0ZWQ7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtU3RvcmFnZS5pc0FueUl0ZW1TZWxlY3RlZCkge1xuICAgICAgICAgICAgc3RhdGUgPSBDaGVja2JveFN0YXRlLkluZGV0ZXJtaW5hdGU7XG4gICAgICAgICAgICBpZiAodGhpcy5faXRlbVN0b3JhZ2UuYXJlQWxsU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IENoZWNrYm94U3RhdGUuU2VsZWN0ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogc3RhdGUsXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldENoZWNrYm94Q29udGV4dChpbmRleDogbnVtYmVyKTogVGFibGVDaGVja2JveENvbnRleHQge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5faXRlbVN0b3JhZ2UuaXRlbXMuZmluZCh2ID0+IHYuaW5kZXggPT0gaW5kZXgpITtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpdGVtLnNlbGVjdGVkID8/IGZhbHNlO1xuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHNlbGVjdGVkLFxuICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2xpY2soaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJhcmQtdGFibGVcIiBbbmdDbGFzc109XCJuZ0NsYXNzZXNcIj5cclxuICAgIDxjYXB0aW9uXHJcbiAgICAgICAgKm5nSWY9XCJjYXB0aW9uXCJcclxuICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fY2FwdGlvblwiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9fY2FwdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2FwdGlvblRlbXBsYXRlIGxldC1jYXB0aW9uVGV4dD5cclxuICAgICAgICAgICAgICAgIHt7IGNhcHRpb25UZXh0IH19XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FwdGlvblRlbXBsYXRlID8/IGRlZmF1bHRDYXB0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjYXB0aW9uIH1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9jYXB0aW9uPlxyXG4gICAgPHRoZWFkIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXJcIj5cclxuICAgICAgICA8dHIgY2xhc3M9XCJhcmQtdGFibGVfX2hlYWRlci1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGhlYWRlckNlbGxzXCI+XHJcbiAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNlbGwgb2Ygcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2VsbC5jZWxsLmNlbGxDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19jaGVja2JveC1jZWxsXT1cImlzSGVhZGVyQ2VsbENoZWNrYm94KGNlbGwpXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuXCJcclxuICAgICAgICAgICAgICAgIFtzY29wZV09XCJjZWxsLmNvbHNwYW4gPiAxID8gJ2NvbGdyb3VwJyA6ICdjb2wnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19jZWxsLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9fc29ydGFibGVdPVwiaXNIZWFkZXJDZWxsU29ydGFibGUoY2VsbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjZWxsLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWluV2lkdGhdPVwiY2VsbC5taW5XaWR0aFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSGVhZGVyQ2VsbENoZWNrYm94KGNlbGwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlckNoZWNrYm94VGVtcGxhdGUgbGV0LXN0YXRlIGxldC1vbkNoYW5nZT1cIm9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJkLWNoZWNrYm94IFt0YWJJbmRleF09XCJpc0xvYWRpbmcgPyAtMSA6IHRhYkluZGV4XCIgW3N0YXRlXT1cInN0YXRlXCIgW2NvbG9yXT1cImdldEhlYWRlckNoZWNrYm94Q29sb3IoKVwiIHVuc2VsZWN0ZWRDb2xvcj1cImN1cnJlbnRDb2xvclwiIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyQ2hlY2tib3hUZW1wbGF0ZSA/PyBkZWZhdWx0SGVhZGVyQ2hlY2tib3hUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0SGVhZGVyQ2hlY2tib3hDb250ZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNIZWFkZXJDZWxsQ2hlY2tib3goY2VsbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZGVmYXVsdEhlYWRlckNlbGxUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LWNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1zb3J0YWJsZT1cInNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1zb3J0VHlwZT1cInNvcnRUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1vblRyaWdnZXJTb3J0PVwib25UcmlnZ2VyU29ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtb25UcmlnZ2VyUmVzZXRTb3J0PVwib25UcmlnZ2VyUmVzZXRTb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItdGVtcGxhdGUtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXNvcnRhYmxlXT1cInNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLW5vbnNvcnRhYmxlXT1cIiFzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNvbnRlbnQtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRyaWdnZXJTb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5Fc2MpPVwib25UcmlnZ2VyUmVzZXRTb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNvbnRlbnRcIj57eyBjb250ZW50IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtdGFibGVfX2hlYWRlci1zb3J0LWljb25cIiAqbmdJZj1cInNvcnRUeXBlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmQtaWNvbiAqbmdJZj1cInNvcnRUeXBlID09ICdhc2NlbmRpbmcnXCI+c291dGg8L2FyZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFyZC1pY29uICpuZ0lmPVwic29ydFR5cGUgPT0gJ2Rlc2NlbmRpbmcnXCI+bm9ydGg8L2FyZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItY29udGVudC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItY29udGVudFwiPnt7IGNvbnRlbnQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRIZWFkZXJUZW1wbGF0ZShjZWxsLmNlbGwuaGVhZGVyKSA/PyBkZWZhdWx0SGVhZGVyQ2VsbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRIZWFkZXJDb250ZXh0KGNlbGwuY2VsbCwgaW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5IGNsYXNzPVwiYXJkLXRhYmxlX19ib2R5XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFSb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwicm93LmlzRW1wdHlcIiBjbGFzcz1cImFyZC10YWJsZV9fZW1wdHktcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhcmQtdGFibGVfX2VtcHR5LWNlbGxcIiBjb2xzcGFuPVwiOTk5OVwiPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmlzRW1wdHlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX2JvZHktcm93XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX3NlbGVjdGVkLXJvd109XCJyb3cuc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9faGlnaGxpZ2h0ZWQtcm93XT1cInJvdy5oaWdobGlnaHRlZFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19kaXNhYmxlZC1yb3ddPVwicm93LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX2JvbGQtcm93XT1cInJvdy5ib2xkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvd0luZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd01vdXNlRW50ZXIocm93SW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dNb3VzZUxlYXZlKHJvd0luZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiByb3cuZGF0YTsgbGV0IGNlbGxJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsVG1wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fY2VsbC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImdldENlbGxTdHlsZShyb3cuZGF0YUNvbHVtbnNbY2VsbEluZGV4XSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDZWxsQ2hlY2tib3goY2VsbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGVja2JveFRlbXBsYXRlIGxldC1pc0NoZWNrZWQgbGV0LW9uQ2hhbmdlPVwib25DaGFuZ2VcIiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJkLWNoZWNrYm94IFt0YWJJbmRleF09XCJpc0xvYWRpbmcgPyAtMSA6IHRhYkluZGV4XCIgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiIFtjb2xvcl09XCJjb2xvclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFRlbXBsYXRlID8/IGRlZmF1bHRDaGVja2JveFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImdldENoZWNrYm94Q29udGV4dChyb3dJbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNDZWxsQ2hlY2tib3goY2VsbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsVGVtcGxhdGUgbGV0LWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbnRlbnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q2VsbFRlbXBsYXRlKHJvdy5kYXRhQ29sdW1uc1tjZWxsSW5kZXhdLnRlbXBsYXRlKSA/PyBkZWZhdWx0Q2VsbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjZWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmRhdGFDb2x1bW5zW2NlbGxJbmRleF0uaXNSb3dIZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fYm9keS1jZWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LmRhdGFDb2x1bW5zW2NlbGxJbmRleF0uY2VsbENsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9fY2hlY2tib3gtY2VsbF09XCJpc0NlbGxDaGVja2JveChjZWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VsbFRtcFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YUNvbHVtbnNbY2VsbEluZGV4XS5pc1Jvd0hlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19ib2R5LWNlbGwgYXJkLXRhYmxlX19yb3ctaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3cuZGF0YUNvbHVtbnNbY2VsbEluZGV4XS5jZWxsQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19jaGVja2JveC1jZWxsXT1cImlzQ2VsbENoZWNrYm94KGNlbGwpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjZWxsVG1wXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG4gICAgPHRmb290IGNsYXNzPVwiYXJkLXRhYmxlX19mb290XCIgKm5nSWY9XCJjYW5EaXNwbGF5UGFnaW5hdGlvblwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cImFyZC10YWJsZV9fZm9vdC1yb3dcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJkLXRhYmxlX19wYWdpbmF0aW9uLWNlbGxcIiBjb2xzcGFuPVwiOTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgPGFyZC10YWJsZS1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicGFnaW5hdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsocGFnZSldPVwicGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb25EaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhpdGVtc1BlclBhZ2UpXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInBhZ2luYXRpb25BbGlnblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc1BlclBhZ2VUZXh0XT1cIml0ZW1zUGVyUGFnZVRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SXRlbXNGb3JtYXRGbl09XCJjdXJyZW50SXRlbXNGb3JtYXRGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJpdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJwYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9hcmQtdGFibGUtcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90Zm9vdD5cclxuPC90YWJsZT4iXX0=
|
|
468
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQXdCLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RSxPQUFPLEVBQTJCLGdCQUFnQixFQUF3QixNQUFNLHNCQUFzQixDQUFDO0FBQ3ZHLE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLDBDQUEwQyxFQUMxQyw0QkFBNEIsR0FDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBRUwsY0FBYyxFQUNkLGVBQWUsRUFNZix1QkFBdUIsRUFFdkIsWUFBWSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7O0FBUzNDLE1BQU0sT0FBTyxv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QWtCO3NCQUEzQixNQUFNO2dCQUlILElBQUk7c0JBRFAsS0FBSztnQkFPSSxVQUFVO3NCQUFuQixNQUFNO2dCQW9DSCxPQUFPO3NCQURWLEtBQUs7Z0JBTUYsSUFBSTtzQkFEUCxLQUFLO2dCQVdGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFVTixnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxvQ0FBb0MsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBS3pFLHNCQUFzQjtzQkFIckIsWUFBWTt1QkFBQywwQ0FBMEMsRUFBRTt3QkFDeEQsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQUdELGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxtQ0FBbUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBS3hFLGdCQUFnQjtzQkFEZixlQUFlO3VCQUFDLDRCQUE0QjtnQkFtSGYsdUJBQXVCO3NCQUFwRCxNQUFNO3VCQUFDLG9CQUFvQjtnQkFDRCxvQkFBb0I7c0JBQTlDLE1BQU07dUJBQUMsaUJBQWlCO2dCQUNKLGNBQWM7c0JBQWxDLE1BQU07dUJBQUMsV0FBVztnQkFDSSxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICdzaW1wbGUtYm9vbCc7XG5pbXBvcnQgeyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb2N1c2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94U3RhdGUgfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC50eXBlcyc7XG5pbXBvcnQgeyBDdXJyZW50SXRlbXNGb3JtYXRGbiwgUGFnaW5hdGlvbkFsaWduIH0gZnJvbSAnLi4vdGFibGUtcGFnaW5hdGlvbi90YWJsZS1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IENvbXBvbmVudENvbG9yLCBTaW1wbGVDb21wb25lbnRDb2xvciB9IGZyb20gJy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XG5pbXBvcnQgeyBBcmRUYWJsZVJvdywgSGVhZGVyQ2VsbCwgVGFibGVJdGVtU3RvcmFnZSwgVGFibGVJdGVtU3RvcmFnZUhvc3QgfSBmcm9tICcuL3RhYmxlLWl0ZW0tc3RvcmFnZSc7XG5pbXBvcnQge1xuICBBcmRpdW1UYWJsZUNhcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgQXJkaXVtVGFibGVDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlLFxuICBBcmRpdW1UYWJsZUhlYWRlckNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZGl1bVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlcyc7XG5pbXBvcnQge1xuICBTb3J0VHlwZSxcbiAgVGFibGVBbGlnblR5cGUsXG4gIFRhYmxlQXBwZWFyYW5jZSxcbiAgVGFibGVDYXB0aW9uQ29udGV4dCxcbiAgVGFibGVDaGVja2JveENvbnRleHQsXG4gIFRhYmxlRGF0YUNvbHVtbixcbiAgVGFibGVIZWFkZXJDaGVja2JveENvbnRleHQsXG4gIFRhYmxlSGVhZGVyQ29udGV4dCxcbiAgVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3ksXG4gIFRhYmxlU3ViaGVhZGVyLFxuICBUYWJsZVZhcmlhbnQsXG4gIFRhYmxlU3ViaGVhZGVyQ29udGV4dCxcbn0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBpc1RhYmxlU3ViaGVhZGVyIH0gZnJvbSAnLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJsZUNvbXBvbmVudCBleHRlbmRzIF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIGltcGxlbWVudHMgVGFibGVJdGVtU3RvcmFnZUhvc3QsIEFmdGVyQ29udGVudEluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtU3RvcmFnZSA9IG5ldyBUYWJsZUl0ZW1TdG9yYWdlKHRoaXMpO1xuXG4gIHJlYWRvbmx5IERFRkFVTFRTID0ge1xuICAgIHJvd0Rpc2FibGVkRnJvbTogJ2Rpc2FibGVkJyxcbiAgICByb3dCb2xkRnJvbTogJ2JvbGQnLFxuICB9O1xuXG4gIEBJbnB1dCgpIHJvd0Rpc2FibGVkRnJvbT86IHN0cmluZztcbiAgQElucHV0KCkgcm93Qm9sZEZyb20/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfaW52ZXJ0Um93RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IGludmVydFJvd0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZlcnRSb3dEaXNhYmxlZDtcbiAgfVxuICBzZXQgaW52ZXJ0Um93RGlzYWJsZWQodjogYW55KSB7XG4gICAgdGhpcy5faW52ZXJ0Um93RGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBwcml2YXRlIF9pbnZlcnRSb3dCb2xkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCBpbnZlcnRSb3dCb2xkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZlcnRSb3dCb2xkO1xuICB9XG4gIHNldCBpbnZlcnRSb3dCb2xkKHY6IGFueSkge1xuICAgIHRoaXMuX2ludmVydFJvd0JvbGQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RhYmxlUm93czogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0YWJsZVJvd3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGFibGVSb3dzO1xuICB9XG4gIHNldCBzZWxlY3RhYmxlUm93cyh2OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RhYmxlUm93cyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNhcHRpb24/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbG9hZGluZ1Byb2dyZXNzPzogbnVtYmVyOyAvL1RPRE8gYWRkIHByb2dyZXNzIGJhclxuXG4gIC8vISBhcHBlYXJhbmNlXG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IFRhYmxlQXBwZWFyYW5jZSA9IFRhYmxlQXBwZWFyYW5jZS5TdHJvbmc7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFRhYmxlVmFyaWFudCA9IFRhYmxlVmFyaWFudC5Sb3VuZGVkO1xuICBASW5wdXQoKSBjb2xvcjogQ29tcG9uZW50Q29sb3IgPSBDb21wb25lbnRDb2xvci5QcmltYXJ5O1xuICBASW5wdXQoKSBhbGlnbjogVGFibGVBbGlnblR5cGUgPSBUYWJsZUFsaWduVHlwZS5DZW50ZXJMZWZ0O1xuICBASW5wdXQoKSBoZWFkZXJBbGlnbjogVGFibGVBbGlnblR5cGUgPSBUYWJsZUFsaWduVHlwZS5DZW50ZXJMZWZ0O1xuXG4gIHByaXZhdGUgX2NvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IGNvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhY3Q7XG4gIH1cbiAgc2V0IGNvbXBhY3QodjogYW55KSB7XG4gICAgdGhpcy5fY29tcGFjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgfVxuXG4gIHByaXZhdGUgX3plYnJhOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCB6ZWJyYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5femVicmE7XG4gIH1cbiAgc2V0IHplYnJhKHY6IGFueSkge1xuICAgIHRoaXMuX3plYnJhID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RpY2t5SGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCBzdGlja3lIZWFkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0aWNreUhlYWRlcjtcbiAgfVxuICBzZXQgc3RpY2t5SGVhZGVyKHY6IGFueSkge1xuICAgIHRoaXMuX3N0aWNreUhlYWRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgfVxuXG4gIGdldCBuZ0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlfWAsXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnR9YCxcbiAgICAgIGBhcmQtY29sb3ItJHt0aGlzLmNvbG9yfWAsXG4gICAgICBgYXJkLWFsaWduLSR7dGhpcy5hbGlnbn1gLFxuICAgICAgYGFyZC1oZWFkZXItYWxpZ24tJHt0aGlzLmhlYWRlckFsaWdufWAsXG4gICAgICB0aGlzLmNvbXBhY3QgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgICB0aGlzLnplYnJhID8gJ2FyZC16ZWJyYS10YWJsZScgOiAnJyxcbiAgICAgIHRoaXMuc2VsZWN0YWJsZVJvd3MgPyAnYXJkLXNlbGVjdGFibGUtcm93cycgOiAnJyxcbiAgICAgIHRoaXMuc3RpY2t5SGVhZGVyID8gJ2FyZC1zdGlja3ktaGVhZGVyJyA6ICcnLFxuICAgICAgdGhpcy5pc0xvYWRpbmcgPyAnYXJkLXRhYmxlLWxvYWRpbmcnIDogJycsXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxuICAvLyEgcGFnaW5hdGlvblxuICBwcml2YXRlIF9wYWdpbmF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2luYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnaW5hdGVkO1xuICB9XG4gIHNldCBwYWdpbmF0ZWQodjogYW55KSB7XG4gICAgdGhpcy5fcGFnaW5hdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgQElucHV0KCkgcGFnaW5hdGlvblN0cmF0ZWd5OiBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSA9IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3A7XG5cbiAgQElucHV0KCkgcGFnaW5hdGlvbk9wdGlvbnM6IG51bWJlcltdIHwgeyB2YWx1ZTogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXSA9IFsxMCwgMjUsIDUwXTtcbiAgQElucHV0KCkgdG90YWxJdGVtcz86IG51bWJlcjtcbiAgQElucHV0KCkgcGFnaW5hdGlvbkNvbG9yOiBDb21wb25lbnRDb2xvciA9IENvbXBvbmVudENvbG9yLk5vbmU7XG4gIEBJbnB1dCgpIHBhZ2luYXRpb25BbGlnbjogUGFnaW5hdGlvbkFsaWduID0gUGFnaW5hdGlvbkFsaWduLlNwbGl0O1xuICBASW5wdXQoKSBpdGVtc1BlclBhZ2VUZXh0OiBzdHJpbmcgPSAnSXRlbXMgcGVyIHBhZ2U6JztcbiAgQElucHV0KCkgY3VycmVudEl0ZW1zRm9ybWF0Rm46IEN1cnJlbnRJdGVtc0Zvcm1hdEZuID0gKHsgY3VycmVudEl0ZW1zRmlyc3QsIGN1cnJlbnRJdGVtc0xhc3QsIHRvdGFsSXRlbXMgfSkgPT4ge1xuICAgIHJldHVybiBgJHtjdXJyZW50SXRlbXNGaXJzdH0g4oCTICR7Y3VycmVudEl0ZW1zTGFzdH0gb2YgJHt0b3RhbEl0ZW1zfWA7XG4gIH07XG5cbiAgcHJpdmF0ZSBfcGFnZUZpbGxSZW1haW5pbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2VGaWxsUmVtYWluaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wYWdlRmlsbFJlbWFpbmluZztcbiAgfVxuICBzZXQgcGFnZUZpbGxSZW1haW5pbmcodjogYW55KSB7XG4gICAgdGhpcy5fcGFnZUZpbGxSZW1haW5pbmcgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBwcml2YXRlIF9wYWdpbmF0aW9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2luYXRpb25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnaW5hdGlvbkRpc2FibGVkO1xuICB9XG4gIHNldCBwYWdpbmF0aW9uRGlzYWJsZWQodjogYW55KSB7XG4gICAgdGhpcy5fcGFnaW5hdGlvbkRpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXNlRmlyc3RMYXN0QnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBnZXQgdXNlRmlyc3RMYXN0QnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlRmlyc3RMYXN0QnV0dG9ucztcbiAgfVxuICBzZXQgdXNlRmlyc3RMYXN0QnV0dG9ucyh2OiBhbnkpIHtcbiAgICB0aGlzLl91c2VGaXJzdExhc3RCdXR0b25zID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXRlbXNQZXJQYWdlOiBudW1iZXIgPSA1MDtcbiAgQElucHV0KClcbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2U7XG4gIH1cbiAgc2V0IGl0ZW1zUGVyUGFnZSh2OiBhbnkpIHtcbiAgICB0aGlzLl9pdGVtc1BlclBhZ2UgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2KTtcbiAgfVxuICBAT3V0cHV0KCkgaXRlbXNQZXJQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBfcGFnZTogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgfVxuICBzZXQgcGFnZSh2OiBhbnkpIHtcbiAgICB0aGlzLl9wYWdlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodik7XG4gIH1cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBnZXQgaXNEZWZpbmVkVG90YWxJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMucGFnaW5hdGlvblN0cmF0ZWd5ID09IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3AgJiYgaXNEZWZpbmVkKHRoaXMudG90YWxJdGVtcykpIHx8IHRoaXMucGFnaW5hdGlvblN0cmF0ZWd5ICE9IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3A7XG4gIH1cbiAgZ2V0IGNhbkRpc3BsYXlQYWdpbmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIC8vcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGVkICYmIHRoaXMuaXNEZWZpbmVkVG90YWxJdGVtcztcbiAgfVxuXG4gIC8vISBpdGVtIHN0b3JhZ2UgZ2V0dGVyc1xuICBnZXQgaGVhZGVyQ2VsbHMoKTogSGVhZGVyQ2VsbFtdW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtU3RvcmFnZS5oZWFkZXJDZWxscztcbiAgfVxuICBnZXQgZGF0YVJvd3MoKTogQXJkVGFibGVSb3dbXSB7XG4gICAgY29uc3QgaXRlbXM6IEFyZFRhYmxlUm93W10gPSB0aGlzLl9pdGVtU3RvcmFnZS5wYWdpbmF0ZWRJdGVtcztcblxuICAgIGlmICghdGhpcy5wYWdlRmlsbFJlbWFpbmluZykgcmV0dXJuIGl0ZW1zO1xuICAgIGlmICghdGhpcy5pc0RlZmluZWRUb3RhbEl0ZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJzxhcmQtdGFibGU+IHJlcXVpcmVzIFt0b3RhbEl0ZW1zXSB0byBiZSBkZWZpbmVkLicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYWdlID09IDEpIHJldHVybiBpdGVtcztcbiAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoOyBpIDwgdGhpcy5pdGVtc1BlclBhZ2U7IGkrKykge1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGl0ZW1EYXRhOiBudWxsLFxuICAgICAgICBpbmRleDogaSxcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIGRhdGFDb2x1bW5zOiBbXSxcbiAgICAgICAgaXNFbXB0eTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICAvLyEgY29sdW1ucy9kYXRhIHNldHRlcnNcbiAgQElucHV0KClcbiAgc2V0IGNvbHVtbnModjogKFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKVtdKSB7XG4gICAgdGhpcy5faXRlbVN0b3JhZ2Uuc2V0Q29sdW1ucyh2KTtcbiAgfVxuICBwcml2YXRlIF9kYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKVxuICBzZXQgZGF0YSh2OiBhbnlbXSkge1xuICAgIHRoaXMuX2RhdGEgPSB2O1xuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnNldEl0ZW1zKHYpO1xuICB9XG4gIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyZWF0RGF0YVNvdXJjZUFzU3RyaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCB0cmVhdERhdGFTb3VyY2VBc1N0cmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdHJlYXREYXRhU291cmNlQXNTdHJpbmc7XG4gIH1cbiAgc2V0IHRyZWF0RGF0YVNvdXJjZUFzU3RyaW5nKHY6IGFueSkge1xuICAgIHRoaXMuX3RyZWF0RGF0YVNvdXJjZUFzU3RyaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgLy8hIHRlbXBsYXRlc1xuICBAQ29udGVudENoaWxkKEFyZGl1bVRhYmxlQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjaGVja2JveFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VGFibGVDaGVja2JveENvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKEFyZGl1bVRhYmxlSGVhZGVyQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBoZWFkZXJDaGVja2JveFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VGFibGVIZWFkZXJDaGVja2JveENvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKEFyZGl1bVRhYmxlQ2FwdGlvblRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGNhcHRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRhYmxlQ2FwdGlvbkNvbnRleHQ+O1xuXG4gIHByaXZhdGUgX2l0ZW1UZW1wbGF0ZXM6IHsgW2tleTogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PiB9ID0ge307XG4gIEBDb250ZW50Q2hpbGRyZW4oQXJkaXVtVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgdGVtcGxhdGVDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxBcmRpdW1UYWJsZVRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdGVtcGxhdGVzID0gQXJyYXkuZnJvbSh0aGlzLnRlbXBsYXRlQ2hpbGRyZW4pO1xuICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgdGVtcGxhdGVzKSB7XG4gICAgICBpZiAoIWluc3RhbmNlLm5hbWUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoJ1thcmQtdGFibGUtdG1wXSByZXF1aXJlcyBhIHZhbHVlIHRvIGJlIHNwZWNpZmllZC4nKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5faXRlbVRlbXBsYXRlc1tpbnN0YW5jZS5uYW1lXSA9IGluc3RhbmNlLnRlbXBsYXRlO1xuICAgIH1cbiAgfVxuXG4gIGdldEhlYWRlclRlbXBsYXRlKHRtcDogc3RyaW5nIHwgeyB0ZW1wbGF0ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB9KTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiB0bXAgPT0gJ3N0cmluZycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFRlbXBsYXRlKHRtcC50ZW1wbGF0ZSk7XG4gIH1cbiAgZ2V0SGVhZGVyQ2hlY2tib3hDb2xvcigpOiBTaW1wbGVDb21wb25lbnRDb2xvciB7XG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSA9PSBUYWJsZUFwcGVhcmFuY2UuU3Ryb25nKSByZXR1cm4gU2ltcGxlQ29tcG9uZW50Q29sb3IuQ3VycmVudENvbG9yO1xuICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICB9XG4gIGdldENlbGxUZW1wbGF0ZSh0bXA/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgLy9yZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKCF0bXApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgLy9yZXR1cm4gdGVtcGxhdGUsIGlmIGl0IGlzIG9uZVxuICAgIGlmICh0bXAgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikgcmV0dXJuIHRtcDtcbiAgICAvL2NoZWNrIGlmIHRoZSBuYW1lIGNhbiBiZSBmb3VuZFxuICAgIGlmICghKHRtcCBpbiB0aGlzLl9pdGVtVGVtcGxhdGVzKSkge1xuICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoYDxhcmQtdGFibGU+IGVycm9yOiBjYW5ub3QgZmluZCB0ZW1wbGF0ZSBuYW1lZCBcIiR7dG1wfVwiYCkpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy9yZXR1cm4gdGhlIHRlbXBsYXRlXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1UZW1wbGF0ZXNbdG1wXTtcbiAgfVxuICBnZXRDZWxsU3R5bGUoY2VsbDogVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpOiBzdHJpbmcge1xuICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKGNlbGwpKSByZXR1cm4gJ3dpZHRoOnVuc2V0O21pbi13aWR0aDp1bnNldCc7XG4gICAgY29uc3Qgd2lkdGggPSB0eXBlb2YgY2VsbC53aWR0aCA9PSAnbnVtYmVyJyA/IGAke2NlbGwud2lkdGh9cHhgIDogY2VsbC53aWR0aDtcbiAgICBjb25zdCBtaW5XaWR0aCA9IHR5cGVvZiBjZWxsLm1pbldpZHRoID09ICdudW1iZXInID8gYCR7Y2VsbC5taW5XaWR0aH1weGAgOiBjZWxsLm1pbldpZHRoO1xuICAgIHJldHVybiBbYHdpZHRoOiR7d2lkdGggPz8gJ3Vuc2V0J31gLCBgbWluLXdpZHRoOiR7bWluV2lkdGggPz8gJ3Vuc2V0J31gXS5qb2luKCc7Jyk7XG4gIH1cblxuICAvLyEgY2xpY2sgJiBob3ZlciBoYW5kbGVyc1xuICBvbkNoZWNrYm94Q2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlUm93U2VsZWN0ZWQoaW5kZXgpO1xuICB9XG4gIG9uUm93Q2xpY2soaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZVJvd3MpIHJldHVybjtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRvZ2dsZVJvd1NlbGVjdGVkKGluZGV4KTtcbiAgfVxuICBvblJvd01vdXNlT3ZlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG4gIG9uUm93TW91c2VFbnRlcihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RhYmxlUm93cykgcmV0dXJuO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLmhpZ2hsaWdodFNpbmdsZUl0ZW0oaW5kZXgpO1xuICB9XG4gIG9uUm93TW91c2VMZWF2ZShpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RhYmxlUm93cykgcmV0dXJuO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnVuaGlnaGxpZ2h0SXRlbShpbmRleCk7XG4gIH1cblxuICAvLyEgc2VsZWN0IGhhbmRsZXJzXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYSByb3cgaW4gdGhlIHRhYmxlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHJvdyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXG4gICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIHJvdyBpbiB0aGUgdGFibGUuXG4gICAqL1xuICB0b2dnbGVSb3dTZWxlY3RlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2l0ZW1TdG9yYWdlLmlzSXRlbVNlbGVjdGVkKGluZGV4KSkge1xuICAgICAgY29uc3QgdW5zZWxlY3RlZCA9IHRoaXMuX2l0ZW1TdG9yYWdlLnVuc2VsZWN0SXRlbShpbmRleCk7XG4gICAgICB0aGlzLnVuc2VsZWN0Um93RXZlbnQuZW1pdCh1bnNlbGVjdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgW3NlbGVjdGVkLCBmYWlsZWRdID0gdGhpcy5faXRlbVN0b3JhZ2Uuc2VsZWN0SXRlbShpbmRleCk7XG4gICAgICB0aGlzLnNlbGVjdFJvd0V2ZW50LmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5mYWlsZWRTZWxlY3RSb3dFdmVudC5lbWl0KGZhaWxlZCk7XG4gICAgfVxuICAgIHRoaXMuX2VtaXRTZWxlY3QoKTtcbiAgfVxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGFsbCByb3dzIGluIHRoZSB0YWJsZS5cbiAgICovXG4gIHRvZ2dsZUFsbFJvd3NTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXRlbVN0b3JhZ2UuYXJlQWxsU2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IHVuc2VsZWN0ZWQgPSB0aGlzLl9pdGVtU3RvcmFnZS51bnNlbGVjdEFsbCgpO1xuICAgICAgdGhpcy51bnNlbGVjdFJvd0V2ZW50LmVtaXQodW5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtzZWxlY3RlZCwgZmFpbGVkXSA9IHRoaXMuX2l0ZW1TdG9yYWdlLnNlbGVjdEFsbCgpO1xuICAgICAgdGhpcy5zZWxlY3RSb3dFdmVudC5lbWl0KHNlbGVjdGVkKTtcbiAgICAgIHRoaXMuZmFpbGVkU2VsZWN0Um93RXZlbnQuZW1pdChmYWlsZWQpO1xuICAgIH1cbiAgICB0aGlzLl9lbWl0U2VsZWN0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfZW1pdFNlbGVjdCgpOiB2b2lkIHtcbiAgICBjb25zdCB2ID0gdGhpcy5faXRlbVN0b3JhZ2UudmFsdWU7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2VFdmVudC5lbWl0KHYpO1xuICB9XG4gIGlzQ2VsbENoZWNrYm94KGNlbGw6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgY2VsbCA9PSAnb2JqZWN0JyAmJiAnX2FyZENoZWNrYm94JyBpbiBjZWxsICYmICdpbmRleCcgaW4gY2VsbDtcbiAgfVxuICBpc0hlYWRlckNlbGxDaGVja2JveChjZWxsOiBIZWFkZXJDZWxsKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGF0YUNlbGwgPSBjZWxsLmNlbGw7XG4gICAgaWYgKGlzVGFibGVTdWJoZWFkZXIoZGF0YUNlbGwpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBkYXRhQ2VsbC5kYXRhU291cmNlID09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGRhdGFDZWxsLmRhdGFTb3VyY2UudHlwZSA9PSAnY2hlY2tib3gnO1xuICB9XG4gIGlzSGVhZGVyQ2VsbFNvcnRhYmxlKGNlbGw6IEhlYWRlckNlbGwpOiBib29sZWFuIHtcbiAgICBjb25zdCBkYXRhQ2VsbCA9IGNlbGwuY2VsbDtcbiAgICBpZiAoaXNUYWJsZVN1YmhlYWRlcihkYXRhQ2VsbCkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZGF0YUNlbGwuc29ydGFibGUgPz8gZmFsc2U7XG4gIH1cblxuICBAT3V0cHV0KCdzZWxlY3RlZFJvd3NDaGFuZ2UnKSBzZWxlY3RlZFJvd3NDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoJ2ZhaWxlZFNlbGVjdFJvdycpIGZhaWxlZFNlbGVjdFJvd0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgnc2VsZWN0Um93Jykgc2VsZWN0Um93RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCd1bnNlbGVjdFJvdycpIHVuc2VsZWN0Um93RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8vISBjb250ZXh0c1xuICBnZXRIZWFkZXJDb250ZXh0KGNlbGw6IFRhYmxlRGF0YUNvbHVtbiwgaW5kZXg6IG51bWJlcik6IFRhYmxlSGVhZGVyQ29udGV4dCB8IG51bGw7XG4gIGdldEhlYWRlckNvbnRleHQoY2VsbDogVGFibGVTdWJoZWFkZXIsIGluZGV4OiBudW1iZXIpOiBUYWJsZVN1YmhlYWRlckNvbnRleHQgfCBudWxsO1xuICBnZXRIZWFkZXJDb250ZXh0KGNlbGw6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyLCBpbmRleDogbnVtYmVyKTogVGFibGVIZWFkZXJDb250ZXh0IHwgVGFibGVTdWJoZWFkZXJDb250ZXh0IHwgbnVsbDtcbiAgZ2V0SGVhZGVyQ29udGV4dChjZWxsOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlciwgaW5kZXg6IG51bWJlcik6IFRhYmxlSGVhZGVyQ29udGV4dCB8IFRhYmxlU3ViaGVhZGVyQ29udGV4dCB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgY2VsbC5oZWFkZXIgIT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuICAgIGlmIChpc1RhYmxlU3ViaGVhZGVyKGNlbGwpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJGltcGxpY2l0OiBjZWxsLmhlYWRlcixcbiAgICAgICAgaGVhZGVyOiBjZWxsLmhlYWRlcixcbiAgICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogY2VsbC5oZWFkZXIsXG4gICAgICBoZWFkZXI6IGNlbGwuaGVhZGVyLFxuICAgICAgc29ydGFibGU6IGNlbGwuc29ydGFibGUgPz8gZmFsc2UsXG4gICAgICBzb3J0VHlwZTogdGhpcy5faXRlbVN0b3JhZ2UuZ2V0Q29sdW1uU29ydFR5cGUoaW5kZXgpLFxuICAgICAgb25UcmlnZ2VyU29ydDogKGV2ZW50PzogRXZlbnQpID0+IHRoaXMuX2l0ZW1TdG9yYWdlLnRvZ2dsZUN1cnJlbnRTb3J0Q29sdW1uKGluZGV4KSxcbiAgICAgIG9uVHJpZ2dlclJlc2V0U29ydDogKGV2ZW50PzogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5faXRlbVN0b3JhZ2UucmVzZXRTb3J0KCk7XG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgZ2V0SGVhZGVyQ2hlY2tib3hDb250ZXh0KCk6IFRhYmxlSGVhZGVyQ2hlY2tib3hDb250ZXh0IHtcbiAgICBsZXQgc3RhdGU6IENoZWNrYm94U3RhdGUgPSBDaGVja2JveFN0YXRlLlVuc2VsZWN0ZWQ7XG4gICAgaWYgKHRoaXMuX2l0ZW1TdG9yYWdlLmlzQW55SXRlbVNlbGVjdGVkKSB7XG4gICAgICBzdGF0ZSA9IENoZWNrYm94U3RhdGUuSW5kZXRlcm1pbmF0ZTtcbiAgICAgIGlmICh0aGlzLl9pdGVtU3RvcmFnZS5hcmVBbGxTZWxlY3RlZCkge1xuICAgICAgICBzdGF0ZSA9IENoZWNrYm94U3RhdGUuU2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IHN0YXRlLFxuICAgICAgc3RhdGUsXG4gICAgICBvbkNoYW5nZTogKCkgPT4ge1xuICAgICAgICB0aGlzLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCgpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGdldENoZWNrYm94Q29udGV4dChpbmRleDogbnVtYmVyKTogVGFibGVDaGVja2JveENvbnRleHQge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLl9pdGVtU3RvcmFnZS5pdGVtcy5maW5kKHYgPT4gdi5pbmRleCA9PSBpbmRleCkhO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbS5zZWxlY3RlZCA/PyBmYWxzZTtcbiAgICBjb25zdCBkaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogc2VsZWN0ZWQsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2xpY2soaW5kZXgpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJhcmQtdGFibGVcIiBbbmdDbGFzc109XCJuZ0NsYXNzZXNcIj5cclxuICAgIDxjYXB0aW9uXHJcbiAgICAgICAgKm5nSWY9XCJjYXB0aW9uXCJcclxuICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fY2FwdGlvblwiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9fY2FwdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2FwdGlvblRlbXBsYXRlIGxldC1jYXB0aW9uVGV4dD5cclxuICAgICAgICAgICAgICAgIHt7IGNhcHRpb25UZXh0IH19XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FwdGlvblRlbXBsYXRlID8/IGRlZmF1bHRDYXB0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjYXB0aW9uIH1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9jYXB0aW9uPlxyXG4gICAgPHRoZWFkIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXJcIj5cclxuICAgICAgICA8dHIgY2xhc3M9XCJhcmQtdGFibGVfX2hlYWRlci1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGhlYWRlckNlbGxzXCI+XHJcbiAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNlbGwgb2Ygcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2VsbC5jZWxsLmNlbGxDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19jaGVja2JveC1jZWxsXT1cImlzSGVhZGVyQ2VsbENoZWNrYm94KGNlbGwpXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuXCJcclxuICAgICAgICAgICAgICAgIFtzY29wZV09XCJjZWxsLmNvbHNwYW4gPiAxID8gJ2NvbGdyb3VwJyA6ICdjb2wnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19jZWxsLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9fc29ydGFibGVdPVwiaXNIZWFkZXJDZWxsU29ydGFibGUoY2VsbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjZWxsLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWluV2lkdGhdPVwiY2VsbC5taW5XaWR0aFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSGVhZGVyQ2VsbENoZWNrYm94KGNlbGwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlckNoZWNrYm94VGVtcGxhdGUgbGV0LXN0YXRlIGxldC1vbkNoYW5nZT1cIm9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJkLWNoZWNrYm94IFt0YWJJbmRleF09XCJpc0xvYWRpbmcgPyAtMSA6IHRhYkluZGV4XCIgW3N0YXRlXT1cInN0YXRlXCIgW2NvbG9yXT1cImdldEhlYWRlckNoZWNrYm94Q29sb3IoKVwiIHVuc2VsZWN0ZWRDb2xvcj1cImN1cnJlbnRDb2xvclwiIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyQ2hlY2tib3hUZW1wbGF0ZSA/PyBkZWZhdWx0SGVhZGVyQ2hlY2tib3hUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0SGVhZGVyQ2hlY2tib3hDb250ZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNIZWFkZXJDZWxsQ2hlY2tib3goY2VsbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZGVmYXVsdEhlYWRlckNlbGxUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LWNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1zb3J0YWJsZT1cInNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1zb3J0VHlwZT1cInNvcnRUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1vblRyaWdnZXJTb3J0PVwib25UcmlnZ2VyU29ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtb25UcmlnZ2VyUmVzZXRTb3J0PVwib25UcmlnZ2VyUmVzZXRTb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItdGVtcGxhdGUtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXNvcnRhYmxlXT1cInNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLW5vbnNvcnRhYmxlXT1cIiFzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNvbnRlbnQtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRyaWdnZXJTb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5Fc2MpPVwib25UcmlnZ2VyUmVzZXRTb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNvbnRlbnRcIj57eyBjb250ZW50IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtdGFibGVfX2hlYWRlci1zb3J0LWljb25cIiAqbmdJZj1cInNvcnRUeXBlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmQtaWNvbiAqbmdJZj1cInNvcnRUeXBlID09ICdhc2NlbmRpbmcnXCI+c291dGg8L2FyZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFyZC1pY29uICpuZ0lmPVwic29ydFR5cGUgPT0gJ2Rlc2NlbmRpbmcnXCI+bm9ydGg8L2FyZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItY29udGVudC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItY29udGVudFwiPnt7IGNvbnRlbnQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRIZWFkZXJUZW1wbGF0ZShjZWxsLmNlbGwuaGVhZGVyKSA/PyBkZWZhdWx0SGVhZGVyQ2VsbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRIZWFkZXJDb250ZXh0KGNlbGwuY2VsbCwgaW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5IGNsYXNzPVwiYXJkLXRhYmxlX19ib2R5XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFSb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwicm93LmlzRW1wdHlcIiBjbGFzcz1cImFyZC10YWJsZV9fZW1wdHktcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhcmQtdGFibGVfX2VtcHR5LWNlbGxcIiBjb2xzcGFuPVwiOTk5OVwiPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmlzRW1wdHlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX2JvZHktcm93XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX3NlbGVjdGVkLXJvd109XCJyb3cuc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9faGlnaGxpZ2h0ZWQtcm93XT1cInJvdy5oaWdobGlnaHRlZFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19kaXNhYmxlZC1yb3ddPVwicm93LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX2JvbGQtcm93XT1cInJvdy5ib2xkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvd0luZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd01vdXNlRW50ZXIocm93SW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dNb3VzZUxlYXZlKHJvd0luZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiByb3cuZGF0YTsgbGV0IGNlbGxJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsVG1wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fY2VsbC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImdldENlbGxTdHlsZShyb3cuZGF0YUNvbHVtbnNbY2VsbEluZGV4XSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDZWxsQ2hlY2tib3goY2VsbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGVja2JveFRlbXBsYXRlIGxldC1pc0NoZWNrZWQgbGV0LW9uQ2hhbmdlPVwib25DaGFuZ2VcIiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJkLWNoZWNrYm94IFt0YWJJbmRleF09XCJpc0xvYWRpbmcgPyAtMSA6IHRhYkluZGV4XCIgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiIFtjb2xvcl09XCJjb2xvclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFRlbXBsYXRlID8/IGRlZmF1bHRDaGVja2JveFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImdldENoZWNrYm94Q29udGV4dChyb3dJbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNDZWxsQ2hlY2tib3goY2VsbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsVGVtcGxhdGUgbGV0LWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbnRlbnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q2VsbFRlbXBsYXRlKHJvdy5kYXRhQ29sdW1uc1tjZWxsSW5kZXhdLnRlbXBsYXRlKSA/PyBkZWZhdWx0Q2VsbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjZWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmRhdGFDb2x1bW5zW2NlbGxJbmRleF0uaXNSb3dIZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fYm9keS1jZWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LmRhdGFDb2x1bW5zW2NlbGxJbmRleF0uY2VsbENsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9fY2hlY2tib3gtY2VsbF09XCJpc0NlbGxDaGVja2JveChjZWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VsbFRtcFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YUNvbHVtbnNbY2VsbEluZGV4XS5pc1Jvd0hlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19ib2R5LWNlbGwgYXJkLXRhYmxlX19yb3ctaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3cuZGF0YUNvbHVtbnNbY2VsbEluZGV4XS5jZWxsQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19jaGVja2JveC1jZWxsXT1cImlzQ2VsbENoZWNrYm94KGNlbGwpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjZWxsVG1wXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG4gICAgPHRmb290IGNsYXNzPVwiYXJkLXRhYmxlX19mb290XCIgKm5nSWY9XCJjYW5EaXNwbGF5UGFnaW5hdGlvblwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cImFyZC10YWJsZV9fZm9vdC1yb3dcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJkLXRhYmxlX19wYWdpbmF0aW9uLWNlbGxcIiBjb2xzcGFuPVwiOTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgPGFyZC10YWJsZS1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicGFnaW5hdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsocGFnZSldPVwicGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb25EaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhpdGVtc1BlclBhZ2UpXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInBhZ2luYXRpb25BbGlnblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc1BlclBhZ2VUZXh0XT1cIml0ZW1zUGVyUGFnZVRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SXRlbXNGb3JtYXRGbl09XCJjdXJyZW50SXRlbXNGb3JtYXRGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJpdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJwYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9hcmQtdGFibGUtcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90Zm9vdD5cclxuPC90YWJsZT4iXX0=
|
|
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
61
61
|
type: Directive,
|
|
62
62
|
args: [{ selector: 'ard-table > ng-template[ard-table-pagination-tmp]' }]
|
|
63
63
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdGFibGUvdGFibGUuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLDRCQUE0QjtJQUd2QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7OEdBSHRDLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHdDQUF3QyxFQUFFO2dGQUV2QyxJQUFJO3NCQUEzQixLQUFLO3VCQUFDLGVBQWU7O0FBTXhCLE1BQU0sT0FBTyxvQ0FBb0M7SUFDL0MsWUFBbUIsUUFBMkM7UUFBM0MsYUFBUSxHQUFSLFFBQVEsQ0FBbUM7SUFBRyxDQUFDOzhHQUR2RCxvQ0FBb0M7a0dBQXBDLG9DQUFvQzs7MkZBQXBDLG9DQUFvQztrQkFEaEQsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpREFBaUQsRUFBRTs7QUFRMUUsTUFBTSxPQUFPLDBDQUEwQztJQUNyRCxZQUFtQixRQUEyQztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFtQztJQUFHLENBQUM7OEdBRHZELDBDQUEwQztrR0FBMUMsMENBQTBDOzsyRkFBMUMsMENBQTBDO2tCQUh0RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3REFBd0Q7aUJBQ25FOztBQU1ELE1BQU0sT0FBTyxtQ0FBbUM7SUFDOUMsWUFBbUIsUUFBMEM7UUFBMUMsYUFBUSxHQUFSLFFBQVEsQ0FBa0M7SUFBRyxDQUFDOzhHQUR0RCxtQ0FBbUM7a0dBQW5DLG1DQUFtQzs7MkZBQW5DLG1DQUFtQztrQkFEL0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxnREFBZ0QsRUFBRTs7QUFLekUsZUFBZTtBQUVmLE1BQU0sT0FBTyxzQ0FBc0M7SUFDakQsWUFBbUIsUUFBd0M7UUFBeEMsYUFBUSxHQUFSLFFBQVEsQ0FBZ0M7SUFBRyxDQUFDOzhHQURwRCxzQ0FBc0M7a0dBQXRDLHNDQUFzQzs7MkZBQXRDLHNDQUFzQztrQkFEbEQsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxtREFBbUQsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZUNhcHRpb25Db250ZXh0LCBUYWJsZUNoZWNrYm94Q29udGV4dCB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRleHQgfSBmcm9tICcuLi9faW50ZXJuYWwvbW9kZWxzL3BhZ2luYXRpb24ubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdhcmQtdGFibGUgPiBuZy10ZW1wbGF0ZVthcmQtdGFibGUtdG1wXScgfSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJsZVRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgQElucHV0KCdhcmQtdGFibGUtdG1wJykgbmFtZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2FyZC10YWJsZSA+IG5nLXRlbXBsYXRlW2FyZC10YWJsZS1jaGVja2JveC10bXBdJyB9KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVRhYmxlQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8VGFibGVDaGVja2JveENvbnRleHQ+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhcmQtdGFibGUgPiBuZy10ZW1wbGF0ZVthcmQtdGFibGUtaGVhZGVyLWNoZWNrYm94LXRtcF0nLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJsZUhlYWRlckNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFRhYmxlQ2hlY2tib3hDb250ZXh0Pikge31cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnYXJkLXRhYmxlID4gbmctdGVtcGxhdGVbYXJkLXRhYmxlLWNhcHRpb24tdG1wXScgfSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJsZUNhcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8VGFibGVDYXB0aW9uQ29udGV4dD4pIHt9XG59XG5cbi8vISBwYWdpbmF0aW9uc1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnYXJkLXRhYmxlID4gbmctdGVtcGxhdGVbYXJkLXRhYmxlLXBhZ2luYXRpb24tdG1wXScgfSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1UYWJsZVBhZ2luYXRpb25UZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkNvbnRleHQ+KSB7fVxufVxuIl19
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
43
43
|
],
|
|
44
44
|
}]
|
|
45
45
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDMUYsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsMENBQTBDLEVBQzFDLHNDQUFzQyxFQUN0Qyw0QkFBNEIsR0FDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFxQnZELE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWpCMUIsb0JBQW9CO1lBQ3BCLDRCQUE0QjtZQUM1QixvQ0FBb0M7WUFDcEMsMENBQTBDO1lBQzFDLG1DQUFtQztZQUNuQyxzQ0FBc0MsYUFFOUIsWUFBWSxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLGdCQUFnQixhQUV6RixvQkFBb0I7WUFDcEIsNEJBQTRCO1lBQzVCLG9DQUFvQztZQUNwQywwQ0FBMEM7WUFDMUMsbUNBQW1DO1lBQ25DLHNDQUFzQzsrR0FHN0IsaUJBQWlCLFlBVmxCLFlBQVksRUFBRSxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0I7OzJGQVVoRixpQkFBaUI7a0JBbkI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLDRCQUE0Qjt3QkFDNUIsb0NBQW9DO3dCQUNwQywwQ0FBMEM7d0JBQzFDLG1DQUFtQzt3QkFDbkMsc0NBQXNDO3FCQUN2QztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQzVGLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLDRCQUE0Qjt3QkFDNUIsb0NBQW9DO3dCQUNwQywwQ0FBMEM7d0JBQzFDLG1DQUFtQzt3QkFDbkMsc0NBQXNDO3FCQUN2QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQXJkaXVtVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcmRpdW1DaGVja2JveE1vZHVsZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5pbXBvcnQgeyBBcmRpdW1UYWJsZVBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICcuLi90YWJsZS1wYWdpbmF0aW9uL3RhYmxlLXBhZ2luYXRpb24ubW9kdWxlJztcbmltcG9ydCB7XG4gIEFyZGl1bVRhYmxlQ2FwdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxuICBBcmRpdW1UYWJsZUNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZGl1bVRhYmxlSGVhZGVyQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgQXJkaXVtVGFibGVQYWdpbmF0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZGl1bVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBBcmRpdW1JY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFyZGl1bVRhYmxlQ29tcG9uZW50LFxuICAgIEFyZGl1bVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQXJkaXVtVGFibGVDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZGl1bVRhYmxlSGVhZGVyQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRpdW1UYWJsZUNhcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRpdW1UYWJsZVBhZ2luYXRpb25UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQXJkaXVtQ2hlY2tib3hNb2R1bGUsIEFyZGl1bVRhYmxlUGFnaW5hdGlvbk1vZHVsZSwgQXJkaXVtSWNvbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBBcmRpdW1UYWJsZUNvbXBvbmVudCxcbiAgICBBcmRpdW1UYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZGl1bVRhYmxlQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRpdW1UYWJsZUhlYWRlckNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQXJkaXVtVGFibGVDYXB0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQXJkaXVtVGFibGVQYWdpbmF0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVRhYmxlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -27,4 +27,4 @@ export const TableAlignType = {
|
|
|
27
27
|
BottomCenter: 'bottom-center',
|
|
28
28
|
BottomRight: 'bottom-right',
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBCQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsVUFBVSxFQUFFLFlBQVk7Q0FDaEIsQ0FBQztBQTZCWCxzQkFBc0I7QUFDdEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsU0FBUyxFQUFFLFdBQVc7Q0FDZCxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0NBQ04sQ0FBQztBQUdYLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87Q0FDTixDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFdBQVcsRUFBRSxjQUFjO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLi90eXBlcy9jb2xvcnMudHlwZXMnO1xuaW1wb3J0IHsgTm9uRW1wdHlBcnJheSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xuaW1wb3J0IHsgQ2hlY2tib3hTdGF0ZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LnR5cGVzJztcblxuZXhwb3J0IHR5cGUgRGF0YVNvdXJjZSA9IHN0cmluZyB8IHsgdHlwZTogJ2NoZWNrYm94JyB8ICdhdXRvY291bnQnIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgX0dlbmVyaWNDb2x1bW4ge1xuICBoZWFkZXI6IHN0cmluZyB8IHsgdGVtcGxhdGU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IH07XG4gIGNlbGxDbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZURhdGFDb2x1bW4gZXh0ZW5kcyBfR2VuZXJpY0NvbHVtbiB7XG4gIGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHRlbXBsYXRlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgc29ydEZuPzogKGNvbHVtbkFEYXRhOiBhbnksIGNvbHVtbkJEYXRhOiBhbnkpID0+IG51bWJlcjtcbiAgaGlnaGxpZ2h0PzogYm9vbGVhbiB8IENvbXBvbmVudENvbG9yO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgbWluV2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGlzUm93SGVhZGVyPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTdWJoZWFkZXIgZXh0ZW5kcyBfR2VuZXJpY0NvbHVtbiB7XG4gIGNoaWxkcmVuOiBOb25FbXB0eUFycmF5PFRhYmxlU3ViaGVhZGVyIHwgVGFibGVEYXRhQ29sdW1uPjtcbn1cblxuZXhwb3J0IGNvbnN0IFNvcnRUeXBlID0ge1xuICBBc2NlbmRpbmc6ICdhc2NlbmRpbmcnLFxuICBEZXNjZW5kaW5nOiAnZGVzY2VuZGluZycsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU29ydFR5cGUgPSAodHlwZW9mIFNvcnRUeXBlKVtrZXlvZiB0eXBlb2YgU29ydFR5cGVdO1xuXG4vLyEgY29udGV4dHNcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTdWJoZWFkZXJDb250ZXh0IHtcbiAgJGltcGxpY2l0OiBzdHJpbmc7XG4gIGhlYWRlcjogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlckNvbnRleHQgZXh0ZW5kcyBUYWJsZVN1YmhlYWRlckNvbnRleHQge1xuICBzb3J0YWJsZTogYm9vbGVhbjtcbiAgc29ydFR5cGU6IFNvcnRUeXBlIHwgbnVsbDtcbiAgb25UcmlnZ2VyU29ydDogKGV2ZW50PzogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgb25UcmlnZ2VyUmVzZXRTb3J0OiAoZXZlbnQ/OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNoZWNrYm94Q29udGV4dCB7XG4gICRpbXBsaWNpdDogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBvbkNoYW5nZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlckNoZWNrYm94Q29udGV4dCB7XG4gICRpbXBsaWNpdDogQ2hlY2tib3hTdGF0ZTtcbiAgc3RhdGU6IENoZWNrYm94U3RhdGU7XG4gIG9uQ2hhbmdlOiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNhcHRpb25Db250ZXh0IHtcbiAgJGltcGxpY2l0OiBzdHJpbmc7XG59XG5cbi8vISBhcHBlYXJhbmNlLXJlbGF0ZWRcbmV4cG9ydCBjb25zdCBUYWJsZUFwcGVhcmFuY2UgPSB7XG4gIFN0cm9uZzogJ3N0cm9uZycsXG4gIExpZ2h0OiAnbGlnaHQnLFxuICBDb2xvcmxlc3M6ICdjb2xvcmxlc3MnLFxufSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFRhYmxlQXBwZWFyYW5jZSA9ICh0eXBlb2YgVGFibGVBcHBlYXJhbmNlKVtrZXlvZiB0eXBlb2YgVGFibGVBcHBlYXJhbmNlXTtcblxuZXhwb3J0IGNvbnN0IFRhYmxlVmFyaWFudCA9IHtcbiAgUm91bmRlZDogJ3JvdW5kZWQnLFxuICBTaGFycDogJ3NoYXJwJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUYWJsZVZhcmlhbnQgPSAodHlwZW9mIFRhYmxlVmFyaWFudClba2V5b2YgdHlwZW9mIFRhYmxlVmFyaWFudF07XG5cbmV4cG9ydCBjb25zdCBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSA9IHtcbiAgTm9vcDogJ25vb3AnLFxuICBTbGljZTogJ3NsaWNlJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSA9ICh0eXBlb2YgVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3kpW2tleW9mIHR5cGVvZiBUYWJsZVBhZ2luYXRpb25TdHJhdGVneV07XG5cbmV4cG9ydCBjb25zdCBUYWJsZUFsaWduVHlwZSA9IHtcbiAgVG9wTGVmdDogJ3RvcC1sZWZ0JyxcbiAgVG9wQ2VudGVyOiAndG9wLWNlbnRlcicsXG4gIFRvcFJpZ2h0OiAndG9wLXJpZ2h0JyxcbiAgQ2VudGVyTGVmdDogJ2NlbnRlci1sZWZ0JyxcbiAgQ2VudGVyOiAnY2VudGVyLWNlbnRlcicsXG4gIENlbnRlclJpZ2h0OiAnY2VudGVyLXJpZ2h0JyxcbiAgQm90dG9tTGVmdDogJ2JvdHRvbS1sZWZ0JyxcbiAgQm90dG9tQ2VudGVyOiAnYm90dG9tLWNlbnRlcicsXG4gIEJvdHRvbVJpZ2h0OiAnYm90dG9tLXJpZ2h0Jyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUYWJsZUFsaWduVHlwZSA9ICh0eXBlb2YgVGFibGVBbGlnblR5cGUpW2tleW9mIHR5cGVvZiBUYWJsZUFsaWduVHlwZV07XG4iXX0=
|
|
@@ -15,4 +15,4 @@ export function merge2dArrays(destArr, arr) {
|
|
|
15
15
|
destArr[row] = [...destArr[row], ...arr[row]];
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxDQUFtQztJQUNsRSxPQUFPLFVBQVUsSUFBSSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUEwQztJQUMxRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUksT0FBYyxFQUFFLEdBQVU7SUFDekQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3pDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNsQjtLQUNGO0lBQ0QsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZURhdGFDb2x1bW4sIFRhYmxlU3ViaGVhZGVyIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RhYmxlU3ViaGVhZGVyKHY6IFRhYmxlRGF0YUNvbHVtbiB8IFRhYmxlU3ViaGVhZGVyKTogdiBpcyBUYWJsZVN1YmhlYWRlciB7XG4gIHJldHVybiAnY2hpbGRyZW4nIGluIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmVBbGxEYXRhQ29sdW1ucyhjb2xzOiAoVGFibGVEYXRhQ29sdW1uIHwgVGFibGVTdWJoZWFkZXIpW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvbHMuZXZlcnkoY29sID0+ICFpc1RhYmxlU3ViaGVhZGVyKGNvbCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UyZEFycmF5czxUPihkZXN0QXJyOiBUW11bXSwgYXJyOiBUW11bXSk6IHZvaWQge1xuICBjb25zdCBkaWZmID0gYXJyLmxlbmd0aCAtIGRlc3RBcnIubGVuZ3RoO1xuICBpZiAoZGlmZiA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmY7IGkrKykge1xuICAgICAgZGVzdEFyci5wdXNoKFtdKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgYXJyLmxlbmd0aDsgcm93KyspIHtcbiAgICBkZXN0QXJyW3Jvd10gPSBbLi4uZGVzdEFycltyb3ddLCAuLi5hcnJbcm93XV07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
61
61
|
}], data: [{
|
|
62
62
|
type: Input
|
|
63
63
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZnJvbS1jc3YuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS1mcm9tLWNzdi90YWJsZS1mcm9tLWNzdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlLWZyb20tY3N2L3RhYmxlLWZyb20tY3N2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7O0FBVS9HLE1BQU0sT0FBTywyQkFBMkI7SUFOeEM7UUFPVyxjQUFTLEdBQVcsR0FBRyxDQUFDO1FBRXpCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBY3JDLFlBQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ2hDLGFBQVEsR0FBVSxFQUFFLENBQUM7S0FvQ3RCO0lBbERDLElBQ0ksSUFBSSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUNqQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFHLENBQUMsQ0FBQztRQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFLRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDLENBQUM7U0FDckY7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQVc7UUFDN0IsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ08sb0JBQW9CLENBQUMsSUFBWTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixPQUFPO2dCQUNMLE1BQU07Z0JBQ04sVUFBVSxFQUFFLE1BQU07YUFDbkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNPLGtCQUFrQixDQUFDLEtBQWUsRUFBRSxPQUEwQjtRQUNwRSxNQUFNLFFBQVEsR0FBNkIsRUFBRSxDQUFDO1FBRTlDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTNDLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7WUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFvQixDQUFDO2dCQUMvQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN4QztZQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzhHQXJEVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw0R0NWeEMsb0hBSWE7OzJGRE1BLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBRWYsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFJRixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlRGF0YUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IE5vbkVtcHR5QXJyYXkgfSBmcm9tICcuLi90eXBlcy91dGlsaXR5LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLXRhYmxlLWZyb20tY3N2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWZyb20tY3N2LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVRhYmxlRnJvbUNzdkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoKSBzZXBhcmF0b3I6IHN0cmluZyA9ICcsJztcblxuICBwcml2YXRlIF9pc0RhdGFPa2F5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2lzRGF0YU9rYXkgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMuX2lzQ3N2VmFsaWQodikpIHJldHVybjtcbiAgICBjb25zdCBsaW5lcyA9IHYuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLl9jb252ZXJ0Q3N2VG9IZWFkZXJzKGxpbmVzLnNoaWZ0KCkhKTtcbiAgICBjb25zdCBkYXRhUm93cyA9IHRoaXMuX2NvbnZlcnRDc3ZUb0FycmF5KGxpbmVzLCBoZWFkZXJzKTtcblxuICAgIHRoaXMuX2lzRGF0YU9rYXkgPSB0cnVlO1xuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgdGhpcy5kYXRhUm93cyA9IGRhdGFSb3dzO1xuICB9XG5cbiAgaGVhZGVyczogVGFibGVEYXRhQ29sdW1uW10gPSBbXTtcbiAgZGF0YVJvd3M6IGFueVtdID0gW107XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNEYXRhT2theSkge1xuICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoJzxhcmQtdGFibGUtZnJvbS1jc3Y+IGVycm9yOiBtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGRhdGEnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNDc3ZWYWxpZChjc3Y6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjc3YubGVuZ3RoID4gMTtcbiAgfVxuICBwcml2YXRlIF9jb252ZXJ0Q3N2VG9IZWFkZXJzKGxpbmU6IHN0cmluZyk6IFRhYmxlRGF0YUNvbHVtbltdIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbGluZS5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgcmV0dXJuIGhlYWRlcnMubWFwKGhlYWRlciA9PiB7XG4gICAgICBoZWFkZXIgPSBoZWFkZXIudHJpbSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGVhZGVyLFxuICAgICAgICBkYXRhU291cmNlOiBoZWFkZXIsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgX2NvbnZlcnRDc3ZUb0FycmF5KGxpbmVzOiBzdHJpbmdbXSwgaGVhZGVyczogVGFibGVEYXRhQ29sdW1uW10pOiBhbnlbXSB7XG4gICAgY29uc3QgZGF0YVJvd3M6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBjb25zdCBsaW5lQXJyID0gbGluZS5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG5cbiAgICAgIGNvbnN0IG9iajogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGhlYWRlcnNbaV0uZGF0YVNvdXJjZSBhcyBzdHJpbmc7XG4gICAgICAgIG9ialtzb3VyY2VdID0gbGluZUFycltpXT8udHJpbSgpID8/ICcnO1xuICAgICAgfVxuICAgICAgZGF0YVJvd3MucHVzaChvYmopO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YVJvd3M7XG4gIH1cbn1cbiIsIjxhcmQtdGFibGVcclxuICAgIHRyZWF0RGF0YVNvdXJjZUFzU3RyaW5nXHJcbiAgICBbY29sdW1uc109XCJoZWFkZXJzXCJcclxuICAgIFtkYXRhXT1cImRhdGFSb3dzXCJcclxuPjwvYXJkLXRhYmxlPiJdfQ==
|