@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1017 → 1.5.1018-b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/bmb-academic-progress/bmb-academic-progress.component.mjs +4 -4
- package/esm2022/lib/components/bmb-accordion/bmb-accordion.component.mjs +12 -7
- package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +4 -4
- package/esm2022/lib/components/bmb-action-icon/bmb-action-icon.component.mjs +4 -4
- package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +3 -3
- package/esm2022/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.mjs +17 -5
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +5 -5
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +43 -7
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +7 -5
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +50 -25
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.service.mjs +4 -4
- package/esm2022/lib/components/bmb-alert-center/types.mjs +1 -1
- package/esm2022/lib/components/bmb-badge/bmb-badge.component.mjs +3 -3
- package/esm2022/lib/components/bmb-balance-overview/bmb-balance-overview.component.mjs +3 -3
- package/esm2022/lib/components/bmb-bookmark/bmb-bookmark.component.mjs +3 -3
- package/esm2022/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.mjs +4 -4
- package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +6 -7
- package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-event-list/bmb-calendar-template-event-list.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +4 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.mjs +3 -3
- package/esm2022/lib/components/bmb-calendar/utils.mjs +1 -1
- package/esm2022/lib/components/bmb-card/bmb-card.component.mjs +13 -13
- package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +5 -5
- package/esm2022/lib/components/bmb-carousel/bmb-carousel.component.mjs +4 -4
- package/esm2022/lib/components/bmb-chat-bar/bmb-chat-bar.component.mjs +5 -5
- package/esm2022/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.mjs +5 -5
- package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +3 -3
- package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +5 -5
- package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +5 -5
- package/esm2022/lib/components/bmb-container/bmb-container.component.mjs +4 -4
- package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +5 -5
- package/esm2022/lib/components/bmb-date-range/bmb-date-range.component.mjs +5 -5
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.mjs +4 -4
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +5 -5
- package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +3 -3
- package/esm2022/lib/components/bmb-divider/bmb-divider.component.mjs +4 -4
- package/esm2022/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.mjs +4 -4
- package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +5 -5
- package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +3 -3
- package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +22 -6
- package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +5 -5
- package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +3 -3
- package/esm2022/lib/components/bmb-fab/bmb-fab.component.mjs +5 -5
- package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +5 -5
- package/esm2022/lib/components/bmb-focus-element/bmb-focus-element.component.mjs +5 -5
- package/esm2022/lib/components/bmb-form-validation/bmb-form-validation.component.mjs +4 -4
- package/esm2022/lib/components/bmb-form-validator/bmb-form-validator.component.mjs +11 -11
- package/esm2022/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.mjs +10 -6
- package/esm2022/lib/components/bmb-grade-value/bmb-grade-value.component.mjs +7 -6
- package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +4 -4
- package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +3 -3
- package/esm2022/lib/components/bmb-header-mobile/bmb-header-mobile.component.mjs +5 -5
- package/esm2022/lib/components/bmb-hito-card/bmb-hito-card.component.mjs +5 -5
- package/esm2022/lib/components/bmb-hito-list/bmb-hito-list.component.mjs +4 -4
- package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +4 -4
- package/esm2022/lib/components/bmb-home-card/bmb-home-card.component.mjs +5 -5
- package/esm2022/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.mjs +3 -3
- package/esm2022/lib/components/bmb-home-section/bmb-home-section.component.mjs +5 -5
- package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +5 -5
- package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +5 -5
- package/esm2022/lib/components/bmb-icon-status/bmb-icon-status.component.mjs +5 -5
- package/esm2022/lib/components/bmb-iframe/bmb-iframe.component.mjs +3 -3
- package/esm2022/lib/components/bmb-iframe/bmb-iframe.pipe.mjs +3 -3
- package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +3 -3
- package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +3 -3
- package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +5 -5
- package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.component.mjs +4 -4
- package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.service.mjs +4 -4
- package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +10 -10
- package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +5 -5
- package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +9 -9
- package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +5 -5
- package/esm2022/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.mjs +12 -6
- package/esm2022/lib/components/bmb-invoice/bmb-invoice.component.mjs +17 -6
- package/esm2022/lib/components/bmb-item/bmb-item.component.mjs +5 -5
- package/esm2022/lib/components/bmb-legend/bmb-legend.component.mjs +3 -3
- package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +7 -8
- package/esm2022/lib/components/bmb-list-group/bmb-list-group.component.mjs +4 -4
- package/esm2022/lib/components/bmb-list-group/bmb-list-group.service.mjs +4 -4
- package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +4 -4
- package/esm2022/lib/components/bmb-loader/bmb-loader.component.mjs +5 -5
- package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login/bmb-login.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.mjs +3 -3
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.mjs +3 -3
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.mjs +4 -4
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.mjs +3 -3
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.mjs +3 -3
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.mjs +3 -3
- package/esm2022/lib/components/bmb-logo/bmb-logo.component.mjs +5 -5
- package/esm2022/lib/components/bmb-media-card/bmb-media-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.mjs +4 -4
- package/esm2022/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.mjs +3 -3
- package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +5 -5
- package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.mjs +3 -3
- package/esm2022/lib/components/bmb-notice-card/bmb-notice-card.component.mjs +3 -3
- package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-overlay/bmb-overlay.component.mjs +4 -4
- package/esm2022/lib/components/bmb-paginator/bmb-paginator.component.mjs +4 -4
- package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +4 -4
- package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +7 -7
- package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +5 -5
- package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.mjs +6 -6
- package/esm2022/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.mjs +4 -4
- package/esm2022/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.mjs +4 -4
- package/esm2022/lib/components/bmb-push-notification/bmb-push-notification.component.mjs +4 -4
- package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +5 -5
- package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +5 -5
- package/esm2022/lib/components/bmb-select/bmb-select-item/bmb-select-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-select/bmb-select.component.mjs +4 -4
- package/esm2022/lib/components/bmb-server-table/bmb-server-table.component.mjs +4 -4
- package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-simple-header/bmb-simple-header.component.mjs +3 -3
- package/esm2022/lib/components/bmb-skeleton/bmb-skeleton.component.mjs +3 -3
- package/esm2022/lib/components/bmb-sounds-card/bmb-sounds-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-stat-counter/bmb-stat-counter.component.mjs +3 -3
- package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +4 -4
- package/esm2022/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.mjs +4 -4
- package/esm2022/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.mjs +3 -3
- package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +5 -5
- package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +5 -5
- package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +26 -16
- package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +5 -5
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +4 -4
- package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +8 -9
- package/esm2022/lib/components/bmb-theme/bmb-theme.component.mjs +4 -4
- package/esm2022/lib/components/bmb-three-cols/bmb-three-cols.component.mjs +3 -3
- package/esm2022/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.mjs +4 -4
- package/esm2022/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.mjs +3 -3
- package/esm2022/lib/components/bmb-timestream/bmb-timestream.component.mjs +5 -5
- package/esm2022/lib/components/bmb-timestream/types.mjs +1 -1
- package/esm2022/lib/components/bmb-timestream-card/bmb-timestream-card.component.mjs +5 -5
- package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +5 -5
- package/esm2022/lib/components/bmb-toast/bmb-toast.component.mjs +4 -4
- package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +5 -5
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.mjs +3 -3
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +5 -5
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +5 -5
- package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +5 -5
- package/esm2022/lib/components/bmb-user-image/bmb-user-image.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-profile/bmb-user-profile.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +3 -3
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +3 -3
- package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +3 -3
- package/esm2022/lib/components/bmb-web-templates/bmb-web-templates.component.mjs +3 -3
- package/esm2022/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.mjs +4 -4
- package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +4 -4
- package/esm2022/lib/directives/bmb-accordion/bmb-accordion-control.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-button/button.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-button-group/bmb-button-group.directive.mjs +3 -3
- package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +3 -3
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.mjs +4 -4
- package/esm2022/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.mjs +7 -7
- package/esm2022/lib/directives/utils/clickoutside.directive.mjs +3 -3
- package/esm2022/lib/ds-ng.component.mjs +3 -3
- package/esm2022/lib/ds-ng.service.mjs +3 -3
- package/esm2022/lib/services/calendar.service.mjs +3 -3
- package/esm2022/lib/services/notification.service.mjs +3 -3
- package/esm2022/lib/services/tabs.service.mjs +3 -3
- package/esm2022/lib/services/theme.service.mjs +3 -3
- package/esm2022/lib/services/toast.service.mjs +3 -3
- package/esm2022/lib/services/user/profile.service.mjs +3 -3
- package/esm2022/lib/types/index.mjs +1 -1
- package/esm2022/lib/utils/dropdown.mjs +1 -1
- package/esm2022/lib/utils/formControl.mjs +1 -1
- package/esm2022/lib/utils/timestreamFilters.mjs +1 -1
- package/esm2022/lib/utils/utils.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +790 -672
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
- package/lib/components/bmb-accordion/bmb-accordion.component.d.ts +3 -1
- package/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.d.ts +3 -2
- package/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.d.ts +6 -3
- package/lib/components/bmb-alert-center/bmb-alert-center.component.d.ts +6 -11
- package/lib/components/bmb-alert-center/types.d.ts +16 -2
- package/lib/components/bmb-button-icon/bmb-button-icon.component.d.ts +3 -1
- package/lib/components/bmb-container-button/bmb-container-button.component.d.ts +2 -2
- package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +4 -1
- package/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.d.ts +3 -1
- package/lib/components/bmb-grade-value/bmb-grade-value.component.d.ts +3 -1
- package/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.d.ts +3 -1
- package/lib/components/bmb-invoice/bmb-invoice.component.d.ts +4 -1
- package/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.d.ts +3 -1
- package/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.d.ts +1 -1
- package/lib/components/bmb-tabs/bmb-tabs.component.d.ts +5 -2
- package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +1 -1
- package/lib/types/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -356,8 +356,8 @@ export class BmbTablesComponent {
|
|
|
356
356
|
toggleFilters() {
|
|
357
357
|
this.filtersVisible = !this.filtersVisible;
|
|
358
358
|
}
|
|
359
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
360
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbTablesComponent, isStandalone: true, selector: "bmb-table", inputs: { showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, showFilters: { classPropertyName: "showFilters", publicName: "showFilters", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, actionTemplate: { classPropertyName: "actionTemplate", publicName: "actionTemplate", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, detailTemplate: { classPropertyName: "detailTemplate", publicName: "detailTemplate", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, initialTableSelection: { classPropertyName: "initialTableSelection", publicName: "initialTableSelection", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, clearSelection: { classPropertyName: "clearSelection", publicName: "clearSelection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearSelection: "clearSelectionChange", select: "select", clickedRow: "clickedRow" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matTableRef", first: true, predicate: MatTable, descendants: true, read: ElementRef }, { propertyName: "headerCellRef", first: true, predicate: ["headerCellRef"], descendants: true }, { propertyName: "cellRef", first: true, predicate: ["cellRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (showSearch() || showFilters()) {\r\n <div class=\"bmb_table-header\">\r\n @if (showSearch()) {\r\n <bmb-input\r\n class=\"bmb_table-search\"\r\n [type]=\"'text'\"\r\n [placeholder]=\"'Buscar'\"\r\n [disabled]=\"false\"\r\n [icon]=\"'search'\"\r\n [appearance]=\"'normal'\"\r\n [control]=\"searchControl\"\r\n ></bmb-input>\r\n }\r\n\r\n @if (showFilters()) {\r\n <bmb-action-icon\r\n [idElement]=\"''\"\r\n [icon]=\"'filter_list'\"\r\n [iconSize]=\"24\"\r\n (buttonClick)=\"toggleFilters()\"\r\n ></bmb-action-icon>\r\n\r\n <div class=\"bmb_table-filters\" *ngIf=\"filtersVisible\">\r\n <ng-container *ngFor=\"let column of tableColumns\">\r\n <div [ngSwitch]=\"column.type\" class=\"bmb_table-filter-item\">\r\n <!-- STRING -->\r\n <ng-container *ngSwitchCase=\"'string'\">\r\n <bmb-dropdown\r\n [isMultiSelect]=\"false\"\r\n [label]=\"column.label\"\r\n [options]=\"[\r\n { name: 'Sin orden', value: 'none', id: 'none' },\r\n { name: 'A-Z', value: 'asc', id: 'asc' },\r\n { name: 'Z-A', value: 'desc', id: 'desc' },\r\n ]\"\r\n [placeholder]=\"'Ordenar'\"\r\n [value]=\"getFormControl(column.dataKey + '_sort').value\"\r\n (onValueChange)=\"\r\n getFormControl(column.dataKey + '_sort').setValue($event)\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <!-- NUMBER -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"filter-number\">\r\n <bmb-input\r\n [label]=\"column.label\"\r\n [type]=\"'number'\"\r\n [placeholder]=\"'M\u00EDn'\"\r\n [appearance]=\"'normal'\"\r\n [control]=\"getFormControl(column.dataKey + '_min')\"\r\n />\r\n <bmb-input\r\n [type]=\"'number'\"\r\n [placeholder]=\"'M\u00E1x'\"\r\n [appearance]=\"'normal'\"\r\n [control]=\"getFormControl(column.dataKey + '_max')\"\r\n />\r\n </div>\r\n </ng-container>\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <bmb-date-range\r\n [label]=\"column.label\"\r\n [placeholderStartDate]=\"'Desde'\"\r\n [placeholderEndDate]=\"'Hasta'\"\r\n [icon]=\"'calendar_month'\"\r\n [appearance]=\"'normal'\"\r\n [dateFormat]=\"'dd/MM/yyyy'\"\r\n [multipleRow]=\"true\"\r\n [controlStart]=\"getFormControl(column.dataKey + '_from')\"\r\n [controlEnd]=\"getFormControl(column.dataKey + '_to')\"\r\n (startDateChange)=\"\r\n getFormControl(column.dataKey + '_from').setValue($event)\r\n \"\r\n (endDateChange)=\"\r\n getFormControl(column.dataKey + '_to').setValue($event)\r\n \"\r\n />\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n}\r\n<div class=\"bmb_table\">\r\n <div class=\"bmb_table-container\">\r\n <table\r\n mat-table\r\n [dataSource]=\"dataSource\"\r\n class=\"bmb_table-content\"\r\n multiTemplateDataRows\r\n >\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"select\" sticky>\r\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-checkbox\">\r\n <bmb-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n [ariaLabel]=\"checkboxLabel()\"\r\n [disabled]=\"false\"\r\n />\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-checkbox\">\r\n <bmb-checkbox\r\n (change)=\"$event ? selection.toggle(row) : null; onSelect()\"\r\n [checked]=\"selection.isSelected(row)\"\r\n [ariaLabel]=\"checkboxLabel(row)\"\r\n [disabled]=\"false\"\r\n onkeypress=\"$event.stopPropagation()\"\r\n />\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expand Column -->\r\n <ng-container matColumnDef=\"expand\" sticky>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"bmb_table-expand\"\r\n aria-label=\"row actions\"\r\n >\r\n \r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-expand\">\r\n <ng-container *ngIf=\"row.detail\">\r\n <button\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"\r\n expandedElement = expandedElement === row ? null : row;\r\n $event.stopPropagation()\r\n \"\r\n >\r\n <bmb-icon\r\n [icon]=\"expandedElement === row ? 'expand_less' : 'expand_more'\"\r\n />\r\n </button>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Display Columns -->\r\n @for (column of tableColumns; track column; let i = $index) {\r\n <ng-container [matColumnDef]=\"column.def\" [sticky]=\"i === 0\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n #headerCell\r\n [matTooltip]=\"hasEllipsis(headerCell) ? column.label : ''\"\r\n matTooltipPosition=\"below\"\r\n matTooltipClass=\"bmb_tooltip\"\r\n [ngClass]=\"{\r\n 'bmb_table-sticky': i === 0,\r\n truncated: truncate(),\r\n wrapped: wrap(),\r\n }\"\r\n >\r\n <!-- T\u00EDtulo -->\r\n @if (column.htmlLabel) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.htmlLabel\"\r\n [ngTemplateOutletContext]=\"{ column: column, index: i }\"\r\n ></ng-template>\r\n } @else {\r\n {{ this.lang() === \"es\" ? column.label : column.labelEn }}\r\n }\r\n\r\n <!-- Resize Handle -->\r\n <span\r\n class=\"bmb_table-resize\"\r\n (mousedown)=\"onResizeColumn($event, i)\"\r\n ></span>\r\n </th>\r\n\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row; let a = index\"\r\n #cell\r\n [matTooltip]=\"hasEllipsis(cell) ? row[column.dataKey] : ''\"\r\n tooltipClass=\"bmb_tooltip\"\r\n [ngClass]=\"getCellClasses(row, column.dataKey, i)\"\r\n >\r\n @if (isTemplateRef(row[column.dataKey + \"Template\"])) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"row[column.dataKey + 'Template']\"\r\n [ngTemplateOutletContext]=\"{ row: row }\"\r\n ></ng-template>\r\n } @else {\r\n {{ row[column.dataKey]?.propertyName || row[column.dataKey] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <!-- Actions Column -->\r\n <ng-container matColumnDef=\"actions\" stickyEnd>\r\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-actions\"></th>\r\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-actions\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"actionTemplate()!\"\r\n [ngTemplateOutletContext]=\"{ row: row }\"\r\n >\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Row to expand -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row\"\r\n [attr.colspan]=\"tableDisplayColumns.length\"\r\n >\r\n <div\r\n class=\"bmb_table-detail\"\r\n [@detailExpand]=\"row == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"detailTemplate(); context: { row: row }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Rows -->\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"tableDisplayColumns\"\r\n class=\"bmb_table-row\"\r\n ></tr>\r\n\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: tableDisplayColumns; let i = dataIndex\"\r\n (click)=\"onSelectRow(row)\"\r\n class=\"bmb_table-row\"\r\n [class.bmb_table-expandible]=\"expandedElement === row\"\r\n [ngClass]=\"{\r\n 'bmb_table-even': isEven(i),\r\n 'bmb_table-odd': isOdd(i),\r\n }\"\r\n ></tr>\r\n\r\n <ng-container *ngIf=\"tableConfig?.isExpandible\">\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: ['expandedDetail']; let i = dataIndex\"\r\n class=\"bmb_table-details\"\r\n [class.bmb_table-expanded]=\"expandedElement === row\"\r\n ></tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <!-- Paginator -->\r\n <ng-container *ngIf=\"tableConfig?.isPaginable\" sticky>\r\n <mat-paginator\r\n #paginator\r\n [pageSize]=\"this.pageSize()\"\r\n [hidePageSize]=\"true\"\r\n >\r\n </mat-paginator>\r\n\r\n <div class=\"bmb_table-paginator\">\r\n <span class=\"bmb_table-paginator-text\">{{ getPaginationText() }}</span>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasPreviousPage(),\r\n }\"\r\n (click)=\"paginator.firstPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon\r\n icon=\"keyboard_double_arrow_left\"\r\n class=\"bmb_table-paginator-icon\"\r\n />\r\n </button>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasPreviousPage(),\r\n }\"\r\n (click)=\"paginator.previousPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon icon=\"keyboard_arrow_left\" class=\"bmb_table-paginator-icon\" />\r\n </button>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasNextPage(),\r\n }\"\r\n (click)=\"paginator.nextPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon\r\n icon=\"keyboard_arrow_right\"\r\n class=\"bmb_table-paginator-icon\"\r\n />\r\n </button>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasNextPage(),\r\n }\"\r\n (click)=\"paginator.lastPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon\r\n icon=\"keyboard_double_arrow_right\"\r\n class=\"bmb_table-paginator-icon\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_table{background:var(--containers-modal);border-collapse:collapse;box-shadow:var(--bmb-box-shadow-3);display:flex;flex-direction:column;padding:1.5rem 1rem;width:100%}.bmb_table-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;flex-flow:row wrap;gap:1rem}.bmb_table-search{flex:1}.bmb_table-filters{width:100%}.bmb_table-container{flex:1 0 auto;max-width:100%;overflow:auto;width:100%}.bmb_table-content{width:100%}.bmb_table-row.mat-mdc-row{height:2.875rem}.bmb_table-row>td,.bmb_table-row>th{height:100%;overflow:hidden;padding:0 .5rem}.bmb_table-row>td.truncated,.bmb_table-row>th.truncated{max-width:6.25rem;min-width:4.375rem;text-overflow:ellipsis;white-space:nowrap}.bmb_table-row>td.wrapped,.bmb_table-row>th.wrapped{white-space:nowrap}@media (min-width: 768px){.bmb_table-row>td,.bmb_table-row>th{max-width:fit-content}}.bmb_table-row>td.bmb_table-checkbox,.bmb_table-row>th.bmb_table-checkbox{min-width:3.875rem;padding-right:0;text-align:center;width:3.875rem}.bmb_table-row>td.bmb_table-checkbox+.bmb_table-sticky,.bmb_table-row>th.bmb_table-checkbox+.bmb_table-sticky{left:3.625rem!important}.bmb_table-row>td.bmb_table-expand,.bmb_table-row>th.bmb_table-expand{min-width:2.5rem;width:2.5rem}.bmb_table-row>td.bmb_table-expand+.bmb_table-sticky,.bmb_table-row>th.bmb_table-expand+.bmb_table-sticky{left:6.125rem!important}.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{border-right:.0625rem solid var(--buttons-inactive-step);max-width:9rem}@media (min-width: 1200px){.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{max-width:fit-content}}.bmb_table-row>td.bmb_table-actions,.bmb_table-row>th.bmb_table-actions{border-left:.0625rem solid var(--buttons-inactive-step);color:var(--color-table-90)}.bmb_table-row>td button,.bmb_table-row>th button{align-items:center;color:var(--color-table-90);display:flex}.bmb_table-row>th{border-bottom:0;color:RGBA(var(--color-charade-500));overflow:inherit;position:relative;text-transform:uppercase;font-family:Poppins-Medium,sans-serif;font-size:.875rem}.bmb_table-row>th.mat-mdc-header-cell{background-color:var(--containers-modal)}.bmb_table-row>td{font-family:Poppins-Medium,sans-serif;font-size:.875rem;border-bottom-color:var(--general_contrasts-25);border-bottom-style:dashed}.bmb_table-row>td.bmb_table-actions .action-container{display:flex}.bmb_table-row>td.bmb_table-actions .action-container bmb-icon{font-size:1.125rem}.bmb_table-row>td .mat-mdc-icon-button{align-items:center;display:flex;height:auto;padding:0;width:auto}.bmb_table-row>td .mat-mdc-icon-button bmb-icon{font-size:1.5rem}.bmb_table-even.mat-mdc-row{background-color:var(--containers-modal);color:var(--menu_select-label-menu-inactive)}.bmb_table-even.mat-mdc-row.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-odd.mat-mdc-row{background-color:var(--general_contrasts-15);color:var(--vertical-step-active-color)}.bmb_table-odd.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-details.mat-mdc-row{background-color:var(--menu_select-on-surface-hovered-w-checkbox);height:0}.bmb_table-details.mat-mdc-row>td{border:0;padding:0 1rem}.bmb_table-details.mat-mdc-row.bmb_table-expanded>td{border-bottom:.0625rem dashed var(--general_contrasts-25);padding:1rem}.bmb_table-detail{color:var(--general_contrasts-75);display:flex;overflow:hidden}.bmb_table-detail>bmb-table{width:100%}.bmb_table-resize{border-right:.0625rem solid var(--general_contrasts-25);cursor:col-resize;display:inline-block;height:100%;opacity:0;position:absolute;right:0;top:0}.bmb_table-resize:hover{opacity:1;width:1.25rem}.bmb_table .mat-mdc-paginator{display:none}.bmb_table-paginator{align-items:center;bottom:0;display:flex;height:3rem;justify-content:flex-end;margin:.5rem 0;position:sticky;right:0;z-index:10}.bmb_table-paginator-text{color:var(--general_contrasts-75);margin-right:2rem;font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_table-paginator-btn{color:var(--color-table-btn-900);height:3rem;padding:0;width:3rem}.bmb_table-paginator-btn-disabled{color:var(--buttons-inactive-step);cursor:not-allowed}.bmb_table-paginator-icon{font-size:1.5rem}.bmb_table bmb-checkbox{display:block;height:1.5rem}.bmb_table bmb-checkbox .bmb_checkbox-mark{margin:0}.bmb_table-success{color:var(--semantic-success)}.bmb_table-error{color:var(--semantic-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "size", "max", "min", "id", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "component", type: BmbDropdownComponent, selector: "bmb-dropdown", inputs: ["required", "showIcon", "placeholder", "icon", "options", "helperText", "errorMessage", "label", "name", "preferredOptions", "isMultiSelect", "tooltip", "tooltipPosition", "disabled", "value", "isFilterable", "inputId", "control"], outputs: ["controlChange", "onValueChange", "onFocus"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: BmbDateRangeComponent, selector: "bmb-date-range", inputs: ["inputId", "label", "labelStartDate", "labelEndDate", "icon", "invalidFormatErrorMessage", "requiredFieldErrorMessage", "appearance", "disabled", "isRequired", "isClearable", "controlStart", "controlEnd", "dateFormat", "placeholderStartDate", "placeholderEndDate", "stepYearPicker", "name", "multipleRow"], outputs: ["controlStartChange", "controlEndChange"] }, { kind: "component", type: BmbActionIconComponent, selector: "bmb-action-icon", inputs: ["idElement", "icon", "alt", "iconSize", "isFill", "toggleIconActive", "isToggleActive", "isAccentColor", "dotNotification", "target", "link", "disabled"], outputs: ["isToggleActiveChange", "isAccentColorChange", "buttonPress", "buttonClick"] }], animations: [
|
|
359
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbTablesComponent, deps: [{ token: i0.Renderer2 }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BmbTablesComponent, isStandalone: true, selector: "bmb-table", inputs: { showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, showFilters: { classPropertyName: "showFilters", publicName: "showFilters", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, actionTemplate: { classPropertyName: "actionTemplate", publicName: "actionTemplate", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, detailTemplate: { classPropertyName: "detailTemplate", publicName: "detailTemplate", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, initialTableSelection: { classPropertyName: "initialTableSelection", publicName: "initialTableSelection", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, clearSelection: { classPropertyName: "clearSelection", publicName: "clearSelection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearSelection: "clearSelectionChange", select: "select", clickedRow: "clickedRow" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matTableRef", first: true, predicate: MatTable, descendants: true, read: ElementRef }, { propertyName: "headerCellRef", first: true, predicate: ["headerCellRef"], descendants: true }, { propertyName: "cellRef", first: true, predicate: ["cellRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (showSearch() || showFilters()) {\n <div class=\"bmb_table-header\">\n @if (showSearch()) {\n <bmb-input\n class=\"bmb_table-search\"\n [type]=\"'text'\"\n [placeholder]=\"'Buscar'\"\n [disabled]=\"false\"\n [icon]=\"'search'\"\n [appearance]=\"'normal'\"\n [control]=\"searchControl\"\n ></bmb-input>\n }\n\n @if (showFilters()) {\n <bmb-action-icon\n [idElement]=\"''\"\n [icon]=\"'filter_list'\"\n [iconSize]=\"24\"\n (buttonClick)=\"toggleFilters()\"\n ></bmb-action-icon>\n\n <div class=\"bmb_table-filters\" *ngIf=\"filtersVisible\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div [ngSwitch]=\"column.type\" class=\"bmb_table-filter-item\">\n <!-- STRING -->\n <ng-container *ngSwitchCase=\"'string'\">\n <bmb-dropdown\n [isMultiSelect]=\"false\"\n [label]=\"column.label\"\n [options]=\"[\n { name: 'Sin orden', value: 'none', id: 'none' },\n { name: 'A-Z', value: 'asc', id: 'asc' },\n { name: 'Z-A', value: 'desc', id: 'desc' },\n ]\"\n [placeholder]=\"'Ordenar'\"\n [value]=\"getFormControl(column.dataKey + '_sort').value\"\n (onValueChange)=\"\n getFormControl(column.dataKey + '_sort').setValue($event)\n \"\n />\n </ng-container>\n\n <!-- NUMBER -->\n <ng-container *ngSwitchCase=\"'number'\">\n <div class=\"filter-number\">\n <bmb-input\n [label]=\"column.label\"\n [type]=\"'number'\"\n [placeholder]=\"'M\u00EDn'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_min')\"\n />\n <bmb-input\n [type]=\"'number'\"\n [placeholder]=\"'M\u00E1x'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_max')\"\n />\n </div>\n </ng-container>\n\n <!-- DATE -->\n <ng-container *ngSwitchCase=\"'date'\">\n <bmb-date-range\n [label]=\"column.label\"\n [placeholderStartDate]=\"'Desde'\"\n [placeholderEndDate]=\"'Hasta'\"\n [icon]=\"'calendar_month'\"\n [appearance]=\"'normal'\"\n [dateFormat]=\"'dd/MM/yyyy'\"\n [multipleRow]=\"true\"\n [controlStart]=\"getFormControl(column.dataKey + '_from')\"\n [controlEnd]=\"getFormControl(column.dataKey + '_to')\"\n (startDateChange)=\"\n getFormControl(column.dataKey + '_from').setValue($event)\n \"\n (endDateChange)=\"\n getFormControl(column.dataKey + '_to').setValue($event)\n \"\n />\n </ng-container>\n </div>\n </ng-container>\n </div>\n }\n </div>\n}\n<div class=\"bmb_table\">\n <div class=\"bmb_table-container\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n class=\"bmb_table-content\"\n multiTemplateDataRows\n >\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\" sticky>\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [ariaLabel]=\"checkboxLabel()\"\n [disabled]=\"false\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? selection.toggle(row) : null; onSelect()\"\n [checked]=\"selection.isSelected(row)\"\n [ariaLabel]=\"checkboxLabel(row)\"\n [disabled]=\"false\"\n onkeypress=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n\n <!-- Expand Column -->\n <ng-container matColumnDef=\"expand\" sticky>\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"bmb_table-expand\"\n aria-label=\"row actions\"\n >\n \n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-expand\">\n <ng-container *ngIf=\"row.detail\">\n <button\n mat-icon-button\n aria-label=\"expand row\"\n (click)=\"\n expandedElement = expandedElement === row ? null : row;\n $event.stopPropagation()\n \"\n >\n <bmb-icon\n [icon]=\"expandedElement === row ? 'expand_less' : 'expand_more'\"\n />\n </button>\n </ng-container>\n </td>\n </ng-container>\n\n <!-- Display Columns -->\n @for (column of tableColumns; track column; let i = $index) {\n <ng-container [matColumnDef]=\"column.def\" [sticky]=\"i === 0\">\n <th\n mat-header-cell\n *matHeaderCellDef\n #headerCell\n [matTooltip]=\"hasEllipsis(headerCell) ? column.label : ''\"\n matTooltipPosition=\"below\"\n matTooltipClass=\"bmb_tooltip\"\n [ngClass]=\"{\n 'bmb_table-sticky': i === 0,\n truncated: truncate(),\n wrapped: wrap(),\n }\"\n >\n <!-- T\u00EDtulo -->\n @if (column.htmlLabel) {\n <ng-template\n [ngTemplateOutlet]=\"column.htmlLabel\"\n [ngTemplateOutletContext]=\"{ column: column, index: i }\"\n ></ng-template>\n } @else {\n {{ this.lang() === \"es\" ? column.label : column.labelEn }}\n }\n\n <!-- Resize Handle -->\n <span\n class=\"bmb_table-resize\"\n (mousedown)=\"onResizeColumn($event, i)\"\n ></span>\n </th>\n\n <td\n mat-cell\n *matCellDef=\"let row; let a = index\"\n #cell\n [matTooltip]=\"hasEllipsis(cell) ? row[column.dataKey] : ''\"\n tooltipClass=\"bmb_tooltip\"\n [ngClass]=\"getCellClasses(row, column.dataKey, i)\"\n >\n @if (isTemplateRef(row[column.dataKey + \"Template\"])) {\n <ng-template\n [ngTemplateOutlet]=\"row[column.dataKey + 'Template']\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n } @else {\n {{ row[column.dataKey]?.propertyName || row[column.dataKey] }}\n }\n </td>\n </ng-container>\n }\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-actions\"></th>\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-actions\">\n <ng-template\n [ngTemplateOutlet]=\"actionTemplate()!\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n >\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Row to expand -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n mat-cell\n *matCellDef=\"let row\"\n [attr.colspan]=\"tableDisplayColumns.length\"\n >\n <div\n class=\"bmb_table-detail\"\n [@detailExpand]=\"row == expandedElement ? 'expanded' : 'collapsed'\"\n >\n <ng-container\n *ngTemplateOutlet=\"detailTemplate(); context: { row: row }\"\n ></ng-container>\n </div>\n </td>\n </ng-container>\n\n <!-- Rows -->\n <tr\n mat-header-row\n *matHeaderRowDef=\"tableDisplayColumns\"\n class=\"bmb_table-row\"\n ></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; columns: tableDisplayColumns; let i = dataIndex\"\n (click)=\"onSelectRow(row)\"\n class=\"bmb_table-row\"\n [class.bmb_table-expandible]=\"expandedElement === row\"\n [ngClass]=\"{\n 'bmb_table-even': isEven(i),\n 'bmb_table-odd': isOdd(i),\n }\"\n ></tr>\n\n <ng-container *ngIf=\"tableConfig?.isExpandible\">\n <tr\n mat-row\n *matRowDef=\"let row; columns: ['expandedDetail']; let i = dataIndex\"\n class=\"bmb_table-details\"\n [class.bmb_table-expanded]=\"expandedElement === row\"\n ></tr>\n </ng-container>\n </table>\n </div>\n\n <!-- Paginator -->\n <ng-container *ngIf=\"tableConfig?.isPaginable\" sticky>\n <mat-paginator\n #paginator\n [pageSize]=\"this.pageSize()\"\n [hidePageSize]=\"true\"\n >\n </mat-paginator>\n\n <div class=\"bmb_table-paginator\">\n <span class=\"bmb_table-paginator-text\">{{ getPaginationText() }}</span>\n <button\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasPreviousPage(),\n }\"\n (click)=\"paginator.firstPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_left\"\n class=\"bmb_table-paginator-icon\"\n />\n </button>\n <button\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasPreviousPage(),\n }\"\n (click)=\"paginator.previousPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon icon=\"keyboard_arrow_left\" class=\"bmb_table-paginator-icon\" />\n </button>\n <button\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasNextPage(),\n }\"\n (click)=\"paginator.nextPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon\n icon=\"keyboard_arrow_right\"\n class=\"bmb_table-paginator-icon\"\n />\n </button>\n <button\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasNextPage(),\n }\"\n (click)=\"paginator.lastPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_right\"\n class=\"bmb_table-paginator-icon\"\n />\n </button>\n </div>\n </ng-container>\n</div>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_table{background:var(--containers-modal);border-collapse:collapse;box-shadow:var(--bmb-box-shadow-3);display:flex;flex-direction:column;padding:1.5rem 1rem;width:100%}.bmb_table-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;flex-flow:row wrap;gap:1rem}.bmb_table-search{flex:1}.bmb_table-filters{width:100%}.bmb_table-container{flex:1 0 auto;max-width:100%;overflow:auto;width:100%}.bmb_table-content{width:100%}.bmb_table-row.mat-mdc-row{height:2.875rem}.bmb_table-row>td,.bmb_table-row>th{height:100%;overflow:hidden;padding:0 .5rem}.bmb_table-row>td.truncated,.bmb_table-row>th.truncated{max-width:6.25rem;min-width:4.375rem;text-overflow:ellipsis;white-space:nowrap}.bmb_table-row>td.wrapped,.bmb_table-row>th.wrapped{white-space:nowrap}@media (min-width: 768px){.bmb_table-row>td,.bmb_table-row>th{max-width:fit-content}}.bmb_table-row>td.bmb_table-checkbox,.bmb_table-row>th.bmb_table-checkbox{min-width:3.875rem;padding-right:0;text-align:center;width:3.875rem}.bmb_table-row>td.bmb_table-checkbox+.bmb_table-sticky,.bmb_table-row>th.bmb_table-checkbox+.bmb_table-sticky{left:3.625rem!important}.bmb_table-row>td.bmb_table-expand,.bmb_table-row>th.bmb_table-expand{min-width:2.5rem;width:2.5rem}.bmb_table-row>td.bmb_table-expand+.bmb_table-sticky,.bmb_table-row>th.bmb_table-expand+.bmb_table-sticky{left:6.125rem!important}.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{border-right:.0625rem solid var(--buttons-inactive-step);max-width:9rem}@media (min-width: 1200px){.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{max-width:fit-content}}.bmb_table-row>td.bmb_table-actions,.bmb_table-row>th.bmb_table-actions{border-left:.0625rem solid var(--buttons-inactive-step);color:var(--color-table-90)}.bmb_table-row>td button,.bmb_table-row>th button{align-items:center;color:var(--color-table-90);display:flex}.bmb_table-row>th{border-bottom:0;color:RGBA(var(--color-charade-500));overflow:inherit;position:relative;text-transform:uppercase;font-family:Poppins-Medium,sans-serif;font-size:.875rem}.bmb_table-row>th.mat-mdc-header-cell{background-color:var(--containers-modal)}.bmb_table-row>td{font-family:Poppins-Medium,sans-serif;font-size:.875rem;border-bottom-color:var(--general_contrasts-25);border-bottom-style:dashed}.bmb_table-row>td.bmb_table-actions .action-container{display:flex}.bmb_table-row>td.bmb_table-actions .action-container bmb-icon{font-size:1.125rem}.bmb_table-row>td .mat-mdc-icon-button{align-items:center;display:flex;height:auto;padding:0;width:auto}.bmb_table-row>td .mat-mdc-icon-button bmb-icon{font-size:1.5rem}.bmb_table-even.mat-mdc-row{background-color:var(--containers-modal);color:var(--menu_select-label-menu-inactive)}.bmb_table-even.mat-mdc-row.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-odd.mat-mdc-row{background-color:var(--general_contrasts-15);color:var(--vertical-step-active-color)}.bmb_table-odd.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-details.mat-mdc-row{background-color:var(--menu_select-on-surface-hovered-w-checkbox);height:0}.bmb_table-details.mat-mdc-row>td{border:0;padding:0 1rem}.bmb_table-details.mat-mdc-row.bmb_table-expanded>td{border-bottom:.0625rem dashed var(--general_contrasts-25);padding:1rem}.bmb_table-detail{color:var(--general_contrasts-75);display:flex;overflow:hidden}.bmb_table-detail>bmb-table{width:100%}.bmb_table-resize{border-right:.0625rem solid var(--general_contrasts-25);cursor:col-resize;display:inline-block;height:100%;opacity:0;position:absolute;right:0;top:0}.bmb_table-resize:hover{opacity:1;width:1.25rem}.bmb_table .mat-mdc-paginator{display:none}.bmb_table-paginator{align-items:center;bottom:0;display:flex;height:3rem;justify-content:flex-end;margin:.5rem 0;position:sticky;right:0;z-index:10}.bmb_table-paginator-text{color:var(--general_contrasts-75);margin-right:2rem;font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_table-paginator-btn{color:var(--color-table-btn-900);height:3rem;padding:0;width:3rem}.bmb_table-paginator-btn-disabled{color:var(--buttons-inactive-step);cursor:not-allowed}.bmb_table-paginator-icon{font-size:1.5rem}.bmb_table bmb-checkbox{display:block;height:1.5rem}.bmb_table bmb-checkbox .bmb_checkbox-mark{margin:0}.bmb_table-success{color:var(--semantic-success)}.bmb_table-error{color:var(--semantic-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "size", "max", "min", "id", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "component", type: BmbDropdownComponent, selector: "bmb-dropdown", inputs: ["required", "showIcon", "placeholder", "icon", "options", "helperText", "errorMessage", "label", "name", "preferredOptions", "isMultiSelect", "tooltip", "tooltipPosition", "disabled", "value", "isFilterable", "inputId", "control"], outputs: ["controlChange", "onValueChange", "onFocus"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: BmbDateRangeComponent, selector: "bmb-date-range", inputs: ["inputId", "label", "labelStartDate", "labelEndDate", "icon", "invalidFormatErrorMessage", "requiredFieldErrorMessage", "appearance", "disabled", "isRequired", "isClearable", "controlStart", "controlEnd", "dateFormat", "placeholderStartDate", "placeholderEndDate", "stepYearPicker", "name", "multipleRow"], outputs: ["controlStartChange", "controlEndChange"] }, { kind: "component", type: BmbActionIconComponent, selector: "bmb-action-icon", inputs: ["idElement", "icon", "alt", "iconSize", "isFill", "toggleIconActive", "isToggleActive", "isAccentColor", "dotNotification", "target", "link", "disabled"], outputs: ["isToggleActiveChange", "isAccentColorChange", "buttonPress", "buttonClick"] }], animations: [
|
|
361
361
|
trigger('detailExpand', [
|
|
362
362
|
state('collapsed,void', style({ height: '0px', minHeight: '0' })),
|
|
363
363
|
state('expanded', style({ height: '*' })),
|
|
@@ -365,7 +365,7 @@ export class BmbTablesComponent {
|
|
|
365
365
|
]),
|
|
366
366
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
367
367
|
}
|
|
368
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbTablesComponent, decorators: [{
|
|
369
369
|
type: Component,
|
|
370
370
|
args: [{ selector: 'bmb-table', standalone: true, imports: [
|
|
371
371
|
CommonModule,
|
|
@@ -390,7 +390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
390
390
|
state('expanded', style({ height: '*' })),
|
|
391
391
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
392
392
|
]),
|
|
393
|
-
], template: "@if (showSearch() || showFilters()) {\r\n <div class=\"bmb_table-header\">\r\n @if (showSearch()) {\r\n <bmb-input\r\n class=\"bmb_table-search\"\r\n [type]=\"'text'\"\r\n [placeholder]=\"'Buscar'\"\r\n [disabled]=\"false\"\r\n [icon]=\"'search'\"\r\n [appearance]=\"'normal'\"\r\n [control]=\"searchControl\"\r\n ></bmb-input>\r\n }\r\n\r\n @if (showFilters()) {\r\n <bmb-action-icon\r\n [idElement]=\"''\"\r\n [icon]=\"'filter_list'\"\r\n [iconSize]=\"24\"\r\n (buttonClick)=\"toggleFilters()\"\r\n ></bmb-action-icon>\r\n\r\n <div class=\"bmb_table-filters\" *ngIf=\"filtersVisible\">\r\n <ng-container *ngFor=\"let column of tableColumns\">\r\n <div [ngSwitch]=\"column.type\" class=\"bmb_table-filter-item\">\r\n <!-- STRING -->\r\n <ng-container *ngSwitchCase=\"'string'\">\r\n <bmb-dropdown\r\n [isMultiSelect]=\"false\"\r\n [label]=\"column.label\"\r\n [options]=\"[\r\n { name: 'Sin orden', value: 'none', id: 'none' },\r\n { name: 'A-Z', value: 'asc', id: 'asc' },\r\n { name: 'Z-A', value: 'desc', id: 'desc' },\r\n ]\"\r\n [placeholder]=\"'Ordenar'\"\r\n [value]=\"getFormControl(column.dataKey + '_sort').value\"\r\n (onValueChange)=\"\r\n getFormControl(column.dataKey + '_sort').setValue($event)\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <!-- NUMBER -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"filter-number\">\r\n <bmb-input\r\n [label]=\"column.label\"\r\n [type]=\"'number'\"\r\n [placeholder]=\"'M\u00EDn'\"\r\n [appearance]=\"'normal'\"\r\n [control]=\"getFormControl(column.dataKey + '_min')\"\r\n />\r\n <bmb-input\r\n [type]=\"'number'\"\r\n [placeholder]=\"'M\u00E1x'\"\r\n [appearance]=\"'normal'\"\r\n [control]=\"getFormControl(column.dataKey + '_max')\"\r\n />\r\n </div>\r\n </ng-container>\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <bmb-date-range\r\n [label]=\"column.label\"\r\n [placeholderStartDate]=\"'Desde'\"\r\n [placeholderEndDate]=\"'Hasta'\"\r\n [icon]=\"'calendar_month'\"\r\n [appearance]=\"'normal'\"\r\n [dateFormat]=\"'dd/MM/yyyy'\"\r\n [multipleRow]=\"true\"\r\n [controlStart]=\"getFormControl(column.dataKey + '_from')\"\r\n [controlEnd]=\"getFormControl(column.dataKey + '_to')\"\r\n (startDateChange)=\"\r\n getFormControl(column.dataKey + '_from').setValue($event)\r\n \"\r\n (endDateChange)=\"\r\n getFormControl(column.dataKey + '_to').setValue($event)\r\n \"\r\n />\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n}\r\n<div class=\"bmb_table\">\r\n <div class=\"bmb_table-container\">\r\n <table\r\n mat-table\r\n [dataSource]=\"dataSource\"\r\n class=\"bmb_table-content\"\r\n multiTemplateDataRows\r\n >\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"select\" sticky>\r\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-checkbox\">\r\n <bmb-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n [ariaLabel]=\"checkboxLabel()\"\r\n [disabled]=\"false\"\r\n />\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-checkbox\">\r\n <bmb-checkbox\r\n (change)=\"$event ? selection.toggle(row) : null; onSelect()\"\r\n [checked]=\"selection.isSelected(row)\"\r\n [ariaLabel]=\"checkboxLabel(row)\"\r\n [disabled]=\"false\"\r\n onkeypress=\"$event.stopPropagation()\"\r\n />\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expand Column -->\r\n <ng-container matColumnDef=\"expand\" sticky>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"bmb_table-expand\"\r\n aria-label=\"row actions\"\r\n >\r\n \r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-expand\">\r\n <ng-container *ngIf=\"row.detail\">\r\n <button\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"\r\n expandedElement = expandedElement === row ? null : row;\r\n $event.stopPropagation()\r\n \"\r\n >\r\n <bmb-icon\r\n [icon]=\"expandedElement === row ? 'expand_less' : 'expand_more'\"\r\n />\r\n </button>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Display Columns -->\r\n @for (column of tableColumns; track column; let i = $index) {\r\n <ng-container [matColumnDef]=\"column.def\" [sticky]=\"i === 0\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n #headerCell\r\n [matTooltip]=\"hasEllipsis(headerCell) ? column.label : ''\"\r\n matTooltipPosition=\"below\"\r\n matTooltipClass=\"bmb_tooltip\"\r\n [ngClass]=\"{\r\n 'bmb_table-sticky': i === 0,\r\n truncated: truncate(),\r\n wrapped: wrap(),\r\n }\"\r\n >\r\n <!-- T\u00EDtulo -->\r\n @if (column.htmlLabel) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.htmlLabel\"\r\n [ngTemplateOutletContext]=\"{ column: column, index: i }\"\r\n ></ng-template>\r\n } @else {\r\n {{ this.lang() === \"es\" ? column.label : column.labelEn }}\r\n }\r\n\r\n <!-- Resize Handle -->\r\n <span\r\n class=\"bmb_table-resize\"\r\n (mousedown)=\"onResizeColumn($event, i)\"\r\n ></span>\r\n </th>\r\n\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row; let a = index\"\r\n #cell\r\n [matTooltip]=\"hasEllipsis(cell) ? row[column.dataKey] : ''\"\r\n tooltipClass=\"bmb_tooltip\"\r\n [ngClass]=\"getCellClasses(row, column.dataKey, i)\"\r\n >\r\n @if (isTemplateRef(row[column.dataKey + \"Template\"])) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"row[column.dataKey + 'Template']\"\r\n [ngTemplateOutletContext]=\"{ row: row }\"\r\n ></ng-template>\r\n } @else {\r\n {{ row[column.dataKey]?.propertyName || row[column.dataKey] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <!-- Actions Column -->\r\n <ng-container matColumnDef=\"actions\" stickyEnd>\r\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-actions\"></th>\r\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-actions\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"actionTemplate()!\"\r\n [ngTemplateOutletContext]=\"{ row: row }\"\r\n >\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Row to expand -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row\"\r\n [attr.colspan]=\"tableDisplayColumns.length\"\r\n >\r\n <div\r\n class=\"bmb_table-detail\"\r\n [@detailExpand]=\"row == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"detailTemplate(); context: { row: row }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Rows -->\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"tableDisplayColumns\"\r\n class=\"bmb_table-row\"\r\n ></tr>\r\n\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: tableDisplayColumns; let i = dataIndex\"\r\n (click)=\"onSelectRow(row)\"\r\n class=\"bmb_table-row\"\r\n [class.bmb_table-expandible]=\"expandedElement === row\"\r\n [ngClass]=\"{\r\n 'bmb_table-even': isEven(i),\r\n 'bmb_table-odd': isOdd(i),\r\n }\"\r\n ></tr>\r\n\r\n <ng-container *ngIf=\"tableConfig?.isExpandible\">\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: ['expandedDetail']; let i = dataIndex\"\r\n class=\"bmb_table-details\"\r\n [class.bmb_table-expanded]=\"expandedElement === row\"\r\n ></tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <!-- Paginator -->\r\n <ng-container *ngIf=\"tableConfig?.isPaginable\" sticky>\r\n <mat-paginator\r\n #paginator\r\n [pageSize]=\"this.pageSize()\"\r\n [hidePageSize]=\"true\"\r\n >\r\n </mat-paginator>\r\n\r\n <div class=\"bmb_table-paginator\">\r\n <span class=\"bmb_table-paginator-text\">{{ getPaginationText() }}</span>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasPreviousPage(),\r\n }\"\r\n (click)=\"paginator.firstPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon\r\n icon=\"keyboard_double_arrow_left\"\r\n class=\"bmb_table-paginator-icon\"\r\n />\r\n </button>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasPreviousPage(),\r\n }\"\r\n (click)=\"paginator.previousPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon icon=\"keyboard_arrow_left\" class=\"bmb_table-paginator-icon\" />\r\n </button>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasNextPage(),\r\n }\"\r\n (click)=\"paginator.nextPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon\r\n icon=\"keyboard_arrow_right\"\r\n class=\"bmb_table-paginator-icon\"\r\n />\r\n </button>\r\n <button\r\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\r\n [ngClass]=\"{\r\n 'bmb_table-paginator-btn-disabled':\r\n !paginator || !paginator.hasNextPage(),\r\n }\"\r\n (click)=\"paginator.lastPage()\"\r\n class=\"bmb_table-paginator-btn\"\r\n >\r\n <bmb-icon\r\n icon=\"keyboard_double_arrow_right\"\r\n class=\"bmb_table-paginator-icon\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_table{background:var(--containers-modal);border-collapse:collapse;box-shadow:var(--bmb-box-shadow-3);display:flex;flex-direction:column;padding:1.5rem 1rem;width:100%}.bmb_table-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;flex-flow:row wrap;gap:1rem}.bmb_table-search{flex:1}.bmb_table-filters{width:100%}.bmb_table-container{flex:1 0 auto;max-width:100%;overflow:auto;width:100%}.bmb_table-content{width:100%}.bmb_table-row.mat-mdc-row{height:2.875rem}.bmb_table-row>td,.bmb_table-row>th{height:100%;overflow:hidden;padding:0 .5rem}.bmb_table-row>td.truncated,.bmb_table-row>th.truncated{max-width:6.25rem;min-width:4.375rem;text-overflow:ellipsis;white-space:nowrap}.bmb_table-row>td.wrapped,.bmb_table-row>th.wrapped{white-space:nowrap}@media (min-width: 768px){.bmb_table-row>td,.bmb_table-row>th{max-width:fit-content}}.bmb_table-row>td.bmb_table-checkbox,.bmb_table-row>th.bmb_table-checkbox{min-width:3.875rem;padding-right:0;text-align:center;width:3.875rem}.bmb_table-row>td.bmb_table-checkbox+.bmb_table-sticky,.bmb_table-row>th.bmb_table-checkbox+.bmb_table-sticky{left:3.625rem!important}.bmb_table-row>td.bmb_table-expand,.bmb_table-row>th.bmb_table-expand{min-width:2.5rem;width:2.5rem}.bmb_table-row>td.bmb_table-expand+.bmb_table-sticky,.bmb_table-row>th.bmb_table-expand+.bmb_table-sticky{left:6.125rem!important}.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{border-right:.0625rem solid var(--buttons-inactive-step);max-width:9rem}@media (min-width: 1200px){.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{max-width:fit-content}}.bmb_table-row>td.bmb_table-actions,.bmb_table-row>th.bmb_table-actions{border-left:.0625rem solid var(--buttons-inactive-step);color:var(--color-table-90)}.bmb_table-row>td button,.bmb_table-row>th button{align-items:center;color:var(--color-table-90);display:flex}.bmb_table-row>th{border-bottom:0;color:RGBA(var(--color-charade-500));overflow:inherit;position:relative;text-transform:uppercase;font-family:Poppins-Medium,sans-serif;font-size:.875rem}.bmb_table-row>th.mat-mdc-header-cell{background-color:var(--containers-modal)}.bmb_table-row>td{font-family:Poppins-Medium,sans-serif;font-size:.875rem;border-bottom-color:var(--general_contrasts-25);border-bottom-style:dashed}.bmb_table-row>td.bmb_table-actions .action-container{display:flex}.bmb_table-row>td.bmb_table-actions .action-container bmb-icon{font-size:1.125rem}.bmb_table-row>td .mat-mdc-icon-button{align-items:center;display:flex;height:auto;padding:0;width:auto}.bmb_table-row>td .mat-mdc-icon-button bmb-icon{font-size:1.5rem}.bmb_table-even.mat-mdc-row{background-color:var(--containers-modal);color:var(--menu_select-label-menu-inactive)}.bmb_table-even.mat-mdc-row.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-odd.mat-mdc-row{background-color:var(--general_contrasts-15);color:var(--vertical-step-active-color)}.bmb_table-odd.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-details.mat-mdc-row{background-color:var(--menu_select-on-surface-hovered-w-checkbox);height:0}.bmb_table-details.mat-mdc-row>td{border:0;padding:0 1rem}.bmb_table-details.mat-mdc-row.bmb_table-expanded>td{border-bottom:.0625rem dashed var(--general_contrasts-25);padding:1rem}.bmb_table-detail{color:var(--general_contrasts-75);display:flex;overflow:hidden}.bmb_table-detail>bmb-table{width:100%}.bmb_table-resize{border-right:.0625rem solid var(--general_contrasts-25);cursor:col-resize;display:inline-block;height:100%;opacity:0;position:absolute;right:0;top:0}.bmb_table-resize:hover{opacity:1;width:1.25rem}.bmb_table .mat-mdc-paginator{display:none}.bmb_table-paginator{align-items:center;bottom:0;display:flex;height:3rem;justify-content:flex-end;margin:.5rem 0;position:sticky;right:0;z-index:10}.bmb_table-paginator-text{color:var(--general_contrasts-75);margin-right:2rem;font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_table-paginator-btn{color:var(--color-table-btn-900);height:3rem;padding:0;width:3rem}.bmb_table-paginator-btn-disabled{color:var(--buttons-inactive-step);cursor:not-allowed}.bmb_table-paginator-icon{font-size:1.5rem}.bmb_table bmb-checkbox{display:block;height:1.5rem}.bmb_table bmb-checkbox .bmb_checkbox-mark{margin:0}.bmb_table-success{color:var(--semantic-success)}.bmb_table-error{color:var(--semantic-error)}\n"] }]
|
|
393
|
+
], template: "@if (showSearch() || showFilters()) {\n <div class=\"bmb_table-header\">\n @if (showSearch()) {\n <bmb-input\n class=\"bmb_table-search\"\n [type]=\"'text'\"\n [placeholder]=\"'Buscar'\"\n [disabled]=\"false\"\n [icon]=\"'search'\"\n [appearance]=\"'normal'\"\n [control]=\"searchControl\"\n ></bmb-input>\n }\n\n @if (showFilters()) {\n <bmb-action-icon\n [idElement]=\"''\"\n [icon]=\"'filter_list'\"\n [iconSize]=\"24\"\n (buttonClick)=\"toggleFilters()\"\n ></bmb-action-icon>\n\n <div class=\"bmb_table-filters\" *ngIf=\"filtersVisible\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div [ngSwitch]=\"column.type\" class=\"bmb_table-filter-item\">\n <!-- STRING -->\n <ng-container *ngSwitchCase=\"'string'\">\n <bmb-dropdown\n [isMultiSelect]=\"false\"\n [label]=\"column.label\"\n [options]=\"[\n { name: 'Sin orden', value: 'none', id: 'none' },\n { name: 'A-Z', value: 'asc', id: 'asc' },\n { name: 'Z-A', value: 'desc', id: 'desc' },\n ]\"\n [placeholder]=\"'Ordenar'\"\n [value]=\"getFormControl(column.dataKey + '_sort').value\"\n (onValueChange)=\"\n getFormControl(column.dataKey + '_sort').setValue($event)\n \"\n />\n </ng-container>\n\n <!-- NUMBER -->\n <ng-container *ngSwitchCase=\"'number'\">\n <div class=\"filter-number\">\n <bmb-input\n [label]=\"column.label\"\n [type]=\"'number'\"\n [placeholder]=\"'M\u00EDn'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_min')\"\n />\n <bmb-input\n [type]=\"'number'\"\n [placeholder]=\"'M\u00E1x'\"\n [appearance]=\"'normal'\"\n [control]=\"getFormControl(column.dataKey + '_max')\"\n />\n </div>\n </ng-container>\n\n <!-- DATE -->\n <ng-container *ngSwitchCase=\"'date'\">\n <bmb-date-range\n [label]=\"column.label\"\n [placeholderStartDate]=\"'Desde'\"\n [placeholderEndDate]=\"'Hasta'\"\n [icon]=\"'calendar_month'\"\n [appearance]=\"'normal'\"\n [dateFormat]=\"'dd/MM/yyyy'\"\n [multipleRow]=\"true\"\n [controlStart]=\"getFormControl(column.dataKey + '_from')\"\n [controlEnd]=\"getFormControl(column.dataKey + '_to')\"\n (startDateChange)=\"\n getFormControl(column.dataKey + '_from').setValue($event)\n \"\n (endDateChange)=\"\n getFormControl(column.dataKey + '_to').setValue($event)\n \"\n />\n </ng-container>\n </div>\n </ng-container>\n </div>\n }\n </div>\n}\n<div class=\"bmb_table\">\n <div class=\"bmb_table-container\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n class=\"bmb_table-content\"\n multiTemplateDataRows\n >\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\" sticky>\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [ariaLabel]=\"checkboxLabel()\"\n [disabled]=\"false\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-checkbox\">\n <bmb-checkbox\n (change)=\"$event ? selection.toggle(row) : null; onSelect()\"\n [checked]=\"selection.isSelected(row)\"\n [ariaLabel]=\"checkboxLabel(row)\"\n [disabled]=\"false\"\n onkeypress=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n\n <!-- Expand Column -->\n <ng-container matColumnDef=\"expand\" sticky>\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"bmb_table-expand\"\n aria-label=\"row actions\"\n >\n \n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-expand\">\n <ng-container *ngIf=\"row.detail\">\n <button\n mat-icon-button\n aria-label=\"expand row\"\n (click)=\"\n expandedElement = expandedElement === row ? null : row;\n $event.stopPropagation()\n \"\n >\n <bmb-icon\n [icon]=\"expandedElement === row ? 'expand_less' : 'expand_more'\"\n />\n </button>\n </ng-container>\n </td>\n </ng-container>\n\n <!-- Display Columns -->\n @for (column of tableColumns; track column; let i = $index) {\n <ng-container [matColumnDef]=\"column.def\" [sticky]=\"i === 0\">\n <th\n mat-header-cell\n *matHeaderCellDef\n #headerCell\n [matTooltip]=\"hasEllipsis(headerCell) ? column.label : ''\"\n matTooltipPosition=\"below\"\n matTooltipClass=\"bmb_tooltip\"\n [ngClass]=\"{\n 'bmb_table-sticky': i === 0,\n truncated: truncate(),\n wrapped: wrap(),\n }\"\n >\n <!-- T\u00EDtulo -->\n @if (column.htmlLabel) {\n <ng-template\n [ngTemplateOutlet]=\"column.htmlLabel\"\n [ngTemplateOutletContext]=\"{ column: column, index: i }\"\n ></ng-template>\n } @else {\n {{ this.lang() === \"es\" ? column.label : column.labelEn }}\n }\n\n <!-- Resize Handle -->\n <span\n class=\"bmb_table-resize\"\n (mousedown)=\"onResizeColumn($event, i)\"\n ></span>\n </th>\n\n <td\n mat-cell\n *matCellDef=\"let row; let a = index\"\n #cell\n [matTooltip]=\"hasEllipsis(cell) ? row[column.dataKey] : ''\"\n tooltipClass=\"bmb_tooltip\"\n [ngClass]=\"getCellClasses(row, column.dataKey, i)\"\n >\n @if (isTemplateRef(row[column.dataKey + \"Template\"])) {\n <ng-template\n [ngTemplateOutlet]=\"row[column.dataKey + 'Template']\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n ></ng-template>\n } @else {\n {{ row[column.dataKey]?.propertyName || row[column.dataKey] }}\n }\n </td>\n </ng-container>\n }\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"bmb_table-actions\"></th>\n <td mat-cell *matCellDef=\"let row\" class=\"bmb_table-actions\">\n <ng-template\n [ngTemplateOutlet]=\"actionTemplate()!\"\n [ngTemplateOutletContext]=\"{ row: row }\"\n >\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Row to expand -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n mat-cell\n *matCellDef=\"let row\"\n [attr.colspan]=\"tableDisplayColumns.length\"\n >\n <div\n class=\"bmb_table-detail\"\n [@detailExpand]=\"row == expandedElement ? 'expanded' : 'collapsed'\"\n >\n <ng-container\n *ngTemplateOutlet=\"detailTemplate(); context: { row: row }\"\n ></ng-container>\n </div>\n </td>\n </ng-container>\n\n <!-- Rows -->\n <tr\n mat-header-row\n *matHeaderRowDef=\"tableDisplayColumns\"\n class=\"bmb_table-row\"\n ></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; columns: tableDisplayColumns; let i = dataIndex\"\n (click)=\"onSelectRow(row)\"\n class=\"bmb_table-row\"\n [class.bmb_table-expandible]=\"expandedElement === row\"\n [ngClass]=\"{\n 'bmb_table-even': isEven(i),\n 'bmb_table-odd': isOdd(i),\n }\"\n ></tr>\n\n <ng-container *ngIf=\"tableConfig?.isExpandible\">\n <tr\n mat-row\n *matRowDef=\"let row; columns: ['expandedDetail']; let i = dataIndex\"\n class=\"bmb_table-details\"\n [class.bmb_table-expanded]=\"expandedElement === row\"\n ></tr>\n </ng-container>\n </table>\n </div>\n\n <!-- Paginator -->\n <ng-container *ngIf=\"tableConfig?.isPaginable\" sticky>\n <mat-paginator\n #paginator\n [pageSize]=\"this.pageSize()\"\n [hidePageSize]=\"true\"\n >\n </mat-paginator>\n\n <div class=\"bmb_table-paginator\">\n <span class=\"bmb_table-paginator-text\">{{ getPaginationText() }}</span>\n <button\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasPreviousPage(),\n }\"\n (click)=\"paginator.firstPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_left\"\n class=\"bmb_table-paginator-icon\"\n />\n </button>\n <button\n [disabled]=\"!paginator || !paginator.hasPreviousPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasPreviousPage(),\n }\"\n (click)=\"paginator.previousPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon icon=\"keyboard_arrow_left\" class=\"bmb_table-paginator-icon\" />\n </button>\n <button\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasNextPage(),\n }\"\n (click)=\"paginator.nextPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon\n icon=\"keyboard_arrow_right\"\n class=\"bmb_table-paginator-icon\"\n />\n </button>\n <button\n [disabled]=\"!paginator || !paginator.hasNextPage()\"\n [ngClass]=\"{\n 'bmb_table-paginator-btn-disabled':\n !paginator || !paginator.hasNextPage(),\n }\"\n (click)=\"paginator.lastPage()\"\n class=\"bmb_table-paginator-btn\"\n >\n <bmb-icon\n icon=\"keyboard_double_arrow_right\"\n class=\"bmb_table-paginator-icon\"\n />\n </button>\n </div>\n </ng-container>\n</div>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_table{background:var(--containers-modal);border-collapse:collapse;box-shadow:var(--bmb-box-shadow-3);display:flex;flex-direction:column;padding:1.5rem 1rem;width:100%}.bmb_table-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;flex-flow:row wrap;gap:1rem}.bmb_table-search{flex:1}.bmb_table-filters{width:100%}.bmb_table-container{flex:1 0 auto;max-width:100%;overflow:auto;width:100%}.bmb_table-content{width:100%}.bmb_table-row.mat-mdc-row{height:2.875rem}.bmb_table-row>td,.bmb_table-row>th{height:100%;overflow:hidden;padding:0 .5rem}.bmb_table-row>td.truncated,.bmb_table-row>th.truncated{max-width:6.25rem;min-width:4.375rem;text-overflow:ellipsis;white-space:nowrap}.bmb_table-row>td.wrapped,.bmb_table-row>th.wrapped{white-space:nowrap}@media (min-width: 768px){.bmb_table-row>td,.bmb_table-row>th{max-width:fit-content}}.bmb_table-row>td.bmb_table-checkbox,.bmb_table-row>th.bmb_table-checkbox{min-width:3.875rem;padding-right:0;text-align:center;width:3.875rem}.bmb_table-row>td.bmb_table-checkbox+.bmb_table-sticky,.bmb_table-row>th.bmb_table-checkbox+.bmb_table-sticky{left:3.625rem!important}.bmb_table-row>td.bmb_table-expand,.bmb_table-row>th.bmb_table-expand{min-width:2.5rem;width:2.5rem}.bmb_table-row>td.bmb_table-expand+.bmb_table-sticky,.bmb_table-row>th.bmb_table-expand+.bmb_table-sticky{left:6.125rem!important}.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{border-right:.0625rem solid var(--buttons-inactive-step);max-width:9rem}@media (min-width: 1200px){.bmb_table-row>td.bmb_table-sticky,.bmb_table-row>th.bmb_table-sticky{max-width:fit-content}}.bmb_table-row>td.bmb_table-actions,.bmb_table-row>th.bmb_table-actions{border-left:.0625rem solid var(--buttons-inactive-step);color:var(--color-table-90)}.bmb_table-row>td button,.bmb_table-row>th button{align-items:center;color:var(--color-table-90);display:flex}.bmb_table-row>th{border-bottom:0;color:RGBA(var(--color-charade-500));overflow:inherit;position:relative;text-transform:uppercase;font-family:Poppins-Medium,sans-serif;font-size:.875rem}.bmb_table-row>th.mat-mdc-header-cell{background-color:var(--containers-modal)}.bmb_table-row>td{font-family:Poppins-Medium,sans-serif;font-size:.875rem;border-bottom-color:var(--general_contrasts-25);border-bottom-style:dashed}.bmb_table-row>td.bmb_table-actions .action-container{display:flex}.bmb_table-row>td.bmb_table-actions .action-container bmb-icon{font-size:1.125rem}.bmb_table-row>td .mat-mdc-icon-button{align-items:center;display:flex;height:auto;padding:0;width:auto}.bmb_table-row>td .mat-mdc-icon-button bmb-icon{font-size:1.5rem}.bmb_table-even.mat-mdc-row{background-color:var(--containers-modal);color:var(--menu_select-label-menu-inactive)}.bmb_table-even.mat-mdc-row.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-odd.mat-mdc-row{background-color:var(--general_contrasts-15);color:var(--vertical-step-active-color)}.bmb_table-odd.bmb_table-expandible{background-color:var(--menu_select-on-surface-hovered-w-checkbox)}.bmb_table-details.mat-mdc-row{background-color:var(--menu_select-on-surface-hovered-w-checkbox);height:0}.bmb_table-details.mat-mdc-row>td{border:0;padding:0 1rem}.bmb_table-details.mat-mdc-row.bmb_table-expanded>td{border-bottom:.0625rem dashed var(--general_contrasts-25);padding:1rem}.bmb_table-detail{color:var(--general_contrasts-75);display:flex;overflow:hidden}.bmb_table-detail>bmb-table{width:100%}.bmb_table-resize{border-right:.0625rem solid var(--general_contrasts-25);cursor:col-resize;display:inline-block;height:100%;opacity:0;position:absolute;right:0;top:0}.bmb_table-resize:hover{opacity:1;width:1.25rem}.bmb_table .mat-mdc-paginator{display:none}.bmb_table-paginator{align-items:center;bottom:0;display:flex;height:3rem;justify-content:flex-end;margin:.5rem 0;position:sticky;right:0;z-index:10}.bmb_table-paginator-text{color:var(--general_contrasts-75);margin-right:2rem;font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_table-paginator-btn{color:var(--color-table-btn-900);height:3rem;padding:0;width:3rem}.bmb_table-paginator-btn-disabled{color:var(--buttons-inactive-step);cursor:not-allowed}.bmb_table-paginator-icon{font-size:1.5rem}.bmb_table bmb-checkbox{display:block;height:1.5rem}.bmb_table bmb-checkbox .bmb_checkbox-mark{margin:0}.bmb_table-success{color:var(--semantic-success)}.bmb_table-error{color:var(--semantic-error)}\n"] }]
|
|
394
394
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.DomSanitizer }], propDecorators: { select: [{
|
|
395
395
|
type: Output
|
|
396
396
|
}], clickedRow: [{
|
|
@@ -411,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
411
411
|
type: HostListener,
|
|
412
412
|
args: ['window:resize', ['$event']]
|
|
413
413
|
}] } });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXRhYmxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLXRhYmxlcy9ibWItdGFibGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItdGFibGVzL2JtYi10YWJsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUVULE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBRVosaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixLQUFLLEVBRUwsTUFBTSxFQUVOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsUUFBUSxHQUNULE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztB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bmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0luaXQsXG4gIFZpZXdDaGlsZCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGlucHV0LFxuICBPbkNoYW5nZXMsXG4gIGVmZmVjdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgbW9kZWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHtcbiAgTWF0VGFibGVEYXRhU291cmNlLFxuICBNYXRUYWJsZU1vZHVsZSxcbiAgTWF0VGFibGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQm1iSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pY29uL2JtYi1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1jaGVja2JveC9ibWItY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sdW0sIFRhYmxlQ29uZmlnIH0gZnJvbSAnLi9ibWItdGFibGVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBCbWJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCbWJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1kcm9wZG93bi9ibWItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCbWJEYXRlUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi9ibWItZGF0ZS1yYW5nZS9ibWItZGF0ZS1yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQWN0aW9uSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1hY3Rpb24taWNvbi9ibWItYWN0aW9uLWljb24uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQm1iVGFibGVMYW5nID0gJ2VuJyB8ICdlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQm1iSWNvbkNvbXBvbmVudCxcbiAgICBCbWJDaGVja2JveENvbXBvbmVudCxcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgQm1iSW5wdXRDb21wb25lbnQsXG4gICAgQm1iRHJvcGRvd25Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCbWJEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgQm1iQWN0aW9uSWNvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi10YWJsZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLXRhYmxlcy5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCx2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJyB9KSksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oXG4gICAgICAgICdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcbiAgICAgICAgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJyksXG4gICAgICApLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJUYWJsZXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX3Jhd0NvbHVtbnM6IFRhYmxlQ29sdW1bXSA9IFtdO1xuICBwcml2YXRlIF9yYXdDb25maWc6IFRhYmxlQ29uZmlnID0ge1xuICAgIGlzU2VsZWN0YWJsZTogZmFsc2UsXG4gICAgaXNFeHBhbmRpYmxlOiBmYWxzZSxcbiAgICBpc1BhZ2luYWJsZTogZmFsc2UsXG4gICAgc2hvd0FjdGlvbnM6IGZhbHNlLFxuICB9O1xuXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+ID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xuICBvcmlnaW5hbERhdGE6IGFueVtdID0gW107XG4gIGZpbHRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgdGFibGVEaXNwbGF5Q29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgdGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtW10gPSBbXTtcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XG4gIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcbiAgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIHByZXNzZWQgPSBmYWxzZTtcbiAgY3VycmVudFJlc2l6ZUluZGV4PzogbnVtYmVyO1xuICBzdGFydFg/OiBudW1iZXI7XG4gIHN0YXJ0V2lkdGg/OiBudW1iZXI7XG4gIGlzUmVzaXppbmdSaWdodD86IGJvb2xlYW47XG4gIHJlc2l6YWJsZU1vdXNlbW92ZT86ICgpID0+IHZvaWQ7XG4gIHJlc2l6YWJsZU1vdXNldXA/OiAoKSA9PiB2b2lkO1xuXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBmaWx0ZXJzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHNob3dTZWFyY2ggPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHNob3dGaWx0ZXJzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwYWdlU2l6ZSA9IGlucHV0PG51bWJlcj4oKTtcbiAgZGF0YSA9IGlucHV0PGFueVtdPihbXSk7XG4gIGNvbHVtbnMgPSBpbnB1dDxUYWJsZUNvbHVtW10+KFtdKTtcbiAgYWN0aW9uVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG4gIGNvbmZpZyA9IGlucHV0PFRhYmxlQ29uZmlnPigpO1xuICBkZXRhaWxUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcbiAgdHJ1bmNhdGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHdyYXAgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgaW5pdGlhbFRhYmxlU2VsZWN0aW9uID0gaW5wdXQ8bnVtYmVyW10+KFtdKTtcbiAgbGFuZyA9IGlucHV0PEJtYlRhYmxlTGFuZz4oJ2VzJyk7XG4gIGNsZWFyU2VsZWN0aW9uID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xpY2tlZFJvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgbWF0VGFibGVSZWY/OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdoZWFkZXJDZWxsUmVmJykgaGVhZGVyQ2VsbFJlZiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NlbGxSZWYnKSBjZWxsUmVmITogRWxlbWVudFJlZjtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2V0VGFibGVSZXNpemUodGhpcy5tYXRUYWJsZVJlZiEubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuaW5pdGlhbFRhYmxlU2VsZWN0aW9uKCkgPz8gW107XG4gICAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aCAmJiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgc2VsZWN0ZWRSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCh0aGlzLmRhdGFTb3VyY2UuZGF0YVtyb3ddKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHtcbiAgICAgIHRoaXMucGFyc2VEYXRhKGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcbiAgICAgIHRoaXMucGFyc2VDb2x1bW5zKGNoYW5nZXNbJ2NvbHVtbnMnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy5zZXRDb25maWcoY2hhbmdlc1snY29uZmlnJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY2xlYXJTZWxlY3Rpb24nXSkge1xuICAgICAgaWYgKHRoaXMuY2xlYXJTZWxlY3Rpb24oKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3Qgc2FmZVZhbHVlID0gKHZhbHVlIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBzYWZlVmFsdWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyUHJlZGljYXRlID0gKGRhdGE6IGFueSwgZmlsdGVyOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNlYXJjaFN0ciA9XG4gICAgICAgIGAke2RhdGEubmFtZX0gJHtkYXRhLmxhc3ROYW1lfSAke2RhdGEuY291bnRyeX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gc2VhcmNoU3RyLmluY2x1ZGVzKGZpbHRlcik7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmluaXRpYWxUYWJsZVNlbGVjdGlvbigpID8/IFtdO1xuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoICYmIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCkge1xuICAgICAgc2VsZWN0ZWRSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QodGhpcy5kYXRhU291cmNlLmRhdGFbcm93XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yYXdDb25maWcgPSB0aGlzLmNvbmZpZygpIHx8IHt9O1xuICAgIC8vdGhpcy5hcHBseUNvbHVtbnNBbmRDb25maWcoKTtcblxuICAgIHRoaXMucGFyc2VEYXRhKHRoaXMuZGF0YSgpKTtcbiAgICB0aGlzLnBhcnNlQ29sdW1ucyh0aGlzLmNvbHVtbnMoKSk7XG4gIH1cblxuICBwYXJzZURhdGEoZGF0YTogYW55W10pIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5vcmlnaW5hbERhdGEgPSBkYXRhO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICB9XG4gIH1cblxuICBwYXJzZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bVtdKSB7XG4gICAgdGhpcy5fcmF3Q29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5hcHBseUNvbHVtbnNBbmRDb25maWcoY29sdW1ucyk7XG4gICAgdGhpcy5zZXR1cER5bmFtaWNGaWx0ZXJzKCk7XG4gIH1cblxuICBzYW5pdGl6ZUhUTUwobGFiZWw6IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobGFiZWwpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgJiYgdGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFRhYmxlUmVzaXplKHRoaXMubWF0VGFibGVSZWYhLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbHVtbnNBbmRDb25maWcobmV3Q29sdW1uczogVGFibGVDb2x1bVtdID0gW10pIHtcbiAgICBpZiAoIW5ld0NvbHVtbnMgfHwgIUFycmF5LmlzQXJyYXkobmV3Q29sdW1ucykgfHwgbmV3Q29sdW1ucy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBkaXNwbGF5Q29sdW1ucyA9IFsuLi5uZXdDb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wuZGVmKV07XG5cbiAgICBpZiAodGhpcy5fcmF3Q29uZmlnLmlzRXhwYW5kaWJsZSkge1xuICAgICAgZGlzcGxheUNvbHVtbnMudW5zaGlmdCgnZXhwYW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jhd0NvbmZpZy5pc1NlbGVjdGFibGUpIHtcbiAgICAgIGRpc3BsYXlDb2x1bW5zLnVuc2hpZnQoJ3NlbGVjdCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yYXdDb25maWcuc2hvd0FjdGlvbnMpIHtcbiAgICAgIGRpc3BsYXlDb2x1bW5zLnB1c2goJ2FjdGlvbnMnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yYXdDb2x1bW5zID0gbmV3Q29sdW1ucztcbiAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IG5ld0NvbHVtbnM7XG4gICAgdGhpcy50YWJsZURpc3BsYXlDb2x1bW5zID0gZGlzcGxheUNvbHVtbnM7XG4gICAgdGhpcy50YWJsZUNvbmZpZyA9IHRoaXMuX3Jhd0NvbmZpZztcbiAgfVxuXG4gIHNldFRhYmxlUmVzaXplKHRhYmxlV2lkdGg6IG51bWJlcikge1xuICAgIGxldCB0b3RXaWR0aCA9IDA7XG4gICAgdGhpcy50YWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb2x1bW4ud2lkdGggPSBjb2x1bW4ud2lkdGggfHwgNTA7XG4gICAgICB0b3RXaWR0aCArPSBjb2x1bW4ud2lkdGghO1xuICAgIH0pO1xuICAgIGNvbnN0IHNjYWxlID0gKHRhYmxlV2lkdGggLSA1KSAvIHRvdFdpZHRoO1xuICB9XG5cbiAgbW91c2VNb3ZlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnJlc2l6YWJsZU1vdXNlbW92ZSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgJ2RvY3VtZW50JyxcbiAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByZXNzZWQgJiYgZXZlbnQuYnV0dG9ucykge1xuICAgICAgICAgIGNvbnN0IGR4ID0gdGhpcy5pc1Jlc2l6aW5nUmlnaHRcbiAgICAgICAgICAgID8gZXZlbnQucGFnZVggLSB0aGlzLnN0YXJ0WCFcbiAgICAgICAgICAgIDogLWV2ZW50LnBhZ2VYICsgdGhpcy5zdGFydFghO1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5zdGFydFdpZHRoISArIGR4O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy5yZXNpemFibGVNb3VzZXVwID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRSZXNpemVJbmRleCA9IC0xO1xuICAgICAgICB0aGlzLnJlc2l6YWJsZU1vdXNlbW92ZSEoKTtcbiAgICAgICAgdGhpcy5yZXNpemFibGVNb3VzZXVwISgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hlY2tSZXNpemluZyhldmVudDogYW55LCBpbmRleDogYW55KSB7XG4gICAgY29uc3QgY2VsbERhdGEgPSB0aGlzLmdldENlbGxEYXRhKGluZGV4KTtcbiAgICB0aGlzLmlzUmVzaXppbmdSaWdodCA9XG4gICAgICBpbmRleCA9PT0gMCB8fFxuICAgICAgKE1hdGguYWJzKGV2ZW50LnBhZ2VYIC0gY2VsbERhdGEucmlnaHQpIDwgY2VsbERhdGEud2lkdGggLyAyICYmXG4gICAgICAgIGluZGV4ICE9PSB0aGlzLnRhYmxlQ29sdW1ucy5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGdldENlbGxEYXRhKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBoZWFkZXJSb3cgPVxuICAgICAgdGhpcy5tYXRUYWJsZVJlZiEubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5xdWVyeVNlbGVjdG9yKCd0cicpO1xuICAgIGNvbnN0IGNlbGwgPSBoZWFkZXJSb3cuY2hpbGRyZW5baW5kZXhdO1xuICAgIHJldHVybiBjZWxsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB9XG5cbiAgb25SZXNpemVDb2x1bW4oZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY2hlY2tSZXNpemluZyhldmVudCwgaW5kZXgpO1xuICAgIHRoaXMuY3VycmVudFJlc2l6ZUluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgIHRoaXMuc3RhcnRXaWR0aCA9IGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZU1vdmUoaW5kZXgpO1xuICB9XG5cbiAgb25TZWxlY3QoKSB7XG4gICAgY29uc3QgaW5kZXhTZWxlY3RlZCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlZHVjZSgoYWNjLCBjdXJyZW50LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY3VycmVudCkpIGFjYy5wdXNoKGluZGV4KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZzogVGFibGVDb25maWcpIHtcbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnO1xuXG4gICAgaWYgKHRoaXMudGFibGVDb25maWcuaXNFeHBhbmRpYmxlKSB7XG4gICAgICB0aGlzLnRhYmxlRGlzcGxheUNvbHVtbnM/LnVuc2hpZnQoJ2V4cGFuZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnLmlzU2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy50YWJsZURpc3BsYXlDb2x1bW5zPy51bnNoaWZ0KCdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZy5zaG93QWN0aW9ucykge1xuICAgICAgdGhpcy50YWJsZURpc3BsYXlDb2x1bW5zPy5wdXNoKCdhY3Rpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgaXNBbGxTZWxlY3RlZCgpIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIHRvZ2dsZUFsbFJvd3MoKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgdGhpcy5vblNlbGVjdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2UuZGF0YSk7XG4gICAgdGhpcy5vblNlbGVjdCgpO1xuICB9XG5cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghcm93KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdykgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IHJvdyAke3Jvdy5wb3NpdGlvbiArIDF9YDtcbiAgfVxuXG4gIGlzRXZlbihyb3dJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsdGVyZWRJbmRleCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhXG4gICAgICAuZmlsdGVyKChyb3cpID0+ICFyb3cuaXNEZXRhaWwpXG4gICAgICAuZmluZEluZGV4KChyb3csIGluZGV4KSA9PiBpbmRleCA9PT0gcm93SW5kZXgpO1xuICAgIHJldHVybiBmaWx0ZXJlZEluZGV4ICUgMiA9PT0gMDtcbiAgfVxuXG4gIGlzT2RkKHJvd0luZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNFdmVuKHJvd0luZGV4KTtcbiAgfVxuXG4gIGhhc0VsbGlwc2lzKGVsZW1lbnQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudFJlZiA9IG5ldyBFbGVtZW50UmVmKGVsZW1lbnQpO1xuICAgIHJldHVybiAoXG4gICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGggPlxuICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoXG4gICAgKTtcbiAgfVxuXG4gIGdldFBhZ2luYXRpb25UZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMucGFnaW5hdG9yIHx8XG4gICAgICB0aGlzLnBhZ2luYXRvci5sZW5ndGggPT09IDAgfHxcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID09PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gYDAgZGUgJHt0aGlzLnBhZ2luYXRvcj8ubGVuZ3RoIHx8IDB9YDtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCAqIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplICsgMTtcbiAgICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKFxuICAgICAgKHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCArIDEpICogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXG4gICAgICB0aGlzLnBhZ2luYXRvci5sZW5ndGgsXG4gICAgKTtcbiAgICByZXR1cm4gYCR7c3RhcnRJbmRleH0gLSAke2VuZEluZGV4fSBkZSAke3RoaXMucGFnaW5hdG9yLmxlbmd0aH1gO1xuICB9XG5cbiAgaXNUZW1wbGF0ZVJlZih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICBvblNlbGVjdFJvdyhyb3c6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tlZFJvdy5lbWl0KHJvdyk7XG4gIH1cblxuICBnZXRDZWxsQ2xhc3Nlcyhyb3c6IGFueSwgY29sdW1uS2V5OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGNvbnN0IHNlbWFudGljVHlwZSA9IHJvd1tjb2x1bW5LZXkgKyAnVHlwZSddO1xuICAgIGNvbnN0IGNsYXNzZXM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgJ2JtYl90YWJsZS1zdGlja3knOiBpbmRleCA9PT0gMCxcbiAgICAgIHRydW5jYXRlZDogdGhpcy50cnVuY2F0ZSgpLFxuICAgICAgd3JhcHBlZDogdGhpcy53cmFwKCksXG4gICAgfTtcblxuICAgIGlmIChzZW1hbnRpY1R5cGUpIHtcbiAgICAgIGNsYXNzZXNbJ2JtYl90YWJsZS0nICsgc2VtYW50aWNUeXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBzZXR1cER5bmFtaWNGaWx0ZXJzKCkge1xuICAgIHRoaXMuX3Jhd0NvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBjb2x1bW4uZGF0YUtleTtcbiAgICAgIHN3aXRjaCAoY29sdW1uLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X21pbmAsIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X21heGAsIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woYCR7a2V5fV9mcm9tYCwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fdG9gLCBuZXcgRm9ybUNvbnRyb2woKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woYCR7a2V5fV9zb3J0YCwgbmV3IEZvcm1Db250cm9sKCdub25lJykpO1xuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fY29udGFpbnNgLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXBwbHlGaWx0ZXJzKCkpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGxldCBmaWx0ZXJlZCA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5maWx0ZXJGb3JtLnZhbHVlIGFzIGFueTtcblxuICAgIHRoaXMuX3Jhd0NvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBjb2x1bW4uZGF0YUtleTtcbiAgICAgIGNvbnN0IHR5cGUgPSBjb2x1bW4udHlwZTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHZhbHVlc1tgJHtrZXl9X21pbmBdO1xuICAgICAgICBjb25zdCBtYXggPSB2YWx1ZXNbYCR7a2V5fV9tYXhgXTtcbiAgICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gK3Jvd1trZXldO1xuICAgICAgICAgIHJldHVybiAobWluID09IG51bGwgfHwgdmFsdWUgPj0gbWluKSAmJiAobWF4ID09IG51bGwgfHwgdmFsdWUgPD0gbWF4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHZhbHVlc1tgJHtrZXl9X2Zyb21gXVxuICAgICAgICAgID8gbmV3IERhdGUodmFsdWVzW2Ake2tleX1fZnJvbWBdKS5nZXRUaW1lKClcbiAgICAgICAgICA6IG51bGw7XG4gICAgICAgIGNvbnN0IHRvID0gdmFsdWVzW2Ake2tleX1fdG9gXVxuICAgICAgICAgID8gbmV3IERhdGUodmFsdWVzW2Ake2tleX1fdG9gXSkuZ2V0VGltZSgpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0ZVZhbCA9IG5ldyBEYXRlKHJvd1trZXldKS5nZXRUaW1lKCk7XG4gICAgICAgICAgcmV0dXJuICghZnJvbSB8fCBkYXRlVmFsID49IGZyb20pICYmICghdG8gfHwgZGF0ZVZhbCA8PSB0byk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gdmFsdWVzW2Ake2tleX1fY29udGFpbnNgXT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChyb3cpID0+XG4gICAgICAgICAgICByb3dba2V5XT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3J0ID0gdmFsdWVzW2Ake2tleX1fc29ydGBdO1xuICAgICAgICBpZiAoc29ydCA9PT0gJ2FzYycpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5zb3J0KChhLCBiKSA9PiBhW2tleV0/LmxvY2FsZUNvbXBhcmUoYltrZXldKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc29ydCA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gYltrZXldPy5sb2NhbGVDb21wYXJlKGFba2V5XSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGZpbHRlcmVkO1xuICB9XG5cbiAgZ2V0Rm9ybUNvbnRyb2wobmFtZTogc3RyaW5nKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgdG9nZ2xlRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcnNWaXNpYmxlID0gIXRoaXMuZmlsdGVyc1Zpc2libGU7XG4gIH1cbn1cbiIsIkBpZiAoc2hvd1NlYXJjaCgpIHx8IHNob3dGaWx0ZXJzKCkpIHtcclxuICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlLWhlYWRlclwiPlxyXG4gICAgQGlmIChzaG93U2VhcmNoKCkpIHtcclxuICAgICAgPGJtYi1pbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXNlYXJjaFwiXHJcbiAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0J1c2NhcidcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxyXG4gICAgICAgIFthcHBlYXJhbmNlXT1cIidub3JtYWwnXCJcclxuICAgICAgICBbY29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcclxuICAgICAgPjwvYm1iLWlucHV0PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoc2hvd0ZpbHRlcnMoKSkge1xyXG4gICAgICA8Ym1iLWFjdGlvbi1pY29uXHJcbiAgICAgICAgW2lkRWxlbWVudF09XCInJ1wiXHJcbiAgICAgICAgW2ljb25dPVwiJ2ZpbHRlcl9saXN0J1wiXHJcbiAgICAgICAgW2ljb25TaXplXT1cIjI0XCJcclxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlRmlsdGVycygpXCJcclxuICAgICAgPjwvYm1iLWFjdGlvbi1pY29uPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZS1maWx0ZXJzXCIgKm5nSWY9XCJmaWx0ZXJzVmlzaWJsZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnNcIj5cclxuICAgICAgICAgIDxkaXYgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCIgY2xhc3M9XCJibWJfdGFibGUtZmlsdGVyLWl0ZW1cIj5cclxuICAgICAgICAgICAgPCEtLSBTVFJJTkcgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdHJpbmcnXCI+XHJcbiAgICAgICAgICAgICAgPGJtYi1kcm9wZG93blxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJbXHJcbiAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1NpbiBvcmRlbicsIHZhbHVlOiAnbm9uZScsIGlkOiAnbm9uZScgfSxcclxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnQS1aJywgdmFsdWU6ICdhc2MnLCBpZDogJ2FzYycgfSxcclxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnWi1BJywgdmFsdWU6ICdkZXNjJywgaWQ6ICdkZXNjJyB9LFxyXG4gICAgICAgICAgICAgICAgXVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ09yZGVuYXInXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfc29ydCcpLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICBnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfc29ydCcpLnNldFZhbHVlKCRldmVudClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE5VTUJFUiAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJtYi1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ03DrW4nXCJcclxuICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfbWluJylcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxibWItaW5wdXRcclxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ03DoXgnXCJcclxuICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfbWF4JylcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIERBVEUgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxibWItZGF0ZS1yYW5nZVxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJTdGFydERhdGVdPVwiJ0Rlc2RlJ1wiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJFbmREYXRlXT1cIidIYXN0YSdcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ2NhbGVuZGFyX21vbnRoJ1wiXHJcbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXHJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCInZGQvTU0veXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpcGxlUm93XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xTdGFydF09XCJnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfZnJvbScpXCJcclxuICAgICAgICAgICAgICAgIFtjb250cm9sRW5kXT1cImdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ190bycpXCJcclxuICAgICAgICAgICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgIGdldEZvcm1Db250cm9sKGNvbHVtbi5kYXRhS2V5ICsgJ19mcm9tJykuc2V0VmFsdWUoJGV2ZW50KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChlbmREYXRlQ2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICBnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfdG8nKS5zZXRWYWx1ZSgkZXZlbnQpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG59XHJcbjxkaXYgY2xhc3M9XCJibWJfdGFibGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgPHRhYmxlXHJcbiAgICAgIG1hdC10YWJsZVxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgICAgY2xhc3M9XCJibWJfdGFibGUtY29udGVudFwiXHJcbiAgICAgIG11bHRpVGVtcGxhdGVEYXRhUm93c1xyXG4gICAgPlxyXG4gICAgICA8IS0tIENoZWNrYm94IENvbHVtbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIiBzdGlja3k+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImJtYl90YWJsZS1jaGVja2JveFwiPlxyXG4gICAgICAgICAgPGJtYi1jaGVja2JveFxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3MoKSA6IG51bGxcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJjaGVja2JveExhYmVsKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cImJtYl90YWJsZS1jaGVja2JveFwiPlxyXG4gICAgICAgICAgPGJtYi1jaGVja2JveFxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGw7IG9uU2VsZWN0KClcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJjaGVja2JveExhYmVsKHJvdylcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBvbmtleXByZXNzPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEV4cGFuZCBDb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kXCIgc3RpY2t5PlxyXG4gICAgICAgIDx0aFxyXG4gICAgICAgICAgbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtZXhwYW5kXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyb3cgYWN0aW9uc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJibWJfdGFibGUtZXhwYW5kXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmRldGFpbFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImV4cGFuZCByb3dcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgIGV4cGFuZGVkRWxlbWVudCA9IGV4cGFuZGVkRWxlbWVudCA9PT0gcm93ID8gbnVsbCA6IHJvdztcclxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8Ym1iLWljb25cclxuICAgICAgICAgICAgICAgIFtpY29uXT1cImV4cGFuZGVkRWxlbWVudCA9PT0gcm93ID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSdcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIERpc3BsYXkgQ29sdW1ucyAtLT5cclxuICAgICAgQGZvciAoY29sdW1uIG9mIHRhYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uZGVmXCIgW3N0aWNreV09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICNoZWFkZXJDZWxsXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImhhc0VsbGlwc2lzKGhlYWRlckNlbGwpID8gY29sdW1uLmxhYmVsIDogJydcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImJtYl90b29sdGlwXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdibWJfdGFibGUtc3RpY2t5JzogaSA9PT0gMCxcclxuICAgICAgICAgICAgICB0cnVuY2F0ZWQ6IHRydW5jYXRlKCksXHJcbiAgICAgICAgICAgICAgd3JhcHBlZDogd3JhcCgpLFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSBUw610dWxvIC0tPlxyXG4gICAgICAgICAgICBAaWYgKGNvbHVtbi5odG1sTGFiZWwpIHtcclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5odG1sTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29sdW1uOiBjb2x1bW4sIGluZGV4OiBpIH1cIlxyXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICB7eyB0aGlzLmxhbmcoKSA9PT0gXCJlc1wiID8gY29sdW1uLmxhYmVsIDogY29sdW1uLmxhYmVsRW4gfX1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSBSZXNpemUgSGFuZGxlIC0tPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXJlc2l6ZVwiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGkpXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGEgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICNjZWxsXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImhhc0VsbGlwc2lzKGNlbGwpID8gcm93W2NvbHVtbi5kYXRhS2V5XSA6ICcnXCJcclxuICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiYm1iX3Rvb2x0aXBcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3Nlcyhyb3csIGNvbHVtbi5kYXRhS2V5LCBpKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEBpZiAoaXNUZW1wbGF0ZVJlZihyb3dbY29sdW1uLmRhdGFLZXkgKyBcIlRlbXBsYXRlXCJdKSkge1xyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93W2NvbHVtbi5kYXRhS2V5ICsgJ1RlbXBsYXRlJ11cIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIHt7IHJvd1tjb2x1bW4uZGF0YUtleV0/LnByb3BlcnR5TmFtZSB8fCByb3dbY29sdW1uLmRhdGFLZXldIH19XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0gQWN0aW9ucyBDb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiIHN0aWNreUVuZD5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiYm1iX3RhYmxlLWFjdGlvbnNcIj48L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cImJtYl90YWJsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uVGVtcGxhdGUoKSFcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdyB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIFJvdyB0byBleHBhbmQgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJ0YWJsZURpc3BsYXlDb2x1bW5zLmxlbmd0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1kZXRhaWxcIlxyXG4gICAgICAgICAgICBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsVGVtcGxhdGUoKTsgY29udGV4dDogeyByb3c6IHJvdyB9XCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIFJvd3MgLS0+XHJcbiAgICAgIDx0clxyXG4gICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cInRhYmxlRGlzcGxheUNvbHVtbnNcIlxyXG4gICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXJvd1wiXHJcbiAgICAgID48L3RyPlxyXG5cclxuICAgICAgPHRyXHJcbiAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiB0YWJsZURpc3BsYXlDb2x1bW5zOyBsZXQgaSA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Um93KHJvdylcIlxyXG4gICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXJvd1wiXHJcbiAgICAgICAgW2NsYXNzLmJtYl90YWJsZS1leHBhbmRpYmxlXT1cImV4cGFuZGVkRWxlbWVudCA9PT0gcm93XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnYm1iX3RhYmxlLWV2ZW4nOiBpc0V2ZW4oaSksXHJcbiAgICAgICAgICAnYm1iX3RhYmxlLW9kZCc6IGlzT2RkKGkpLFxyXG4gICAgICAgIH1cIlxyXG4gICAgICA+PC90cj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZz8uaXNFeHBhbmRpYmxlXCI+XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddOyBsZXQgaSA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1kZXRhaWxzXCJcclxuICAgICAgICAgIFtjbGFzcy5ibWJfdGFibGUtZXhwYW5kZWRdPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3dcIlxyXG4gICAgICAgID48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUGFnaW5hdG9yIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZz8uaXNQYWdpbmFibGVcIiBzdGlja3k+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICAjcGFnaW5hdG9yXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJ0aGlzLnBhZ2VTaXplKClcIlxyXG4gICAgICBbaGlkZVBhZ2VTaXplXT1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgPC9tYXQtcGFnaW5hdG9yPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci10ZXh0XCI+e3sgZ2V0UGFnaW5hdGlvblRleHQoKSB9fTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhcGFnaW5hdG9yIHx8ICFwYWdpbmF0b3IuaGFzUHJldmlvdXNQYWdlKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdibWJfdGFibGUtcGFnaW5hdG9yLWJ0bi1kaXNhYmxlZCc6XHJcbiAgICAgICAgICAgICFwYWdpbmF0b3IgfHwgIXBhZ2luYXRvci5oYXNQcmV2aW91c1BhZ2UoKSxcclxuICAgICAgICB9XCJcclxuICAgICAgICAoY2xpY2spPVwicGFnaW5hdG9yLmZpcnN0UGFnZSgpXCJcclxuICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1wYWdpbmF0b3ItYnRuXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxibWItaWNvblxyXG4gICAgICAgICAgaWNvbj1cImtleWJvYXJkX2RvdWJsZV9hcnJvd19sZWZ0XCJcclxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci1pY29uXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhcGFnaW5hdG9yIHx8ICFwYWdpbmF0b3IuaGFzUHJldmlvdXNQYWdlKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdibWJfdGFibGUtcGFnaW5hdG9yLWJ0bi1kaXNhYmxlZCc6XHJcbiAgICAgICAgICAgICFwYWdpbmF0b3IgfHwgIXBhZ2luYXRvci5oYXNQcmV2aW91c1BhZ2UoKSxcclxuICAgICAgICB9XCJcclxuICAgICAgICAoY2xpY2spPVwicGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpXCJcclxuICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1wYWdpbmF0b3ItYnRuXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxibWItaWNvbiBpY29uPVwia2V5Ym9hcmRfYXJyb3dfbGVmdFwiIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci1pY29uXCIgLz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiIXBhZ2luYXRvciB8fCAhcGFnaW5hdG9yLmhhc05leHRQYWdlKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdibWJfdGFibGUtcGFnaW5hdG9yLWJ0bi1kaXNhYmxlZCc6XHJcbiAgICAgICAgICAgICFwYWdpbmF0b3IgfHwgIXBhZ2luYXRvci5oYXNOZXh0UGFnZSgpLFxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJwYWdpbmF0b3IubmV4dFBhZ2UoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWJ0blwiXHJcbiAgICAgID5cclxuICAgICAgICA8Ym1iLWljb25cclxuICAgICAgICAgIGljb249XCJrZXlib2FyZF9hcnJvd19yaWdodFwiXHJcbiAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1wYWdpbmF0b3ItaWNvblwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiIXBhZ2luYXRvciB8fCAhcGFnaW5hdG9yLmhhc05leHRQYWdlKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdibWJfdGFibGUtcGFnaW5hdG9yLWJ0bi1kaXNhYmxlZCc6XHJcbiAgICAgICAgICAgICFwYWdpbmF0b3IgfHwgIXBhZ2luYXRvci5oYXNOZXh0UGFnZSgpLFxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJwYWdpbmF0b3IubGFzdFBhZ2UoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWJ0blwiXHJcbiAgICAgID5cclxuICAgICAgICA8Ym1iLWljb25cclxuICAgICAgICAgIGljb249XCJrZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWljb25cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXRhYmxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLXRhYmxlcy9ibWItdGFibGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItdGFibGVzL2JtYi10YWJsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUVULE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBRVosaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixLQUFLLEVBRUwsTUFBTSxFQUVOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsUUFBUSxHQUNULE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztB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TTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRWtCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDNEIsV0FBVztzQkFBN0QsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNiLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDSixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBR3BCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEVsZW1lbnRSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIFJlbmRlcmVyMixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBpbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBlZmZlY3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIG1vZGVsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7XG4gIE1hdFRhYmxlRGF0YVNvdXJjZSxcbiAgTWF0VGFibGVNb2R1bGUsXG4gIE1hdFRhYmxlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge1xuICBhbmltYXRlLFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItY2hlY2tib3gvYm1iLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtLCBUYWJsZUNvbmZpZyB9IGZyb20gJy4vYm1iLXRhYmxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQm1iSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm1iRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm1iRGF0ZVJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWRhdGUtcmFuZ2UvYm1iLWRhdGUtcmFuZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkFjdGlvbkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItYWN0aW9uLWljb24vYm1iLWFjdGlvbi1pY29uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIEJtYlRhYmxlTGFuZyA9ICdlbicgfCAnZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkljb25Db21wb25lbnQsXG4gICAgQm1iQ2hlY2tib3hDb21wb25lbnQsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIEJtYklucHV0Q29tcG9uZW50LFxuICAgIEJtYkRyb3Bkb3duQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iRGF0ZVJhbmdlQ29tcG9uZW50LFxuICAgIEJtYkFjdGlvbkljb25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9ibWItdGFibGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi10YWJsZXMuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQsdm9pZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsXG4gICAgICAgIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpLFxuICAgICAgKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iVGFibGVzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9yYXdDb2x1bW5zOiBUYWJsZUNvbHVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfcmF3Q29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcbiAgICBpc1NlbGVjdGFibGU6IGZhbHNlLFxuICAgIGlzRXhwYW5kaWJsZTogZmFsc2UsXG4gICAgaXNQYWdpbmFibGU6IGZhbHNlLFxuICAgIHNob3dBY3Rpb25zOiBmYWxzZSxcbiAgfTtcblxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PiA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKTtcbiAgb3JpZ2luYWxEYXRhOiBhbnlbXSA9IFtdO1xuICBmaWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHRhYmxlRGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHRhYmxlQ29sdW1uczogVGFibGVDb2x1bVtdID0gW107XG4gIGV4cGFuZGVkRWxlbWVudDogYW55O1xuICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG4gIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBwcmVzc2VkID0gZmFsc2U7XG4gIGN1cnJlbnRSZXNpemVJbmRleD86IG51bWJlcjtcbiAgc3RhcnRYPzogbnVtYmVyO1xuICBzdGFydFdpZHRoPzogbnVtYmVyO1xuICBpc1Jlc2l6aW5nUmlnaHQ/OiBib29sZWFuO1xuICByZXNpemFibGVNb3VzZW1vdmU/OiAoKSA9PiB2b2lkO1xuICByZXNpemFibGVNb3VzZXVwPzogKCkgPT4gdm9pZDtcblxuICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgZmlsdGVyc1Zpc2libGUgPSBmYWxzZTtcblxuICBzaG93U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBzaG93RmlsdGVycyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcGFnZVNpemUgPSBpbnB1dDxudW1iZXI+KCk7XG4gIGRhdGEgPSBpbnB1dDxhbnlbXT4oW10pO1xuICBjb2x1bW5zID0gaW5wdXQ8VGFibGVDb2x1bVtdPihbXSk7XG4gIGFjdGlvblRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KG51bGwpO1xuICBjb25maWcgPSBpbnB1dDxUYWJsZUNvbmZpZz4oKTtcbiAgZGV0YWlsVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG4gIHRydW5jYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB3cmFwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGluaXRpYWxUYWJsZVNlbGVjdGlvbiA9IGlucHV0PG51bWJlcltdPihbXSk7XG4gIGxhbmcgPSBpbnB1dDxCbWJUYWJsZUxhbmc+KCdlcycpO1xuICBjbGVhclNlbGVjdGlvbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBAT3V0cHV0KCkgc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsaWNrZWRSb3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIG1hdFRhYmxlUmVmPzogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaGVhZGVyQ2VsbFJlZicpIGhlYWRlckNlbGxSZWYhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjZWxsUmVmJykgY2VsbFJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNldFRhYmxlUmVzaXplKHRoaXMubWF0VGFibGVSZWYhLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmluaXRpYWxUYWJsZVNlbGVjdGlvbigpID8/IFtdO1xuICAgICAgaWYgKHNlbGVjdGVkUm93cy5sZW5ndGggJiYgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIHNlbGVjdGVkUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QodGhpcy5kYXRhU291cmNlLmRhdGFbcm93XSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICB0aGlzLnBhcnNlRGF0YShjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XG4gICAgICB0aGlzLnBhcnNlQ29sdW1ucyhjaGFuZ2VzWydjb2x1bW5zJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10pIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlnKGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2NsZWFyU2VsZWN0aW9uJ10pIHtcbiAgICAgIGlmICh0aGlzLmNsZWFyU2VsZWN0aW9uKCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbi5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHNhZmVWYWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gc2FmZVZhbHVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhOiBhbnksIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hTdHIgPVxuICAgICAgICBgJHtkYXRhLm5hbWV9ICR7ZGF0YS5sYXN0TmFtZX0gJHtkYXRhLmNvdW50cnl9YC50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHNlYXJjaFN0ci5pbmNsdWRlcyhmaWx0ZXIpO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5pbml0aWFsVGFibGVTZWxlY3Rpb24oKSA/PyBbXTtcbiAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aCAmJiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGgpIHtcbiAgICAgIHNlbGVjdGVkUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHRoaXMuZGF0YVNvdXJjZS5kYXRhW3Jvd10pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmF3Q29uZmlnID0gdGhpcy5jb25maWcoKSB8fCB7fTtcbiAgICAvL3RoaXMuYXBwbHlDb2x1bW5zQW5kQ29uZmlnKCk7XG5cbiAgICB0aGlzLnBhcnNlRGF0YSh0aGlzLmRhdGEoKSk7XG4gICAgdGhpcy5wYXJzZUNvbHVtbnModGhpcy5jb2x1bW5zKCkpO1xuICB9XG5cbiAgcGFyc2VEYXRhKGRhdGE6IGFueVtdKSB7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMub3JpZ2luYWxEYXRhID0gZGF0YTtcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuXG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1bXSkge1xuICAgIHRoaXMuX3Jhd0NvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHRoaXMuYXBwbHlDb2x1bW5zQW5kQ29uZmlnKGNvbHVtbnMpO1xuICAgIHRoaXMuc2V0dXBEeW5hbWljRmlsdGVycygpO1xuICB9XG5cbiAgc2FuaXRpemVIVE1MKGxhYmVsOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGxhYmVsKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5kYXRhU291cmNlICYmIHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRUYWJsZVJlc2l6ZSh0aGlzLm1hdFRhYmxlUmVmIS5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2x1bW5zQW5kQ29uZmlnKG5ld0NvbHVtbnM6IFRhYmxlQ29sdW1bXSA9IFtdKSB7XG4gICAgaWYgKCFuZXdDb2x1bW5zIHx8ICFBcnJheS5pc0FycmF5KG5ld0NvbHVtbnMpIHx8IG5ld0NvbHVtbnMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgZGlzcGxheUNvbHVtbnMgPSBbLi4ubmV3Q29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLmRlZildO1xuXG4gICAgaWYgKHRoaXMuX3Jhd0NvbmZpZy5pc0V4cGFuZGlibGUpIHtcbiAgICAgIGRpc3BsYXlDb2x1bW5zLnVuc2hpZnQoJ2V4cGFuZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yYXdDb25maWcuaXNTZWxlY3RhYmxlKSB7XG4gICAgICBkaXNwbGF5Q29sdW1ucy51bnNoaWZ0KCdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcmF3Q29uZmlnLnNob3dBY3Rpb25zKSB7XG4gICAgICBkaXNwbGF5Q29sdW1ucy5wdXNoKCdhY3Rpb25zJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmF3Q29sdW1ucyA9IG5ld0NvbHVtbnM7XG4gICAgdGhpcy50YWJsZUNvbHVtbnMgPSBuZXdDb2x1bW5zO1xuICAgIHRoaXMudGFibGVEaXNwbGF5Q29sdW1ucyA9IGRpc3BsYXlDb2x1bW5zO1xuICAgIHRoaXMudGFibGVDb25maWcgPSB0aGlzLl9yYXdDb25maWc7XG4gIH1cblxuICBzZXRUYWJsZVJlc2l6ZSh0YWJsZVdpZHRoOiBudW1iZXIpIHtcbiAgICBsZXQgdG90V2lkdGggPSAwO1xuICAgIHRoaXMudGFibGVDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29sdW1uLndpZHRoID0gY29sdW1uLndpZHRoIHx8IDUwO1xuICAgICAgdG90V2lkdGggKz0gY29sdW1uLndpZHRoITtcbiAgICB9KTtcbiAgICBjb25zdCBzY2FsZSA9ICh0YWJsZVdpZHRoIC0gNSkgLyB0b3RXaWR0aDtcbiAgfVxuXG4gIG1vdXNlTW92ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5yZXNpemFibGVNb3VzZW1vdmUgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICdkb2N1bWVudCcsXG4gICAgICAnbW91c2Vtb3ZlJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcmVzc2VkICYmIGV2ZW50LmJ1dHRvbnMpIHtcbiAgICAgICAgICBjb25zdCBkeCA9IHRoaXMuaXNSZXNpemluZ1JpZ2h0XG4gICAgICAgICAgICA/IGV2ZW50LnBhZ2VYIC0gdGhpcy5zdGFydFghXG4gICAgICAgICAgICA6IC1ldmVudC5wYWdlWCArIHRoaXMuc3RhcnRYITtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuc3RhcnRXaWR0aCEgKyBkeDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICAgIHRoaXMucmVzaXphYmxlTW91c2V1cCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJlc3NlZCkge1xuICAgICAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzaXplSW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5yZXNpemFibGVNb3VzZW1vdmUhKCk7XG4gICAgICAgIHRoaXMucmVzaXphYmxlTW91c2V1cCEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrUmVzaXppbmcoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSkge1xuICAgIGNvbnN0IGNlbGxEYXRhID0gdGhpcy5nZXRDZWxsRGF0YShpbmRleCk7XG4gICAgdGhpcy5pc1Jlc2l6aW5nUmlnaHQgPVxuICAgICAgaW5kZXggPT09IDAgfHxcbiAgICAgIChNYXRoLmFicyhldmVudC5wYWdlWCAtIGNlbGxEYXRhLnJpZ2h0KSA8IGNlbGxEYXRhLndpZHRoIC8gMiAmJlxuICAgICAgICBpbmRleCAhPT0gdGhpcy50YWJsZUNvbHVtbnMubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBnZXRDZWxsRGF0YShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgaGVhZGVyUm93ID1cbiAgICAgIHRoaXMubWF0VGFibGVSZWYhLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0ucXVlcnlTZWxlY3RvcigndHInKTtcbiAgICBjb25zdCBjZWxsID0gaGVhZGVyUm93LmNoaWxkcmVuW2luZGV4XTtcbiAgICByZXR1cm4gY2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfVxuXG4gIG9uUmVzaXplQ29sdW1uKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmNoZWNrUmVzaXppbmcoZXZlbnQsIGluZGV4KTtcbiAgICB0aGlzLmN1cnJlbnRSZXNpemVJbmRleCA9IGluZGV4O1xuICAgIHRoaXMucHJlc3NlZCA9IHRydWU7XG4gICAgdGhpcy5zdGFydFggPSBldmVudC5wYWdlWDtcbiAgICB0aGlzLnN0YXJ0V2lkdGggPSBldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMubW91c2VNb3ZlKGluZGV4KTtcbiAgfVxuXG4gIG9uU2VsZWN0KCkge1xuICAgIGNvbnN0IGluZGV4U2VsZWN0ZWQgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5yZWR1Y2UoKGFjYywgY3VycmVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKGN1cnJlbnQpKSBhY2MucHVzaChpbmRleCk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgfVxuXG4gIHNldENvbmZpZyhjb25maWc6IFRhYmxlQ29uZmlnKSB7XG4gICAgdGhpcy50YWJsZUNvbmZpZyA9IGNvbmZpZztcblxuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnLmlzRXhwYW5kaWJsZSkge1xuICAgICAgdGhpcy50YWJsZURpc3BsYXlDb2x1bW5zPy51bnNoaWZ0KCdleHBhbmQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZy5pc1NlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMudGFibGVEaXNwbGF5Q29sdW1ucz8udW5zaGlmdCgnc2VsZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVDb25maWcuc2hvd0FjdGlvbnMpIHtcbiAgICAgIHRoaXMudGFibGVEaXNwbGF5Q29sdW1ucz8ucHVzaCgnYWN0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XG4gIH1cblxuICB0b2dnbGVBbGxSb3dzKCkge1xuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIHRoaXMub25TZWxlY3QoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5kYXRhU291cmNlLmRhdGEpO1xuICAgIHRoaXMub25TZWxlY3QoKTtcbiAgfVxuXG4gIGNoZWNrYm94TGFiZWwocm93PzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXJvdykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgJHtyb3cucG9zaXRpb24gKyAxfWA7XG4gIH1cblxuICBpc0V2ZW4ocm93SW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbHRlcmVkSW5kZXggPSB0aGlzLmRhdGFTb3VyY2UuZGF0YVxuICAgICAgLmZpbHRlcigocm93KSA9PiAhcm93LmlzRGV0YWlsKVxuICAgICAgLmZpbmRJbmRleCgocm93LCBpbmRleCkgPT4gaW5kZXggPT09IHJvd0luZGV4KTtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleCAlIDIgPT09IDA7XG4gIH1cblxuICBpc09kZChyb3dJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzRXZlbihyb3dJbmRleCk7XG4gIH1cblxuICBoYXNFbGxpcHNpcyhlbGVtZW50OiBIVE1MVGFibGVDZWxsRWxlbWVudCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSBuZXcgRWxlbWVudFJlZihlbGVtZW50KTtcbiAgICByZXR1cm4gKFxuICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoID5cbiAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aFxuICAgICk7XG4gIH1cblxuICBnZXRQYWdpbmF0aW9uVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgICF0aGlzLnBhZ2luYXRvciB8fFxuICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSA9PT0gMFxuICAgICkge1xuICAgICAgcmV0dXJuIGAwIGRlICR7dGhpcy5wYWdpbmF0b3I/Lmxlbmd0aCB8fCAwfWA7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggKiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSArIDE7XG4gICAgY29uc3QgZW5kSW5kZXggPSBNYXRoLm1pbihcbiAgICAgICh0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggKyAxKSAqIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxuICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoLFxuICAgICk7XG4gICAgcmV0dXJuIGAke3N0YXJ0SW5kZXh9IC0gJHtlbmRJbmRleH0gZGUgJHt0aGlzLnBhZ2luYXRvci5sZW5ndGh9YDtcbiAgfVxuXG4gIGlzVGVtcGxhdGVSZWYodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG5cbiAgb25TZWxlY3RSb3cocm93OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrZWRSb3cuZW1pdChyb3cpO1xuICB9XG5cbiAgZ2V0Q2VsbENsYXNzZXMocm93OiBhbnksIGNvbHVtbktleTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICBjb25zdCBzZW1hbnRpY1R5cGUgPSByb3dbY29sdW1uS2V5ICsgJ1R5cGUnXTtcbiAgICBjb25zdCBjbGFzc2VzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHtcbiAgICAgICdibWJfdGFibGUtc3RpY2t5JzogaW5kZXggPT09IDAsXG4gICAgICB0cnVuY2F0ZWQ6IHRoaXMudHJ1bmNhdGUoKSxcbiAgICAgIHdyYXBwZWQ6IHRoaXMud3JhcCgpLFxuICAgIH07XG5cbiAgICBpZiAoc2VtYW50aWNUeXBlKSB7XG4gICAgICBjbGFzc2VzWydibWJfdGFibGUtJyArIHNlbWFudGljVHlwZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgc2V0dXBEeW5hbWljRmlsdGVycygpIHtcbiAgICB0aGlzLl9yYXdDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gY29sdW1uLmRhdGFLZXk7XG4gICAgICBzd2l0Y2ggKGNvbHVtbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woYCR7a2V5fV9taW5gLCBuZXcgRm9ybUNvbnRyb2woKSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woYCR7a2V5fV9tYXhgLCBuZXcgRm9ybUNvbnRyb2woKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fZnJvbWAsIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X3RvYCwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKGAke2tleX1fc29ydGAsIG5ldyBGb3JtQ29udHJvbCgnbm9uZScpKTtcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChgJHtrZXl9X2NvbnRhaW5zYCwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFwcGx5RmlsdGVycygpKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycygpOiB2b2lkIHtcbiAgICBsZXQgZmlsdGVyZWQgPSBbLi4udGhpcy5vcmlnaW5hbERhdGFdO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSBhcyBhbnk7XG5cbiAgICB0aGlzLl9yYXdDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gY29sdW1uLmRhdGFLZXk7XG4gICAgICBjb25zdCB0eXBlID0gY29sdW1uLnR5cGU7XG5cbiAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBtaW4gPSB2YWx1ZXNbYCR7a2V5fV9taW5gXTtcbiAgICAgICAgY29uc3QgbWF4ID0gdmFsdWVzW2Ake2tleX1fbWF4YF07XG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9ICtyb3dba2V5XTtcbiAgICAgICAgICByZXR1cm4gKG1pbiA9PSBudWxsIHx8IHZhbHVlID49IG1pbikgJiYgKG1heCA9PSBudWxsIHx8IHZhbHVlIDw9IG1heCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIGNvbnN0IGZyb20gPSB2YWx1ZXNbYCR7a2V5fV9mcm9tYF1cbiAgICAgICAgICA/IG5ldyBEYXRlKHZhbHVlc1tgJHtrZXl9X2Zyb21gXSkuZ2V0VGltZSgpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCB0byA9IHZhbHVlc1tgJHtrZXl9X3RvYF1cbiAgICAgICAgICA/IG5ldyBEYXRlKHZhbHVlc1tgJHtrZXl9X3RvYF0pLmdldFRpbWUoKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGVWYWwgPSBuZXcgRGF0ZShyb3dba2V5XSkuZ2V0VGltZSgpO1xuICAgICAgICAgIHJldHVybiAoIWZyb20gfHwgZGF0ZVZhbCA+PSBmcm9tKSAmJiAoIXRvIHx8IGRhdGVWYWwgPD0gdG8pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHZhbHVlc1tgJHtrZXl9X2NvbnRhaW5zYF0/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChzZWFyY2gpIHtcbiAgICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocm93KSA9PlxuICAgICAgICAgICAgcm93W2tleV0/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc29ydCA9IHZhbHVlc1tgJHtrZXl9X3NvcnRgXTtcbiAgICAgICAgaWYgKHNvcnQgPT09ICdhc2MnKSB7XG4gICAgICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gYVtrZXldPy5sb2NhbGVDb21wYXJlKGJba2V5XSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHNvcnQgPT09ICdkZXNjJykge1xuICAgICAgICAgIGZpbHRlcmVkLnNvcnQoKGEsIGIpID0+IGJba2V5XT8ubG9jYWxlQ29tcGFyZShhW2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBmaWx0ZXJlZDtcbiAgfVxuXG4gIGdldEZvcm1Db250cm9sKG5hbWU6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIHRvZ2dsZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzVmlzaWJsZSA9ICF0aGlzLmZpbHRlcnNWaXNpYmxlO1xuICB9XG59XG4iLCJAaWYgKHNob3dTZWFyY2goKSB8fCBzaG93RmlsdGVycygpKSB7XG4gIDxkaXYgY2xhc3M9XCJibWJfdGFibGUtaGVhZGVyXCI+XG4gICAgQGlmIChzaG93U2VhcmNoKCkpIHtcbiAgICAgIDxibWItaW5wdXRcbiAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtc2VhcmNoXCJcbiAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCdXNjYXInXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCInbm9ybWFsJ1wiXG4gICAgICAgIFtjb250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgPjwvYm1iLWlucHV0PlxuICAgIH1cblxuICAgIEBpZiAoc2hvd0ZpbHRlcnMoKSkge1xuICAgICAgPGJtYi1hY3Rpb24taWNvblxuICAgICAgICBbaWRFbGVtZW50XT1cIicnXCJcbiAgICAgICAgW2ljb25dPVwiJ2ZpbHRlcl9saXN0J1wiXG4gICAgICAgIFtpY29uU2l6ZV09XCIyNFwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJ0b2dnbGVGaWx0ZXJzKClcIlxuICAgICAgPjwvYm1iLWFjdGlvbi1pY29uPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlLWZpbHRlcnNcIiAqbmdJZj1cImZpbHRlcnNWaXNpYmxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnNcIj5cbiAgICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiIGNsYXNzPVwiYm1iX3RhYmxlLWZpbHRlci1pdGVtXCI+XG4gICAgICAgICAgICA8IS0tIFNUUklORyAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdHJpbmcnXCI+XG4gICAgICAgICAgICAgIDxibWItZHJvcGRvd25cbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiW1xuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnU2luIG9yZGVuJywgdmFsdWU6ICdub25lJywgaWQ6ICdub25lJyB9LFxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnQS1aJywgdmFsdWU6ICdhc2MnLCBpZDogJ2FzYycgfSxcbiAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1otQScsIHZhbHVlOiAnZGVzYycsIGlkOiAnZGVzYycgfSxcbiAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ09yZGVuYXInXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX3NvcnQnKS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICBnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfc29ydCcpLnNldFZhbHVlKCRldmVudClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gTlVNQkVSIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1udW1iZXJcIj5cbiAgICAgICAgICAgICAgICA8Ym1iLWlucHV0XG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInTcOtbidcIlxuICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX21pbicpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxibWItaW5wdXRcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInTcOheCdcIlxuICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX21heCcpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIERBVEUgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgPGJtYi1kYXRlLXJhbmdlXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyU3RhcnREYXRlXT1cIidEZXNkZSdcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlckVuZERhdGVdPVwiJ0hhc3RhJ1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ2NhbGVuZGFyX21vbnRoJ1wiXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXG4gICAgICAgICAgICAgICAgW211bHRpcGxlUm93XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sU3RhcnRdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX2Zyb20nKVwiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xFbmRdPVwiZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX3RvJylcIlxuICAgICAgICAgICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICBnZXRGb3JtQ29udHJvbChjb2x1bW4uZGF0YUtleSArICdfZnJvbScpLnNldFZhbHVlKCRldmVudClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChlbmREYXRlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgZ2V0Rm9ybUNvbnRyb2woY29sdW1uLmRhdGFLZXkgKyAnX3RvJykuc2V0VmFsdWUoJGV2ZW50KVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPGRpdiBjbGFzcz1cImJtYl90YWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiYm1iX3RhYmxlLWNvbnRhaW5lclwiPlxuICAgIDx0YWJsZVxuICAgICAgbWF0LXRhYmxlXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLWNvbnRlbnRcIlxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXG4gICAgPlxuICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiIHN0aWNreT5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImJtYl90YWJsZS1jaGVja2JveFwiPlxuICAgICAgICAgIDxibWItY2hlY2tib3hcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93cygpIDogbnVsbFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cImNoZWNrYm94TGFiZWwoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cImJtYl90YWJsZS1jaGVja2JveFwiPlxuICAgICAgICAgIDxibWItY2hlY2tib3hcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbDsgb25TZWxlY3QoKVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiY2hlY2tib3hMYWJlbChyb3cpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBvbmtleXByZXNzPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gRXhwYW5kIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kXCIgc3RpY2t5PlxuICAgICAgICA8dGhcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLWV4cGFuZFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJvdyBhY3Rpb25zXCJcbiAgICAgICAgPlxuICAgICAgICAgICZuYnNwO1xuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJibWJfdGFibGUtZXhwYW5kXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5kZXRhaWxcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHBhbmQgcm93XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGV4cGFuZGVkRWxlbWVudCA9IGV4cGFuZGVkRWxlbWVudCA9PT0gcm93ID8gbnVsbCA6IHJvdztcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJ1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIERpc3BsYXkgQ29sdW1ucyAtLT5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiB0YWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5kZWZcIiBbc3RpY2t5XT1cImkgPT09IDBcIj5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICNoZWFkZXJDZWxsXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJoYXNFbGxpcHNpcyhoZWFkZXJDZWxsKSA/IGNvbHVtbi5sYWJlbCA6ICcnXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImJtYl90b29sdGlwXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2JtYl90YWJsZS1zdGlja3knOiBpID09PSAwLFxuICAgICAgICAgICAgICB0cnVuY2F0ZWQ6IHRydW5jYXRlKCksXG4gICAgICAgICAgICAgIHdyYXBwZWQ6IHdyYXAoKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gVMOtdHVsbyAtLT5cbiAgICAgICAgICAgIEBpZiAoY29sdW1uLmh0bWxMYWJlbCkge1xuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaHRtbExhYmVsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb2x1bW46IGNvbHVtbiwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIHt7IHRoaXMubGFuZygpID09PSBcImVzXCIgPyBjb2x1bW4ubGFiZWwgOiBjb2x1bW4ubGFiZWxFbiB9fVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFJlc2l6ZSBIYW5kbGUgLS0+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1yZXNpemVcIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICBtYXQtY2VsbFxuICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgYSA9IGluZGV4XCJcbiAgICAgICAgICAgICNjZWxsXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJoYXNFbGxpcHNpcyhjZWxsKSA/IHJvd1tjb2x1bW4uZGF0YUtleV0gOiAnJ1wiXG4gICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJibWJfdG9vbHRpcFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3Nlcyhyb3csIGNvbHVtbi5kYXRhS2V5LCBpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpc1RlbXBsYXRlUmVmKHJvd1tjb2x1bW4uZGF0YUtleSArIFwiVGVtcGxhdGVcIl0pKSB7XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd1tjb2x1bW4uZGF0YUtleSArICdUZW1wbGF0ZSddXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdyB9XCJcbiAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgcm93W2NvbHVtbi5kYXRhS2V5XT8ucHJvcGVydHlOYW1lIHx8IHJvd1tjb2x1bW4uZGF0YUtleV0gfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiIHN0aWNreUVuZD5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImJtYl90YWJsZS1hY3Rpb25zXCI+PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwiYm1iX3RhYmxlLWFjdGlvbnNcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFjdGlvblRlbXBsYXRlKCkhXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUm93IHRvIGV4cGFuZCAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cbiAgICAgICAgPHRkXG4gICAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwidGFibGVEaXNwbGF5Q29sdW1ucy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtZGV0YWlsXCJcbiAgICAgICAgICAgIFtAZGV0YWlsRXhwYW5kXT1cInJvdyA9PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxUZW1wbGF0ZSgpOyBjb250ZXh0OiB7IHJvdzogcm93IH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUm93cyAtLT5cbiAgICAgIDx0clxuICAgICAgICBtYXQtaGVhZGVyLXJvd1xuICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidGFibGVEaXNwbGF5Q29sdW1uc1wiXG4gICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXJvd1wiXG4gICAgICA+PC90cj5cblxuICAgICAgPHRyXG4gICAgICAgIG1hdC1yb3dcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IHRhYmxlRGlzcGxheUNvbHVtbnM7IGxldCBpID0gZGF0YUluZGV4XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Um93KHJvdylcIlxuICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1yb3dcIlxuICAgICAgICBbY2xhc3MuYm1iX3RhYmxlLWV4cGFuZGlibGVdPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3dcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2JtYl90YWJsZS1ldmVuJzogaXNFdmVuKGkpLFxuICAgICAgICAgICdibWJfdGFibGUtb2RkJzogaXNPZGQoaSksXG4gICAgICAgIH1cIlxuICAgICAgPjwvdHI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZz8uaXNFeHBhbmRpYmxlXCI+XG4gICAgICAgIDx0clxuICAgICAgICAgIG1hdC1yb3dcbiAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddOyBsZXQgaSA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtZGV0YWlsc1wiXG4gICAgICAgICAgW2NsYXNzLmJtYl90YWJsZS1leHBhbmRlZF09XCJleHBhbmRlZEVsZW1lbnQgPT09IHJvd1wiXG4gICAgICAgID48L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQYWdpbmF0b3IgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZz8uaXNQYWdpbmFibGVcIiBzdGlja3k+XG4gICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICNwYWdpbmF0b3JcbiAgICAgIFtwYWdlU2l6ZV09XCJ0aGlzLnBhZ2VTaXplKClcIlxuICAgICAgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC9tYXQtcGFnaW5hdG9yPlxuXG4gICAgPGRpdiBjbGFzcz1cImJtYl90YWJsZS1wYWdpbmF0b3JcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci10ZXh0XCI+e3sgZ2V0UGFnaW5hdGlvblRleHQoKSB9fTwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwYWdpbmF0b3IgfHwgIXBhZ2luYXRvci5oYXNQcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnYm1iX3RhYmxlLXBhZ2luYXRvci1idG4tZGlzYWJsZWQnOlxuICAgICAgICAgICAgIXBhZ2luYXRvciB8fCAhcGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpLFxuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cInBhZ2luYXRvci5maXJzdFBhZ2UoKVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci1idG5cIlxuICAgICAgPlxuICAgICAgICA8Ym1iLWljb25cbiAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnRcIlxuICAgICAgICAgIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci1pY29uXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiIXBhZ2luYXRvciB8fCAhcGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdibWJfdGFibGUtcGFnaW5hdG9yLWJ0bi1kaXNhYmxlZCc6XG4gICAgICAgICAgICAhcGFnaW5hdG9yIHx8ICFwYWdpbmF0b3IuaGFzUHJldmlvdXNQYWdlKCksXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwicGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICA+XG4gICAgICAgIDxibWItaWNvbiBpY29uPVwia2V5Ym9hcmRfYXJyb3dfbGVmdFwiIGNsYXNzPVwiYm1iX3RhYmxlLXBhZ2luYXRvci1pY29uXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiIXBhZ2luYXRvciB8fCAhcGFnaW5hdG9yLmhhc05leHRQYWdlKClcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2JtYl90YWJsZS1wYWdpbmF0b3ItYnRuLWRpc2FibGVkJzpcbiAgICAgICAgICAgICFwYWdpbmF0b3IgfHwgIXBhZ2luYXRvci5oYXNOZXh0UGFnZSgpLFxuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cInBhZ2luYXRvci5uZXh0UGFnZSgpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWJ0blwiXG4gICAgICA+XG4gICAgICAgIDxibWItaWNvblxuICAgICAgICAgIGljb249XCJrZXlib2FyZF9hcnJvd19yaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWljb25cIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIhcGFnaW5hdG9yIHx8ICFwYWdpbmF0b3IuaGFzTmV4dFBhZ2UoKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnYm1iX3RhYmxlLXBhZ2luYXRvci1idG4tZGlzYWJsZWQnOlxuICAgICAgICAgICAgIXBhZ2luYXRvciB8fCAhcGFnaW5hdG9yLmhhc05leHRQYWdlKCksXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwicGFnaW5hdG9yLmxhc3RQYWdlKClcIlxuICAgICAgICBjbGFzcz1cImJtYl90YWJsZS1wYWdpbmF0b3ItYnRuXCJcbiAgICAgID5cbiAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgaWNvbj1cImtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJibWJfdGFibGUtcGFnaW5hdG9yLWljb25cIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|