@ardium-ui/ui 2.4.0 → 3.0.0
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 +9 -6
- package/esm2022/lib/_internal/disablable-component.mjs +5 -4
- package/esm2022/lib/_internal/focusable-component.mjs +5 -2
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +30 -23
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +4 -5
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +7 -8
- package/esm2022/lib/_internal/models/pagination.model.mjs +3 -3
- package/esm2022/lib/_internal/ngmodel-component.mjs +1 -2
- package/esm2022/lib/_internal/selectable-list-component.mjs +2 -22
- package/esm2022/lib/badge/badge.defaults.mjs +12 -6
- package/esm2022/lib/badge/badge.directive.mjs +1 -1
- package/esm2022/lib/badge/index.mjs +1 -1
- package/esm2022/lib/buttons/_button-base.defaults.mjs +1 -1
- package/esm2022/lib/buttons/_button-base.mjs +6 -5
- package/esm2022/lib/buttons/button/button.component.mjs +11 -9
- package/esm2022/lib/buttons/button/button.defaults.mjs +11 -7
- package/esm2022/lib/buttons/button/index.mjs +1 -1
- package/esm2022/lib/buttons/fab/fab.component.mjs +15 -14
- package/esm2022/lib/buttons/fab/fab.defaults.mjs +11 -5
- package/esm2022/lib/buttons/fab/index.mjs +1 -1
- package/esm2022/lib/buttons/general-button.types.mjs +2 -2
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +11 -9
- package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +4 -1
- package/esm2022/lib/buttons/icon-button/index.mjs +1 -1
- package/esm2022/lib/card/card.children.mjs +4 -4
- package/esm2022/lib/card/card.component.mjs +2 -2
- package/esm2022/lib/card/card.defaults.mjs +10 -4
- package/esm2022/lib/card/index.mjs +1 -1
- package/esm2022/lib/checkbox/checkbox.component.mjs +13 -17
- package/esm2022/lib/checkbox/checkbox.defaults.mjs +10 -4
- package/esm2022/lib/checkbox/index.mjs +1 -1
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +11 -9
- package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +17 -11
- package/esm2022/lib/checkbox-list/index.mjs +3 -2
- package/esm2022/lib/chip/chip.component.mjs +11 -9
- package/esm2022/lib/chip/chip.defaults.mjs +4 -1
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +11 -9
- package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +10 -4
- package/esm2022/lib/chip/index.mjs +5 -2
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +11 -9
- package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +11 -5
- package/esm2022/lib/color/color-display/color-display.component.mjs +13 -12
- package/esm2022/lib/color/color-display/color-display.defaults.mjs +16 -0
- package/esm2022/lib/color/color-display/index.mjs +3 -2
- package/esm2022/lib/dialog/dialog.component.mjs +23 -22
- package/esm2022/lib/dialog/dialog.defaults.mjs +24 -0
- package/esm2022/lib/dialog/dialog.types.mjs +1 -1
- package/esm2022/lib/dialog/index.mjs +4 -3
- package/esm2022/lib/divider/divider.component.mjs +1 -1
- package/esm2022/lib/divider/divider.defaults.mjs +8 -2
- package/esm2022/lib/divider/index.mjs +3 -2
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +10 -9
- package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +17 -0
- package/esm2022/lib/dropdown-panel/index.mjs +3 -2
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +14 -12
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +18 -0
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/index.mjs +3 -2
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +23 -25
- package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +23 -0
- package/esm2022/lib/file-inputs/file-input/index.mjs +3 -2
- package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +8 -0
- package/esm2022/lib/file-inputs/file-input-base.mjs +2 -2
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +12 -8
- package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +18 -0
- package/esm2022/lib/form-field-frame/index.mjs +3 -2
- package/esm2022/lib/icon/icon.component.mjs +6 -4
- package/esm2022/lib/icon/icon.defaults.mjs +17 -0
- package/esm2022/lib/icon/index.mjs +3 -2
- package/esm2022/lib/inputs/_simple-input-base.mjs +159 -0
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +17 -15
- package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +21 -0
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/index.mjs +3 -2
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +24 -23
- package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +26 -0
- package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +97 -0
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +1 -1
- package/esm2022/lib/inputs/hex-input/index.mjs +3 -2
- package/esm2022/lib/inputs/input/index.mjs +1 -1
- package/esm2022/lib/inputs/input/input.component.mjs +28 -48
- package/esm2022/lib/inputs/input/input.defaults.mjs +17 -0
- package/esm2022/lib/inputs/input/input.directives.mjs +1 -1
- package/esm2022/lib/inputs/input/input.module.mjs +1 -1
- package/esm2022/lib/inputs/input-transformers.mjs +1 -1
- package/esm2022/lib/inputs/input-utils.mjs +1 -1
- package/esm2022/lib/inputs/number-input/index.mjs +3 -2
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +34 -30
- package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +27 -0
- package/esm2022/lib/inputs/password-input/index.mjs +3 -2
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +23 -18
- package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +24 -0
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/index.mjs +3 -2
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +15 -145
- package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +25 -0
- package/esm2022/lib/kbd/index.mjs +2 -1
- package/esm2022/lib/kbd/kbd.component.mjs +6 -4
- package/esm2022/lib/kbd/kbd.defaults.mjs +15 -0
- package/esm2022/lib/kbd/kbd.directive.mjs +1 -1
- package/esm2022/lib/kbd/kbd.pipe.mjs +7 -3
- package/esm2022/lib/kbd-shortcut/index.mjs +3 -2
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +12 -7
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +8 -0
- package/esm2022/lib/modal/index.mjs +3 -2
- package/esm2022/lib/modal/modal.component.mjs +14 -11
- package/esm2022/lib/modal/modal.defaults.mjs +20 -0
- package/esm2022/lib/option/index.mjs +1 -1
- package/esm2022/lib/option/option.component.mjs +1 -1
- package/esm2022/lib/progress-bar/index.mjs +4 -3
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +19 -18
- package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +21 -0
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
- package/esm2022/lib/progress-circle/index.mjs +4 -3
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +18 -22
- package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +21 -0
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +4 -4
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
- package/esm2022/lib/radio/index.mjs +4 -3
- package/esm2022/lib/radio/radio/radio.component.mjs +13 -10
- package/esm2022/lib/radio/radio/radio.defaults.mjs +16 -0
- package/esm2022/lib/radio/radio-group.component.mjs +7 -7
- package/esm2022/lib/search-functions.mjs +2 -2
- package/esm2022/lib/segment/index.mjs +3 -2
- package/esm2022/lib/segment/segment.component.mjs +22 -21
- package/esm2022/lib/segment/segment.defaults.mjs +26 -0
- package/esm2022/lib/segment/segment.directives.mjs +1 -1
- package/esm2022/lib/select/index.mjs +3 -2
- package/esm2022/lib/select/select.component.mjs +76 -101
- package/esm2022/lib/select/select.defaults.mjs +53 -0
- package/esm2022/lib/select/select.directive.mjs +1 -1
- package/esm2022/lib/select/select.types.mjs +1 -1
- package/esm2022/lib/slide-toggle/index.mjs +2 -1
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +17 -15
- package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +21 -0
- package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +1 -1
- package/esm2022/lib/slider/abstract-slider.mjs +44 -34
- package/esm2022/lib/slider/index.mjs +5 -4
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +13 -9
- package/esm2022/lib/slider/slider.component.mjs +13 -9
- package/esm2022/lib/slider/slider.defaults.mjs +14 -0
- package/esm2022/lib/slider/slider.module.mjs +1 -1
- package/esm2022/lib/slider/slider.types.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/lib/snackbar/snackbar.service.mjs +8 -12
- package/esm2022/lib/snackbar/snackbar.token.mjs +12 -6
- package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
- package/esm2022/lib/spinner/index.mjs +3 -2
- package/esm2022/lib/spinner/spinner.component.mjs +7 -6
- package/esm2022/lib/spinner/spinner.defaults.mjs +14 -0
- package/esm2022/lib/star/index.mjs +3 -2
- package/esm2022/lib/star/star-button/index.mjs +3 -2
- package/esm2022/lib/star/star-button/star-button.component.mjs +14 -11
- package/esm2022/lib/star/star-button/star-button.defaults.mjs +18 -0
- package/esm2022/lib/star/star-display/index.mjs +3 -2
- package/esm2022/lib/star/star-display/star-display.component.mjs +10 -8
- package/esm2022/lib/star/star-display/star-display.defaults.mjs +16 -0
- package/esm2022/lib/star/star-input/index.mjs +3 -2
- package/esm2022/lib/star/star-input/star-input.component.mjs +14 -11
- package/esm2022/lib/star/star-input/star-input.defaults.mjs +17 -0
- package/esm2022/lib/star/star.component.mjs +15 -8
- package/esm2022/lib/star/star.defaults.mjs +15 -0
- package/esm2022/lib/statebox/index.mjs +2 -1
- package/esm2022/lib/statebox/statebox.component.mjs +19 -25
- package/esm2022/lib/statebox/statebox.defaults.mjs +20 -0
- package/esm2022/lib/statebox/statebox.types.mjs +1 -1
- package/esm2022/lib/tabber/index.mjs +5 -3
- package/esm2022/lib/tabber/tab/tab.component.mjs +7 -5
- package/esm2022/lib/tabber/tab/tab.defaults.mjs +13 -0
- package/esm2022/lib/tabber/tabber.component.mjs +10 -10
- package/esm2022/lib/tabber/tabber.defaults.mjs +19 -0
- package/esm2022/lib/tabber/tabber.module.mjs +1 -1
- package/esm2022/lib/table/index.mjs +3 -2
- package/esm2022/lib/table/table-item-storage.mjs +4 -4
- package/esm2022/lib/table/table.component.mjs +69 -50
- package/esm2022/lib/table/table.defaults.mjs +53 -0
- package/esm2022/lib/table/table.directives.mjs +1 -1
- package/esm2022/lib/table/table.module.mjs +8 -7
- package/esm2022/lib/table-from-csv/index.mjs +3 -2
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +44 -44
- package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +15 -0
- package/esm2022/lib/table-pagination/index.mjs +3 -2
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +13 -9
- package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +25 -0
- package/esm2022/lib/types/button.types.mjs +1 -1
- package/esm2022/lib/types/item-storage.types.mjs +1 -1
- package/esm2022/lib/types/utility.types.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ardium-ui-ui.mjs +2632 -1980
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/clear-button/clear-button.component.d.ts +1 -0
- package/lib/_internal/disablable-component.d.ts +1 -0
- package/lib/_internal/item-storages/dropdown-item-storage.d.ts +9 -19
- package/lib/_internal/item-storages/simple-item-storage.d.ts +1 -1
- package/lib/_internal/item-storages/simplest-item-storage.d.ts +3 -3
- package/lib/_internal/models/pagination.model.d.ts +2 -2
- package/lib/_internal/selectable-list-component.d.ts +0 -1
- package/lib/badge/badge.defaults.d.ts +2 -1
- package/lib/buttons/_button-base.d.ts +1 -0
- package/lib/buttons/button/button.component.d.ts +3 -1
- package/lib/buttons/button/button.defaults.d.ts +2 -1
- package/lib/buttons/fab/fab.component.d.ts +5 -5
- package/lib/buttons/fab/fab.defaults.d.ts +4 -4
- package/lib/buttons/general-button.types.d.ts +2 -2
- package/lib/buttons/icon-button/icon-button.component.d.ts +3 -1
- package/lib/buttons/icon-button/icon-button.defaults.d.ts +2 -1
- package/lib/card/card.defaults.d.ts +2 -1
- package/lib/checkbox/checkbox.component.d.ts +4 -3
- package/lib/checkbox/checkbox.defaults.d.ts +2 -1
- package/lib/checkbox-list/checkbox-list.component.d.ts +4 -2
- package/lib/checkbox-list/checkbox-list.defaults.d.ts +2 -1
- package/lib/checkbox-list/index.d.ts +2 -1
- package/lib/chip/chip.component.d.ts +3 -1
- package/lib/chip/chip.defaults.d.ts +3 -10
- package/lib/chip/deletable-chip/deletable-chip.component.d.ts +3 -1
- package/lib/chip/deletable-chip/deletable-chip.defaults.d.ts +2 -1
- package/lib/chip/index.d.ts +4 -1
- package/lib/chip/selectable-chip/selectable-chip.component.d.ts +3 -1
- package/lib/chip/selectable-chip/selectable-chip.defaults.d.ts +2 -1
- package/lib/color/color-display/color-display.component.d.ts +2 -1
- package/lib/color/color-display/color-display.defaults.d.ts +9 -0
- package/lib/color/color-display/index.d.ts +2 -1
- package/lib/dialog/dialog.component.d.ts +1 -0
- package/lib/dialog/dialog.defaults.d.ts +16 -0
- package/lib/dialog/index.d.ts +3 -2
- package/lib/divider/divider.defaults.d.ts +2 -1
- package/lib/divider/index.d.ts +2 -1
- package/lib/dropdown-panel/dropdown-panel.component.d.ts +1 -0
- package/lib/dropdown-panel/dropdown-panel.defaults.d.ts +10 -0
- package/lib/dropdown-panel/index.d.ts +2 -1
- package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +5 -2
- package/lib/file-inputs/file-drop-area/file-drop-area.defaults.d.ts +10 -0
- package/lib/file-inputs/file-drop-area/index.d.ts +2 -1
- package/lib/file-inputs/file-input/file-input.component.d.ts +4 -4
- package/lib/file-inputs/file-input/file-input.defaults.d.ts +15 -0
- package/lib/file-inputs/file-input/index.d.ts +2 -1
- package/lib/file-inputs/file-input-base.d.ts +2 -0
- package/lib/file-inputs/file-input-base.defaults.d.ts +7 -0
- package/lib/form-field-frame/form-field-frame.component.d.ts +3 -0
- package/lib/form-field-frame/form-field-frame.defaults.d.ts +10 -0
- package/lib/form-field-frame/index.d.ts +2 -1
- package/lib/icon/icon.component.d.ts +7 -3
- package/lib/icon/icon.defaults.d.ts +11 -0
- package/lib/icon/index.d.ts +2 -1
- package/lib/inputs/_simple-input-base.d.ts +62 -0
- package/lib/inputs/digit-input/digit-input.component.d.ts +3 -0
- package/lib/inputs/digit-input/digit-input.defaults.d.ts +13 -0
- package/lib/inputs/digit-input/index.d.ts +2 -1
- package/lib/inputs/hex-input/hex-input.component.d.ts +4 -4
- package/lib/inputs/hex-input/hex-input.defaults.d.ts +19 -0
- package/lib/inputs/{hex-input.model.d.ts → hex-input/hex-input.model.d.ts} +2 -2
- package/lib/inputs/hex-input/index.d.ts +2 -1
- package/lib/inputs/input/input.component.d.ts +10 -17
- package/lib/inputs/input/input.defaults.d.ts +9 -0
- package/lib/inputs/number-input/index.d.ts +2 -1
- package/lib/inputs/number-input/number-input.component.d.ts +3 -1
- package/lib/inputs/number-input/number-input.defaults.d.ts +19 -0
- package/lib/inputs/password-input/index.d.ts +2 -1
- package/lib/inputs/password-input/password-input.component.d.ts +3 -0
- package/lib/inputs/password-input/password-input.defaults.d.ts +17 -0
- package/lib/inputs/simple-input/index.d.ts +2 -1
- package/lib/inputs/simple-input/simple-input.component.d.ts +6 -50
- package/lib/inputs/simple-input/simple-input.defaults.d.ts +6 -0
- package/lib/kbd/index.d.ts +1 -0
- package/lib/kbd/kbd.component.d.ts +1 -0
- package/lib/kbd/kbd.defaults.d.ts +8 -0
- package/lib/kbd/kbd.pipe.d.ts +1 -0
- package/lib/kbd-shortcut/index.d.ts +2 -1
- package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +2 -0
- package/lib/kbd-shortcut/kbd-shortcut.defaults.d.ts +8 -0
- package/lib/modal/index.d.ts +2 -1
- package/lib/modal/modal.component.d.ts +1 -0
- package/lib/modal/modal.defaults.d.ts +14 -0
- package/lib/progress-bar/index.d.ts +3 -2
- package/lib/progress-bar/progress-bar.component.d.ts +3 -1
- package/lib/progress-bar/progress-bar.defaults.d.ts +14 -0
- package/lib/progress-circle/index.d.ts +3 -2
- package/lib/progress-circle/progress-circle.component.d.ts +3 -1
- package/lib/progress-circle/progress-circle.defaults.d.ts +14 -0
- package/lib/progress-circle/progress-circle.module.d.ts +1 -1
- package/lib/radio/index.d.ts +3 -2
- package/lib/radio/radio/radio.component.d.ts +5 -2
- package/lib/radio/radio/radio.defaults.d.ts +8 -0
- package/lib/segment/index.d.ts +2 -1
- package/lib/segment/segment.component.d.ts +3 -0
- package/lib/segment/segment.defaults.d.ts +18 -0
- package/lib/select/index.d.ts +2 -1
- package/lib/select/select.component.d.ts +11 -22
- package/lib/select/select.defaults.d.ts +49 -0
- package/lib/slide-toggle/index.d.ts +1 -0
- package/lib/slide-toggle/slide-toggle.component.d.ts +9 -6
- package/lib/slide-toggle/slide-toggle.defaults.d.ts +14 -0
- package/lib/slider/abstract-slider.d.ts +22 -5
- package/lib/slider/index.d.ts +4 -3
- package/lib/slider/range-slider/range-slider.component.d.ts +3 -0
- package/lib/slider/slider.component.d.ts +3 -0
- package/lib/slider/slider.defaults.d.ts +6 -0
- package/lib/snackbar/snackbar.service.d.ts +1 -2
- package/lib/snackbar/snackbar.token.d.ts +3 -3
- package/lib/spinner/index.d.ts +2 -1
- package/lib/spinner/spinner.component.d.ts +1 -0
- package/lib/spinner/spinner.defaults.d.ts +7 -0
- package/lib/star/index.d.ts +2 -1
- package/lib/star/star-button/index.d.ts +2 -1
- package/lib/star/star-button/star-button.component.d.ts +3 -0
- package/lib/star/star-button/star-button.defaults.d.ts +10 -0
- package/lib/star/star-display/index.d.ts +2 -1
- package/lib/star/star-display/star-display.component.d.ts +1 -0
- package/lib/star/star-display/star-display.defaults.d.ts +9 -0
- package/lib/star/star-input/index.d.ts +2 -1
- package/lib/star/star-input/star-input.component.d.ts +3 -1
- package/lib/star/star-input/star-input.defaults.d.ts +9 -0
- package/lib/star/star.component.d.ts +4 -2
- package/lib/star/star.defaults.d.ts +8 -0
- package/lib/statebox/index.d.ts +1 -0
- package/lib/statebox/statebox.component.d.ts +7 -6
- package/lib/statebox/statebox.defaults.d.ts +10 -0
- package/lib/tabber/index.d.ts +4 -2
- package/lib/tabber/tab/tab.component.d.ts +1 -0
- package/lib/tabber/tab/tab.defaults.d.ts +6 -0
- package/lib/tabber/tabber.component.d.ts +1 -0
- package/lib/tabber/tabber.defaults.d.ts +12 -0
- package/lib/table/index.d.ts +2 -1
- package/lib/table/table-item-storage.d.ts +5 -10
- package/lib/table/table.component.d.ts +11 -9
- package/lib/table/table.defaults.d.ts +50 -0
- package/lib/table/table.module.d.ts +2 -1
- package/lib/table-from-csv/index.d.ts +2 -1
- package/lib/table-from-csv/table-from-csv.component.d.ts +7 -5
- package/lib/table-from-csv/table-from-csv.defaults.d.ts +7 -0
- package/lib/table-pagination/index.d.ts +2 -1
- package/lib/table-pagination/table-pagination.component.d.ts +3 -0
- package/lib/table-pagination/table-pagination.defaults.d.ts +20 -0
- package/lib/types/button.types.d.ts +1 -1
- package/lib/types/item-storage.types.d.ts +3 -63
- package/package.json +1 -1
- package/prebuilt-themes/default/buttons/fab.css +1 -1
- package/prebuilt-themes/default/buttons/icon-button.css +7 -12
- package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
- package/prebuilt-themes/default/checkbox.css.map +1 -1
- package/prebuilt-themes/default/inputs/color-input.css +5 -0
- package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/file-input.css +5 -0
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/hex-input.css +5 -0
- package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/input.css +5 -0
- package/prebuilt-themes/default/inputs/input.css.map +1 -1
- package/prebuilt-themes/default/inputs/number-input.css +5 -0
- package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/password-input.css +5 -0
- package/prebuilt-themes/default/inputs/password-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/search-bar.css +5 -0
- package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
- package/prebuilt-themes/default/inputs/simple-input.css +5 -0
- package/prebuilt-themes/default/inputs/simple-input.css.map +1 -1
- package/prebuilt-themes/default/segment.css.map +1 -1
- package/prebuilt-themes/default/select.css +4 -0
- package/prebuilt-themes/default/select.css.map +1 -1
- package/prebuilt-themes/default/tabber.css +2 -0
- package/prebuilt-themes/default/tabber.css.map +1 -1
- package/prebuilt-themes/default/table.css +17 -0
- package/prebuilt-themes/default/table.css.map +1 -1
- package/themes/default/_clear-button.scss +73 -73
- package/themes/default/badge.scss +94 -94
- package/themes/default/buttons/button.scss +72 -72
- package/themes/default/buttons/fab.scss +74 -74
- package/themes/default/buttons/icon-button.scss +55 -62
- package/themes/default/card.scss +129 -129
- package/themes/default/checkbox.scss +1 -1
- package/themes/default/chips.scss +200 -200
- package/themes/default/core.scss +99 -99
- package/themes/default/inputs/_shared.scss +5 -0
- package/themes/default/inputs/digit-input.scss +56 -56
- package/themes/default/inputs/file-input.scss +85 -85
- package/themes/default/inputs/hex-input.scss +27 -27
- package/themes/default/modal.scss +93 -93
- package/themes/default/segment.scss +355 -351
- package/themes/default/select.scss +259 -255
- package/themes/default/snackbar.scss +58 -58
- package/themes/default/tabber.scss +89 -87
- package/themes/default/table.scss +20 -0
- package/esm2022/lib/color/color-picker/color-picker.types.mjs +0 -11
- package/esm2022/lib/inputs/color-input/color-input.directives.mjs +0 -101
- package/esm2022/lib/inputs/color-input/color-input.types.mjs +0 -2
- package/esm2022/lib/inputs/hex-input.model.mjs +0 -97
- package/lib/color/color-picker/color-picker.types.d.ts +0 -21
- package/lib/inputs/color-input/color-input.directives.d.ts +0 -52
- package/lib/inputs/color-input/color-input.types.d.ts +0 -5
|
@@ -92,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
92
92
|
type: HostBinding,
|
|
93
93
|
args: ['class.ard-selected']
|
|
94
94
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9ib29sZWFuLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQTZCLE1BQU0scUJBQXFCLENBQUM7O0FBR2xILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE4Qix5QkFBeUIsQ0FBQztBQUU5Rjs7R0FFRztBQUVILE1BQU0sT0FBZ0IscUJBQXNCLFNBQVEscUJBQXFCO0lBRHpFOztRQXNCRSxVQUFVO1FBQ1Y7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLE1BQU0sQ0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pEOztXQUVHO1FBQ00sa0JBQWEsR0FBRyxNQUFNLENBQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM3RDs7V0FFRztRQUNNLGdCQUFXLEdBQUcsTUFBTSxDQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFNUQsZ0NBQWdDO1FBQ2hDLHVDQUF1QztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBYTNDOztXQUVHO1FBQ00sbUJBQWMsR0FBRyxNQUFNLEVBQVcsQ0FBQztLQXdCN0M7SUExRUMsMEJBQTBCO0lBQzFCLFVBQVUsQ0FBQyxDQUFNO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELGtCQUFrQjtJQUNsQjs7T0FFRztJQUNPLFdBQVc7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFtQkQ7O09BRUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxDQUFNO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELElBRUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFNRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQTVFbUIscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRDFDLFNBQVM7OEJBMkNKLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxVQUFVO2dCQU1iLHNCQUFzQjtzQkFGekIsV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlLCBfbmdNb2RlbENvbXBvbmVudERlZmF1bHRzLCBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9uZ21vZGVsLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgX0Jvb2xlYW5Db21wb25lbnREZWZhdWx0cyBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMge31cbmV4cG9ydCBjb25zdCBfYm9vbGVhbkNvbXBvbmVudERlZmF1bHRzOiBfQm9vbGVhbkNvbXBvbmVudERlZmF1bHRzID0gX25nTW9kZWxDb21wb25lbnREZWZhdWx0cztcblxuLyoqXG4gKiBDb21tb24gY29kZSBmb3IgY29tcG9uZW50cywgd2hpY2ggb25seSBvcGVyYXRlIG9uIHRoZSBcInNlbGVjdGVkXCIgc3RhdGUuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Cb29sZWFuQ29tcG9uZW50QmFzZSBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IF9Cb29sZWFuQ29tcG9uZW50RGVmYXVsdHM7XG5cbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3JcbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHY7XG4gIH1cbiAgLy9lbWl0dGVyIGZ1bmN0aW9uXG4gIC8qKlxuICAgKiBFbWl0cyBhbGwgc2VsZWN0LXN0YXRlLXJlbGF0ZWQgZXZlbnRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCkge1xuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMuc2VsZWN0ZWQoKSk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZCgpKSB0aGlzLnNlbGVjdEV2ZW50LmVtaXQobnVsbCk7XG4gICAgZWxzZSB0aGlzLnVuc2VsZWN0RXZlbnQuZW1pdChudWxsKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKCkpO1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkKCkpO1xuICB9XG5cbiAgLy8hIGV2ZW50c1xuICAvKipcbiAgICogVGhlIGV2ZW50IGVtaXR0ZXIgcmVzcG9uc2libGUgZm9yIGZpcmluZyBgc2VsZWN0YCBldmVudHMuIEZpcmVkIHdoZW4gdGhlIGBzZWxlY3RlZGAgc3RhdGUgaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RFdmVudCA9IG91dHB1dDxudWxsPih7IGFsaWFzOiAnc2VsZWN0JyB9KTtcbiAgLyoqXG4gICAqIFRoZSBldmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBmaXJpbmcgYHVuc2VsZWN0YCBldmVudHMuIEZpcmVkIHdoZW4gdGhlIGBzZWxlY3RlZGAgc3RhdGUgaXMgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5zZWxlY3RFdmVudCA9IG91dHB1dDxudWxsPih7IGFsaWFzOiAndW5zZWxlY3QnIH0pO1xuICAvKipcbiAgICogVGhlIGV2ZW50IGVtaXR0ZXIgcmVzcG9uc2libGUgZm9yIGZpcmluZyBgY2hhbmdlYCBldmVudHMuIEZpcmVkIHdoZW4gdGhlIGBzZWxlY3RlZGAgc3RhdGUgaXMgY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PGJvb2xlYW4+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xuXG4gIC8vISBbKHNlbGVjdGVkKV0gdHdvLXdheSBiaW5kaW5nXG4gIC8vIGNhbiBiZSBzZXQgdXNpbmcgYSBuby12YWx1ZSBhcmd1bWVudFxuICByZWFkb25seSBzZWxlY3RlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuIENvZXJjaWJsZSBpbnRvIGEgYm9vbGVhbi5cbiAgICovXG4gIEBJbnB1dCgnc2VsZWN0ZWQnKVxuICBzZXQgX3NlbGVjdGVkKHY6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWQuc2V0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNlbGVjdGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hcmQtc2VsZWN0ZWQnKVxuICBnZXQgX3NlbGVjdGVkSG9zdEF0dHJpYnV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZCgpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBzZWxlY3RlZENoYW5nZWAgZXZlbnRzLiBGaXJlZCB3aGVuIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RlZENoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzZWxlY3RlZCBzdGF0ZS4gRW1pdHMgYWxsIGFwcHJvcHJpYXRlIGV2ZW50cy5cbiAgICovXG4gIHRvZ2dsZVNlbGVjdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQudXBkYXRlKHYgPT4gIXYpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGF0ZSB0byBcInNlbGVjdGVkXCIuIEVtaXRzIGFsbCBhcHByb3ByaWF0ZSBldmVudHMgb25seSBpZiB0aGUgc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIHNlbGVjdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXRlIHRvIFwidW5zZWxlY3RlZFwiLiBFbWl0cyBhbGwgYXBwcm9wcmlhdGUgZXZlbnRzIG9ubHkgaWYgdGhlIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICB1bnNlbGVjdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
-
import { _FocusableComponentBase } from './../focusable-component';
|
|
2
|
+
import { _FocusableComponentBase, _focusableComponentDefaults } from './../focusable-component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class _ClearButtonComponent extends _FocusableComponentBase {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
super(_focusableComponentDefaults);
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _ClearButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: _ClearButtonComponent, selector: "ard-clear-button", usesInheritance: true, ngImport: i0, template: "<button\n #focusableElement\n class=\"ard-clear-btn-wrapper\"\n type=\"button\"\n [tabindex]=\"tabIndex()\"\n>\n <div class=\"ard-hitbox\"></div>\n <div class=\"ard-focus-overlay\"></div>\n <div\n class=\"ard-clear-btn\"\n aria-hidden=\"true\"\n ></div>\n</button>\n", styles: [""] }); }
|
|
7
10
|
}
|
|
8
11
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _ClearButtonComponent, decorators: [{
|
|
9
12
|
type: Component,
|
|
10
|
-
args: [{ selector: 'ard-clear-button', template: "<button\
|
|
11
|
-
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
args: [{ selector: 'ard-clear-button', template: "<button\n #focusableElement\n class=\"ard-clear-btn-wrapper\"\n type=\"button\"\n [tabindex]=\"tabIndex()\"\n>\n <div class=\"ard-hitbox\"></div>\n <div class=\"ard-focus-overlay\"></div>\n <div\n class=\"ard-clear-btn\"\n aria-hidden=\"true\"\n ></div>\n</button>\n" }]
|
|
14
|
+
}], ctorParameters: () => [] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2NsZWFyLWJ1dHRvbi9jbGVhci1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvY2xlYXItYnV0dG9uL2NsZWFyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU9oRyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCO0lBQ2hFO1FBQ0UsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FIVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwrRUNSbEMsMFJBYUE7OzJGRExhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IF9Gb2N1c2FibGVDb21wb25lbnRCYXNlLCBfZm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuLy4uL2ZvY3VzYWJsZS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcmQtY2xlYXItYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NsZWFyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NsZWFyLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBfQ2xlYXJCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKF9mb2N1c2FibGVDb21wb25lbnREZWZhdWx0cyk7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgI2ZvY3VzYWJsZUVsZW1lbnRcbiAgY2xhc3M9XCJhcmQtY2xlYXItYnRuLXdyYXBwZXJcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgW3RhYmluZGV4XT1cInRhYkluZGV4KClcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXJkLWhpdGJveFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXJkLWZvY3VzLW92ZXJsYXlcIj48L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXJkLWNsZWFyLWJ0blwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgPjwvZGl2PlxuPC9idXR0b24+XG4iXX0=
|
|
@@ -6,7 +6,8 @@ export const _disablableComponentDefaults = {
|
|
|
6
6
|
disabled: false,
|
|
7
7
|
};
|
|
8
8
|
export class _DisablableComponentBase {
|
|
9
|
-
constructor() {
|
|
9
|
+
constructor(_DEFAULTS) {
|
|
10
|
+
this._DEFAULTS = _DEFAULTS;
|
|
10
11
|
//! no value arguments
|
|
11
12
|
/**
|
|
12
13
|
* Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coercible into a boolean.
|
|
@@ -26,12 +27,12 @@ export class _DisablableComponentBase {
|
|
|
26
27
|
get _disabledHostAttribute() {
|
|
27
28
|
return this.disabled();
|
|
28
29
|
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _DisablableComponentBase, deps:
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _DisablableComponentBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
31
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: _DisablableComponentBase, inputs: { readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.readonly": "this._readonlyHostAttribute", "class.ard-readonly": "this._readonlyHostAttribute", "attr.disabled": "this._disabledHostAttribute", "class.ard-disabled": "this._disabledHostAttribute" } }, ngImport: i0 }); }
|
|
31
32
|
}
|
|
32
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _DisablableComponentBase, decorators: [{
|
|
33
34
|
type: Directive
|
|
34
|
-
}], propDecorators: { _disabled: [{
|
|
35
|
+
}], ctorParameters: () => [{ type: undefined }], propDecorators: { _disabled: [{
|
|
35
36
|
type: Input,
|
|
36
37
|
args: ['disabled']
|
|
37
38
|
}], _readonlyHostAttribute: [{
|
|
@@ -47,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
47
48
|
type: HostBinding,
|
|
48
49
|
args: ['class.ard-disabled']
|
|
49
50
|
}] } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsYWJsZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9kaXNhYmxhYmxlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFNMUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWlDO0lBQ3hFLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQUdGLE1BQU0sT0FBZ0Isd0JBQXdCO0lBQzVDLFlBQStCLFNBQXVDO1FBQXZDLGNBQVMsR0FBVCxTQUFTLENBQThCO1FBQ3RFLHNCQUFzQjtRQUN0Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFL0c7O1dBRUc7UUFDTSxhQUFRLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFWWSxDQUFDO0lBVzFFLElBQ0ksU0FBUyxDQUFDLENBQU07UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFFSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELElBRUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBMUJtQix3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUzsyRUFjSixTQUFTO3NCQURaLEtBQUs7dUJBQUMsVUFBVTtnQkFPYixzQkFBc0I7c0JBRnpCLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixzQkFBc0I7c0JBRnpCLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLFdBQVc7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcblxuZXhwb3J0IGludGVyZmFjZSBfRGlzYWJsYWJsZUNvbXBvbmVudERlZmF1bHRzIHtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xufVxuZXhwb3J0IGNvbnN0IF9kaXNhYmxhYmxlQ29tcG9uZW50RGVmYXVsdHM6IF9EaXNhYmxhYmxlQ29tcG9uZW50RGVmYXVsdHMgPSB7XG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxufTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0Rpc2FibGFibGVDb21wb25lbnRCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IF9ERUZBVUxUUzogX0Rpc2FibGFibGVDb21wb25lbnREZWZhdWx0cykge31cbiAgLy8hIG5vIHZhbHVlIGFyZ3VtZW50c1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlYWQtb25seS4gRGVmaW5lcyB0aGUgYHJlYWRvbmx5YCBob3N0IGF0dHJpYnV0ZSBhbmQgYGFyZC1yZWFkb25seWAgaG9zdCBjbGFzcy4gQ29lcmNpYmxlIGludG8gYSBib29sZWFuLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dDxhbnksIGJvb2xlYW4+KHRoaXMuX0RFRkFVTFRTLnJlYWRvbmx5LCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gRGVmaW5lcyB0aGUgYGRpc2FibGVkYCBob3N0IGF0dHJpYnV0ZSBhbmQgYGFyZC1kaXNhYmxlZGAgaG9zdCBjbGFzcy4gQ29lcmNpYmxlIGludG8gYSBib29sZWFuLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4odGhpcy5fREVGQVVMVFMuZGlzYWJsZWQpO1xuICBASW5wdXQoJ2Rpc2FibGVkJylcbiAgc2V0IF9kaXNhYmxlZCh2OiBhbnkpIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChjb2VyY2VCb29sZWFuUHJvcGVydHkodikpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJlYWRvbmx5JylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hcmQtcmVhZG9ubHknKVxuICBnZXQgX3JlYWRvbmx5SG9zdEF0dHJpYnV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSgpO1xuICB9XG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYXJkLWRpc2FibGVkJylcbiAgZ2V0IF9kaXNhYmxlZEhvc3RBdHRyaWJ1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQoKTtcbiAgfVxufVxuIl19
|
|
@@ -14,7 +14,10 @@ export class _FocusableComponentBase extends _DisablableComponentBase {
|
|
|
14
14
|
* The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.
|
|
15
15
|
*/
|
|
16
16
|
this.tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));
|
|
17
|
-
this._tabIndex = input(this._DEFAULTS.tabIndex, {
|
|
17
|
+
this._tabIndex = input(this._DEFAULTS.tabIndex, {
|
|
18
|
+
alias: 'tabIndex',
|
|
19
|
+
transform: v => coerceNumberProperty(v),
|
|
20
|
+
});
|
|
18
21
|
//! events
|
|
19
22
|
/**
|
|
20
23
|
* The event emitter responsible for firing `focus` events.
|
|
@@ -79,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
79
82
|
type: ViewChildren,
|
|
80
83
|
args: ['focusableElement']
|
|
81
84
|
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2ZvY3VzYWJsZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDRCQUE0QixFQUFnQyxNQUFNLHdCQUF3QixDQUFDOztBQUs5SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBZ0M7SUFDdEUsR0FBRyw0QkFBNEI7SUFDL0IsUUFBUSxFQUFFLENBQUM7Q0FDWixDQUFDO0FBR0YsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSx3QkFBd0I7SUFEOUU7O1FBaUNFLFlBQVk7UUFDWjs7V0FFRztRQUNNLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLGNBQVMsR0FBRyxLQUFLLENBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDL0QsS0FBSyxFQUFFLFVBQVU7WUFDakIsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUVILFVBQVU7UUFDVjs7V0FFRztRQUNNLGVBQVUsR0FBRyxNQUFNLENBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RDs7V0FFRztRQUNNLGNBQVMsR0FBRyxNQUFNLENBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUzRCx3QkFBd0I7UUFDeEI7O1dBRUc7UUFDSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBa0IxQjtJQW5FQzs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBQ0Q7O09BRUc7SUFDSSxVQUFVO1FBQ2YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNEOztPQUVHO0lBQ0ksU0FBUztRQUNkLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFDRDs7T0FFRztJQUNJLElBQUk7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUE0QkQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBaUI7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs4R0F6RW1CLHVCQUF1QjtrR0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUQ1QyxTQUFTOzhCQU1TLGlCQUFpQjtzQkFEakMsWUFBWTt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbnB1dCwgb3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBfRGlzYWJsYWJsZUNvbXBvbmVudEJhc2UsIF9kaXNhYmxhYmxlQ29tcG9uZW50RGVmYXVsdHMsIF9EaXNhYmxhYmxlQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuL2Rpc2FibGFibGUtY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBfRm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMgZXh0ZW5kcyBfRGlzYWJsYWJsZUNvbXBvbmVudERlZmF1bHRzIHtcbiAgdGFiSW5kZXg6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBfZm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHM6IF9Gb2N1c2FibGVDb21wb25lbnREZWZhdWx0cyA9IHtcbiAgLi4uX2Rpc2FibGFibGVDb21wb25lbnREZWZhdWx0cyxcbiAgdGFiSW5kZXg6IDAsXG59O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSBleHRlbmRzIF9EaXNhYmxhYmxlQ29tcG9uZW50QmFzZSB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBfRm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHM7XG5cbiAgLy8hIG1ha2UgdGhlIGNvbXBvbmVudCBmb2N1c2FibGUgcHJvZ3JhbW1hdGljYWxseVxuICBAVmlld0NoaWxkcmVuKCdmb2N1c2FibGVFbGVtZW50JylcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlRWxlbWVudCE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGNvcnJlY3QgZWxlbWVudCBpbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQ/LmZpcnN0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IG9mIGFsbCBhdmFpbGFibGUgZWxlbWVudHMgaW4gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBmb2N1c0ZpcnN0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXMoKTtcbiAgfVxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgbGFzdCBvZiBhbGwgYXZhaWxhYmxlIGVsZW1lbnRzIGluIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgZm9jdXNMYXN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQ/Lmxhc3Q/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuICAvKipcbiAgICogQmx1cnMgYWxsIGZvY3VzYWJsZSBlbGVtZW50cyBpbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNhYmxlRWxlbWVudD8uZm9yRWFjaChlbCA9PiBlbC5uYXRpdmVFbGVtZW50LmJsdXIoKSk7XG4gIH1cblxuICAvLyEgdGFiaW5kZXhcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQncyBvdmVyYWxsIHRhYiBpbmRleC4gSWYgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZCwgaXQgaXMgYWx3YXlzIGAtMWAuIENvZXJjaWJsZSBpbnRvIGEgbnVtYmVyLCBkZWZhdWx0cyB0byBgMGAuXG4gICAqL1xuICByZWFkb25seSB0YWJJbmRleCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmRpc2FibGVkKCkgPyAtMSA6IHRoaXMuX3RhYkluZGV4KCkpKTtcbiAgcmVhZG9ubHkgX3RhYkluZGV4ID0gaW5wdXQ8YW55LCBudW1iZXI+KHRoaXMuX0RFRkFVTFRTLnRhYkluZGV4LCB7XG4gICAgYWxpYXM6ICd0YWJJbmRleCcsXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYpLFxuICB9KTtcblxuICAvLyEgZXZlbnRzXG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBmb2N1c2AgZXZlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9jdXNFdmVudCA9IG91dHB1dDxGb2N1c0V2ZW50Pih7IGFsaWFzOiAnZm9jdXMnIH0pO1xuICAvKipcbiAgICogVGhlIGV2ZW50IGVtaXR0ZXIgcmVzcG9uc2libGUgZm9yIGZpcmluZyBgYmx1cmAgZXZlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ckV2ZW50ID0gb3V0cHV0PEZvY3VzRXZlbnQ+KHsgYWxpYXM6ICdibHVyJyB9KTtcblxuICAvLyEgZm9jdXMgZXZlbnQgaGFuZGxlcnNcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBjdXJyZW50bHkgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBpc0ZvY3VzZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gaGFuZGxlIHdoZW4gYW4gZWxlbWVudCBpcyBmb2N1c2VkLiBTZXRzIGBpc0ZvY3VzZWRgIGFuZCBmaXJlcyB0aGUgYGZvY3VzYCBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBmb2N1cyBldmVudCB0byBlbWl0LlxuICAgKi9cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmZvY3VzRXZlbnQuZW1pdChldmVudCk7XG4gIH1cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGhhbmRsZSB3aGVuIGFuIGVsZW1lbnQgaXMgYmx1cnJlZC4gU2V0cyBgaXNGb2N1c2VkYCBhbmQgZmlyZXMgdGhlIGBibHVyYCBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBmb2N1cyBldmVudCB0byBlbWl0LlxuICAgKi9cbiAgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmJsdXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIl19
|
|
@@ -20,7 +20,7 @@ export class ItemStorage {
|
|
|
20
20
|
this.selectedItems = computed(() => {
|
|
21
21
|
if (this._ardParentComp.sortMultipleValues()) {
|
|
22
22
|
return this._selectedItems().sort((a, b) => {
|
|
23
|
-
return a.index
|
|
23
|
+
return a.index - b.index;
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
return this._selectedItems();
|
|
@@ -67,7 +67,6 @@ export class ItemStorage {
|
|
|
67
67
|
if (toWrite !== undefined) {
|
|
68
68
|
this.handleWriteValue(toWrite);
|
|
69
69
|
}
|
|
70
|
-
return areItemsPrimitive;
|
|
71
70
|
}
|
|
72
71
|
_addSingleItem(item) {
|
|
73
72
|
const isItemPrimitive = isPrimitive(item);
|
|
@@ -76,9 +75,11 @@ export class ItemStorage {
|
|
|
76
75
|
item = this._primitiveItemsMapFn(item);
|
|
77
76
|
}
|
|
78
77
|
//map the item to create data bindings
|
|
79
|
-
const ardOption = this._setItemsMapFn(item, (this._items().last()?.index
|
|
78
|
+
const ardOption = this._setItemsMapFn(item, (this._items().last()?.index ?? 0) + 1, isItemPrimitive);
|
|
80
79
|
//push the item into all items
|
|
81
80
|
this._items.update(v => [...v, ardOption]);
|
|
81
|
+
//add all items to filter array
|
|
82
|
+
this._filteredItems.set(this._items());
|
|
82
83
|
//add item to groups
|
|
83
84
|
this._populateGroups();
|
|
84
85
|
return ardOption;
|
|
@@ -88,7 +89,7 @@ export class ItemStorage {
|
|
|
88
89
|
}
|
|
89
90
|
_ungroupAlreadyGroupedItems(group) {
|
|
90
91
|
//determine groupBy (groupLabel) path
|
|
91
|
-
const groupBy = this._ardParentComp.groupLabelFrom()
|
|
92
|
+
const groupBy = this._ardParentComp.groupLabelFrom();
|
|
92
93
|
//get group label from object
|
|
93
94
|
let groupName;
|
|
94
95
|
if (typeof groupBy === 'string') {
|
|
@@ -98,7 +99,7 @@ export class ItemStorage {
|
|
|
98
99
|
groupName = groupBy(group);
|
|
99
100
|
}
|
|
100
101
|
//determine group children path
|
|
101
|
-
const childrenPath = this._ardParentComp.childrenFrom()
|
|
102
|
+
const childrenPath = this._ardParentComp.childrenFrom();
|
|
102
103
|
//get group children
|
|
103
104
|
let groupItems = resolvePath(group, childrenPath);
|
|
104
105
|
//return empty array if groupItems is not an array or is empty
|
|
@@ -120,24 +121,24 @@ export class ItemStorage {
|
|
|
120
121
|
if (areItemsPrimitive) {
|
|
121
122
|
return {
|
|
122
123
|
itemData: signal(rawItemData),
|
|
123
|
-
index:
|
|
124
|
+
index: index,
|
|
124
125
|
value: signal(rawItemData.value),
|
|
125
126
|
label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),
|
|
126
127
|
disabled: signal(false),
|
|
127
128
|
selected: signal(false),
|
|
128
129
|
highlighted: signal(false),
|
|
129
|
-
group:
|
|
130
|
+
group: undefined,
|
|
130
131
|
highlighted_recently: signal(false),
|
|
131
132
|
};
|
|
132
133
|
}
|
|
133
134
|
//get value
|
|
134
|
-
const valuePath = this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom()
|
|
135
|
+
const valuePath = this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom();
|
|
135
136
|
const value = resolvePath(rawItemData, valuePath);
|
|
136
137
|
//get label
|
|
137
|
-
const labelPath = this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom()
|
|
138
|
+
const labelPath = this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom();
|
|
138
139
|
const label = resolvePath(rawItemData, labelPath) ?? value;
|
|
139
140
|
//get disabled
|
|
140
|
-
const disabledPath = this._ardParentComp.disabledFrom()
|
|
141
|
+
const disabledPath = this._ardParentComp.disabledFrom();
|
|
141
142
|
let disabled = evaluate(resolvePath(rawItemData, disabledPath));
|
|
142
143
|
if (this._ardParentComp.invertDisabled()) {
|
|
143
144
|
disabled = !disabled;
|
|
@@ -158,14 +159,13 @@ export class ItemStorage {
|
|
|
158
159
|
}
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
|
-
//return
|
|
162
162
|
return {
|
|
163
163
|
itemData: signal(rawItemData),
|
|
164
|
-
index:
|
|
164
|
+
index: index,
|
|
165
165
|
value: signal(value),
|
|
166
166
|
label: signal(label?.toString?.() ?? String(label)),
|
|
167
167
|
disabled: signal(disabled),
|
|
168
|
-
group:
|
|
168
|
+
group: group,
|
|
169
169
|
selected: signal(false),
|
|
170
170
|
highlighted: signal(false),
|
|
171
171
|
highlighted_recently: signal(false),
|
|
@@ -180,9 +180,9 @@ export class ItemStorage {
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
_addToGroup(item) {
|
|
183
|
-
const groupKey = item.group
|
|
183
|
+
const groupKey = item.group;
|
|
184
184
|
const targetGroup = this._groups().get(groupKey);
|
|
185
|
-
//create new group if
|
|
185
|
+
//create new group if no such group exists
|
|
186
186
|
if (!targetGroup) {
|
|
187
187
|
this._groups.update(v => {
|
|
188
188
|
const map = new Map(v);
|
|
@@ -216,7 +216,7 @@ export class ItemStorage {
|
|
|
216
216
|
_isWriteValueValid(ngModel) {
|
|
217
217
|
return ngModel.every(item => {
|
|
218
218
|
if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom()) {
|
|
219
|
-
console.warn(`ARD-WA${this._ardParentComp._componentId}0:
|
|
219
|
+
console.warn(`ARD-WA${this._ardParentComp._componentId}0: [valueFrom] can only point to a property of a primitive type. Define [compareWith] if using objects as a value is needed.`);
|
|
220
220
|
return false;
|
|
221
221
|
}
|
|
222
222
|
return true;
|
|
@@ -238,7 +238,7 @@ export class ItemStorage {
|
|
|
238
238
|
this.selectItem(item);
|
|
239
239
|
return;
|
|
240
240
|
}
|
|
241
|
-
console.warn(`ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`);
|
|
241
|
+
console.warn(`ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)} when trying to select it.`);
|
|
242
242
|
};
|
|
243
243
|
for (const modelValue of ngModel) {
|
|
244
244
|
selectItemByValue(modelValue);
|
|
@@ -247,18 +247,25 @@ export class ItemStorage {
|
|
|
247
247
|
findItemByValue(valueToFind) {
|
|
248
248
|
let findBy;
|
|
249
249
|
if (this._ardParentComp.compareWith()) {
|
|
250
|
-
findBy = item => this._ardParentComp.compareWith()(valueToFind, item.value);
|
|
250
|
+
findBy = item => this._ardParentComp.compareWith()(valueToFind, item.value());
|
|
251
251
|
}
|
|
252
252
|
else {
|
|
253
|
-
findBy = item => item.value === valueToFind;
|
|
253
|
+
findBy = item => item.value() === valueToFind;
|
|
254
254
|
}
|
|
255
255
|
return this._items().find(item => findBy(item));
|
|
256
256
|
}
|
|
257
257
|
async addCustomOption(value, fn) {
|
|
258
258
|
const fnResult = fn(value);
|
|
259
259
|
let optionValue = fnResult;
|
|
260
|
-
if (isPromise(optionValue))
|
|
261
|
-
|
|
260
|
+
if (isPromise(optionValue)) {
|
|
261
|
+
try {
|
|
262
|
+
optionValue = await optionValue;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
console.error(`ARD-NF${this._ardParentComp._componentId}2: Failed to add a custom option. The promise was rejected with the following error:`, error);
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
262
269
|
const newOptionObj = this._addSingleItem(optionValue);
|
|
263
270
|
return newOptionObj;
|
|
264
271
|
}
|
|
@@ -391,7 +398,7 @@ export class ItemStorage {
|
|
|
391
398
|
}
|
|
392
399
|
const currentItem = this.highlightedItems().last();
|
|
393
400
|
const highlightableItems = this._getHiglightableItems();
|
|
394
|
-
const currentIndexInFiltered = highlightableItems.findIndex(item => item.index
|
|
401
|
+
const currentIndexInFiltered = highlightableItems.findIndex(item => item.index === currentItem.index);
|
|
395
402
|
let nextItemIndex = currentIndexInFiltered + offset;
|
|
396
403
|
if (nextItemIndex >= highlightableItems.length) {
|
|
397
404
|
nextItemIndex -= highlightableItems.length;
|
|
@@ -436,4 +443,4 @@ export class ItemStorage {
|
|
|
436
443
|
return newFilteredItems;
|
|
437
444
|
}
|
|
438
445
|
}
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9kcm9wZG93bi1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFtQ2xHLE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQTZCLGNBQStCO1FBQS9CLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQVIzQyxZQUFPLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELFdBQU0sR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsTUFBTSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLE1BQU0sQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDbEQsNkJBQXdCLEdBQUcsTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUNsRSxtQkFBYyxHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUlqRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQzthQUN6QixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQzVDLENBQUM7UUFDTyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakQscUJBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXZELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTSxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0YsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFLakUsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFGLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEUsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckUseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSx1QkFBa0IsR0FBRyxRQUFRLENBQ3BDLEdBQUcsRUFBRSxDQUNILElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFO1lBQ3JDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQ3pFLENBQUM7UUErTWUsZ0NBQTJCLEdBQUcsTUFBTSxDQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELDJCQUFzQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQW5QRixDQUFDO0lBc0J4RCxhQUFhLENBQUMsS0FBa0I7UUFDdEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQWFELFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUN0RixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxRQUFlLENBQUM7Z0JBQ3BCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELEtBQUssR0FBRyxRQUFRLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzVCLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzdDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRiwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFdkMscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2Qix1QkFBdUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkQsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFDTyxjQUFjLENBQUMsSUFBUztRQUM5QixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMseUNBQXlDO1FBQ3pDLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0Qsc0NBQXNDO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUV2Ryw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFM0Msb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ08sb0JBQW9CLENBQUksSUFBTztRQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDTywyQkFBMkIsQ0FBbUIsS0FBUTtRQUM1RCxxQ0FBcUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFFcEcsNkJBQTZCO1FBQzdCLElBQUksU0FBYyxDQUFDO1FBQ25CLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFFckcsb0JBQW9CO1FBQ3BCLElBQUksVUFBVSxHQUFRLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdkQsOERBQThEO1FBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4RSxvRUFBb0U7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDakMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELCtCQUErQjtRQUMvQixVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNPLGNBQWMsQ0FBQyxXQUFnQixFQUFFLEtBQWEsRUFBRSxpQkFBMEI7UUFDaEYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQzdCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNwQixLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNFLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN2QixRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUN4QixvQkFBb0IsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ3BDLENBQUM7UUFDSixDQUFDO1FBQ0QsV0FBVztRQUNYLE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDL0csTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVsRCxXQUFXO1FBQ1gsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMvRyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUUzRCxjQUFjO1FBQ2QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDckcsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQztRQUVELFlBQVk7UUFDWixJQUFJLEtBQUssR0FBUSxTQUFTLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFCLEtBQUssR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNoQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQy9CLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELFFBQVE7UUFDUixPQUFPO1lBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDN0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUNPLGVBQWU7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUU5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUFFLFNBQVM7WUFFcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNPLFdBQVcsQ0FBQyxJQUFlO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtvQkFDaEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUN2QixRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQzNCLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ08sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxHQUFHLENBQUM7WUFDYjtnQkFDRSxTQUFTO2dCQUNUO29CQUNFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNqQixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUN2QixXQUFXLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDM0I7YUFDRjtTQUNGLENBQW9CLENBQUM7SUFDeEIsQ0FBQztJQUNPLGtCQUFrQixDQUFDLE9BQWM7UUFDdkMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNyRyxPQUFPLENBQUMsSUFBSSxDQUNWLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLHFCQUFxQixJQUFJLENBQUMsU0FBUyxDQUMxRSxJQUFJLENBQ0wsK0VBQStFLENBQ2pGLENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxPQUFjO1FBQzdCLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsU0FBUyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksdUNBQXVDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUN4SCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNqQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUNELGVBQWUsQ0FBQyxXQUFnQjtRQUM5QixJQUFJLE1BQW9DLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdEMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9FLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQWEsRUFBRSxFQUFnRDtRQUNuRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUFFLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQztRQUU1RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLO1FBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1QixJQUFJLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFO1lBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRW5GLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUNELGlCQUFpQjtRQUNmLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQUcsS0FBa0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDM0MsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDM0IsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsa0JBQWtCLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQUUsU0FBUztZQUM5QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLE1BQU07WUFDUixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBRyxLQUFrQjtRQUNoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUFFLFNBQVM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM5QyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxjQUFjLENBQUMsS0FBcUI7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxJQUFlO1FBQ2pDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLEdBQUcsS0FBa0I7UUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxlQUFlLENBQUMsR0FBRyxLQUFrQjtRQUNuQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztnQkFBRSxPQUFPO1lBRXZDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ08scUJBQXFCO1FBQzNCLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDdkMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNPLHlCQUF5QjtRQUMvQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLHdCQUF3QixFQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsSUFBZTtRQUNwQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELGlCQUFpQixDQUFDLE1BQWMsRUFBRSxRQUFrQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hELE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTFHLElBQUksYUFBYSxHQUFHLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztRQUNwRCxJQUFJLGFBQWEsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQyxhQUFhLElBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixhQUFhLElBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDdEQsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQWtCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUMvQyxVQUFVLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDOUMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDOztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWhGLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQ25FLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyByZXNvbHZlUGF0aCB9IGZyb20gJ3Jlc29sdmUtb2JqZWN0LXBhdGgnO1xyXG5pbXBvcnQgeyBhbnksIGV2YWx1YXRlLCBpc0FycmF5LCBpc0RlZmluZWQsIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSwgaXNQcm9taXNlIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBBZGRDdXN0b21GbiB9IGZyb20gJy4uLy4uL3NlbGVjdC9zZWxlY3QudHlwZXMnO1xyXG5pbXBvcnQgeyBBcmRJdGVtR3JvdXBNYXAsIEFyZE9wdGlvbiwgQXJkT3B0aW9uR3JvdXAsIENvbXBhcmVXaXRoRm4sIEdyb3VwQnlGbiwgU2VhcmNoRm4gfSBmcm9tICcuLi8uLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cyB7XHJcbiAgdmFsdWVGcm9tOiBzdHJpbmc7XHJcbiAgbGFiZWxGcm9tOiBzdHJpbmc7XHJcbiAgZGlzYWJsZWRGcm9tOiBzdHJpbmc7XHJcbiAgZ3JvdXBMYWJlbEZyb206IHN0cmluZztcclxuICBncm91cERpc2FibGVkRnJvbTogc3RyaW5nO1xyXG4gIGNoaWxkcmVuRnJvbTogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1TdG9yYWdlSG9zdCB7XHJcbiAgcmVhZG9ubHkgdmFsdWVGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XHJcbiAgcmVhZG9ubHkgbGFiZWxGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWRGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XHJcbiAgcmVhZG9ubHkgaW52ZXJ0RGlzYWJsZWQ6IFNpZ25hbDxOdWxsYWJsZTxib29sZWFuPj47XHJcbiAgcmVhZG9ubHkgZ3JvdXBMYWJlbEZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmcgfCBHcm91cEJ5Rm4+PjtcclxuICByZWFkb25seSBncm91cERpc2FibGVkRnJvbTogU2lnbmFsPE51bGxhYmxlPHN0cmluZz4+O1xyXG4gIHJlYWRvbmx5IGNoaWxkcmVuRnJvbTogU2lnbmFsPE51bGxhYmxlPHN0cmluZz4+O1xyXG4gIHJlYWRvbmx5IERFRkFVTFRTOiBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cztcclxuICByZWFkb25seSBpdGVtc0FscmVhZHlHcm91cGVkOiBTaWduYWw8TnVsbGFibGU8Ym9vbGVhbj4+O1xyXG4gIHJlYWRvbmx5IGhpZGVTZWxlY3RlZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIHJlYWRvbmx5IHNlYXJjaENhc2VTZW5zaXRpdmU6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBzZWFyY2hGbjogU2lnbmFsPFNlYXJjaEZuPjtcclxuICByZWFkb25seSBjb21wYXJlV2l0aDogU2lnbmFsPE51bGxhYmxlPENvbXBhcmVXaXRoRm4+PjtcclxuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGU6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBzb3J0TXVsdGlwbGVWYWx1ZXM6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBtYXhTZWxlY3RlZEl0ZW1zOiBTaWduYWw8TnVsbGFibGU8bnVtYmVyPj47XHJcbiAgcmVhZG9ubHkgYWRkQ3VzdG9tOiBTaWduYWw8Ym9vbGVhbiB8IEFkZEN1c3RvbUZuPGFueT4gfCBBZGRDdXN0b21GbjxQcm9taXNlPGFueT4+PjtcclxuICByZWFkb25seSBfY29tcG9uZW50SWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEl0ZW1TdG9yYWdlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9ncm91cHMgPSBzaWduYWw8QXJkSXRlbUdyb3VwTWFwPih0aGlzLl9jcmVhdGVFbXB0eUdyb3VwTWFwKCkpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zID0gc2lnbmFsPEFyZE9wdGlvbltdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyZWRJdGVtcyA9IHNpZ25hbDxBcmRPcHRpb25bXT4oW10pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hpZ2hsaWdodGVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uW10+KFtdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEdyb3VwcyA9IHNpZ25hbDxBcmRPcHRpb25Hcm91cFtdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0gPSBzaWduYWw8TnVsbGFibGU8QXJkT3B0aW9uPj4odW5kZWZpbmVkKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZEl0ZW1zID0gc2lnbmFsPEFyZE9wdGlvbltdPihbXSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2FyZFBhcmVudENvbXA6IEl0ZW1TdG9yYWdlSG9zdCkge31cclxuXHJcbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT5cclxuICAgIEFycmF5LmZyb20odGhpcy5fZ3JvdXBzKCkuZW50cmllcygpKVxyXG4gICAgICAubWFwKChbLCBncm91cF0pID0+IGdyb3VwKVxyXG4gICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmNoaWxkcmVuKCkubGVuZ3RoKVxyXG4gICk7XHJcbiAgcmVhZG9ubHkgaXRlbXMgPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XHJcbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2ZpbHRlcmVkSXRlbXMuYXNSZWFkb25seSgpO1xyXG4gIHJlYWRvbmx5IGhpZ2hsaWdodGVkSXRlbXMgPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLnNvcnRNdWx0aXBsZVZhbHVlcygpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIHJldHVybiBhLmluZGV4KCkgLSBiLmluZGV4KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMoKTtcclxuICB9KTtcclxuICByZWFkb25seSBsYXN0U2VsZWN0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyZWRJdGVtcygpLmxhc3QoMSwgaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCgpKSk7XHJcblxyXG4gIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcygpKSk7XHJcbiAgcHJpdmF0ZSBfaXRlbXNUb1ZhbHVlKGl0ZW1zOiBBcmRPcHRpb25bXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKCkpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgaXNOb0l0ZW1zVG9TZWxlY3QgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pdGVtcygpLmxlbmd0aCA9PT0gdGhpcy5fc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCk7XHJcbiAgcmVhZG9ubHkgaXNOb0l0ZW1zRm91bmQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkubGVuZ3RoID09PSAwKTtcclxuICByZWFkb25seSBpc0FueUl0ZW1TZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3NlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwKTtcclxuICByZWFkb25seSBpc0FueUl0ZW1IaWdobGlnaHRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKS5sZW5ndGggPiAwKTtcclxuICByZWFkb25seSBpc0l0ZW1MaW1pdFJlYWNoZWQgPSBjb21wdXRlZChcclxuICAgICgpID0+XHJcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlKCkgJiZcclxuICAgICAgaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpKSAmJlxyXG4gICAgICB0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMoKSEgPD0gdGhpcy5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoXHJcbiAgKTtcclxuXHJcbiAgc2V0SXRlbXMoaXRlbXM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgYXJlSXRlbXNQcmltaXRpdmUgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tKCkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5pdGVtc0FscmVhZHlHcm91cGVkKCkpIHtcclxuICAgICAgY29uc3QgbmV3SXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBncm91cCBvZiBpdGVtcykge1xyXG4gICAgICAgIGxldCBjaGlsZHJlbjogYW55W107XHJcbiAgICAgICAgW2NoaWxkcmVuLCBhcmVJdGVtc1ByaW1pdGl2ZV0gPSB0aGlzLl91bmdyb3VwQWxyZWFkeUdyb3VwZWRJdGVtcyhncm91cCk7XHJcbiAgICAgICAgbmV3SXRlbXMucHVzaCguLi5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgICAgaXRlbXMgPSBuZXdJdGVtcztcclxuICAgIH1cclxuICAgIGlmIChhbnkoaXRlbXMsIGlzUHJpbWl0aXZlKSkge1xyXG4gICAgICBpdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLl9wcmltaXRpdmVJdGVtc01hcEZuKTtcclxuICAgICAgYXJlSXRlbXNQcmltaXRpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2l0ZW1zLnNldChcclxuICAgICAgaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIGluZGV4LCBhcmVJdGVtc1ByaW1pdGl2ZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIC8vYWRkIGFsbCBpdGVtcyB0byBmaWx0ZXIgYXJyYXlcclxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMuc2V0KHRoaXMuX2l0ZW1zKCkpO1xyXG5cclxuICAgIC8vYWRkIGl0ZW1zIHRvIGdyb3Vwc1xyXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuXHJcbiAgICAvL3dyaXRlIHZhbHVlIGlmIGl0IHdhc1xyXG4gICAgY29uc3QgdG9Xcml0ZSA9IHRoaXMuX3ZhbHVlVG9Xcml0ZUFmdGVySXRlbXNMb2FkKCk7XHJcbiAgICBpZiAodG9Xcml0ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlV3JpdGVWYWx1ZSh0b1dyaXRlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXJlSXRlbXNQcmltaXRpdmU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZFNpbmdsZUl0ZW0oaXRlbTogYW55KTogQXJkT3B0aW9uIHtcclxuICAgIGNvbnN0IGlzSXRlbVByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlKGl0ZW0pO1xyXG4gICAgLy9tYXAgYSBwcmltaXRpdmUgaXRlbSB0byBhIHVzYWJsZSBvYmplY3RcclxuICAgIGlmIChpc0l0ZW1QcmltaXRpdmUpIHtcclxuICAgICAgaXRlbSA9IHRoaXMuX3ByaW1pdGl2ZUl0ZW1zTWFwRm4oaXRlbSk7XHJcbiAgICB9XHJcbiAgICAvL21hcCB0aGUgaXRlbSB0byBjcmVhdGUgZGF0YSBiaW5kaW5nc1xyXG4gICAgY29uc3QgYXJkT3B0aW9uID0gdGhpcy5fc2V0SXRlbXNNYXBGbihpdGVtLCAodGhpcy5faXRlbXMoKS5sYXN0KCk/LmluZGV4KCkgPz8gMCkgKyAxLCBpc0l0ZW1QcmltaXRpdmUpO1xyXG5cclxuICAgIC8vcHVzaCB0aGUgaXRlbSBpbnRvIGFsbCBpdGVtc1xyXG4gICAgdGhpcy5faXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIGFyZE9wdGlvbl0pO1xyXG5cclxuICAgIC8vYWRkIGl0ZW0gdG8gZ3JvdXBzXHJcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG5cclxuICAgIHJldHVybiBhcmRPcHRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ByaW1pdGl2ZUl0ZW1zTWFwRm48VD4oaXRlbTogVCk6IHsgdmFsdWU6IFQgfSB7XHJcbiAgICByZXR1cm4geyB2YWx1ZTogaXRlbSB9O1xyXG4gIH1cclxuICBwcml2YXRlIF91bmdyb3VwQWxyZWFkeUdyb3VwZWRJdGVtczxUIGV4dGVuZHMgb2JqZWN0Pihncm91cDogVCk6IFthbnlbXSwgYm9vbGVhbl0ge1xyXG4gICAgLy9kZXRlcm1pbmUgZ3JvdXBCeSAoZ3JvdXBMYWJlbCkgcGF0aFxyXG4gICAgY29uc3QgZ3JvdXBCeSA9IHRoaXMuX2FyZFBhcmVudENvbXAuZ3JvdXBMYWJlbEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmdyb3VwTGFiZWxGcm9tO1xyXG5cclxuICAgIC8vZ2V0IGdyb3VwIGxhYmVsIGZyb20gb2JqZWN0XHJcbiAgICBsZXQgZ3JvdXBOYW1lOiBhbnk7XHJcbiAgICBpZiAodHlwZW9mIGdyb3VwQnkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGdyb3VwTmFtZSA9IHJlc29sdmVQYXRoKGdyb3VwLCBncm91cEJ5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VwTmFtZSA9IGdyb3VwQnkoZ3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZGV0ZXJtaW5lIGdyb3VwIGNoaWxkcmVuIHBhdGhcclxuICAgIGNvbnN0IGNoaWxkcmVuUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuY2hpbGRyZW5Gcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5jaGlsZHJlbkZyb207XHJcblxyXG4gICAgLy9nZXQgZ3JvdXAgY2hpbGRyZW5cclxuICAgIGxldCBncm91cEl0ZW1zOiBhbnkgPSByZXNvbHZlUGF0aChncm91cCwgY2hpbGRyZW5QYXRoKTtcclxuXHJcbiAgICAvL3JldHVybiBlbXB0eSBhcnJheSBpZiBncm91cEl0ZW1zIGlzIG5vdCBhbiBhcnJheSBvciBpcyBlbXB0eVxyXG4gICAgaWYgKCFpc0FycmF5KGdyb3VwSXRlbXMpIHx8IGdyb3VwSXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gW1tdLCBmYWxzZV07XHJcblxyXG4gICAgLy9jaGVjayBpZiB0aGUgYXJyYXkgaXMgYW4gYXJyYXkgb2YgcHJpbWl0aXZlcywgYW5kIG1hcCBpdCBpZiBuZWVkZWRcclxuICAgIGNvbnN0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XHJcbiAgICBpZiAoYW55KGdyb3VwSXRlbXMsIGlzUHJpbWl0aXZlKSkge1xyXG4gICAgICBncm91cEl0ZW1zID0gZ3JvdXBJdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XHJcbiAgICB9XHJcbiAgICAvL2FkZCBncm91cCBuYW1lIHRvIGV2ZXJ5IGNoaWxkXHJcbiAgICBncm91cEl0ZW1zID0gZ3JvdXBJdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpdGVtLiRhcmRncm91cCA9IGdyb3VwTmFtZTtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gW2dyb3VwSXRlbXMsIGFyZUl0ZW1zUHJpbWl0aXZlXTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvbiB7XHJcbiAgICBpZiAoYXJlSXRlbXNQcmltaXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpdGVtRGF0YTogc2lnbmFsKHJhd0l0ZW1EYXRhKSxcclxuICAgICAgICBpbmRleDogc2lnbmFsKGluZGV4KSxcclxuICAgICAgICB2YWx1ZTogc2lnbmFsKHJhd0l0ZW1EYXRhLnZhbHVlKSxcclxuICAgICAgICBsYWJlbDogc2lnbmFsKHJhd0l0ZW1EYXRhLnZhbHVlPy50b1N0cmluZz8uKCkgPz8gU3RyaW5nKHJhd0l0ZW1EYXRhLnZhbHVlKSksXHJcbiAgICAgICAgZGlzYWJsZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgaGlnaGxpZ2h0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgZ3JvdXA6IHNpZ25hbCh1bmRlZmluZWQpLFxyXG4gICAgICAgIGhpZ2hsaWdodGVkX3JlY2VudGx5OiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy9nZXQgdmFsdWVcclxuICAgIGNvbnN0IHZhbHVlUGF0aCA9XHJcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLnZhbHVlRnJvbTtcclxuICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHZhbHVlUGF0aCk7XHJcblxyXG4gICAgLy9nZXQgbGFiZWxcclxuICAgIGNvbnN0IGxhYmVsUGF0aCA9XHJcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmxhYmVsRnJvbTtcclxuICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGxhYmVsUGF0aCkgPz8gdmFsdWU7XHJcblxyXG4gICAgLy9nZXQgZGlzYWJsZWRcclxuICAgIGNvbnN0IGRpc2FibGVkUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuZGlzYWJsZWRGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5kaXNhYmxlZEZyb207XHJcbiAgICBsZXQgZGlzYWJsZWQgPSBldmFsdWF0ZShyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZGlzYWJsZWRQYXRoKSk7XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5pbnZlcnREaXNhYmxlZCgpKSB7XHJcbiAgICAgIGRpc2FibGVkID0gIWRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ2V0IGdyb3Vwc1xyXG4gICAgbGV0IGdyb3VwOiBhbnkgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBncm91cEJ5ID0gdGhpcy5fYXJkUGFyZW50Q29tcC5ncm91cExhYmVsRnJvbSgpO1xyXG4gICAgaWYgKGdyb3VwQnkpIHtcclxuICAgICAgaWYgKHJhd0l0ZW1EYXRhLiRhcmRncm91cCkge1xyXG4gICAgICAgIGdyb3VwID0gcmF3SXRlbURhdGEuJGFyZGdyb3VwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZ3JvdXBCeSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGdyb3VwID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGdyb3VwQnkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBncm91cCA9IGdyb3VwQnkocmF3SXRlbURhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vcmV0dXJuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpdGVtRGF0YTogc2lnbmFsKHJhd0l0ZW1EYXRhKSxcclxuICAgICAgaW5kZXg6IHNpZ25hbChpbmRleCksXHJcbiAgICAgIHZhbHVlOiBzaWduYWwodmFsdWUpLFxyXG4gICAgICBsYWJlbDogc2lnbmFsKGxhYmVsPy50b1N0cmluZz8uKCkgPz8gU3RyaW5nKGxhYmVsKSksXHJcbiAgICAgIGRpc2FibGVkOiBzaWduYWwoZGlzYWJsZWQpLFxyXG4gICAgICBncm91cDogc2lnbmFsKGdyb3VwKSxcclxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICBoaWdobGlnaHRlZF9yZWNlbnRseTogc2lnbmFsKGZhbHNlKSxcclxuICAgIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX3BvcHVsYXRlR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ3JvdXBzLnNldCh0aGlzLl9jcmVhdGVFbXB0eUdyb3VwTWFwKCkpO1xyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkpIHtcclxuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkgJiYgaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcclxuXHJcbiAgICAgIHRoaXMuX2FkZFRvR3JvdXAoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZFRvR3JvdXAoaXRlbTogQXJkT3B0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cEtleSA9IGl0ZW0uZ3JvdXAoKTtcclxuICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5fZ3JvdXBzKCkuZ2V0KGdyb3VwS2V5KTtcclxuICAgIC8vY3JlYXRlIG5ldyBncm91cCBpZiBuZWVkZWRcclxuICAgIGlmICghdGFyZ2V0R3JvdXApIHtcclxuICAgICAgdGhpcy5fZ3JvdXBzLnVwZGF0ZSh2ID0+IHtcclxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHYpO1xyXG4gICAgICAgIG1hcC5zZXQoZ3JvdXBLZXksIHtcclxuICAgICAgICAgIGxhYmVsOiBzaWduYWwoU3RyaW5nKGdyb3VwS2V5ID8/ICcnKSksXHJcbiAgICAgICAgICBjaGlsZHJlbjogc2lnbmFsKFtpdGVtXSksXHJcbiAgICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgICAgIHNlbGVjdGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgICAgaGlnaGxpZ2h0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1hcDtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRhcmdldEdyb3VwLmNoaWxkcmVuLnVwZGF0ZSh2ID0+IFsuLi52LCBpdGVtXSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUVtcHR5R3JvdXBNYXAoKTogQXJkSXRlbUdyb3VwTWFwIHtcclxuICAgIHJldHVybiBuZXcgTWFwKFtcclxuICAgICAgW1xyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogc2lnbmFsKCcnKSxcclxuICAgICAgICAgIGNoaWxkcmVuOiBzaWduYWwoW10pLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICBdKSBhcyBBcmRJdGVtR3JvdXBNYXA7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWw6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbmdNb2RlbC5ldmVyeShpdGVtID0+IHtcclxuICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCkgJiYgaXNPYmplY3QoaXRlbSkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBBUkQtV0Eke3RoaXMuX2FyZFBhcmVudENvbXAuX2NvbXBvbmVudElkfTA6IFNldHRpbmcgb2JqZWN0KCR7SlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgICAgICAgIGl0ZW1cclxuICAgICAgICAgICl9KSBhcyB5b3VyIG1vZGVsIHdpdGggW3ZhbHVlRnJvbV0gaXMgbm90IGFsbG93ZWQgdW5sZXNzIFtjb21wYXJlV2l0aF0gaXMgdXNlZC5gXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWVUb1dyaXRlQWZ0ZXJJdGVtc0xvYWQgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgaGFuZGxlV3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgLy9kZWZlciB3cml0aW5nIHRoZSB2YWx1ZSBpZiBubyBvcHRpb25zIGFyZSB5ZXQgbG9hZGVkXHJcbiAgICBpZiAoIXRoaXMuX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCgpICYmIHRoaXMuX2l0ZW1zKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlVG9Xcml0ZUFmdGVySXRlbXNMb2FkLnNldChuZ01vZGVsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXJBbGxTZWxlY3RlZCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5faXNXcml0ZVZhbHVlVmFsaWQobmdNb2RlbCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdEl0ZW1CeVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZEl0ZW1CeVZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYEFSRC1XQSR7dGhpcy5fYXJkUGFyZW50Q29tcC5fY29tcG9uZW50SWR9MTogQ291bGRuJ3QgZmluZCBhbiBpdGVtIHdpdGggdmFsdWUgJHt2YWx1ZT8udG9TdHJpbmc/LigpIHx8IFN0cmluZyh2YWx1ZSl9LmBcclxuICAgICAgKTtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBtb2RlbFZhbHVlIG9mIG5nTW9kZWwpIHtcclxuICAgICAgc2VsZWN0SXRlbUJ5VmFsdWUobW9kZWxWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZpbmRJdGVtQnlWYWx1ZSh2YWx1ZVRvRmluZDogYW55KTogQXJkT3B0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb24pID0+IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCgpKSB7XHJcbiAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gdGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCgpISh2YWx1ZVRvRmluZCwgaXRlbS52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaW5kQnkgPSBpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlVG9GaW5kO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zKCkuZmluZChpdGVtID0+IGZpbmRCeShpdGVtKSk7XHJcbiAgfVxyXG4gIGFzeW5jIGFkZEN1c3RvbU9wdGlvbih2YWx1ZTogc3RyaW5nLCBmbjogQWRkQ3VzdG9tRm48YW55PiB8IEFkZEN1c3RvbUZuPFByb21pc2U8YW55Pj4pOiBQcm9taXNlPEFyZE9wdGlvbj4ge1xyXG4gICAgY29uc3QgZm5SZXN1bHQgPSBmbih2YWx1ZSk7XHJcblxyXG4gICAgbGV0IG9wdGlvblZhbHVlID0gZm5SZXN1bHQ7XHJcbiAgICBpZiAoaXNQcm9taXNlKG9wdGlvblZhbHVlKSkgb3B0aW9uVmFsdWUgPSBhd2FpdCBvcHRpb25WYWx1ZTtcclxuXHJcbiAgICBjb25zdCBuZXdPcHRpb25PYmogPSB0aGlzLl9hZGRTaW5nbGVJdGVtKG9wdGlvblZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gbmV3T3B0aW9uT2JqO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxTZWxlY3RlZChyZXBvcHVsYXRlR3JvdXBzID0gZmFsc2UpOiBhbnlbXSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcygpKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlbW92ZWRJdGVtVmFsdWVzID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMoKSk7XHJcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNldChbXSk7XHJcblxyXG4gICAgaWYgKHJlcG9wdWxhdGVHcm91cHMgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuXHJcbiAgICByZXR1cm4gcmVtb3ZlZEl0ZW1WYWx1ZXM7XHJcbiAgfVxyXG4gIGNsZWFyTGFzdFNlbGVjdGVkKCk6IEFyZE9wdGlvbiB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5fc2VsZWN0ZWRJdGVtcygpLmxhc3QoKTtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuIGl0ZW07XHJcbiAgICB0aGlzLnVuc2VsZWN0SXRlbShpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IFthbnlbXSwgYW55W10sIGFueVtdXSB7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQoKSkge1xyXG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XHJcbiAgICB9XHJcbiAgICBsZXQgdW5zZWxlY3RlZCA9IFtdO1xyXG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XHJcbiAgICAgIHVuc2VsZWN0ZWQgPSB0aGlzLmNsZWFyQWxsU2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpdGVtc1NlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGl0ZW1zU2VsZWN0ZWRDb3VudCsrO1xyXG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcclxuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkpIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBpdGVtLnNlbGVjdGVkLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy51cGRhdGUodiA9PiBbLi4udiwgaXRlbV0pO1xyXG4gICAgICBpdGVtc1NlbGVjdGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXMuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XHJcbiAgICByZXR1cm4gW3RoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1NlbGVjdGVkKSwgdW5zZWxlY3RlZCwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zRmFpbGVkVG9TZWxlY3QpXTtcclxuICB9XHJcbiAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IGFueVtdIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpZiAoIWl0ZW0uc2VsZWN0ZWQoKSkgY29udGludWU7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMudXBkYXRlKHYgPT4gdi5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKCkpKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxIaWdobGlnaHRzKCk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKSkge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzKCkpIHtcclxuICAgICAgZ3JvdXAuaGlnaGxpZ2h0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMuc2V0KFtdKTtcclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzLnNldChbXSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEdyb3VwKGdyb3VwOiBBcmRPcHRpb25Hcm91cCk6IEFyZE9wdGlvbiB7XHJcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG4gICAgZ3JvdXAuaGlnaGxpZ2h0ZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLmdyb3VwLmNoaWxkcmVuKCkpO1xyXG4gICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuKCkuZmlyc3QoKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtOiBBcmRPcHRpb24pOiBBcmRPcHRpb24gfCBudWxsIHtcclxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRpc2FibGVkKCkpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogQXJkT3B0aW9uIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldCh0cnVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIC4uLml0ZW1zXSk7XHJcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xyXG4gIH1cclxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmhpZ2hsaWdodGVkKSByZXR1cm47XHJcblxyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLnVwZGF0ZSh2ID0+IHYuZmlsdGVyKHYgPT4gdi5oaWdobGlnaHRlZCgpKSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEZpcnN0SXRlbSgpOiBBcmRPcHRpb24gfCBudWxsIHtcclxuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XHJcbiAgICBjb25zdCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0oaXRlbXNUb0hpZ2hsaWdodC5maXJzdCgpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0TGFzdEl0ZW0oKTogQXJkT3B0aW9uIHwgbnVsbCB7XHJcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW1zVG9IaWdobGlnaHQubGFzdCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTogQXJkT3B0aW9uW10ge1xyXG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSk7XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkge1xyXG4gICAgICBpdGVtc1RvSGlnaGxpZ2h0ID0gaXRlbXNUb0hpZ2hsaWdodC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtc1RvSGlnaGxpZ2h0O1xyXG4gIH1cclxuICBoaWdobGlnaHRBbGxJdGVtcygpOiB2b2lkIHtcclxuICAgIHRoaXMuaGlnaGxpZ2h0SXRlbSguLi50aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2xlYXJSZWNlbnRseUhpZ2hsaWdodGVkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtKCkpIHtcclxuICAgICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0oKSEuaGlnaGxpZ2h0ZWRfcmVjZW50bHkuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0UmVjZW50bHlIaWdobGlnaHRlZChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX2NsZWFyUmVjZW50bHlIaWdobGlnaHRlZCgpO1xyXG4gICAgaXRlbS5oaWdobGlnaHRlZF9yZWNlbnRseS5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLl9yZWNlbnRseUhpZ2hsaWdodGVkSXRlbS5zZXQoaXRlbSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRPcHRpb24gfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKS5sYXN0KCk7XHJcbiAgICBjb25zdCBoaWdobGlnaHRhYmxlSXRlbXMgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4SW5GaWx0ZXJlZCA9IGhpZ2hsaWdodGFibGVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4KCkgPT09IGN1cnJlbnRJdGVtLmluZGV4KCkpO1xyXG5cclxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5GaWx0ZXJlZCArIG9mZnNldDtcclxuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGhpZ2hsaWdodGFibGVJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgbmV4dEl0ZW1JbmRleCAtPSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKG5leHRJdGVtSW5kZXggPCAwKSB7XHJcbiAgICAgIG5leHRJdGVtSW5kZXggKz0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IGhpZ2hsaWdodGFibGVJdGVtc1tuZXh0SXRlbUluZGV4XTtcclxuXHJcbiAgICBpZiAoaGFzU2hpZnQgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSkge1xyXG4gICAgICBpZiAoaXRlbVRvSGlnaGxpZ2h0LmhpZ2hsaWdodGVkKCkpIHtcclxuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0SXRlbShjdXJyZW50SXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG4gIH1cclxuICBmaWx0ZXIoZmlsdGVyVGVybTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgaWYgKCFmaWx0ZXJUZXJtKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5yZXNldEZpbHRlcmVkKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLnNlYXJjaENhc2VTZW5zaXRpdmUoKSkge1xyXG4gICAgICBmaWx0ZXJUZXJtID0gZmlsdGVyVGVybS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlYXJjaEZuID0gdGhpcy5fYXJkUGFyZW50Q29tcC5zZWFyY2hGbigpO1xyXG4gICAgY29uc3QgbmV3RmlsdGVyZWRJdGVtcyA9IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gc2VhcmNoRm4oZmlsdGVyVGVybSwgaXRlbSkpO1xyXG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcy5zZXQobmV3RmlsdGVyZWRJdGVtcyk7XHJcblxyXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNOb0l0ZW1zRm91bmQpIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICBlbHNlIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShuZXdGaWx0ZXJlZEl0ZW1zKTtcclxuICB9XHJcbiAgcmVzZXRGaWx0ZXJlZCgpOiBBcmRPcHRpb25bXSB7XHJcbiAgICBpZiAodGhpcy5fZmlsdGVyZWRJdGVtcygpLmxlbmd0aCA9PT0gdGhpcy5faXRlbXMoKS5sZW5ndGgpIHJldHVybiB0aGlzLl9pdGVtcygpO1xyXG5cclxuICAgIGxldCBuZXdGaWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMoKTtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCgpICYmIHRoaXMuaXNBbnlJdGVtU2VsZWN0ZWQoKSkge1xyXG4gICAgICBuZXdGaWx0ZXJlZEl0ZW1zID0gbmV3RmlsdGVyZWRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCgpKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XHJcbiAgICByZXR1cm4gbmV3RmlsdGVyZWRJdGVtcztcclxuICB9XHJcbn1cclxuIl19
|
|
446
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9kcm9wZG93bi1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUF5QmxHLE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQTZCLGNBQStCO1FBQS9CLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQVIzQyxZQUFPLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELFdBQU0sR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsTUFBTSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLE1BQU0sQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDbEQsNkJBQXdCLEdBQUcsTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUNsRSxtQkFBYyxHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUlqRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FB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LENBQUM7SUFDRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEYsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDbkUsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZXNvbHZlUGF0aCB9IGZyb20gJ3Jlc29sdmUtb2JqZWN0LXBhdGgnO1xuaW1wb3J0IHsgYW55LCBldmFsdWF0ZSwgaXNBcnJheSwgaXNEZWZpbmVkLCBpc09iamVjdCwgaXNQcmltaXRpdmUsIGlzUHJvbWlzZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IEFkZEN1c3RvbUZuIH0gZnJvbSAnLi4vLi4vc2VsZWN0L3NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyBBcmRJdGVtR3JvdXBNYXAsIEFyZE9wdGlvbiwgQXJkT3B0aW9uR3JvdXAsIENvbXBhcmVXaXRoRm4sIEdyb3VwQnlGbiwgU2VhcmNoRm4gfSBmcm9tICcuLi8uLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtU3RvcmFnZUhvc3Qge1xuICByZWFkb25seSB2YWx1ZUZyb206IFNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBsYWJlbEZyb206IFNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBkaXNhYmxlZEZyb206IFNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBpbnZlcnREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBncm91cExhYmVsRnJvbTogU2lnbmFsPHN0cmluZyB8IEdyb3VwQnlGbj47XG4gIHJlYWRvbmx5IGdyb3VwRGlzYWJsZWRGcm9tOiBTaWduYWw8c3RyaW5nPjtcbiAgcmVhZG9ubHkgY2hpbGRyZW5Gcm9tOiBTaWduYWw8c3RyaW5nPjtcbiAgcmVhZG9ubHkgaXRlbXNBbHJlYWR5R3JvdXBlZDogU2lnbmFsPE51bGxhYmxlPGJvb2xlYW4+PjtcbiAgcmVhZG9ubHkgaGlkZVNlbGVjdGVkOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHNlYXJjaENhc2VTZW5zaXRpdmU6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgc2VhcmNoRm46IFNpZ25hbDxTZWFyY2hGbj47XG4gIHJlYWRvbmx5IGNvbXBhcmVXaXRoOiBTaWduYWw8TnVsbGFibGU8Q29tcGFyZVdpdGhGbj4+O1xuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGU6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgc29ydE11bHRpcGxlVmFsdWVzOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IG1heFNlbGVjdGVkSXRlbXM6IFNpZ25hbDxOdWxsYWJsZTxudW1iZXI+PjtcbiAgcmVhZG9ubHkgYWRkQ3VzdG9tOiBTaWduYWw8Ym9vbGVhbiB8IEFkZEN1c3RvbUZuPGFueT4gfCBBZGRDdXN0b21GbjxQcm9taXNlPGFueT4+PjtcbiAgcmVhZG9ubHkgX2NvbXBvbmVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBJdGVtU3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dyb3VwcyA9IHNpZ25hbDxBcmRJdGVtR3JvdXBNYXA+KHRoaXMuX2NyZWF0ZUVtcHR5R3JvdXBNYXAoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zID0gc2lnbmFsPEFyZE9wdGlvbltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcmVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGlnaGxpZ2h0ZWRJdGVtcyA9IHNpZ25hbDxBcmRPcHRpb25bXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEdyb3VwcyA9IHNpZ25hbDxBcmRPcHRpb25Hcm91cFtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtID0gc2lnbmFsPE51bGxhYmxlPEFyZE9wdGlvbj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uW10+KFtdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9hcmRQYXJlbnRDb21wOiBJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBBcnJheS5mcm9tKHRoaXMuX2dyb3VwcygpLmVudHJpZXMoKSlcbiAgICAgIC5tYXAoKFssIGdyb3VwXSkgPT4gZ3JvdXApXG4gICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmNoaWxkcmVuKCkubGVuZ3RoKVxuICApO1xuICByZWFkb25seSBpdGVtcyA9IHRoaXMuX2l0ZW1zLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2ZpbHRlcmVkSXRlbXMuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBoaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5hc1JlYWRvbmx5KCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5zb3J0TXVsdGlwbGVWYWx1ZXMoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcygpO1xuICB9KTtcbiAgcmVhZG9ubHkgbGFzdFNlbGVjdGVkSXRlbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlcmVkSXRlbXMoKS5sYXN0KDEsIGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcygpKSk7XG4gIHByaXZhdGUgX2l0ZW1zVG9WYWx1ZShpdGVtczogQXJkT3B0aW9uW10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUoKSk7XG4gIH1cblxuICByZWFkb25seSBpc05vSXRlbXNUb1NlbGVjdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2l0ZW1zKCkubGVuZ3RoID09PSB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoKTtcbiAgcmVhZG9ubHkgaXNOb0l0ZW1zRm91bmQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkubGVuZ3RoID09PSAwKTtcbiAgcmVhZG9ubHkgaXNBbnlJdGVtU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMCk7XG4gIHJlYWRvbmx5IGlzQW55SXRlbUhpZ2hsaWdodGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xuICByZWFkb25seSBpc0l0ZW1MaW1pdFJlYWNoZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSAmJlxuICAgICAgaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpKSAmJlxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKCkhIDw9IHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aFxuICApO1xuXG4gIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tKCkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5pdGVtc0FscmVhZHlHcm91cGVkKCkpIHtcbiAgICAgIGNvbnN0IG5ld0l0ZW1zID0gW107XG4gICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGl0ZW1zKSB7XG4gICAgICAgIGxldCBjaGlsZHJlbjogYW55W107XG4gICAgICAgIFtjaGlsZHJlbiwgYXJlSXRlbXNQcmltaXRpdmVdID0gdGhpcy5fdW5ncm91cEFscmVhZHlHcm91cGVkSXRlbXMoZ3JvdXApO1xuICAgICAgICBuZXdJdGVtcy5wdXNoKC4uLmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIGl0ZW1zID0gbmV3SXRlbXM7XG4gICAgfVxuICAgIGlmIChhbnkoaXRlbXMsIGlzUHJpbWl0aXZlKSkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XG4gICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5faXRlbXMuc2V0KFxuICAgICAgaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0SXRlbXNNYXBGbihpdGVtLCBpbmRleCwgYXJlSXRlbXNQcmltaXRpdmUpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy9hZGQgYWxsIGl0ZW1zIHRvIGZpbHRlciBhcnJheVxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMuc2V0KHRoaXMuX2l0ZW1zKCkpO1xuXG4gICAgLy9hZGQgaXRlbXMgdG8gZ3JvdXBzXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIC8vd3JpdGUgdmFsdWUgaWYgaXQgd2FzXG4gICAgY29uc3QgdG9Xcml0ZSA9IHRoaXMuX3ZhbHVlVG9Xcml0ZUFmdGVySXRlbXNMb2FkKCk7XG4gICAgaWYgKHRvV3JpdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oYW5kbGVXcml0ZVZhbHVlKHRvV3JpdGUpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9hZGRTaW5nbGVJdGVtKGl0ZW06IGFueSk6IEFyZE9wdGlvbiB7XG4gICAgY29uc3QgaXNJdGVtUHJpbWl0aXZlID0gaXNQcmltaXRpdmUoaXRlbSk7XG4gICAgLy9tYXAgYSBwcmltaXRpdmUgaXRlbSB0byBhIHVzYWJsZSBvYmplY3RcbiAgICBpZiAoaXNJdGVtUHJpbWl0aXZlKSB7XG4gICAgICBpdGVtID0gdGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbihpdGVtKTtcbiAgICB9XG4gICAgLy9tYXAgdGhlIGl0ZW0gdG8gY3JlYXRlIGRhdGEgYmluZGluZ3NcbiAgICBjb25zdCBhcmRPcHRpb24gPSB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sICh0aGlzLl9pdGVtcygpLmxhc3QoKT8uaW5kZXggPz8gMCkgKyAxLCBpc0l0ZW1QcmltaXRpdmUpO1xuXG4gICAgLy9wdXNoIHRoZSBpdGVtIGludG8gYWxsIGl0ZW1zXG4gICAgdGhpcy5faXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIGFyZE9wdGlvbl0pO1xuXG4gICAgLy9hZGQgYWxsIGl0ZW1zIHRvIGZpbHRlciBhcnJheVxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMuc2V0KHRoaXMuX2l0ZW1zKCkpO1xuXG4gICAgLy9hZGQgaXRlbSB0byBncm91cHNcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuXG4gICAgcmV0dXJuIGFyZE9wdGlvbjtcbiAgfVxuICBwcml2YXRlIF9wcmltaXRpdmVJdGVtc01hcEZuPFQ+KGl0ZW06IFQpOiB7IHZhbHVlOiBUIH0ge1xuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XG4gIH1cbiAgcHJpdmF0ZSBfdW5ncm91cEFscmVhZHlHcm91cGVkSXRlbXM8VCBleHRlbmRzIG9iamVjdD4oZ3JvdXA6IFQpOiBbYW55W10sIGJvb2xlYW5dIHtcbiAgICAvL2RldGVybWluZSBncm91cEJ5IChncm91cExhYmVsKSBwYXRoXG4gICAgY29uc3QgZ3JvdXBCeSA9IHRoaXMuX2FyZFBhcmVudENvbXAuZ3JvdXBMYWJlbEZyb20oKTtcblxuICAgIC8vZ2V0IGdyb3VwIGxhYmVsIGZyb20gb2JqZWN0XG4gICAgbGV0IGdyb3VwTmFtZTogYW55O1xuICAgIGlmICh0eXBlb2YgZ3JvdXBCeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGdyb3VwTmFtZSA9IHJlc29sdmVQYXRoKGdyb3VwLCBncm91cEJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBOYW1lID0gZ3JvdXBCeShncm91cCk7XG4gICAgfVxuXG4gICAgLy9kZXRlcm1pbmUgZ3JvdXAgY2hpbGRyZW4gcGF0aFxuICAgIGNvbnN0IGNoaWxkcmVuUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuY2hpbGRyZW5Gcm9tKCk7XG5cbiAgICAvL2dldCBncm91cCBjaGlsZHJlblxuICAgIGxldCBncm91cEl0ZW1zOiBhbnkgPSByZXNvbHZlUGF0aChncm91cCwgY2hpbGRyZW5QYXRoKTtcblxuICAgIC8vcmV0dXJuIGVtcHR5IGFycmF5IGlmIGdyb3VwSXRlbXMgaXMgbm90IGFuIGFycmF5IG9yIGlzIGVtcHR5XG4gICAgaWYgKCFpc0FycmF5KGdyb3VwSXRlbXMpIHx8IGdyb3VwSXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gW1tdLCBmYWxzZV07XG5cbiAgICAvL2NoZWNrIGlmIHRoZSBhcnJheSBpcyBhbiBhcnJheSBvZiBwcmltaXRpdmVzLCBhbmQgbWFwIGl0IGlmIG5lZWRlZFxuICAgIGNvbnN0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XG4gICAgaWYgKGFueShncm91cEl0ZW1zLCBpc1ByaW1pdGl2ZSkpIHtcbiAgICAgIGdyb3VwSXRlbXMgPSBncm91cEl0ZW1zLm1hcCh0aGlzLl9wcmltaXRpdmVJdGVtc01hcEZuKTtcbiAgICB9XG4gICAgLy9hZGQgZ3JvdXAgbmFtZSB0byBldmVyeSBjaGlsZFxuICAgIGdyb3VwSXRlbXMgPSBncm91cEl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBpdGVtLiRhcmRncm91cCA9IGdyb3VwTmFtZTtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtncm91cEl0ZW1zLCBhcmVJdGVtc1ByaW1pdGl2ZV07XG4gIH1cbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvbiB7XG4gICAgaWYgKGFyZUl0ZW1zUHJpbWl0aXZlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtRGF0YTogc2lnbmFsKHJhd0l0ZW1EYXRhKSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICB2YWx1ZTogc2lnbmFsKHJhd0l0ZW1EYXRhLnZhbHVlKSxcbiAgICAgICAgbGFiZWw6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSkpLFxuICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxuICAgICAgICBncm91cDogdW5kZWZpbmVkLFxuICAgICAgICBoaWdobGlnaHRlZF9yZWNlbnRseTogc2lnbmFsKGZhbHNlKSxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vZ2V0IHZhbHVlXG4gICAgY29uc3QgdmFsdWVQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpO1xuICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHZhbHVlUGF0aCk7XG5cbiAgICAvL2dldCBsYWJlbFxuICAgIGNvbnN0IGxhYmVsUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKTtcbiAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBsYWJlbFBhdGgpID8/IHZhbHVlO1xuXG4gICAgLy9nZXQgZGlzYWJsZWRcbiAgICBjb25zdCBkaXNhYmxlZFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmRpc2FibGVkRnJvbSgpO1xuICAgIGxldCBkaXNhYmxlZCA9IGV2YWx1YXRlKHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBkaXNhYmxlZFBhdGgpKTtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5pbnZlcnREaXNhYmxlZCgpKSB7XG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvL2dldCBncm91cHNcbiAgICBsZXQgZ3JvdXA6IGFueSA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBncm91cEJ5ID0gdGhpcy5fYXJkUGFyZW50Q29tcC5ncm91cExhYmVsRnJvbSgpO1xuICAgIGlmIChncm91cEJ5KSB7XG4gICAgICBpZiAocmF3SXRlbURhdGEuJGFyZGdyb3VwKSB7XG4gICAgICAgIGdyb3VwID0gcmF3SXRlbURhdGEuJGFyZGdyb3VwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHR5cGVvZiBncm91cEJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGdyb3VwID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGdyb3VwQnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwID0gZ3JvdXBCeShyYXdJdGVtRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB2YWx1ZTogc2lnbmFsKHZhbHVlKSxcbiAgICAgIGxhYmVsOiBzaWduYWwobGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpKSxcbiAgICAgIGRpc2FibGVkOiBzaWduYWwoZGlzYWJsZWQpLFxuICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgIGhpZ2hsaWdodGVkX3JlY2VudGx5OiBzaWduYWwoZmFsc2UpLFxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBfcG9wdWxhdGVHcm91cHMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ3JvdXBzLnNldCh0aGlzLl9jcmVhdGVFbXB0eUdyb3VwTWFwKCkpO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2ZpbHRlcmVkSXRlbXMoKSkge1xuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkgJiYgaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcblxuICAgICAgdGhpcy5fYWRkVG9Hcm91cChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYWRkVG9Hcm91cChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBncm91cEtleSA9IGl0ZW0uZ3JvdXA7XG4gICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLl9ncm91cHMoKS5nZXQoZ3JvdXBLZXkpO1xuICAgIC8vY3JlYXRlIG5ldyBncm91cCBpZiBubyBzdWNoIGdyb3VwIGV4aXN0c1xuICAgIGlmICghdGFyZ2V0R3JvdXApIHtcbiAgICAgIHRoaXMuX2dyb3Vwcy51cGRhdGUodiA9PiB7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAodik7XG4gICAgICAgIG1hcC5zZXQoZ3JvdXBLZXksIHtcbiAgICAgICAgICBsYWJlbDogc2lnbmFsKFN0cmluZyhncm91cEtleSA/PyAnJykpLFxuICAgICAgICAgIGNoaWxkcmVuOiBzaWduYWwoW2l0ZW1dKSxcbiAgICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFyZ2V0R3JvdXAuY2hpbGRyZW4udXBkYXRlKHYgPT4gWy4uLnYsIGl0ZW1dKTtcbiAgfVxuICBwcml2YXRlIF9jcmVhdGVFbXB0eUdyb3VwTWFwKCk6IEFyZEl0ZW1Hcm91cE1hcCB7XG4gICAgcmV0dXJuIG5ldyBNYXAoW1xuICAgICAgW1xuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogc2lnbmFsKCcnKSxcbiAgICAgICAgICBjaGlsZHJlbjogc2lnbmFsKFtdKSxcbiAgICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXSkgYXMgQXJkSXRlbUdyb3VwTWFwO1xuICB9XG4gIHByaXZhdGUgX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWw6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5nTW9kZWwuZXZlcnkoaXRlbSA9PiB7XG4gICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKSAmJiBpc09iamVjdChpdGVtKSAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQVJELVdBJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0wOiBbdmFsdWVGcm9tXSBjYW4gb25seSBwb2ludCB0byBhIHByb3BlcnR5IG9mIGEgcHJpbWl0aXZlIHR5cGUuIERlZmluZSBbY29tcGFyZVdpdGhdIGlmIHVzaW5nIG9iamVjdHMgYXMgYSB2YWx1ZSBpcyBuZWVkZWQuYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZCA9IHNpZ25hbDxhbnk+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGhhbmRsZVdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiB2b2lkIHtcbiAgICAvL2RlZmVyIHdyaXRpbmcgdGhlIHZhbHVlIGlmIG5vIG9wdGlvbnMgYXJlIHlldCBsb2FkZWRcbiAgICBpZiAoIXRoaXMuX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCgpICYmIHRoaXMuX2l0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZC5zZXQobmdNb2RlbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckFsbFNlbGVjdGVkKCk7XG5cbiAgICBpZiAoIXRoaXMuX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZEl0ZW1CeVZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBBUkQtV0Eke3RoaXMuX2FyZFBhcmVudENvbXAuX2NvbXBvbmVudElkfTE6IENvdWxkbid0IGZpbmQgYW4gaXRlbSB3aXRoIHZhbHVlICR7XG4gICAgICAgICAgdmFsdWU/LnRvU3RyaW5nPy4oKSB8fCBTdHJpbmcodmFsdWUpXG4gICAgICAgIH0gd2hlbiB0cnlpbmcgdG8gc2VsZWN0IGl0LmBcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBvZiBuZ01vZGVsKSB7XG4gICAgICBzZWxlY3RJdGVtQnlWYWx1ZShtb2RlbFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZmluZEl0ZW1CeVZhbHVlKHZhbHVlVG9GaW5kOiBhbnkpOiBBcmRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb24pID0+IGJvb2xlYW47XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgoKSkge1xuICAgICAgZmluZEJ5ID0gaXRlbSA9PiB0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKCkhKHZhbHVlVG9GaW5kLCBpdGVtLnZhbHVlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5kQnkgPSBpdGVtID0+IGl0ZW0udmFsdWUoKSA9PT0gdmFsdWVUb0ZpbmQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pdGVtcygpLmZpbmQoaXRlbSA9PiBmaW5kQnkoaXRlbSkpO1xuICB9XG4gIGFzeW5jIGFkZEN1c3RvbU9wdGlvbih2YWx1ZTogc3RyaW5nLCBmbjogQWRkQ3VzdG9tRm48YW55PiB8IEFkZEN1c3RvbUZuPFByb21pc2U8YW55Pj4pOiBQcm9taXNlPEFyZE9wdGlvbiB8IG51bGw+IHtcbiAgICBjb25zdCBmblJlc3VsdCA9IGZuKHZhbHVlKTtcblxuICAgIGxldCBvcHRpb25WYWx1ZSA9IGZuUmVzdWx0O1xuICAgIGlmIChpc1Byb21pc2Uob3B0aW9uVmFsdWUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBvcHRpb25WYWx1ZSA9IGF3YWl0IG9wdGlvblZhbHVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgQVJELU5GJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0yOiBGYWlsZWQgdG8gYWRkIGEgY3VzdG9tIG9wdGlvbi4gVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvcjpgLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld09wdGlvbk9iaiA9IHRoaXMuX2FkZFNpbmdsZUl0ZW0ob3B0aW9uVmFsdWUpO1xuICAgIHJldHVybiBuZXdPcHRpb25PYmo7XG4gIH1cblxuICBjbGVhckFsbFNlbGVjdGVkKHJlcG9wdWxhdGVHcm91cHMgPSBmYWxzZSk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcygpKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZWRJdGVtVmFsdWVzID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMoKSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zZXQoW10pO1xuXG4gICAgaWYgKHJlcG9wdWxhdGVHcm91cHMgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIHJldHVybiByZW1vdmVkSXRlbVZhbHVlcztcbiAgfVxuICBjbGVhckxhc3RTZWxlY3RlZCgpOiBBcmRPcHRpb24ge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGFzdCgpO1xuICAgIGlmICghaXRlbSkgcmV0dXJuIGl0ZW07XG4gICAgdGhpcy51bnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbiAgc2VsZWN0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uW10pOiBbYW55W10sIGFueVtdLCBhbnlbXV0ge1xuICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpKSB7XG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XG4gICAgfVxuICAgIGxldCB1bnNlbGVjdGVkID0gW107XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XG4gICAgICB1bnNlbGVjdGVkID0gdGhpcy5jbGVhckFsbFNlbGVjdGVkKGZhbHNlKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcbiAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpdGVtc1NlbGVjdGVkQ291bnQrKztcbiAgICAgIGlmIChpdGVtLnNlbGVjdGVkKCkpIGNvbnRpbnVlO1xuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIGl0ZW1dKTtcbiAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXMuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XG4gICAgcmV0dXJuIFt0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNTZWxlY3RlZCksIHVuc2VsZWN0ZWQsIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc0ZhaWxlZFRvU2VsZWN0KV07XG4gIH1cbiAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy51cGRhdGUodiA9PiB2LmZpbHRlcih2ID0+IHYuc2VsZWN0ZWQoKSkpO1xuXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyk7XG4gIH1cblxuICBjbGVhckFsbEhpZ2hsaWdodHMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKSkge1xuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzKCkpIHtcbiAgICAgIGdyb3VwLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLl9oaWdobGlnaHRlZEdyb3Vwcy5zZXQoW10pO1xuICB9XG4gIGhpZ2hsaWdodEdyb3VwKGdyb3VwOiBBcmRPcHRpb25Hcm91cCk6IEFyZE9wdGlvbiB7XG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcbiAgICBncm91cC5oaWdobGlnaHRlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLmdyb3VwLmNoaWxkcmVuKCkpO1xuICAgIHJldHVybiBncm91cC5jaGlsZHJlbigpLmZpcnN0KCk7XG4gIH1cbiAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtOiBBcmRPcHRpb24pOiBBcmRPcHRpb24gfCBudWxsIHtcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCgpKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG4gIH1cbiAgaGlnaGxpZ2h0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uW10pOiBBcmRPcHRpb24ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIC4uLml0ZW1zXSk7XG4gICAgcmV0dXJuIGl0ZW1zLmxhc3QoKTtcbiAgfVxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQpIHJldHVybjtcblxuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLnVwZGF0ZSh2ID0+IHYuZmlsdGVyKHYgPT4gdi5oaWdobGlnaHRlZCgpKSk7XG4gIH1cbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtc1RvSGlnaGxpZ2h0LmZpcnN0KCkpO1xuICB9XG4gIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtc1RvSGlnaGxpZ2h0Lmxhc3QoKSk7XG4gIH1cbiAgcHJpdmF0ZSBfZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTogQXJkT3B0aW9uW10ge1xuICAgIGxldCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZmlsdGVyZWRJdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKCkpO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCgpKSB7XG4gICAgICBpdGVtc1RvSGlnaGxpZ2h0ID0gaXRlbXNUb0hpZ2hsaWdodC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zVG9IaWdobGlnaHQ7XG4gIH1cbiAgaGlnaGxpZ2h0QWxsSXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLnRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkpO1xuICB9XG4gIHByaXZhdGUgX2NsZWFyUmVjZW50bHlIaWdobGlnaHRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0oKSkge1xuICAgICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0oKSEuaGlnaGxpZ2h0ZWRfcmVjZW50bHkuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgc2V0UmVjZW50bHlIaWdobGlnaHRlZChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhclJlY2VudGx5SGlnaGxpZ2h0ZWQoKTtcbiAgICBpdGVtLmhpZ2hsaWdodGVkX3JlY2VudGx5LnNldCh0cnVlKTtcbiAgICB0aGlzLl9yZWNlbnRseUhpZ2hsaWdodGVkSXRlbS5zZXQoaXRlbSk7XG4gIH1cbiAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIsIGhhc1NoaWZ0PzogYm9vbGVhbik6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKS5sYXN0KCk7XG4gICAgY29uc3QgaGlnaGxpZ2h0YWJsZUl0ZW1zID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXhJbkZpbHRlcmVkID0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaW5kZXggPT09IGN1cnJlbnRJdGVtLmluZGV4KTtcblxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5GaWx0ZXJlZCArIG9mZnNldDtcbiAgICBpZiAobmV4dEl0ZW1JbmRleCA+PSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoKSB7XG4gICAgICBuZXh0SXRlbUluZGV4IC09IGhpZ2hsaWdodGFibGVJdGVtcy5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCArPSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSBoaWdobGlnaHRhYmxlSXRlbXNbbmV4dEl0ZW1JbmRleF07XG5cbiAgICBpZiAoaGFzU2hpZnQgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSkge1xuICAgICAgaWYgKGl0ZW1Ub0hpZ2hsaWdodC5oaWdobGlnaHRlZCgpKSB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRJdGVtKGN1cnJlbnRJdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIGZpbHRlcihmaWx0ZXJUZXJtOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgaWYgKCFmaWx0ZXJUZXJtKSB7XG4gICAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMucmVzZXRGaWx0ZXJlZCgpKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLnNlYXJjaENhc2VTZW5zaXRpdmUoKSkge1xuICAgICAgZmlsdGVyVGVybSA9IGZpbHRlclRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hGbiA9IHRoaXMuX2FyZFBhcmVudENvbXAuc2VhcmNoRm4oKTtcbiAgICBjb25zdCBuZXdGaWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBzZWFyY2hGbihmaWx0ZXJUZXJtLCBpdGVtKSk7XG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcy5zZXQobmV3RmlsdGVyZWRJdGVtcyk7XG5cbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuXG4gICAgaWYgKCF0aGlzLmlzTm9JdGVtc0ZvdW5kKSB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIGVsc2UgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcblxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUobmV3RmlsdGVyZWRJdGVtcyk7XG4gIH1cbiAgcmVzZXRGaWx0ZXJlZCgpOiBBcmRPcHRpb25bXSB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlcmVkSXRlbXMoKS5sZW5ndGggPT09IHRoaXMuX2l0ZW1zKCkubGVuZ3RoKSByZXR1cm4gdGhpcy5faXRlbXMoKTtcblxuICAgIGxldCBuZXdGaWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMoKTtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSAmJiB0aGlzLmlzQW55SXRlbVNlbGVjdGVkKCkpIHtcbiAgICAgIG5ld0ZpbHRlcmVkSXRlbXMgPSBuZXdGaWx0ZXJlZEl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLnNlbGVjdGVkKCkpO1xuICAgIH1cbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuICAgIHJldHVybiBuZXdGaWx0ZXJlZEl0ZW1zO1xuICB9XG59XG4iXX0=
|