@fundamental-ngx/platform 0.48.0-rc.8 → 0.48.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/approval-flow/approval-flow-node/approval-flow-node.component.d.ts +0 -2
- package/button/button.component.d.ts +7 -8
- package/dynamic-page/dynamic-page.component.d.ts +24 -15
- package/dynamic-page/dynamic-page.tokens.d.ts +3 -0
- package/dynamic-page/index.d.ts +2 -1
- package/dynamic-page/platform-dynamic-page.interface.d.ts +22 -0
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +5 -7
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow.component.mjs +5 -5
- package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
- package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
- package/esm2022/button/button.component.mjs +14 -15
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
- package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +48 -35
- package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.tokens.mjs +3 -0
- package/esm2022/dynamic-page/index.mjs +3 -2
- package/esm2022/dynamic-page/platform-dynamic-page.interface.mjs +2 -0
- package/esm2022/feed-input/feed-input.component.mjs +6 -6
- package/esm2022/feed-input/feed-input.module.mjs +4 -4
- package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
- package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/form/checkbox/checkbox.component.mjs +11 -43
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +21 -63
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
- package/esm2022/form/combobox/combobox/combobox.component.mjs +33 -63
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +15 -22
- package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2022/form/combobox/combobox.config.mjs +3 -3
- package/esm2022/form/combobox/combobox.module.mjs +4 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +24 -58
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
- package/esm2022/form/date-picker/date-picker.component.mjs +21 -57
- package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +22 -60
- package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
- package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +5 -9
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +27 -13
- package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
- package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
- package/esm2022/form/form-generator/form-generator.service.mjs +11 -16
- package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
- package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
- package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
- package/esm2022/form/form-group/form-field/form-field.component.mjs +40 -47
- package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +40 -50
- package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
- package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
- package/esm2022/form/input/fdp-input.module.mjs +4 -4
- package/esm2022/form/input/input.component.mjs +16 -48
- package/esm2022/form/input-group/addon-body.component.mjs +4 -5
- package/esm2022/form/input-group/addon.component.mjs +3 -3
- package/esm2022/form/input-group/input-group.component.mjs +13 -46
- package/esm2022/form/input-group/input-group.config.mjs +3 -3
- package/esm2022/form/input-group/input-group.module.mjs +4 -4
- package/esm2022/form/input-group/input.component.mjs +3 -3
- package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +3 -3
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +64 -102
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +25 -71
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +18 -26
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
- package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2022/form/multi-input/base-multi-input.mjs +43 -83
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +13 -21
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.component.mjs +32 -91
- package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
- package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
- package/esm2022/form/radio-group/radio/radio.component.mjs +12 -44
- package/esm2022/form/radio-group/radio-group.component.mjs +32 -74
- package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
- package/esm2022/form/select/commons/base-select.mjs +59 -101
- package/esm2022/form/select/select/select.component.mjs +17 -60
- package/esm2022/form/select/select.config.mjs +3 -3
- package/esm2022/form/select/select.module.mjs +4 -4
- package/esm2022/form/step-input/base.step-input.mjs +72 -85
- package/esm2022/form/step-input/number/number-step-input.component.mjs +14 -53
- package/esm2022/form/step-input/step-input-action-button.mjs +9 -13
- package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
- package/esm2022/form/step-input/step-input-decrement.directive.mjs +9 -13
- package/esm2022/form/step-input/step-input-increment.directive.mjs +9 -13
- package/esm2022/form/step-input/step-input.config.mjs +3 -3
- package/esm2022/form/step-input/step-input.module.mjs +4 -4
- package/esm2022/form/switch/switch/switch.component.mjs +12 -49
- package/esm2022/form/switch/switch/switch.config.mjs +3 -3
- package/esm2022/form/switch/switch.module.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +14 -45
- package/esm2022/form/text-area/text-area.config.mjs +3 -3
- package/esm2022/form/text-area/text-area.module.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +11 -42
- package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/fundamental-ngx.module.mjs +4 -4
- package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +6 -6
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +85 -90
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +21 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +26 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +40 -26
- package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +76 -0
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +28 -16
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +14 -5
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +12 -21
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +10 -12
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +10 -11
- package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +14 -0
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +208 -27
- package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +19 -9
- package/esm2022/icon-tab-bar/index.mjs +3 -1
- package/esm2022/icon-tab-bar/interfaces/tab-config.interface.mjs +1 -1
- package/esm2022/info-label/info-label.component.mjs +6 -4
- package/esm2022/info-label/info-label.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +15 -23
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/action-list-item/action-list-item.component.mjs +5 -5
- package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
- package/esm2022/list/base-list-item.mjs +20 -22
- package/esm2022/list/display-list-item/display-list-item.component.mjs +5 -5
- package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
- package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +5 -5
- package/esm2022/list/list-group-footer.component.mjs +5 -5
- package/esm2022/list/list-group-header.component.mjs +7 -7
- package/esm2022/list/list.component.mjs +25 -66
- package/esm2022/list/list.config.mjs +3 -3
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/load-more-content.directive.mjs +3 -3
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
- package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
- package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +5 -5
- package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
- package/esm2022/menu/menu-item.component.mjs +5 -5
- package/esm2022/menu/menu-trigger.directive.mjs +3 -3
- package/esm2022/menu/menu.component.mjs +5 -6
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu-button/menu-button.component.mjs +14 -9
- package/esm2022/menu-button/menu-button.module.mjs +4 -4
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +11 -14
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +4 -4
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
- package/esm2022/message-popover/message-popover.component.mjs +53 -54
- package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
- package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
- package/esm2022/object-marker/object-marker.component.mjs +10 -5
- package/esm2022/object-marker/object-marker.module.mjs +4 -4
- package/esm2022/object-status/object-status.component.mjs +13 -8
- package/esm2022/object-status/object-status.module.mjs +4 -4
- package/esm2022/page-footer/page-footer.component.mjs +8 -10
- package/esm2022/page-footer/page-footer.module.mjs +4 -4
- package/esm2022/panel/panel-actions.component.mjs +3 -3
- package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
- package/esm2022/panel/panel.component.mjs +8 -9
- package/esm2022/panel/panel.config.mjs +3 -3
- package/esm2022/panel/panel.module.mjs +4 -4
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +12 -22
- package/esm2022/search-field/search-field.component.mjs +36 -42
- package/esm2022/search-field/search-field.module.mjs +4 -4
- package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
- package/esm2022/settings-generator/default-config.mjs +2 -2
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
- package/esm2022/settings-generator/models/settings.model.mjs +1 -1
- package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +34 -28
- package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +4 -5
- package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.component.mjs +6 -6
- package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
- package/esm2022/settings-generator/settings-generator.service.mjs +12 -13
- package/esm2022/shared/base.mjs +30 -18
- package/esm2022/shared/form/base.input.mjs +70 -69
- package/esm2022/shared/form/collection-base.input.mjs +7 -49
- package/esm2022/shared/form/inline-layout-collection-base.input.mjs +25 -66
- package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
- package/esm2022/shared/pipes/pipe.module.mjs +4 -4
- package/esm2022/shared/platform.config.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +11 -43
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +11 -14
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +8 -16
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -6
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +13 -18
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +22 -47
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +12 -10
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +73 -57
- package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
- package/esm2022/split-menu-button/split-menu-button.component.mjs +17 -24
- package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
- package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
- package/esm2022/table/components/reset-button/reset-button.component.mjs +8 -9
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +10 -9
- package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +11 -14
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +4 -4
- package/esm2022/table/components/table-group-row/table-group-row.component.mjs +6 -10
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +31 -15
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +19 -24
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +9 -11
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +4 -4
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +8 -11
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +8 -11
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +11 -14
- package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -8
- package/esm2022/table/components/table-row/table-row.component.mjs +12 -17
- package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +38 -23
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +8 -11
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +9 -12
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +9 -12
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +138 -62
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +20 -23
- package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +10 -9
- package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
- package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +5 -5
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
- package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/services/table-column-resize.service.mjs +22 -20
- package/esm2022/table-helpers/services/table-responsive.service.mjs +9 -14
- package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
- package/esm2022/table-helpers/services/table.service.mjs +23 -21
- package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
- package/esm2022/table-helpers/table.mjs +1 -1
- package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -4
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +28 -8
- package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +9 -5
- package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
- package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
- package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
- package/esm2022/value-help-dialog/index.mjs +3 -1
- package/esm2022/value-help-dialog/models/vhd-component.model.mjs +3 -0
- package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +59 -32
- package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
- package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -6
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
- package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
- package/esm2022/variant-management/variant-management.component.mjs +47 -13
- package/esm2022/variant-management/variant-management.module.mjs +4 -4
- package/esm2022/wizard-generator/base-wizard-generator.mjs +21 -28
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +19 -19
- package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +12 -18
- package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +7 -12
- package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +11 -10
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
- package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
- package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +42 -44
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +16 -17
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +88 -130
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +853 -1636
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +532 -220
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +9 -7
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +18 -26
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +104 -143
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +16 -11
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +16 -16
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +71 -74
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +13 -8
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +16 -11
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +10 -12
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -20
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +49 -77
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +75 -72
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +162 -218
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +12 -44
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +144 -162
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +20 -27
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +143 -148
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +366 -291
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +144 -53
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +63 -30
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +82 -98
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +4 -4
- package/form/checkbox/checkbox.component.d.ts +4 -6
- package/form/checkbox-group/checkbox-group.component.d.ts +3 -8
- package/form/combobox/combobox/combobox.component.d.ts +4 -12
- package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +5 -8
- package/form/combobox/commons/base-combobox.d.ts +4 -9
- package/form/date-picker/date-picker.component.d.ts +8 -11
- package/form/datetime-picker/datetime-picker.component.d.ts +9 -11
- package/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.d.ts +0 -2
- package/form/form-generator/form-generator/form-generator.component.d.ts +3 -1
- package/form/form-generator/form-generator.service.d.ts +3 -7
- package/form/form-generator/interfaces/dynamic-form-item.d.ts +5 -5
- package/form/form-group/form-field/form-field.component.d.ts +16 -20
- package/form/form-group/form-group.component.d.ts +36 -35
- package/form/input/input.component.d.ts +3 -6
- package/form/input-group/addon-body.component.d.ts +0 -1
- package/form/input-group/input-group.component.d.ts +4 -5
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +13 -16
- package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +4 -12
- package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +6 -9
- package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
- package/form/multi-input/base-multi-input.d.ts +10 -15
- package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +5 -8
- package/form/multi-input/multi-input.component.d.ts +7 -37
- package/form/radio-group/radio/radio.component.d.ts +4 -5
- package/form/radio-group/radio-group.component.d.ts +7 -11
- package/form/select/commons/base-select.d.ts +11 -18
- package/form/select/select/select.component.d.ts +2 -15
- package/form/step-input/base.step-input.d.ts +13 -14
- package/form/step-input/number/number-step-input.component.d.ts +2 -7
- package/form/step-input/step-input-action-button.d.ts +4 -7
- package/form/step-input/step-input-decrement.directive.d.ts +2 -5
- package/form/step-input/step-input-increment.directive.d.ts +2 -5
- package/form/switch/switch/switch.component.d.ts +5 -8
- package/form/text-area/text-area.component.d.ts +4 -5
- package/form/time-picker/time-picker.component.d.ts +4 -5
- package/fundamental-ngx-platform-v0.48.0.tgz +0 -0
- package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +19 -20
- package/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.d.ts +2 -0
- package/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.d.ts +45 -0
- package/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.d.ts +1 -3
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
- package/icon-tab-bar/directives/icon-tab-bar-free-content.directive.d.ts +5 -0
- package/icon-tab-bar/icon-tab-bar.component.d.ts +82 -8
- package/icon-tab-bar/icon-tab-bar.module.d.ts +7 -1
- package/icon-tab-bar/index.d.ts +2 -0
- package/icon-tab-bar/interfaces/tab-config.interface.d.ts +13 -5
- package/info-label/info-label.component.d.ts +2 -2
- package/link/link.component.d.ts +4 -7
- package/list/base-list-item.d.ts +4 -6
- package/list/list.component.d.ts +6 -15
- package/menu-button/menu-button.component.d.ts +7 -4
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
- package/message-popover/message-popover.component.d.ts +13 -20
- package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
- package/object-marker/object-marker.component.d.ts +4 -1
- package/object-status/object-status.component.d.ts +4 -1
- package/package.json +4 -4
- package/page-footer/page-footer.component.d.ts +2 -4
- package/panel/panel.component.d.ts +2 -3
- package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +7 -10
- package/search-field/search-field.component.d.ts +10 -19
- package/settings-generator/models/settings.model.d.ts +7 -6
- package/settings-generator/settings-generator-content/settings-generator-content.component.d.ts +31 -12
- package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +0 -2
- package/settings-generator/settings-generator.component.d.ts +3 -3
- package/settings-generator/settings-generator.service.d.ts +1 -1
- package/shared/base.d.ts +11 -4
- package/shared/form/base.input.d.ts +24 -16
- package/shared/form/collection-base.input.d.ts +1 -9
- package/shared/form/inline-layout-collection-base.input.d.ts +5 -12
- package/slider/slider.component.d.ts +3 -6
- package/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.d.ts +3 -5
- package/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.d.ts +0 -5
- package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
- package/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.d.ts +8 -17
- package/smart-filter-bar/directives/smart-filter-bar-subject.directive.d.ts +2 -0
- package/smart-filter-bar/smart-filter-bar.component.d.ts +28 -22
- package/split-menu-button/split-menu-button.component.d.ts +11 -14
- package/table/components/reset-button/reset-button.component.d.ts +2 -3
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +4 -5
- package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
- package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
- package/table/components/table-header-row/table-header-row.component.d.ts +1 -3
- package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
- package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
- package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
- package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
- package/table/components/table-row/table-row.component.d.ts +2 -2
- package/table/components/table-toolbar/table-toolbar.component.d.ts +24 -8
- package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
- package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
- package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
- package/table/table.component.d.ts +29 -19
- package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
- package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -3
- package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
- package/table-helpers/services/table-column-resize.service.d.ts +4 -2
- package/table-helpers/services/table-responsive.service.d.ts +3 -5
- package/table-helpers/services/table.service.d.ts +12 -10
- package/table-helpers/table.d.ts +1 -0
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +9 -2
- package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
- package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
- package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
- package/value-help-dialog/index.d.ts +2 -0
- package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
- package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +14 -7
- package/variant-management/variant-management.component.d.ts +19 -6
- package/wizard-generator/base-wizard-generator.d.ts +9 -12
- package/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.d.ts +2 -3
- package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
- package/wizard-generator/components/wizard-generator/wizard-generator.component.d.ts +1 -4
- package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
- package/dynamic-page/dynamic-page.service.d.ts +0 -35
- package/esm2022/dynamic-page/dynamic-page.service.mjs +0 -58
- package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
- package/fundamental-ngx-platform-v0.48.0-rc.8.tgz +0 -0
- package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { BehaviorSubject, of } from 'rxjs';
|
|
4
|
-
import { map, switchMap, takeUntil } from 'rxjs/operators';
|
|
1
|
+
import { Directive, EventEmitter, Input, Output, Renderer2, computed, inject, signal } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
3
|
import { RtlService } from '@fundamental-ngx/cdk/utils';
|
|
6
|
-
import { BaseInput
|
|
4
|
+
import { BaseInput } from '@fundamental-ngx/platform/shared';
|
|
7
5
|
import { StepInputConfig } from './step-input.config';
|
|
8
6
|
import { addAndCutFloatingNumberDistortion, getNumberDecimalLength } from './step-input.util';
|
|
9
7
|
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/forms";
|
|
11
|
-
import * as i2 from "@fundamental-ngx/platform/shared";
|
|
12
|
-
import * as i3 from "./step-input.config";
|
|
13
|
-
import * as i4 from "@fundamental-ngx/cdk/utils";
|
|
14
8
|
/** Change event object emitted by Platform Step Input component */
|
|
15
9
|
export class StepInputChangeEvent {
|
|
16
10
|
/**
|
|
@@ -40,6 +34,64 @@ const ALIGN_INPUT_OPTIONS_LIST = [StepInputAlign.Left, StepInputAlign.Center, St
|
|
|
40
34
|
* This holds base Step Input functionality that can be abstracted
|
|
41
35
|
*/
|
|
42
36
|
export class StepInputComponent extends BaseInput {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
/** @hidden */
|
|
40
|
+
this.config = inject(StepInputConfig);
|
|
41
|
+
/** Sets largeStep multiplier */
|
|
42
|
+
this.largerStep = 2;
|
|
43
|
+
/** Hides -/+ icons and shows labels */
|
|
44
|
+
this.showLabels = false;
|
|
45
|
+
/**
|
|
46
|
+
* ARIA label for increment button
|
|
47
|
+
*/
|
|
48
|
+
this.incrementLabel = this.config.incrementLabel;
|
|
49
|
+
/**
|
|
50
|
+
* ARIA label for decrement button
|
|
51
|
+
*/
|
|
52
|
+
this.decrementLabel = this.config.decrementLabel;
|
|
53
|
+
/** Emits new value when control value has changed */
|
|
54
|
+
this.valueChange = new EventEmitter();
|
|
55
|
+
/** @hidden */
|
|
56
|
+
this.canIncrement = true;
|
|
57
|
+
/** @hidden */
|
|
58
|
+
this.canDecrement = true;
|
|
59
|
+
/** @hidden
|
|
60
|
+
* Indicates if control has an error
|
|
61
|
+
*/
|
|
62
|
+
this.isErrorState = false;
|
|
63
|
+
/** @hidden */
|
|
64
|
+
this._contentDensity = this.config.contentDensity;
|
|
65
|
+
/** @hidden */
|
|
66
|
+
this._align$ = signal(null);
|
|
67
|
+
/** @hidden */
|
|
68
|
+
this._textAlign$ = computed(() => {
|
|
69
|
+
const align = this._align$();
|
|
70
|
+
const isRtl = !!this._rtlService?.rtlSignal();
|
|
71
|
+
if (!ALIGN_INPUT_OPTIONS_LIST.includes(align)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (isRtl && align === StepInputAlign.Left) {
|
|
75
|
+
return StepInputAlign.Right;
|
|
76
|
+
}
|
|
77
|
+
if (isRtl && align === StepInputAlign.Right) {
|
|
78
|
+
return StepInputAlign.Left;
|
|
79
|
+
}
|
|
80
|
+
return align;
|
|
81
|
+
});
|
|
82
|
+
/** @hidden */
|
|
83
|
+
this._max = Number.MAX_VALUE;
|
|
84
|
+
/** @hidden */
|
|
85
|
+
this._min = -Number.MAX_VALUE;
|
|
86
|
+
/** @hidden */
|
|
87
|
+
this._step = 1;
|
|
88
|
+
/** @hidden */
|
|
89
|
+
this._pendingEnteredValue = null;
|
|
90
|
+
/** @hidden */
|
|
91
|
+
this._renderer = inject(Renderer2);
|
|
92
|
+
/** @hidden */
|
|
93
|
+
this._rtlService = inject(RtlService, { optional: true });
|
|
94
|
+
}
|
|
43
95
|
/** Sets input value */
|
|
44
96
|
set value(value) {
|
|
45
97
|
if (value !== this._value) {
|
|
@@ -90,7 +142,10 @@ export class StepInputComponent extends BaseInput {
|
|
|
90
142
|
}
|
|
91
143
|
/** Horizontally aligns value inside input */
|
|
92
144
|
set align(align) {
|
|
93
|
-
this._align$.
|
|
145
|
+
this._align$.set(align);
|
|
146
|
+
}
|
|
147
|
+
get align() {
|
|
148
|
+
return this._align$();
|
|
94
149
|
}
|
|
95
150
|
/** @hidden */
|
|
96
151
|
get canChangeValue() {
|
|
@@ -108,54 +163,12 @@ export class StepInputComponent extends BaseInput {
|
|
|
108
163
|
return pendingValue;
|
|
109
164
|
}
|
|
110
165
|
/** @hidden */
|
|
111
|
-
constructor(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl, config, _renderer, _rtlService) {
|
|
112
|
-
super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);
|
|
113
|
-
this.config = config;
|
|
114
|
-
this._renderer = _renderer;
|
|
115
|
-
this._rtlService = _rtlService;
|
|
116
|
-
/** Sets largeStep multiplier */
|
|
117
|
-
this.largerStep = 2;
|
|
118
|
-
/** Hides -/+ icons and shows labels */
|
|
119
|
-
this.showLabels = false;
|
|
120
|
-
/**
|
|
121
|
-
* ARIA label for increment button
|
|
122
|
-
*/
|
|
123
|
-
this.incrementLabel = this.config.incrementLabel;
|
|
124
|
-
/**
|
|
125
|
-
* ARIA label for decrement button
|
|
126
|
-
*/
|
|
127
|
-
this.decrementLabel = this.config.decrementLabel;
|
|
128
|
-
/** Emits new value when control value has changed */
|
|
129
|
-
this.valueChange = new EventEmitter();
|
|
130
|
-
/** @hidden */
|
|
131
|
-
this.canIncrement = true;
|
|
132
|
-
/** @hidden */
|
|
133
|
-
this.canDecrement = true;
|
|
134
|
-
/** @hidden
|
|
135
|
-
* Indicates if control has an error
|
|
136
|
-
*/
|
|
137
|
-
this.isErrorState = false;
|
|
138
|
-
/** @hidden */
|
|
139
|
-
this._contentDensity = this.config.contentDensity;
|
|
140
|
-
/** @hidden */
|
|
141
|
-
this._max = Number.MAX_VALUE;
|
|
142
|
-
/** @hidden */
|
|
143
|
-
this._min = -Number.MAX_VALUE;
|
|
144
|
-
/** @hidden */
|
|
145
|
-
this._step = 1;
|
|
146
|
-
/** @hidden */
|
|
147
|
-
this._align$ = new BehaviorSubject(null);
|
|
148
|
-
/** @hidden */
|
|
149
|
-
this._pendingEnteredValue = null;
|
|
150
|
-
}
|
|
151
|
-
/** @hidden */
|
|
152
166
|
ngOnInit() {
|
|
153
167
|
super.ngOnInit();
|
|
154
168
|
this._calculateCanDecrementIncrement();
|
|
155
169
|
this._updateViewValue();
|
|
156
170
|
this.lastEmittedValue = this._value;
|
|
157
171
|
this._listenToFormErrorState();
|
|
158
|
-
this._listenToAlign();
|
|
159
172
|
}
|
|
160
173
|
/** @hidden
|
|
161
174
|
* Override writeValue method to keep input view value up to date
|
|
@@ -249,39 +262,13 @@ export class StepInputComponent extends BaseInput {
|
|
|
249
262
|
_listenToFormErrorState() {
|
|
250
263
|
this.stateChanges
|
|
251
264
|
.asObservable()
|
|
252
|
-
.pipe(
|
|
265
|
+
.pipe(takeUntilDestroyed(this._destroyed))
|
|
253
266
|
.subscribe(() => {
|
|
254
267
|
const oldValue = this.isErrorState;
|
|
255
268
|
this.isErrorState = this.state === 'error';
|
|
256
269
|
if (this.isErrorState !== oldValue) {
|
|
257
|
-
this.
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
/** @hidden */
|
|
262
|
-
_listenToAlign() {
|
|
263
|
-
this._align$
|
|
264
|
-
.asObservable()
|
|
265
|
-
.pipe(switchMap((align) => {
|
|
266
|
-
if (!this._rtlService) {
|
|
267
|
-
return of(align);
|
|
270
|
+
this.markForCheck();
|
|
268
271
|
}
|
|
269
|
-
return this._rtlService.rtl.pipe(map((isRtl) => {
|
|
270
|
-
if (!ALIGN_INPUT_OPTIONS_LIST.includes(align)) {
|
|
271
|
-
return null;
|
|
272
|
-
}
|
|
273
|
-
if (isRtl && align === StepInputAlign.Left) {
|
|
274
|
-
return StepInputAlign.Right;
|
|
275
|
-
}
|
|
276
|
-
if (isRtl && align === StepInputAlign.Right) {
|
|
277
|
-
return StepInputAlign.Left;
|
|
278
|
-
}
|
|
279
|
-
return align;
|
|
280
|
-
}));
|
|
281
|
-
}), takeUntil(this._destroyed))
|
|
282
|
-
.subscribe((align) => {
|
|
283
|
-
this._align = align;
|
|
284
|
-
this._cd.markForCheck();
|
|
285
272
|
});
|
|
286
273
|
}
|
|
287
274
|
/** @hidden */
|
|
@@ -381,12 +368,12 @@ export class StepInputComponent extends BaseInput {
|
|
|
381
368
|
_resetPendingEnteredValue() {
|
|
382
369
|
this._pendingEnteredValue = null;
|
|
383
370
|
}
|
|
384
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
385
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.
|
|
371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: StepInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
372
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: StepInputComponent, inputs: { value: "value", min: "min", max: "max", step: "step", stepFn: "stepFn", precision: "precision", largerStep: "largerStep", showLabels: "showLabels", align: "align", incrementLabel: "incrementLabel", decrementLabel: "decrementLabel" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
386
373
|
}
|
|
387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: StepInputComponent, decorators: [{
|
|
388
375
|
type: Directive
|
|
389
|
-
}],
|
|
376
|
+
}], propDecorators: { value: [{
|
|
390
377
|
type: Input
|
|
391
378
|
}], min: [{
|
|
392
379
|
type: Input
|
|
@@ -411,4 +398,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
|
|
|
411
398
|
}], valueChange: [{
|
|
412
399
|
type: Output
|
|
413
400
|
}] } });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zdGVwLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL3N0ZXAtaW5wdXQvYmFzZS5zdGVwLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQTRCLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7OztBQUU5RixtRUFBbUU7QUFDbkUsTUFBTSxPQUFPLG9CQUFvQjtJQUM3Qjs7OztPQUlHO0lBQ0g7SUFDSSwwQ0FBMEM7SUFDbkMsTUFBUztJQUNoQixrQ0FBa0M7SUFDM0IsT0FBVTtRQUZWLFdBQU0sR0FBTixNQUFNLENBQUc7UUFFVCxZQUFPLEdBQVAsT0FBTyxDQUFHO0lBQ2xCLENBQUM7Q0FDUDtBQUVELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLG1DQUFpQixDQUFB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SztzQkFEUixLQUFLO2dCQWFGLEdBQUc7c0JBRE4sS0FBSztnQkFXRixHQUFHO3NCQUROLEtBQUs7Z0JBV0YsSUFBSTtzQkFEUCxLQUFLO2dCQVlGLE1BQU07c0JBRFQsS0FBSztnQkFRRixTQUFTO3NCQURaLEtBQUs7Z0JBV04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixLQUFLO3NCQURSLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsS0FBSztnQkFLTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29udGVudERlbnNpdHksIE51bGxhYmxlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFzZUlucHV0LCBQbGF0Zm9ybUZvcm1GaWVsZCwgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgU3RlcElucHV0Q29uZmlnIH0gZnJvbSAnLi9zdGVwLWlucHV0LmNvbmZpZyc7XG5pbXBvcnQgeyBhZGRBbmRDdXRGbG9hdGluZ051bWJlckRpc3RvcnRpb24sIGdldE51bWJlckRlY2ltYWxMZW5ndGggfSBmcm9tICcuL3N0ZXAtaW5wdXQudXRpbCc7XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgUGxhdGZvcm0gU3RlcCBJbnB1dCBjb21wb25lbnQgKi9cbmV4cG9ydCBjbGFzcyBTdGVwSW5wdXRDaGFuZ2VFdmVudDxUIGV4dGVuZHMgU3RlcElucHV0Q29tcG9uZW50ID0gU3RlcElucHV0Q29tcG9uZW50LCBLID0gbnVtYmVyPiB7XG4gICAgLyoqXG4gICAgICogU3RlcCBpbnB1dCBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBTdGVwIGlucHV0IGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFNlbGVjdGVkIHZhbHVlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIC8qKiBUaGUgc291cmNlIFN0ZXAgSW5wdXQgb2YgdGhlIGV2ZW50LiAqL1xuICAgICAgICBwdWJsaWMgc291cmNlOiBULFxuICAgICAgICAvKiogVGhlIG5ldyB2YWx1ZSBvZiBhIGNvbnRyb2wuICovXG4gICAgICAgIHB1YmxpYyBwYXlsb2FkOiBLXG4gICAgKSB7fVxufVxuXG5leHBvcnQgZW51bSBTdGVwSW5wdXRBbGlnbiB7XG4gICAgTGVmdCA9ICdsZWZ0JyxcbiAgICBDZW50ZXIgPSAnY2VudGVyJyxcbiAgICBSaWdodCA9ICdyaWdodCdcbn1cblxuZXhwb3J0IHR5cGUgU3RlcElucHV0U3RlcEZ1bmN0aW9uQWN0aW9uID0gJ2luY3JlYXNlJyB8ICdkZWNyZWFzZSc7XG5leHBvcnQgdHlwZSBTdGVwSW5wdXRTdGVwRnVuY3Rpb24gPSAodmFsdWU6IG51bWJlciwgYWN0aW9uOiBTdGVwSW5wdXRTdGVwRnVuY3Rpb25BY3Rpb24pID0+IG51bWJlcjtcblxuY29uc3QgQUxJR05fSU5QVVRfT1BUSU9OU19MSVNUID0gW1N0ZXBJbnB1dEFsaWduLkxlZnQsIFN0ZXBJbnB1dEFsaWduLkNlbnRlciwgU3RlcElucHV0QWxpZ24uUmlnaHRdO1xuXG4vKipcbiAqIFN0ZXBJbnB1dENvbXBvbmVudCBpcyBhIGJhc2UgYWJzdHJhY3QgY2xhc3MgdGhhdCBzaG91bGQgYmUgdXNlZFxuICogdG8gY3JlYXRlIHR5cGUgc3BlY2lmaWMgU3RlcElucHV0IGNvbXBvbmVudHMgc3VjaCBhcyBudW1iZXIsIG1vbmV5LCB1bml0T2ZNZWFzdXJlXG4gKiBUaGlzIGhvbGRzIGJhc2UgU3RlcCBJbnB1dCBmdW5jdGlvbmFsaXR5IHRoYXQgY2FuIGJlIGFic3RyYWN0ZWRcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RlcElucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKiogU2V0cyBpbnB1dCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBOdWxsYWJsZTxudW1iZXI+KSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNhbkRlY3JlbWVudEluY3JlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBOdWxsYWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgbWluaW11bSB2YWx1ZSBib3VuZGFyeSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbihtaW46IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW4gPSAhaXNOYU4obWluKSA/IG1pbiA6IC1OdW1iZXIuTUFYX1ZBTFVFO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5EZWNyZW1lbnQoKTtcbiAgICB9XG4gICAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIG1heGltdW0gdmFsdWUgYm91bmRhcnkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgobWF4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4ID0gIWlzTmFOKG1heCkgPyBtYXggOiBOdW1iZXIuTUFYX1ZBTFVFO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5JbmNyZW1lbnQoKTtcbiAgICB9XG4gICAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4O1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGlucHV0IHN0ZXAgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHN0ZXA6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jaGVja0FuZFRocm93RXJyb3JJZlN0ZXBEb2VzbnRNYXRjaFByZWNpc2lvbih0aGlzLnByZWNpc2lvbiwgc3RlcCk7XG4gICAgICAgIHRoaXMuX3N0ZXAgPSBzdGVwO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5EZWNyZW1lbnRJbmNyZW1lbnQoKTtcbiAgICB9XG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gICAgfVxuXG4gICAgLyoqIEN1c3RvbSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgc3RlcCBkeW5hbWljYWxseSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0ZXBGbihzdGVwRm46IFN0ZXBJbnB1dFN0ZXBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLl9zdGVwRm4gPSBzdGVwRm47XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNhbkRlY3JlbWVudEluY3JlbWVudCgpO1xuICAgIH1cblxuICAgIC8qKiBOdW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcHJlY2lzaW9uKHByZWNpc2lvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrQW5kVGhyb3dFcnJvcklmU3RlcERvZXNudE1hdGNoUHJlY2lzaW9uKHByZWNpc2lvbiwgdGhpcy5zdGVwKTtcbiAgICAgICAgdGhpcy5fcHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICAgIH1cbiAgICBnZXQgcHJlY2lzaW9uKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVjaXNpb247XG4gICAgfVxuXG4gICAgLyoqIFNldHMgbGFyZ2VTdGVwIG11bHRpcGxpZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGxhcmdlclN0ZXAgPSAyO1xuXG4gICAgLyoqIEhpZGVzIC0vKyBpY29ucyBhbmQgc2hvd3MgbGFiZWxzICovXG4gICAgQElucHV0KClcbiAgICBzaG93TGFiZWxzID0gZmFsc2U7XG5cbiAgICAvKiogSG9yaXpvbnRhbGx5IGFsaWducyB2YWx1ZSBpbnNpZGUgaW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhbGlnbihhbGlnbjogU3RlcElucHV0QWxpZ24pIHtcbiAgICAgICAgdGhpcy5fYWxpZ24kLm5leHQoYWxpZ24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFSSUEgbGFiZWwgZm9yIGluY3JlbWVudCBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGluY3JlbWVudExhYmVsOiBzdHJpbmcgPSB0aGlzLmNvbmZpZy5pbmNyZW1lbnRMYWJlbDtcblxuICAgIC8qKlxuICAgICAqIEFSSUEgbGFiZWwgZm9yIGRlY3JlbWVudCBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRlY3JlbWVudExhYmVsOiBzdHJpbmcgPSB0aGlzLmNvbmZpZy5kZWNyZW1lbnRMYWJlbDtcblxuICAgIC8qKiBFbWl0cyBuZXcgdmFsdWUgd2hlbiBjb250cm9sIHZhbHVlIGhhcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXBJbnB1dENoYW5nZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsYXN0RW1pdHRlZFZhbHVlOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNhbkluY3JlbWVudCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNhbkRlY3JlbWVudCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEluZGljYXRlcyBpZiBjb250cm9sIGhhcyBhbiBlcnJvclxuICAgICAqL1xuICAgIGlzRXJyb3JTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FuQ2hhbmdlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuZWRpdGFibGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eSA9IHRoaXMuY29uZmlnLmNvbnRlbnREZW5zaXR5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWxpZ246IFN0ZXBJbnB1dEFsaWduIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9taW46IG51bWJlciA9IC1OdW1iZXIuTUFYX1ZBTFVFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcEZuOiBTdGVwSW5wdXRTdGVwRnVuY3Rpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZWNpc2lvbjogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbGlnbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0ZXBJbnB1dEFsaWduIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BlbmRpbmdFbnRlcmVkVmFsdWU6IG51bWJlciB8IEVycm9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9jdXJyZW50VmFsdWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdWYWx1ZSA9IHRoaXMuX3BlbmRpbmdFbnRlcmVkVmFsdWU7XG5cbiAgICAgICAgaWYgKHBlbmRpbmdWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZW5kaW5nVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwZW5kaW5nVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBwcm90ZWN0ZWQgY29uZmlnOiBTdGVwSW5wdXRDb25maWcsXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2QsIGVsZW1lbnRSZWYsIG5nQ29udHJvbCwgY29udHJvbENvbnRhaW5lciwgbmdGb3JtLCBmb3JtRmllbGQsIGZvcm1Db250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNhbkRlY3JlbWVudEluY3JlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMubGFzdEVtaXR0ZWRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUVycm9yU3RhdGUoKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5Ub0FsaWduKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBPdmVycmlkZSB3cml0ZVZhbHVlIG1ldGhvZCB0byBrZWVwIGlucHV0IHZpZXcgdmFsdWUgdXAgdG8gZGF0ZVxuICAgICAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0UGVuZGluZ0VudGVyZWRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBJbmNyZWFzZSB2YWx1ZSAqL1xuICAgIGluY3JlYXNlKHN0ZXAgPSB0aGlzLl9nZXRTdGVwVmFsdWVGb3JJbmNyZWFzZSgpKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYW5JbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IGFkZEFuZEN1dEZsb2F0aW5nTnVtYmVyRGlzdG9ydGlvbih0aGlzLl9jdXJyZW50VmFsdWUsIHN0ZXApO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsaWRhdGVWYWx1ZUJ5TGltaXRzKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZWRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBEZWNyZWFzZSB2YWx1ZSAqL1xuICAgIGRlY3JlYXNlKHN0ZXAgPSB0aGlzLl9nZXRTdGVwVmFsdWVGb3JEZWNyZWFzZSgpKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYW5EZWNyZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IGFkZEFuZEN1dEZsb2F0aW5nTnVtYmVyRGlzdG9ydGlvbih0aGlzLl9jdXJyZW50VmFsdWUsIC1zdGVwKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbGlkYXRlVmFsdWVCeUxpbWl0cyh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VkVmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogSW5jcmVhc2UgdmFsdWUgYnkgbGFyZ2Ugc3RlcCAqL1xuICAgIGxhcmdlU3RlcEluY3JlYXNlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fZ2V0U3RlcFZhbHVlRm9ySW5jcmVhc2UoKSAqIHRoaXMubGFyZ2VyU3RlcDtcbiAgICAgICAgdGhpcy5pbmNyZWFzZShzdGVwKTtcbiAgICB9XG5cbiAgICAvKiogRGVjcmVhc2UgdmFsdWUgYnkgbGFyZ2Ugc3RlcCAqL1xuICAgIGxhcmdlU3RlcERlY3JlYXNlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fZ2V0U3RlcFZhbHVlRm9yRGVjcmVhc2UoKSAqIHRoaXMubGFyZ2VyU3RlcDtcbiAgICAgICAgdGhpcy5kZWNyZWFzZShzdGVwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGNhdGNoIHZhbHVlIGR1cmluZyBlbnRlcmluZyBmcm9tIHZpZXcuXG4gICAgICovXG4gICAgb25FbnRlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSB0aGlzLnBhcnNlVmFsdWVJbkZvY3VzTW9kZSh2YWx1ZSk7XG4gICAgICAgIGxldCBwZW5kaW5nVmFsdWUgPSBwYXJzZWRWYWx1ZTtcblxuICAgICAgICBpZiAocGVuZGluZ1ZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwZW5kaW5nVmFsdWUgPSB0aGlzLl92YWxpZGF0ZVZhbHVlQnlMaW1pdHMocGVuZGluZ1ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvdWxkIG5vdCBwYXJzZSB2YWx1ZSwgdmFsdWUgaXMgaW52YWxpZFxuICAgICAgICBpZiAocGVuZGluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRQZW5kaW5nRW50ZXJlZFZhbHVlKG5ldyBFcnJvcigndmFsdWUgaXMgaW52YWxpZCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFBlbmRpbmdFbnRlcmVkVmFsdWUocGVuZGluZ1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ29tbWl0IGVudGVyZWQgdmFsdWUgZnJvbSB2aWV3LlxuICAgICAqL1xuICAgIGNvbW1pdEVudGVyZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgY29uc3QgbmVlZFRvVXBkYXRlVmlldyA9IHRoaXMuX3ZhbHVlID09PSBuZXdWYWx1ZTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICAgICAgaWYgKG5lZWRUb1VwZGF0ZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB0aGlzLmxhc3RFbWl0dGVkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogSW5kaWNhdGVzIHdoZW4gaW5wdXQgZ2V0cyBmb2N1c2VkXG4gICAgICovXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuX29uRm9jdXNDaGFuZ2VkKHRydWUpO1xuICAgICAgICAvLyBXaGVuIGZvY3VzIGhhcHBlbnMgYnkgXCJUYWJcIiBrZXkgYW4gaW5wdXQgZmllbGQgdmFsdWUgZ2V0cyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICAgICAgICAvLyBJbiBjYXNlcyB3aGVuIG5ld19mb3JtYXR0ZWRfdmFsdWUgIT09IHByZXZpb3VzX3ZhbHVlIHRoZSBzZWxlY3Rpb24gZ2V0cyBsb3N0LlxuICAgICAgICAvLyBTbyBpdCdzIG5lZWRlZCB0byB0cmFjayBzZWxlY3Rpb24gYmVmb3JlIG5ldyB2YWx1ZSByZW5kZXJpbmcgYW5kIHJlc3RvcmUgaXQuXG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9ID0gdGhpcy5fZ2V0VmFsdWVTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb25FbmQgLSBzZWxlY3Rpb25TdGFydCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlU2VsZWN0aW9uKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBJbmRpY2F0ZXMgd2hlbiBpbnB1dCBsb3NlcyBmb2N1c1xuICAgICAqL1xuICAgIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuX29uRm9jdXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSB2YWx1ZUNoYW5nZSBldmVudCAqL1xuICAgIGFic3RyYWN0IGNyZWF0ZUNoYW5nZUV2ZW50KHZhbHVlOiBudW1iZXIpOiBTdGVwSW5wdXRDaGFuZ2VFdmVudDtcblxuICAgIC8qKiBGb3JtYXQgdmFsdWUgZm9yIHZpZXcgcHJlc2VudGF0aW9uICovXG4gICAgYWJzdHJhY3QgZm9ybWF0VmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmc7XG5cbiAgICAvKiogRm9ybWF0IHZhbHVlIGZvciBcImluIGZvY3VzXCIgbW9kZSAqL1xuICAgIGFic3RyYWN0IGZvcm1hdFZhbHVlSW5Gb2N1c01vZGUodmFsdWU6IG51bWJlcik6IHN0cmluZztcblxuICAgIC8qKiBQYXJzZSB2YWx1ZSBlbnRlcmVkIFwiaW4gZm9jdXNcIiBtb2RlICovXG4gICAgYWJzdHJhY3QgcGFyc2VWYWx1ZUluRm9jdXNNb2RlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0Zvcm1FcnJvclN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlc1xuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5pc0Vycm9yU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Vycm9yU3RhdGUgPSB0aGlzLnN0YXRlID09PSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRXJyb3JTdGF0ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0FsaWduKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hbGlnbiRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChhbGlnbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihhbGlnbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZS5ydGwucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoaXNSdGwpOiBTdGVwSW5wdXRBbGlnbiB8IG51bGwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQUxJR05fSU5QVVRfT1BUSU9OU19MSVNULmluY2x1ZGVzKGFsaWduISkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1J0bCAmJiBhbGlnbiA9PT0gU3RlcElucHV0QWxpZ24uTGVmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RlcElucHV0QWxpZ24uUmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1J0bCAmJiBhbGlnbiA9PT0gU3RlcElucHV0QWxpZ24uUmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0ZXBJbnB1dEFsaWduLkxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlnbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGFsaWduKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxpZ24gPSBhbGlnbjtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl92YWx1ZTtcbiAgICAgICAgdGhpcy5sYXN0RW1pdHRlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmNyZWF0ZUNoYW5nZUV2ZW50KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTdGVwVmFsdWVGb3JJbmNyZWFzZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U3RlcFZhbHVlKCdpbmNyZWFzZScpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RlcFZhbHVlRm9yRGVjcmVhc2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFN0ZXBWYWx1ZSgnZGVjcmVhc2UnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEdldCBzdGVwIHZhbHVlIGJhc2VkIGVpdGhlciBvbiBcInN0ZXBGblwiIG9yIFwic3RlcFwiXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RlcFZhbHVlKGFjdGlvbjogU3RlcElucHV0U3RlcEZ1bmN0aW9uQWN0aW9uKTogbnVtYmVyIHtcbiAgICAgICAgLy8gc3RlRm4gaGFzIHByZWNlZGVuY2VcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdGVwRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRTdGVwID0gdGhpcy5fc3RlcEZuKHRoaXMuX2N1cnJlbnRWYWx1ZSA/PyB0aGlzLm1pbiwgYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVkU3RlcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlVmlld1ZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLl9mb3JtYXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9yZW5kZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0VmFsdWUodmFsdWUgPSB0aGlzLl92YWx1ZSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFZhbHVlSW5Gb2N1c01vZGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbmRlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuX2dldElucHV0TmF0aXZlRWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShpbnB1dEVsLCAndmFsdWUnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmFsdWVTZWxlY3Rpb24oKTogeyBzZWxlY3Rpb25TdGFydDogbnVtYmVyOyBzZWxlY3Rpb25FbmQ6IG51bWJlciB9IHtcbiAgICAgICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuX2dldElucHV0TmF0aXZlRWxlbWVudCgpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGlucHV0RWw/LnNlbGVjdGlvblN0YXJ0IHx8IDA7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGlucHV0RWw/LnNlbGVjdGlvbkVuZCB8fCAwO1xuICAgICAgICByZXR1cm4geyBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRWYWx1ZVNlbGVjdGlvbihzZWxlY3Rpb25TdGFydDogbnVtYmVyLCBzZWxlY3Rpb25FbmQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5fZ2V0SW5wdXROYXRpdmVFbGVtZW50KCk7XG4gICAgICAgIGlmICghaW5wdXRFbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0RWwuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVDYW5JbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLl9nZXRTdGVwVmFsdWVGb3JJbmNyZWFzZSgpO1xuICAgICAgICB0aGlzLmNhbkluY3JlbWVudCA9ICh0aGlzLl92YWx1ZSB8fCAwKSArIHN0ZXAgPD0gdGhpcy5fbWF4O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ2FuRGVjcmVtZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fZ2V0U3RlcFZhbHVlRm9yRGVjcmVhc2UoKTtcbiAgICAgICAgdGhpcy5jYW5EZWNyZW1lbnQgPSAodGhpcy5fdmFsdWUgfHwgMCkgLSBzdGVwID49IHRoaXMuX21pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNhbkRlY3JlbWVudEluY3JlbWVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ2FuRGVjcmVtZW50KCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNhbkluY3JlbWVudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVWYWx1ZUJ5TGltaXRzKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUsIHRoaXMuX21pbiksIHRoaXMuX21heCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja0FuZFRocm93RXJyb3JJZlN0ZXBEb2VzbnRNYXRjaFByZWNpc2lvbihwcmVjaXNpb246IG51bWJlciwgc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIENoZWNrIGlmIFwicHJlY2lzaW9uXCIgaXMgdmFsaWQgY29tcGFyaW5nIHRvIFwic3RlcFwiXG4gICAgICAgIGNvbnN0IHN0ZXBEZWNpbWFsTGVuZ3RoID0gZ2V0TnVtYmVyRGVjaW1hbExlbmd0aChzdGVwKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uRGVjaW1hbExlbmd0aCA9IGdldE51bWJlckRlY2ltYWxMZW5ndGgocHJlY2lzaW9uKTtcbiAgICAgICAgaWYgKHN0ZXBEZWNpbWFsTGVuZ3RoID4gcHJlY2lzaW9uRGVjaW1hbExlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFN0ZXAgaW5wdXQ6IFRoZSB2YWx1ZSBvZiBzdGVwIHByb3BlcnR5IGNhbiBub3QgY29udGFpbiBtb3JlIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCB0aGFuIHdoYXQgaXMgc2V0IHRvIHRoZSBwcmVjaXNpb24gcHJvcGVydHlgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRQZW5kaW5nRW50ZXJlZFZhbHVlKHZhbHVlOiBudW1iZXIgfCBFcnJvcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9wZW5kaW5nRW50ZXJlZFZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFBlbmRpbmdFbnRlcmVkVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdFbnRlcmVkVmFsdWUgPSBudWxsO1xuICAgIH1cbn1cbiJdfQ==
|
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zdGVwLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL3N0ZXAtaW5wdXQvYmFzZS5zdGVwLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBNEIsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFOUYsbUVBQW1FO0FBQ25FLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0I7Ozs7T0FJRztJQUNIO0lBQ0ksMENBQTBDO0lBQ25DLE1BQVM7SUFDaEIsa0NBQWtDO0lBQzNCLE9BQVU7UUFGVixXQUFNLEdBQU4sTUFBTSxDQUFHO1FBRVQsWUFBTyxHQUFQLE9BQU8sQ0FBRztJQUNsQixDQUFDO0NBQ1A7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3RCLCtCQUFhLENBQUE7SUFDYixtQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQUtELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXBHOzs7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Q0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRSxJQUFJLGlCQUFpQixHQUFHLHNCQUFzQixFQUFFO1lBQzVDLE1BQU0sS0FBSyxDQUNQLHVJQUF1SSxDQUMxSSxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QixDQUFDLEtBQXFCO1FBQ2pELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7SUFDTix5QkFBeUI7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDOzhHQWhiaUIsa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRHZDLFNBQVM7OEJBTUYsS0FBSztzQkFEUixLQUFLO2dCQWFGLEdBQUc7c0JBRE4sS0FBSztnQkFXRixHQUFHO3NCQUROLEtBQUs7Z0JBV0YsSUFBSTtzQkFEUCxLQUFLO2dCQVlGLE1BQU07c0JBRFQsS0FBSztnQkFRRixTQUFTO3NCQURaLEtBQUs7Z0JBV04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixLQUFLO3NCQURSLEtBQUs7Z0JBWU4sY0FBYztzQkFEYixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsS0FBSztnQkFLTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgTnVsbGFibGUsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCYXNlSW5wdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBTdGVwSW5wdXRDb25maWcgfSBmcm9tICcuL3N0ZXAtaW5wdXQuY29uZmlnJztcbmltcG9ydCB7IGFkZEFuZEN1dEZsb2F0aW5nTnVtYmVyRGlzdG9ydGlvbiwgZ2V0TnVtYmVyRGVjaW1hbExlbmd0aCB9IGZyb20gJy4vc3RlcC1pbnB1dC51dGlsJztcblxuLyoqIENoYW5nZSBldmVudCBvYmplY3QgZW1pdHRlZCBieSBQbGF0Zm9ybSBTdGVwIElucHV0IGNvbXBvbmVudCAqL1xuZXhwb3J0IGNsYXNzIFN0ZXBJbnB1dENoYW5nZUV2ZW50PFQgZXh0ZW5kcyBTdGVwSW5wdXRDb21wb25lbnQgPSBTdGVwSW5wdXRDb21wb25lbnQsIEsgPSBudW1iZXI+IHtcbiAgICAvKipcbiAgICAgKiBTdGVwIGlucHV0IHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFN0ZXAgaW5wdXQgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBheWxvYWQgU2VsZWN0ZWQgdmFsdWVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLyoqIFRoZSBzb3VyY2UgU3RlcCBJbnB1dCBvZiB0aGUgZXZlbnQuICovXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFQsXG4gICAgICAgIC8qKiBUaGUgbmV3IHZhbHVlIG9mIGEgY29udHJvbC4gKi9cbiAgICAgICAgcHVibGljIHBheWxvYWQ6IEtcbiAgICApIHt9XG59XG5cbmV4cG9ydCBlbnVtIFN0ZXBJbnB1dEFsaWduIHtcbiAgICBMZWZ0ID0gJ2xlZnQnLFxuICAgIENlbnRlciA9ICdjZW50ZXInLFxuICAgIFJpZ2h0ID0gJ3JpZ2h0J1xufVxuXG5leHBvcnQgdHlwZSBTdGVwSW5wdXRTdGVwRnVuY3Rpb25BY3Rpb24gPSAnaW5jcmVhc2UnIHwgJ2RlY3JlYXNlJztcbmV4cG9ydCB0eXBlIFN0ZXBJbnB1dFN0ZXBGdW5jdGlvbiA9ICh2YWx1ZTogbnVtYmVyLCBhY3Rpb246IFN0ZXBJbnB1dFN0ZXBGdW5jdGlvbkFjdGlvbikgPT4gbnVtYmVyO1xuXG5jb25zdCBBTElHTl9JTlBVVF9PUFRJT05TX0xJU1QgPSBbU3RlcElucHV0QWxpZ24uTGVmdCwgU3RlcElucHV0QWxpZ24uQ2VudGVyLCBTdGVwSW5wdXRBbGlnbi5SaWdodF07XG5cbi8qKlxuICogU3RlcElucHV0Q29tcG9uZW50IGlzIGEgYmFzZSBhYnN0cmFjdCBjbGFzcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiB0byBjcmVhdGUgdHlwZSBzcGVjaWZpYyBTdGVwSW5wdXQgY29tcG9uZW50cyBzdWNoIGFzIG51bWJlciwgbW9uZXksIHVuaXRPZk1lYXN1cmVcbiAqIFRoaXMgaG9sZHMgYmFzZSBTdGVwIElucHV0IGZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgYWJzdHJhY3RlZFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGVwSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFN0ZXBJbnB1dENvbmZpZyk7XG4gICAgLyoqIFNldHMgaW5wdXQgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICBzdXBlci5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5EZWNyZW1lbnRJbmNyZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogTnVsbGFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIG1pbmltdW0gdmFsdWUgYm91bmRhcnkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4obWluOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWluID0gIWlzTmFOKG1pbikgPyBtaW4gOiAtTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ2FuRGVjcmVtZW50KCk7XG4gICAgfVxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBtYXhpbXVtIHZhbHVlIGJvdW5kYXJ5ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KG1heDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21heCA9ICFpc05hTihtYXgpID8gbWF4IDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ2FuSW5jcmVtZW50KCk7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBpbnB1dCBzdGVwIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc3RlcChzdGVwOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2hlY2tBbmRUaHJvd0Vycm9ySWZTdGVwRG9lc250TWF0Y2hQcmVjaXNpb24odGhpcy5wcmVjaXNpb24sIHN0ZXApO1xuICAgICAgICB0aGlzLl9zdGVwID0gc3RlcDtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ2FuRGVjcmVtZW50SW5jcmVtZW50KCk7XG4gICAgfVxuICAgIGdldCBzdGVwKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwO1xuICAgIH1cblxuICAgIC8qKiBDdXN0b20gZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHN0ZXAgZHluYW1pY2FsbHkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwRm4oc3RlcEZuOiBTdGVwSW5wdXRTdGVwRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5fc3RlcEZuID0gc3RlcEZuO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5EZWNyZW1lbnRJbmNyZW1lbnQoKTtcbiAgICB9XG5cbiAgICAvKiogTnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHByZWNpc2lvbihwcmVjaXNpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jaGVja0FuZFRocm93RXJyb3JJZlN0ZXBEb2VzbnRNYXRjaFByZWNpc2lvbihwcmVjaXNpb24sIHRoaXMuc3RlcCk7XG4gICAgICAgIHRoaXMuX3ByZWNpc2lvbiA9IHByZWNpc2lvbjtcbiAgICB9XG4gICAgZ2V0IHByZWNpc2lvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJlY2lzaW9uO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGxhcmdlU3RlcCBtdWx0aXBsaWVyICovXG4gICAgQElucHV0KClcbiAgICBsYXJnZXJTdGVwID0gMjtcblxuICAgIC8qKiBIaWRlcyAtLysgaWNvbnMgYW5kIHNob3dzIGxhYmVscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xhYmVscyA9IGZhbHNlO1xuXG4gICAgLyoqIEhvcml6b250YWxseSBhbGlnbnMgdmFsdWUgaW5zaWRlIGlucHV0ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWxpZ24oYWxpZ246IFN0ZXBJbnB1dEFsaWduIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9hbGlnbiQuc2V0KGFsaWduKTtcbiAgICB9XG4gICAgZ2V0IGFsaWduKCk6IFN0ZXBJbnB1dEFsaWduIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGlnbiQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBUklBIGxhYmVsIGZvciBpbmNyZW1lbnQgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpbmNyZW1lbnRMYWJlbDogc3RyaW5nID0gdGhpcy5jb25maWcuaW5jcmVtZW50TGFiZWw7XG5cbiAgICAvKipcbiAgICAgKiBBUklBIGxhYmVsIGZvciBkZWNyZW1lbnQgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkZWNyZW1lbnRMYWJlbDogc3RyaW5nID0gdGhpcy5jb25maWcuZGVjcmVtZW50TGFiZWw7XG5cbiAgICAvKiogRW1pdHMgbmV3IHZhbHVlIHdoZW4gY29udHJvbCB2YWx1ZSBoYXMgY2hhbmdlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwSW5wdXRDaGFuZ2VFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGFzdEVtaXR0ZWRWYWx1ZTogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjYW5JbmNyZW1lbnQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjYW5EZWNyZW1lbnQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBJbmRpY2F0ZXMgaWYgY29udHJvbCBoYXMgYW4gZXJyb3JcbiAgICAgKi9cbiAgICBpc0Vycm9yU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNhbkNoYW5nZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmVkaXRhYmxlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHkgPSB0aGlzLmNvbmZpZy5jb250ZW50RGVuc2l0eTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2FsaWduJCA9IHNpZ25hbDxTdGVwSW5wdXRBbGlnbiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfdGV4dEFsaWduJCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ24gPSB0aGlzLl9hbGlnbiQoKTtcblxuICAgICAgICBjb25zdCBpc1J0bCA9ICEhdGhpcy5fcnRsU2VydmljZT8ucnRsU2lnbmFsKCk7XG5cbiAgICAgICAgaWYgKCFBTElHTl9JTlBVVF9PUFRJT05TX0xJU1QuaW5jbHVkZXMoYWxpZ24hKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUnRsICYmIGFsaWduID09PSBTdGVwSW5wdXRBbGlnbi5MZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gU3RlcElucHV0QWxpZ24uUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUnRsICYmIGFsaWduID09PSBTdGVwSW5wdXRBbGlnbi5SaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0ZXBJbnB1dEFsaWduLkxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsaWduO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXg6IG51bWJlciA9IE51bWJlci5NQVhfVkFMVUU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21pbjogbnVtYmVyID0gLU51bWJlci5NQVhfVkFMVUU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXAgPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwRm46IFN0ZXBJbnB1dFN0ZXBGdW5jdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJlY2lzaW9uOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BlbmRpbmdFbnRlcmVkVmFsdWU6IG51bWJlciB8IEVycm9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9jdXJyZW50VmFsdWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdWYWx1ZSA9IHRoaXMuX3BlbmRpbmdFbnRlcmVkVmFsdWU7XG5cbiAgICAgICAgaWYgKHBlbmRpbmdWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZW5kaW5nVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwZW5kaW5nVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZSA9IGluamVjdChSdGxTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5EZWNyZW1lbnRJbmNyZW1lbnQoKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVWaWV3VmFsdWUoKTtcblxuICAgICAgICB0aGlzLmxhc3RFbWl0dGVkVmFsdWUgPSB0aGlzLl92YWx1ZTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1FcnJvclN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBPdmVycmlkZSB3cml0ZVZhbHVlIG1ldGhvZCB0byBrZWVwIGlucHV0IHZpZXcgdmFsdWUgdXAgdG8gZGF0ZVxuICAgICAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0UGVuZGluZ0VudGVyZWRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBJbmNyZWFzZSB2YWx1ZSAqL1xuICAgIGluY3JlYXNlKHN0ZXAgPSB0aGlzLl9nZXRTdGVwVmFsdWVGb3JJbmNyZWFzZSgpKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYW5JbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IGFkZEFuZEN1dEZsb2F0aW5nTnVtYmVyRGlzdG9ydGlvbih0aGlzLl9jdXJyZW50VmFsdWUsIHN0ZXApO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsaWRhdGVWYWx1ZUJ5TGltaXRzKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZWRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBEZWNyZWFzZSB2YWx1ZSAqL1xuICAgIGRlY3JlYXNlKHN0ZXAgPSB0aGlzLl9nZXRTdGVwVmFsdWVGb3JEZWNyZWFzZSgpKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYW5EZWNyZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IGFkZEFuZEN1dEZsb2F0aW5nTnVtYmVyRGlzdG9ydGlvbih0aGlzLl9jdXJyZW50VmFsdWUsIC1zdGVwKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbGlkYXRlVmFsdWVCeUxpbWl0cyh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VkVmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogSW5jcmVhc2UgdmFsdWUgYnkgbGFyZ2Ugc3RlcCAqL1xuICAgIGxhcmdlU3RlcEluY3JlYXNlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fZ2V0U3RlcFZhbHVlRm9ySW5jcmVhc2UoKSAqIHRoaXMubGFyZ2VyU3RlcDtcbiAgICAgICAgdGhpcy5pbmNyZWFzZShzdGVwKTtcbiAgICB9XG5cbiAgICAvKiogRGVjcmVhc2UgdmFsdWUgYnkgbGFyZ2Ugc3RlcCAqL1xuICAgIGxhcmdlU3RlcERlY3JlYXNlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fZ2V0U3RlcFZhbHVlRm9yRGVjcmVhc2UoKSAqIHRoaXMubGFyZ2VyU3RlcDtcbiAgICAgICAgdGhpcy5kZWNyZWFzZShzdGVwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGNhdGNoIHZhbHVlIGR1cmluZyBlbnRlcmluZyBmcm9tIHZpZXcuXG4gICAgICovXG4gICAgb25FbnRlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSB0aGlzLnBhcnNlVmFsdWVJbkZvY3VzTW9kZSh2YWx1ZSk7XG4gICAgICAgIGxldCBwZW5kaW5nVmFsdWUgPSBwYXJzZWRWYWx1ZTtcblxuICAgICAgICBpZiAocGVuZGluZ1ZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwZW5kaW5nVmFsdWUgPSB0aGlzLl92YWxpZGF0ZVZhbHVlQnlMaW1pdHMocGVuZGluZ1ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvdWxkIG5vdCBwYXJzZSB2YWx1ZSwgdmFsdWUgaXMgaW52YWxpZFxuICAgICAgICBpZiAocGVuZGluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRQZW5kaW5nRW50ZXJlZFZhbHVlKG5ldyBFcnJvcigndmFsdWUgaXMgaW52YWxpZCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFBlbmRpbmdFbnRlcmVkVmFsdWUocGVuZGluZ1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ29tbWl0IGVudGVyZWQgdmFsdWUgZnJvbSB2aWV3LlxuICAgICAqL1xuICAgIGNvbW1pdEVudGVyZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgY29uc3QgbmVlZFRvVXBkYXRlVmlldyA9IHRoaXMuX3ZhbHVlID09PSBuZXdWYWx1ZTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICAgICAgaWYgKG5lZWRUb1VwZGF0ZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB0aGlzLmxhc3RFbWl0dGVkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogSW5kaWNhdGVzIHdoZW4gaW5wdXQgZ2V0cyBmb2N1c2VkXG4gICAgICovXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuX29uRm9jdXNDaGFuZ2VkKHRydWUpO1xuICAgICAgICAvLyBXaGVuIGZvY3VzIGhhcHBlbnMgYnkgXCJUYWJcIiBrZXkgYW4gaW5wdXQgZmllbGQgdmFsdWUgZ2V0cyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICAgICAgICAvLyBJbiBjYXNlcyB3aGVuIG5ld19mb3JtYXR0ZWRfdmFsdWUgIT09IHByZXZpb3VzX3ZhbHVlIHRoZSBzZWxlY3Rpb24gZ2V0cyBsb3N0LlxuICAgICAgICAvLyBTbyBpdCdzIG5lZWRlZCB0byB0cmFjayBzZWxlY3Rpb24gYmVmb3JlIG5ldyB2YWx1ZSByZW5kZXJpbmcgYW5kIHJlc3RvcmUgaXQuXG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9ID0gdGhpcy5fZ2V0VmFsdWVTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb25FbmQgLSBzZWxlY3Rpb25TdGFydCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlU2VsZWN0aW9uKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBJbmRpY2F0ZXMgd2hlbiBpbnB1dCBsb3NlcyBmb2N1c1xuICAgICAqL1xuICAgIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuX29uRm9jdXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSB2YWx1ZUNoYW5nZSBldmVudCAqL1xuICAgIGFic3RyYWN0IGNyZWF0ZUNoYW5nZUV2ZW50KHZhbHVlOiBudW1iZXIpOiBTdGVwSW5wdXRDaGFuZ2VFdmVudDtcblxuICAgIC8qKiBGb3JtYXQgdmFsdWUgZm9yIHZpZXcgcHJlc2VudGF0aW9uICovXG4gICAgYWJzdHJhY3QgZm9ybWF0VmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmc7XG5cbiAgICAvKiogRm9ybWF0IHZhbHVlIGZvciBcImluIGZvY3VzXCIgbW9kZSAqL1xuICAgIGFic3RyYWN0IGZvcm1hdFZhbHVlSW5Gb2N1c01vZGUodmFsdWU6IG51bWJlcik6IHN0cmluZztcblxuICAgIC8qKiBQYXJzZSB2YWx1ZSBlbnRlcmVkIFwiaW4gZm9jdXNcIiBtb2RlICovXG4gICAgYWJzdHJhY3QgcGFyc2VWYWx1ZUluRm9jdXNNb2RlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0Zvcm1FcnJvclN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlc1xuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5pc0Vycm9yU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Vycm9yU3RhdGUgPSB0aGlzLnN0YXRlID09PSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRXJyb3JTdGF0ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VtaXRDaGFuZ2VkVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fdmFsdWU7XG4gICAgICAgIHRoaXMubGFzdEVtaXR0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5jcmVhdGVDaGFuZ2VFdmVudCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RlcFZhbHVlRm9ySW5jcmVhc2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFN0ZXBWYWx1ZSgnaW5jcmVhc2UnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFN0ZXBWYWx1ZUZvckRlY3JlYXNlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRTdGVwVmFsdWUoJ2RlY3JlYXNlJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBHZXQgc3RlcCB2YWx1ZSBiYXNlZCBlaXRoZXIgb24gXCJzdGVwRm5cIiBvciBcInN0ZXBcIlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFN0ZXBWYWx1ZShhY3Rpb246IFN0ZXBJbnB1dFN0ZXBGdW5jdGlvbkFjdGlvbik6IG51bWJlciB7XG4gICAgICAgIC8vIHN0ZUZuIGhhcyBwcmVjZWRlbmNlXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fc3RlcEZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxjdWxhdGVkU3RlcCA9IHRoaXMuX3N0ZXBGbih0aGlzLl9jdXJyZW50VmFsdWUgPz8gdGhpcy5taW4sIGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRlZFN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVZpZXdWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5fZm9ybWF0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1hdFZhbHVlKHZhbHVlID0gdGhpcy5fdmFsdWUpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRWYWx1ZUluRm9jdXNNb2RlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW5kZXJWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLl9nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkoaW5wdXRFbCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0SW5wdXROYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlU2VsZWN0aW9uKCk6IHsgc2VsZWN0aW9uU3RhcnQ6IG51bWJlcjsgc2VsZWN0aW9uRW5kOiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLl9nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBpbnB1dEVsPy5zZWxlY3Rpb25TdGFydCB8fCAwO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBpbnB1dEVsPy5zZWxlY3Rpb25FbmQgfHwgMDtcbiAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VmFsdWVTZWxlY3Rpb24oc2VsZWN0aW9uU3RhcnQ6IG51bWJlciwgc2VsZWN0aW9uRW5kOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuX2dldElucHV0TmF0aXZlRWxlbWVudCgpO1xuICAgICAgICBpZiAoIWlucHV0RWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dEVsLnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ2FuSW5jcmVtZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fZ2V0U3RlcFZhbHVlRm9ySW5jcmVhc2UoKTtcbiAgICAgICAgdGhpcy5jYW5JbmNyZW1lbnQgPSAodGhpcy5fdmFsdWUgfHwgMCkgKyBzdGVwIDw9IHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNhbkRlY3JlbWVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMuX2dldFN0ZXBWYWx1ZUZvckRlY3JlYXNlKCk7XG4gICAgICAgIHRoaXMuY2FuRGVjcmVtZW50ID0gKHRoaXMuX3ZhbHVlIHx8IDApIC0gc3RlcCA+PSB0aGlzLl9taW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVDYW5EZWNyZW1lbnRJbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNhbkRlY3JlbWVudCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDYW5JbmNyZW1lbnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbGlkYXRlVmFsdWVCeUxpbWl0cyh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlLCB0aGlzLl9taW4pLCB0aGlzLl9tYXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tBbmRUaHJvd0Vycm9ySWZTdGVwRG9lc250TWF0Y2hQcmVjaXNpb24ocHJlY2lzaW9uOiBudW1iZXIsIHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiBcInByZWNpc2lvblwiIGlzIHZhbGlkIGNvbXBhcmluZyB0byBcInN0ZXBcIlxuICAgICAgICBjb25zdCBzdGVwRGVjaW1hbExlbmd0aCA9IGdldE51bWJlckRlY2ltYWxMZW5ndGgoc3RlcCk7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbkRlY2ltYWxMZW5ndGggPSBnZXROdW1iZXJEZWNpbWFsTGVuZ3RoKHByZWNpc2lvbik7XG4gICAgICAgIGlmIChzdGVwRGVjaW1hbExlbmd0aCA+IHByZWNpc2lvbkRlY2ltYWxMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIGBTdGVwIGlucHV0OiBUaGUgdmFsdWUgb2Ygc3RlcCBwcm9wZXJ0eSBjYW4gbm90IGNvbnRhaW4gbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgdGhhbiB3aGF0IGlzIHNldCB0byB0aGUgcHJlY2lzaW9uIHByb3BlcnR5YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0UGVuZGluZ0VudGVyZWRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgRXJyb3IpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ0VudGVyZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRQZW5kaW5nRW50ZXJlZFZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wZW5kaW5nRW50ZXJlZFZhbHVlID0gbnVsbDtcbiAgICB9XG59XG4iXX0=
|