@fundamental-ngx/core 0.45.1 → 0.46.0-rc.1
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/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +1 -1
- package/busy-indicator/busy-indicator.component.d.ts +2 -2
- package/busy-indicator/busy-indicator.module.d.ts +4 -4
- package/calendar/calendar-directives.d.ts +1 -1
- package/calendar/calendar-header/calendar-header.component.d.ts +2 -6
- package/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +27 -32
- package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +1 -1
- package/calendar/calendar.component.d.ts +7 -8
- package/calendar/calendar.module.d.ts +2 -5
- package/carousel/carousel-item/carousel-item.component.d.ts +1 -1
- package/carousel/carousel-item.directive.d.ts +1 -1
- package/carousel/carousel.component.d.ts +8 -1
- package/carousel/carousel.directive.d.ts +1 -1
- package/carousel/carousel.module.d.ts +1 -5
- package/checkbox/checkbox/checkbox.component.d.ts +19 -6
- package/checkbox/checkbox.module.d.ts +3 -5
- package/combobox/combobox-mobile/combobox-mobile.component.d.ts +2 -1
- package/date-picker/date-picker-mobile/date-picker-mobile.component.d.ts +31 -0
- package/date-picker/date-picker.component.d.ts +46 -16
- package/date-picker/date-picker.model.d.ts +11 -0
- package/date-picker/date-picker.module.d.ts +2 -12
- package/date-picker/index.d.ts +2 -0
- package/date-picker/tokens.d.ts +5 -0
- package/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.d.ts +29 -0
- package/datetime-picker/datetime-picker.component.d.ts +34 -12
- package/datetime-picker/datetime-picker.model.d.ts +9 -0
- package/datetime-picker/datetime-picker.module.d.ts +2 -14
- package/datetime-picker/index.d.ts +2 -0
- package/datetime-picker/tokens.d.ts +5 -0
- package/dialog/dialog.module.d.ts +1 -1
- package/dialog/utils/dialog-ref.class.d.ts +15 -5
- package/esm2022/action-bar/action-bar.component.mjs +2 -2
- package/esm2022/action-sheet/action-sheet.component.mjs +2 -2
- package/esm2022/avatar/avatar.component.mjs +2 -2
- package/esm2022/avatar-group/avatar-group.component.mjs +2 -2
- package/esm2022/bar/bar.component.mjs +2 -2
- package/esm2022/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +4 -3
- package/esm2022/busy-indicator/busy-indicator.component.mjs +5 -5
- package/esm2022/busy-indicator/busy-indicator.module.mjs +3 -4
- package/esm2022/button/button.component.mjs +2 -2
- package/esm2022/calendar/calendar-directives.mjs +4 -3
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +7 -15
- package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +6 -5
- package/esm2022/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +21 -30
- package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +6 -5
- package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +6 -5
- package/esm2022/calendar/calendar.component.mjs +17 -13
- package/esm2022/calendar/calendar.module.mjs +9 -9
- package/esm2022/card/card-footer.component.mjs +3 -3
- package/esm2022/card/card.component.mjs +2 -2
- package/esm2022/carousel/carousel-item/carousel-item.component.mjs +4 -4
- package/esm2022/carousel/carousel-item.directive.mjs +4 -3
- package/esm2022/carousel/carousel.component.mjs +19 -6
- package/esm2022/carousel/carousel.directive.mjs +4 -3
- package/esm2022/carousel/carousel.module.mjs +4 -9
- package/esm2022/checkbox/checkbox/checkbox.component.mjs +42 -17
- package/esm2022/checkbox/checkbox.module.mjs +4 -7
- package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +3 -2
- package/esm2022/date-picker/date-picker-mobile/date-picker-mobile.component.mjs +96 -0
- package/esm2022/date-picker/date-picker.component.mjs +142 -40
- package/esm2022/date-picker/date-picker.model.mjs +2 -0
- package/esm2022/date-picker/date-picker.module.mjs +6 -49
- package/esm2022/date-picker/index.mjs +3 -1
- package/esm2022/date-picker/tokens.mjs +4 -0
- package/esm2022/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.mjs +96 -0
- package/esm2022/datetime-picker/datetime-picker.component.mjs +120 -36
- package/esm2022/datetime-picker/datetime-picker.model.mjs +2 -0
- package/esm2022/datetime-picker/datetime-picker.module.mjs +6 -57
- package/esm2022/datetime-picker/index.mjs +3 -1
- package/esm2022/datetime-picker/tokens.mjs +4 -0
- package/esm2022/dialog/dialog-body/dialog-body.component.mjs +4 -3
- package/esm2022/dialog/dialog.component.mjs +2 -2
- package/esm2022/dialog/dialog.module.mjs +8 -5
- package/esm2022/dialog/utils/dialog-ref.class.mjs +13 -8
- package/esm2022/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +1 -1
- package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
- package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +2 -2
- package/esm2022/facets/facet/facet.component.mjs +2 -2
- package/esm2022/feed-input/feed-input.component.mjs +2 -2
- package/esm2022/feed-list-item/components/list/feed-list.component.mjs +2 -2
- package/esm2022/file-uploader/file-uploader.component.mjs +2 -2
- package/esm2022/fixed-card-layout/fixed-card-layout.component.mjs +2 -2
- package/esm2022/flexible-column-layout/flexible-column-layout.component.mjs +2 -2
- package/esm2022/form/fieldset/fieldset.component.mjs +2 -2
- package/esm2022/form/form-control/form-control.component.mjs +2 -2
- package/esm2022/form/form-group/form-group.component.mjs +2 -2
- package/esm2022/form/form-header/form-header.component.mjs +2 -2
- package/esm2022/form/form-item/form-item.component.mjs +2 -2
- package/esm2022/form/form-label/form-label.component.mjs +2 -2
- package/esm2022/form/form-message/form-message.component.mjs +2 -2
- package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -2
- package/esm2022/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +1 -1
- package/esm2022/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +1 -1
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/illustrated-message/illustrated-message.component.mjs +2 -2
- package/esm2022/info-label/info-label.component.mjs +2 -2
- package/esm2022/input-group/input-group.component.mjs +2 -2
- package/esm2022/layout-grid/layout-grid.component.mjs +2 -2
- package/esm2022/layout-panel/layout-panel.component.mjs +2 -2
- package/esm2022/link/link.component.mjs +9 -9
- package/esm2022/link/link.module.mjs +4 -7
- package/esm2022/list/directives/list-secondary.directive.mjs +21 -8
- package/esm2022/list/list-navigation-item/list-navigation-item.component.mjs +2 -2
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/list/list.module.mjs +3 -5
- package/esm2022/menu/menu.component.mjs +2 -2
- package/esm2022/message-box/message-box.component.mjs +2 -2
- package/esm2022/message-page/message-page.component.mjs +2 -2
- package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +2 -2
- package/esm2022/message-strip/alert/message-strip-configuration-type.mjs +1 -1
- package/esm2022/message-strip/index.mjs +3 -1
- package/esm2022/message-strip/message-strip-icon.directive.mjs +18 -0
- package/esm2022/message-strip/message-strip-indication-color.mjs +7 -0
- package/esm2022/message-strip/message-strip.component.mjs +36 -5
- package/esm2022/message-strip/message-strip.module.mjs +5 -4
- package/esm2022/message-toast/message-toast.component.mjs +3 -3
- package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +2 -2
- package/esm2022/mobile-mode/mobile-mode.class.mjs +3 -1
- package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -2
- package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +1 -1
- package/esm2022/multi-input/multi-input.component.mjs +1 -1
- package/esm2022/notification/notification/notification.component.mjs +2 -2
- package/esm2022/object-identifier/object-identifier.component.mjs +2 -2
- package/esm2022/object-marker/object-marker.component.mjs +2 -2
- package/esm2022/object-number/object-number.component.mjs +2 -2
- package/esm2022/object-status/object-status.component.mjs +2 -2
- package/esm2022/pagination/pagination.component.mjs +2 -2
- package/esm2022/panel/panel.component.mjs +2 -2
- package/esm2022/popover/popover-body/popover-body-directives/popover-body-footer.directive.mjs +4 -3
- package/esm2022/popover/popover-body/popover-body-directives/popover-body-header.directive.mjs +4 -3
- package/esm2022/popover/popover-body/popover-body.component.mjs +8 -11
- package/esm2022/popover/popover-container/popover-container.directive.mjs +4 -3
- package/esm2022/popover/popover-control/popover-control.component.mjs +3 -3
- package/esm2022/popover/popover-mobile/popover-mobile.component.mjs +10 -7
- package/esm2022/popover/popover-mobile/popover-mobile.module.mjs +4 -5
- package/esm2022/popover/popover-trigger.directive.mjs +4 -3
- package/esm2022/popover/popover.component.mjs +5 -6
- package/esm2022/popover/popover.module.mjs +5 -10
- package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +2 -2
- package/esm2022/progress-indicator/progress-indicator.component.mjs +2 -2
- package/esm2022/quick-view/quick-view/quick-view.component.mjs +2 -2
- package/esm2022/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/rating-indicator/components/rating-indicator.component.mjs +2 -2
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +2 -2
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +2 -2
- package/esm2022/segmented-button/segmented-button.component.mjs +2 -2
- package/esm2022/select/select.component.mjs +2 -2
- package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
- package/esm2022/shared/interfaces/special-day-rule.mjs +1 -1
- package/esm2022/shellbar/product-menu/product-menu.component.mjs +12 -8
- package/esm2022/shellbar/shellbar-action/shellbar-action.component.mjs +8 -6
- package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +8 -9
- package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +9 -7
- package/esm2022/shellbar/shellbar-logo/shellbar-logo.component.mjs +3 -3
- package/esm2022/shellbar/shellbar-sidenav.directive.mjs +4 -3
- package/esm2022/shellbar/shellbar-subtitle/shellbar-subtitle.component.mjs +3 -3
- package/esm2022/shellbar/shellbar-title/shellbar-title.component.mjs +3 -3
- package/esm2022/shellbar/shellbar.component.mjs +10 -9
- package/esm2022/shellbar/shellbar.module.mjs +10 -59
- package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +9 -6
- package/esm2022/side-navigation/side-navigation.component.mjs +2 -2
- package/esm2022/skeleton/components/skeleton.component.mjs +2 -2
- package/esm2022/slider/slider-position.directive.mjs +19 -11
- package/esm2022/slider/slider.component.mjs +136 -79
- package/esm2022/slider/slider.model.mjs +2 -1
- package/esm2022/slider/slider.module.mjs +6 -6
- package/esm2022/split-button/split-button.component.mjs +2 -2
- package/esm2022/splitter/splitter.component.mjs +2 -2
- package/esm2022/status-indicator/status-indicator.component.mjs +2 -2
- package/esm2022/step-input/step-input.component.mjs +2 -2
- package/esm2022/switch/switch.component.mjs +2 -2
- package/esm2022/table/table-wrapper.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +2 -2
- package/esm2022/tabs/tab-list.component.mjs +2 -2
- package/esm2022/tabs/tab-nav/tab-nav.component.mjs +2 -2
- package/esm2022/text/text.component.mjs +7 -7
- package/esm2022/text/text.module.mjs +4 -9
- package/esm2022/tile/tile.component.mjs +2 -2
- package/esm2022/time/time.component.mjs +2 -2
- package/esm2022/title/title.component.mjs +3 -3
- package/esm2022/title/title.module.mjs +4 -6
- package/esm2022/token/token.component.mjs +2 -2
- package/esm2022/token/tokenizer.component.mjs +2 -2
- package/esm2022/toolbar/deprecated-toolbar-size.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-form-label.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-item.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-label.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-overflow-button-menu.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-overflow-button.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-separator.component.mjs +4 -3
- package/esm2022/toolbar/toolbar-spacer.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar.component.mjs +39 -18
- package/esm2022/toolbar/toolbar.module.mjs +5 -10
- package/esm2022/tree/components/tree-item/tree-item.component.mjs +1 -1
- package/esm2022/tree/tree.component.mjs +2 -2
- package/esm2022/upload-collection/upload-collection.component.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation-main-navigation.component.mjs +2 -2
- package/esm2022/vertical-navigation/vertical-navigation.component.mjs +2 -2
- package/esm2022/wizard/wizard.component.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +9 -10
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +91 -95
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +29 -19
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +43 -20
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +2 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +235 -86
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +211 -88
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +23 -15
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +10 -12
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +26 -17
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +62 -9
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +2 -0
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +36 -38
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +93 -132
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +158 -96
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +9 -14
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +5 -7
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +80 -56
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fundamental-ngx-core-v0.46.0-rc.1.tgz +0 -0
- package/link/link.component.d.ts +1 -1
- package/link/link.module.d.ts +1 -3
- package/list/directives/list-secondary.directive.d.ts +16 -3
- package/list/list.module.d.ts +20 -20
- package/message-strip/alert/message-strip-configuration-type.d.ts +2 -0
- package/message-strip/index.d.ts +2 -0
- package/message-strip/message-strip-icon.directive.d.ts +9 -0
- package/message-strip/message-strip-indication-color.d.ts +4 -0
- package/message-strip/message-strip.component.d.ts +11 -1
- package/message-strip/message-strip.module.d.ts +2 -1
- package/mobile-mode/mobile-mode.class.d.ts +3 -1
- package/package.json +4 -4
- package/popover/popover-body/popover-body-directives/popover-body-footer.directive.d.ts +1 -1
- package/popover/popover-body/popover-body-directives/popover-body-header.directive.d.ts +1 -1
- package/popover/popover-body/popover-body.component.d.ts +1 -1
- package/popover/popover-container/popover-container.directive.d.ts +1 -1
- package/popover/popover-control/popover-control.component.d.ts +1 -1
- package/popover/popover-mobile/popover-mobile.component.d.ts +3 -3
- package/popover/popover-mobile/popover-mobile.module.d.ts +5 -5
- package/popover/popover-trigger.directive.d.ts +1 -1
- package/popover/popover.component.d.ts +1 -1
- package/popover/popover.module.d.ts +1 -5
- package/schematics/add-dependencies/index.js +6 -6
- package/shared/interfaces/search-component.interface.d.ts +1 -0
- package/shared/interfaces/special-day-rule.d.ts +1 -1
- package/shellbar/product-menu/product-menu.component.d.ts +1 -1
- package/shellbar/shellbar-action/shellbar-action.component.d.ts +1 -1
- package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +1 -1
- package/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.d.ts +1 -1
- package/shellbar/shellbar-logo/shellbar-logo.component.d.ts +1 -1
- package/shellbar/shellbar-sidenav.directive.d.ts +1 -1
- package/shellbar/shellbar-subtitle/shellbar-subtitle.component.d.ts +1 -1
- package/shellbar/shellbar-title/shellbar-title.component.d.ts +1 -1
- package/shellbar/shellbar.component.d.ts +1 -1
- package/shellbar/shellbar.module.d.ts +2 -14
- package/shellbar/user-menu/shellbar-user-menu.component.d.ts +1 -1
- package/slider/slider-position.directive.d.ts +6 -4
- package/slider/slider.component.d.ts +21 -13
- package/slider/slider.model.d.ts +2 -1
- package/slider/slider.module.d.ts +9 -9
- package/text/text.component.d.ts +1 -1
- package/text/text.module.d.ts +1 -5
- package/title/title.component.d.ts +1 -1
- package/title/title.module.d.ts +1 -2
- package/toolbar/deprecated-toolbar-size.directive.d.ts +1 -1
- package/toolbar/toolbar-form-label.directive.d.ts +1 -1
- package/toolbar/toolbar-item.directive.d.ts +1 -1
- package/toolbar/toolbar-label.directive.d.ts +1 -1
- package/toolbar/toolbar-overflow-button-menu.directive.d.ts +1 -1
- package/toolbar/toolbar-overflow-button.directive.d.ts +1 -1
- package/toolbar/toolbar-separator.component.d.ts +1 -1
- package/toolbar/toolbar-spacer.directive.d.ts +1 -1
- package/toolbar/toolbar.component.d.ts +9 -5
- package/toolbar/toolbar.module.d.ts +11 -15
- package/fundamental-ngx-core-v0.45.1.tgz +0 -0
|
@@ -5,12 +5,13 @@ import { resizeObservable, RtlService } from '@fundamental-ngx/cdk/utils';
|
|
|
5
5
|
import { CarouselItemComponent } from './carousel-item/carousel-item.component';
|
|
6
6
|
import { CarouselResourceStringsEN } from './i18n/carousel-resources';
|
|
7
7
|
import { CarouselService } from './carousel.service';
|
|
8
|
+
import { FdTranslatePipe } from '@fundamental-ngx/i18n';
|
|
9
|
+
import { ButtonModule } from '@fundamental-ngx/core/button';
|
|
10
|
+
import { NgIf, NgTemplateOutlet, NgClass, NgFor } from '@angular/common';
|
|
8
11
|
import * as i0 from "@angular/core";
|
|
9
12
|
import * as i1 from "./carousel.service";
|
|
10
13
|
import * as i2 from "@fundamental-ngx/cdk/utils";
|
|
11
|
-
import * as i3 from "@
|
|
12
|
-
import * as i4 from "@fundamental-ngx/core/button";
|
|
13
|
-
import * as i5 from "@fundamental-ngx/i18n";
|
|
14
|
+
import * as i3 from "@fundamental-ngx/core/button";
|
|
14
15
|
/** Page limit to switch to numerical indicator */
|
|
15
16
|
const ICON_PAGE_INDICATOR_LIMIT = 8;
|
|
16
17
|
export var SlideDirection;
|
|
@@ -86,6 +87,12 @@ export class CarouselComponent {
|
|
|
86
87
|
this.swipeEnabled = true;
|
|
87
88
|
/** Is carousel is vertical. Default value is false. */
|
|
88
89
|
this.vertical = false;
|
|
90
|
+
/** Whether to hide top border of the Pagination Container. */
|
|
91
|
+
this.noPaginationContainerBorder = false;
|
|
92
|
+
/** Background configuration for the Content container. */
|
|
93
|
+
this.contentBackground = 'translucent';
|
|
94
|
+
/** Background configuration for the Pagination container */
|
|
95
|
+
this.pageIndicatorBackground = 'solid';
|
|
89
96
|
/** An event that is emitted after a slide transition has happened */
|
|
90
97
|
this.slideChange = new EventEmitter();
|
|
91
98
|
/** @hidden Start index of currently active items */
|
|
@@ -583,13 +590,13 @@ export class CarouselComponent {
|
|
|
583
590
|
return slides;
|
|
584
591
|
}
|
|
585
592
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.CarouselService }, { token: i0.NgZone }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
586
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CarouselComponent, selector: "fd-carousel", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", pageIndicatorsOrientation: "pageIndicatorsOrientation", height: "height", width: "width", loop: "loop", navigation: "navigation", navigatorInPageIndicator: "navigatorInPageIndicator", numericIndicator: "numericIndicator", pageIndicatorContainer: "pageIndicatorContainer", pageIndicator: "pageIndicator", resourceStrings: "resourceStrings", slideTransitionDuration: "slideTransitionDuration", swipeEnabled: "swipeEnabled", vertical: "vertical", visibleSlidesCount: "visibleSlidesCount" }, outputs: { slideChange: "slideChange" }, host: { listeners: { "keydown.arrowright": "onKeydownArrowRight($event)", "keydown.arrowleft": "onKeydownArrowLeft($event)" }, properties: { "style.width": "width", "attr.id": "this.id" } }, providers: [CarouselService], queries: [{ propertyName: "slides", predicate: CarouselItemComponent, descendants: true }], viewQueries: [{ propertyName: "slideContainer", first: true, predicate: ["slideContainer"], descendants: true }, { propertyName: "carouselContainer", first: true, predicate: ["carouselContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n data-ride=\"carousel\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"dir\"\n role=\"region\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'top'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [style.width]=\"_contentSizePx\"\n >\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div style=\"display: none\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</div>\n\n<ng-template #pageIndicatorContainer>\n <div class=\"fd-carousel__page-indicator-container\">\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"pageIndicators\"> </ng-container>\n\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageIndicators>\n <ng-container *ngIf=\"numericIndicator\">\n <div class=\"fd-carousel__page-indicators\">\n <ng-container *ngIf=\"pageIndicator\">\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!numericIndicator && _showNavigationButtonInPageIndicatorContainer\">\n <ol class=\"fd-carousel__page-indicators\" [attr.dir]=\"dir\">\n <ng-container *ngIf=\"pageIndicator\">\n <ng-container *ngFor=\"let item of pageIndicatorsCountArray; let i = index\">\n <li\n [attr.data-slide-to]=\"i + 1\"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></li>\n </ng-container>\n </ng-container>\n </ol>\n </ng-container>\n</ng-template>\n\n<ng-template #buttonLeft>\n <button\n fd-button\n class=\"fd-carousel__button fd-carousel__button--left\"\n [style.z-index]=\"1\"\n data-slide=\"previous\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n glyph=\"slim-arrow-left\"\n ></button>\n</ng-template>\n\n<ng-template #buttonRight>\n <button\n fd-button\n class=\"fd-carousel__button fd-carousel__button--right\"\n [style.z-index]=\"1\"\n data-slide=\"next\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n glyph=\"slim-arrow-right\"\n ></button>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-carousel{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:15.5rem;padding:0;width:100%}.fd-carousel:after,.fd-carousel:before{box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{display:block}.fd-carousel .fd-carousel__content{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-carousel .fd-carousel__content:after,.fd-carousel .fd-carousel__content:before{box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__content .fd-carousel__button{-webkit-box-shadow:var(--sapContent_Shadow1);-webkit-transform:translateY(-50%);box-shadow:var(--sapContent_Shadow1);display:none;margin:0;position:absolute;top:50%;transform:translateY(-50%)}.fd-carousel .fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel .fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel .fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel .fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel .fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel .fd-carousel__content--horizontal .fd-carousel__slides{-ms-touch-action:pan-y;display:flex;flex-direction:row;min-width:-moz-fit-content;min-width:fit-content;touch-action:pan-y;width:100%}.fd-carousel .fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__slides{-webkit-box-sizing:border-box;-ms-touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;min-height:-moz-fit-content;min-height:fit-content;padding:0;touch-action:pan-x;user-select:none}.fd-carousel__slides:after,.fd-carousel__slides:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;justify-content:center;line-height:var(--sapContent_LineHeight);line-height:0;margin:0;padding:0}.fd-carousel__item:after,.fd-carousel__item:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:var(--sapPageFooter_Background);border:0;border-top:var(--fdCarousel_Pagination_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:3.5rem;min-height:2.75rem;padding:.375rem .5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicators{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:9rem;padding:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{-webkit-box-sizing:border-box;background-color:var(--fdCarousel_Dot_Background);border:0;border:var(--fdCarousel_Dot_Border);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Dot_Size);line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;margin:var(--fdCarousel_Dot_Margin);padding:0;width:var(--fdCarousel_Dot_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{background-color:var(--fdCarousel_Dot_Selected_Background);border:var(--fdCarousel_Dot_Selected_Border);height:.5rem;margin:0 .25rem;width:.5rem}.fd-carousel__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border-radius:50%;display:flex;height:2.125rem;justify-content:center;margin:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-hover,.fd-carousel .fd-carousel__button:hover{box-shadow:var(--sapContent_Shadow1)}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
593
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CarouselComponent, isStandalone: true, selector: "fd-carousel", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", pageIndicatorsOrientation: "pageIndicatorsOrientation", height: "height", width: "width", loop: "loop", navigation: "navigation", navigatorInPageIndicator: "navigatorInPageIndicator", numericIndicator: "numericIndicator", pageIndicatorContainer: "pageIndicatorContainer", pageIndicator: "pageIndicator", resourceStrings: "resourceStrings", slideTransitionDuration: "slideTransitionDuration", swipeEnabled: "swipeEnabled", vertical: "vertical", noPaginationContainerBorder: "noPaginationContainerBorder", contentBackground: "contentBackground", pageIndicatorBackground: "pageIndicatorBackground", visibleSlidesCount: "visibleSlidesCount" }, outputs: { slideChange: "slideChange" }, host: { listeners: { "keydown.arrowright": "onKeydownArrowRight($event)", "keydown.arrowleft": "onKeydownArrowLeft($event)" }, properties: { "style.width": "width", "attr.id": "this.id" } }, providers: [CarouselService], queries: [{ propertyName: "slides", predicate: CarouselItemComponent, descendants: true }], viewQueries: [{ propertyName: "slideContainer", first: true, predicate: ["slideContainer"], descendants: true }, { propertyName: "carouselContainer", first: true, predicate: ["carouselContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n data-ride=\"carousel\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"dir\"\n role=\"region\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'top'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [ngClass]=\"'fd-carousel__content--' + contentBackground\"\n [style.width]=\"_contentSizePx\"\n >\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div style=\"display: none\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</div>\n\n<ng-template #pageIndicatorContainer>\n <div\n class=\"fd-carousel__page-indicator-container\"\n [class.fd-carousel__page-indicator-container--no-border]=\"noPaginationContainerBorder\"\n [ngClass]=\"'fd-carousel__page-indicator-container--' + pageIndicatorBackground\"\n >\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"pageIndicators\"> </ng-container>\n\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageIndicators>\n <ng-container *ngIf=\"numericIndicator\">\n <div class=\"fd-carousel__page-indicators\">\n <ng-container *ngIf=\"pageIndicator\">\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!numericIndicator && _showNavigationButtonInPageIndicatorContainer\">\n <ol class=\"fd-carousel__page-indicators\" [attr.dir]=\"dir\">\n <ng-container *ngIf=\"pageIndicator\">\n <ng-container *ngFor=\"let item of pageIndicatorsCountArray; let i = index\">\n <li\n [attr.data-slide-to]=\"i + 1\"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></li>\n </ng-container>\n </ng-container>\n </ol>\n </ng-container>\n</ng-template>\n\n<ng-template #buttonLeft>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--left]=\"!vertical\"\n [class.fd-carousel__button--up]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"previous\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-up' : 'slim-arrow-left'\"\n ></button>\n</ng-template>\n\n<ng-template #buttonRight>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--right]=\"!vertical\"\n [class.fd-carousel__button--down]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"next\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-down' : 'slim-arrow-right'\"\n ></button>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2-rc.6\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-carousel{--fdCarousel_Button_Display:block;--fdCarousel_Content_Background:var(--sapBackgroundColor);--fdCarousel_Page_Indicator_Margin:var(--fdCarousel_Dot_Margin);--fdCarousel_Page_Indicator_Size:var(--fdCarousel_Dot_Size);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Background);--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Border);--fdCarousel_Page_Indicator_Container_Background:var(--sapPageFooter_Background);-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:15.5rem;padding:0;width:100%}.fd-carousel:after,.fd-carousel:before{box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:block}.fd-carousel__content{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-carousel__content:after,.fd-carousel__content:before{box-sizing:inherit;font-size:inherit}.fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none;box-shadow:var(--sapContent_Shadow1);margin:0;position:absolute}.fd-carousel__content .fd-carousel__button--left,.fd-carousel__content .fd-carousel__button--right{-webkit-transform:translateY(-50%);top:50%;transform:translateY(-50%)}.fd-carousel__content .fd-carousel__button--down,.fd-carousel__content .fd-carousel__button--up{-webkit-transform:translateX(-50%);left:50%;transform:translate(-50%)}.fd-carousel__content .fd-carousel__button--down[dir=rtl]>[class*=sap-icon],.fd-carousel__content .fd-carousel__button--up[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--down>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--up>[class*=sap-icon]{transform:rotate(0)}.fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel__content .fd-carousel__button--up{top:.5rem}.fd-carousel__content .fd-carousel__button--down{bottom:.5rem}.fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel__content--horizontal .fd-carousel__slides{-ms-touch-action:pan-y;display:flex;flex-direction:row;min-width:-moz-fit-content;min-width:fit-content;touch-action:pan-y;width:100%}.fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__content--solid{--fdCarousel_Content_Background:var(--sapGroup_ContentBackground)}.fd-carousel__content--transparent{--fdCarousel_Content_Background:transparent}.fd-carousel__slides{-webkit-box-sizing:border-box;-ms-touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;min-height:-moz-fit-content;min-height:fit-content;padding:0;touch-action:pan-x;user-select:none}.fd-carousel__slides:after,.fd-carousel__slides:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;justify-content:center;line-height:var(--sapContent_LineHeight);line-height:0;margin:0;padding:0}.fd-carousel__item:after,.fd-carousel__item:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:var(--fdCarousel_Page_Indicator_Container_Background);border:0;border-top:var(--fdCarousel_Pagination_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:3.5rem;min-height:2.75rem;padding:.375rem .5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicator-container--translucent{--fdCarousel_Page_Indicator_Container_Background:var(--sapBackgroundColor)}.fd-carousel__page-indicator-container--transparent{--fdCarousel_Page_Indicator_Container_Background:transparent}.fd-carousel__page-indicator-container--no-border{border-top-color:transparent}.fd-carousel__page-indicator-container--no-border:first-child{border-bottom-color:transparent;border-top:none}.fd-carousel__page-indicators{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:9rem;padding:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{-webkit-box-sizing:border-box;background-color:var(--fdCarousel_Page_Indicator_Background_Color);border:0;border:var(--fdCarousel_Page_Indicator_Border);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Page_Indicator_Size);line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;margin:var(--fdCarousel_Page_Indicator_Margin);max-height:var(--fdCarousel_Page_Indicator_Size);max-width:var(--fdCarousel_Page_Indicator_Size);min-height:var(--fdCarousel_Page_Indicator_Size);min-width:var(--fdCarousel_Page_Indicator_Size);padding:0;width:var(--fdCarousel_Page_Indicator_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{--fdCarousel_Page_Indicator_Size:.5rem;--fdCarousel_Page_Indicator_Margin:0 .25rem;--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Selected_Border);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Selected_Background)}.fd-carousel__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border-radius:50%;display:flex;display:var(--fdCarousel_Button_Display);height:2.125rem;justify-content:center;margin:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-hover,.fd-carousel .fd-carousel__button:hover{box-shadow:var(--sapContent_Shadow1)}.fd-carousel .fd-carousel__button.is-focus,.fd-carousel .fd-carousel__button:focus{z-index:5}.fd-carousel .fd-carousel__button.is-focus:after,.fd-carousel .fd-carousel__button:focus:after{--fdButton_Focus_Border_Radius:50%}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
587
594
|
}
|
|
588
595
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
589
596
|
type: Component,
|
|
590
597
|
args: [{ selector: 'fd-carousel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CarouselService], host: {
|
|
591
598
|
'[style.width]': 'width'
|
|
592
|
-
}, template: "<div\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n data-ride=\"carousel\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"dir\"\n role=\"region\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'top'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [style.width]=\"_contentSizePx\"\n >\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div style=\"display: none\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</div>\n\n<ng-template #pageIndicatorContainer>\n <div class=\"fd-carousel__page-indicator-container\">\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"pageIndicators\"> </ng-container>\n\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageIndicators>\n <ng-container *ngIf=\"numericIndicator\">\n <div class=\"fd-carousel__page-indicators\">\n <ng-container *ngIf=\"pageIndicator\">\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!numericIndicator && _showNavigationButtonInPageIndicatorContainer\">\n <ol class=\"fd-carousel__page-indicators\" [attr.dir]=\"dir\">\n <ng-container *ngIf=\"pageIndicator\">\n <ng-container *ngFor=\"let item of pageIndicatorsCountArray; let i = index\">\n <li\n [attr.data-slide-to]=\"i + 1\"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></li>\n </ng-container>\n </ng-container>\n </ol>\n </ng-container>\n</ng-template>\n\n<ng-template #buttonLeft>\n <button\n fd-button\n class=\"fd-carousel__button fd-carousel__button--left\"\n [style.z-index]=\"1\"\n data-slide=\"previous\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n glyph=\"slim-arrow-left\"\n ></button>\n</ng-template>\n\n<ng-template #buttonRight>\n <button\n fd-button\n class=\"fd-carousel__button fd-carousel__button--right\"\n [style.z-index]=\"1\"\n data-slide=\"next\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n glyph=\"slim-arrow-right\"\n ></button>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-carousel{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:15.5rem;padding:0;width:100%}.fd-carousel:after,.fd-carousel:before{box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{display:block}.fd-carousel .fd-carousel__content{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-carousel .fd-carousel__content:after,.fd-carousel .fd-carousel__content:before{box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__content .fd-carousel__button{-webkit-box-shadow:var(--sapContent_Shadow1);-webkit-transform:translateY(-50%);box-shadow:var(--sapContent_Shadow1);display:none;margin:0;position:absolute;top:50%;transform:translateY(-50%)}.fd-carousel .fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel .fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel .fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel .fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel .fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel .fd-carousel__content--horizontal .fd-carousel__slides{-ms-touch-action:pan-y;display:flex;flex-direction:row;min-width:-moz-fit-content;min-width:fit-content;touch-action:pan-y;width:100%}.fd-carousel .fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__slides{-webkit-box-sizing:border-box;-ms-touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;min-height:-moz-fit-content;min-height:fit-content;padding:0;touch-action:pan-x;user-select:none}.fd-carousel__slides:after,.fd-carousel__slides:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;justify-content:center;line-height:var(--sapContent_LineHeight);line-height:0;margin:0;padding:0}.fd-carousel__item:after,.fd-carousel__item:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:var(--sapPageFooter_Background);border:0;border-top:var(--fdCarousel_Pagination_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:3.5rem;min-height:2.75rem;padding:.375rem .5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicators{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:9rem;padding:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{-webkit-box-sizing:border-box;background-color:var(--fdCarousel_Dot_Background);border:0;border:var(--fdCarousel_Dot_Border);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Dot_Size);line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;margin:var(--fdCarousel_Dot_Margin);padding:0;width:var(--fdCarousel_Dot_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{background-color:var(--fdCarousel_Dot_Selected_Background);border:var(--fdCarousel_Dot_Selected_Border);height:.5rem;margin:0 .25rem;width:.5rem}.fd-carousel__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border-radius:50%;display:flex;height:2.125rem;justify-content:center;margin:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-hover,.fd-carousel .fd-carousel__button:hover{box-shadow:var(--sapContent_Shadow1)}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%}\n"] }]
|
|
599
|
+
}, standalone: true, imports: [NgIf, NgTemplateOutlet, NgClass, NgFor, ButtonModule, FdTranslatePipe], template: "<div\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n data-ride=\"carousel\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"dir\"\n role=\"region\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'top'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [ngClass]=\"'fd-carousel__content--' + contentBackground\"\n [style.width]=\"_contentSizePx\"\n >\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n\n <ng-container *ngIf=\"_showNavigationButtonInContent\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"pageIndicatorContainer\"></ng-container>\n </ng-container>\n\n <div style=\"display: none\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</div>\n\n<ng-template #pageIndicatorContainer>\n <div\n class=\"fd-carousel__page-indicator-container\"\n [class.fd-carousel__page-indicator-container--no-border]=\"noPaginationContainerBorder\"\n [ngClass]=\"'fd-carousel__page-indicator-container--' + pageIndicatorBackground\"\n >\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonLeft\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"pageIndicators\"> </ng-container>\n\n <ng-container *ngIf=\"_showNavigationButtonInPageIndicatorContainer\">\n <ng-container *ngTemplateOutlet=\"buttonRight\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageIndicators>\n <ng-container *ngIf=\"numericIndicator\">\n <div class=\"fd-carousel__page-indicators\">\n <ng-container *ngIf=\"pageIndicator\">\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!numericIndicator && _showNavigationButtonInPageIndicatorContainer\">\n <ol class=\"fd-carousel__page-indicators\" [attr.dir]=\"dir\">\n <ng-container *ngIf=\"pageIndicator\">\n <ng-container *ngFor=\"let item of pageIndicatorsCountArray; let i = index\">\n <li\n [attr.data-slide-to]=\"i + 1\"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></li>\n </ng-container>\n </ng-container>\n </ol>\n </ng-container>\n</ng-template>\n\n<ng-template #buttonLeft>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--left]=\"!vertical\"\n [class.fd-carousel__button--up]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"previous\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-up' : 'slim-arrow-left'\"\n ></button>\n</ng-template>\n\n<ng-template #buttonRight>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--right]=\"!vertical\"\n [class.fd-carousel__button--down]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"next\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-down' : 'slim-arrow-right'\"\n ></button>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2-rc.6\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-carousel{--fdCarousel_Button_Display:block;--fdCarousel_Content_Background:var(--sapBackgroundColor);--fdCarousel_Page_Indicator_Margin:var(--fdCarousel_Dot_Margin);--fdCarousel_Page_Indicator_Size:var(--fdCarousel_Dot_Size);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Background);--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Border);--fdCarousel_Page_Indicator_Container_Background:var(--sapPageFooter_Background);-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:15.5rem;padding:0;width:100%}.fd-carousel:after,.fd-carousel:before{box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:block}.fd-carousel__content{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-carousel__content:after,.fd-carousel__content:before{box-sizing:inherit;font-size:inherit}.fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none;box-shadow:var(--sapContent_Shadow1);margin:0;position:absolute}.fd-carousel__content .fd-carousel__button--left,.fd-carousel__content .fd-carousel__button--right{-webkit-transform:translateY(-50%);top:50%;transform:translateY(-50%)}.fd-carousel__content .fd-carousel__button--down,.fd-carousel__content .fd-carousel__button--up{-webkit-transform:translateX(-50%);left:50%;transform:translate(-50%)}.fd-carousel__content .fd-carousel__button--down[dir=rtl]>[class*=sap-icon],.fd-carousel__content .fd-carousel__button--up[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--down>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--up>[class*=sap-icon]{transform:rotate(0)}.fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel__content .fd-carousel__button--up{top:.5rem}.fd-carousel__content .fd-carousel__button--down{bottom:.5rem}.fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel__content--horizontal .fd-carousel__slides{-ms-touch-action:pan-y;display:flex;flex-direction:row;min-width:-moz-fit-content;min-width:fit-content;touch-action:pan-y;width:100%}.fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__content--solid{--fdCarousel_Content_Background:var(--sapGroup_ContentBackground)}.fd-carousel__content--transparent{--fdCarousel_Content_Background:transparent}.fd-carousel__slides{-webkit-box-sizing:border-box;-ms-touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;min-height:-moz-fit-content;min-height:fit-content;padding:0;touch-action:pan-x;user-select:none}.fd-carousel__slides:after,.fd-carousel__slides:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;justify-content:center;line-height:var(--sapContent_LineHeight);line-height:0;margin:0;padding:0}.fd-carousel__item:after,.fd-carousel__item:before{box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:var(--fdCarousel_Page_Indicator_Container_Background);border:0;border-top:var(--fdCarousel_Pagination_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:3.5rem;min-height:2.75rem;padding:.375rem .5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicator-container--translucent{--fdCarousel_Page_Indicator_Container_Background:var(--sapBackgroundColor)}.fd-carousel__page-indicator-container--transparent{--fdCarousel_Page_Indicator_Container_Background:transparent}.fd-carousel__page-indicator-container--no-border{border-top-color:transparent}.fd-carousel__page-indicator-container--no-border:first-child{border-bottom-color:transparent;border-top:none}.fd-carousel__page-indicators{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:9rem;padding:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{-webkit-box-sizing:border-box;background-color:var(--fdCarousel_Page_Indicator_Background_Color);border:0;border:var(--fdCarousel_Page_Indicator_Border);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Page_Indicator_Size);line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;margin:var(--fdCarousel_Page_Indicator_Margin);max-height:var(--fdCarousel_Page_Indicator_Size);max-width:var(--fdCarousel_Page_Indicator_Size);min-height:var(--fdCarousel_Page_Indicator_Size);min-width:var(--fdCarousel_Page_Indicator_Size);padding:0;width:var(--fdCarousel_Page_Indicator_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{--fdCarousel_Page_Indicator_Size:.5rem;--fdCarousel_Page_Indicator_Margin:0 .25rem;--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Selected_Border);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Selected_Background)}.fd-carousel__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border-radius:50%;display:flex;display:var(--fdCarousel_Button_Display);height:2.125rem;justify-content:center;margin:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-hover,.fd-carousel .fd-carousel__button:hover{box-shadow:var(--sapContent_Shadow1)}.fd-carousel .fd-carousel__button.is-focus,.fd-carousel .fd-carousel__button:focus{z-index:5}.fd-carousel .fd-carousel__button.is-focus:after,.fd-carousel .fd-carousel__button:focus:after{--fdButton_Focus_Border_Radius:50%}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%}\n"] }]
|
|
593
600
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.CarouselService }, { type: i0.NgZone }, { type: i2.RtlService, decorators: [{
|
|
594
601
|
type: Optional
|
|
595
602
|
}] }]; }, propDecorators: { id: [{
|
|
@@ -629,6 +636,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
629
636
|
type: Input
|
|
630
637
|
}], vertical: [{
|
|
631
638
|
type: Input
|
|
639
|
+
}], noPaginationContainerBorder: [{
|
|
640
|
+
type: Input
|
|
641
|
+
}], contentBackground: [{
|
|
642
|
+
type: Input
|
|
643
|
+
}], pageIndicatorBackground: [{
|
|
644
|
+
type: Input
|
|
632
645
|
}], visibleSlidesCount: [{
|
|
633
646
|
type: Input
|
|
634
647
|
}], slideChange: [{
|
|
@@ -651,4 +664,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
651
664
|
type: HostListener,
|
|
652
665
|
args: ['keydown.arrowleft', ['$event']]
|
|
653
666
|
}] } });
|
|
654
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUE2QixNQUFNLDJCQUEyQixDQUFDO0FBQ2pHLE9BQU8sRUFBeUMsZUFBZSxFQUFnQixNQUFNLG9CQUFvQixDQUFDOzs7Ozs7O0FBRTFHLGtEQUFrRDtBQUNsRCxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUdwQyxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3RCLG1EQUFJLENBQUE7SUFDSixtREFBSSxDQUFBO0lBQ0osMkRBQVEsQ0FBQTtBQUNaLENBQUMsRUFKVyxjQUFjLEtBQWQs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QixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFRRixlQUFlO3NCQURsQixLQUFLO2dCQWNOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFZRyxXQUFXO3NCQURuQixNQUFNO2dCQU9QLE1BQU07c0JBSEwsZUFBZTt1QkFBQyxxQkFBcUIsRUFBRTt3QkFDcEMsV0FBVyxFQUFFLElBQUk7cUJBQ3BCO2dCQUtELGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSzNCLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBb0w5QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUTlDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmVzaXplT2JzZXJ2YWJsZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENhcm91c2VsSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY2Fyb3VzZWwtaXRlbS9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXJvdXNlbFJlc291cmNlU3RyaW5nc0VOLCBGZENhcm91c2VsUmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi9pMThuL2Nhcm91c2VsLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDYXJvdXNlbENvbmZpZywgQ2Fyb3VzZWxJdGVtSW50ZXJmYWNlLCBDYXJvdXNlbFNlcnZpY2UsIFBhbkVuZE91dHB1dCB9IGZyb20gJy4vY2Fyb3VzZWwuc2VydmljZSc7XG5cbi8qKiBQYWdlIGxpbWl0IHRvIHN3aXRjaCB0byBudW1lcmljYWwgaW5kaWNhdG9yICovXG5jb25zdCBJQ09OX1BBR0VfSU5ESUNBVE9SX0xJTUlUID0gODtcbmV4cG9ydCB0eXBlIFBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb24gPSAnYm90dG9tJyB8ICd0b3AnO1xuXG5leHBvcnQgZW51bSBTbGlkZURpcmVjdGlvbiB7XG4gICAgTm9uZSxcbiAgICBORVhULFxuICAgIFBSRVZJT1VTXG59XG5leHBvcnQgaW50ZXJmYWNlIEZpdHRpbmdTbGlkZXNBbmRXaWR0aCB7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBzbGlkZXM6IG51bWJlcjtcbn1cbmxldCBjYXJvdXNlbENvdW50ZXIgPSAwO1xuXG5jbGFzcyBDYXJvdXNlbEFjdGl2ZVNsaWRlcyB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGFjdGl2ZUl0ZW1zOiBDYXJvdXNlbEl0ZW1Db21wb25lbnRbXSwgcHVibGljIHJlYWRvbmx5IHNsaWRlRGlyZWN0aW9uOiBzdHJpbmcpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0Nhcm91c2VsU2VydmljZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3N0eWxlLndpZHRoXSc6ICd3aWR0aCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENhcm91c2VsQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gICAgLyoqIElEIGZvciB0aGUgQ2Fyb3VzZWwuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIGlkID0gYGZkLWNhcm91c2VsLSR7Y2Fyb3VzZWxDb3VudGVyKyt9YDtcblxuICAgIC8qKiBTZXRzIGFyaWEtbGFiZWwgYXR0cmlidXRlIGZvciBjYXJvdXNlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsID0gbnVsbDtcblxuICAgIC8qKiBTZXRzIGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUgZm9yIGNhcm91c2VsICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgLyoqIFNldHMgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIGNhcm91c2VsICovXG4gICAgQElucHV0KClcbiAgICBhcmlhRGVzY3JpYmVkQnk6IHN0cmluZztcblxuICAgIC8qKiBTZXRzIHBvc2l0aW9uIG9mIHBhZ2UgaW5kaWNhdG9yIGNvbnRhaW5lci4gRGVmYXVsdCBwb3NpdGlvbiBpcyBib3R0b20uICovXG4gICAgQElucHV0KClcbiAgICBwYWdlSW5kaWNhdG9yc09yaWVudGF0aW9uOiBQYWdlSW5kaWNhdG9yc09yaWVudGF0aW9uID0gJ2JvdHRvbSc7XG5cbiAgICAvKiogSGVpZ2h0IGZvciBjYXJvdXNlbCBjb250YWluZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGhlaWdodDogc3RyaW5nO1xuXG4gICAgLyoqIFdpZHRoIGZvciBjYXJvdXNlbCBjb250YWluZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHdpZHRoID0gJzEwMCUnO1xuXG4gICAgLyoqIElmIGNhcm91c2VsIGlzIGluIGNpcmN1bGFyIGxvb3AgKi9cbiAgICBASW5wdXQoKVxuICAgIGxvb3AgPSBmYWxzZTtcblxuICAgIC8qKiBTaG93cy9oaWRlcyBvcHRpb25hbCBuYXZpZ2F0aW9uIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgICAvKiogU2hvdyBuYXZpZ2F0aW9uIGJ1dHRvbiBpbiBwYWdlIGluZGljYXRvciBjb250YWluZXIgb3IgaW5zaWRlIGNvbnRlbnQuIERlZmF1bHQgaXMgcGFnZSBpbmRpY2F0b3IgY29udGFpbmVyIG9uIHRydWUgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRvckluUGFnZUluZGljYXRvciA9IHRydWU7XG5cbiAgICAvKiogQ29udmVydCB0byBOdW1lcmljIHBhZ2UgaW5kaWNhdG9yICovXG4gICAgQElucHV0KClcbiAgICBudW1lcmljSW5kaWNhdG9yID0gZmFsc2U7XG5cbiAgICAvKiogU2hvd3MvaGlkZXMgb3B0aW9uYWwgcGFnZSBpbmRpY2F0b3IgY29udGFpbmVyICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZUluZGljYXRvckNvbnRhaW5lciA9IHRydWU7XG5cbiAgICAvKiogU2hvd3MvaGlkZXMgb3B0aW9uYWwgcGFnZSBpbmRpY2F0b3IgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhZ2VJbmRpY2F0b3IgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCBzZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcmVzb3VyY2VTdHJpbmdzKHZhbHVlOiBGZENhcm91c2VsUmVzb3VyY2VTdHJpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Jlc291cmNlU3RyaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3Jlc291cmNlU3RyaW5ncywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFjY2Vzc29yIHRoYXQgcmV0dXJucyB0aGUgcmVzb3VyY2Ugc3RyaW5ncy5cbiAgICAgKi9cbiAgICBnZXQgcmVzb3VyY2VTdHJpbmdzKCk6IEZkQ2Fyb3VzZWxSZXNvdXJjZVN0cmluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VTdHJpbmdzO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIHNsaWRpbmcgZHVyYXRpb24gaW4gbWlsbGllIHNlY29uZHMuIERlZmF1bHQgaXMgMTUwICovXG4gICAgQElucHV0KClcbiAgICBzbGlkZVRyYW5zaXRpb25EdXJhdGlvbiA9IDE1MDtcblxuICAgIC8qKiBJcyBzd2lwZSBlbmFibGVkICovXG4gICAgQElucHV0KClcbiAgICBzd2lwZUVuYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqIElzIGNhcm91c2VsIGlzIHZlcnRpY2FsLiBEZWZhdWx0IHZhbHVlIGlzIGZhbHNlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmVydGljYWwgPSBmYWxzZTtcblxuICAgIC8qKiBOdW1iZXIgb2YgaXRlbXMgdG8gYmUgdmlzaWJsZSBhdCBhIHRpbWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2aXNpYmxlU2xpZGVzQ291bnQodmFsdWU6IG51bWJlciB8ICdhdXRvJykge1xuICAgICAgICB0aGlzLl92aXNpYmxlU2xpZGVzQ291bnQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudCA9IHRoaXMuX2dldFZpc2libGVTbGlkZXNDb3VudCgpO1xuICAgIH1cblxuICAgIGdldCB2aXNpYmxlU2xpZGVzQ291bnQoKTogbnVtYmVyIHwgJ2F1dG8nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVTbGlkZXNDb3VudDtcbiAgICB9XG5cbiAgICAvKiogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGFmdGVyIGEgc2xpZGUgdHJhbnNpdGlvbiBoYXMgaGFwcGVuZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzbGlkZUNoYW5nZTogRXZlbnRFbWl0dGVyPENhcm91c2VsQWN0aXZlU2xpZGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2Fyb3VzZWxBY3RpdmVTbGlkZXM+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2Fyb3VzZWxJdGVtQ29tcG9uZW50LCB7XG4gICAgICAgIGRlc2NlbmRhbnRzOiB0cnVlXG4gICAgfSlcbiAgICBzbGlkZXM6IFF1ZXJ5TGlzdDxDYXJvdXNlbEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzbGlkZUNvbnRhaW5lcicpXG4gICAgc2xpZGVDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQ2Fyb3VzZWwgY29udGFpbmVyIGVsZW1lbnQuICovXG4gICAgQFZpZXdDaGlsZCgnY2Fyb3VzZWxDb250YWluZXInKVxuICAgIGNhcm91c2VsQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RhcnQgaW5kZXggb2YgY3VycmVudGx5IGFjdGl2ZSBpdGVtcyAqL1xuICAgIGN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIGhhbmRsZXMgcnRsIHNlcnZpY2UgKi9cbiAgICBkaXI6IERpcmVjdGlvbiA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gTWFrZSBsZWZ0IG5hdmlnYXRpb24gYnV0dG9uIGRpc2FibGVkICovXG4gICAgbGVmdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBNYWtlIHJpZ2h0IG5hdmlnYXRpb24gYnV0dG9uIGRpc2FibGVkICovXG4gICAgcmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gRmFrZSBhcnJheSBmb3IgY291bnRpbmcgbnVtYmVyIG9mIHBhZ2UgaW5kaWNhdG9yICovXG4gICAgcGFnZUluZGljYXRvcnNDb3VudEFycmF5OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2xpZGVzV3JhcHBlclNpemUgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NvbnRlbnRTaXplUHgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NsaWRlc1dyYXBwZXJTaXplID8gYCR7dGhpcy5fc2xpZGVzV3JhcHBlclNpemV9cHhgIDogdGhpcy53aWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JpZ2h0TmF2aWdhdGlvbkJ0bkxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xlZnROYXZpZ2F0aW9uQnRuTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZVNsaWRlc0NvdW50OiBudW1iZXIgfCAnYXV0bycgPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50ID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VTdHJpbmdzID0gQ2Fyb3VzZWxSZXNvdXJjZVN0cmluZ3NFTjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uZmlnOiBDYXJvdXNlbENvbmZpZyA9IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zbGlkZXNDb3B5OiBDYXJvdXNlbEl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1Zpc2libGVTbGlkZXNDb3VudDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zbGlkZVN3aXBlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2Fyb3VzZWxTZXJ2aWNlOiBDYXJvdXNlbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3pvbmU6IE5nWm9uZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnZpc2libGVTbGlkZXNDb3VudCAmJiB0aGlzLnNsaWRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fbm90aWZ5U2xpZGVDaGFuZ2UoU2xpZGVEaXJlY3Rpb24uTm9uZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gT24gY2Fyb3VzZWwgbG9hZCwgZGlzcGxheSBmaXJzdCBzbGlkZSArIG51bWJlciBvZiBzbGlkZSB2aXNpYmxlXG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPSAwO1xuXG4gICAgICAgIC8vIENoYW5nZSBwYWdpbmF0aW9uIGRpc3BsYXkgdG8gbnVtZXJpYywgaWYgaXRlbSBjb3VudCBpcyBtb3JlIHRoYW4gOFxuICAgICAgICBpZiAodGhpcy5zbGlkZXMubGVuZ3RoID4gSUNPTl9QQUdFX0lORElDQVRPUl9MSU1JVCkge1xuICAgICAgICAgICAgdGhpcy5udW1lcmljSW5kaWNhdG9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zbGlkZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNhcm91c2VsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBEaXNhYmxlIHN3aXBlIHdoZW4gdGhlcmUgaXMgbm8gY2Fyb3VzZWwgaXRlbVxuICAgICAgICAgICAgdGhpcy5zd2lwZUVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gS2VlcCBjb3B5IG9mIG9yaWdpbmFsIHNsaWRlIGFycmF5LCBmb3IgaW5kaWNhdG9yIHB1cnBvc2UuXG4gICAgICAgIC8vIEluIGNhc2Ugb2YgbG9vcGVkIGNhcm91c2VsLCBvcmlnaW5hbCBzbGlkZXMgYXJyYXkgY2hhbmdlcy5cbiAgICAgICAgdGhpcy5fc2xpZGVzQ29weSA9IHRoaXMuc2xpZGVzLnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlU2VydmljZUV2ZW50cygpO1xuXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBkeW5hbWljIHVwZGF0ZSBvZiBzbGlkZXNcbiAgICAgICAgdGhpcy5zbGlkZXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX29uU2xpZGVVcGRhdGVzKCkpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlcnZpY2VDb25maWcoKTtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmluaXRpYWxpc2UodGhpcy5fY29uZmlnLCB0aGlzLnNsaWRlcywgdGhpcy5zbGlkZUNvbnRhaW5lcik7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzVmlzaWJsZVNsaWRlc0NvdW50ID0gdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudDtcbiAgICAgICAgdGhpcy5fcmVzaXplQ29udGVudENvbnRhaW5lcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNWaXNpYmxlU2xpZGVzQ291bnQgJiYgdGhpcy5fcHJldmlvdXNWaXNpYmxlU2xpZGVzQ291bnQgIT09IHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVDYXJvdXNlbCgpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlcnZpY2VDb25maWcoKTtcbiAgICAgICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS51cGRhdGVDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzVmlzaWJsZVNsaWRlc0NvdW50ID0gdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudDtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Nob3dOYXZpZ2F0aW9uQnV0dG9uSW5QYWdlSW5kaWNhdG9yQ29udGFpbmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0b3JJblBhZ2VJbmRpY2F0b3IgJiYgdGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkubGVuZ3RoID4gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2hvd05hdmlnYXRpb25CdXR0b25JbkNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5uYXZpZ2F0b3JJblBhZ2VJbmRpY2F0b3IgJiYgdGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkubGVuZ3RoID4gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2hvd1BhZ2VJbmRpY2F0b3JDb250YWluZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2VJbmRpY2F0b3JDb250YWluZXIgJiYgKHRoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5Lmxlbmd0aCA+IDAgfHwgdGhpcy5udW1lcmljSW5kaWNhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBnZXRQYWdlSW5kaWNhdG9yTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyAxfSAke3RoaXMucmVzb3VyY2VTdHJpbmdzLmZkX2Nhcm91c2VsX29mfSAke1xuICAgICAgICAgICAgdGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkubGVuZ3RoXG4gICAgICAgIH1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNjcmVlblJlYWRlckxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnJlc291cmNlU3RyaW5ncy5mZF9jYXJvdXNlbF9yZWFkZXJ9ICR7dGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIDF9ICR7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlU3RyaW5ncy5mZF9jYXJvdXNlbF9vZlxuICAgICAgICB9ICR7dGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkubGVuZ3RofWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZWwgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsLmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBnZXQgdmFsdWUgZm9yIHJ0bCAqL1xuICAgIF9pc1J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgICBvbktleWRvd25BcnJvd1JpZ2h0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX2lzUnRsKCkgPyB0aGlzLnByZXZpb3VzKCkgOiB0aGlzLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgICBvbktleWRvd25BcnJvd0xlZnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5faXNSdGwoKSA/IHRoaXMubmV4dCgpIDogdGhpcy5wcmV2aW91cygpO1xuICAgIH1cblxuICAgIC8qKiBUcmFuc2l0aW9ucyB0byB0aGUgcHJldmlvdXMgc2xpZGUgaW4gdGhlIGNhcm91c2VsLiAqL1xuICAgIHByZXZpb3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubG9vcCAmJiB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4IDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYWRqdXN0QWN0aXZlSXRlbVBvc2l0aW9uKFNsaWRlRGlyZWN0aW9uLlBSRVZJT1VTKTtcbiAgICAgICAgdGhpcy5fcHJldmVudERlZmF1bHRCdG5Gb2N1cygpO1xuICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UucGlja1ByZXZpb3VzKCk7XG4gICAgICAgIHRoaXMuX25vdGlmeVNsaWRlQ2hhbmdlKFNsaWRlRGlyZWN0aW9uLlBSRVZJT1VTKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBUcmFuc2l0aW9ucyB0byB0aGUgbmV4dCBzbGlkZSBpbiB0aGUgY2Fyb3VzZWwuICovXG4gICAgbmV4dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvb3AgJiYgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA+PSB0aGlzLnBhZ2VJbmRpY2F0b3JzQ291bnRBcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNb3ZpbmcgdG8gbmV4dCBzbGlkZVxuICAgICAgICB0aGlzLmxlZnRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9hZGp1c3RBY3RpdmVJdGVtUG9zaXRpb24oU2xpZGVEaXJlY3Rpb24uTkVYVCk7XG4gICAgICAgIHRoaXMuX3ByZXZlbnREZWZhdWx0QnRuRm9jdXMoKTtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLnBpY2tOZXh0KCk7XG4gICAgICAgIHRoaXMuX25vdGlmeVNsaWRlQ2hhbmdlKFNsaWRlRGlyZWN0aW9uLk5FWFQpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU3Vic2NyaWJlIHRvIGNhcm91c2VsIHNlcnZpY2UgZXZlbnRzICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlU2VydmljZUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmFjdGl2ZUNoYW5nZSQuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5fb25TbGlkZVN3aXBlKGV2ZW50KSk7XG4gICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5kcmFnU3RhdGVDaGFuZ2UkLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX29uU2xpZGVEcmFnKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBQcmV2ZW50IG5hdGl2ZSBmb2N1cyBmbG93IHJlbGF0ZWQgdG8gYnV0dG9uLCBpZiBidXR0b24gd2lsbCBiZSBkaXNhYmxlIG9uIGZvY3VzIHN0YXRlLlxuICAgICAqIEl0IHdvcmtzIG9ubHkgaWYgY2Fyb3VzZWwgaXMgbm90IGluIGNpcmN1bGFyIGxvb3AuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcHJldmVudERlZmF1bHRCdG5Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9vcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRmlyc3QgPSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCBpc0xhc3QgPSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID09PSB0aGlzLnBhZ2VJbmRpY2F0b3JzQ291bnRBcnJheS5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoaXNGaXJzdCB8fCBpc0xhc3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBBZGp1c3QgcG9zaXRpb24gb2YgYWN0aXZlIGl0ZW0sIGJhc2VkIG9uIHNsaWRlIGRpcmVjdGlvbiAqL1xuICAgIHByaXZhdGUgX2FkanVzdEFjdGl2ZUl0ZW1Qb3NpdGlvbihzbGlkZURpcmVjdGlvbjogU2xpZGVEaXJlY3Rpb24sIHN0ZXA6IG51bWJlciA9IDEpOiB2b2lkIHtcbiAgICAgICAgLy8gTW92ZSBvbmUgc3RlcCBpbiB0aGUgZGlyZWN0aW9uXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uQWRqdXN0bWVudCA9IHNsaWRlRGlyZWN0aW9uID09PSBTbGlkZURpcmVjdGlvbi5ORVhUID8gc3RlcCA6IC1zdGVwO1xuICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIHBvc2l0aW9uQWRqdXN0bWVudDtcblxuICAgICAgICAvLyBJZiBjYXJvdXNlbCBzZXQgdG8gbG9vcFxuICAgICAgICBpZiAodGhpcy5sb29wKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gdGhpcy5zbGlkZXMubGVuZ3RoICsgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA+PSB0aGlzLnNsaWRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCAlIHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvblZpc2liaWxpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZXMgbmF2aWdhdGlvbiBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIHByaXZhdGUgX2J1dHRvblZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sb29wKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIGRpc2FibGUgbmF2aWdhdGlvbiBidXR0b24gaWYgZWl0aGVyIGRpcmVjdGlvbiBsaW1pdCBoYXMgcmVhY2hlZC5cbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlcy5sZW5ndGggLSAxID09PSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50ID4gMSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50ID49IHRoaXMuc2xpZGVzLmxlbmd0aFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNsaWRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZSB3aGVuIHNsaWRlIGlzIGFkZGVkIG9yIHJlbW92ZWQgKi9cbiAgICBwcml2YXRlIF9vblNsaWRlVXBkYXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2xpZGVzQ29weSA9IHRoaXMuc2xpZGVzLnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5pbml0aWFsaXNlKHRoaXMuX2NvbmZpZywgdGhpcy5zbGlkZXMsIHRoaXMuc2xpZGVDb250YWluZXIpO1xuICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuYWN0aXZlID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMudmVydGljYWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlWSgwcHgpJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZVgoMHB4KScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVDYXJvdXNlbCgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gSW5pdGlhbGl6ZSBjYXJvdXNlbCB3aXRoIHZpc2libGUgaXRlbXMgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ2Fyb3VzZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBIYW5kbGVzIG5hdmlnYXRvciBidXR0b24gZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5fYnV0dG9uVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgbGV0IGFycmF5TGVuZ3RoOiBudW1iZXI7XG4gICAgICAgICAgICAvLyBzZXQgcGFnZSBpbmRpY2F0b3IgY291bnQgd2l0aCBmYWtlIGFycmF5LCB0byB1c2UgaW4gdGVtcGxhdGVcbiAgICAgICAgICAgIGlmICh0aGlzLmxvb3AgJiYgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudCA+IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBsb29wIHdpdGggbXVsdGkgaXRlbSB2aXNpYmxlLlxuICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoID0gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCA9IHRoaXMuc2xpZGVzLmxlbmd0aCAtIHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGFnZUluZGljYXRvcnNJZlplcm9Db3VudCA9IHRoaXMuc2xpZGVzLmxlbmd0aCA9PT0gMCA/IDAgOiAxO1xuICAgICAgICAgICAgdGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkgPSBuZXcgQXJyYXkoYXJyYXlMZW5ndGggPiAwID8gYXJyYXlMZW5ndGggOiBwYWdlSW5kaWNhdG9yc0lmWmVyb0NvdW50KTtcbiAgICAgICAgICAgIHRoaXMuX2dvVG9GaXJzdEl0ZW0oKTtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goKF9zbGlkZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID49IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggJiZcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPCB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ICsgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBfc2xpZGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfc2xpZGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dvVG9GaXJzdEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmN1cnJlbnRUcmFuc2l0aW9uUHggIT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMuc2xpZGVzLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gMDtcbiAgICAgICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5nb1RvSXRlbSh0aGlzLnNsaWRlcy5maXJzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBJbml0aWFsaXplIGNvbmZpZyBmb3IgQ2Fyb3VzZWwgc2VydmljZSAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVTZXJ2aWNlQ29uZmlnKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25maWcudmVydGljYWwgPSB0aGlzLnZlcnRpY2FsO1xuICAgICAgICB0aGlzLl9jb25maWcuZWxlbWVudHNBdE9uY2UgPSB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50O1xuICAgICAgICB0aGlzLl9jb25maWcuZ2VzdHVyZVN1cHBvcnQgPSB0aGlzLnN3aXBlRW5hYmxlZDtcbiAgICAgICAgdGhpcy5fY29uZmlnLmluZmluaXRlID0gdGhpcy5sb29wO1xuICAgICAgICB0aGlzLl9jb25maWcudHJhbnNpdGlvbiA9IFN0cmluZyh0aGlzLnNsaWRlVHJhbnNpdGlvbkR1cmF0aW9uKSArICdtcyc7XG4gICAgICAgIC8vIENhcm91c2VsIHNlcnZpY2UgZXhwZWN0cyB0cmFuc2l0aW9uIGluIHN0cmluZyBmb3JtYXQgd2l0aCB1bml0LlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmV0dXJucyB0aGUgc2xpZGUgc3dhcHBpbmcgc3RlcHNcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRTdGVwVGFrZW4oZXZlbnQ6IFBhbkVuZE91dHB1dCwgYWN0dWFsQWN0aXZlU2xpZGVJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHN0ZXBzQ2FsY3VsYXRlZDogbnVtYmVyO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoIXRoaXMuX2lzUnRsKCkgJiYgZXZlbnQuYWZ0ZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5faXNSdGwoKSAmJiAhZXZlbnQuYWZ0ZXIgJiYgIXRoaXMudmVydGljYWwpIHx8XG4gICAgICAgICAgICAodGhpcy52ZXJ0aWNhbCAmJiBldmVudC5hZnRlcilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoYWN0dWFsQWN0aXZlU2xpZGVJbmRleCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc3RlcHNDYWxjdWxhdGVkID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0dWFsQWN0aXZlU2xpZGVJbmRleCA+IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBzdGVwc0NhbGN1bGF0ZWQgPSBhY3R1YWxBY3RpdmVTbGlkZUluZGV4IC0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RlcHNDYWxjdWxhdGVkID0gdGhpcy5zbGlkZXMubGVuZ3RoIC0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UsIHdoZW4gZmlyc3QgbGVmdCBzd2lwZSBiZWZvcmUgc2xpZGVzIGFyZSByb3RhdGVkIGluIGNhcm91c2VsIHNlcnZpY2VcbiAgICAgICAgICAgIGlmIChhY3R1YWxBY3RpdmVTbGlkZUluZGV4ID09PSAwICYmIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdGVwc0NhbGN1bGF0ZWQgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhY3R1YWxBY3RpdmVTbGlkZUluZGV4IDwgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCkge1xuICAgICAgICAgICAgICAgIHN0ZXBzQ2FsY3VsYXRlZCA9IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggLSBhY3R1YWxBY3RpdmVTbGlkZUluZGV4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGVwc0NhbGN1bGF0ZWQgPSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ICsgdGhpcy5zbGlkZXMubGVuZ3RoIC0gYWN0dWFsQWN0aXZlU2xpZGVJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RlcHNDYWxjdWxhdGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZXMgbm90aWZpY2F0aW9uIG9uIHZpc2libGUgc2xpZGUgY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbm90aWZ5U2xpZGVDaGFuZ2Uoc2xpZGVEaXJlY3Rpb246IFNsaWRlRGlyZWN0aW9uLCBmaXJzdEFjdGl2ZVNsaWRlPzogQ2Fyb3VzZWxJdGVtSW50ZXJmYWNlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVTbGlkZXM6IENhcm91c2VsSXRlbUNvbXBvbmVudFtdID0gW107XG4gICAgICAgIGxldCBmaXJzdEFjdGl2ZVNsaWRlSW5kZXg6IG51bWJlcjtcbiAgICAgICAgaWYgKHRoaXMubG9vcCkge1xuICAgICAgICAgICAgZmlyc3RBY3RpdmVTbGlkZSA9IHRoaXMuX2Nhcm91c2VsU2VydmljZS5hY3RpdmU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0QWN0aXZlU2xpZGUpIHtcbiAgICAgICAgICAgIGZpcnN0QWN0aXZlU2xpZGVJbmRleCA9IHRoaXMuc2xpZGVzLnRvQXJyYXkoKS5maW5kSW5kZXgoKF9pdGVtKSA9PiBfaXRlbSA9PT0gZmlyc3RBY3RpdmVTbGlkZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaXJzdEFjdGl2ZVNsaWRlSW5kZXggPSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGFjdGl2ZVNsaWRlSW5kZXggPSAwOyBhY3RpdmVTbGlkZUluZGV4IDwgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudDsgYWN0aXZlU2xpZGVJbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGZpcnN0QWN0aXZlU2xpZGVJbmRleCArIGFjdGl2ZVNsaWRlSW5kZXg7XG4gICAgICAgICAgICBjb25zdCBzbGlkZSA9IHRoaXMuc2xpZGVzLmdldChpbmRleCk7XG4gICAgICAgICAgICBpZiAoc2xpZGUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICAgICAgICAgICAgc2xpZGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tYW5hZ2VTbGlkZVZpc2liaWxpdHkoZmlyc3RBY3RpdmVTbGlkZUluZGV4KTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2xpZGVEaXJlY3Rpb24gPT09IFNsaWRlRGlyZWN0aW9uLk5FWFQgPyAnTmV4dCcgOiAnUHJldmlvdXMnO1xuICAgICAgICB0aGlzLnNsaWRlQ2hhbmdlLmVtaXQobmV3IENhcm91c2VsQWN0aXZlU2xpZGVzKGFjdGl2ZVNsaWRlcywgZGlyZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWFuYWdlcyB2aXNpYmlsaXR5IGZvciBzbGlkZXMuIFVzZWZ1bCBpbiBtYW5hZ2luZyB0YWIgb3JkZXIgKi9cbiAgICBwcml2YXRlIF9tYW5hZ2VTbGlkZVZpc2liaWxpdHkoZmlyc3RBY3RpdmVTbGlkZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKChfc2xpZGVzLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdEFjdGl2ZVNsaWRlSW5kZXggJiYgaW5kZXggPCBmaXJzdEFjdGl2ZVNsaWRlSW5kZXggKyB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfc2xpZGVzLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfc2xpZGVzLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3NsaWRlcy52aXNpYmlsaXR5ID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zbGlkZXMudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgdGhpcy5zbGlkZVRyYW5zaXRpb25EdXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUnRsIGNoYW5nZSBzdWJzY3JpcHRpb24gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1J0bCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmcmVzaERpcmVjdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlyID0gdGhpcy5faXNSdGwoKSA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuaXNSdGwgPSB0aGlzLmRpciA9PT0gJ3J0bCc7XG4gICAgICAgICAgICBpZiAodGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLml0ZW1zICYmIHRoaXMuX2Nhcm91c2VsU2VydmljZS5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuZ29Ub0l0ZW0odGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmFjdGl2ZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgICAgICByZWZyZXNoRGlyZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHJlZnJlc2hEaXJlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gT24gU3dpcGluZyBvZiBzbGlkZSwgbWFuYWdlIHBhZ2UgaW5kaWNhdG9yICovXG4gICAgcHJpdmF0ZSBfb25TbGlkZVN3aXBlKGV2ZW50OiBQYW5FbmRPdXRwdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2xpZGVTd2lwZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaXJzdEFjdGl2ZVNsaWRlID0gZXZlbnQuaXRlbTtcbiAgICAgICAgY29uc3QgYWN0dWFsQWN0aXZlU2xpZGVJbmRleCA9IHRoaXMuX3NsaWRlc0NvcHkuZmluZEluZGV4KChfc2xpZGUpID0+IF9zbGlkZSA9PT0gZmlyc3RBY3RpdmVTbGlkZSk7XG4gICAgICAgIGNvbnN0IHN0ZXBUYWtlbiA9IHRoaXMuX2dldFN0ZXBUYWtlbihldmVudCwgYWN0dWFsQWN0aXZlU2xpZGVJbmRleCk7XG4gICAgICAgIGlmIChzdGVwVGFrZW4gPiAwKSB7XG4gICAgICAgICAgICBsZXQgc2xpZGVEaXJlY3Rpb246IFNsaWRlRGlyZWN0aW9uO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1J0bCgpKSB7XG4gICAgICAgICAgICAgICAgc2xpZGVEaXJlY3Rpb24gPSBldmVudC5hZnRlciA/IFNsaWRlRGlyZWN0aW9uLk5FWFQgOiBTbGlkZURpcmVjdGlvbi5QUkVWSU9VUztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdmVydGljYWwgY2Fyb3VzZWwgc2xpZGUgZGlyZWN0aW9uIGlzIHNhbWUgaW4gbHRyIGFuZCBydGxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZURpcmVjdGlvbiA9IGV2ZW50LmFmdGVyID8gU2xpZGVEaXJlY3Rpb24uTkVYVCA6IFNsaWRlRGlyZWN0aW9uLlBSRVZJT1VTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlRGlyZWN0aW9uID0gZXZlbnQuYWZ0ZXIgPyBTbGlkZURpcmVjdGlvbi5QUkVWSU9VUyA6IFNsaWRlRGlyZWN0aW9uLk5FWFQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fYWRqdXN0QWN0aXZlSXRlbVBvc2l0aW9uKHNsaWRlRGlyZWN0aW9uLCBzdGVwVGFrZW4pO1xuICAgICAgICAgICAgdGhpcy5fbm90aWZ5U2xpZGVDaGFuZ2Uoc2xpZGVEaXJlY3Rpb24sIGZpcnN0QWN0aXZlU2xpZGUpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBNYWtpbmcgc2xpZGVzIHZpc2libGUgd2hlbiBzbGlkZXMgYXJlIGRyYWdnZWQuIE90aGVyd2lzZSwgaXQgbG9vc2VzIHRoZSBlZmZlY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25TbGlkZURyYWcoaXNEcmFnZ2luZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaCgoX3NsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgX3NsaWRlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NsaWRlU3dpcGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFmdGVyIHNsaWRlIGxpbWl0IHJlYWNoZWQsIGlmIGRyYWdnaW5nIHN0YXJ0cyB0aGVuIHJldmVydCB2aXNpYmlsaXR5XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3NsaWRlU3dpcGVkICYmICF0aGlzLmxvb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tYW5hZ2VTbGlkZVZpc2liaWxpdHkodGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmVzaXplcyBpbm5lciBjYXJvdXNlbCBjb250YWluZXIgdG8gZml0IGFsbCBpdGVtcyBpbiB0aGUgdmlld3BvcnQgYW5kIGhpZGUgdGhvc2Ugd2hpY2ggYXJlIG5vdCBmdWxseSBpbiBpdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNpemVDb250ZW50Q29udGFpbmVyKCk6IHZvaWQge1xuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5zbGlkZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50KSxcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5jYXJvdXNlbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgc2xpZGVzIH0gPSB0aGlzLl9nZXRGaXR0aW5nU2xpZGVzQW5kV2lkdGgoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVTbGlkZXNDb3VudCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQgPSBzbGlkZXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZWVkbGVTbGlkZUluZGV4ID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbW91bnQgb2Ygc2xpZGVzIGluc3VmZmljaWVudCB0byBmaWxsIHdob2xlIGNhcm91c2VsLCBzbGlkZSBiYWNrIGEgYml0LlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIHNsaWRlcyA+IHRvdGFsU2xpZGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkbGVTbGlkZUluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIHNsaWRlcyAtIHRvdGFsU2xpZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRsZVNsaWRlID0gdGhpcy5zbGlkZXMuZ2V0KG5lZWRsZVNsaWRlSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPSBuZWVkbGVTbGlkZUluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5hY3RpdmUgPSBuZWVkbGVTbGlkZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWZyZXNoIGNhcm91c2VsIGNvbmZpZyBhbmQgdHJhbnNpdGlvbiB0byB0aGUgY3VycmVudCBzbGlkZS5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNhcm91c2VsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgbmVlZGxlU2xpZGUgJiYgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmdvVG9JdGVtKG5lZWRsZVNsaWRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZ5U2xpZGVDaGFuZ2UoU2xpZGVEaXJlY3Rpb24uTm9uZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NsaWRlc1dyYXBwZXJTaXplICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbGlkZXNXcmFwcGVyU2l6ZSA9IHdpZHRoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDYWxjdWxhdGVzIGhvdyBtYW55IHNsaWRlcyBjYW4gYmUgc2hvd24gd2l0aGluIGN1cnJlbnQgY2Fyb3VzZWwgdmlld3BvcnQuXG4gICAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgZml0dGluZyBzbGlkZXMgY291bnQgYW5kIHRvdGFsIHdpZHRoIG9mIHRob3NlIHNsaWRlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRGaXR0aW5nU2xpZGVzQW5kV2lkdGgoKTogRml0dGluZ1NsaWRlc0FuZFdpZHRoIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcm91c2VsQ29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICAgIHNsaWRlczogMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLmNhcm91c2VsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBtYXhTaXplID0gMDtcbiAgICAgICAgbGV0IHNsaWRlc0NvdW50ID0gMDtcbiAgICAgICAgY29uc3QgY2Fyb3VzZWxTbGlkZXMgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2xpZGVzID0gY2Fyb3VzZWxTbGlkZXMuc3BsaWNlKDAsIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXgpO1xuICAgICAgICBjb25zdCBnZXRTbGlkZXMgPSAoc2xpZGVzOiBDYXJvdXNlbEl0ZW1Db21wb25lbnRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzbGlkZSBvZiBzbGlkZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbGlkZVdpZHRoID0gc2xpZGUuZ2V0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNsaWRlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NpemUgPSBtYXhTaXplICsgc2xpZGVXaWR0aDtcbiAgICAgICAgICAgICAgICBpZiAobmV3U2l6ZSA+IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYXhTaXplID0gbmV3U2l6ZTtcbiAgICAgICAgICAgICAgICBzbGlkZXNDb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBnZXRTbGlkZXMoY2Fyb3VzZWxTbGlkZXMpO1xuXG4gICAgICAgIC8vIElmIHdpdGggb2YgdGhlIHJlc3Qgb2YgdGhlIHNsaWRlcyBpcyBsZXNzZXIgdGhhbiBjYXJvdXNlJ3Mgdmlld3BvcnQsIGFkZCBwcmV2aW91cyBzbGlkZXMgdG8gaXQuXG4gICAgICAgIGlmIChtYXhTaXplIDwgd2lkdGgpIHtcbiAgICAgICAgICAgIGdldFNsaWRlcyhwcmV2aW91c1NsaWRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoOiBtYXhTaXplLFxuICAgICAgICAgICAgc2xpZGVzOiBzbGlkZXNDb3VudFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmlzaWJsZVNsaWRlc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLl92aXNpYmxlU2xpZGVzQ291bnQgIT09ICdhdXRvJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVTbGlkZXNDb3VudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHNsaWRlcyB9ID0gdGhpcy5fZ2V0Rml0dGluZ1NsaWRlc0FuZFdpZHRoKCk7XG4gICAgICAgIHJldHVybiBzbGlkZXM7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZmQtY2Fyb3VzZWxcIlxuICAgIFtjbGFzcy5mZC1jYXJvdXNlbC0tbm8tbmF2aWdhdGlvbl09XCIhbmF2aWdhdGlvblwiXG4gICAgZGF0YS1yaWRlPVwiY2Fyb3VzZWxcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRcIlxuICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgW2F0dHIuZGlyXT1cImRpclwiXG4gICAgcm9sZT1cInJlZ2lvblwiXG4gICAgI2Nhcm91c2VsQ29udGFpbmVyXG4gICAgKGNsaWNrKT1cIl9mb2N1cygpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3Nob3dQYWdlSW5kaWNhdG9yQ29udGFpbmVyICYmIHBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb24gPT09ICd0b3AnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlSW5kaWNhdG9yQ29udGFpbmVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX2NvbnRlbnRcIlxuICAgICAgICBbY2xhc3MuZmQtY2Fyb3VzZWxfX2NvbnRlbnQtLWhvcml6b250YWxdPVwiIXZlcnRpY2FsXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIl9jb250ZW50U2l6ZVB4XCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2hvd05hdmlnYXRpb25CdXR0b25JbkNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25MZWZ0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgI3NsaWRlQ29udGFpbmVyIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX3NsaWRlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3Nob3dOYXZpZ2F0aW9uQnV0dG9uSW5Db250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uUmlnaHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3Nob3dQYWdlSW5kaWNhdG9yQ29udGFpbmVyICYmIHBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb24gPT09ICdib3R0b20nXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlSW5kaWNhdG9yQ29udGFpbmVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHJvbGU9XCJyZWdpb25cIiBbYXR0ci5pZF09XCJpZCArICctYWNjZXNzaWJpbGl0eSdcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBkaXI9XCJsdHJcIj5cbiAgICAgICAge3sgc2NyZWVuUmVhZGVyTGFiZWwgfX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BhZ2VJbmRpY2F0b3JDb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhcm91c2VsX19wYWdlLWluZGljYXRvci1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zaG93TmF2aWdhdGlvbkJ1dHRvbkluUGFnZUluZGljYXRvckNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbkxlZnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VJbmRpY2F0b3JzXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2hvd05hdmlnYXRpb25CdXR0b25JblBhZ2VJbmRpY2F0b3JDb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25SaWdodFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGFnZUluZGljYXRvcnM+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bWVyaWNJbmRpY2F0b3JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhcm91c2VsX19wYWdlLWluZGljYXRvcnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlSW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhcm91c2VsX190ZXh0XCIgZGlyPVwibHRyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFBhZ2VJbmRpY2F0b3JMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbnVtZXJpY0luZGljYXRvciAmJiBfc2hvd05hdmlnYXRpb25CdXR0b25JblBhZ2VJbmRpY2F0b3JDb250YWluZXJcIj5cbiAgICAgICAgPG9sIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX3BhZ2UtaW5kaWNhdG9yc1wiIFthdHRyLmRpcl09XCJkaXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlSW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdlSW5kaWNhdG9yc0NvdW50QXJyYXk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlLXRvXT1cImkgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX3BhZ2UtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1jYXJvdXNlbF9fcGFnZS1pbmRpY2F0b3ItLWFjdGl2ZV09XCJpID09PSBjdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvb2w+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbkxlZnQ+XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJmZC1jYXJvdXNlbF9fYnV0dG9uIGZkLWNhcm91c2VsX19idXR0b24tLWxlZnRcIlxuICAgICAgICBbc3R5bGUuei1pbmRleF09XCIxXCJcbiAgICAgICAgZGF0YS1zbGlkZT1cInByZXZpb3VzXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInY29yZUNhcm91c2VsLmxlZnROYXZpZ2F0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwicHJldmlvdXMoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxlZnRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cIidjb3JlQ2Fyb3VzZWwubGVmdE5hdmlnYXRpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1sZWZ0XCJcbiAgICA+PC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvblJpZ2h0PlxuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX2J1dHRvbiBmZC1jYXJvdXNlbF9fYnV0dG9uLS1yaWdodFwiXG4gICAgICAgIFtzdHlsZS56LWluZGV4XT1cIjFcIlxuICAgICAgICBkYXRhLXNsaWRlPVwibmV4dFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvcmVDYXJvdXNlbC5yaWdodE5hdmlnYXRpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJuZXh0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyaWdodEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiJ2NvcmVDYXJvdXNlbC5yaWdodE5hdmlnYXRpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1yaWdodFwiXG4gICAgPjwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
667
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUE2QixNQUFNLDJCQUEyQixDQUFDO0FBQ2pHLE9BQU8sRUFBeUMsZUFBZSxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FB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LElBQUk7cUJBQ3BCO2dCQUtELGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSzNCLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBb0w5QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUTlDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmVzaXplT2JzZXJ2YWJsZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENhcm91c2VsSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY2Fyb3VzZWwtaXRlbS9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXJvdXNlbFJlc291cmNlU3RyaW5nc0VOLCBGZENhcm91c2VsUmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi9pMThuL2Nhcm91c2VsLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDYXJvdXNlbENvbmZpZywgQ2Fyb3VzZWxJdGVtSW50ZXJmYWNlLCBDYXJvdXNlbFNlcnZpY2UsIFBhbkVuZE91dHB1dCB9IGZyb20gJy4vY2Fyb3VzZWwuc2VydmljZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0NsYXNzLCBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKiBQYWdlIGxpbWl0IHRvIHN3aXRjaCB0byBudW1lcmljYWwgaW5kaWNhdG9yICovXG5jb25zdCBJQ09OX1BBR0VfSU5ESUNBVE9SX0xJTUlUID0gODtcbmV4cG9ydCB0eXBlIFBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb24gPSAnYm90dG9tJyB8ICd0b3AnO1xuXG5leHBvcnQgdHlwZSBDYXJvdXNlbEJhY2tncm91bmRPcHRpb25zID0gJ3RyYW5zbHVjZW50JyB8ICd0cmFuc3BhcmVudCcgfCAnc29saWQnO1xuXG5leHBvcnQgZW51bSBTbGlkZURpcmVjdGlvbiB7XG4gICAgTm9uZSxcbiAgICBORVhULFxuICAgIFBSRVZJT1VTXG59XG5leHBvcnQgaW50ZXJmYWNlIEZpdHRpbmdTbGlkZXNBbmRXaWR0aCB7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBzbGlkZXM6IG51bWJlcjtcbn1cbmxldCBjYXJvdXNlbENvdW50ZXIgPSAwO1xuXG5jbGFzcyBDYXJvdXNlbEFjdGl2ZVNsaWRlcyB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGFjdGl2ZUl0ZW1zOiBDYXJvdXNlbEl0ZW1Db21wb25lbnRbXSwgcHVibGljIHJlYWRvbmx5IHNsaWRlRGlyZWN0aW9uOiBzdHJpbmcpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0Nhcm91c2VsU2VydmljZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3N0eWxlLndpZHRoXSc6ICd3aWR0aCdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5nQ2xhc3MsIE5nRm9yLCBCdXR0b25Nb2R1bGUsIEZkVHJhbnNsYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgICAvKiogSUQgZm9yIHRoZSBDYXJvdXNlbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgaWQgPSBgZmQtY2Fyb3VzZWwtJHtjYXJvdXNlbENvdW50ZXIrK31gO1xuXG4gICAgLyoqIFNldHMgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgZm9yIGNhcm91c2VsICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWwgPSBudWxsO1xuXG4gICAgLyoqIFNldHMgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSBmb3IgY2Fyb3VzZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBmb3IgY2Fyb3VzZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFEZXNjcmliZWRCeTogc3RyaW5nO1xuXG4gICAgLyoqIFNldHMgcG9zaXRpb24gb2YgcGFnZSBpbmRpY2F0b3IgY29udGFpbmVyLiBEZWZhdWx0IHBvc2l0aW9uIGlzIGJvdHRvbS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb246IFBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb24gPSAnYm90dG9tJztcblxuICAgIC8qKiBIZWlnaHQgZm9yIGNhcm91c2VsIGNvbnRhaW5lciAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgICAvKiogV2lkdGggZm9yIGNhcm91c2VsIGNvbnRhaW5lciAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2lkdGggPSAnMTAwJSc7XG5cbiAgICAvKiogSWYgY2Fyb3VzZWwgaXMgaW4gY2lyY3VsYXIgbG9vcCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9vcCA9IGZhbHNlO1xuXG4gICAgLyoqIFNob3dzL2hpZGVzIG9wdGlvbmFsIG5hdmlnYXRpb24gYnV0dG9uICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uID0gdHJ1ZTtcblxuICAgIC8qKiBTaG93IG5hdmlnYXRpb24gYnV0dG9uIGluIHBhZ2UgaW5kaWNhdG9yIGNvbnRhaW5lciBvciBpbnNpZGUgY29udGVudC4gRGVmYXVsdCBpcyBwYWdlIGluZGljYXRvciBjb250YWluZXIgb24gdHJ1ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdG9ySW5QYWdlSW5kaWNhdG9yID0gdHJ1ZTtcblxuICAgIC8qKiBDb252ZXJ0IHRvIE51bWVyaWMgcGFnZSBpbmRpY2F0b3IgKi9cbiAgICBASW5wdXQoKVxuICAgIG51bWVyaWNJbmRpY2F0b3IgPSBmYWxzZTtcblxuICAgIC8qKiBTaG93cy9oaWRlcyBvcHRpb25hbCBwYWdlIGluZGljYXRvciBjb250YWluZXIgICovXG4gICAgQElucHV0KClcbiAgICBwYWdlSW5kaWNhdG9yQ29udGFpbmVyID0gdHJ1ZTtcblxuICAgIC8qKiBTaG93cy9oaWRlcyBvcHRpb25hbCBwYWdlIGluZGljYXRvciAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZUluZGljYXRvciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHNldHMgdGhlIHJlc291cmNlIHN0cmluZ3MuXG4gICAgICogQnkgZGVmYXVsdCBpdCB1c2VzIEVOIHJlc291cmNlcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCByZXNvdXJjZVN0cmluZ3ModmFsdWU6IEZkQ2Fyb3VzZWxSZXNvdXJjZVN0cmluZ3MpIHtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcmVzb3VyY2VTdHJpbmdzLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCByZXR1cm5zIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqL1xuICAgIGdldCByZXNvdXJjZVN0cmluZ3MoKTogRmRDYXJvdXNlbFJlc291cmNlU3RyaW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVN0cmluZ3M7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgc2xpZGluZyBkdXJhdGlvbiBpbiBtaWxsaWUgc2Vjb25kcy4gRGVmYXVsdCBpcyAxNTAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNsaWRlVHJhbnNpdGlvbkR1cmF0aW9uID0gMTUwO1xuXG4gICAgLyoqIElzIHN3aXBlIGVuYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHN3aXBlRW5hYmxlZCA9IHRydWU7XG5cbiAgICAvKiogSXMgY2Fyb3VzZWwgaXMgdmVydGljYWwuIERlZmF1bHQgdmFsdWUgaXMgZmFsc2UuICovXG4gICAgQElucHV0KClcbiAgICB2ZXJ0aWNhbCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gaGlkZSB0b3AgYm9yZGVyIG9mIHRoZSBQYWdpbmF0aW9uIENvbnRhaW5lci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vUGFnaW5hdGlvbkNvbnRhaW5lckJvcmRlciA9IGZhbHNlO1xuXG4gICAgLyoqIEJhY2tncm91bmQgY29uZmlndXJhdGlvbiBmb3IgdGhlIENvbnRlbnQgY29udGFpbmVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEJhY2tncm91bmQ6IENhcm91c2VsQmFja2dyb3VuZE9wdGlvbnMgPSAndHJhbnNsdWNlbnQnO1xuXG4gICAgLyoqIEJhY2tncm91bmQgY29uZmlndXJhdGlvbiBmb3IgdGhlIFBhZ2luYXRpb24gY29udGFpbmVyICovXG4gICAgQElucHV0KClcbiAgICBwYWdlSW5kaWNhdG9yQmFja2dyb3VuZDogQ2Fyb3VzZWxCYWNrZ3JvdW5kT3B0aW9ucyA9ICdzb2xpZCc7XG5cbiAgICAvKiogTnVtYmVyIG9mIGl0ZW1zIHRvIGJlIHZpc2libGUgYXQgYSB0aW1lICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZVNsaWRlc0NvdW50KHZhbHVlOiBudW1iZXIgfCAnYXV0bycpIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZVNsaWRlc0NvdW50ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQgPSB0aGlzLl9nZXRWaXNpYmxlU2xpZGVzQ291bnQoKTtcbiAgICB9XG5cbiAgICBnZXQgdmlzaWJsZVNsaWRlc0NvdW50KCk6IG51bWJlciB8ICdhdXRvJyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlU2xpZGVzQ291bnQ7XG4gICAgfVxuXG4gICAgLyoqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciBhIHNsaWRlIHRyYW5zaXRpb24gaGFzIGhhcHBlbmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2xpZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDYXJvdXNlbEFjdGl2ZVNsaWRlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPENhcm91c2VsQWN0aXZlU2xpZGVzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKENhcm91c2VsSXRlbUNvbXBvbmVudCwge1xuICAgICAgICBkZXNjZW5kYW50czogdHJ1ZVxuICAgIH0pXG4gICAgc2xpZGVzOiBRdWVyeUxpc3Q8Q2Fyb3VzZWxJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2xpZGVDb250YWluZXInKVxuICAgIHNsaWRlQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIENhcm91c2VsIGNvbnRhaW5lciBlbGVtZW50LiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2Nhcm91c2VsQ29udGFpbmVyJylcbiAgICBjYXJvdXNlbENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuIFN0YXJ0IGluZGV4IG9mIGN1cnJlbnRseSBhY3RpdmUgaXRlbXMgKi9cbiAgICBjdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIHJ0bCBzZXJ2aWNlICovXG4gICAgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuIE1ha2UgbGVmdCBuYXZpZ2F0aW9uIGJ1dHRvbiBkaXNhYmxlZCAqL1xuICAgIGxlZnRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gTWFrZSByaWdodCBuYXZpZ2F0aW9uIGJ1dHRvbiBkaXNhYmxlZCAqL1xuICAgIHJpZ2h0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIEZha2UgYXJyYXkgZm9yIGNvdW50aW5nIG51bWJlciBvZiBwYWdlIGluZGljYXRvciAqL1xuICAgIHBhZ2VJbmRpY2F0b3JzQ291bnRBcnJheTogbnVtYmVyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NsaWRlc1dyYXBwZXJTaXplID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9jb250ZW50U2l6ZVB4KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zbGlkZXNXcmFwcGVyU2l6ZSA/IGAke3RoaXMuX3NsaWRlc1dyYXBwZXJTaXplfXB4YCA6IHRoaXMud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yaWdodE5hdmlnYXRpb25CdG5MYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sZWZ0TmF2aWdhdGlvbkJ0bkxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVTbGlkZXNDb3VudDogbnVtYmVyIHwgJ2F1dG8nID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc291cmNlU3RyaW5ncyA9IENhcm91c2VsUmVzb3VyY2VTdHJpbmdzRU47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbmZpZzogQ2Fyb3VzZWxDb25maWcgPSB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2xpZGVzQ29weTogQ2Fyb3VzZWxJdGVtQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNWaXNpYmxlU2xpZGVzQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2xpZGVTd2lwZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Nhcm91c2VsU2VydmljZTogQ2Fyb3VzZWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF96b25lOiBOZ1pvbmUsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1J0bCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy52aXNpYmxlU2xpZGVzQ291bnQgJiYgdGhpcy5zbGlkZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmeVNsaWRlQ2hhbmdlKFNsaWRlRGlyZWN0aW9uLk5vbmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIE9uIGNhcm91c2VsIGxvYWQsIGRpc3BsYXkgZmlyc3Qgc2xpZGUgKyBudW1iZXIgb2Ygc2xpZGUgdmlzaWJsZVxuICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gMDtcblxuICAgICAgICAvLyBDaGFuZ2UgcGFnaW5hdGlvbiBkaXNwbGF5IHRvIG51bWVyaWMsIGlmIGl0ZW0gY291bnQgaXMgbW9yZSB0aGFuIDhcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVzLmxlbmd0aCA+IElDT05fUEFHRV9JTkRJQ0FUT1JfTElNSVQpIHtcbiAgICAgICAgICAgIHRoaXMubnVtZXJpY0luZGljYXRvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2xpZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVDYXJvdXNlbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gRGlzYWJsZSBzd2lwZSB3aGVuIHRoZXJlIGlzIG5vIGNhcm91c2VsIGl0ZW1cbiAgICAgICAgICAgIHRoaXMuc3dpcGVFbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEtlZXAgY29weSBvZiBvcmlnaW5hbCBzbGlkZSBhcnJheSwgZm9yIGluZGljYXRvciBwdXJwb3NlLlxuICAgICAgICAvLyBJbiBjYXNlIG9mIGxvb3BlZCBjYXJvdXNlbCwgb3JpZ2luYWwgc2xpZGVzIGFycmF5IGNoYW5nZXMuXG4gICAgICAgIHRoaXMuX3NsaWRlc0NvcHkgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVNlcnZpY2VFdmVudHMoKTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gZHluYW1pYyB1cGRhdGUgb2Ygc2xpZGVzXG4gICAgICAgIHRoaXMuc2xpZGVzLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vblNsaWRlVXBkYXRlcygpKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVTZXJ2aWNlQ29uZmlnKCk7XG4gICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5pbml0aWFsaXNlKHRoaXMuX2NvbmZpZywgdGhpcy5zbGlkZXMsIHRoaXMuc2xpZGVDb250YWluZXIpO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1Zpc2libGVTbGlkZXNDb3VudCA9IHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQ7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUNvbnRlbnRDb250YWluZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzVmlzaWJsZVNsaWRlc0NvdW50ICYmIHRoaXMuX3ByZXZpb3VzVmlzaWJsZVNsaWRlc0NvdW50ICE9PSB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplQ2Fyb3VzZWwoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVTZXJ2aWNlQ29uZmlnKCk7XG4gICAgICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UudXBkYXRlQ29uZmlnKHRoaXMuX2NvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c1Zpc2libGVTbGlkZXNDb3VudCA9IHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQ7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9zaG93TmF2aWdhdGlvbkJ1dHRvbkluUGFnZUluZGljYXRvckNvbnRhaW5lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdG9ySW5QYWdlSW5kaWNhdG9yICYmIHRoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5Lmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Nob3dOYXZpZ2F0aW9uQnV0dG9uSW5Db250ZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMubmF2aWdhdG9ySW5QYWdlSW5kaWNhdG9yICYmIHRoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5Lmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Nob3dQYWdlSW5kaWNhdG9yQ29udGFpbmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdlSW5kaWNhdG9yQ29udGFpbmVyICYmICh0aGlzLnBhZ2VJbmRpY2F0b3JzQ291bnRBcnJheS5sZW5ndGggPiAwIHx8IHRoaXMubnVtZXJpY0luZGljYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgZ2V0UGFnZUluZGljYXRvckxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ICsgMX0gJHt0aGlzLnJlc291cmNlU3RyaW5ncy5mZF9jYXJvdXNlbF9vZn0gJHtcbiAgICAgICAgICAgIHRoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5Lmxlbmd0aFxuICAgICAgICB9YDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzY3JlZW5SZWFkZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICByZXR1cm4gYCR7dGhpcy5yZXNvdXJjZVN0cmluZ3MuZmRfY2Fyb3VzZWxfcmVhZGVyfSAke3RoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyAxfSAke1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZVN0cmluZ3MuZmRfY2Fyb3VzZWxfb2ZcbiAgICAgICAgfSAke3RoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5Lmxlbmd0aH1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGVsICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBlbC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogZ2V0IHZhbHVlIGZvciBydGwgKi9cbiAgICBfaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dyaWdodCcsIFsnJGV2ZW50J10pXG4gICAgb25LZXlkb3duQXJyb3dSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9pc1J0bCgpID8gdGhpcy5wcmV2aW91cygpIDogdGhpcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50J10pXG4gICAgb25LZXlkb3duQXJyb3dMZWZ0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX2lzUnRsKCkgPyB0aGlzLm5leHQoKSA6IHRoaXMucHJldmlvdXMoKTtcbiAgICB9XG5cbiAgICAvKiogVHJhbnNpdGlvbnMgdG8gdGhlIHByZXZpb3VzIHNsaWRlIGluIHRoZSBjYXJvdXNlbC4gKi9cbiAgICBwcmV2aW91cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvb3AgJiYgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2FkanVzdEFjdGl2ZUl0ZW1Qb3NpdGlvbihTbGlkZURpcmVjdGlvbi5QUkVWSU9VUyk7XG4gICAgICAgIHRoaXMuX3ByZXZlbnREZWZhdWx0QnRuRm9jdXMoKTtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLnBpY2tQcmV2aW91cygpO1xuICAgICAgICB0aGlzLl9ub3RpZnlTbGlkZUNoYW5nZShTbGlkZURpcmVjdGlvbi5QUkVWSU9VUyk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogVHJhbnNpdGlvbnMgdG8gdGhlIG5leHQgc2xpZGUgaW4gdGhlIGNhcm91c2VsLiAqL1xuICAgIG5leHQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sb29wICYmIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPj0gdGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTW92aW5nIHRvIG5leHQgc2xpZGVcbiAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYWRqdXN0QWN0aXZlSXRlbVBvc2l0aW9uKFNsaWRlRGlyZWN0aW9uLk5FWFQpO1xuICAgICAgICB0aGlzLl9wcmV2ZW50RGVmYXVsdEJ0bkZvY3VzKCk7XG4gICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5waWNrTmV4dCgpO1xuICAgICAgICB0aGlzLl9ub3RpZnlTbGlkZUNoYW5nZShTbGlkZURpcmVjdGlvbi5ORVhUKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFN1YnNjcmliZSB0byBjYXJvdXNlbCBzZXJ2aWNlIGV2ZW50cyAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVNlcnZpY2VFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5hY3RpdmVDaGFuZ2UkLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX29uU2xpZGVTd2lwZShldmVudCkpO1xuICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuZHJhZ1N0YXRlQ2hhbmdlJC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLl9vblNsaWRlRHJhZyhldmVudCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUHJldmVudCBuYXRpdmUgZm9jdXMgZmxvdyByZWxhdGVkIHRvIGJ1dHRvbiwgaWYgYnV0dG9uIHdpbGwgYmUgZGlzYWJsZSBvbiBmb2N1cyBzdGF0ZS5cbiAgICAgKiBJdCB3b3JrcyBvbmx5IGlmIGNhcm91c2VsIGlzIG5vdCBpbiBjaXJjdWxhciBsb29wLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3ByZXZlbnREZWZhdWx0QnRuRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvb3ApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0ZpcnN0ID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgaXNMYXN0ID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9PT0gdGhpcy5wYWdlSW5kaWNhdG9yc0NvdW50QXJyYXkubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGlzRmlyc3QgfHwgaXNMYXN0KSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoe1xuICAgICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQWRqdXN0IHBvc2l0aW9uIG9mIGFjdGl2ZSBpdGVtLCBiYXNlZCBvbiBzbGlkZSBkaXJlY3Rpb24gKi9cbiAgICBwcml2YXRlIF9hZGp1c3RBY3RpdmVJdGVtUG9zaXRpb24oc2xpZGVEaXJlY3Rpb246IFNsaWRlRGlyZWN0aW9uLCBzdGVwOiBudW1iZXIgPSAxKTogdm9pZCB7XG4gICAgICAgIC8vIE1vdmUgb25lIHN0ZXAgaW4gdGhlIGRpcmVjdGlvblxuICAgICAgICBjb25zdCBwb3NpdGlvbkFkanVzdG1lbnQgPSBzbGlkZURpcmVjdGlvbiA9PT0gU2xpZGVEaXJlY3Rpb24uTkVYVCA/IHN0ZXAgOiAtc3RlcDtcbiAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyBwb3NpdGlvbkFkanVzdG1lbnQ7XG5cbiAgICAgICAgLy8gSWYgY2Fyb3VzZWwgc2V0IHRvIGxvb3BcbiAgICAgICAgaWYgKHRoaXMubG9vcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9IHRoaXMuc2xpZGVzLmxlbmd0aCArIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPj0gdGhpcy5zbGlkZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggJSB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9idXR0b25WaXNpYmlsaXR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBIYW5kbGVzIG5hdmlnYXRpb24gYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBwcml2YXRlIF9idXR0b25WaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubG9vcCkge1xuICAgICAgICAgICAgLy8gTmVlZCB0byBkaXNhYmxlIG5hdmlnYXRpb24gYnV0dG9uIGlmIGVpdGhlciBkaXJlY3Rpb24gbGltaXQgaGFzIHJlYWNoZWQuXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGVmdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXMubGVuZ3RoIC0gMSA9PT0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudCA+IDEgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ICsgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudCA+PSB0aGlzLnNsaWRlcy5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubGVmdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zbGlkZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBIYW5kbGUgd2hlbiBzbGlkZSBpcyBhZGRlZCBvciByZW1vdmVkICovXG4gICAgcHJpdmF0ZSBfb25TbGlkZVVwZGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NsaWRlc0NvcHkgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggPSAwO1xuICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuaW5pdGlhbGlzZSh0aGlzLl9jb25maWcsIHRoaXMuc2xpZGVzLCB0aGlzLnNsaWRlQ29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmFjdGl2ZSA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZVkoMHB4KScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScsICd0cmFuc2xhdGVYKDBweCknKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ2Fyb3VzZWwoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEluaXRpYWxpemUgY2Fyb3VzZWwgd2l0aCB2aXNpYmxlIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUNhcm91c2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl96b25lLm9uTWljcm90YXNrRW1wdHkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLy8gSGFuZGxlcyBuYXZpZ2F0b3IgYnV0dG9uIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGVcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvblZpc2liaWxpdHkoKTtcbiAgICAgICAgICAgIGxldCBhcnJheUxlbmd0aDogbnVtYmVyO1xuICAgICAgICAgICAgLy8gc2V0IHBhZ2UgaW5kaWNhdG9yIGNvdW50IHdpdGggZmFrZSBhcnJheSwgdG8gdXNlIGluIHRlbXBsYXRlXG4gICAgICAgICAgICBpZiAodGhpcy5sb29wICYmIHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgbG9vcCB3aXRoIG11bHRpIGl0ZW0gdmlzaWJsZS5cbiAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCA9IHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXJyYXlMZW5ndGggPSB0aGlzLnNsaWRlcy5sZW5ndGggLSB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50ICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRpY2F0b3JzSWZaZXJvQ291bnQgPSB0aGlzLnNsaWRlcy5sZW5ndGggPT09IDAgPyAwIDogMTtcbiAgICAgICAgICAgIHRoaXMucGFnZUluZGljYXRvcnNDb3VudEFycmF5ID0gbmV3IEFycmF5KGFycmF5TGVuZ3RoID4gMCA/IGFycmF5TGVuZ3RoIDogcGFnZUluZGljYXRvcnNJZlplcm9Db3VudCk7XG4gICAgICAgICAgICB0aGlzLl9nb1RvRmlyc3RJdGVtKCk7XG4gICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKChfc2xpZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBpbmRleCA+PSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ICYmXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IDwgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgX3NsaWRlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX3NsaWRlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nb1RvRmlyc3RJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnBhZ2VJbmRpY2F0b3JzQ291bnRBcnJheS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5jdXJyZW50VHJhbnNpdGlvblB4ICE9PSAwICYmXG4gICAgICAgICAgICB0aGlzLnNsaWRlcy5sZW5ndGggPiAxXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9IDA7XG4gICAgICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuZ29Ub0l0ZW0odGhpcy5zbGlkZXMuZmlyc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gSW5pdGlhbGl6ZSBjb25maWcgZm9yIENhcm91c2VsIHNlcnZpY2UgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplU2VydmljZUNvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZmlnLnZlcnRpY2FsID0gdGhpcy52ZXJ0aWNhbDtcbiAgICAgICAgdGhpcy5fY29uZmlnLmVsZW1lbnRzQXRPbmNlID0gdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudDtcbiAgICAgICAgdGhpcy5fY29uZmlnLmdlc3R1cmVTdXBwb3J0ID0gdGhpcy5zd2lwZUVuYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NvbmZpZy5pbmZpbml0ZSA9IHRoaXMubG9vcDtcbiAgICAgICAgdGhpcy5fY29uZmlnLnRyYW5zaXRpb24gPSBTdHJpbmcodGhpcy5zbGlkZVRyYW5zaXRpb25EdXJhdGlvbikgKyAnbXMnO1xuICAgICAgICAvLyBDYXJvdXNlbCBzZXJ2aWNlIGV4cGVjdHMgdHJhbnNpdGlvbiBpbiBzdHJpbmcgZm9ybWF0IHdpdGggdW5pdC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFJldHVybnMgdGhlIHNsaWRlIHN3YXBwaW5nIHN0ZXBzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RlcFRha2VuKGV2ZW50OiBQYW5FbmRPdXRwdXQsIGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGxldCBzdGVwc0NhbGN1bGF0ZWQ6IG51bWJlcjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKCF0aGlzLl9pc1J0bCgpICYmIGV2ZW50LmFmdGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMuX2lzUnRsKCkgJiYgIWV2ZW50LmFmdGVyICYmICF0aGlzLnZlcnRpY2FsKSB8fFxuICAgICAgICAgICAgKHRoaXMudmVydGljYWwgJiYgZXZlbnQuYWZ0ZXIpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXggPT09IDAgJiYgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHN0ZXBzQ2FsY3VsYXRlZCA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXggPiB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgc3RlcHNDYWxjdWxhdGVkID0gYWN0dWFsQWN0aXZlU2xpZGVJbmRleCAtIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0ZXBzQ2FsY3VsYXRlZCA9IHRoaXMuc2xpZGVzLmxlbmd0aCAtIHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyBhY3R1YWxBY3RpdmVTbGlkZUluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlLCB3aGVuIGZpcnN0IGxlZnQgc3dpcGUgYmVmb3JlIHNsaWRlcyBhcmUgcm90YXRlZCBpbiBjYXJvdXNlbCBzZXJ2aWNlXG4gICAgICAgICAgICBpZiAoYWN0dWFsQWN0aXZlU2xpZGVJbmRleCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc3RlcHNDYWxjdWxhdGVkID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0dWFsQWN0aXZlU2xpZGVJbmRleCA8IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBzdGVwc0NhbGN1bGF0ZWQgPSB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4IC0gYWN0dWFsQWN0aXZlU2xpZGVJbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RlcHNDYWxjdWxhdGVkID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCArIHRoaXMuc2xpZGVzLmxlbmd0aCAtIGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0ZXBzQ2FsY3VsYXRlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBIYW5kbGVzIG5vdGlmaWNhdGlvbiBvbiB2aXNpYmxlIHNsaWRlIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX25vdGlmeVNsaWRlQ2hhbmdlKHNsaWRlRGlyZWN0aW9uOiBTbGlkZURpcmVjdGlvbiwgZmlyc3RBY3RpdmVTbGlkZT86IENhcm91c2VsSXRlbUludGVyZmFjZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlU2xpZGVzOiBDYXJvdXNlbEl0ZW1Db21wb25lbnRbXSA9IFtdO1xuICAgICAgICBsZXQgZmlyc3RBY3RpdmVTbGlkZUluZGV4OiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLmxvb3ApIHtcbiAgICAgICAgICAgIGZpcnN0QWN0aXZlU2xpZGUgPSB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuYWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdEFjdGl2ZVNsaWRlKSB7XG4gICAgICAgICAgICBmaXJzdEFjdGl2ZVNsaWRlSW5kZXggPSB0aGlzLnNsaWRlcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IGZpcnN0QWN0aXZlU2xpZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlyc3RBY3RpdmVTbGlkZUluZGV4ID0gdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBhY3RpdmVTbGlkZUluZGV4ID0gMDsgYWN0aXZlU2xpZGVJbmRleCA8IHRoaXMuX3Zpc2libGVTbGlkZXNOdW1lcmljQ291bnQ7IGFjdGl2ZVNsaWRlSW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBmaXJzdEFjdGl2ZVNsaWRlSW5kZXggKyBhY3RpdmVTbGlkZUluZGV4O1xuICAgICAgICAgICAgY29uc3Qgc2xpZGUgPSB0aGlzLnNsaWRlcy5nZXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKHNsaWRlKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlU2xpZGVzLnB1c2goc2xpZGUpO1xuICAgICAgICAgICAgICAgIHNsaWRlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWFuYWdlU2xpZGVWaXNpYmlsaXR5KGZpcnN0QWN0aXZlU2xpZGVJbmRleCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNsaWRlRGlyZWN0aW9uID09PSBTbGlkZURpcmVjdGlvbi5ORVhUID8gJ05leHQnIDogJ1ByZXZpb3VzJztcbiAgICAgICAgdGhpcy5zbGlkZUNoYW5nZS5lbWl0KG5ldyBDYXJvdXNlbEFjdGl2ZVNsaWRlcyhhY3RpdmVTbGlkZXMsIGRpcmVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1hbmFnZXMgdmlzaWJpbGl0eSBmb3Igc2xpZGVzLiBVc2VmdWwgaW4gbWFuYWdpbmcgdGFiIG9yZGVyICovXG4gICAgcHJpdmF0ZSBfbWFuYWdlU2xpZGVWaXNpYmlsaXR5KGZpcnN0QWN0aXZlU2xpZGVJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaCgoX3NsaWRlcywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gZmlyc3RBY3RpdmVTbGlkZUluZGV4ICYmIGluZGV4IDwgZmlyc3RBY3RpdmVTbGlkZUluZGV4ICsgdGhpcy5fdmlzaWJsZVNsaWRlc051bWVyaWNDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3NsaWRlcy52aXNpYmlsaXR5ID09PSAnaGlkZGVuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3NsaWRlcy52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9zbGlkZXMudmlzaWJpbGl0eSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfc2xpZGVzLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIHRoaXMuc2xpZGVUcmFuc2l0aW9uRHVyYXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hEaXJlY3Rpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpciA9IHRoaXMuX2lzUnRsKCkgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmlzUnRsID0gdGhpcy5kaXIgPT09ICdydGwnO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2Nhcm91c2VsU2VydmljZS5pdGVtcyAmJiB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmdvVG9JdGVtKHRoaXMuX2Nhcm91c2VsU2VydmljZS5hY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVmcmVzaERpcmVjdGlvbigpO1xuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiByZWZyZXNoRGlyZWN0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9uIFN3aXBpbmcgb2Ygc2xpZGUsIG1hbmFnZSBwYWdlIGluZGljYXRvciAqL1xuICAgIHByaXZhdGUgX29uU2xpZGVTd2lwZShldmVudDogUGFuRW5kT3V0cHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NsaWRlU3dpcGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZmlyc3RBY3RpdmVTbGlkZSA9IGV2ZW50Lml0ZW07XG4gICAgICAgIGNvbnN0IGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXggPSB0aGlzLl9zbGlkZXNDb3B5LmZpbmRJbmRleCgoX3NsaWRlKSA9PiBfc2xpZGUgPT09IGZpcnN0QWN0aXZlU2xpZGUpO1xuICAgICAgICBjb25zdCBzdGVwVGFrZW4gPSB0aGlzLl9nZXRTdGVwVGFrZW4oZXZlbnQsIGFjdHVhbEFjdGl2ZVNsaWRlSW5kZXgpO1xuICAgICAgICBpZiAoc3RlcFRha2VuID4gMCkge1xuICAgICAgICAgICAgbGV0IHNsaWRlRGlyZWN0aW9uOiBTbGlkZURpcmVjdGlvbjtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNSdGwoKSkge1xuICAgICAgICAgICAgICAgIHNsaWRlRGlyZWN0aW9uID0gZXZlbnQuYWZ0ZXIgPyBTbGlkZURpcmVjdGlvbi5ORVhUIDogU2xpZGVEaXJlY3Rpb24uUFJFVklPVVM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHZlcnRpY2FsIGNhcm91c2VsIHNsaWRlIGRpcmVjdGlvbiBpcyBzYW1lIGluIGx0ciBhbmQgcnRsXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmVydGljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVEaXJlY3Rpb24gPSBldmVudC5hZnRlciA/IFNsaWRlRGlyZWN0aW9uLk5FWFQgOiBTbGlkZURpcmVjdGlvbi5QUkVWSU9VUztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZURpcmVjdGlvbiA9IGV2ZW50LmFmdGVyID8gU2xpZGVEaXJlY3Rpb24uUFJFVklPVVMgOiBTbGlkZURpcmVjdGlvbi5ORVhUO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2FkanVzdEFjdGl2ZUl0ZW1Qb3NpdGlvbihzbGlkZURpcmVjdGlvbiwgc3RlcFRha2VuKTtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmeVNsaWRlQ2hhbmdlKHNsaWRlRGlyZWN0aW9uLCBmaXJzdEFjdGl2ZVNsaWRlKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gTWFraW5nIHNsaWRlcyB2aXNpYmxlIHdoZW4gc2xpZGVzIGFyZSBkcmFnZ2VkLiBPdGhlcndpc2UsIGl0IGxvb3NlcyB0aGUgZWZmZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX29uU2xpZGVEcmFnKGlzRHJhZ2dpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goKF9zbGlkZSkgPT4ge1xuICAgICAgICAgICAgICAgIF9zbGlkZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zbGlkZVN3aXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBBZnRlciBzbGlkZSBsaW1pdCByZWFjaGVkLCBpZiBkcmFnZ2luZyBzdGFydHMgdGhlbiByZXZlcnQgdmlzaWJpbGl0eVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zbGlkZVN3aXBlZCAmJiAhdGhpcy5sb29wKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWFuYWdlU2xpZGVWaXNpYmlsaXR5KHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJlc2l6ZXMgaW5uZXIgY2Fyb3VzZWwgY29udGFpbmVyIHRvIGZpdCBhbGwgaXRlbXMgaW4gdGhlIHZpZXdwb3J0IGFuZCBoaWRlIHRob3NlIHdoaWNoIGFyZSBub3QgZnVsbHkgaW4gaXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVzaXplQ29udGVudENvbnRhaW5lcigpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuc2xpZGVDb250YWluZXIubmF0aXZlRWxlbWVudCksXG4gICAgICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuY2Fyb3VzZWxDb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIHNsaWRlcyB9ID0gdGhpcy5fZ2V0Rml0dGluZ1NsaWRlc0FuZFdpZHRoKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlU2xpZGVzQ291bnQgPT09ICdhdXRvJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92aXNpYmxlU2xpZGVzTnVtZXJpY0NvdW50ID0gc2xpZGVzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbFNsaWRlcyA9IHRoaXMuc2xpZGVzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZGxlU2xpZGVJbmRleCA9IHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW1vdW50IG9mIHNsaWRlcyBpbnN1ZmZpY2llbnQgdG8gZmlsbCB3aG9sZSBjYXJvdXNlbCwgc2xpZGUgYmFjayBhIGJpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyBzbGlkZXMgPiB0b3RhbFNsaWRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGxlU2xpZGVJbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuY3VycmVudEFjdGl2ZVNsaWRlc1N0YXJ0SW5kZXggKyBzbGlkZXMgLSB0b3RhbFNsaWRlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZWVkbGVTbGlkZSA9IHRoaXMuc2xpZGVzLmdldChuZWVkbGVTbGlkZUluZGV4KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4ID0gbmVlZGxlU2xpZGVJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UuYWN0aXZlID0gbmVlZGxlU2xpZGU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVmcmVzaCBjYXJvdXNlbCBjb25maWcgYW5kIHRyYW5zaXRpb24gdG8gdGhlIGN1cnJlbnQgc2xpZGUuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVDYXJvdXNlbCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIG5lZWRsZVNsaWRlICYmIHRoaXMuX2Nhcm91c2VsU2VydmljZS5nb1RvSXRlbShuZWVkbGVTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmeVNsaWRlQ2hhbmdlKFNsaWRlRGlyZWN0aW9uLk5vbmUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zbGlkZXNXcmFwcGVyU2l6ZSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2xpZGVzV3JhcHBlclNpemUgPSB3aWR0aDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2FsY3VsYXRlcyBob3cgbWFueSBzbGlkZXMgY2FuIGJlIHNob3duIHdpdGhpbiBjdXJyZW50IGNhcm91c2VsIHZpZXdwb3J0LlxuICAgICAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIGZpdHRpbmcgc2xpZGVzIGNvdW50IGFuZCB0b3RhbCB3aWR0aCBvZiB0aG9zZSBzbGlkZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0Rml0dGluZ1NsaWRlc0FuZFdpZHRoKCk6IEZpdHRpbmdTbGlkZXNBbmRXaWR0aCB7XG4gICAgICAgIGlmICghdGhpcy5jYXJvdXNlbENvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICBzbGlkZXM6IDFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gdGhpcy5jYXJvdXNlbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZXQgbWF4U2l6ZSA9IDA7XG4gICAgICAgIGxldCBzbGlkZXNDb3VudCA9IDA7XG4gICAgICAgIGNvbnN0IGNhcm91c2VsU2xpZGVzID0gdGhpcy5zbGlkZXMudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1NsaWRlcyA9IGNhcm91c2VsU2xpZGVzLnNwbGljZSgwLCB0aGlzLmN1cnJlbnRBY3RpdmVTbGlkZXNTdGFydEluZGV4KTtcbiAgICAgICAgY29uc3QgZ2V0U2xpZGVzID0gKHNsaWRlczogQ2Fyb3VzZWxJdGVtQ29tcG9uZW50W10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2xpZGUgb2Ygc2xpZGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2xpZGVXaWR0aCA9IHNsaWRlLmdldFdpZHRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFzbGlkZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTaXplID0gbWF4U2l6ZSArIHNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1NpemUgPiB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWF4U2l6ZSA9IG5ld1NpemU7XG4gICAgICAgICAgICAgICAgc2xpZGVzQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZ2V0U2xpZGVzKGNhcm91c2VsU2xpZGVzKTtcblxuICAgICAgICAvLyBJZiB3aXRoIG9mIHRoZSByZXN0IG9mIHRoZSBzbGlkZXMgaXMgbGVzc2VyIHRoYW4gY2Fyb3VzZSdzIHZpZXdwb3J0LCBhZGQgcHJldmlvdXMgc2xpZGVzIHRvIGl0LlxuICAgICAgICBpZiAobWF4U2l6ZSA8IHdpZHRoKSB7XG4gICAgICAgICAgICBnZXRTbGlkZXMocHJldmlvdXNTbGlkZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aDogbWF4U2l6ZSxcbiAgICAgICAgICAgIHNsaWRlczogc2xpZGVzQ291bnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZpc2libGVTbGlkZXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5fdmlzaWJsZVNsaWRlc0NvdW50ICE9PSAnYXV0bycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlU2xpZGVzQ291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzbGlkZXMgfSA9IHRoaXMuX2dldEZpdHRpbmdTbGlkZXNBbmRXaWR0aCgpO1xuICAgICAgICByZXR1cm4gc2xpZGVzO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLWNhcm91c2VsXCJcbiAgICBbY2xhc3MuZmQtY2Fyb3VzZWwtLW5vLW5hdmlnYXRpb25dPVwiIW5hdmlnYXRpb25cIlxuICAgIGRhdGEtcmlkZT1cImNhcm91c2VsXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCJcbiAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuICAgIFthdHRyLmRpcl09XCJkaXJcIlxuICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICNjYXJvdXNlbENvbnRhaW5lclxuICAgIChjbGljayk9XCJfZm9jdXMoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zaG93UGFnZUluZGljYXRvckNvbnRhaW5lciAmJiBwYWdlSW5kaWNhdG9yc09yaWVudGF0aW9uID09PSAndG9wJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUluZGljYXRvckNvbnRhaW5lclwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLWNhcm91c2VsX19jb250ZW50XCJcbiAgICAgICAgW2NsYXNzLmZkLWNhcm91c2VsX19jb250ZW50LS1ob3Jpem9udGFsXT1cIiF2ZXJ0aWNhbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIidmZC1jYXJvdXNlbF9fY29udGVudC0tJyArIGNvbnRlbnRCYWNrZ3JvdW5kXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIl9jb250ZW50U2l6ZVB4XCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2hvd05hdmlnYXRpb25CdXR0b25JbkNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25MZWZ0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgI3NsaWRlQ29udGFpbmVyIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX3NsaWRlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3Nob3dOYXZpZ2F0aW9uQnV0dG9uSW5Db250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uUmlnaHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3Nob3dQYWdlSW5kaWNhdG9yQ29udGFpbmVyICYmIHBhZ2VJbmRpY2F0b3JzT3JpZW50YXRpb24gPT09ICdib3R0b20nXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlSW5kaWNhdG9yQ29udGFpbmVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHJvbGU9XCJyZWdpb25cIiBbYXR0ci5pZF09XCJpZCArICctYWNjZXNzaWJpbGl0eSdcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBkaXI9XCJsdHJcIj5cbiAgICAgICAge3sgc2NyZWVuUmVhZGVyTGFiZWwgfX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BhZ2VJbmRpY2F0b3JDb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLWNhcm91c2VsX19wYWdlLWluZGljYXRvci1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3MuZmQtY2Fyb3VzZWxfX3BhZ2UtaW5kaWNhdG9yLWNvbnRhaW5lci0tbm8tYm9yZGVyXT1cIm5vUGFnaW5hdGlvbkNvbnRhaW5lckJvcmRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIidmZC1jYXJvdXNlbF9fcGFnZS1pbmRpY2F0b3ItY29udGFpbmVyLS0nICsgcGFnZUluZGljYXRvckJhY2tncm91bmRcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zaG93TmF2aWdhdGlvbkJ1dHRvbkluUGFnZUluZGljYXRvckNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbkxlZnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VJbmRpY2F0b3JzXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2hvd05hdmlnYXRpb25CdXR0b25JblBhZ2VJbmRpY2F0b3JDb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25SaWdodFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGFnZUluZGljYXRvcnM+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bWVyaWNJbmRpY2F0b3JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhcm91c2VsX19wYWdlLWluZGljYXRvcnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlSW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhcm91c2VsX190ZXh0XCIgZGlyPVwibHRyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFBhZ2VJbmRpY2F0b3JMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbnVtZXJpY0luZGljYXRvciAmJiBfc2hvd05hdmlnYXRpb25CdXR0b25JblBhZ2VJbmRpY2F0b3JDb250YWluZXJcIj5cbiAgICAgICAgPG9sIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX3BhZ2UtaW5kaWNhdG9yc1wiIFthdHRyLmRpcl09XCJkaXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlSW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdlSW5kaWNhdG9yc0NvdW50QXJyYXk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlLXRvXT1cImkgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY2Fyb3VzZWxfX3BhZ2UtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1jYXJvdXNlbF9fcGFnZS1pbmRpY2F0b3ItLWFjdGl2ZV09XCJpID09PSBjdXJyZW50QWN0aXZlU2xpZGVzU3RhcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvb2w+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbkxlZnQ+XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJmZC1jYXJvdXNlbF9fYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLmZkLWNhcm91c2VsX19idXR0b24tLWxlZnRdPVwiIXZlcnRpY2FsXCJcbiAgICAgICAgW2NsYXNzLmZkLWNhcm91c2VsX19idXR0b24tLXVwXT1cInZlcnRpY2FsXCJcbiAgICAgICAgW3N0eWxlLnotaW5kZXhdPVwiMVwiXG4gICAgICAgIGRhdGEtc2xpZGU9XCJwcmV2aW91c1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvcmVDYXJvdXNlbC5sZWZ0TmF2aWdhdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsZWZ0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCInY29yZUNhcm91c2VsLmxlZnROYXZpZ2F0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICBbZ2x5cGhdPVwidmVydGljYWwgPyAnc2xpbS1hcnJvdy11cCcgOiAnc2xpbS1hcnJvdy1sZWZ0J1wiXG4gICAgPjwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25SaWdodD5cbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImZkLWNhcm91c2VsX19idXR0b25cIlxuICAgICAgICBbY2xhc3MuZmQtY2Fyb3VzZWxfX2J1dHRvbi0tcmlnaHRdPVwiIXZlcnRpY2FsXCJcbiAgICAgICAgW2NsYXNzLmZkLWNhcm91c2VsX19idXR0b24tLWRvd25dPVwidmVydGljYWxcIlxuICAgICAgICBbc3R5bGUuei1pbmRleF09XCIxXCJcbiAgICAgICAgZGF0YS1zbGlkZT1cIm5leHRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidjb3JlQ2Fyb3VzZWwucmlnaHROYXZpZ2F0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwibmV4dCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicmlnaHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cIidjb3JlQ2Fyb3VzZWwucmlnaHROYXZpZ2F0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICBbZ2x5cGhdPVwidmVydGljYWwgPyAnc2xpbS1hcnJvdy1kb3duJyA6ICdzbGltLWFycm93LXJpZ2h0J1wiXG4gICAgPjwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -36,7 +36,7 @@ export class CarouselDirective {
|
|
|
36
36
|
this._carouselService.pickNext();
|
|
37
37
|
}
|
|
38
38
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CarouselDirective, deps: [{ token: i0.ElementRef }, { token: i1.CarouselService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
39
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: CarouselDirective, selector: "[fdCarousel]", inputs: { config: "config", active: "active" }, outputs: { activeChange: "activeChange", dragStateChange: "dragStateChange" }, host: { classAttribute: "fd-carousel_" }, providers: [CarouselService], queries: [{ propertyName: "items", predicate: CarouselItemDirective, descendants: true }], ngImport: i0 }); }
|
|
39
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: CarouselDirective, isStandalone: true, selector: "[fdCarousel]", inputs: { config: "config", active: "active" }, outputs: { activeChange: "activeChange", dragStateChange: "dragStateChange" }, host: { classAttribute: "fd-carousel_" }, providers: [CarouselService], queries: [{ propertyName: "items", predicate: CarouselItemDirective, descendants: true }], ngImport: i0 }); }
|
|
40
40
|
}
|
|
41
41
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CarouselDirective, decorators: [{
|
|
42
42
|
type: Directive,
|
|
@@ -45,7 +45,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
45
45
|
host: {
|
|
46
46
|
class: 'fd-carousel_'
|
|
47
47
|
},
|
|
48
|
-
providers: [CarouselService]
|
|
48
|
+
providers: [CarouselService],
|
|
49
|
+
standalone: true
|
|
49
50
|
}]
|
|
50
51
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.CarouselService }]; }, propDecorators: { config: [{
|
|
51
52
|
type: Input
|
|
@@ -59,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
59
60
|
type: ContentChildren,
|
|
60
61
|
args: [CarouselItemDirective, { descendants: true }]
|
|
61
62
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2Fyb3VzZWwvY2Fyb3VzZWwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFrQixlQUFlLEVBQWdCLE1BQU0sb0JBQW9CLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQVVsRSxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLGNBQWM7SUFDZCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBY0QsY0FBYztJQUNkLFlBQTZCLFdBQXVCLEVBQW1CLGdCQUFpQztRQUEzRSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFtQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBYnhHLG1EQUFtRDtRQUUxQyxpQkFBWSxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUVyRixzR0FBc0c7UUFFN0Ysb0JBQWUsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQU82QixDQUFDO0lBRTVHLGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFFBQVEsQ0FBQyxJQUEyQixFQUFFLE1BQWdCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsWUFBWTtRQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLFFBQVE7UUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQzs4R0FsRFEsaUJBQWlCO2tHQUFqQixpQkFBaUIsb09BSGYsQ0FBQyxlQUFlLENBQUMsZ0RBMEJYLHFCQUFxQjs7MkZBdkI3QixpQkFBaUI7a0JBUjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsY0FBYztxQkFDeEI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7K0hBSUcsTUFBTTtzQkFETCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFVRyxZQUFZO3NCQURwQixNQUFNO2dCQUtFLGVBQWU7c0JBRHZCLE1BQU07Z0JBS1AsS0FBSztzQkFESixlQUFlO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENhcm91c2VsQ29uZmlnLCBDYXJvdXNlbFNlcnZpY2UsIFBhbkVuZE91dHB1dCB9IGZyb20gJy4vY2Fyb3VzZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJvdXNlbEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2Nhcm91c2VsLWl0ZW0uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRDYXJvdXNlbF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1jYXJvdXNlbF8nXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtDYXJvdXNlbFNlcnZpY2VdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKiogQ29uZmlndXJhdGlvbiBmb3IgY2Fyb3VzZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbmZpZzogQ2Fyb3VzZWxDb25maWc7XG5cbiAgICAvKiogSW5pdGlhbCBhY3RpdmUgaXRlbSBvZiBjYXJvdXNlbCwgcG9zaXRpb24gZmlyc3QgKyBvZmZzZXQgKi9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2Fyb3VzZWxTZXJ2aWNlKCk6IENhcm91c2VsU2VydmljZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJvdXNlbFNlcnZpY2U7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IHRocm93biwgd2hlbiBhY3RpdmUgZWxlbWVudCBpcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UGFuRW5kT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFuRW5kT3V0cHV0PigpO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biB3aGVuIGVsZW1lbnQgaXMgZHJhZ2dlZC4gRW1pdHMgXCJ0cnVlXCIgd2hlbiBkcmFnIHN0YXJ0cyBhbmQgXCJmYWxzZVwiIHdoZW4gZHJhZyBlbmRzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGRyYWdTdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKENhcm91c2VsSXRlbURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIGl0ZW1zOiBRdWVyeUxpc3Q8Q2Fyb3VzZWxJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZWFkb25seSBfY2Fyb3VzZWxTZXJ2aWNlOiBDYXJvdXNlbFNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmluaXRpYWxpc2UodGhpcy5jb25maWcsIHRoaXMuaXRlbXMsIHRoaXMuX2VsZW1lbnRSZWYpO1xuXG4gICAgICAgIHRoaXMuX2Nhcm91c2VsU2VydmljZS5hY3RpdmVDaGFuZ2UkLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoZXZlbnQpKTtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmRyYWdTdGF0ZUNoYW5nZSQuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5kcmFnU3RhdGVDaGFuZ2UuZW1pdChldmVudCkpO1xuICAgIH1cblxuICAgIC8qKiBDaGFuZ2UgYWN0aXZlIGVsZW1lbnQgKi9cbiAgICBnb1RvSXRlbShpdGVtOiBDYXJvdXNlbEl0ZW1EaXJlY3RpdmUsIHNtb290aD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLmdvVG9JdGVtKGl0ZW0sIHNtb290aCk7XG4gICAgfVxuXG4gICAgLyoqIFBpY2sgcHJldmlvdXMgY2Fyb3VzZWwgaXRlbSAqL1xuICAgIHBpY2tQcmV2aW91cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2Fyb3VzZWxTZXJ2aWNlLnBpY2tQcmV2aW91cygpO1xuICAgIH1cblxuICAgIC8qKiBQaWNrIG5leHQgY2Fyb3VzZWwgaXRlbSAqL1xuICAgIHBpY2tOZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJvdXNlbFNlcnZpY2UucGlja05leHQoKTtcbiAgICB9XG59XG4iXX0=
|