@onemrvapublic/design-system 18.3.0-develop.1 → 19.0.0-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +0 -1
- package/_utils.scss +3 -3
- package/fesm2022/onemrvapublic-design-system-core.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-core.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-flag-icon.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-flag-icon.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-layout.mjs +188 -97
- package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs +11 -11
- package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs +27 -18
- package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +107 -86
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs +4 -4
- package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs +10 -13
- package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +31 -51
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-notification.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-notification.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +24 -35
- package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-panel.mjs +28 -29
- package/fesm2022/onemrvapublic-design-system-mat-panel.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs +20 -20
- package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs +48 -149
- package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs +21 -53
- package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs +14 -17
- package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs +11 -12
- package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +12 -13
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs +16 -41
- package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs +11 -11
- package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +9 -9
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs +26 -41
- package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +51 -64
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-toast.mjs +12 -12
- package/fesm2022/onemrvapublic-design-system-mat-toast.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs +18 -18
- package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-page-error.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-page-error.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-page-not-found.mjs +32 -26
- package/fesm2022/onemrvapublic-design-system-page-not-found.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-shared.mjs +70 -62
- package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
- package/layout/index.d.ts +5 -5
- package/layout/src/components/layout/_layout-mixin.component.scss +5 -5
- package/layout/src/components/layout/layout.component.d.ts +1 -1
- package/layout/src/components/layout/layout.component.scss +7 -0
- package/layout/src/components/layout-after-nav/layout-after-nav.component.d.ts +1 -1
- package/layout/src/components/layout-content/layout-content.component.d.ts +1 -1
- package/layout/src/components/layout-footer/layout-footer.component.d.ts +1 -1
- package/layout/src/components/layout-login-menu/layout-login-menu.component.d.ts +1 -1
- package/layout/src/components/layout-route/layout-route.component.d.ts +1 -1
- package/layout/src/components/layout-sidenav/layout-sidenav.component.d.ts +1 -1
- package/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.d.ts +1 -1
- package/layout/src/components/layout-subroute/layout-subroute.component.d.ts +1 -1
- package/layout/src/components/layout-title/layout-title.component.d.ts +1 -1
- package/layout/src/decorators/coerce-boolean-input.decorator.d.ts +1 -0
- package/layout/src/decorators/index.d.ts +2 -0
- package/layout/src/decorators/observable-content.decorator.d.ts +1 -0
- package/layout/src/directives/drawer-host.directive.d.ts +1 -1
- package/layout/src/directives/index.d.ts +2 -0
- package/layout/src/{striphtml.pipe.d.ts → directives/striphtml.pipe.d.ts} +1 -1
- package/layout/src/enums/index.d.ts +1 -0
- package/layout/src/layout.module.d.ts +3 -3
- package/layout/src/models/index.d.ts +2 -0
- package/layout/src/services/index.d.ts +1 -0
- package/mat-avatar/src/onemrva-mat-avatar.component.d.ts +1 -1
- package/mat-avatar/src/onemrva-mat-avatar.module.d.ts +1 -3
- package/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.d.ts +1 -1
- package/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.d.ts +5 -5
- package/mat-datepicker-header/src/_onemrva-mat-datepicker-header.component.scss +1 -1
- package/mat-file-upload/index.d.ts +1 -0
- package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.d.ts +1 -1
- package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.scss +3 -3
- package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.d.ts +1 -1
- package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.scss +2 -1
- package/mat-file-upload/src/directives/dnd.directive.d.ts +1 -1
- package/mat-file-upload/src/onemrva-mat-file-upload.module.d.ts +1 -1
- package/mat-message-box/src/onemrva-mat-message-box.component.d.ts +1 -1
- package/mat-message-box/src/onemrva-mat-message-box.module.d.ts +1 -4
- package/mat-multi-select/src/onemrva-mat-multi-select.component.d.ts +1 -1
- package/mat-multi-select/src/onemrva-mat-multi-select.module.d.ts +1 -9
- package/mat-paginator/src/onemrva-mat-paginator.component.d.ts +1 -1
- package/mat-paginator/src/onemrva-mat-paginator.module.d.ts +1 -6
- package/mat-panel/src/onemrva-mat-panel-content.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel-icon.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel-title-action.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel-title.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel.module.d.ts +1 -2
- package/mat-pop-over/src/onemrva-mat-pop-over-content.component.d.ts +1 -1
- package/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.d.ts +1 -1
- package/mat-pop-over/src/onemrva-mat-pop-over.component.d.ts +1 -1
- package/mat-pop-over/src/onemrva-mat-pop-over.module.d.ts +1 -3
- package/mat-select-search/src/mat-select-no-entries-found.directive.d.ts +1 -1
- package/mat-select-search/src/mat-select-search-clear.directive.d.ts +1 -1
- package/mat-select-search/src/mat-select-search.component.d.ts +1 -79
- package/mat-select-search/src/mat-select-search.module.d.ts +1 -12
- package/mat-selectable-box/src/onemrva-mat-selectable-box.component.d.ts +1 -1
- package/mat-selectable-box/src/onemrva-mat-selectable-box.module.d.ts +1 -11
- package/mat-side-menu/src/onemrva-mat-side-menu.component.d.ts +1 -1
- package/mat-side-menu/src/onemrva-mat-side-menu.module.d.ts +1 -5
- package/mat-skeleton/src/onemrva-mat-skeleton.component.d.ts +1 -1
- package/mat-skeleton/src/onemrva-mat-skeleton.module.d.ts +1 -2
- package/mat-spinner/src/onemrva-mat-spinner.component.d.ts +1 -1
- package/mat-spinner/src/onemrva-mat-spinner.module.d.ts +1 -1
- package/mat-stepper/src/onemrva-mat-stepper.component.d.ts +1 -1
- package/mat-stepper/src/onemrva-mat-stepper.module.d.ts +2 -7
- package/mat-stepper/src/onemrva-mat-stepper.scss +1 -1
- package/mat-sticker/src/onemrva-mat-sticker.component.d.ts +1 -1
- package/mat-sticker/src/onemrva-mat-sticker.module.d.ts +1 -2
- package/mat-task-list/src/onemrva-mat-task-content.component.d.ts +1 -1
- package/mat-task-list/src/onemrva-mat-task-list.component.d.ts +1 -1
- package/mat-task-list/src/onemrva-mat-task-list.module.d.ts +1 -5
- package/mat-task-list/src/onemrva-mat-task-title.component.d.ts +1 -1
- package/mat-task-list/src/onemrva-mat-task.component.d.ts +1 -1
- package/mat-timepicker/src/clock/clock.component.d.ts +1 -1
- package/mat-timepicker/src/onemrva-mat-timepicker.component.d.ts +1 -1
- package/mat-timepicker/src/onemrva-mat-timepicker.module.d.ts +1 -7
- package/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.d.ts +1 -1
- package/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.d.ts +2 -2
- package/mat-timepicker/src/timepicker.directive.d.ts +1 -1
- package/mat-toast/src/onemrva-mat-toast.component.d.ts +1 -1
- package/mat-toast/src/onemrva-mat-toast.module.d.ts +2 -3
- package/mat-tooltip/src/onemrva-mat-tooltip.component.d.ts +1 -1
- package/mat-tooltip/src/onemrva-mat-tooltip.directive.d.ts +1 -1
- package/mat-tooltip/src/onemrva-mat-tooltip.module.d.ts +1 -2
- package/package.json +5 -89
- package/page-not-found/src/page-not-found-action.component.d.ts +1 -1
- package/page-not-found/src/page-not-found-extra.component.d.ts +1 -1
- package/page-not-found/src/page-not-found-invader.component.d.ts +1 -1
- package/page-not-found/src/page-not-found-mixin.component.scss +1 -1
- package/page-not-found/src/page-not-found.component.d.ts +1 -1
- package/page-not-found/src/page-not-found.module.d.ts +1 -3
- package/shared/src/lib/directives/clipboard.directive.d.ts +1 -1
- package/shared/src/lib/directives/color.directive.d.ts +1 -1
- package/shared/src/lib/directives/digit-only.directive.d.ts +1 -1
- package/shared/src/lib/directives/iconRight.directive.d.ts +1 -1
- package/shared/src/lib/directives/if-width-is.directive.d.ts +1 -1
- package/shared/src/lib/directives/mask.directive.d.ts +1 -1
- package/shared/src/lib/directives/mat-row-clickable.directive.d.ts +1 -1
- package/shared/src/lib/shared.module.d.ts +1 -2
- package/esm2022/core/index.mjs +0 -4
- package/esm2022/core/onemrvapublic-design-system-core.mjs +0 -5
- package/esm2022/core/src/lib/core.module.mjs +0 -39
- package/esm2022/core/src/lib/services/index.mjs +0 -3
- package/esm2022/core/src/lib/services/onemrva-error-handler.service.mjs +0 -26
- package/esm2022/core/src/lib/services/onemrva-missing-translation.service.mjs +0 -6
- package/esm2022/flag-icon/index.mjs +0 -2
- package/esm2022/flag-icon/onemrvapublic-design-system-flag-icon.mjs +0 -5
- package/esm2022/flag-icon/src/flag-icon.component.mjs +0 -41
- package/esm2022/layout/index.mjs +0 -8
- package/esm2022/layout/onemrvapublic-design-system-layout.mjs +0 -5
- package/esm2022/layout/src/components/index.mjs +0 -36
- package/esm2022/layout/src/components/layout/layout.component.mjs +0 -177
- package/esm2022/layout/src/components/layout-after-nav/layout-after-nav.component.mjs +0 -25
- package/esm2022/layout/src/components/layout-content/layout-content.component.mjs +0 -25
- package/esm2022/layout/src/components/layout-drawer-actions/layout-drawer-actions.component.mjs +0 -16
- package/esm2022/layout/src/components/layout-drawer-content/layout-drawer-content.component.mjs +0 -16
- package/esm2022/layout/src/components/layout-drawer-title/layout-drawer-title.component.mjs +0 -20
- package/esm2022/layout/src/components/layout-footer/layout-footer.component.mjs +0 -17
- package/esm2022/layout/src/components/layout-login-menu/layout-login-menu.component.mjs +0 -25
- package/esm2022/layout/src/components/layout-route/layout-route.component.mjs +0 -65
- package/esm2022/layout/src/components/layout-sidenav/layout-sidenav.component.mjs +0 -83
- package/esm2022/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.mjs +0 -17
- package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +0 -55
- package/esm2022/layout/src/components/layout-title/layout-title.component.mjs +0 -25
- package/esm2022/layout/src/directives/drawer-host.directive.mjs +0 -41
- package/esm2022/layout/src/enums/environment.enum.mjs +0 -8
- package/esm2022/layout/src/layout.module.mjs +0 -95
- package/esm2022/layout/src/models/onem-language.model.mjs +0 -2
- package/esm2022/layout/src/models/onemrva-profile.model.mjs +0 -46
- package/esm2022/layout/src/services/drawer.service.mjs +0 -31
- package/esm2022/layout/src/striphtml.pipe.mjs +0 -16
- package/esm2022/mat-avatar/index.mjs +0 -3
- package/esm2022/mat-avatar/onemrvapublic-design-system-mat-avatar.mjs +0 -5
- package/esm2022/mat-avatar/src/onemrva-mat-avatar.component.mjs +0 -440
- package/esm2022/mat-avatar/src/onemrva-mat-avatar.module.mjs +0 -19
- package/esm2022/mat-badge/index.mjs +0 -6
- package/esm2022/mat-badge/onemrvapublic-design-system-mat-badge.mjs +0 -5
- package/esm2022/mat-badge/src/onemrva-mat-badge.component.mjs +0 -250
- package/esm2022/mat-badge/src/onemrva-mat-badge.module.mjs +0 -16
- package/esm2022/mat-breadcrumb/index.mjs +0 -7
- package/esm2022/mat-breadcrumb/onemrvapublic-design-system-mat-breadcrumb.mjs +0 -5
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.mjs +0 -19
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.model.mjs +0 -2
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.mjs +0 -20
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.mjs +0 -59
- package/esm2022/mat-carousel/index.mjs +0 -3
- package/esm2022/mat-carousel/onemrvapublic-design-system-mat-carousel.mjs +0 -5
- package/esm2022/mat-carousel/src/mat-carousel-item/onemrva-mat-carousel-item.component.mjs +0 -23
- package/esm2022/mat-carousel/src/onemrva-mat-carousel.component.mjs +0 -175
- package/esm2022/mat-copy-to-clipboard/index.mjs +0 -2
- package/esm2022/mat-copy-to-clipboard/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +0 -5
- package/esm2022/mat-copy-to-clipboard/src/components/copy-to-clipboard.component.mjs +0 -85
- package/esm2022/mat-datepicker-header/index.mjs +0 -5
- package/esm2022/mat-datepicker-header/onemrvapublic-design-system-mat-datepicker-header.mjs +0 -5
- package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +0 -203
- package/esm2022/mat-empty-row/index.mjs +0 -2
- package/esm2022/mat-empty-row/onemrvapublic-design-system-mat-empty-row.mjs +0 -5
- package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +0 -35
- package/esm2022/mat-file-upload/index.mjs +0 -11
- package/esm2022/mat-file-upload/onemrvapublic-design-system-mat-file-upload.mjs +0 -5
- package/esm2022/mat-file-upload/src/components/index.mjs +0 -9
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +0 -88
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +0 -195
- package/esm2022/mat-file-upload/src/directives/dnd.directive.mjs +0 -53
- package/esm2022/mat-file-upload/src/models/action-config.model.mjs +0 -2
- package/esm2022/mat-file-upload/src/models/progress-file.model.mjs +0 -49
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload-itf.store.mjs +0 -2
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.module.mjs +0 -51
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.service.mjs +0 -49
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +0 -320
- package/esm2022/mat-input-birthplace/index.mjs +0 -5
- package/esm2022/mat-input-birthplace/onemrvapublic-design-system-mat-input-birthplace.mjs +0 -5
- package/esm2022/mat-input-birthplace/src/country-item.component.mjs +0 -31
- package/esm2022/mat-input-birthplace/src/onemrva-mat-input-birthplace.component.mjs +0 -120
- package/esm2022/mat-input-country/index.mjs +0 -5
- package/esm2022/mat-input-country/onemrvapublic-design-system-mat-input-country.mjs +0 -5
- package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +0 -90
- package/esm2022/mat-input-enterprise-number/index.mjs +0 -5
- package/esm2022/mat-input-enterprise-number/onemrvapublic-design-system-mat-input-enterprise-number.mjs +0 -5
- package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +0 -180
- package/esm2022/mat-input-iban/index.mjs +0 -5
- package/esm2022/mat-input-iban/onemrvapublic-design-system-mat-input-iban.mjs +0 -5
- package/esm2022/mat-input-iban/src/onemrva-mat-input-iban.component.mjs +0 -295
- package/esm2022/mat-input-phone/index.mjs +0 -6
- package/esm2022/mat-input-phone/onemrvapublic-design-system-mat-input-phone.mjs +0 -5
- package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +0 -234
- package/esm2022/mat-input-phone/src/phone-number.directive.mjs +0 -51
- package/esm2022/mat-message-box/index.mjs +0 -3
- package/esm2022/mat-message-box/onemrvapublic-design-system-mat-message-box.mjs +0 -5
- package/esm2022/mat-message-box/src/onemrva-mat-message-box.component.mjs +0 -175
- package/esm2022/mat-message-box/src/onemrva-mat-message-box.module.mjs +0 -20
- package/esm2022/mat-multi-select/index.mjs +0 -3
- package/esm2022/mat-multi-select/onemrvapublic-design-system-mat-multi-select.mjs +0 -5
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +0 -200
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.module.mjs +0 -51
- package/esm2022/mat-notification/index.mjs +0 -2
- package/esm2022/mat-notification/onemrvapublic-design-system-mat-notification.mjs +0 -5
- package/esm2022/mat-notification/src/onemrva-mat-notification.component.mjs +0 -165
- package/esm2022/mat-paginator/index.mjs +0 -6
- package/esm2022/mat-paginator/onemrvapublic-design-system-mat-paginator.mjs +0 -5
- package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +0 -217
- package/esm2022/mat-paginator/src/onemrva-mat-paginator.module.mjs +0 -36
- package/esm2022/mat-panel/index.mjs +0 -7
- package/esm2022/mat-panel/onemrvapublic-design-system-mat-panel.mjs +0 -5
- package/esm2022/mat-panel/src/onemrva-mat-panel-content.component.mjs +0 -17
- package/esm2022/mat-panel/src/onemrva-mat-panel-icon.component.mjs +0 -17
- package/esm2022/mat-panel/src/onemrva-mat-panel-title-action.component.mjs +0 -17
- package/esm2022/mat-panel/src/onemrva-mat-panel-title.component.mjs +0 -27
- package/esm2022/mat-panel/src/onemrva-mat-panel.component.mjs +0 -132
- package/esm2022/mat-panel/src/onemrva-mat-panel.module.mjs +0 -42
- package/esm2022/mat-pop-over/index.mjs +0 -5
- package/esm2022/mat-pop-over/onemrvapublic-design-system-mat-pop-over.mjs +0 -5
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-content.component.mjs +0 -23
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.mjs +0 -23
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.component.mjs +0 -46
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.module.mjs +0 -30
- package/esm2022/mat-progress-bar/index.mjs +0 -2
- package/esm2022/mat-progress-bar/onemrvapublic-design-system-mat-progress-bar.mjs +0 -5
- package/esm2022/mat-progress-bar/src/onemrva-mat-progress-bar.component.mjs +0 -29
- package/esm2022/mat-select-search/index.mjs +0 -4
- package/esm2022/mat-select-search/onemrvapublic-design-system-mat-select-search.mjs +0 -5
- package/esm2022/mat-select-search/src/default-options.mjs +0 -35
- package/esm2022/mat-select-search/src/mat-select-no-entries-found.directive.mjs +0 -22
- package/esm2022/mat-select-search/src/mat-select-search-clear.directive.mjs +0 -20
- package/esm2022/mat-select-search/src/mat-select-search.component.mjs +0 -589
- package/esm2022/mat-select-search/src/mat-select-search.module.mjs +0 -79
- package/esm2022/mat-selectable-box/index.mjs +0 -6
- package/esm2022/mat-selectable-box/onemrvapublic-design-system-mat-selectable-box.mjs +0 -5
- package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.component.mjs +0 -56
- package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.module.mjs +0 -56
- package/esm2022/mat-side-menu/index.mjs +0 -6
- package/esm2022/mat-side-menu/onemrvapublic-design-system-mat-side-menu.mjs +0 -5
- package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.component.mjs +0 -48
- package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.module.mjs +0 -21
- package/esm2022/mat-skeleton/index.mjs +0 -4
- package/esm2022/mat-skeleton/onemrvapublic-design-system-mat-skeleton.mjs +0 -5
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton-enums.mjs +0 -20
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.component.mjs +0 -202
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.module.mjs +0 -18
- package/esm2022/mat-spinner/index.mjs +0 -7
- package/esm2022/mat-spinner/onemrvapublic-design-system-mat-spinner.mjs +0 -5
- package/esm2022/mat-spinner/src/onemrva-mat-loading.directive.mjs +0 -33
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +0 -73
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.module.mjs +0 -18
- package/esm2022/mat-stepper/index.mjs +0 -6
- package/esm2022/mat-stepper/onemrvapublic-design-system-mat-stepper.mjs +0 -5
- package/esm2022/mat-stepper/src/onemrva-mat-stepper.component.mjs +0 -74
- package/esm2022/mat-stepper/src/onemrva-mat-stepper.module.mjs +0 -44
- package/esm2022/mat-stepper/src/onemrva-stepper-animations.mjs +0 -28
- package/esm2022/mat-sticker/index.mjs +0 -6
- package/esm2022/mat-sticker/onemrvapublic-design-system-mat-sticker.mjs +0 -5
- package/esm2022/mat-sticker/src/onemrva-mat-sticker.component.mjs +0 -69
- package/esm2022/mat-sticker/src/onemrva-mat-sticker.module.mjs +0 -18
- package/esm2022/mat-table-of-content/index.mjs +0 -8
- package/esm2022/mat-table-of-content/onemrvapublic-design-system-mat-table-of-content.mjs +0 -5
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.component.mjs +0 -104
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +0 -60
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.service.mjs +0 -46
- package/esm2022/mat-table-of-content/src/onemrva-mat-toc-anchor.model.mjs +0 -11
- package/esm2022/mat-task-list/index.mjs +0 -6
- package/esm2022/mat-task-list/onemrvapublic-design-system-mat-task-list.mjs +0 -5
- package/esm2022/mat-task-list/src/onemrva-mat-task-content.component.mjs +0 -17
- package/esm2022/mat-task-list/src/onemrva-mat-task-list.component.mjs +0 -36
- package/esm2022/mat-task-list/src/onemrva-mat-task-list.module.mjs +0 -51
- package/esm2022/mat-task-list/src/onemrva-mat-task-title.component.mjs +0 -23
- package/esm2022/mat-task-list/src/onemrva-mat-task.component.mjs +0 -140
- package/esm2022/mat-timepicker/index.mjs +0 -7
- package/esm2022/mat-timepicker/onemrvapublic-design-system-mat-timepicker.mjs +0 -5
- package/esm2022/mat-timepicker/src/clock/clock.component.mjs +0 -232
- package/esm2022/mat-timepicker/src/interfaces-and-types.mjs +0 -2
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +0 -279
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.module.mjs +0 -62
- package/esm2022/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.mjs +0 -129
- package/esm2022/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.mjs +0 -115
- package/esm2022/mat-timepicker/src/timepicker.directive.mjs +0 -512
- package/esm2022/mat-timepicker/src/util.mjs +0 -83
- package/esm2022/mat-toast/index.mjs +0 -6
- package/esm2022/mat-toast/onemrvapublic-design-system-mat-toast.mjs +0 -5
- package/esm2022/mat-toast/src/onemrva-mat-toast.component.mjs +0 -52
- package/esm2022/mat-toast/src/onemrva-mat-toast.module.mjs +0 -19
- package/esm2022/mat-tooltip/index.mjs +0 -5
- package/esm2022/mat-tooltip/onemrvapublic-design-system-mat-tooltip.mjs +0 -5
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.component.mjs +0 -36
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.directive.mjs +0 -111
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.module.mjs +0 -19
- package/esm2022/onemrvapublic-design-system.mjs +0 -5
- package/esm2022/page-error/index.mjs +0 -3
- package/esm2022/page-error/onemrvapublic-design-system-page-error.mjs +0 -5
- package/esm2022/page-error/src/page-error-action.component.mjs +0 -18
- package/esm2022/page-error/src/page-error.component.mjs +0 -61
- package/esm2022/page-not-found/index.mjs +0 -6
- package/esm2022/page-not-found/onemrvapublic-design-system-page-not-found.mjs +0 -5
- package/esm2022/page-not-found/src/page-not-found-action.component.mjs +0 -17
- package/esm2022/page-not-found/src/page-not-found-extra.component.mjs +0 -17
- package/esm2022/page-not-found/src/page-not-found-invader.component.mjs +0 -94
- package/esm2022/page-not-found/src/page-not-found.component.mjs +0 -54
- package/esm2022/page-not-found/src/page-not-found.module.mjs +0 -38
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/shared/index.mjs +0 -19
- package/esm2022/shared/onemrvapublic-design-system-shared.mjs +0 -5
- package/esm2022/shared/src/lib/adapters/index.mjs +0 -3
- package/esm2022/shared/src/lib/adapters/luxon.date.adapter.mjs +0 -251
- package/esm2022/shared/src/lib/adapters/luxon.utils.mjs +0 -23
- package/esm2022/shared/src/lib/adapters/native.date.adapter.mjs +0 -66
- package/esm2022/shared/src/lib/components/clipboard-icon/clipboard-icon.component.mjs +0 -20
- package/esm2022/shared/src/lib/components/index.mjs +0 -2
- package/esm2022/shared/src/lib/constants/CDNUrlModeOptions.mjs +0 -6
- package/esm2022/shared/src/lib/constants/cdn.mjs +0 -3
- package/esm2022/shared/src/lib/constants/constants.mjs +0 -7
- package/esm2022/shared/src/lib/constants/date.format.mjs +0 -95
- package/esm2022/shared/src/lib/constants/index.mjs +0 -5
- package/esm2022/shared/src/lib/containers/WebComponentOverlayContainer.mjs +0 -84
- package/esm2022/shared/src/lib/containers/index.mjs +0 -2
- package/esm2022/shared/src/lib/decorators/HttpCacheDecorator.mjs +0 -123
- package/esm2022/shared/src/lib/decorators/index.mjs +0 -2
- package/esm2022/shared/src/lib/directives/clipboard.directive.mjs +0 -39
- package/esm2022/shared/src/lib/directives/color.directive.mjs +0 -64
- package/esm2022/shared/src/lib/directives/digit-only.directive.mjs +0 -52
- package/esm2022/shared/src/lib/directives/iconRight.directive.mjs +0 -22
- package/esm2022/shared/src/lib/directives/if-width-is.directive.mjs +0 -34
- package/esm2022/shared/src/lib/directives/index.mjs +0 -24
- package/esm2022/shared/src/lib/directives/mask.directive.mjs +0 -198
- package/esm2022/shared/src/lib/directives/mat-row-clickable.directive.mjs +0 -74
- package/esm2022/shared/src/lib/helpers/index.mjs +0 -2
- package/esm2022/shared/src/lib/helpers/translation-helper.mjs +0 -58
- package/esm2022/shared/src/lib/interfaces/OnemRvaCommonCountry.interface.mjs +0 -2
- package/esm2022/shared/src/lib/interfaces/index.mjs +0 -2
- package/esm2022/shared/src/lib/loaders/index.mjs +0 -3
- package/esm2022/shared/src/lib/loaders/onemrva-translate-cdn-loader.mjs +0 -15
- package/esm2022/shared/src/lib/loaders/onemrva-translate-http-loader.mjs +0 -30
- package/esm2022/shared/src/lib/pipes/index.mjs +0 -3
- package/esm2022/shared/src/lib/pipes/onemrva-bce.pipe.mjs +0 -20
- package/esm2022/shared/src/lib/pipes/onemrva-niss.pipe.mjs +0 -20
- package/esm2022/shared/src/lib/providers/index.mjs +0 -5
- package/esm2022/shared/src/lib/providers/onemrva.date.luxon.provider.mjs +0 -16
- package/esm2022/shared/src/lib/providers/onemrva.date.luxon.year.month.provider.mjs +0 -16
- package/esm2022/shared/src/lib/providers/onemrva.date.native.provider.mjs +0 -16
- package/esm2022/shared/src/lib/providers/onemrva.date.native.year.month.provider.mjs +0 -16
- package/esm2022/shared/src/lib/services/cache.service.mjs +0 -31
- package/esm2022/shared/src/lib/services/cdn.service.mjs +0 -105
- package/esm2022/shared/src/lib/services/country-cdn.service.mjs +0 -75
- package/esm2022/shared/src/lib/services/country-lookup.service.mjs +0 -43
- package/esm2022/shared/src/lib/services/index.mjs +0 -5
- package/esm2022/shared/src/lib/services/mime-cdn.service.mjs +0 -45
- package/esm2022/shared/src/lib/shared.module.mjs +0 -25
- package/esm2022/shared/src/lib/tokens/index.mjs +0 -2
- package/esm2022/shared/src/lib/tokens/lookup.token.mjs +0 -7
- package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +0 -56
- package/esm2022/shared/src/lib/validators/index.mjs +0 -3
- package/esm2022/shared/src/lib/validators/onemrva-validators.mjs +0 -75
- package/esm2022/utils/index.mjs +0 -3
- package/esm2022/utils/onemrvapublic-design-system-utils.mjs +0 -5
- package/esm2022/utils/src/enum.utils.mjs +0 -7
- package/esm2022/utils/src/enums/color.enum.mjs +0 -12
- package/esm2022/utils/src/enums/index.mjs +0 -3
- package/esm2022/utils/src/enums/size.enum.mjs +0 -9
- package/fesm2022/onemrvapublic-design-system-mat-badge.mjs +0 -274
- package/fesm2022/onemrvapublic-design-system-mat-badge.mjs.map +0 -1
- package/mat-badge/index.d.ts +0 -2
- package/mat-badge/src/onemrva-mat-badge.component.d.ts +0 -89
- package/mat-badge/src/onemrva-mat-badge.component.scss +0 -157
- package/mat-badge/src/onemrva-mat-badge.module.d.ts +0 -7
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
import { Validators, } from '@angular/forms';
|
|
2
|
-
import { Directive, EventEmitter, Input, Optional, HostBinding, Self, Output, HostListener, } from '@angular/core';
|
|
3
|
-
import { MatFormFieldControl, } from '@angular/material/form-field';
|
|
4
|
-
import { twoDigits, isAllowed, isDateInRange, isTimeInRange } from './util';
|
|
5
|
-
import { Subject, Subscription } from 'rxjs';
|
|
6
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/forms";
|
|
9
|
-
import * as i2 from "@angular/cdk/a11y";
|
|
10
|
-
import * as i3 from "@angular/cdk/platform";
|
|
11
|
-
import * as i4 from "@angular/material/form-field";
|
|
12
|
-
import * as i5 from "@angular/material/core";
|
|
13
|
-
export class MatTimepickerDirective {
|
|
14
|
-
static { this.nextId = 0; }
|
|
15
|
-
/** The datepicker that this input is associated with. */
|
|
16
|
-
set matTimepicker(timepicker) {
|
|
17
|
-
if (timepicker) {
|
|
18
|
-
this._timepicker = timepicker;
|
|
19
|
-
this._timepicker.setTimepickerInput(this);
|
|
20
|
-
this._closedSubscription = timepicker.closedStream.subscribe(() => this._onTouched());
|
|
21
|
-
//this._registerModel(datepicker.registerInput(this));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
get errorState() {
|
|
25
|
-
const oldState = this._errorState;
|
|
26
|
-
const parent = this._parentFormGroup || this._parentForm;
|
|
27
|
-
const control = this.ngControl
|
|
28
|
-
? this.ngControl.control
|
|
29
|
-
: null;
|
|
30
|
-
const newState = this.errorStateMatcher
|
|
31
|
-
? this.errorStateMatcher.isErrorState(control, parent)
|
|
32
|
-
: oldState;
|
|
33
|
-
if (newState !== oldState) {
|
|
34
|
-
this._errorState = newState;
|
|
35
|
-
this.stateChanges.next();
|
|
36
|
-
}
|
|
37
|
-
return newState;
|
|
38
|
-
}
|
|
39
|
-
get disabled() {
|
|
40
|
-
if (this.ngControl && this.ngControl.disabled !== null) {
|
|
41
|
-
return this.ngControl.disabled;
|
|
42
|
-
}
|
|
43
|
-
return this._disabled;
|
|
44
|
-
}
|
|
45
|
-
set disabled(value) {
|
|
46
|
-
this._disabled = coerceBooleanProperty(value);
|
|
47
|
-
// Browsers may not fire the blur event if the input is disabled too quickly.
|
|
48
|
-
// Reset from here to ensure that the element doesn't become stuck.
|
|
49
|
-
if (this.focused) {
|
|
50
|
-
this.focused = false;
|
|
51
|
-
}
|
|
52
|
-
this.stateChanges.next();
|
|
53
|
-
}
|
|
54
|
-
get id() {
|
|
55
|
-
return this._id;
|
|
56
|
-
}
|
|
57
|
-
set id(value) {
|
|
58
|
-
this._id = value || this._uid;
|
|
59
|
-
}
|
|
60
|
-
get readonly() {
|
|
61
|
-
return this._readonly;
|
|
62
|
-
}
|
|
63
|
-
set readonly(value) {
|
|
64
|
-
this._readonly = coerceBooleanProperty(value);
|
|
65
|
-
}
|
|
66
|
-
get shouldLabelFloat() {
|
|
67
|
-
return this.focused || !this.empty;
|
|
68
|
-
}
|
|
69
|
-
get required() {
|
|
70
|
-
if (this.ngControl?.control) {
|
|
71
|
-
return this.ngControl.control.hasValidator(Validators.required);
|
|
72
|
-
}
|
|
73
|
-
return this._required;
|
|
74
|
-
}
|
|
75
|
-
set required(req) {
|
|
76
|
-
this._required = coerceBooleanProperty(req);
|
|
77
|
-
this.stateChanges.next();
|
|
78
|
-
}
|
|
79
|
-
get placeholder() {
|
|
80
|
-
return this._placeholder;
|
|
81
|
-
}
|
|
82
|
-
set placeholder(plh) {
|
|
83
|
-
this._placeholder = plh;
|
|
84
|
-
this.stateChanges.next();
|
|
85
|
-
}
|
|
86
|
-
set value(value) {
|
|
87
|
-
if (value === this._value) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
this._value = value;
|
|
91
|
-
if (!value) {
|
|
92
|
-
this._formattedValueString = '';
|
|
93
|
-
this.setInputElementValue(value);
|
|
94
|
-
this.currentValue = value ?? new Date();
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
this._formattedValueString = `${twoDigits(value.getHours())}:${twoDigits(value.getMinutes())}`;
|
|
98
|
-
if (!this.isInputFocused) {
|
|
99
|
-
this.setInputElementValue(this.formattedValueString);
|
|
100
|
-
}
|
|
101
|
-
this.currentValue = value;
|
|
102
|
-
this.stateChanges.next();
|
|
103
|
-
if (this._skipValueChangeEmission) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
this.timeChange.emit(this.currentValue);
|
|
107
|
-
if (this.onChangeFn)
|
|
108
|
-
this.onChangeFn(this.value);
|
|
109
|
-
}
|
|
110
|
-
get value() {
|
|
111
|
-
return this._value;
|
|
112
|
-
}
|
|
113
|
-
get empty() {
|
|
114
|
-
return !(this.currentValue instanceof Date);
|
|
115
|
-
}
|
|
116
|
-
get formattedValueString() {
|
|
117
|
-
return this._formattedValueString;
|
|
118
|
-
}
|
|
119
|
-
inputHandler() {
|
|
120
|
-
const value = this.elRef.nativeElement.value;
|
|
121
|
-
const length = value.length;
|
|
122
|
-
if (length === 0) {
|
|
123
|
-
this.writeValue(null, true);
|
|
124
|
-
this._value = null;
|
|
125
|
-
this._skipValueChangeEmission = true;
|
|
126
|
-
Promise.resolve().then(() => (this._skipValueChangeEmission = false));
|
|
127
|
-
if (this.onChangeFn) {
|
|
128
|
-
this.onChangeFn(null);
|
|
129
|
-
}
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
const valueHasColumn = value.includes(':');
|
|
133
|
-
let [hours, minutes] = length === 1
|
|
134
|
-
? [value, 0]
|
|
135
|
-
: length === 2 && !valueHasColumn
|
|
136
|
-
? [value, 0]
|
|
137
|
-
: valueHasColumn
|
|
138
|
-
? value.split(':')
|
|
139
|
-
: value.split(/(\d\d)/).filter(v => v);
|
|
140
|
-
hours = +hours;
|
|
141
|
-
if (/\s/.test(minutes)) {
|
|
142
|
-
let other;
|
|
143
|
-
[minutes, other] = minutes.split(/\s/);
|
|
144
|
-
if (other === 'pm' && !isNaN(hours) && hours < 12) {
|
|
145
|
-
hours += 12;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
minutes = +minutes;
|
|
149
|
-
if (isNaN(hours) || isNaN(minutes)) {
|
|
150
|
-
//this.writeValue(null, true);
|
|
151
|
-
this._skipValueChangeEmission = true;
|
|
152
|
-
Promise.resolve().then(() => (this._skipValueChangeEmission = false));
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
if (+hours > 24) {
|
|
156
|
-
hours = '24';
|
|
157
|
-
}
|
|
158
|
-
else if (+hours < 0) {
|
|
159
|
-
hours = '0';
|
|
160
|
-
}
|
|
161
|
-
if (+minutes > 59) {
|
|
162
|
-
minutes = '59';
|
|
163
|
-
}
|
|
164
|
-
else if (+minutes < 0) {
|
|
165
|
-
minutes = '0';
|
|
166
|
-
}
|
|
167
|
-
const d = this.value ? new Date(this.value.getTime()) : new Date();
|
|
168
|
-
d.setHours(+hours);
|
|
169
|
-
d.setMinutes(+minutes);
|
|
170
|
-
d.setSeconds(0);
|
|
171
|
-
d.setMilliseconds(0);
|
|
172
|
-
const isValueInRange = isDateInRange(this.minDate, this.maxDate, d);
|
|
173
|
-
if (!isValueInRange) {
|
|
174
|
-
this.invalidInput.emit();
|
|
175
|
-
}
|
|
176
|
-
this.writeValue(d, true);
|
|
177
|
-
if (this.onChangeFn) {
|
|
178
|
-
this.onChangeFn(d);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
keydownHandler(event) {
|
|
182
|
-
const e = event;
|
|
183
|
-
const allowedKey = [
|
|
184
|
-
'0',
|
|
185
|
-
'1',
|
|
186
|
-
'2',
|
|
187
|
-
'3',
|
|
188
|
-
'4',
|
|
189
|
-
'5',
|
|
190
|
-
'6',
|
|
191
|
-
'7',
|
|
192
|
-
'8',
|
|
193
|
-
'9',
|
|
194
|
-
':',
|
|
195
|
-
'Backspace',
|
|
196
|
-
'Delete',
|
|
197
|
-
'Tab',
|
|
198
|
-
'Enter',
|
|
199
|
-
'ArrowLeft',
|
|
200
|
-
'ArrowRight',
|
|
201
|
-
'ArrowUp',
|
|
202
|
-
'ArrowDown',
|
|
203
|
-
'Home',
|
|
204
|
-
'End',
|
|
205
|
-
];
|
|
206
|
-
if (allowedKey.indexOf(e.key) >= 0)
|
|
207
|
-
return;
|
|
208
|
-
const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];
|
|
209
|
-
if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0)
|
|
210
|
-
return;
|
|
211
|
-
if (event.metaKey || event.ctrlKey || event.altKey) {
|
|
212
|
-
this.combination = this.combination.concat(event.code);
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const target = event.target;
|
|
216
|
-
const tValue = target.value;
|
|
217
|
-
const value = `${tValue.slice(0, target.selectionStart)}${event.key}${tValue.slice(target.selectionEnd)}`;
|
|
218
|
-
if (value.match(this.pattern) || this.combination.length > 0) {
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
event.preventDefault();
|
|
222
|
-
event.stopImmediatePropagation();
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
keyupHandler(event) {
|
|
226
|
-
this.combination = this.combination.filter(v => v !== event.code);
|
|
227
|
-
}
|
|
228
|
-
focusHandler() {
|
|
229
|
-
this.isInputFocused = true;
|
|
230
|
-
}
|
|
231
|
-
focusoutHandler() {
|
|
232
|
-
this.isInputFocused = false;
|
|
233
|
-
this.setInputElementValue(this.formattedValueString);
|
|
234
|
-
if (this.onTouchedFn && !this._timepicker.modalRef) {
|
|
235
|
-
this.onTouchedFn();
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
constructor(ngControl, renderer, zone, fm, elRef, ngZone, _platform, _parentForm, _matFormFiled, _parentFormGroup, _defaultErrorStateMatcher) {
|
|
239
|
-
this.ngControl = ngControl;
|
|
240
|
-
this.renderer = renderer;
|
|
241
|
-
this.zone = zone;
|
|
242
|
-
this.fm = fm;
|
|
243
|
-
this.elRef = elRef;
|
|
244
|
-
this.ngZone = ngZone;
|
|
245
|
-
this._platform = _platform;
|
|
246
|
-
this._parentForm = _parentForm;
|
|
247
|
-
this._matFormFiled = _matFormFiled;
|
|
248
|
-
this._parentFormGroup = _parentFormGroup;
|
|
249
|
-
this._closedSubscription = Subscription.EMPTY;
|
|
250
|
-
this._errorState = false;
|
|
251
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
252
|
-
this._onTouched = () => { };
|
|
253
|
-
this._disabled = false;
|
|
254
|
-
this._id = '0';
|
|
255
|
-
this._readonly = false;
|
|
256
|
-
this.stateChanges = new Subject();
|
|
257
|
-
this._uid = `mat-input-${MatTimepickerDirective.nextId++}`;
|
|
258
|
-
this.describedBy = '';
|
|
259
|
-
this._required = false;
|
|
260
|
-
this._placeholder = '';
|
|
261
|
-
this.focused = false;
|
|
262
|
-
this.pattern = new RegExp('[0-2]?[0-9]:[0-6]?[0-9]');
|
|
263
|
-
this.allowed24HourMap = this.generateAllowedMap();
|
|
264
|
-
this.isInputFocused = false;
|
|
265
|
-
/** Override the label of the ok button. */
|
|
266
|
-
this.okLabel = 'Ok';
|
|
267
|
-
/** Override the label of the cancel button. */
|
|
268
|
-
this.cancelLabel = 'Cancel';
|
|
269
|
-
/** Sets the clock mode, 12-hour or 24-hour clocks are supported. */
|
|
270
|
-
this.color = 'primary';
|
|
271
|
-
this.disableDialogOpenOnClick = false;
|
|
272
|
-
this.strict = true;
|
|
273
|
-
this.controlType = 'angular-material-timepicker';
|
|
274
|
-
this._value = null;
|
|
275
|
-
this._formattedValueString = '';
|
|
276
|
-
this._skipValueChangeEmission = true;
|
|
277
|
-
this.combination = [];
|
|
278
|
-
this.timeChange = new EventEmitter();
|
|
279
|
-
this.invalidInput = new EventEmitter();
|
|
280
|
-
this.errorStateMatcher = _defaultErrorStateMatcher;
|
|
281
|
-
if (this.ngControl != null) {
|
|
282
|
-
this.ngControl.valueAccessor = this;
|
|
283
|
-
}
|
|
284
|
-
if (_platform.IOS) {
|
|
285
|
-
ngZone.runOutsideAngular(() => {
|
|
286
|
-
elRef.nativeElement.addEventListener('keyup', (event) => {
|
|
287
|
-
const el = event.target;
|
|
288
|
-
if (!el.value && !el.selectionStart && !el.selectionEnd) {
|
|
289
|
-
// Note: Just setting `0, 0` doesn't fix the issue. Setting
|
|
290
|
-
// `1, 1` fixes it for the first time that you type text and
|
|
291
|
-
// then hold delete. Toggling to `1, 1` and then back to
|
|
292
|
-
// `0, 0` seems to completely fix it.
|
|
293
|
-
el.setSelectionRange(1, 1);
|
|
294
|
-
el.setSelectionRange(0, 0);
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
this._isServer = !this._platform.isBrowser;
|
|
300
|
-
}
|
|
301
|
-
setDescribedByIds(ids) {
|
|
302
|
-
this.describedBy = ids.join(' ');
|
|
303
|
-
}
|
|
304
|
-
onContainerClick(event) {
|
|
305
|
-
if (event.target.tagName.toLowerCase() !== 'input') {
|
|
306
|
-
this.elRef.nativeElement.focus();
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
setInputElementValue(value) {
|
|
310
|
-
Promise.resolve().then(() => {
|
|
311
|
-
this.zone.runOutsideAngular(() => {
|
|
312
|
-
this.renderer.setProperty(this.elRef.nativeElement, 'value', value);
|
|
313
|
-
});
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
validate() {
|
|
317
|
-
const isValueInRange = this.strict
|
|
318
|
-
? isDateInRange(this.minDate, this.maxDate, this.currentValue)
|
|
319
|
-
: isTimeInRange(this.minDate, this.maxDate, this.currentValue);
|
|
320
|
-
return isValueInRange ? null : { dateRange: true };
|
|
321
|
-
}
|
|
322
|
-
ngOnInit() {
|
|
323
|
-
if (this._platform.isBrowser) {
|
|
324
|
-
this.fm.monitor(this.elRef.nativeElement, true).subscribe(origin => {
|
|
325
|
-
this.focused = !!origin;
|
|
326
|
-
this.stateChanges.next();
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
if (!this.value) {
|
|
330
|
-
const hasMaxDate = !!this.maxDate;
|
|
331
|
-
const hasMinDate = !!this.minDate;
|
|
332
|
-
//if (hasMinDate || hasMaxDate) {
|
|
333
|
-
if (hasMinDate) {
|
|
334
|
-
this.minDate.setSeconds(0);
|
|
335
|
-
this.minDate.setMilliseconds(0);
|
|
336
|
-
}
|
|
337
|
-
if (hasMaxDate) {
|
|
338
|
-
this.maxDate.setSeconds(0);
|
|
339
|
-
this.maxDate.setMilliseconds(0);
|
|
340
|
-
}
|
|
341
|
-
if (!this.ngControl._rawValidators.find((v) => v === this)) {
|
|
342
|
-
this.ngControl._rawValidators.push(this);
|
|
343
|
-
}
|
|
344
|
-
//}
|
|
345
|
-
}
|
|
346
|
-
this._skipValueChangeEmission = false;
|
|
347
|
-
}
|
|
348
|
-
generateAllowedMap() {
|
|
349
|
-
const isStrictMode = this.strict && this.value instanceof Date;
|
|
350
|
-
const a24hm = {};
|
|
351
|
-
for (let h = 0; h < 24; h++) {
|
|
352
|
-
for (let m = 0; m < 60; m++) {
|
|
353
|
-
const hourMap = a24hm[h] || {};
|
|
354
|
-
if (isStrictMode && this.value) {
|
|
355
|
-
const currentDate = new Date(this.value.getTime());
|
|
356
|
-
currentDate.setHours(h);
|
|
357
|
-
currentDate.setMinutes(m);
|
|
358
|
-
currentDate.setSeconds(0);
|
|
359
|
-
currentDate.setMilliseconds(0);
|
|
360
|
-
hourMap[m] = isDateInRange(this.minDate, this.maxDate, currentDate);
|
|
361
|
-
}
|
|
362
|
-
else {
|
|
363
|
-
hourMap[m] = isAllowed(h, m, this.minDate, this.maxDate);
|
|
364
|
-
}
|
|
365
|
-
a24hm[h] = hourMap;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
return a24hm;
|
|
369
|
-
}
|
|
370
|
-
ngOnChanges() {
|
|
371
|
-
this.pattern = /^[0-9]{1,2}:?([0-9]{1,2})?$/;
|
|
372
|
-
if (!this._timepicker.modalRef ||
|
|
373
|
-
!this._timepicker.modalRef.componentInstance) {
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
this._timepicker.modalRef.componentInstance.data = {
|
|
377
|
-
value: this.currentValue,
|
|
378
|
-
okLabel: this.okLabel,
|
|
379
|
-
cancelLabel: this.cancelLabel,
|
|
380
|
-
color: this.color,
|
|
381
|
-
minDate: this.minDate,
|
|
382
|
-
maxDate: this.maxDate,
|
|
383
|
-
allowed24HourMap: this.allowed24HourMap,
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
checkValidity(value) {
|
|
387
|
-
if (!value) {
|
|
388
|
-
return false;
|
|
389
|
-
}
|
|
390
|
-
const hour = value.getHours();
|
|
391
|
-
const minutes = value.getMinutes();
|
|
392
|
-
return isAllowed(hour, minutes, this.minDate, this.maxDate);
|
|
393
|
-
}
|
|
394
|
-
writeValue(value, isInnerCall = false) {
|
|
395
|
-
if (!isInnerCall) {
|
|
396
|
-
this._skipValueChangeEmission = true;
|
|
397
|
-
Promise.resolve().then(() => (this._skipValueChangeEmission = false));
|
|
398
|
-
}
|
|
399
|
-
if (value) {
|
|
400
|
-
value.setSeconds(0);
|
|
401
|
-
value.setMilliseconds(0);
|
|
402
|
-
}
|
|
403
|
-
if (this.value && +this.value === +(value ?? 0)) {
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
this.value = value;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
registerOnChange(fn) {
|
|
411
|
-
this.onChangeFn = fn;
|
|
412
|
-
}
|
|
413
|
-
registerOnTouched(fn) {
|
|
414
|
-
this.onTouchedFn = fn;
|
|
415
|
-
}
|
|
416
|
-
setDisabledState(isDisabled) {
|
|
417
|
-
this.disabled = isDisabled;
|
|
418
|
-
}
|
|
419
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MatTimepickerDirective, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.Platform }, { token: i1.NgForm, optional: true }, { token: i4.MatFormField, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i5.ErrorStateMatcher }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
420
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MatTimepickerDirective, selector: "input[matTimepicker]", inputs: { matTimepicker: "matTimepicker", disabled: "disabled", id: "id", readonly: "readonly", errorStateMatcher: "errorStateMatcher", required: "required", placeholder: "placeholder", okLabel: "okLabel", cancelLabel: "cancelLabel", color: "color", disableDialogOpenOnClick: "disableDialogOpenOnClick", strict: "strict", minDate: "minDate", maxDate: "maxDate", value: "value" }, outputs: { timeChange: "timeChange", invalidInput: "invalidInput" }, host: { listeners: { "input": "inputHandler()", "keydown": "keydownHandler($event)", "keyup": "keyupHandler($event)", "focus": "focusHandler()", "focusout": "focusoutHandler()" }, properties: { "class.mat-input-server": "_isServer", "attr.id": "id", "attr.placeholder": "placeholder", "disabled": "disabled", "required": "required", "attr.readonly": "readonly || null", "attr.aria-invalid": "errorState", "attr.aria-required": "required.toString()", "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" }, classAttribute: "mat-input-element mat-form-field-autofill-control" }, providers: [
|
|
421
|
-
{ provide: MatFormFieldControl, useExisting: MatTimepickerDirective },
|
|
422
|
-
], exportAs: ["matTimepicker"], usesOnChanges: true, ngImport: i0 }); }
|
|
423
|
-
}
|
|
424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MatTimepickerDirective, decorators: [{
|
|
425
|
-
type: Directive,
|
|
426
|
-
args: [{
|
|
427
|
-
selector: 'input[matTimepicker]',
|
|
428
|
-
providers: [
|
|
429
|
-
{ provide: MatFormFieldControl, useExisting: MatTimepickerDirective },
|
|
430
|
-
],
|
|
431
|
-
host: {
|
|
432
|
-
class: 'mat-input-element mat-form-field-autofill-control',
|
|
433
|
-
'[class.mat-input-server]': '_isServer',
|
|
434
|
-
// Native input properties that are overwritten by Angular inputs need to be synced with
|
|
435
|
-
// the native input element. Otherwise property bindings for those don't work.
|
|
436
|
-
'[attr.id]': 'id',
|
|
437
|
-
'[attr.placeholder]': 'placeholder',
|
|
438
|
-
'[disabled]': 'disabled',
|
|
439
|
-
'[required]': 'required',
|
|
440
|
-
'[attr.readonly]': 'readonly || null',
|
|
441
|
-
'[attr.aria-invalid]': 'errorState',
|
|
442
|
-
'[attr.aria-required]': 'required.toString()',
|
|
443
|
-
},
|
|
444
|
-
exportAs: 'matTimepicker',
|
|
445
|
-
}]
|
|
446
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
447
|
-
type: Optional
|
|
448
|
-
}, {
|
|
449
|
-
type: Self
|
|
450
|
-
}] }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.Platform }, { type: i1.NgForm, decorators: [{
|
|
451
|
-
type: Optional
|
|
452
|
-
}] }, { type: i4.MatFormField, decorators: [{
|
|
453
|
-
type: Optional
|
|
454
|
-
}] }, { type: i1.FormGroupDirective, decorators: [{
|
|
455
|
-
type: Optional
|
|
456
|
-
}] }, { type: i5.ErrorStateMatcher }], propDecorators: { matTimepicker: [{
|
|
457
|
-
type: Input
|
|
458
|
-
}], disabled: [{
|
|
459
|
-
type: Input
|
|
460
|
-
}], id: [{
|
|
461
|
-
type: Input
|
|
462
|
-
}], readonly: [{
|
|
463
|
-
type: Input
|
|
464
|
-
}], shouldLabelFloat: [{
|
|
465
|
-
type: HostBinding,
|
|
466
|
-
args: ['class.floating']
|
|
467
|
-
}], describedBy: [{
|
|
468
|
-
type: HostBinding,
|
|
469
|
-
args: ['attr.aria-describedby']
|
|
470
|
-
}], errorStateMatcher: [{
|
|
471
|
-
type: Input
|
|
472
|
-
}], required: [{
|
|
473
|
-
type: Input
|
|
474
|
-
}], placeholder: [{
|
|
475
|
-
type: Input
|
|
476
|
-
}], okLabel: [{
|
|
477
|
-
type: Input
|
|
478
|
-
}], cancelLabel: [{
|
|
479
|
-
type: Input
|
|
480
|
-
}], color: [{
|
|
481
|
-
type: Input
|
|
482
|
-
}], disableDialogOpenOnClick: [{
|
|
483
|
-
type: Input
|
|
484
|
-
}], strict: [{
|
|
485
|
-
type: Input
|
|
486
|
-
}], minDate: [{
|
|
487
|
-
type: Input
|
|
488
|
-
}], maxDate: [{
|
|
489
|
-
type: Input
|
|
490
|
-
}], value: [{
|
|
491
|
-
type: Input
|
|
492
|
-
}], timeChange: [{
|
|
493
|
-
type: Output
|
|
494
|
-
}], invalidInput: [{
|
|
495
|
-
type: Output
|
|
496
|
-
}], inputHandler: [{
|
|
497
|
-
type: HostListener,
|
|
498
|
-
args: ['input']
|
|
499
|
-
}], keydownHandler: [{
|
|
500
|
-
type: HostListener,
|
|
501
|
-
args: ['keydown', ['$event']]
|
|
502
|
-
}], keyupHandler: [{
|
|
503
|
-
type: HostListener,
|
|
504
|
-
args: ['keyup', ['$event']]
|
|
505
|
-
}], focusHandler: [{
|
|
506
|
-
type: HostListener,
|
|
507
|
-
args: ['focus']
|
|
508
|
-
}], focusoutHandler: [{
|
|
509
|
-
type: HostListener,
|
|
510
|
-
args: ['focusout']
|
|
511
|
-
}] } });
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUVSLFdBQVcsRUFDWCxJQUFJLEVBQ0osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQTBCOUQsTUFBTSxPQUFPLHNCQUFzQjthQUcxQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFNbEIseURBQXlEO0lBQ3pELElBQ0ksYUFBYSxDQUFDLFVBQXlDO1FBQ3pELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUFDO1lBQ0Ysc0RBQXNEO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBS0QsSUFBSSxVQUFVO1FBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUztZQUM1QixDQUFDLENBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUF1QjtZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFYixJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBS0QsSUFDSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLDZFQUE2RTtRQUM3RSxtRUFBbUU7UUFDbkUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUlELElBQWEsRUFBRTtRQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxFQUFFLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFJRCxJQUFhLFFBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQVFELElBQW1DLGdCQUFnQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFNRCxJQUFhLFFBQVE7UUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxHQUFHO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFJRCxJQUFhLFdBQVc7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxHQUFHO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQStCRCxJQUFhLEtBQUssQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FDdEUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUNuQixFQUFFLENBQUM7UUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFZLG9CQUFvQjtRQUM5QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBV3NCLFlBQVk7UUFDakMsTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFxQixDQUFDLEtBQWUsQ0FBQztRQUNoRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRTVCLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7WUFDckMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRXRFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7WUFFRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FDbEIsTUFBTSxLQUFLLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxjQUFjO29CQUNkLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDbEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBRWYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUM7WUFDVixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2xELEtBQUssSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUVuQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNuQyw4QkFBOEI7WUFDOUIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztZQUNyQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDZixDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO2FBQU0sSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckIsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVvQyxjQUFjLENBQUMsS0FBVTtRQUM1RCxNQUFNLENBQUMsR0FBRyxLQUFzQixDQUFDO1FBRWpDLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUc7WUFDSCxHQUFHO1lBQ0gsR0FBRztZQUNILEdBQUc7WUFDSCxHQUFHO1lBQ0gsR0FBRztZQUNILEdBQUc7WUFDSCxHQUFHO1lBQ0gsR0FBRztZQUNILEdBQUc7WUFDSCxHQUFHO1lBQ0gsV0FBVztZQUNYLFFBQVE7WUFDUixLQUFLO1lBQ0wsT0FBTztZQUNQLFdBQVc7WUFDWCxZQUFZO1lBQ1osU0FBUztZQUNULFdBQVc7WUFDWCxNQUFNO1lBQ04sS0FBSztTQUNOLENBQUM7UUFDRixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBRTNDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUVsRSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQ3JELEtBQUssQ0FBQyxHQUNSLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNqQyxPQUFPO0lBQ1QsQ0FBQztJQUVrQyxZQUFZLENBQUMsS0FBVTtRQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRXNCLFlBQVk7UUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUV5QixlQUFlO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQzZCLFNBQW9CLEVBQ3ZDLFFBQW1CLEVBQ25CLElBQVksRUFDWixFQUFnQixFQUNoQixLQUE4QixFQUM5QixNQUFjLEVBQ1osU0FBbUIsRUFDVCxXQUFtQixFQUNuQixhQUEyQixFQUMzQixnQkFBb0MsRUFDeEQseUJBQTRDO1FBVmpCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDdkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ1osY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNULGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUF4VmxELHdCQUFtQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFpQmpELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBbUJwQixnRUFBZ0U7UUFDaEUsZUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQXFCWixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBVWxCLFFBQUcsR0FBRyxHQUFHLENBQUM7UUFVWixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV6QixTQUFJLEdBQUcsYUFBYSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBTTFCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBZ0IvQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBV2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRTFCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixZQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUVoRCxxQkFBZ0IsR0FBc0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFaEUsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFL0IsMkNBQTJDO1FBQ2xDLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDeEIsK0NBQStDO1FBQ3RDLGdCQUFXLEdBQUcsUUFBUSxDQUFDO1FBRWhDLG9FQUFvRTtRQUMzRCxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBRXZCLGdCQUFXLEdBQUcsNkJBQTZCLENBQUM7UUFLcEMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDM0IsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQWdEaEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFekIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUEwSmxFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUM1QixLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO29CQUM3RCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUN4RCwyREFBMkQ7d0JBQzNELDREQUE0RDt3QkFDNUQsd0RBQXdEO3dCQUN4RCxxQ0FBcUM7d0JBQ3JDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzNCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQWE7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUNoQyxJQUFLLEtBQUssQ0FBQyxNQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQVU7UUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNoQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzlELENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVqRSxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBRWxDLGlDQUFpQztZQUNqQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUVELElBQ0UsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQ3BFLENBQUM7Z0JBQ0EsSUFBSSxDQUFDLFNBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsR0FBRztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQztRQUMvRCxNQUFNLEtBQUssR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9CLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN4QixXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMxQixXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMxQixXQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvQixPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDdEUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztnQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsNkJBQTZCLENBQUM7UUFFN0MsSUFDRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTtZQUMxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUM1QyxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUc7WUFDakQsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFXO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWtCLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDaEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7WUFDckMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxPQUFPO1FBQ1QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQixDQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7K0dBcGdCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixtbENBbkJ0QjtZQUNULEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtTQUN0RTs7NEZBaUJVLHNCQUFzQjtrQkFyQmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsd0JBQXdCLEVBQUU7cUJBQ3RFO29CQUVELElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsbURBQW1EO3dCQUMxRCwwQkFBMEIsRUFBRSxXQUFXO3dCQUN2Qyx3RkFBd0Y7d0JBQ3hGLDhFQUE4RTt3QkFDOUUsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLG9CQUFvQixFQUFFLGFBQWE7d0JBQ25DLFlBQVksRUFBRSxVQUFVO3dCQUN4QixZQUFZLEVBQUUsVUFBVTt3QkFDeEIsaUJBQWlCLEVBQUUsa0JBQWtCO3dCQUNyQyxxQkFBcUIsRUFBRSxZQUFZO3dCQUNuQyxzQkFBc0IsRUFBRSxxQkFBcUI7cUJBQzlDO29CQUNELFFBQVEsRUFBRSxlQUFlO2lCQUMxQjs7MEJBdVZJLFFBQVE7OzBCQUFJLElBQUk7OzBCQU9oQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRO3lFQXBWUCxhQUFhO3NCQURoQixLQUFLO2dCQXFDRixRQUFRO3NCQURYLEtBQUs7Z0JBcUJPLEVBQUU7c0JBQWQsS0FBSztnQkFVTyxRQUFRO3NCQUFwQixLQUFLO2dCQWM2QixnQkFBZ0I7c0JBQWxELFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUlTLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUUzQixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFjTyxXQUFXO3NCQUF2QixLQUFLO2dCQW1CRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQU9PLEtBQUs7c0JBQWpCLEtBQUs7Z0JBZ0RJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFZ0IsWUFBWTtzQkFBbEMsWUFBWTt1QkFBQyxPQUFPO2dCQTJFZ0IsY0FBYztzQkFBbEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0RBLFlBQVk7c0JBQTlDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlWLFlBQVk7c0JBQWxDLFlBQVk7dUJBQUMsT0FBTztnQkFJSyxlQUFlO3NCQUF4QyxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdGb3JtLFxuICBOZ0NvbnRyb2wsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgT25Jbml0LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbiAgT3B0aW9uYWwsXG4gIE5nWm9uZSxcbiAgSG9zdEJpbmRpbmcsXG4gIFNlbGYsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gIE1hdEZvcm1GaWVsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJQWxsb3dlZDI0SG91ck1hcCB9IGZyb20gJy4vaW50ZXJmYWNlcy1hbmQtdHlwZXMnO1xuaW1wb3J0IHsgdHdvRGlnaXRzLCBpc0FsbG93ZWQsIGlzRGF0ZUluUmFuZ2UsIGlzVGltZUluUmFuZ2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9vbmVtcnZhLW1hdC10aW1lcGlja2VyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W21hdFRpbWVwaWNrZXJdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTWF0VGltZXBpY2tlckRpcmVjdGl2ZSB9LFxuICBdLFxuXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ21hdC1pbnB1dC1lbGVtZW50IG1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2wnLFxuICAgICdbY2xhc3MubWF0LWlucHV0LXNlcnZlcl0nOiAnX2lzU2VydmVyJyxcbiAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXG4gICAgLy8gdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50LiBPdGhlcndpc2UgcHJvcGVydHkgYmluZGluZ3MgZm9yIHRob3NlIGRvbid0IHdvcmsuXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlcicsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2F0dHIucmVhZG9ubHldJzogJ3JlYWRvbmx5IHx8IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbYXR0ci5hcmlhLXJlcXVpcmVkXSc6ICdyZXF1aXJlZC50b1N0cmluZygpJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdtYXRUaW1lcGlja2VyJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0VGltZXBpY2tlckRpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+XG57XG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgcmVuZGVyZWQgb24gdGhlIHNlcnZlci4gKi9cbiAgcmVhZG9ubHkgX2lzU2VydmVyOiBib29sZWFuO1xuICBwcml2YXRlIF9jbG9zZWRTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgLyoqIFRoZSBkYXRlcGlja2VyIHRoYXQgdGhpcyBpbnB1dCBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIEBJbnB1dCgpXG4gIHNldCBtYXRUaW1lcGlja2VyKHRpbWVwaWNrZXI6IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50KSB7XG4gICAgaWYgKHRpbWVwaWNrZXIpIHtcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXIgPSB0aW1lcGlja2VyO1xuICAgICAgdGhpcy5fdGltZXBpY2tlci5zZXRUaW1lcGlja2VySW5wdXQodGhpcyk7XG4gICAgICB0aGlzLl9jbG9zZWRTdWJzY3JpcHRpb24gPSB0aW1lcGlja2VyLmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCksXG4gICAgICApO1xuICAgICAgLy90aGlzLl9yZWdpc3Rlck1vZGVsKGRhdGVwaWNrZXIucmVnaXN0ZXJJbnB1dCh0aGlzKSk7XG4gICAgfVxuICB9XG5cbiAgX3RpbWVwaWNrZXIhOiBPbmVtcnZhTWF0VGltZXBpY2tlckNvbXBvbmVudDtcblxuICBfZXJyb3JTdGF0ZSA9IGZhbHNlO1xuICBnZXQgZXJyb3JTdGF0ZSgpIHtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IHRoaXMuX2Vycm9yU3RhdGU7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50Rm9ybUdyb3VwIHx8IHRoaXMuX3BhcmVudEZvcm07XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sXG4gICAgICA/ICh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sKVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5lcnJvclN0YXRlTWF0Y2hlclxuICAgICAgPyB0aGlzLmVycm9yU3RhdGVNYXRjaGVyLmlzRXJyb3JTdGF0ZShjb250cm9sLCBwYXJlbnQpXG4gICAgICA6IG9sZFN0YXRlO1xuXG4gICAgaWYgKG5ld1N0YXRlICE9PSBvbGRTdGF0ZSkge1xuICAgICAgdGhpcy5fZXJyb3JTdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pZCA9ICcwJztcblxuICBASW5wdXQoKSBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG5cbiAgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcblxuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBfdWlkID0gYG1hdC1pbnB1dC0ke01hdFRpbWVwaWNrZXJEaXJlY3RpdmUubmV4dElkKyt9YDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0aW5nJykgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcblxuICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgQElucHV0KCkgZ2V0IHJlcXVpcmVkKCkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQocmVxKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIocGxoKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGg7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIgPSAnJztcblxuICBmb2N1c2VkID0gZmFsc2U7XG4gIHByaXZhdGUgcGF0dGVybiA9IG5ldyBSZWdFeHAoJ1swLTJdP1swLTldOlswLTZdP1swLTldJyk7XG5cbiAgcHJpdmF0ZSBhbGxvd2VkMjRIb3VyTWFwOiBJQWxsb3dlZDI0SG91ck1hcCA9IHRoaXMuZ2VuZXJhdGVBbGxvd2VkTWFwKCk7XG5cbiAgcHJpdmF0ZSBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZSB0aGUgbGFiZWwgb2YgdGhlIG9rIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgb2tMYWJlbCA9ICdPayc7XG4gIC8qKiBPdmVycmlkZSB0aGUgbGFiZWwgb2YgdGhlIGNhbmNlbCBidXR0b24uICovXG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsID0gJ0NhbmNlbCc7XG5cbiAgLyoqIFNldHMgdGhlIGNsb2NrIG1vZGUsIDEyLWhvdXIgb3IgMjQtaG91ciBjbG9ja3MgYXJlIHN1cHBvcnRlZC4gKi9cbiAgQElucHV0KCkgY29sb3IgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIGRpc2FibGVEaWFsb2dPcGVuT25DbGljayA9IGZhbHNlO1xuICBASW5wdXQoKSBzdHJpY3QgPSB0cnVlO1xuXG4gIGNvbnRyb2xUeXBlID0gJ2FuZ3VsYXItbWF0ZXJpYWwtdGltZXBpY2tlcic7XG5cbiAgQElucHV0KCkgbWluRGF0ZSE6IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGUhOiBEYXRlO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Zvcm1hdHRlZFZhbHVlU3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBfc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fZm9ybWF0dGVkVmFsdWVTdHJpbmcgPSAnJztcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB2YWx1ZSA/PyBuZXcgRGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlU3RyaW5nID0gYCR7dHdvRGlnaXRzKHZhbHVlLmdldEhvdXJzKCkpfToke3R3b0RpZ2l0cyhcbiAgICAgIHZhbHVlLmdldE1pbnV0ZXMoKSxcbiAgICApfWA7XG5cbiAgICBpZiAoIXRoaXMuaXNJbnB1dEZvY3VzZWQpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGltZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgZW1wdHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5jdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZvcm1hdHRlZFZhbHVlU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFZhbHVlITogRGF0ZTtcblxuICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueTtcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55O1xuICBwcml2YXRlIGNvbWJpbmF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW52YWxpZElucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JykgaW5wdXRIYW5kbGVyKCkge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCBhcyBhbnkpLnZhbHVlIGFzIHN0cmluZztcbiAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IHRydWU7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+ICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlKSk7XG5cbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVIYXNDb2x1bW4gPSB2YWx1ZS5pbmNsdWRlcygnOicpO1xuICAgIGxldCBbaG91cnMsIG1pbnV0ZXNdOiBhbnkgPVxuICAgICAgbGVuZ3RoID09PSAxXG4gICAgICAgID8gW3ZhbHVlLCAwXVxuICAgICAgICA6IGxlbmd0aCA9PT0gMiAmJiAhdmFsdWVIYXNDb2x1bW5cbiAgICAgICAgICA/IFt2YWx1ZSwgMF1cbiAgICAgICAgICA6IHZhbHVlSGFzQ29sdW1uXG4gICAgICAgICAgICA/IHZhbHVlLnNwbGl0KCc6JylcbiAgICAgICAgICAgIDogdmFsdWUuc3BsaXQoLyhcXGRcXGQpLykuZmlsdGVyKHYgPT4gdik7XG5cbiAgICBob3VycyA9ICtob3VycztcblxuICAgIGlmICgvXFxzLy50ZXN0KG1pbnV0ZXMpKSB7XG4gICAgICBsZXQgb3RoZXI7XG4gICAgICBbbWludXRlcywgb3RoZXJdID0gbWludXRlcy5zcGxpdCgvXFxzLyk7XG4gICAgICBpZiAob3RoZXIgPT09ICdwbScgJiYgIWlzTmFOKGhvdXJzKSAmJiBob3VycyA8IDEyKSB7XG4gICAgICAgIGhvdXJzICs9IDEyO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1pbnV0ZXMgPSArbWludXRlcztcblxuICAgIGlmIChpc05hTihob3VycykgfHwgaXNOYU4obWludXRlcykpIHtcbiAgICAgIC8vdGhpcy53cml0ZVZhbHVlKG51bGwsIHRydWUpO1xuICAgICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiAodGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgraG91cnMgPiAyNCkge1xuICAgICAgaG91cnMgPSAnMjQnO1xuICAgIH0gZWxzZSBpZiAoK2hvdXJzIDwgMCkge1xuICAgICAgaG91cnMgPSAnMCc7XG4gICAgfVxuXG4gICAgaWYgKCttaW51dGVzID4gNTkpIHtcbiAgICAgIG1pbnV0ZXMgPSAnNTknO1xuICAgIH0gZWxzZSBpZiAoK21pbnV0ZXMgPCAwKSB7XG4gICAgICBtaW51dGVzID0gJzAnO1xuICAgIH1cblxuICAgIGNvbnN0IGQgPSB0aGlzLnZhbHVlID8gbmV3IERhdGUodGhpcy52YWx1ZS5nZXRUaW1lKCkpIDogbmV3IERhdGUoKTtcbiAgICBkLnNldEhvdXJzKCtob3Vycyk7XG4gICAgZC5zZXRNaW51dGVzKCttaW51dGVzKTtcbiAgICBkLnNldFNlY29uZHMoMCk7XG4gICAgZC5zZXRNaWxsaXNlY29uZHMoMCk7XG5cbiAgICBjb25zdCBpc1ZhbHVlSW5SYW5nZSA9IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGQpO1xuICAgIGlmICghaXNWYWx1ZUluUmFuZ2UpIHtcbiAgICAgIHRoaXMuaW52YWxpZElucHV0LmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoZCwgdHJ1ZSk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VGbikge1xuICAgICAgdGhpcy5vbkNoYW5nZUZuKGQpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBrZXlkb3duSGFuZGxlcihldmVudDogYW55KSB7XG4gICAgY29uc3QgZSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG5cbiAgICBjb25zdCBhbGxvd2VkS2V5ID0gW1xuICAgICAgJzAnLFxuICAgICAgJzEnLFxuICAgICAgJzInLFxuICAgICAgJzMnLFxuICAgICAgJzQnLFxuICAgICAgJzUnLFxuICAgICAgJzYnLFxuICAgICAgJzcnLFxuICAgICAgJzgnLFxuICAgICAgJzknLFxuICAgICAgJzonLFxuICAgICAgJ0JhY2tzcGFjZScsXG4gICAgICAnRGVsZXRlJyxcbiAgICAgICdUYWInLFxuICAgICAgJ0VudGVyJyxcbiAgICAgICdBcnJvd0xlZnQnLFxuICAgICAgJ0Fycm93UmlnaHQnLFxuICAgICAgJ0Fycm93VXAnLFxuICAgICAgJ0Fycm93RG93bicsXG4gICAgICAnSG9tZScsXG4gICAgICAnRW5kJyxcbiAgICBdO1xuICAgIGlmIChhbGxvd2VkS2V5LmluZGV4T2YoZS5rZXkpID49IDApIHJldHVybjtcblxuICAgIGNvbnN0IGFsbG93ZWRDdHJsU2hvcnRjdXRzID0gWydhJywgJ2MnLCAneCcsICd2J107XG4gICAgaWYgKGUuY3RybEtleSAmJiBhbGxvd2VkQ3RybFNob3J0Y3V0cy5pbmRleE9mKGUua2V5KSA+PSAwKSByZXR1cm47XG5cbiAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgdGhpcy5jb21iaW5hdGlvbiA9IHRoaXMuY29tYmluYXRpb24uY29uY2F0KGV2ZW50LmNvZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgdFZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHZhbHVlID0gYCR7dFZhbHVlLnNsaWNlKDAsIHRhcmdldC5zZWxlY3Rpb25TdGFydCl9JHtcbiAgICAgIGV2ZW50LmtleVxuICAgIH0ke3RWYWx1ZS5zbGljZSh0YXJnZXQuc2VsZWN0aW9uRW5kKX1gO1xuICAgIGlmICh2YWx1ZS5tYXRjaCh0aGlzLnBhdHRlcm4pIHx8IHRoaXMuY29tYmluYXRpb24ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBrZXl1cEhhbmRsZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY29tYmluYXRpb24gPSB0aGlzLmNvbWJpbmF0aW9uLmZpbHRlcih2ID0+IHYgIT09IGV2ZW50LmNvZGUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKSBmb2N1c0hhbmRsZXIoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpIGZvY3Vzb3V0SGFuZGxlcigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRJbnB1dEVsZW1lbnRWYWx1ZSh0aGlzLmZvcm1hdHRlZFZhbHVlU3RyaW5nKTtcbiAgICBpZiAodGhpcy5vblRvdWNoZWRGbiAmJiAhdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZikge1xuICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGZtOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcm90ZWN0ZWQgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbWF0Rm9ybUZpbGVkOiBNYXRGb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICkge1xuICAgIHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXIgPSBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyO1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoX3BsYXRmb3JtLklPUykge1xuICAgICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgIGlmICghZWwudmFsdWUgJiYgIWVsLnNlbGVjdGlvblN0YXJ0ICYmICFlbC5zZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IEp1c3Qgc2V0dGluZyBgMCwgMGAgZG9lc24ndCBmaXggdGhlIGlzc3VlLiBTZXR0aW5nXG4gICAgICAgICAgICAvLyBgMSwgMWAgZml4ZXMgaXQgZm9yIHRoZSBmaXJzdCB0aW1lIHRoYXQgeW91IHR5cGUgdGV4dCBhbmRcbiAgICAgICAgICAgIC8vIHRoZW4gaG9sZCBkZWxldGUuIFRvZ2dsaW5nIHRvIGAxLCAxYCBhbmQgdGhlbiBiYWNrIHRvXG4gICAgICAgICAgICAvLyBgMCwgMGAgc2VlbXMgdG8gY29tcGxldGVseSBmaXggaXQuXG4gICAgICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZSgxLCAxKTtcbiAgICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlcnZlciA9ICF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI7XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnaW5wdXQnKSB7XG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBzZXRJbnB1dEVsZW1lbnRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBjb25zdCBpc1ZhbHVlSW5SYW5nZSA9IHRoaXMuc3RyaWN0XG4gICAgICA/IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuY3VycmVudFZhbHVlKVxuICAgICAgOiBpc1RpbWVJblJhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmN1cnJlbnRWYWx1ZSk7XG5cbiAgICByZXR1cm4gaXNWYWx1ZUluUmFuZ2UgPyBudWxsIDogeyBkYXRlUmFuZ2U6IHRydWUgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHRoaXMuZm0ubW9uaXRvcih0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgY29uc3QgaGFzTWF4RGF0ZSA9ICEhdGhpcy5tYXhEYXRlO1xuICAgICAgY29uc3QgaGFzTWluRGF0ZSA9ICEhdGhpcy5taW5EYXRlO1xuXG4gICAgICAvL2lmIChoYXNNaW5EYXRlIHx8IGhhc01heERhdGUpIHtcbiAgICAgIGlmIChoYXNNaW5EYXRlKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRTZWNvbmRzKDApO1xuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgfVxuICAgICAgaWYgKGhhc01heERhdGUpIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlLnNldFNlY29uZHMoMCk7XG4gICAgICAgIHRoaXMubWF4RGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgISh0aGlzLm5nQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzLmZpbmQoKHY6IGFueSkgPT4gdiA9PT0gdGhpcylcbiAgICAgICkge1xuICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycy5wdXNoKHRoaXMpO1xuICAgICAgfVxuICAgICAgLy99XG4gICAgfVxuICAgIHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gZmFsc2U7XG4gIH1cblxuICBnZW5lcmF0ZUFsbG93ZWRNYXAoKTogSUFsbG93ZWQyNEhvdXJNYXAge1xuICAgIGNvbnN0IGlzU3RyaWN0TW9kZSA9IHRoaXMuc3RyaWN0ICYmIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICAgIGNvbnN0IGEyNGhtOiBJQWxsb3dlZDI0SG91ck1hcCA9IHt9O1xuICAgIGZvciAobGV0IGggPSAwOyBoIDwgMjQ7IGgrKykge1xuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCA2MDsgbSsrKSB7XG4gICAgICAgIGNvbnN0IGhvdXJNYXAgPSBhMjRobVtoXSB8fCB7fTtcbiAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlLmdldFRpbWUoKSk7XG4gICAgICAgICAgY3VycmVudERhdGUuc2V0SG91cnMoaCk7XG4gICAgICAgICAgY3VycmVudERhdGUuc2V0TWludXRlcyhtKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRTZWNvbmRzKDApO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgICBob3VyTWFwW21dID0gaXNEYXRlSW5SYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgY3VycmVudERhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhvdXJNYXBbbV0gPSBpc0FsbG93ZWQoaCwgbSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGEyNGhtW2hdID0gaG91ck1hcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYTI0aG07XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnBhdHRlcm4gPSAvXlswLTldezEsMn06PyhbMC05XXsxLDJ9KT8kLztcblxuICAgIGlmIChcbiAgICAgICF0aGlzLl90aW1lcGlja2VyLm1vZGFsUmVmIHx8XG4gICAgICAhdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHtcbiAgICAgIHZhbHVlOiB0aGlzLmN1cnJlbnRWYWx1ZSxcbiAgICAgIG9rTGFiZWw6IHRoaXMub2tMYWJlbCxcbiAgICAgIGNhbmNlbExhYmVsOiB0aGlzLmNhbmNlbExhYmVsLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGUsXG4gICAgICBhbGxvd2VkMjRIb3VyTWFwOiB0aGlzLmFsbG93ZWQyNEhvdXJNYXAsXG4gICAgfTtcbiAgfVxuXG4gIGNoZWNrVmFsaWRpdHkodmFsdWU6IERhdGUpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGhvdXIgPSB2YWx1ZS5nZXRIb3VycygpO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB2YWx1ZS5nZXRNaW51dGVzKCk7XG4gICAgcmV0dXJuIGlzQWxsb3dlZChob3VyLCBtaW51dGVzLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgbnVsbCwgaXNJbm5lckNhbGwgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghaXNJbm5lckNhbGwpIHtcbiAgICAgIHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gZmFsc2UpKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlLnNldFNlY29uZHMoMCk7XG4gICAgICB2YWx1ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgK3RoaXMudmFsdWUgPT09ICsodmFsdWUgPz8gMCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIl19
|