@fundamental-ngx/platform 0.47.4 → 0.48.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-bar/action-bar.component.mjs +8 -9
- package/esm2022/action-bar/action-bar.module.mjs +4 -4
- package/esm2022/action-button-group/action-button-group.component.mjs +4 -4
- package/esm2022/action-button-group/action-button-group.module.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +6 -11
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +6 -8
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +5 -6
- package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +5 -5
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +8 -11
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +6 -8
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +5 -7
- package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +5 -6
- package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +6 -6
- package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +6 -7
- package/esm2022/approval-flow/approval-flow.component.mjs +8 -10
- 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 +5 -5
- 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 +5 -5
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +5 -5
- 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 +4 -4
- 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 +8 -10
- package/esm2022/dynamic-page/dynamic-page.config.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.service.mjs +3 -3
- package/esm2022/feed-input/feed-input.component.mjs +6 -7
- package/esm2022/feed-input/feed-input.module.mjs +4 -4
- package/esm2022/form/auto-complete/auto-complete.directive.mjs +5 -5
- package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/form/checkbox/checkbox.component.mjs +6 -6
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +8 -8
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
- package/esm2022/form/combobox/combobox/combobox.component.mjs +9 -11
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +13 -15
- package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2022/form/combobox/combobox.config.mjs +4 -4
- package/esm2022/form/combobox/combobox.module.mjs +4 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +8 -6
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
- package/esm2022/form/date-picker/date-picker.component.mjs +6 -6
- package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -6
- 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 +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +6 -7
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +4 -4
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +5 -5
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +6 -6
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +9 -11
- 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 +7 -8
- package/esm2022/form/form-generator/form-generator.service.mjs +5 -5
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +5 -5
- 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 +10 -10
- package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +6 -6
- package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +6 -6
- package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +5 -5
- 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 +6 -6
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +6 -6
- package/esm2022/form/form-group/form-group.component.mjs +8 -10
- 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 +5 -5
- package/esm2022/form/input/fdp-input.module.mjs +4 -4
- package/esm2022/form/input/input.component.mjs +6 -6
- package/esm2022/form/input-group/addon-body.component.mjs +5 -5
- package/esm2022/form/input-group/addon.component.mjs +5 -5
- package/esm2022/form/input-group/input-group.component.mjs +12 -12
- package/esm2022/form/input-group/input-group.config.mjs +4 -4
- 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 +7 -7
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +6 -6
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +10 -12
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +8 -9
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.config.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2022/form/multi-input/base-multi-input.mjs +6 -6
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +12 -12
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.component.mjs +9 -11
- package/esm2022/form/multi-input/multi-input.config.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
- package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +6 -6
- package/esm2022/form/platform-file-uploader/platform-file-uploader.module.mjs +4 -4
- package/esm2022/form/radio-group/radio/radio.component.mjs +8 -8
- package/esm2022/form/radio-group/radio-group.component.mjs +8 -8
- package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
- package/esm2022/form/select/commons/base-select.mjs +6 -6
- package/esm2022/form/select/select/select.component.mjs +8 -8
- package/esm2022/form/select/select.config.mjs +4 -4
- package/esm2022/form/select/select.module.mjs +4 -4
- package/esm2022/form/step-input/base.step-input.mjs +5 -5
- package/esm2022/form/step-input/number/number-step-input.component.mjs +9 -10
- package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
- package/esm2022/form/step-input/step-input-control.directive.mjs +6 -6
- package/esm2022/form/step-input/step-input-decrement.directive.mjs +5 -5
- package/esm2022/form/step-input/step-input-increment.directive.mjs +5 -5
- 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 +6 -6
- 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 +8 -9
- 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 +6 -6
- package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/fundamental-ngx.module.mjs +5 -5
- package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +5 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +6 -8
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +6 -8
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +5 -8
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +7 -9
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +6 -15
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +5 -9
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +6 -8
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +5 -5
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +8 -9
- package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
- package/esm2022/info-label/info-label.component.mjs +5 -5
- package/esm2022/info-label/info-label.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +5 -5
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
- package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
- package/esm2022/list/base-list-item.mjs +11 -11
- package/esm2022/list/display-list-item/display-list-item.component.mjs +6 -7
- 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 +4 -4
- package/esm2022/list/list-group-footer.component.mjs +3 -3
- package/esm2022/list/list-group-header.component.mjs +3 -3
- package/esm2022/list/list.component.mjs +9 -11
- package/esm2022/list/list.config.mjs +3 -3
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/load-more-content.directive.mjs +4 -4
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +4 -4
- package/esm2022/list/object-list-item/object-list-item.component.mjs +6 -7
- package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +6 -7
- package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
- package/esm2022/menu/menu-item.component.mjs +7 -7
- package/esm2022/menu/menu-trigger.directive.mjs +6 -6
- package/esm2022/menu/menu.component.mjs +6 -6
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu-button/menu-button.component.mjs +5 -5
- 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 +6 -6
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +8 -10
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -6
- package/esm2022/message-popover/message-popover.component.mjs +7 -9
- package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
- package/esm2022/object-marker/object-marker.component.mjs +6 -7
- package/esm2022/object-marker/object-marker.module.mjs +4 -4
- package/esm2022/object-status/object-status.component.mjs +8 -8
- package/esm2022/object-status/object-status.module.mjs +4 -4
- package/esm2022/page-footer/page-footer.component.mjs +6 -6
- 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 +4 -4
- package/esm2022/panel/panel.component.mjs +5 -5
- package/esm2022/panel/panel.config.mjs +4 -4
- package/esm2022/panel/panel.module.mjs +4 -4
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +8 -9
- package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +4 -4
- package/esm2022/search-field/search-field.component.mjs +16 -18
- package/esm2022/search-field/search-field.module.mjs +4 -4
- package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +9 -16
- 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 +5 -6
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +6 -9
- package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +6 -8
- package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +7 -7
- package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.component.mjs +9 -9
- package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
- package/esm2022/settings-generator/settings-generator.service.mjs +4 -4
- package/esm2022/shared/base.mjs +5 -5
- package/esm2022/shared/form/base.input.mjs +6 -6
- package/esm2022/shared/form/collection-base.input.mjs +6 -6
- package/esm2022/shared/form/inline-layout-collection-base.input.mjs +13 -13
- 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 +6 -6
- 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 +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -9
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +7 -9
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +5 -5
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +8 -10
- package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +4 -4
- package/esm2022/split-menu-button/split-menu-button.component.mjs +6 -6
- 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 +5 -5
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -8
- package/esm2022/table/components/table-column/table-column.component.mjs +6 -6
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -6
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +5 -15
- package/esm2022/table/components/table-group-row/table-group-row.component.mjs +7 -7
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +6 -6
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +11 -13
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +7 -9
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +9 -11
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +6 -9
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +6 -8
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +9 -11
- 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 +5 -5
- 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 -9
- package/esm2022/table/components/table-row/table-row.component.mjs +8 -12
- 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 +7 -8
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +6 -6
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +5 -6
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +5 -14
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +5 -8
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +5 -7
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +7 -10
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -8
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +5 -5
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +9 -14
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +6 -6
- package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -5
- package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell.directive.mjs +16 -16
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
- 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 +7 -7
- package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
- package/esm2022/table-helpers/enums/collection-filter.enum.mjs +16 -1
- 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 +5 -5
- package/esm2022/table-helpers/services/table-responsive.service.mjs +5 -5
- 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 +3 -3
- package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
- package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +6 -8
- package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +8 -8
- package/esm2022/thumbnail/thumbnail.component.mjs +7 -8
- package/esm2022/thumbnail/thumbnail.module.mjs +4 -4
- package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +6 -9
- package/esm2022/upload-collection/dialogs/new-folder/new-folder.component.mjs +6 -8
- package/esm2022/upload-collection/directives/upload-collection-dragndrop.directive.mjs +5 -5
- package/esm2022/upload-collection/services/files-validator.service.mjs +3 -3
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +7 -11
- package/esm2022/upload-collection/upload-collection.module.mjs +4 -4
- package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +5 -5
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +6 -10
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +13 -15
- package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
- package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +5 -5
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +12 -17
- 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 +5 -5
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -8
- 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 +4 -4
- package/esm2022/variant-management/variant-management.component.mjs +8 -10
- package/esm2022/variant-management/variant-management.module.mjs +4 -4
- package/esm2022/wizard-generator/base-wizard-generator.mjs +5 -5
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +7 -8
- package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -9
- package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +6 -7
- package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +6 -7
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +5 -6
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +7 -7
- 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 +4 -4
- package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.service.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs +11 -12
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-action-button-group.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +62 -74
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +54 -56
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -10
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +453 -464
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +59 -87
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +73 -78
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +20 -20
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +29 -33
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +9 -10
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +12 -12
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -19
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +29 -32
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +45 -56
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +36 -36
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +48 -53
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +115 -100
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +168 -218
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +22 -23
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +27 -34
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +41 -52
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +28 -31
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +58 -61
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +5 -5
- package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -2
- package/form/form-group/form-group.component.d.ts +1 -1
- package/form/input-group/input-group.component.d.ts +2 -2
- package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +1 -1
- package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
- package/fundamental-ngx-platform-v0.48.0-rc.0.tgz +0 -0
- package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +0 -2
- package/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.d.ts +0 -2
- package/list/list.component.d.ts +1 -1
- package/package.json +4 -4
- package/page-footer/page-footer.component.d.ts +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +1 -1
- package/settings-generator/settings-generator.component.d.ts +2 -2
- package/table/components/table-p13-dialog/filtering/filter-rule.component.d.ts +2 -0
- package/table/table.component.d.ts +1 -1
- package/table-helpers/enums/collection-filter.enum.d.ts +2 -0
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +1 -1
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +1 -1
- package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +2 -2
- package/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.d.ts +2 -2
- package/fundamental-ngx-platform-v0.47.4.tgz +0 -0
|
@@ -297,12 +297,12 @@ export class BaseSelect extends CollectionBaseInput {
|
|
|
297
297
|
}
|
|
298
298
|
});
|
|
299
299
|
}
|
|
300
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
301
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.ControlContainer, optional: true, skipSelf: true }, { token: i1.NgForm, optional: true, self: true }, { token: i2.SelectConfig }, { token: FD_FORM_FIELD, host: true, optional: true, skipSelf: true }, { token: FD_FORM_FIELD_CONTROL, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
301
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: BaseSelect, inputs: { maxHeight: "maxHeight", mobile: "mobile", group: "group", groupKey: "groupKey", secondaryKey: "secondaryKey", showSecondaryText: "showSecondaryText", glyph: "glyph", appendTo: "appendTo", triggerValue: "triggerValue", fillControlMode: "fillControlMode", secondaryTextAlignment: "secondaryTextAlignment", width: "width", readonly: "readonly", placeholder: "placeholder", closeOnOutsideClick: "closeOnOutsideClick", controlTemplate: "controlTemplate", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", mobileConfig: "mobileConfig", noValueLabel: "noValueLabel", noWrapText: "noWrapText", autoResize: "autoResize", firstColumnRatio: "firstColumnRatio", secondColumnRatio: "secondColumnRatio", minWidth: "minWidth", maxWidth: "maxWidth", tabOutStrategy: "tabOutStrategy", list: "list" }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "customTemplates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }], usesInheritance: true, ngImport: i0 }); }
|
|
302
302
|
}
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseSelect, decorators: [{
|
|
304
304
|
type: Directive
|
|
305
|
-
}], ctorParameters:
|
|
305
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
|
|
306
306
|
type: Optional
|
|
307
307
|
}, {
|
|
308
308
|
type: Self
|
|
@@ -332,7 +332,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
332
332
|
}, {
|
|
333
333
|
type: Inject,
|
|
334
334
|
args: [FD_FORM_FIELD_CONTROL]
|
|
335
|
-
}] }]
|
|
335
|
+
}] }], propDecorators: { maxHeight: [{
|
|
336
336
|
type: Input
|
|
337
337
|
}], mobile: [{
|
|
338
338
|
type: Input
|
|
@@ -397,4 +397,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
397
397
|
type: ContentChildren,
|
|
398
398
|
args: [TemplateDirective]
|
|
399
399
|
}] } });
|
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9zZWxlY3QvY29tbW9ucy9iYXNlLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUVILGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFFUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQThCLE1BQU0sNEJBQTRCLENBQUM7QUFDOUcsT0FBTyxFQUdILE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsUUFBUSxFQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUMzQixNQUFNLGtDQUFrQyxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFJaEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQzs7O09BR0c7SUFDSCxZQUNXLE9BQVksQ0FBQyx5QkFBeUI7O1FBQXRDLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFFbkIsUUFBUSxDQUFDLDhGQUE4RixDQUFDLENBQUM7SUFDN0csQ0FBQztDQUNKO0FBR0QsTUFBTSxPQUFnQixVQUNsQixTQUFRLG1CQUFtQjtJQXVHM0IseUJBQXlCO0lBQ3pCLElBQ0ksZ0JBQWdCLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsSUFDSSxpQkFBaUIsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQXVCRCwrQkFBK0I7SUFDL0IsSUFDSSxJQUFJLENBQUMsS0FBVTtRQUNmLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxRQUFRO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQW9FRCxjQUFjO0lBQ2QsWUFDYSxFQUFxQixFQUM5QixVQUFzQixFQUNPLFNBQW9CLEVBQ2hCLGdCQUFrQyxFQUN0QyxNQUFjLEVBQ2pDLFlBQTBCLEVBQ21CLFNBQTRCLEVBQ3BCLFdBQXFDO1FBRXBHLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBVDFFLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRUQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWM7UUF0T3hDLDBEQUEwRDtRQUUxRCxjQUFTLEdBQUcsT0FBTyxDQUFDO1FBRXBCLHdEQUF3RDtRQUV4RCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsaURBQWlEO1FBRWpELFVBQUssR0FBRyxLQUFLLENBQUM7UUFVZCxpRUFBaUU7UUFFakUsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGlEQUFpRDtRQUVqRCxVQUFLLEdBQUcsaUJBQWlCLENBQUM7UUFVMUI7Ozs7O1dBS0c7UUFFSCxvQkFBZSxHQUFvQixVQUFVLENBQUM7UUFFOUMsMkZBQTJGO1FBRTNGLDJCQUFzQixHQUFrQixPQUFPLENBQUM7UUFRaEQsZ0RBQWdEO1FBRWhELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFPakIsa0RBQWtEO1FBRWxELHdCQUFtQixHQUFHLElBQUksQ0FBQztRQU0zQixpREFBaUQ7UUFFakQsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFFdEIsOENBQThDO1FBRTlDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsd0NBQXdDO1FBRXhDLGlCQUFZLEdBQXFCLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDO1FBVTFELCtCQUErQjtRQUUvQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLDRDQUE0QztRQUU1QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBbUNuQjs7OztXQUlHO1FBRUgsbUJBQWMsR0FBK0IsT0FBTyxDQUFDO1FBa0JyRCwyQ0FBMkM7UUFFM0Msb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQW9DOUQsY0FBYztRQUNkLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUtwQyxvQ0FBb0M7UUFDNUIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBSzdDLGNBQWM7UUFDTixhQUFRLEdBQWdCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBb0I5RCxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ0osUUFBUSxDQUFDLFFBQWEsRUFBRSxZQUFZLEdBQUcsSUFBSTtRQUNqRCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsSUFBSSxZQUFZLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDdEQ7WUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEO3NCQUNrQjtJQUNsQixLQUFLLENBQUMsUUFBMkIsSUFBSSxFQUFFLGFBQXNCLEtBQUs7UUFDOUQsSUFBSSxLQUFLLEVBQUU7WUFDUCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztZQUNoRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLE9BQU87YUFDVjtTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVEsQ0FBQyxNQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLEtBQW9CLEVBQUUsS0FBdUI7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxxQkFBcUIsQ0FBQyxTQUErQjtRQUNqRCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUVELFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjO0lBQ04sb0JBQW9CO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25ELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0sscUJBQXFCLENBQUMsS0FBWTtRQUN0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsTUFBTSx1QkFBdUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSx1QkFBdUIsRUFBRTtZQUN6QixPQUFPLEtBQTJCLENBQUM7U0FDdEM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLG1CQUFtQixFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25EO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxtQkFBbUIsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNLLDRCQUE0QixDQUFDLEtBQVk7UUFDN0MsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUQ7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0sscUNBQXFDLENBQUksS0FBVTtRQUN2RCxNQUFNLFdBQVcsR0FBdUIsRUFBRSxDQUFDO1FBRTNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUNqQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSyw4QkFBOEIsQ0FBQyxLQUFlO1FBQ2xELE1BQU0sV0FBVyxHQUF1QixFQUFFLENBQUM7UUFFM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDN0M7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssbUNBQW1DLENBQUMsS0FBWTtRQUNwRCxNQUFNLFdBQVcsR0FBdUIsRUFBRSxDQUFDO1FBRTNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsS0FBSzthQUNSLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOztTQUVLO0lBQ0csc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDdEMsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNuQixLQUFLLHFCQUFxQjtvQkFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7b0JBQ2hELE1BQU07Z0JBQ1YsS0FBSyx3QkFBd0I7b0JBQ3pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUNuRCxNQUFNO2dCQUNWLEtBQUssdUJBQXVCO29CQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztvQkFDbEQsTUFBTTthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQWxjaUIsVUFBVSxnUkEyT2dCLGFBQWEseURBQ2IscUJBQXFCO2tHQTVPL0MsVUFBVSw2NEJBMEtYLGlCQUFpQiw0RUFKdkIsYUFBYTs7MkZBdEtOLFVBQVU7a0JBRC9CLFNBQVM7OzBCQXdPRCxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUVoQixRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwRCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0F0T2pFLFNBQVM7c0JBRFIsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQVVOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFTTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBV0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQWNOLFFBQVE7c0JBRFAsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQUtGLElBQUk7c0JBRFAsS0FBSztnQkFpQk4sZUFBZTtzQkFEZCxNQUFNO2dCQUtQLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixlQUFlO3NCQURkLGVBQWU7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MLCBTaW5nbGVEcm9wZG93blZhbHVlQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ29udGVudERlbnNpdHlTZXJ2aWNlLFxuICAgIEZvY3VzRXNjYXBlRGlyZWN0aW9uLFxuICAgIEtleVV0aWwsXG4gICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgd2Fybk9uY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25CYXNlSW5wdXQsXG4gICAgaXNKc09iamVjdCxcbiAgICBpc09wdGlvbkl0ZW0sXG4gICAgaXNTdHJpbmcsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFRleHRBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi9jb21ib2JveCc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdC5tb2RlbHMnO1xuaW1wb3J0IHsgU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi4vc2VsZWN0LmNvbmZpZyc7XG5cbmV4cG9ydCB0eXBlIEZkcFNlbGVjdERhdGE8VD4gPSBTZWxlY3RPcHRpb25JdGVtW10gfCBPYnNlcnZhYmxlPFRbXT4gfCBUW107XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIGBGZHBTZWxlY3Rpb25DaGFuZ2VFdmVudGAgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvdXIgb2YgcGxhaW4gdmFsdWUgZW1pc3Npb25cbiAqL1xuZXhwb3J0IGNsYXNzIEZkcFNlbGVjdGlvbkNoYW5nZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBTZWxlY3Qgc2VsZWN0aW9uIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIHNlbGVjdGVkIHZhbHVlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBwYXlsb2FkOiBhbnkgLy8gQ29udGFpbnMgc2VsZWN0ZWQgaXRlbVxuICAgICkge1xuICAgICAgICB3YXJuT25jZSgnRmRwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvdXIgb2YgcGxhaW4gdmFsdWUgZW1pc3Npb24nKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZWxlY3RcbiAgICBleHRlbmRzIENvbGxlY3Rpb25CYXNlSW5wdXRcbiAgICBpbXBsZW1lbnRzIFNpbmdsZURyb3Bkb3duVmFsdWVDb250cm9sLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogUHJvdmlkZXMgbWF4aW11bSBkZWZhdWx0IGhlaWdodCBmb3IgdGhlIG9wdGlvblBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBzaG91bGQgYmUgYnVpbHQgb24gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbGxzIHRoZSBzZWxlY3QgaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXAgPSBmYWxzZTtcblxuICAgIC8qKiBBIGZpZWxkIG5hbWUgdG8gdXNlIHRvIGdyb3VwIGRhdGEgYnkgKHN1cHBvcnQgZG90dGVkIG5vdGF0aW9uKSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGZpZWxkIHRvIHNob3cgZGF0YSBpbiBzZWNvbmRhcnkgY29sdW1uICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogU2hvdyB0aGUgc2Vjb25kIGNvbHVtbiAoQXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlY29uZGFyeVRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBHbHlwaCB0byBhZGQgaWNvbiBpbiB0aGUgc2VsZWN0IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ3NsaW0tYXJyb3ctZG93bic7XG5cbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gd2hpY2ggdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGFwcGVuZGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG86IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogVHJpZ2dlciB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlclZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIHNlbGVjdCBib2R5IHdpZHRoLlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogTGVhdmUgYmxhbmsgZm9yIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ24gdGV4dCBpbnNpZGUgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6IFRleHRBbGlnbm1lbnQgPSAncmlnaHQnO1xuXG4gICAgLyoqXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIHdpZHRoOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBpcyByZWFkb25seS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBzZWxlY3QuIEFwcGVhcnMgaW4gdGhlXG4gICAgICogdHJpZ2dlcmJveCBpZiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgdGhlIHBvcG92ZXIgb24gb3V0c2lkZSBjbGljay4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSB1c2VkIHRvIGJ1aWxkIGNvbnRyb2wgYm9keS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5ID0gbnVsbDtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbCA9IG51bGw7XG5cbiAgICAvKiogU2VsZWN0IElucHV0IE1vYmlsZSBDb25maWd1cmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVDb25maWc6IE1vYmlsZU1vZGVDb25maWcgPSB7IGhhc0Nsb3NlQnV0dG9uOiB0cnVlIH07XG5cbiAgICAvKipcbiAgICAgKiBTdHJpbmcgcmVuZGVyZWQgYXMgZmlyc3QgdmFsdWUgaW4gdGhlIHBvcHVwIHdoaWNoIGxldCB0aGUgdXNlciB0byBtYWtlICdubyBzZWxlY3Rpb24nIGZyb21cbiAgICAgKiBhdmFpbGFibGUgbGlzdCBvZiB2YWx1ZXMuIFdoZW4gdGhpcyBvcHRpb24gaXMgYWN0aXZlIGFuZCB1c2UgbWFrZSB0aGlzIHNlbGVjdGlvbiB3ZSBzYXZlIGFcbiAgICAgKiBOVUxMIHZhbHVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBub1ZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIG5vdCB0byB3cmFwIHRleHQgKi9cbiAgICBASW5wdXQoKVxuICAgIG5vV3JhcFRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBUdXJucyBvbi9vZmYgQWRqdXN0YWJsZSBXaWR0aCBmZWF0dXJlICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogRmlyc3QgQ29sdW1uIHJhdGlvICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlyc3RDb2x1bW5SYXRpbyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2ZpcnN0Q29sdW1uUmF0aW8gPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0Q29sdW1uUmF0aW8oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0Q29sdW1uUmF0aW87XG4gICAgfVxuXG4gICAgLyoqIFNlY29vbmQgQ29sdW1uIHJhdGlvICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2Vjb25kQ29sdW1uUmF0aW8odmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9zZWNvbmRDb2x1bW5SYXRpbyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc2Vjb25kQ29sdW1uUmF0aW8oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZENvbHVtblJhdGlvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1pbiB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbldpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFdpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQWN0aW9uIHRvIHBlcmZvcm0gd2hlbiB1c2VyIHNoaWZ0cyBmb2N1cyBmcm9tIHRoZSBkcm9wZG93bi5cbiAgICAgKiAtIGBjbG9zZWAgd2lsbCBjbG9zZSB0aGUgZHJvcGRvd24gcHJlc2VydmluZyBwcmV2aW91c2x5IHNlbGVjdGVkIHZhbHVlLlxuICAgICAqIC0gYGNsb3NlQW5kU2VsZWN0YCB3aWxsIGNsb3NlIHRoZSBkcm9wZG93biBhbmQgc2VsZWN0IGxhc3QgZm9jdXNlZCBkcm9wZG93biBpdGVtLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiT3V0U3RyYXRlZ3k6ICdjbG9zZScgfCAnY2xvc2VBbmRTZWxlY3QnID0gJ2Nsb3NlJztcblxuICAgIC8qKiBEYXRhIGZvciBzdWdnZXN0aW9uIGxpc3QgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsaXN0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25JdGVtcyA9IHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgbGlzdCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uSXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FuQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMubW9iaWxlICYmIHRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0KTtcbiAgICB9XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGZHBTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3RDb21wb25lbnQ6IExpc3RDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgY3VzdG9tVGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEN1c3RvbSBPcHRpb24gaXRlbSBUZW1wbGF0ZVxuICAgICAqICogQGhpZGRlblxuICAgICAqICovXG4gICAgX29wdGlvbkl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBTZWNvbmRhcnkgaXRlbSBUZW1wbGF0ZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKiAqL1xuICAgIF9zZWNvbmRhcnlJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gU2VsZWN0ZWQgb3B0aW9uIGl0ZW0gVGVtcGxhdGVcbiAgICAgKiBAaGlkZGVuXG4gICAgICogKi9cbiAgICBfc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250ZW50RGVuc2l0eVNlcnZpY2U6IENvbnRlbnREZW5zaXR5U2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2Ygb3B0aW9uIGl0ZW1zXG4gICAgICogQGhpZGRlblxuICAgICAqICovXG4gICAgX29wdGlvbkl0ZW1zOiBTZWxlY3RPcHRpb25JdGVtW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWFyY2hJbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGlzIG9wZW5lZC4gKi9cbiAgICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIE5lZWQgZm9yIG9wZW5pbmcgbW9iaWxlIHZlcnNpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vcGVuQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpcnN0Q29sdW1uUmF0aW86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Vjb25kQ29sdW1uUmF0aW86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIHByb3RlY3RlZCBzZWxlY3RDb25maWc6IFNlbGVjdENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2QsIGVsZW1lbnRSZWYsIG5nQ29udHJvbCwgY29udHJvbENvbnRhaW5lciwgbmdGb3JtLCBmb3JtRmllbGQsIGZvcm1Db250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFdpbmRvd1Jlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIElzIGVtcHR5IHNlYXJjaCBmaWVsZCAqL1xuICAgIGdldCBpc0VtcHR5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUobmV3VmFsdWU6IGFueSwgZW1pdE9uQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgaWYgKGVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHsgcGF5bG9hZDogdGhpcy52YWx1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIENsb3NlIGxpc3QgKiAqL1xuICAgIGNsb3NlKGV2ZW50OiBNb3VzZUV2ZW50IHwgbnVsbCA9IG51bGwsIGZvcmNlQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuaWQgPT09IHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNPcGVuICYmIChmb3JjZUNsb3NlIHx8IHRoaXMuY2FuQ2xvc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX29wZW5DaGFuZ2UubmV4dCh0aGlzLl9pc09wZW4pO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dMaXN0KGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNPcGVuICE9PSBpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2lzT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLl9vcGVuQ2hhbmdlLm5leHQoaXNPcGVuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlUHJlc3NFbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCwgdmFsdWU6IFNlbGVjdE9wdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRU5URVIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHBhc3NlZCB0byBsaXN0IGNvbXBvbmVudCAqL1xuICAgIGhhbmRsZUxpc3RGb2N1c0VzY2FwZShkaXJlY3Rpb246IEZvY3VzRXNjYXBlRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRXaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dldE9wdGlvbnNMaXN0V2lkdGgoKTtcblxuICAgICAgICBpZiAoIXRoaXMuYXV0b1Jlc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZ2V0T3B0aW9uc0xpc3RXaWR0aCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE9wdGlvbnNMaXN0V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBib2R5Lm9mZnNldFdpZHRoIC0gYm9keS5jbGllbnRXaWR0aDtcbiAgICAgICAgdGhpcy5tYXhXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gc2Nyb2xsQmFyV2lkdGggLSByZWN0LmxlZnQ7XG4gICAgICAgIHRoaXMubWluV2lkdGggPSByZWN0LndpZHRoIC0gMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9yaWdpbmFsIGRhdGEgdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1swXTtcblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSA9IGlzT3B0aW9uSXRlbShpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNPcHRpb25JdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMgYXMgU2VsZWN0T3B0aW9uSXRlbVtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0T3B0aW9uSXRlbVtdIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIFNlY29uZGFyeSBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zPEs+KGl0ZW1zOiBLW10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0T3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogdGhpcy5vYmplY3RHZXQodmFsdWUsIHRoaXMuc2Vjb25kYXJ5S2V5KSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5sb29rdXBWYWx1ZSh2YWx1ZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgUHJpbWl0aXZlIGRhdGEoQm9vbGVhbiwgU3RyaW5nLCBOdW1iZXIpIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtczogc3RyaW5nW10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0T3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlIChEZWZhdWx0KVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheVZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBBc3NpZ24gY3VzdG9tIHRlbXBsYXRlc1xuICAgICAqICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0ZW1wbGF0ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnX29wdGlvbkl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vjb25kYXJ5SXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ19zZWxlY3RlZEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
400
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9zZWxlY3QvY29tbW9ucy9iYXNlLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUVILGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFFUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQThCLE1BQU0sNEJBQTRCLENBQUM7QUFDOUcsT0FBTyxFQUdILE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsUUFBUSxFQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUMzQixNQUFNLGtDQUFrQyxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFB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O2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFTTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBV0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQWNOLFFBQVE7c0JBRFAsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQUtGLElBQUk7c0JBRFAsS0FBSztnQkFpQk4sZUFBZTtzQkFEZCxNQUFNO2dCQUtQLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixlQUFlO3NCQURkLGVBQWU7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MLCBTaW5nbGVEcm9wZG93blZhbHVlQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ29udGVudERlbnNpdHlTZXJ2aWNlLFxuICAgIEZvY3VzRXNjYXBlRGlyZWN0aW9uLFxuICAgIEtleVV0aWwsXG4gICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgd2Fybk9uY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25CYXNlSW5wdXQsXG4gICAgaXNKc09iamVjdCxcbiAgICBpc09wdGlvbkl0ZW0sXG4gICAgaXNTdHJpbmcsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFRleHRBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi9jb21ib2JveCc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdC5tb2RlbHMnO1xuaW1wb3J0IHsgU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi4vc2VsZWN0LmNvbmZpZyc7XG5cbmV4cG9ydCB0eXBlIEZkcFNlbGVjdERhdGE8VD4gPSBTZWxlY3RPcHRpb25JdGVtW10gfCBPYnNlcnZhYmxlPFRbXT4gfCBUW107XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIGBGZHBTZWxlY3Rpb25DaGFuZ2VFdmVudGAgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvdXIgb2YgcGxhaW4gdmFsdWUgZW1pc3Npb25cbiAqL1xuZXhwb3J0IGNsYXNzIEZkcFNlbGVjdGlvbkNoYW5nZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBTZWxlY3Qgc2VsZWN0aW9uIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIHNlbGVjdGVkIHZhbHVlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBwYXlsb2FkOiBhbnkgLy8gQ29udGFpbnMgc2VsZWN0ZWQgaXRlbVxuICAgICkge1xuICAgICAgICB3YXJuT25jZSgnRmRwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvdXIgb2YgcGxhaW4gdmFsdWUgZW1pc3Npb24nKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZWxlY3RcbiAgICBleHRlbmRzIENvbGxlY3Rpb25CYXNlSW5wdXRcbiAgICBpbXBsZW1lbnRzIFNpbmdsZURyb3Bkb3duVmFsdWVDb250cm9sLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogUHJvdmlkZXMgbWF4aW11bSBkZWZhdWx0IGhlaWdodCBmb3IgdGhlIG9wdGlvblBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBzaG91bGQgYmUgYnVpbHQgb24gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbGxzIHRoZSBzZWxlY3QgaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXAgPSBmYWxzZTtcblxuICAgIC8qKiBBIGZpZWxkIG5hbWUgdG8gdXNlIHRvIGdyb3VwIGRhdGEgYnkgKHN1cHBvcnQgZG90dGVkIG5vdGF0aW9uKSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGZpZWxkIHRvIHNob3cgZGF0YSBpbiBzZWNvbmRhcnkgY29sdW1uICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogU2hvdyB0aGUgc2Vjb25kIGNvbHVtbiAoQXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlY29uZGFyeVRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBHbHlwaCB0byBhZGQgaWNvbiBpbiB0aGUgc2VsZWN0IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ3NsaW0tYXJyb3ctZG93bic7XG5cbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gd2hpY2ggdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGFwcGVuZGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG86IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogVHJpZ2dlciB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlclZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIHNlbGVjdCBib2R5IHdpZHRoLlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogTGVhdmUgYmxhbmsgZm9yIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ24gdGV4dCBpbnNpZGUgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6IFRleHRBbGlnbm1lbnQgPSAncmlnaHQnO1xuXG4gICAgLyoqXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIHdpZHRoOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBpcyByZWFkb25seS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBzZWxlY3QuIEFwcGVhcnMgaW4gdGhlXG4gICAgICogdHJpZ2dlcmJveCBpZiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgdGhlIHBvcG92ZXIgb24gb3V0c2lkZSBjbGljay4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSB1c2VkIHRvIGJ1aWxkIGNvbnRyb2wgYm9keS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5ID0gbnVsbDtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbCA9IG51bGw7XG5cbiAgICAvKiogU2VsZWN0IElucHV0IE1vYmlsZSBDb25maWd1cmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVDb25maWc6IE1vYmlsZU1vZGVDb25maWcgPSB7IGhhc0Nsb3NlQnV0dG9uOiB0cnVlIH07XG5cbiAgICAvKipcbiAgICAgKiBTdHJpbmcgcmVuZGVyZWQgYXMgZmlyc3QgdmFsdWUgaW4gdGhlIHBvcHVwIHdoaWNoIGxldCB0aGUgdXNlciB0byBtYWtlICdubyBzZWxlY3Rpb24nIGZyb21cbiAgICAgKiBhdmFpbGFibGUgbGlzdCBvZiB2YWx1ZXMuIFdoZW4gdGhpcyBvcHRpb24gaXMgYWN0aXZlIGFuZCB1c2UgbWFrZSB0aGlzIHNlbGVjdGlvbiB3ZSBzYXZlIGFcbiAgICAgKiBOVUxMIHZhbHVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBub1ZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIG5vdCB0byB3cmFwIHRleHQgKi9cbiAgICBASW5wdXQoKVxuICAgIG5vV3JhcFRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBUdXJucyBvbi9vZmYgQWRqdXN0YWJsZSBXaWR0aCBmZWF0dXJlICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogRmlyc3QgQ29sdW1uIHJhdGlvICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlyc3RDb2x1bW5SYXRpbyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2ZpcnN0Q29sdW1uUmF0aW8gPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0Q29sdW1uUmF0aW8oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0Q29sdW1uUmF0aW87XG4gICAgfVxuXG4gICAgLyoqIFNlY29vbmQgQ29sdW1uIHJhdGlvICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2Vjb25kQ29sdW1uUmF0aW8odmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9zZWNvbmRDb2x1bW5SYXRpbyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc2Vjb25kQ29sdW1uUmF0aW8oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZENvbHVtblJhdGlvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1pbiB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbldpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFdpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQWN0aW9uIHRvIHBlcmZvcm0gd2hlbiB1c2VyIHNoaWZ0cyBmb2N1cyBmcm9tIHRoZSBkcm9wZG93bi5cbiAgICAgKiAtIGBjbG9zZWAgd2lsbCBjbG9zZSB0aGUgZHJvcGRvd24gcHJlc2VydmluZyBwcmV2aW91c2x5IHNlbGVjdGVkIHZhbHVlLlxuICAgICAqIC0gYGNsb3NlQW5kU2VsZWN0YCB3aWxsIGNsb3NlIHRoZSBkcm9wZG93biBhbmQgc2VsZWN0IGxhc3QgZm9jdXNlZCBkcm9wZG93biBpdGVtLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiT3V0U3RyYXRlZ3k6ICdjbG9zZScgfCAnY2xvc2VBbmRTZWxlY3QnID0gJ2Nsb3NlJztcblxuICAgIC8qKiBEYXRhIGZvciBzdWdnZXN0aW9uIGxpc3QgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsaXN0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25JdGVtcyA9IHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgbGlzdCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uSXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FuQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMubW9iaWxlICYmIHRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0KTtcbiAgICB9XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGZHBTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3RDb21wb25lbnQ6IExpc3RDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgY3VzdG9tVGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEN1c3RvbSBPcHRpb24gaXRlbSBUZW1wbGF0ZVxuICAgICAqICogQGhpZGRlblxuICAgICAqICovXG4gICAgX29wdGlvbkl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBTZWNvbmRhcnkgaXRlbSBUZW1wbGF0ZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKiAqL1xuICAgIF9zZWNvbmRhcnlJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gU2VsZWN0ZWQgb3B0aW9uIGl0ZW0gVGVtcGxhdGVcbiAgICAgKiBAaGlkZGVuXG4gICAgICogKi9cbiAgICBfc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250ZW50RGVuc2l0eVNlcnZpY2U6IENvbnRlbnREZW5zaXR5U2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2Ygb3B0aW9uIGl0ZW1zXG4gICAgICogQGhpZGRlblxuICAgICAqICovXG4gICAgX29wdGlvbkl0ZW1zOiBTZWxlY3RPcHRpb25JdGVtW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWFyY2hJbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGlzIG9wZW5lZC4gKi9cbiAgICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIE5lZWQgZm9yIG9wZW5pbmcgbW9iaWxlIHZlcnNpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vcGVuQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpcnN0Q29sdW1uUmF0aW86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Vjb25kQ29sdW1uUmF0aW86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIHByb3RlY3RlZCBzZWxlY3RDb25maWc6IFNlbGVjdENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2QsIGVsZW1lbnRSZWYsIG5nQ29udHJvbCwgY29udHJvbENvbnRhaW5lciwgbmdGb3JtLCBmb3JtRmllbGQsIGZvcm1Db250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFdpbmRvd1Jlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIElzIGVtcHR5IHNlYXJjaCBmaWVsZCAqL1xuICAgIGdldCBpc0VtcHR5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUobmV3VmFsdWU6IGFueSwgZW1pdE9uQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgaWYgKGVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHsgcGF5bG9hZDogdGhpcy52YWx1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIENsb3NlIGxpc3QgKiAqL1xuICAgIGNsb3NlKGV2ZW50OiBNb3VzZUV2ZW50IHwgbnVsbCA9IG51bGwsIGZvcmNlQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuaWQgPT09IHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNPcGVuICYmIChmb3JjZUNsb3NlIHx8IHRoaXMuY2FuQ2xvc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX29wZW5DaGFuZ2UubmV4dCh0aGlzLl9pc09wZW4pO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dMaXN0KGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNPcGVuICE9PSBpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2lzT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLl9vcGVuQ2hhbmdlLm5leHQoaXNPcGVuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlUHJlc3NFbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCwgdmFsdWU6IFNlbGVjdE9wdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRU5URVIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHBhc3NlZCB0byBsaXN0IGNvbXBvbmVudCAqL1xuICAgIGhhbmRsZUxpc3RGb2N1c0VzY2FwZShkaXJlY3Rpb246IEZvY3VzRXNjYXBlRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRXaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dldE9wdGlvbnNMaXN0V2lkdGgoKTtcblxuICAgICAgICBpZiAoIXRoaXMuYXV0b1Jlc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZ2V0T3B0aW9uc0xpc3RXaWR0aCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE9wdGlvbnNMaXN0V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBib2R5Lm9mZnNldFdpZHRoIC0gYm9keS5jbGllbnRXaWR0aDtcbiAgICAgICAgdGhpcy5tYXhXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gc2Nyb2xsQmFyV2lkdGggLSByZWN0LmxlZnQ7XG4gICAgICAgIHRoaXMubWluV2lkdGggPSByZWN0LndpZHRoIC0gMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9yaWdpbmFsIGRhdGEgdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1swXTtcblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSA9IGlzT3B0aW9uSXRlbShpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNPcHRpb25JdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMgYXMgU2VsZWN0T3B0aW9uSXRlbVtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0T3B0aW9uSXRlbVtdIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIFNlY29uZGFyeSBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zPEs+KGl0ZW1zOiBLW10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0T3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogdGhpcy5vYmplY3RHZXQodmFsdWUsIHRoaXMuc2Vjb25kYXJ5S2V5KSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5sb29rdXBWYWx1ZSh2YWx1ZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgUHJpbWl0aXZlIGRhdGEoQm9vbGVhbiwgU3RyaW5nLCBOdW1iZXIpIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtczogc3RyaW5nW10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0T3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlIChEZWZhdWx0KVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheVZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBBc3NpZ24gY3VzdG9tIHRlbXBsYXRlc1xuICAgICAqICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0ZW1wbGF0ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnX29wdGlvbkl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vjb25kYXJ5SXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ19zZWxlY3RlZEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|