@mintplayer/ng-bootstrap 14.10.1 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_bootstrap.scss +19 -20
- package/accordion/index.d.ts +1 -0
- package/accordion/src/accordion/accordion.component.d.ts +10 -0
- package/accordion/src/accordion-tab/accordion-tab.component.d.ts +17 -0
- package/accordion/src/accordion-tab-header/accordion-tab-header.component.d.ts +9 -0
- package/{lib/components/accordion → accordion/src}/accordion.module.d.ts +0 -0
- package/{lib/components/accordion → accordion/src}/index.d.ts +0 -0
- package/alert/index.d.ts +1 -0
- package/alert/src/alert/alert.component.d.ts +15 -0
- package/alert/src/alert-close/alert-close.component.d.ts +9 -0
- package/{lib/components/alert → alert/src}/alert.module.d.ts +0 -0
- package/{lib/components/alert → alert/src}/index.d.ts +0 -0
- package/badge/index.d.ts +1 -0
- package/badge/src/badge.component.d.ts +15 -0
- package/{lib/components/badge → badge/src}/badge.module.d.ts +0 -0
- package/{lib/components/badge → badge/src}/index.d.ts +0 -0
- package/breadcrumb/index.d.ts +1 -0
- package/breadcrumb/src/breadcrumb/breadcrumb.component.d.ts +8 -0
- package/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.d.ts +9 -0
- package/{lib/components/breadcrumb → breadcrumb/src}/breadcrumb.module.d.ts +0 -0
- package/{lib/components/breadcrumb → breadcrumb/src}/index.d.ts +0 -0
- package/button-group/index.d.ts +1 -0
- package/button-group/src/button-group/button-group.component.d.ts +8 -0
- package/{lib/components/button-group → button-group/src}/button-group.module.d.ts +0 -0
- package/{lib/components/button-group → button-group/src}/index.d.ts +0 -0
- package/calendar/index.d.ts +1 -0
- package/calendar/src/calendar.component.d.ts +26 -0
- package/calendar/src/calendar.module.d.ts +9 -0
- package/{lib/components/calendar → calendar/src}/index.d.ts +0 -0
- package/card/index.d.ts +1 -0
- package/card/src/card/card.component.d.ts +5 -0
- package/card/src/card-header/card-header.component.d.ts +5 -0
- package/{lib/components/card → card/src}/card.module.d.ts +0 -0
- package/{lib/components/card → card/src}/index.d.ts +0 -0
- package/carousel/index.d.ts +1 -0
- package/carousel/src/carousel/carousel.component.d.ts +25 -0
- package/carousel/src/carousel-image/carousel-image.directive.d.ts +9 -0
- package/{lib/components/carousel → carousel/src}/carousel.module.d.ts +0 -0
- package/{lib/components/carousel → carousel/src}/index.d.ts +0 -0
- package/close/index.d.ts +1 -0
- package/close/src/close.component.d.ts +10 -0
- package/{lib/components/close → close/src}/close.module.d.ts +0 -0
- package/{lib/components/close → close/src}/index.d.ts +0 -0
- package/code-snippet/index.d.ts +1 -0
- package/code-snippet/src/code-snippet.component.d.ts +12 -0
- package/code-snippet/src/code-snippet.module.d.ts +10 -0
- package/{lib/components/code-snippet → code-snippet/src}/index.d.ts +0 -0
- package/context-menu/index.d.ts +1 -0
- package/context-menu/src/context-menu.directive.d.ts +18 -0
- package/{lib/components/context-menu → context-menu/src}/context-menu.module.d.ts +0 -0
- package/{lib/components/context-menu → context-menu/src}/index.d.ts +0 -0
- package/copy/index.d.ts +1 -0
- package/copy/src/copy.directive.d.ts +11 -0
- package/{lib/components/copy → copy/src}/copy.module.d.ts +0 -0
- package/{lib/components/copy → copy/src}/index.d.ts +0 -0
- package/datatable/index.d.ts +1 -0
- package/datatable/src/datatable/datatable.component.d.ts +16 -0
- package/{lib/components/datatable → datatable/src}/datatable-column/datatable-column-metadata.d.ts +0 -0
- package/datatable/src/datatable-column/datatable-column.directive.d.ts +10 -0
- package/datatable/src/datatable-column/index.d.ts +2 -0
- package/datatable/src/datatable-settings.d.ts +15 -0
- package/datatable/src/datatable.module.d.ts +10 -0
- package/datatable/src/index.d.ts +4 -0
- package/datepicker/index.d.ts +1 -0
- package/datepicker/src/datepicker.component.d.ts +14 -0
- package/datepicker/src/datepicker.module.d.ts +10 -0
- package/{lib/components/datepicker → datepicker/src}/index.d.ts +0 -0
- package/dropdown/index.d.ts +1 -0
- package/dropdown/src/dropdown/dropdown.directive.d.ts +22 -0
- package/dropdown/src/dropdown-menu/dropdown-menu.directive.d.ts +23 -0
- package/dropdown/src/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -0
- package/{lib/components/dropdown → dropdown/src}/dropdown.module.d.ts +0 -0
- package/{lib/components/dropdown → dropdown/src}/index.d.ts +0 -0
- package/dropdown-menu/index.d.ts +1 -0
- package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +7 -0
- package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +14 -0
- package/dropdown-menu/src/dropdown-menu.module.d.ts +9 -0
- package/dropdown-menu/src/index.d.ts +3 -0
- package/enhanced-paste/index.d.ts +1 -0
- package/enhanced-paste/src/enhanced-paste.directive.d.ts +14 -0
- package/{lib/directives/enhanced-paste → enhanced-paste/src}/enhanced-paste.module.d.ts +0 -0
- package/enhanced-paste/src/index.d.ts +2 -0
- package/esm2020/accordion/index.mjs +2 -0
- package/esm2020/accordion/mintplayer-ng-bootstrap-accordion.mjs +5 -0
- package/esm2020/accordion/src/accordion/accordion.component.mjs +21 -0
- package/esm2020/accordion/src/accordion-tab/accordion-tab.component.mjs +63 -0
- package/esm2020/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +20 -0
- package/esm2020/accordion/src/accordion.module.mjs +34 -0
- package/esm2020/accordion/src/index.mjs +5 -0
- package/esm2020/alert/index.mjs +2 -0
- package/esm2020/alert/mintplayer-ng-bootstrap-alert.mjs +5 -0
- package/esm2020/alert/src/alert/alert.component.mjs +41 -0
- package/esm2020/alert/src/alert-close/alert-close.component.mjs +20 -0
- package/esm2020/alert/src/alert.module.mjs +27 -0
- package/esm2020/alert/src/index.mjs +4 -0
- package/esm2020/badge/index.mjs +2 -0
- package/esm2020/badge/mintplayer-ng-bootstrap-badge.mjs +5 -0
- package/esm2020/badge/src/badge.component.mjs +30 -0
- package/esm2020/badge/src/badge.module.mjs +18 -0
- package/esm2020/badge/src/index.mjs +3 -0
- package/esm2020/breadcrumb/index.mjs +2 -0
- package/esm2020/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +5 -0
- package/esm2020/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +13 -0
- package/esm2020/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +18 -0
- package/esm2020/breadcrumb/src/breadcrumb.module.mjs +19 -0
- package/esm2020/breadcrumb/src/index.mjs +4 -0
- package/esm2020/button-group/index.mjs +2 -0
- package/esm2020/button-group/mintplayer-ng-bootstrap-button-group.mjs +5 -0
- package/esm2020/button-group/src/button-group/button-group.component.mjs +13 -0
- package/esm2020/button-group/src/button-group.module.mjs +18 -0
- package/esm2020/button-group/src/index.mjs +3 -0
- package/esm2020/calendar/index.mjs +2 -0
- package/esm2020/calendar/mintplayer-ng-bootstrap-calendar.mjs +5 -0
- package/esm2020/calendar/src/calendar.component.mjs +103 -0
- package/esm2020/calendar/src/calendar.module.mjs +37 -0
- package/esm2020/calendar/src/index.mjs +3 -0
- package/esm2020/card/index.mjs +2 -0
- package/esm2020/card/mintplayer-ng-bootstrap-card.mjs +5 -0
- package/esm2020/card/src/card/card.component.mjs +11 -0
- package/esm2020/card/src/card-header/card-header.component.mjs +11 -0
- package/esm2020/card/src/card.module.mjs +27 -0
- package/esm2020/card/src/index.mjs +4 -0
- package/esm2020/carousel/index.mjs +2 -0
- package/esm2020/carousel/mintplayer-ng-bootstrap-carousel.mjs +5 -0
- package/esm2020/carousel/src/carousel/carousel.component.mjs +103 -0
- package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +17 -0
- package/esm2020/carousel/src/carousel.module.mjs +29 -0
- package/esm2020/carousel/src/index.mjs +4 -0
- package/esm2020/close/index.mjs +2 -0
- package/esm2020/close/mintplayer-ng-bootstrap-close.mjs +5 -0
- package/esm2020/close/src/close.component.mjs +21 -0
- package/esm2020/close/src/close.module.mjs +18 -0
- package/esm2020/close/src/index.mjs +3 -0
- package/esm2020/code-snippet/index.mjs +2 -0
- package/esm2020/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +5 -0
- package/esm2020/code-snippet/src/code-snippet.component.mjs +28 -0
- package/esm2020/code-snippet/src/code-snippet.module.mjs +32 -0
- package/esm2020/code-snippet/src/index.mjs +3 -0
- package/esm2020/context-menu/index.mjs +2 -0
- package/esm2020/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +5 -0
- package/esm2020/context-menu/src/context-menu.directive.mjs +84 -0
- package/esm2020/context-menu/src/context-menu.module.mjs +28 -0
- package/esm2020/context-menu/src/index.mjs +3 -0
- package/esm2020/copy/index.mjs +2 -0
- package/esm2020/copy/mintplayer-ng-bootstrap-copy.mjs +5 -0
- package/esm2020/copy/src/copy.directive.mjs +45 -0
- package/esm2020/copy/src/copy.module.mjs +24 -0
- package/esm2020/copy/src/index.mjs +3 -0
- package/esm2020/datatable/index.mjs +2 -0
- package/esm2020/datatable/mintplayer-ng-bootstrap-datatable.mjs +5 -0
- package/esm2020/datatable/src/datatable/datatable.component.mjs +54 -0
- package/esm2020/datatable/src/datatable-column/datatable-column-metadata.mjs +2 -0
- package/esm2020/datatable/src/datatable-column/datatable-column.directive.mjs +19 -0
- package/esm2020/datatable/src/datatable-column/index.mjs +3 -0
- package/esm2020/datatable/src/datatable-settings.mjs +37 -0
- package/esm2020/datatable/src/datatable.module.mjs +39 -0
- package/esm2020/datatable/src/index.mjs +5 -0
- package/esm2020/datepicker/index.mjs +2 -0
- package/esm2020/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +5 -0
- package/esm2020/datepicker/src/datepicker.component.mjs +45 -0
- package/esm2020/datepicker/src/datepicker.module.mjs +32 -0
- package/esm2020/datepicker/src/index.mjs +3 -0
- package/esm2020/dropdown/index.mjs +2 -0
- package/esm2020/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +5 -0
- package/esm2020/dropdown/src/dropdown/dropdown.directive.mjs +63 -0
- package/esm2020/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +111 -0
- package/esm2020/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +28 -0
- package/esm2020/dropdown/src/dropdown.module.mjs +42 -0
- package/esm2020/dropdown/src/index.mjs +5 -0
- package/esm2020/dropdown-menu/index.mjs +2 -0
- package/esm2020/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +5 -0
- package/esm2020/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +19 -0
- package/esm2020/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +41 -0
- package/esm2020/dropdown-menu/src/dropdown-menu.module.mjs +19 -0
- package/esm2020/dropdown-menu/src/index.mjs +4 -0
- package/esm2020/enhanced-paste/index.mjs +2 -0
- package/esm2020/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +5 -0
- package/esm2020/enhanced-paste/src/enhanced-paste.directive.mjs +58 -0
- package/esm2020/enhanced-paste/src/enhanced-paste.module.mjs +24 -0
- package/esm2020/enhanced-paste/src/index.mjs +3 -0
- package/esm2020/file-upload/index.mjs +2 -0
- package/esm2020/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +5 -0
- package/esm2020/file-upload/src/component/file-upload.component.mjs +84 -0
- package/esm2020/file-upload/src/directive/file-upload-template.directive.mjs +18 -0
- package/esm2020/file-upload/src/file-upload.mjs +2 -0
- package/esm2020/file-upload/src/file-upload.module.mjs +45 -0
- package/esm2020/file-upload/src/index.mjs +5 -0
- package/esm2020/for/index.mjs +2 -0
- package/esm2020/for/mintplayer-ng-bootstrap-for.mjs +5 -0
- package/esm2020/for/src/for.directive.mjs +38 -0
- package/esm2020/for/src/for.module.mjs +24 -0
- package/esm2020/for/src/index.mjs +3 -0
- package/esm2020/grid/index.mjs +2 -0
- package/esm2020/grid/mintplayer-ng-bootstrap-grid.mjs +5 -0
- package/esm2020/grid/src/component/grid.component.mjs +32 -0
- package/esm2020/grid/src/directives/column/column.directive.mjs +56 -0
- package/esm2020/grid/src/directives/index.mjs +3 -0
- package/esm2020/grid/src/directives/row/row.directive.mjs +19 -0
- package/esm2020/grid/src/grid.module.mjs +20 -0
- package/esm2020/grid/src/index.mjs +4 -0
- package/esm2020/index.mjs +2 -3
- package/esm2020/lib/interfaces/enum-item.mjs +2 -0
- package/esm2020/lib/interfaces/index.mjs +4 -1
- package/esm2020/lib/pipes/add-properties/add-properties.module.mjs +4 -4
- package/esm2020/lib/pipes/add-properties/add-properties.pipe.mjs +3 -3
- package/esm2020/lib/pipes/font-color/font-color.module.mjs +4 -4
- package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +3 -3
- package/esm2020/lib/pipes/format-bytes/format-bytes.module.mjs +4 -4
- package/esm2020/lib/pipes/format-bytes/format-bytes.pipe.mjs +3 -3
- package/esm2020/lib/pipes/in-list/in-list.module.mjs +4 -4
- package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +3 -3
- package/esm2020/lib/pipes/in-list/index.mjs +3 -0
- package/esm2020/lib/pipes/index.mjs +5 -1
- package/esm2020/lib/pipes/month-name/index.mjs +3 -0
- package/esm2020/lib/pipes/month-name/month-name.module.mjs +4 -4
- package/esm2020/lib/pipes/month-name/month-name.pipe.mjs +3 -3
- package/esm2020/lib/pipes/uc-first/index.mjs +3 -0
- package/esm2020/lib/pipes/uc-first/uc-first.module.mjs +4 -4
- package/esm2020/lib/pipes/uc-first/uc-first.pipe.mjs +3 -3
- package/esm2020/lib/pipes/weekday-name/index.mjs +3 -0
- package/esm2020/lib/pipes/weekday-name/weekday-name.module.mjs +4 -4
- package/esm2020/lib/pipes/weekday-name/weekday-name.pipe.mjs +3 -3
- package/esm2020/lib/services/calendar-month/calendar-month.service.mjs +3 -3
- package/esm2020/lib/services/enum/enum.service.mjs +31 -0
- package/esm2020/lib/services/index.mjs +4 -0
- package/esm2020/lib/services/scroll-offset/scroll-offset.service.mjs +3 -3
- package/esm2020/lib/types/index.mjs +2 -1
- package/esm2020/list-group/index.mjs +2 -0
- package/esm2020/list-group/mintplayer-ng-bootstrap-list-group.mjs +5 -0
- package/esm2020/list-group/src/index.mjs +4 -0
- package/esm2020/list-group/src/list-group/list-group.component.mjs +19 -0
- package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +15 -0
- package/esm2020/list-group/src/list-group.module.mjs +27 -0
- package/esm2020/modal/index.mjs +2 -0
- package/esm2020/modal/mintplayer-ng-bootstrap-modal.mjs +5 -0
- package/esm2020/modal/src/components/index.mjs +3 -0
- package/esm2020/modal/src/components/modal/modal.component.mjs +21 -0
- package/esm2020/modal/src/components/modal-host/modal-host.component.mjs +82 -0
- package/esm2020/modal/src/directives/index.mjs +6 -0
- package/esm2020/modal/src/directives/modal/modal.directive.mjs +18 -0
- package/esm2020/modal/src/directives/modal-body/modal-body.directive.mjs +19 -0
- package/esm2020/modal/src/directives/modal-close/modal-close.directive.mjs +24 -0
- package/esm2020/modal/src/directives/modal-footer/modal-footer.directive.mjs +19 -0
- package/esm2020/modal/src/directives/modal-header/modal-header.directive.mjs +19 -0
- package/esm2020/modal/src/index.mjs +4 -0
- package/esm2020/modal/src/modal.module.mjs +71 -0
- package/esm2020/modal/src/providers/modal-content.provider.mjs +3 -0
- package/esm2020/modal/src/providers/portal-factory.provider.mjs +3 -0
- package/esm2020/multiselect/index.mjs +2 -0
- package/esm2020/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +5 -0
- package/esm2020/multiselect/src/component/multiselect.component.mjs +34 -0
- package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +18 -0
- package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +18 -0
- package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +18 -0
- package/esm2020/multiselect/src/directives/index.mjs +4 -0
- package/esm2020/multiselect/src/index.mjs +4 -0
- package/esm2020/multiselect/src/multiselect.module.mjs +55 -0
- package/esm2020/navbar/index.mjs +2 -0
- package/esm2020/navbar/mintplayer-ng-bootstrap-navbar.mjs +5 -0
- package/esm2020/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +38 -0
- package/esm2020/navbar/src/expand-button/expand-button.directive.mjs +18 -0
- package/esm2020/navbar/src/index.mjs +13 -0
- package/esm2020/navbar/src/nav-link/nav-link.directive.mjs +29 -0
- package/esm2020/navbar/src/navbar/navbar.component.mjs +98 -0
- package/esm2020/navbar/src/navbar-brand/navbar-brand.component.mjs +20 -0
- package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +69 -0
- package/esm2020/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +95 -0
- package/esm2020/navbar/src/navbar-item/navbar-item.component.mjs +64 -0
- package/esm2020/navbar/src/navbar-nav/navbar-nav.component.mjs +69 -0
- package/esm2020/navbar/src/navbar-toggler/navbar-toggler.component.mjs +47 -0
- package/esm2020/navbar/src/navbar.module.mjs +73 -0
- package/esm2020/offcanvas/index.mjs +2 -0
- package/esm2020/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +5 -0
- package/esm2020/offcanvas/src/components/index.mjs +5 -0
- package/esm2020/offcanvas/src/components/offcanvas/offcanvas.component.mjs +111 -0
- package/esm2020/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +18 -0
- package/esm2020/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +14 -0
- package/esm2020/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +142 -0
- package/esm2020/offcanvas/src/directives/index.mjs +3 -0
- package/esm2020/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +24 -0
- package/esm2020/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +18 -0
- package/esm2020/offcanvas/src/index.mjs +5 -0
- package/esm2020/offcanvas/src/offcanvas.module.mjs +66 -0
- package/esm2020/offcanvas/src/providers/offcanvas-content.provider.mjs +3 -0
- package/esm2020/offcanvas/src/providers/portal-factory.provider.mjs +3 -0
- package/esm2020/offcanvas/src/types/index.mjs +2 -0
- package/esm2020/offcanvas/src/types/position.mjs +2 -0
- package/esm2020/pagination/index.mjs +2 -0
- package/esm2020/pagination/mintplayer-ng-bootstrap-pagination.mjs +5 -0
- package/esm2020/pagination/src/index.mjs +3 -0
- package/esm2020/pagination/src/pagination/pagination.component.mjs +198 -0
- package/esm2020/pagination/src/pagination.module.mjs +24 -0
- package/esm2020/placeholder/index.mjs +2 -0
- package/esm2020/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +5 -0
- package/esm2020/placeholder/src/index.mjs +4 -0
- package/esm2020/placeholder/src/placeholder/placeholder.component.mjs +26 -0
- package/esm2020/placeholder/src/placeholder-field/placeholder-field.directive.mjs +46 -0
- package/esm2020/placeholder/src/placeholder.module.mjs +19 -0
- package/esm2020/popover/index.mjs +2 -0
- package/esm2020/popover/mintplayer-ng-bootstrap-popover.mjs +5 -0
- package/esm2020/popover/src/component/popover.component.mjs +56 -0
- package/esm2020/popover/src/directives/index.mjs +4 -0
- package/esm2020/popover/src/directives/popover/popover.directive.mjs +129 -0
- package/esm2020/popover/src/directives/popover-body/popover-body.directive.mjs +19 -0
- package/esm2020/popover/src/directives/popover-header/popover-header.directive.mjs +19 -0
- package/esm2020/popover/src/index.mjs +4 -0
- package/esm2020/popover/src/popover.module.mjs +35 -0
- package/esm2020/popover/src/providers/popover-content.provider.mjs +3 -0
- package/esm2020/popover/src/providers/portal-factory.provider.mjs +3 -0
- package/esm2020/progress-bar/index.mjs +2 -0
- package/esm2020/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +5 -0
- package/esm2020/progress-bar/src/index.mjs +4 -0
- package/esm2020/progress-bar/src/progress/progress.component.mjs +31 -0
- package/esm2020/progress-bar/src/progress-bar/progress-bar.component.mjs +121 -0
- package/esm2020/progress-bar/src/progress-bar.module.mjs +29 -0
- package/esm2020/range/index.mjs +2 -0
- package/esm2020/range/mintplayer-ng-bootstrap-range.mjs +5 -0
- package/esm2020/range/src/component/range.component.mjs +15 -0
- package/esm2020/range/src/index.mjs +4 -0
- package/esm2020/range/src/range.module.mjs +19 -0
- package/esm2020/range/src/value-accessor/range-value-accessor.mjs +62 -0
- package/esm2020/rating/index.mjs +2 -0
- package/esm2020/rating/mintplayer-ng-bootstrap-rating.mjs +5 -0
- package/esm2020/rating/src/index.mjs +3 -0
- package/esm2020/rating/src/rating.component.mjs +72 -0
- package/esm2020/rating/src/rating.module.mjs +24 -0
- package/esm2020/scheduler/index.mjs +2 -0
- package/esm2020/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +5 -0
- package/esm2020/scheduler/src/components/index.mjs +3 -0
- package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +84 -0
- package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +537 -0
- package/esm2020/scheduler/src/constants/available-scales.mjs +12 -0
- package/esm2020/scheduler/src/constants/index.mjs +2 -0
- package/esm2020/scheduler/src/enums/drag-operation.mjs +8 -0
- package/esm2020/scheduler/src/enums/index.mjs +2 -0
- package/esm2020/scheduler/src/enums/scheduler-mode.mjs +6 -0
- package/esm2020/scheduler/src/index.mjs +6 -0
- package/esm2020/scheduler/src/interfaces/drag-operation.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/index.mjs +6 -0
- package/esm2020/scheduler/src/interfaces/preview-event.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/resource-group.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/resource-or-group.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/resource.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/scheduler-event-part.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/scheduler-event-with-parts.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/scheduler-event.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/scheduler-schale.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/time-slot.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/timeline-options.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/timeline-track.mjs +2 -0
- package/esm2020/scheduler/src/interfaces/week-options.mjs +2 -0
- package/esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +16 -0
- package/esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +20 -0
- package/esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +20 -0
- package/esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +22 -0
- package/esm2020/scheduler/src/scheduler.module.mjs +41 -0
- package/esm2020/scheduler/src/services/timeline/timeline.service.mjs +65 -0
- package/esm2020/scrollspy/index.mjs +2 -0
- package/esm2020/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +5 -0
- package/esm2020/scrollspy/src/component/scrollspy.component.mjs +90 -0
- package/esm2020/scrollspy/src/directives/scrollspy.directive.mjs +16 -0
- package/esm2020/scrollspy/src/index.mjs +4 -0
- package/esm2020/scrollspy/src/scrollspy.module.mjs +29 -0
- package/esm2020/select/index.mjs +2 -0
- package/esm2020/select/mintplayer-ng-bootstrap-select.mjs +5 -0
- package/esm2020/select/src/component/select.component.mjs +85 -0
- package/esm2020/select/src/index.mjs +5 -0
- package/esm2020/select/src/select.module.mjs +31 -0
- package/esm2020/select/src/types/index.mjs +2 -0
- package/esm2020/select/src/types/select-size.mjs +2 -0
- package/esm2020/select/src/value-accessors/index.mjs +2 -0
- package/esm2020/select/src/value-accessors/select-value-accessor.mjs +167 -0
- package/esm2020/select2/index.mjs +2 -0
- package/esm2020/select2/mintplayer-ng-bootstrap-select2.mjs +5 -0
- package/esm2020/select2/src/component/select2.component.mjs +84 -0
- package/esm2020/select2/src/directive/item-template.directive.mjs +19 -0
- package/esm2020/select2/src/index.mjs +4 -0
- package/esm2020/select2/src/select2.module.mjs +45 -0
- package/esm2020/snackbar/index.mjs +2 -0
- package/esm2020/snackbar/mintplayer-ng-bootstrap-snackbar.mjs +5 -0
- package/esm2020/snackbar/src/component/snackbar.component.mjs +35 -0
- package/esm2020/snackbar/src/directives/index.mjs +2 -0
- package/esm2020/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +27 -0
- package/esm2020/snackbar/src/index.mjs +6 -0
- package/esm2020/snackbar/src/interfaces/index.mjs +2 -0
- package/esm2020/snackbar/src/interfaces/snackbar-animation-meta.mjs +2 -0
- package/esm2020/snackbar/src/providers/snackbar-content.provider.mjs +3 -0
- package/esm2020/snackbar/src/service/snackbar.service.mjs +45 -0
- package/esm2020/snackbar/src/snackbar.module.mjs +39 -0
- package/esm2020/spinner/index.mjs +2 -0
- package/esm2020/spinner/mintplayer-ng-bootstrap-spinner.mjs +5 -0
- package/esm2020/spinner/src/index.mjs +3 -0
- package/esm2020/spinner/src/spinner.component.mjs +43 -0
- package/esm2020/spinner/src/spinner.module.mjs +18 -0
- package/esm2020/tab-control/index.mjs +2 -0
- package/esm2020/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +5 -0
- package/esm2020/tab-control/src/index.mjs +4 -0
- package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +28 -0
- package/esm2020/tab-control/src/tab-control.module.mjs +29 -0
- package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +23 -0
- package/esm2020/table/index.mjs +2 -0
- package/esm2020/table/mintplayer-ng-bootstrap-table.mjs +5 -0
- package/esm2020/table/src/component/table.component.mjs +47 -0
- package/esm2020/table/src/index.mjs +3 -0
- package/esm2020/table/src/table.module.mjs +18 -0
- package/esm2020/timepicker/index.mjs +2 -0
- package/esm2020/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +5 -0
- package/esm2020/timepicker/src/index.mjs +3 -0
- package/esm2020/timepicker/src/timepicker.component.mjs +110 -0
- package/esm2020/timepicker/src/timepicker.module.mjs +40 -0
- package/esm2020/toast/index.mjs +2 -0
- package/esm2020/toast/mintplayer-ng-bootstrap-toast.mjs +5 -0
- package/esm2020/toast/src/components/index.mjs +5 -0
- package/esm2020/toast/src/components/toast/toast.component.mjs +16 -0
- package/esm2020/toast/src/components/toast-body/toast-body.component.mjs +20 -0
- package/esm2020/toast/src/components/toast-container/toast-container.component.mjs +22 -0
- package/esm2020/toast/src/components/toast-header/toast-header.component.mjs +17 -0
- package/esm2020/toast/src/directives/index.mjs +2 -0
- package/esm2020/toast/src/directives/toast-close/toast-close.directive.mjs +32 -0
- package/esm2020/toast/src/index.mjs +5 -0
- package/esm2020/toast/src/providers/portal-factory.provider.mjs +3 -0
- package/esm2020/toast/src/services/index.mjs +2 -0
- package/esm2020/toast/src/services/toast/toast.service.mjs +56 -0
- package/esm2020/toast/src/toast.module.mjs +72 -0
- package/esm2020/toggle-button/index.mjs +2 -0
- package/esm2020/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +5 -0
- package/esm2020/toggle-button/src/component/toggle-button.component.mjs +154 -0
- package/esm2020/toggle-button/src/directives/index.mjs +2 -0
- package/esm2020/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +19 -0
- package/esm2020/toggle-button/src/index.mjs +6 -0
- package/esm2020/toggle-button/src/toggle-button.module.mjs +34 -0
- package/esm2020/toggle-button/src/types/check-style.mjs +2 -0
- package/esm2020/toggle-button/src/types/index.mjs +2 -0
- package/esm2020/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +108 -0
- package/esm2020/tooltip/index.mjs +2 -0
- package/esm2020/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +5 -0
- package/esm2020/tooltip/src/component/tooltip.component.mjs +29 -0
- package/esm2020/tooltip/src/directive/tooltip.directive.mjs +110 -0
- package/esm2020/tooltip/src/index.mjs +4 -0
- package/esm2020/tooltip/src/providers/tooltip-content.provider.mjs +3 -0
- package/esm2020/tooltip/src/tooltip.module.mjs +31 -0
- package/esm2020/typeahead/index.mjs +2 -0
- package/esm2020/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +5 -0
- package/esm2020/typeahead/src/index.mjs +3 -0
- package/esm2020/typeahead/src/typeahead.component.mjs +80 -0
- package/esm2020/typeahead/src/typeahead.module.mjs +40 -0
- package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs +131 -0
- package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-alert.mjs +87 -0
- package/fesm2015/mintplayer-ng-bootstrap-alert.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-badge.mjs +52 -0
- package/fesm2015/mintplayer-ng-bootstrap-badge.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs +51 -0
- package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs +35 -0
- package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +143 -0
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-card.mjs +50 -0
- package/fesm2015/mintplayer-ng-bootstrap-card.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +149 -0
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-close.mjs +43 -0
- package/fesm2015/mintplayer-ng-bootstrap-close.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs +63 -0
- package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs +117 -0
- package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-copy.mjs +75 -0
- package/fesm2015/mintplayer-ng-bootstrap-copy.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs +144 -0
- package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs +81 -0
- package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs +81 -0
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs +235 -0
- package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs +85 -0
- package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +146 -0
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-for.mjs +66 -0
- package/fesm2015/mintplayer-ng-bootstrap-for.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-grid.mjs +124 -0
- package/fesm2015/mintplayer-ng-bootstrap-grid.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +61 -0
- package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-modal.mjs +258 -0
- package/fesm2015/mintplayer-ng-bootstrap-modal.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +132 -0
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +581 -0
- package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs +380 -0
- package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +226 -0
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs +89 -0
- package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-popover.mjs +254 -0
- package/fesm2015/mintplayer-ng-bootstrap-popover.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs +182 -0
- package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-range.mjs +95 -0
- package/fesm2015/mintplayer-ng-bootstrap-range.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +100 -0
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +807 -0
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs +136 -0
- package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-select.mjs +284 -0
- package/fesm2015/mintplayer-ng-bootstrap-select.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-select2.mjs +147 -0
- package/fesm2015/mintplayer-ng-bootstrap-select2.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs +142 -0
- package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs +65 -0
- package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +77 -0
- package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-table.mjs +69 -0
- package/fesm2015/mintplayer-ng-bootstrap-table.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs +154 -0
- package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-toast.mjs +219 -0
- package/fesm2015/mintplayer-ng-bootstrap-toast.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs +309 -0
- package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs +172 -0
- package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs +124 -0
- package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap.mjs +270 -6561
- package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs +131 -0
- package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-alert.mjs +87 -0
- package/fesm2020/mintplayer-ng-bootstrap-alert.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-badge.mjs +52 -0
- package/fesm2020/mintplayer-ng-bootstrap-badge.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs +51 -0
- package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs +35 -0
- package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +143 -0
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-card.mjs +50 -0
- package/fesm2020/mintplayer-ng-bootstrap-card.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +149 -0
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-close.mjs +43 -0
- package/fesm2020/mintplayer-ng-bootstrap-close.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs +63 -0
- package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs +115 -0
- package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-copy.mjs +72 -0
- package/fesm2020/mintplayer-ng-bootstrap-copy.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs +145 -0
- package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs +81 -0
- package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs +79 -0
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs +232 -0
- package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs +85 -0
- package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +146 -0
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-for.mjs +66 -0
- package/fesm2020/mintplayer-ng-bootstrap-for.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-grid.mjs +124 -0
- package/fesm2020/mintplayer-ng-bootstrap-grid.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +61 -0
- package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-modal.mjs +254 -0
- package/fesm2020/mintplayer-ng-bootstrap-modal.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +132 -0
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +570 -0
- package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs +376 -0
- package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +226 -0
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs +89 -0
- package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-popover.mjs +250 -0
- package/fesm2020/mintplayer-ng-bootstrap-popover.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs +182 -0
- package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-range.mjs +95 -0
- package/fesm2020/mintplayer-ng-bootstrap-range.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +100 -0
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +807 -0
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs +133 -0
- package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-select.mjs +282 -0
- package/fesm2020/mintplayer-ng-bootstrap-select.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-select2.mjs +147 -0
- package/fesm2020/mintplayer-ng-bootstrap-select2.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs +139 -0
- package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs +65 -0
- package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +77 -0
- package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-table.mjs +69 -0
- package/fesm2020/mintplayer-ng-bootstrap-table.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs +154 -0
- package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-toast.mjs +217 -0
- package/fesm2020/mintplayer-ng-bootstrap-toast.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs +309 -0
- package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs +168 -0
- package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs +124 -0
- package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap.mjs +270 -6517
- package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
- package/file-upload/index.d.ts +1 -0
- package/file-upload/src/component/file-upload.component.d.ts +19 -0
- package/file-upload/src/directive/file-upload-template.directive.d.ts +8 -0
- package/{lib/components/file-upload → file-upload/src}/file-upload.d.ts +0 -0
- package/file-upload/src/file-upload.module.d.ts +13 -0
- package/{lib/components/file-upload → file-upload/src}/index.d.ts +0 -0
- package/for/index.d.ts +1 -0
- package/for/src/for.directive.d.ts +8 -0
- package/{lib/components/for → for/src}/for.module.d.ts +0 -0
- package/{lib/components/for → for/src}/index.d.ts +0 -0
- package/grid/index.d.ts +1 -0
- package/grid/src/component/grid.component.d.ts +12 -0
- package/grid/src/directives/column/column.directive.d.ts +12 -0
- package/{lib/components/grid → grid/src}/directives/index.d.ts +0 -0
- package/grid/src/directives/row/row.directive.d.ts +6 -0
- package/{lib/components/grid → grid/src}/grid.module.d.ts +0 -0
- package/{lib/components/grid → grid/src}/index.d.ts +0 -0
- package/index.d.ts +1 -2
- package/lib/interfaces/enum-item.d.ts +4 -0
- package/lib/interfaces/index.d.ts +3 -0
- package/lib/pipes/in-list/index.d.ts +2 -0
- package/lib/pipes/index.d.ts +4 -0
- package/lib/pipes/month-name/index.d.ts +2 -0
- package/lib/pipes/uc-first/index.d.ts +2 -0
- package/lib/pipes/weekday-name/index.d.ts +2 -0
- package/lib/services/enum/enum.service.d.ts +9 -0
- package/lib/services/index.d.ts +3 -0
- package/lib/types/index.d.ts +1 -0
- package/list-group/index.d.ts +1 -0
- package/{lib/components/list-group → list-group/src}/index.d.ts +0 -0
- package/list-group/src/list-group/list-group.component.d.ts +10 -0
- package/list-group/src/list-group-item/list-group-item.component.d.ts +8 -0
- package/{lib/components/list-group → list-group/src}/list-group.module.d.ts +0 -0
- package/modal/index.d.ts +1 -0
- package/{lib/components/modal → modal/src}/components/index.d.ts +0 -0
- package/modal/src/components/modal/modal.component.d.ts +9 -0
- package/modal/src/components/modal-host/modal-host.component.d.ts +27 -0
- package/{lib/components/modal → modal/src}/directives/index.d.ts +0 -0
- package/modal/src/directives/modal/modal.directive.d.ts +8 -0
- package/modal/src/directives/modal-body/modal-body.directive.d.ts +6 -0
- package/modal/src/directives/modal-close/modal-close.directive.d.ts +9 -0
- package/modal/src/directives/modal-footer/modal-footer.directive.d.ts +6 -0
- package/modal/src/directives/modal-header/modal-header.directive.d.ts +6 -0
- package/{lib/components/modal → modal/src}/index.d.ts +0 -0
- package/{lib/components/modal → modal/src}/modal.module.d.ts +0 -0
- package/{lib/components/modal → modal/src}/providers/modal-content.provider.d.ts +0 -0
- package/{lib/components/modal → modal/src}/providers/portal-factory.provider.d.ts +0 -0
- package/multiselect/index.d.ts +1 -0
- package/multiselect/src/component/multiselect.component.d.ts +13 -0
- package/multiselect/src/directives/button-template/button-template.directive.d.ts +8 -0
- package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +8 -0
- package/multiselect/src/directives/header-template/header-template.directive.d.ts +8 -0
- package/{lib/components/multiselect → multiselect/src}/directives/index.d.ts +0 -0
- package/{lib/components/multiselect → multiselect/src}/index.d.ts +0 -0
- package/multiselect/src/multiselect.module.d.ts +15 -0
- package/navbar/index.d.ts +1 -0
- package/navbar/src/dropdown-toggle/dropdown-toggle.directive.d.ts +13 -0
- package/navbar/src/expand-button/expand-button.directive.d.ts +8 -0
- package/{lib/components/navbar → navbar/src}/index.d.ts +0 -0
- package/navbar/src/nav-link/nav-link.directive.d.ts +9 -0
- package/navbar/src/navbar/navbar.component.d.ts +27 -0
- package/navbar/src/navbar-brand/navbar-brand.component.d.ts +7 -0
- package/navbar/src/navbar-content/navbar-content.directive.d.ts +18 -0
- package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +27 -0
- package/navbar/src/navbar-item/navbar-item.component.d.ts +16 -0
- package/navbar/src/navbar-nav/navbar-nav.component.d.ts +19 -0
- package/navbar/src/navbar-toggler/navbar-toggler.component.d.ts +13 -0
- package/{lib/components/navbar → navbar/src}/navbar.module.d.ts +0 -0
- package/offcanvas/index.d.ts +1 -0
- package/{lib/components/offcanvas → offcanvas/src}/components/index.d.ts +0 -0
- package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +34 -0
- package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +9 -0
- package/offcanvas/src/components/offcanvas-header/offcanvas-header.component.d.ts +8 -0
- package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +37 -0
- package/{lib/components/offcanvas → offcanvas/src}/directives/index.d.ts +0 -0
- package/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.d.ts +9 -0
- package/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.d.ts +8 -0
- package/{lib/components/offcanvas → offcanvas/src}/index.d.ts +0 -0
- package/{lib/components/offcanvas → offcanvas/src}/offcanvas.module.d.ts +0 -0
- package/{lib/components/offcanvas → offcanvas/src}/providers/offcanvas-content.provider.d.ts +0 -0
- package/{lib/components/offcanvas → offcanvas/src}/providers/portal-factory.provider.d.ts +0 -0
- package/{lib/components/offcanvas → offcanvas/src}/types/index.d.ts +0 -0
- package/{lib/components/offcanvas → offcanvas/src}/types/position.d.ts +0 -0
- package/package.json +363 -10
- package/pagination/index.d.ts +1 -0
- package/{lib/components/pagination → pagination/src}/index.d.ts +0 -0
- package/pagination/src/pagination/pagination.component.d.ts +48 -0
- package/{lib/components/pagination → pagination/src}/pagination.module.d.ts +0 -0
- package/placeholder/index.d.ts +1 -0
- package/{lib/components/placeholder → placeholder/src}/index.d.ts +0 -0
- package/placeholder/src/placeholder/placeholder.component.d.ts +11 -0
- package/placeholder/src/placeholder-field/placeholder-field.directive.d.ts +16 -0
- package/{lib/components/placeholder → placeholder/src}/placeholder.module.d.ts +0 -0
- package/popover/index.d.ts +1 -0
- package/popover/src/component/popover.component.d.ts +19 -0
- package/{lib/components/popover → popover/src}/directives/index.d.ts +0 -0
- package/popover/src/directives/popover/popover.directive.d.ts +27 -0
- package/popover/src/directives/popover-body/popover-body.directive.d.ts +6 -0
- package/popover/src/directives/popover-header/popover-header.directive.d.ts +6 -0
- package/{lib/components/popover → popover/src}/index.d.ts +0 -0
- package/{lib/components/popover → popover/src}/popover.module.d.ts +0 -0
- package/{lib/components/popover → popover/src}/providers/popover-content.provider.d.ts +0 -0
- package/{lib/components/popover → popover/src}/providers/portal-factory.provider.d.ts +0 -0
- package/progress-bar/index.d.ts +1 -0
- package/{lib/components/progress-bar → progress-bar/src}/index.d.ts +0 -0
- package/progress-bar/src/progress/progress.component.d.ts +8 -0
- package/progress-bar/src/progress-bar/progress-bar.component.d.ts +31 -0
- package/{lib/components/progress-bar → progress-bar/src}/progress-bar.module.d.ts +0 -0
- package/range/index.d.ts +1 -0
- package/range/src/component/range.component.d.ts +8 -0
- package/{lib/components/range → range/src}/index.d.ts +0 -0
- package/{lib/components/range → range/src}/range.module.d.ts +0 -0
- package/range/src/value-accessor/range-value-accessor.d.ts +20 -0
- package/rating/index.d.ts +1 -0
- package/{lib/components/rating → rating/src}/index.d.ts +0 -0
- package/rating/src/rating.component.d.ts +22 -0
- package/{lib/components/rating → rating/src}/rating.module.d.ts +0 -0
- package/scheduler/index.d.ts +1 -0
- package/{lib/components/scheduler → scheduler/src}/components/index.d.ts +0 -0
- package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +26 -0
- package/scheduler/src/components/scheduler/scheduler.component.d.ts +86 -0
- package/{lib/components/scheduler → scheduler/src}/constants/available-scales.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/constants/index.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/enums/drag-operation.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/enums/index.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/enums/scheduler-mode.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/index.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/drag-operation.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/index.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/preview-event.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/resource-group.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/resource-or-group.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/resource.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-event-part.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-event-with-parts.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-event.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-schale.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-stamp-with-slots.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/time-slot.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/timeline-options.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/timeline-track.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/interfaces/week-options.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/pipes/date-offset/date-offset.pipe.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/pipes/day-of-week/day-of-week.pipe.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/scheduler.module.d.ts +0 -0
- package/{lib/components/scheduler → scheduler/src}/services/timeline/timeline.service.d.ts +0 -0
- package/scrollspy/index.d.ts +1 -0
- package/scrollspy/src/component/scrollspy.component.d.ts +25 -0
- package/scrollspy/src/directives/scrollspy.directive.d.ts +8 -0
- package/{lib/components/scrollspy → scrollspy/src}/index.d.ts +0 -0
- package/{lib/components/scrollspy → scrollspy/src}/scrollspy.module.d.ts +0 -0
- package/select/index.d.ts +1 -0
- package/select/src/component/select.component.d.ts +26 -0
- package/{lib/components/select → select/src}/index.d.ts +0 -0
- package/{lib/components/select → select/src}/select.module.d.ts +0 -0
- package/{lib/components/select → select/src}/types/index.d.ts +0 -0
- package/{lib/components/select → select/src}/types/select-size.d.ts +0 -0
- package/{lib/components/select → select/src}/value-accessors/index.d.ts +0 -0
- package/select/src/value-accessors/select-value-accessor.d.ts +44 -0
- package/select2/index.d.ts +1 -0
- package/select2/src/component/select2.component.d.ts +25 -0
- package/select2/src/directive/item-template.directive.d.ts +9 -0
- package/{lib/components/select2 → select2/src}/index.d.ts +0 -0
- package/select2/src/select2.module.d.ts +13 -0
- package/snackbar/index.d.ts +1 -0
- package/snackbar/src/component/snackbar.component.d.ts +15 -0
- package/{lib/components/snackbar → snackbar/src}/directives/index.d.ts +0 -0
- package/snackbar/src/directives/snackbar-close/snackbar-close.directive.d.ts +11 -0
- package/{lib/components/snackbar → snackbar/src}/index.d.ts +0 -0
- package/{lib/components/snackbar → snackbar/src}/interfaces/index.d.ts +0 -0
- package/{lib/components/snackbar → snackbar/src}/interfaces/snackbar-animation-meta.d.ts +0 -0
- package/{lib/components/snackbar → snackbar/src}/providers/snackbar-content.provider.d.ts +0 -0
- package/{lib/components/snackbar → snackbar/src}/service/snackbar.service.d.ts +0 -0
- package/{lib/components/snackbar → snackbar/src}/snackbar.module.d.ts +0 -0
- package/spinner/index.d.ts +1 -0
- package/{lib/components/spinner → spinner/src}/index.d.ts +0 -0
- package/spinner/src/spinner.component.d.ts +19 -0
- package/{lib/components/spinner → spinner/src}/spinner.module.d.ts +0 -0
- package/tab-control/index.d.ts +1 -0
- package/{lib/components/tab-control → tab-control/src}/index.d.ts +0 -0
- package/tab-control/src/tab-control/tab-control.component.d.ts +10 -0
- package/{lib/components/tab-control → tab-control/src}/tab-control.module.d.ts +0 -0
- package/tab-control/src/tab-page/tab-page.component.d.ts +11 -0
- package/table/index.d.ts +1 -0
- package/table/src/component/table.component.d.ts +15 -0
- package/{lib/components/table → table/src}/index.d.ts +0 -0
- package/{lib/components/table → table/src}/table.module.d.ts +0 -0
- package/timepicker/index.d.ts +1 -0
- package/{lib/components/timepicker → timepicker/src}/index.d.ts +0 -0
- package/timepicker/src/timepicker.component.d.ts +25 -0
- package/timepicker/src/timepicker.module.d.ts +12 -0
- package/toast/index.d.ts +1 -0
- package/{lib/components/toast → toast/src}/components/index.d.ts +0 -0
- package/toast/src/components/toast/toast.component.d.ts +6 -0
- package/toast/src/components/toast-body/toast-body.component.d.ts +7 -0
- package/toast/src/components/toast-container/toast-container.component.d.ts +9 -0
- package/toast/src/components/toast-header/toast-header.component.d.ts +7 -0
- package/{lib/components/toast → toast/src}/directives/index.d.ts +0 -0
- package/toast/src/directives/toast-close/toast-close.directive.d.ts +12 -0
- package/{lib/components/toast → toast/src}/index.d.ts +0 -0
- package/{lib/components/toast → toast/src}/providers/portal-factory.provider.d.ts +0 -0
- package/{lib/components/toast → toast/src}/services/index.d.ts +0 -0
- package/{lib/components/toast → toast/src}/services/toast/toast.service.d.ts +0 -0
- package/toast/src/toast.module.d.ts +14 -0
- package/toggle-button/index.d.ts +1 -0
- package/toggle-button/src/component/toggle-button.component.d.ts +36 -0
- package/{lib/components/toggle-button → toggle-button/src}/directives/index.d.ts +0 -0
- package/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.d.ts +9 -0
- package/{lib/components/toggle-button → toggle-button/src}/index.d.ts +0 -0
- package/{lib/components/toggle-button → toggle-button/src}/toggle-button.module.d.ts +0 -0
- package/{lib/components/toggle-button → toggle-button/src}/types/check-style.d.ts +0 -0
- package/{lib/components/toggle-button → toggle-button/src}/types/index.d.ts +0 -0
- package/toggle-button/src/value-accessor/toggle-button-value-accessor.d.ts +20 -0
- package/tooltip/index.d.ts +1 -0
- package/tooltip/src/component/tooltip.component.d.ts +12 -0
- package/tooltip/src/directive/tooltip.directive.d.ts +20 -0
- package/{lib/components/tooltip → tooltip/src}/index.d.ts +0 -0
- package/{lib/components/tooltip → tooltip/src}/providers/tooltip-content.provider.d.ts +0 -0
- package/{lib/components/tooltip → tooltip/src}/tooltip.module.d.ts +0 -0
- package/typeahead/index.d.ts +1 -0
- package/{lib/components/typeahead → typeahead/src}/index.d.ts +0 -0
- package/typeahead/src/typeahead.component.d.ts +26 -0
- package/typeahead/src/typeahead.module.d.ts +12 -0
- package/esm2020/lib/components/accordion/accordion/accordion.component.mjs +0 -21
- package/esm2020/lib/components/accordion/accordion-tab/accordion-tab.component.mjs +0 -63
- package/esm2020/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.mjs +0 -20
- package/esm2020/lib/components/accordion/accordion.module.mjs +0 -34
- package/esm2020/lib/components/accordion/index.mjs +0 -5
- package/esm2020/lib/components/alert/alert/alert.component.mjs +0 -41
- package/esm2020/lib/components/alert/alert-close/alert-close.component.mjs +0 -20
- package/esm2020/lib/components/alert/alert.module.mjs +0 -27
- package/esm2020/lib/components/alert/index.mjs +0 -4
- package/esm2020/lib/components/badge/badge.component.mjs +0 -30
- package/esm2020/lib/components/badge/badge.module.mjs +0 -18
- package/esm2020/lib/components/badge/index.mjs +0 -3
- package/esm2020/lib/components/breadcrumb/breadcrumb/breadcrumb.component.mjs +0 -13
- package/esm2020/lib/components/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +0 -18
- package/esm2020/lib/components/breadcrumb/breadcrumb.module.mjs +0 -19
- package/esm2020/lib/components/breadcrumb/index.mjs +0 -4
- package/esm2020/lib/components/button-group/button-group/button-group.component.mjs +0 -13
- package/esm2020/lib/components/button-group/button-group.module.mjs +0 -18
- package/esm2020/lib/components/button-group/index.mjs +0 -3
- package/esm2020/lib/components/calendar/calendar.component.mjs +0 -105
- package/esm2020/lib/components/calendar/calendar.module.mjs +0 -36
- package/esm2020/lib/components/calendar/index.mjs +0 -3
- package/esm2020/lib/components/card/card/card.component.mjs +0 -11
- package/esm2020/lib/components/card/card-header/card-header.component.mjs +0 -11
- package/esm2020/lib/components/card/card.module.mjs +0 -27
- package/esm2020/lib/components/card/index.mjs +0 -4
- package/esm2020/lib/components/carousel/carousel/carousel.component.mjs +0 -103
- package/esm2020/lib/components/carousel/carousel-image/carousel-image.directive.mjs +0 -17
- package/esm2020/lib/components/carousel/carousel.module.mjs +0 -29
- package/esm2020/lib/components/carousel/index.mjs +0 -4
- package/esm2020/lib/components/close/close.component.mjs +0 -21
- package/esm2020/lib/components/close/close.module.mjs +0 -18
- package/esm2020/lib/components/close/index.mjs +0 -3
- package/esm2020/lib/components/code-snippet/code-snippet.component.mjs +0 -28
- package/esm2020/lib/components/code-snippet/code-snippet.module.mjs +0 -32
- package/esm2020/lib/components/code-snippet/index.mjs +0 -3
- package/esm2020/lib/components/context-menu/context-menu.directive.mjs +0 -84
- package/esm2020/lib/components/context-menu/context-menu.module.mjs +0 -28
- package/esm2020/lib/components/context-menu/index.mjs +0 -3
- package/esm2020/lib/components/copy/copy.directive.mjs +0 -45
- package/esm2020/lib/components/copy/copy.module.mjs +0 -24
- package/esm2020/lib/components/copy/index.mjs +0 -3
- package/esm2020/lib/components/datatable/datatable/datatable.component.mjs +0 -59
- package/esm2020/lib/components/datatable/datatable-column/datatable-column-metadata.mjs +0 -2
- package/esm2020/lib/components/datatable/datatable-column/datatable-column.directive.mjs +0 -19
- package/esm2020/lib/components/datatable/datatable-settings.mjs +0 -37
- package/esm2020/lib/components/datatable/datatable.module.mjs +0 -46
- package/esm2020/lib/components/datatable/index.mjs +0 -6
- package/esm2020/lib/components/datatable/row-template/row-template.directive.mjs +0 -19
- package/esm2020/lib/components/datepicker/datepicker.component.mjs +0 -47
- package/esm2020/lib/components/datepicker/datepicker.module.mjs +0 -32
- package/esm2020/lib/components/datepicker/index.mjs +0 -3
- package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +0 -63
- package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +0 -111
- package/esm2020/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.mjs +0 -28
- package/esm2020/lib/components/dropdown/dropdown.module.mjs +0 -42
- package/esm2020/lib/components/dropdown/index.mjs +0 -5
- package/esm2020/lib/components/file-upload/component/file-upload.component.mjs +0 -86
- package/esm2020/lib/components/file-upload/directive/file-upload-template.directive.mjs +0 -18
- package/esm2020/lib/components/file-upload/file-upload.mjs +0 -2
- package/esm2020/lib/components/file-upload/file-upload.module.mjs +0 -45
- package/esm2020/lib/components/file-upload/index.mjs +0 -5
- package/esm2020/lib/components/for/for.directive.mjs +0 -38
- package/esm2020/lib/components/for/for.module.mjs +0 -24
- package/esm2020/lib/components/for/index.mjs +0 -3
- package/esm2020/lib/components/grid/component/grid.component.mjs +0 -32
- package/esm2020/lib/components/grid/directives/column/column.directive.mjs +0 -56
- package/esm2020/lib/components/grid/directives/index.mjs +0 -3
- package/esm2020/lib/components/grid/directives/row/row.directive.mjs +0 -19
- package/esm2020/lib/components/grid/grid.module.mjs +0 -20
- package/esm2020/lib/components/grid/index.mjs +0 -4
- package/esm2020/lib/components/index.mjs +0 -43
- package/esm2020/lib/components/list-group/index.mjs +0 -4
- package/esm2020/lib/components/list-group/list-group/list-group.component.mjs +0 -19
- package/esm2020/lib/components/list-group/list-group-item/list-group-item.component.mjs +0 -15
- package/esm2020/lib/components/list-group/list-group.module.mjs +0 -27
- package/esm2020/lib/components/modal/components/index.mjs +0 -3
- package/esm2020/lib/components/modal/components/modal/modal.component.mjs +0 -21
- package/esm2020/lib/components/modal/components/modal-host/modal-host.component.mjs +0 -82
- package/esm2020/lib/components/modal/directives/index.mjs +0 -6
- package/esm2020/lib/components/modal/directives/modal/modal.directive.mjs +0 -18
- package/esm2020/lib/components/modal/directives/modal-body/modal-body.directive.mjs +0 -19
- package/esm2020/lib/components/modal/directives/modal-close/modal-close.directive.mjs +0 -24
- package/esm2020/lib/components/modal/directives/modal-footer/modal-footer.directive.mjs +0 -19
- package/esm2020/lib/components/modal/directives/modal-header/modal-header.directive.mjs +0 -19
- package/esm2020/lib/components/modal/index.mjs +0 -4
- package/esm2020/lib/components/modal/modal.module.mjs +0 -71
- package/esm2020/lib/components/modal/providers/modal-content.provider.mjs +0 -3
- package/esm2020/lib/components/modal/providers/portal-factory.provider.mjs +0 -3
- package/esm2020/lib/components/multiselect/component/multiselect.component.mjs +0 -34
- package/esm2020/lib/components/multiselect/directives/button-template/button-template.directive.mjs +0 -18
- package/esm2020/lib/components/multiselect/directives/footer-template/footer-template.directive.mjs +0 -18
- package/esm2020/lib/components/multiselect/directives/header-template/header-template.directive.mjs +0 -18
- package/esm2020/lib/components/multiselect/directives/index.mjs +0 -4
- package/esm2020/lib/components/multiselect/index.mjs +0 -4
- package/esm2020/lib/components/multiselect/multiselect.module.mjs +0 -47
- package/esm2020/lib/components/navbar/dropdown-toggle/dropdown-toggle.directive.mjs +0 -38
- package/esm2020/lib/components/navbar/expand-button/expand-button.directive.mjs +0 -18
- package/esm2020/lib/components/navbar/index.mjs +0 -13
- package/esm2020/lib/components/navbar/nav-link/nav-link.directive.mjs +0 -29
- package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +0 -28
- package/esm2020/lib/components/navbar/navbar-brand/navbar-brand.component.mjs +0 -20
- package/esm2020/lib/components/navbar/navbar-content/navbar-content.directive.mjs +0 -69
- package/esm2020/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.mjs +0 -84
- package/esm2020/lib/components/navbar/navbar-item/navbar-item.component.mjs +0 -64
- package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +0 -69
- package/esm2020/lib/components/navbar/navbar-toggler/navbar-toggler.component.mjs +0 -47
- package/esm2020/lib/components/navbar/navbar.module.mjs +0 -73
- package/esm2020/lib/components/offcanvas/components/index.mjs +0 -5
- package/esm2020/lib/components/offcanvas/components/offcanvas/offcanvas.component.mjs +0 -111
- package/esm2020/lib/components/offcanvas/components/offcanvas-body/offcanvas-body.component.mjs +0 -18
- package/esm2020/lib/components/offcanvas/components/offcanvas-header/offcanvas-header.component.mjs +0 -14
- package/esm2020/lib/components/offcanvas/components/offcanvas-host/offcanvas-host.component.mjs +0 -142
- package/esm2020/lib/components/offcanvas/directives/index.mjs +0 -3
- package/esm2020/lib/components/offcanvas/directives/offcanvas-close/offcanvas-close.directive.mjs +0 -24
- package/esm2020/lib/components/offcanvas/directives/offcanvas-content/offcanvas-content.directive.mjs +0 -18
- package/esm2020/lib/components/offcanvas/index.mjs +0 -5
- package/esm2020/lib/components/offcanvas/offcanvas.module.mjs +0 -66
- package/esm2020/lib/components/offcanvas/providers/offcanvas-content.provider.mjs +0 -3
- package/esm2020/lib/components/offcanvas/providers/portal-factory.provider.mjs +0 -3
- package/esm2020/lib/components/offcanvas/types/index.mjs +0 -2
- package/esm2020/lib/components/offcanvas/types/position.mjs +0 -2
- package/esm2020/lib/components/pagination/index.mjs +0 -3
- package/esm2020/lib/components/pagination/pagination/pagination.component.mjs +0 -198
- package/esm2020/lib/components/pagination/pagination.module.mjs +0 -24
- package/esm2020/lib/components/placeholder/index.mjs +0 -4
- package/esm2020/lib/components/placeholder/placeholder/placeholder.component.mjs +0 -26
- package/esm2020/lib/components/placeholder/placeholder-field/placeholder-field.directive.mjs +0 -46
- package/esm2020/lib/components/placeholder/placeholder.module.mjs +0 -19
- package/esm2020/lib/components/popover/component/popover.component.mjs +0 -56
- package/esm2020/lib/components/popover/directives/index.mjs +0 -4
- package/esm2020/lib/components/popover/directives/popover/popover.directive.mjs +0 -129
- package/esm2020/lib/components/popover/directives/popover-body/popover-body.directive.mjs +0 -19
- package/esm2020/lib/components/popover/directives/popover-header/popover-header.directive.mjs +0 -19
- package/esm2020/lib/components/popover/index.mjs +0 -4
- package/esm2020/lib/components/popover/popover.module.mjs +0 -35
- package/esm2020/lib/components/popover/providers/popover-content.provider.mjs +0 -3
- package/esm2020/lib/components/popover/providers/portal-factory.provider.mjs +0 -3
- package/esm2020/lib/components/progress-bar/index.mjs +0 -4
- package/esm2020/lib/components/progress-bar/progress/progress.component.mjs +0 -31
- package/esm2020/lib/components/progress-bar/progress-bar/progress-bar.component.mjs +0 -121
- package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +0 -29
- package/esm2020/lib/components/range/component/range.component.mjs +0 -15
- package/esm2020/lib/components/range/index.mjs +0 -4
- package/esm2020/lib/components/range/range.module.mjs +0 -19
- package/esm2020/lib/components/range/value-accessor/range-value-accessor.mjs +0 -62
- package/esm2020/lib/components/rating/index.mjs +0 -3
- package/esm2020/lib/components/rating/rating.component.mjs +0 -72
- package/esm2020/lib/components/rating/rating.module.mjs +0 -24
- package/esm2020/lib/components/scheduler/components/index.mjs +0 -3
- package/esm2020/lib/components/scheduler/components/resource-group-presenter/resource-group-presenter.component.mjs +0 -84
- package/esm2020/lib/components/scheduler/components/scheduler/scheduler.component.mjs +0 -537
- package/esm2020/lib/components/scheduler/constants/available-scales.mjs +0 -12
- package/esm2020/lib/components/scheduler/constants/index.mjs +0 -2
- package/esm2020/lib/components/scheduler/enums/drag-operation.mjs +0 -8
- package/esm2020/lib/components/scheduler/enums/index.mjs +0 -2
- package/esm2020/lib/components/scheduler/enums/scheduler-mode.mjs +0 -6
- package/esm2020/lib/components/scheduler/index.mjs +0 -6
- package/esm2020/lib/components/scheduler/interfaces/drag-operation.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/index.mjs +0 -6
- package/esm2020/lib/components/scheduler/interfaces/preview-event.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/resource-group.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/resource-or-group.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/resource.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/scheduler-event-part.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/scheduler-event-with-parts.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/scheduler-event.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/scheduler-schale.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/scheduler-stamp-with-slots.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/time-slot.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/timeline-options.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/timeline-track.mjs +0 -2
- package/esm2020/lib/components/scheduler/interfaces/week-options.mjs +0 -2
- package/esm2020/lib/components/scheduler/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +0 -16
- package/esm2020/lib/components/scheduler/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +0 -20
- package/esm2020/lib/components/scheduler/pipes/date-offset/date-offset.pipe.mjs +0 -20
- package/esm2020/lib/components/scheduler/pipes/day-of-week/day-of-week.pipe.mjs +0 -22
- package/esm2020/lib/components/scheduler/scheduler.module.mjs +0 -41
- package/esm2020/lib/components/scheduler/services/timeline/timeline.service.mjs +0 -65
- package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +0 -90
- package/esm2020/lib/components/scrollspy/directives/scrollspy.directive.mjs +0 -16
- package/esm2020/lib/components/scrollspy/index.mjs +0 -4
- package/esm2020/lib/components/scrollspy/scrollspy.module.mjs +0 -29
- package/esm2020/lib/components/select/component/select.component.mjs +0 -85
- package/esm2020/lib/components/select/index.mjs +0 -5
- package/esm2020/lib/components/select/select.module.mjs +0 -31
- package/esm2020/lib/components/select/types/index.mjs +0 -2
- package/esm2020/lib/components/select/types/select-size.mjs +0 -2
- package/esm2020/lib/components/select/value-accessors/index.mjs +0 -2
- package/esm2020/lib/components/select/value-accessors/select-value-accessor.mjs +0 -171
- package/esm2020/lib/components/select2/component/select2.component.mjs +0 -96
- package/esm2020/lib/components/select2/directive/item-template.directive.mjs +0 -19
- package/esm2020/lib/components/select2/index.mjs +0 -4
- package/esm2020/lib/components/select2/select2.module.mjs +0 -41
- package/esm2020/lib/components/snackbar/component/snackbar.component.mjs +0 -35
- package/esm2020/lib/components/snackbar/directives/index.mjs +0 -2
- package/esm2020/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.mjs +0 -27
- package/esm2020/lib/components/snackbar/index.mjs +0 -6
- package/esm2020/lib/components/snackbar/interfaces/index.mjs +0 -2
- package/esm2020/lib/components/snackbar/interfaces/snackbar-animation-meta.mjs +0 -2
- package/esm2020/lib/components/snackbar/providers/snackbar-content.provider.mjs +0 -3
- package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +0 -49
- package/esm2020/lib/components/snackbar/snackbar.module.mjs +0 -33
- package/esm2020/lib/components/spinner/index.mjs +0 -3
- package/esm2020/lib/components/spinner/spinner.component.mjs +0 -41
- package/esm2020/lib/components/spinner/spinner.module.mjs +0 -18
- package/esm2020/lib/components/tab-control/index.mjs +0 -4
- package/esm2020/lib/components/tab-control/tab-control/tab-control.component.mjs +0 -28
- package/esm2020/lib/components/tab-control/tab-control.module.mjs +0 -29
- package/esm2020/lib/components/tab-control/tab-page/tab-page.component.mjs +0 -23
- package/esm2020/lib/components/table/component/table.component.mjs +0 -47
- package/esm2020/lib/components/table/index.mjs +0 -3
- package/esm2020/lib/components/table/table.module.mjs +0 -18
- package/esm2020/lib/components/timepicker/index.mjs +0 -3
- package/esm2020/lib/components/timepicker/timepicker.component.mjs +0 -110
- package/esm2020/lib/components/timepicker/timepicker.module.mjs +0 -36
- package/esm2020/lib/components/toast/components/index.mjs +0 -5
- package/esm2020/lib/components/toast/components/toast/toast.component.mjs +0 -16
- package/esm2020/lib/components/toast/components/toast-body/toast-body.component.mjs +0 -20
- package/esm2020/lib/components/toast/components/toast-container/toast-container.component.mjs +0 -22
- package/esm2020/lib/components/toast/components/toast-header/toast-header.component.mjs +0 -17
- package/esm2020/lib/components/toast/directives/index.mjs +0 -2
- package/esm2020/lib/components/toast/directives/toast-close/toast-close.directive.mjs +0 -32
- package/esm2020/lib/components/toast/index.mjs +0 -5
- package/esm2020/lib/components/toast/providers/portal-factory.provider.mjs +0 -3
- package/esm2020/lib/components/toast/services/index.mjs +0 -2
- package/esm2020/lib/components/toast/services/toast/toast.service.mjs +0 -56
- package/esm2020/lib/components/toast/toast.module.mjs +0 -72
- package/esm2020/lib/components/toggle-button/component/toggle-button.component.mjs +0 -162
- package/esm2020/lib/components/toggle-button/directives/index.mjs +0 -2
- package/esm2020/lib/components/toggle-button/directives/toggle-button-group/toggle-button-group.directive.mjs +0 -19
- package/esm2020/lib/components/toggle-button/index.mjs +0 -6
- package/esm2020/lib/components/toggle-button/toggle-button.module.mjs +0 -34
- package/esm2020/lib/components/toggle-button/types/check-style.mjs +0 -2
- package/esm2020/lib/components/toggle-button/types/index.mjs +0 -2
- package/esm2020/lib/components/toggle-button/value-accessor/toggle-button-value-accessor.mjs +0 -108
- package/esm2020/lib/components/tooltip/component/tooltip.component.mjs +0 -29
- package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +0 -110
- package/esm2020/lib/components/tooltip/index.mjs +0 -4
- package/esm2020/lib/components/tooltip/providers/tooltip-content.provider.mjs +0 -3
- package/esm2020/lib/components/tooltip/tooltip.module.mjs +0 -31
- package/esm2020/lib/components/typeahead/index.mjs +0 -3
- package/esm2020/lib/components/typeahead/typeahead.component.mjs +0 -92
- package/esm2020/lib/components/typeahead/typeahead.module.mjs +0 -36
- package/esm2020/lib/directives/enhanced-paste/enhanced-paste.directive.mjs +0 -58
- package/esm2020/lib/directives/enhanced-paste/enhanced-paste.module.mjs +0 -24
- package/esm2020/lib/directives/index.mjs +0 -2
- package/lib/components/accordion/accordion/accordion.component.d.ts +0 -10
- package/lib/components/accordion/accordion-tab/accordion-tab.component.d.ts +0 -17
- package/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.d.ts +0 -9
- package/lib/components/alert/alert/alert.component.d.ts +0 -15
- package/lib/components/alert/alert-close/alert-close.component.d.ts +0 -9
- package/lib/components/badge/badge.component.d.ts +0 -15
- package/lib/components/breadcrumb/breadcrumb/breadcrumb.component.d.ts +0 -8
- package/lib/components/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +0 -9
- package/lib/components/button-group/button-group/button-group.component.d.ts +0 -8
- package/lib/components/calendar/calendar.component.d.ts +0 -29
- package/lib/components/calendar/calendar.module.d.ts +0 -11
- package/lib/components/card/card/card.component.d.ts +0 -5
- package/lib/components/card/card-header/card-header.component.d.ts +0 -5
- package/lib/components/carousel/carousel/carousel.component.d.ts +0 -25
- package/lib/components/carousel/carousel-image/carousel-image.directive.d.ts +0 -9
- package/lib/components/close/close.component.d.ts +0 -10
- package/lib/components/code-snippet/code-snippet.component.d.ts +0 -12
- package/lib/components/code-snippet/code-snippet.module.d.ts +0 -10
- package/lib/components/context-menu/context-menu.directive.d.ts +0 -18
- package/lib/components/copy/copy.directive.d.ts +0 -11
- package/lib/components/datatable/datatable/datatable.component.d.ts +0 -19
- package/lib/components/datatable/datatable-column/datatable-column.directive.d.ts +0 -10
- package/lib/components/datatable/datatable-settings.d.ts +0 -15
- package/lib/components/datatable/datatable.module.d.ts +0 -13
- package/lib/components/datatable/index.d.ts +0 -5
- package/lib/components/datatable/row-template/row-template.directive.d.ts +0 -9
- package/lib/components/datepicker/datepicker.component.d.ts +0 -14
- package/lib/components/datepicker/datepicker.module.d.ts +0 -10
- package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +0 -22
- package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +0 -23
- package/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.d.ts +0 -11
- package/lib/components/file-upload/component/file-upload.component.d.ts +0 -19
- package/lib/components/file-upload/directive/file-upload-template.directive.d.ts +0 -8
- package/lib/components/file-upload/file-upload.module.d.ts +0 -13
- package/lib/components/for/for.directive.d.ts +0 -8
- package/lib/components/grid/component/grid.component.d.ts +0 -12
- package/lib/components/grid/directives/column/column.directive.d.ts +0 -12
- package/lib/components/grid/directives/row/row.directive.d.ts +0 -6
- package/lib/components/index.d.ts +0 -42
- package/lib/components/list-group/list-group/list-group.component.d.ts +0 -10
- package/lib/components/list-group/list-group-item/list-group-item.component.d.ts +0 -8
- package/lib/components/modal/components/modal/modal.component.d.ts +0 -9
- package/lib/components/modal/components/modal-host/modal-host.component.d.ts +0 -27
- package/lib/components/modal/directives/modal/modal.directive.d.ts +0 -8
- package/lib/components/modal/directives/modal-body/modal-body.directive.d.ts +0 -6
- package/lib/components/modal/directives/modal-close/modal-close.directive.d.ts +0 -9
- package/lib/components/modal/directives/modal-footer/modal-footer.directive.d.ts +0 -6
- package/lib/components/modal/directives/modal-header/modal-header.directive.d.ts +0 -6
- package/lib/components/multiselect/component/multiselect.component.d.ts +0 -13
- package/lib/components/multiselect/directives/button-template/button-template.directive.d.ts +0 -8
- package/lib/components/multiselect/directives/footer-template/footer-template.directive.d.ts +0 -8
- package/lib/components/multiselect/directives/header-template/header-template.directive.d.ts +0 -8
- package/lib/components/multiselect/multiselect.module.d.ts +0 -13
- package/lib/components/navbar/dropdown-toggle/dropdown-toggle.directive.d.ts +0 -13
- package/lib/components/navbar/expand-button/expand-button.directive.d.ts +0 -8
- package/lib/components/navbar/nav-link/nav-link.directive.d.ts +0 -9
- package/lib/components/navbar/navbar/navbar.component.d.ts +0 -12
- package/lib/components/navbar/navbar-brand/navbar-brand.component.d.ts +0 -7
- package/lib/components/navbar/navbar-content/navbar-content.directive.d.ts +0 -18
- package/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.d.ts +0 -24
- package/lib/components/navbar/navbar-item/navbar-item.component.d.ts +0 -16
- package/lib/components/navbar/navbar-nav/navbar-nav.component.d.ts +0 -19
- package/lib/components/navbar/navbar-toggler/navbar-toggler.component.d.ts +0 -13
- package/lib/components/offcanvas/components/offcanvas/offcanvas.component.d.ts +0 -34
- package/lib/components/offcanvas/components/offcanvas-body/offcanvas-body.component.d.ts +0 -9
- package/lib/components/offcanvas/components/offcanvas-header/offcanvas-header.component.d.ts +0 -8
- package/lib/components/offcanvas/components/offcanvas-host/offcanvas-host.component.d.ts +0 -37
- package/lib/components/offcanvas/directives/offcanvas-close/offcanvas-close.directive.d.ts +0 -9
- package/lib/components/offcanvas/directives/offcanvas-content/offcanvas-content.directive.d.ts +0 -8
- package/lib/components/pagination/pagination/pagination.component.d.ts +0 -49
- package/lib/components/placeholder/placeholder/placeholder.component.d.ts +0 -11
- package/lib/components/placeholder/placeholder-field/placeholder-field.directive.d.ts +0 -16
- package/lib/components/popover/component/popover.component.d.ts +0 -19
- package/lib/components/popover/directives/popover/popover.directive.d.ts +0 -27
- package/lib/components/popover/directives/popover-body/popover-body.directive.d.ts +0 -7
- package/lib/components/popover/directives/popover-header/popover-header.directive.d.ts +0 -7
- package/lib/components/progress-bar/progress/progress.component.d.ts +0 -8
- package/lib/components/progress-bar/progress-bar/progress-bar.component.d.ts +0 -31
- package/lib/components/range/component/range.component.d.ts +0 -8
- package/lib/components/range/value-accessor/range-value-accessor.d.ts +0 -20
- package/lib/components/rating/rating.component.d.ts +0 -22
- package/lib/components/scheduler/components/resource-group-presenter/resource-group-presenter.component.d.ts +0 -26
- package/lib/components/scheduler/components/scheduler/scheduler.component.d.ts +0 -86
- package/lib/components/scrollspy/component/scrollspy.component.d.ts +0 -25
- package/lib/components/scrollspy/directives/scrollspy.directive.d.ts +0 -8
- package/lib/components/select/component/select.component.d.ts +0 -26
- package/lib/components/select/value-accessors/select-value-accessor.d.ts +0 -44
- package/lib/components/select2/component/select2.component.d.ts +0 -28
- package/lib/components/select2/directive/item-template.directive.d.ts +0 -9
- package/lib/components/select2/select2.module.d.ts +0 -12
- package/lib/components/snackbar/component/snackbar.component.d.ts +0 -15
- package/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.d.ts +0 -11
- package/lib/components/spinner/spinner.component.d.ts +0 -19
- package/lib/components/tab-control/tab-control/tab-control.component.d.ts +0 -10
- package/lib/components/tab-control/tab-page/tab-page.component.d.ts +0 -11
- package/lib/components/table/component/table.component.d.ts +0 -16
- package/lib/components/timepicker/timepicker.component.d.ts +0 -25
- package/lib/components/timepicker/timepicker.module.d.ts +0 -11
- package/lib/components/toast/components/toast/toast.component.d.ts +0 -6
- package/lib/components/toast/components/toast-body/toast-body.component.d.ts +0 -7
- package/lib/components/toast/components/toast-container/toast-container.component.d.ts +0 -9
- package/lib/components/toast/components/toast-header/toast-header.component.d.ts +0 -7
- package/lib/components/toast/directives/toast-close/toast-close.directive.d.ts +0 -12
- package/lib/components/toast/toast.module.d.ts +0 -14
- package/lib/components/toggle-button/component/toggle-button.component.d.ts +0 -38
- package/lib/components/toggle-button/directives/toggle-button-group/toggle-button-group.directive.d.ts +0 -9
- package/lib/components/toggle-button/value-accessor/toggle-button-value-accessor.d.ts +0 -20
- package/lib/components/tooltip/component/tooltip.component.d.ts +0 -12
- package/lib/components/tooltip/directive/tooltip.directive.d.ts +0 -20
- package/lib/components/typeahead/typeahead.component.d.ts +0 -29
- package/lib/components/typeahead/typeahead.module.d.ts +0 -11
- package/lib/directives/enhanced-paste/enhanced-paste.directive.d.ts +0 -14
- package/lib/directives/index.d.ts +0 -1
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, filter, map, Subject, take, takeUntil } from 'rxjs';
|
|
3
|
+
import { BsCalendarMonthService } from '@mintplayer/ng-bootstrap';
|
|
4
|
+
import { ESchedulerMode } from '../../enums/scheduler-mode';
|
|
5
|
+
import { EDragOperation } from '../../enums/drag-operation';
|
|
6
|
+
import { BsTimelineService } from '../../services/timeline/timeline.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@mintplayer/ng-bootstrap";
|
|
9
|
+
import * as i2 from "../../services/timeline/timeline.service";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "../resource-group-presenter/resource-group-presenter.component";
|
|
12
|
+
import * as i5 from "../../pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe";
|
|
13
|
+
import * as i6 from "../../pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe";
|
|
14
|
+
import * as i7 from "../../pipes/day-of-week/day-of-week.pipe";
|
|
15
|
+
export class BsSchedulerComponent {
|
|
16
|
+
constructor(calendarMonthService, timelineService) {
|
|
17
|
+
this.calendarMonthService = calendarMonthService;
|
|
18
|
+
this.timelineService = timelineService;
|
|
19
|
+
this.resources$ = new BehaviorSubject([]);
|
|
20
|
+
this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
|
|
21
|
+
this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
|
|
22
|
+
this.previewEvent$ = new BehaviorSubject(null);
|
|
23
|
+
this.timeSlotDuration$ = new BehaviorSubject(1800);
|
|
24
|
+
this.timeSlots$ = new BehaviorSubject([]);
|
|
25
|
+
this.mouseState$ = new BehaviorSubject(false);
|
|
26
|
+
this.hoveredTimeSlot$ = new BehaviorSubject(null);
|
|
27
|
+
this.hoveredEvent$ = new BehaviorSubject(null);
|
|
28
|
+
this.destroyed$ = new Subject();
|
|
29
|
+
//#region Mode
|
|
30
|
+
this.modes = ESchedulerMode;
|
|
31
|
+
this.mode$ = new BehaviorSubject(ESchedulerMode.week);
|
|
32
|
+
this.modeChange = new EventEmitter();
|
|
33
|
+
//#endregion
|
|
34
|
+
// //#region Scale
|
|
35
|
+
// scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
|
|
36
|
+
// @Output() public scaleChange = new EventEmitter<SchedulerScale>();
|
|
37
|
+
// public get scale() {
|
|
38
|
+
// return this.scale$.value;
|
|
39
|
+
// }
|
|
40
|
+
// @Input() public set scale(value: SchedulerScale) {
|
|
41
|
+
// this.scale$.next(value);
|
|
42
|
+
// }
|
|
43
|
+
// //#endregion
|
|
44
|
+
//#region WeekOptions
|
|
45
|
+
this.weekOptionsChange = new EventEmitter();
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region TimelineOptions
|
|
48
|
+
this.timelineOptionsChange = new EventEmitter();
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region maxInnerHeight
|
|
51
|
+
this.maxInnerHeight = null;
|
|
52
|
+
this.operation = null;
|
|
53
|
+
this.dragStartTimeslot = null;
|
|
54
|
+
const monday = this.calendarMonthService.getMondayBefore(new Date());
|
|
55
|
+
this.currentWeekOrMonth$ = new BehaviorSubject(monday);
|
|
56
|
+
this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
|
|
57
|
+
.pipe(map(([currentDay, mode]) => {
|
|
58
|
+
currentDay.setHours(0);
|
|
59
|
+
currentDay.setMinutes(0);
|
|
60
|
+
currentDay.setSeconds(0);
|
|
61
|
+
currentDay.setMilliseconds(0);
|
|
62
|
+
switch (mode) {
|
|
63
|
+
case ESchedulerMode.week: {
|
|
64
|
+
return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
|
|
65
|
+
}
|
|
66
|
+
case ESchedulerMode.timeline: {
|
|
67
|
+
const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
|
|
68
|
+
const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
|
|
69
|
+
return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
this.daysOfWeekWithTimestamps$ = this.shownDays$
|
|
74
|
+
.pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
|
|
75
|
+
this.events$ = this.resources$
|
|
76
|
+
.pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
|
|
77
|
+
.pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
|
|
78
|
+
.pipe(map(resources => resources.map(res => res.events)))
|
|
79
|
+
.pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
|
|
80
|
+
// groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
|
|
81
|
+
this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
|
|
82
|
+
this.eventPartsForThisWeek$ = combineLatest([
|
|
83
|
+
this.daysOfWeekWithTimestamps$,
|
|
84
|
+
this.eventParts$
|
|
85
|
+
.pipe(map(eventParts => eventParts.map(evp => evp.parts)))
|
|
86
|
+
.pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
|
|
87
|
+
])
|
|
88
|
+
.pipe(map(([startAndEnd, eventParts]) => {
|
|
89
|
+
return eventParts.filter(eventPart => {
|
|
90
|
+
return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
|
|
91
|
+
});
|
|
92
|
+
}));
|
|
93
|
+
this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
|
|
94
|
+
if (event) {
|
|
95
|
+
return this.timelineService.splitInParts(event);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
101
|
+
this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
|
|
102
|
+
.pipe(map(([startAndEnd, previewEventParts]) => {
|
|
103
|
+
if (previewEventParts) {
|
|
104
|
+
return previewEventParts.parts.filter(eventPart => {
|
|
105
|
+
return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
|
|
113
|
+
.pipe(map(eventParts => {
|
|
114
|
+
// We'll only use the events for this week
|
|
115
|
+
const events = eventParts.map(ep => ep.event)
|
|
116
|
+
.filter((e, i, list) => list.indexOf(e) === i)
|
|
117
|
+
.filter((e) => !!e)
|
|
118
|
+
.map((e) => e);
|
|
119
|
+
const timeline = this.timelineService.getTimeline(events);
|
|
120
|
+
const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
|
|
121
|
+
.reduce((flat, toFlatten) => flat.concat(toFlatten), [])
|
|
122
|
+
.map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
|
|
123
|
+
.reduce((flat, toFlatten) => flat.concat(toFlatten), []);
|
|
124
|
+
return {
|
|
125
|
+
total: timeline.length,
|
|
126
|
+
parts: result
|
|
127
|
+
};
|
|
128
|
+
}));
|
|
129
|
+
combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
|
|
130
|
+
.pipe(filter(([mode, shownDays, duration]) => mode !== null))
|
|
131
|
+
.pipe(map(([mode, shownDays, duration]) => {
|
|
132
|
+
switch (mode) {
|
|
133
|
+
case ESchedulerMode.week: {
|
|
134
|
+
const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
|
|
135
|
+
return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
|
|
136
|
+
const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
|
|
137
|
+
return {
|
|
138
|
+
slots: shownDays.map((day) => {
|
|
139
|
+
const start = new Date(day);
|
|
140
|
+
start.setHours(timeslotForMonday.start.getHours());
|
|
141
|
+
start.setMinutes(timeslotForMonday.start.getMinutes());
|
|
142
|
+
start.setSeconds(timeslotForMonday.start.getSeconds());
|
|
143
|
+
start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
|
|
144
|
+
const end = new Date(day);
|
|
145
|
+
end.setHours(timeslotForMonday.end.getHours());
|
|
146
|
+
end.setMinutes(timeslotForMonday.end.getMinutes());
|
|
147
|
+
end.setSeconds(timeslotForMonday.end.getSeconds());
|
|
148
|
+
end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
|
|
149
|
+
end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
|
|
150
|
+
return { start, end };
|
|
151
|
+
}),
|
|
152
|
+
stamp: timeslotForMonday.start
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
case ESchedulerMode.timeline: {
|
|
157
|
+
const totalTimeslots = (24 * 60 * 60) / duration;
|
|
158
|
+
return shownDays.map((day) => {
|
|
159
|
+
return {
|
|
160
|
+
slots: Array.from(Array(totalTimeslots).keys())
|
|
161
|
+
.map((index) => {
|
|
162
|
+
return this.createTimeslot(day, index, duration);
|
|
163
|
+
}),
|
|
164
|
+
stamp: day
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
default: {
|
|
169
|
+
throw 'Unknown value for Mode: ' + mode;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}))
|
|
173
|
+
.subscribe((timeslots) => {
|
|
174
|
+
// For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
|
|
175
|
+
this.timeSlots$.next(timeslots);
|
|
176
|
+
});
|
|
177
|
+
this.weekOptions$
|
|
178
|
+
.pipe(takeUntil(this.destroyed$))
|
|
179
|
+
.subscribe((weekOptions) => {
|
|
180
|
+
this.weekOptionsChange.emit(weekOptions);
|
|
181
|
+
});
|
|
182
|
+
this.timelineOptions$
|
|
183
|
+
.pipe(takeUntil(this.destroyed$))
|
|
184
|
+
.subscribe((timelineOptions) => {
|
|
185
|
+
this.timelineOptionsChange.emit(timelineOptions);
|
|
186
|
+
});
|
|
187
|
+
// combineLatest([this.mode$, this.scale$])
|
|
188
|
+
// .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
|
|
189
|
+
}
|
|
190
|
+
createTimeslot(date, index, duration) {
|
|
191
|
+
const timeSlotStart = new Date(date);
|
|
192
|
+
timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
|
|
193
|
+
const timeSlotEnd = new Date(timeSlotStart);
|
|
194
|
+
timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
|
|
195
|
+
return { start: timeSlotStart, end: timeSlotEnd };
|
|
196
|
+
}
|
|
197
|
+
getResourcesForGroup(resourceOrGroup) {
|
|
198
|
+
if ('children' in resourceOrGroup) {
|
|
199
|
+
return resourceOrGroup.children
|
|
200
|
+
.map((child) => this.getResourcesForGroup(child))
|
|
201
|
+
.reduce((flat, toFlatten) => flat.concat(toFlatten), []);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
return [resourceOrGroup];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
get mode() {
|
|
208
|
+
return this.mode$.value;
|
|
209
|
+
}
|
|
210
|
+
set mode(value) {
|
|
211
|
+
this.mode$.next(value);
|
|
212
|
+
}
|
|
213
|
+
get weekOptions() {
|
|
214
|
+
return this.weekOptions$.value;
|
|
215
|
+
}
|
|
216
|
+
set weekOptions(value) {
|
|
217
|
+
this.weekOptions$.next(value);
|
|
218
|
+
}
|
|
219
|
+
get timelineOptions() {
|
|
220
|
+
return this.timelineOptions$.value;
|
|
221
|
+
}
|
|
222
|
+
set timelineOptions(value) {
|
|
223
|
+
this.timelineOptions$.next(value);
|
|
224
|
+
}
|
|
225
|
+
//#endregion
|
|
226
|
+
//#region Resources
|
|
227
|
+
get resources() {
|
|
228
|
+
return this.resources$.value;
|
|
229
|
+
}
|
|
230
|
+
set resources(value) {
|
|
231
|
+
this.resources$.next(value);
|
|
232
|
+
}
|
|
233
|
+
//#endregion
|
|
234
|
+
addDays(date, days) {
|
|
235
|
+
const result = new Date(date);
|
|
236
|
+
result.setDate(result.getDate() + days);
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
onPreviousWeekOrMonth() {
|
|
240
|
+
this.onChangeWeekOrMonth(false);
|
|
241
|
+
}
|
|
242
|
+
onNextWeekOrMonth() {
|
|
243
|
+
this.onChangeWeekOrMonth(true);
|
|
244
|
+
}
|
|
245
|
+
onChangeWeekOrMonth(next) {
|
|
246
|
+
combineLatest([this.currentWeekOrMonth$, this.mode$])
|
|
247
|
+
.pipe(map(([currentWeekOrMonth, mode]) => {
|
|
248
|
+
switch (mode) {
|
|
249
|
+
case ESchedulerMode.week: {
|
|
250
|
+
return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
|
|
251
|
+
}
|
|
252
|
+
case ESchedulerMode.timeline: {
|
|
253
|
+
return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}), take(1))
|
|
257
|
+
.subscribe((w) => this.currentWeekOrMonth$.next(w));
|
|
258
|
+
}
|
|
259
|
+
onHoverEvent(ev) {
|
|
260
|
+
this.hoveredEvent$.next(ev);
|
|
261
|
+
}
|
|
262
|
+
onLeaveEvent(ev) {
|
|
263
|
+
this.hoveredEvent$.next(null);
|
|
264
|
+
}
|
|
265
|
+
onCreateEvent(ev, slot) {
|
|
266
|
+
ev.preventDefault();
|
|
267
|
+
this.mouseState$.next(true);
|
|
268
|
+
this.dragStartTimeslot = slot;
|
|
269
|
+
this.operation = {
|
|
270
|
+
operation: EDragOperation.createEvent,
|
|
271
|
+
event: {
|
|
272
|
+
start: slot.start,
|
|
273
|
+
end: slot.end,
|
|
274
|
+
color: '#F00',
|
|
275
|
+
description: 'Test event',
|
|
276
|
+
},
|
|
277
|
+
meta: null,
|
|
278
|
+
};
|
|
279
|
+
this.previewEvent$.next({ start: slot.start, end: slot.end });
|
|
280
|
+
}
|
|
281
|
+
randomColor() {
|
|
282
|
+
const brightness = 128;
|
|
283
|
+
return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
|
|
284
|
+
}
|
|
285
|
+
randomChannel(brightness) {
|
|
286
|
+
const r = 255 - brightness;
|
|
287
|
+
const n = 0 | ((Math.random() * r) + brightness);
|
|
288
|
+
const s = n.toString(16);
|
|
289
|
+
return (s.length == 1) ? '0' + s : s;
|
|
290
|
+
}
|
|
291
|
+
onStartDragEvent(eventPart, ev) {
|
|
292
|
+
ev.preventDefault();
|
|
293
|
+
this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
|
|
294
|
+
if (eventPart.event) {
|
|
295
|
+
this.dragStartTimeslot = hoveredTimeSlot;
|
|
296
|
+
this.operation = {
|
|
297
|
+
operation: EDragOperation.moveEvent,
|
|
298
|
+
event: eventPart.event,
|
|
299
|
+
meta: null,
|
|
300
|
+
};
|
|
301
|
+
this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
onStartResizeEvent(event, position) {
|
|
306
|
+
if (event) {
|
|
307
|
+
switch (position) {
|
|
308
|
+
case 'top':
|
|
309
|
+
{
|
|
310
|
+
this.operation = {
|
|
311
|
+
operation: EDragOperation.resizeEvent,
|
|
312
|
+
event: event,
|
|
313
|
+
meta: { position },
|
|
314
|
+
};
|
|
315
|
+
this.previewEvent$.next({ start: event.start, end: event.end });
|
|
316
|
+
}
|
|
317
|
+
break;
|
|
318
|
+
case 'bottom':
|
|
319
|
+
{
|
|
320
|
+
this.operation = {
|
|
321
|
+
operation: EDragOperation.resizeEvent,
|
|
322
|
+
event: event,
|
|
323
|
+
meta: { position },
|
|
324
|
+
};
|
|
325
|
+
this.previewEvent$.next({ start: event.start, end: event.end });
|
|
326
|
+
}
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//#region hoveredTimeslot$
|
|
332
|
+
getHoveredTimeslot(ev, timeSlots) {
|
|
333
|
+
const hoveredSlots = this.timeSlotElements.filter((el) => {
|
|
334
|
+
const rct = el.nativeElement.getBoundingClientRect();
|
|
335
|
+
if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
if (!hoveredSlots || hoveredSlots.length === 0) {
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
const slotElement = hoveredSlots[0].nativeElement;
|
|
346
|
+
const strRow = slotElement.getAttribute('data-row');
|
|
347
|
+
if (!strRow) {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
const row = parseInt(strRow);
|
|
351
|
+
const strColumn = slotElement.getAttribute('data-column');
|
|
352
|
+
if (!strColumn) {
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
const column = parseInt(strColumn);
|
|
356
|
+
const slot = timeSlots[row].slots[column];
|
|
357
|
+
return slot;
|
|
358
|
+
}
|
|
359
|
+
onMousemove(ev) {
|
|
360
|
+
this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
|
|
361
|
+
const hovered = this.getHoveredTimeslot(ev, timeSlots);
|
|
362
|
+
this.hoveredTimeSlot$.next(hovered);
|
|
363
|
+
if (this.operation) {
|
|
364
|
+
switch (this.operation.operation) {
|
|
365
|
+
case EDragOperation.createEvent:
|
|
366
|
+
{
|
|
367
|
+
if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
|
|
368
|
+
if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
|
|
369
|
+
// 1 slot
|
|
370
|
+
}
|
|
371
|
+
else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
|
|
372
|
+
// Drag down
|
|
373
|
+
this.previewEvent$
|
|
374
|
+
.pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
|
|
375
|
+
.pipe(map((ev) => {
|
|
376
|
+
if (ev && this.dragStartTimeslot) {
|
|
377
|
+
ev.start = this.dragStartTimeslot.start;
|
|
378
|
+
ev.end = hovered.end;
|
|
379
|
+
}
|
|
380
|
+
return ev;
|
|
381
|
+
}))
|
|
382
|
+
.pipe(take(1))
|
|
383
|
+
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
384
|
+
}
|
|
385
|
+
else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
|
|
386
|
+
// Drag up
|
|
387
|
+
this.previewEvent$
|
|
388
|
+
.pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
|
|
389
|
+
.pipe(map((ev) => {
|
|
390
|
+
if (ev && this.dragStartTimeslot) {
|
|
391
|
+
ev.start = hovered.start;
|
|
392
|
+
ev.end = this.dragStartTimeslot.end;
|
|
393
|
+
}
|
|
394
|
+
return ev;
|
|
395
|
+
}))
|
|
396
|
+
.pipe(take(1))
|
|
397
|
+
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
break;
|
|
402
|
+
case EDragOperation.moveEvent:
|
|
403
|
+
{
|
|
404
|
+
if (hovered && this.dragStartTimeslot) {
|
|
405
|
+
this.previewEvent$
|
|
406
|
+
.pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
|
|
407
|
+
.pipe(map((ev) => {
|
|
408
|
+
if (ev && this.dragStartTimeslot) {
|
|
409
|
+
const result = {
|
|
410
|
+
start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
|
|
411
|
+
end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
|
|
412
|
+
};
|
|
413
|
+
this.dragStartTimeslot = hovered;
|
|
414
|
+
return result;
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
return ev;
|
|
418
|
+
}
|
|
419
|
+
}))
|
|
420
|
+
.pipe(take(1))
|
|
421
|
+
.subscribe(ev => this.previewEvent$.next(ev));
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
break;
|
|
425
|
+
case EDragOperation.resizeEvent:
|
|
426
|
+
{
|
|
427
|
+
if (hovered) {
|
|
428
|
+
this.previewEvent$
|
|
429
|
+
.pipe(filter((ev) => !!ev))
|
|
430
|
+
.pipe(map((ev) => {
|
|
431
|
+
if (ev && this.operation && this.operation.event) {
|
|
432
|
+
if (this.operation.meta.position === 'top') {
|
|
433
|
+
ev.start = hovered.start;
|
|
434
|
+
ev.end = this.operation.event.end;
|
|
435
|
+
}
|
|
436
|
+
else if (this.operation.meta.position === 'bottom') {
|
|
437
|
+
ev.start = this.operation.event.start;
|
|
438
|
+
ev.end = hovered.end;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return ev;
|
|
442
|
+
}))
|
|
443
|
+
.pipe(take(1))
|
|
444
|
+
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
break;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
//#endregion
|
|
453
|
+
onMouseUp(ev) {
|
|
454
|
+
if (this.operation) {
|
|
455
|
+
switch (this.operation.operation) {
|
|
456
|
+
case EDragOperation.createEvent:
|
|
457
|
+
{
|
|
458
|
+
combineLatest([this.previewEvent$])
|
|
459
|
+
.pipe(take(1))
|
|
460
|
+
.subscribe(([previewEvent]) => {
|
|
461
|
+
if (previewEvent) {
|
|
462
|
+
this.operation = null;
|
|
463
|
+
this.dragStartTimeslot = null;
|
|
464
|
+
this.resources$.next([
|
|
465
|
+
...this.resources$.value,
|
|
466
|
+
{
|
|
467
|
+
description: 'New resource group',
|
|
468
|
+
events: [{
|
|
469
|
+
start: previewEvent.start,
|
|
470
|
+
end: previewEvent.end,
|
|
471
|
+
color: this.randomColor(),
|
|
472
|
+
description: 'New event'
|
|
473
|
+
}]
|
|
474
|
+
}
|
|
475
|
+
]);
|
|
476
|
+
this.previewEvent$.next(null);
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
break;
|
|
481
|
+
case EDragOperation.moveEvent:
|
|
482
|
+
case EDragOperation.resizeEvent:
|
|
483
|
+
{
|
|
484
|
+
this.previewEvent$
|
|
485
|
+
.pipe(filter((ev) => !!ev))
|
|
486
|
+
.pipe(take(1))
|
|
487
|
+
.subscribe((previewEvent) => {
|
|
488
|
+
if (this.operation && this.operation.event && previewEvent) {
|
|
489
|
+
this.operation.event.start = previewEvent.start;
|
|
490
|
+
this.operation.event.end = previewEvent.end;
|
|
491
|
+
this.operation = null;
|
|
492
|
+
this.dragStartTimeslot = null;
|
|
493
|
+
this.resources$.next(this.resources$.value);
|
|
494
|
+
this.previewEvent$.next(null);
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
break;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
ngOnDestroy() {
|
|
503
|
+
this.destroyed$.next(true);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
BsSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: i2.BsTimelineService }], target: i0.ɵɵFactoryTarget.Component });
|
|
507
|
+
BsSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i5.BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: i6.BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: i7.DayOfWeekPipe, name: "dayOfWeek" }] });
|
|
508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BsSchedulerComponent, decorators: [{
|
|
509
|
+
type: Component,
|
|
510
|
+
args: [{ selector: 'bs-scheduler', template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
|
|
511
|
+
}], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: i2.BsTimelineService }]; }, propDecorators: { timeSlotElements: [{
|
|
512
|
+
type: ViewChildren,
|
|
513
|
+
args: ['slot']
|
|
514
|
+
}], modeChange: [{
|
|
515
|
+
type: Output
|
|
516
|
+
}], mode: [{
|
|
517
|
+
type: Input
|
|
518
|
+
}], weekOptionsChange: [{
|
|
519
|
+
type: Output
|
|
520
|
+
}], weekOptions: [{
|
|
521
|
+
type: Input
|
|
522
|
+
}], timelineOptionsChange: [{
|
|
523
|
+
type: Output
|
|
524
|
+
}], timelineOptions: [{
|
|
525
|
+
type: Input
|
|
526
|
+
}], maxInnerHeight: [{
|
|
527
|
+
type: Input
|
|
528
|
+
}], resources: [{
|
|
529
|
+
type: Input
|
|
530
|
+
}], onMousemove: [{
|
|
531
|
+
type: HostListener,
|
|
532
|
+
args: ['document:mousemove', ['$event']]
|
|
533
|
+
}], onMouseUp: [{
|
|
534
|
+
type: HostListener,
|
|
535
|
+
args: ['document:mouseup', ['$event']]
|
|
536
|
+
}] } });
|
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7O0FBWTdFLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBb0Isb0JBQTRDLEVBQVUsZUFBa0M7UUFBeEYseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQTZKNUcsZUFBVSxHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUtuRSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEUscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQWtCLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFM0Usa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFPL0Qsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDdEQsZUFBVSxHQUFHLElBQUksZUFBZSxDQUE0QixFQUFFLENBQUMsQ0FBQztRQUNoRSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUM5RCxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUNqRSxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQXVCM0IsY0FBYztRQUNkLFVBQUssR0FBRyxjQUFjLENBQUM7UUFDdkIsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFpQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBT2pFLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsb0VBQW9FO1FBQ3BFLHFFQUFxRTtRQUNyRSx1QkFBdUI7UUFDdkIsOEJBQThCO1FBQzlCLElBQUk7UUFDSixxREFBcUQ7UUFDckQsNkJBQTZCO1FBQzdCLElBQUk7UUFDSixlQUFlO1FBQ2YscUJBQXFCO1FBQ0osc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQU9yRSxZQUFZO1FBQ1oseUJBQXlCO1FBQ1IsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFPN0UsWUFBWTtRQUNaLHdCQUF3QjtRQUNSLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQWdEckQsY0FBUyxHQUF5QixJQUFJLENBQUM7UUFDdkMsc0JBQWlCLEdBQW9CLElBQUksQ0FBQztRQWhTeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFPLE1BQU0sQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUMvQixVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLFFBQVEsSUFBSSxFQUFFO2dCQUNaLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RTtnQkFDRCxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQy9GLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxVQUFVO2FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2SSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVO2FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakcsMEVBQTBFO1FBQzVFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM1RSxDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQztZQUMxQyxJQUFJLENBQUMseUJBQXlCO1lBQzlCLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2hHLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssRUFBRTtnQkFDVCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ2hEO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLDZCQUE2QixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUMxRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO1lBQzdDLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JCLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDaEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdHLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQjthQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JCLDBDQUEwQztZQUMxQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM5RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDdkQsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JHLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFM0QsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3RCLEtBQUssRUFBRSxNQUFNO2FBQ2QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO2FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7b0JBQzlELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDN0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBRTdFLE9BQWdDOzRCQUM5QixLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQ0FDbkQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQ0FDdkQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQ0FDdkQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQ0FFakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0NBQy9DLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0NBQ25ELEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0NBQ25ELEdBQUcsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7Z0NBQzdELEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQ0FFakcsT0FBaUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7NEJBQ2xDLENBQUMsQ0FBQzs0QkFDRixLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSzt5QkFDL0IsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztvQkFDakQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQzNCLE9BQWdDOzRCQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7aUNBQzVDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dDQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDOzRCQUNuRCxDQUFDLENBQUM7NEJBQ0osS0FBSyxFQUFFLEdBQUc7eUJBQ1gsQ0FBQTtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxPQUFPLENBQUMsQ0FBQztvQkFDUCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQztpQkFDekM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0YsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkIsK0dBQStHO1lBQy9HLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVk7YUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVMLDJDQUEyQztRQUMzQyx1RUFBdUU7SUFFekUsQ0FBQztJQTBCRCxjQUFjLENBQUMsSUFBVSxFQUFFLEtBQWEsRUFBRSxRQUFnQjtRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFOUQsT0FBaUIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsZUFBeUM7UUFDNUQsSUFBSSxVQUFVLElBQUksZUFBZSxFQUFFO1lBQ2pDLE9BQU8sZUFBZSxDQUFDLFFBQVE7aUJBQzVCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBTUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBb0IsSUFBSSxDQUFDLEtBQXFCO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFjRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBb0IsV0FBVyxDQUFDLEtBQWtCO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFJRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFvQixlQUFlLENBQUMsS0FBc0I7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBb0IsU0FBUyxDQUFDLEtBQW1DO1FBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxZQUFZO0lBRUosT0FBTyxDQUFDLElBQVUsRUFBRSxJQUFZO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQWE7UUFDdkMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLFFBQVEsSUFBSSxFQUFFO2dCQUNaLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsT0FBTyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN2RzthQUNGO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUF5QjtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxDQUFDLEVBQXlCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFJRCxhQUFhLENBQUMsRUFBYyxFQUFFLElBQWM7UUFDMUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsV0FBVztZQUNyQyxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsV0FBVyxFQUFFLFlBQVk7YUFDMUI7WUFDRCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN2QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQWtCO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBQyxVQUFVLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUE2QixFQUFFLEVBQWM7UUFDNUQsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsZUFBZSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHO29CQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUztvQkFDbkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO29CQUN0QixJQUFJLEVBQUUsSUFBSTtpQkFDWCxDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDckY7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUE0QixFQUFFLFFBQTBCO1FBQ3pFLElBQUksS0FBSyxFQUFFO1lBQ1QsUUFBUSxRQUFRLEVBQUU7Z0JBQ2hCLEtBQUssS0FBSztvQkFBRTt3QkFDVixJQUFJLENBQUMsU0FBUyxHQUFHOzRCQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsV0FBVzs0QkFDckMsS0FBSyxFQUFFLEtBQUs7NEJBQ1osSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFO3lCQUNuQixDQUFBO3dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3FCQUNqRTtvQkFBQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFBRTt3QkFDYixJQUFJLENBQUMsU0FBUyxHQUFHOzRCQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsV0FBVzs0QkFDckMsS0FBSyxFQUFFLEtBQUs7NEJBQ1osSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFO3lCQUNuQixDQUFBO3dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3FCQUNqRTtvQkFBQyxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDbEIsa0JBQWtCLENBQUMsRUFBYyxFQUFFLFNBQW9DO1FBQzdFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDckQsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xGLE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM5QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVsRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxXQUFXLENBQUMsRUFBYztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFcEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO29CQUNoQyxLQUFLLGNBQWMsQ0FBQyxXQUFXO3dCQUFFOzRCQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dDQUM5SCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQ0FDdEUsU0FBUztpQ0FDVjtxQ0FBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQ0FDM0UsWUFBWTtvQ0FDWixJQUFJLENBQUMsYUFBYTt5Q0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt5Q0FDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dDQUNmLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0Q0FDaEMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDOzRDQUN4QyxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7eUNBQ3RCO3dDQUNELE9BQU8sRUFBRSxDQUFDO29DQUNaLENBQUMsQ0FBQyxDQUFDO3lDQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUNBQ2IsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lDQUNuRDtxQ0FBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQ0FDM0UsVUFBVTtvQ0FDVixJQUFJLENBQUMsYUFBYTt5Q0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt5Q0FDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dDQUNmLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0Q0FDaEMsRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDOzRDQUN6QixFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7eUNBQ3JDO3dDQUNELE9BQU8sRUFBRSxDQUFDO29DQUNaLENBQUMsQ0FBQyxDQUFDO3lDQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUNBQ2IsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lDQUNuRDs2QkFDRjt5QkFDRjt3QkFBQyxNQUFNO29CQUNSLEtBQUssY0FBYyxDQUFDLFNBQVM7d0JBQUU7NEJBQzdCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQ0FDckMsSUFBSSxDQUFDLGFBQWE7cUNBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7cUNBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQ0FDZixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7d0NBQ2hDLE1BQU0sTUFBTSxHQUFrQjs0Q0FDNUIsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRDQUN0RyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7eUNBQ25HLENBQUM7d0NBRUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQzt3Q0FFakMsT0FBTyxNQUFNLENBQUM7cUNBQ2Y7eUNBQU07d0NBQ0wsT0FBTyxFQUFFLENBQUM7cUNBQ1g7Z0NBQ0gsQ0FBQyxDQUFDLENBQUM7cUNBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQ0FDYixTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzZCQUNqRDt5QkFDRjt3QkFBQyxNQUFNO29CQUNSLEtBQUssY0FBYyxDQUFDLFdBQVc7d0JBQUU7NEJBQy9CLElBQUksT0FBTyxFQUFFO2dDQUNYLElBQUksQ0FBQyxhQUFhO3FDQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQ0FDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO29DQUNmLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7d0NBQ2hELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTs0Q0FDMUMsRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDOzRDQUN6QixFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt5Q0FDbkM7NkNBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFOzRDQUNwRCxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzs0Q0FDdEMsRUFBRSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO3lDQUN0QjtxQ0FDRjtvQ0FDRCxPQUFPLEVBQUUsQ0FBQztnQ0FDWixDQUFDLENBQUMsQ0FBQztxQ0FDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FDQUNiLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs2QkFDbkQ7eUJBQ0Y7d0JBQUMsTUFBTTtpQkFDVDthQUNGO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtJQUdaLFNBQVMsQ0FBQyxFQUFjO1FBQ3RCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO2dCQUNoQyxLQUFLLGNBQWMsQ0FBQyxXQUFXO29CQUFFO3dCQUMvQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7NkJBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFOzRCQUM1QixJQUFJLFlBQVksRUFBRTtnQ0FDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0NBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0NBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO29DQUNuQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztvQ0FDZDt3Q0FDUixXQUFXLEVBQUUsb0JBQW9CO3dDQUNqQyxNQUFNLEVBQUUsQ0FBQztnREFDUCxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7Z0RBQ3pCLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBRztnREFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0RBQ3pCLFdBQVcsRUFBRSxXQUFXOzZDQUN6QixDQUFDO3FDQUNIO2lDQUNGLENBQUMsQ0FBQztnQ0FDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDL0I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQUMsTUFBTTtnQkFDUixLQUFLLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQzlCLEtBQUssY0FBYyxDQUFDLFdBQVc7b0JBQUU7d0JBQy9CLElBQUksQ0FBQyxhQUFhOzZCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDYixTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTs0QkFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLFlBQVksRUFBRTtnQ0FDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7Z0NBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO2dDQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQ0FDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQy9CO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNOO29CQUFDLE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOztpSEFqaEJVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLG1oQkN2QmpDLHl1T0E0R007MkZEckZPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOzZJQXdMRixnQkFBZ0I7c0JBQXJDLFlBQVk7dUJBQUMsTUFBTTtnQkF3QkgsVUFBVTtzQkFBMUIsTUFBTTtnQkFJYSxJQUFJO3NCQUF2QixLQUFLO2dCQWVXLGlCQUFpQjtzQkFBakMsTUFBTTtnQkFJYSxXQUFXO3NCQUE5QixLQUFLO2dCQUtXLHFCQUFxQjtzQkFBckMsTUFBTTtnQkFJYSxlQUFlO3NCQUFsQyxLQUFLO2dCQUtVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBTWMsU0FBUztzQkFBNUIsS0FBSztnQkFnSk4sV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTJGOUMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEVTY2hlZHVsZXJNb2RlIH0gZnJvbSAnLi4vLi4vZW51bXMvc2NoZWR1bGVyLW1vZGUnO1xuaW1wb3J0IHsgRURyYWdPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9kcmFnLW9wZXJhdGlvbic7XG5pbXBvcnQgeyBEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kcmFnLW9wZXJhdGlvbic7XG5pbXBvcnQgeyBQcmV2aWV3RXZlbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ByZXZpZXctZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFBhcnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudC1wYXJ0JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50V2l0aFBhcnRzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtd2l0aC1wYXJ0cyc7XG5pbXBvcnQgeyBUaW1lU2xvdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZS1zbG90JztcbmltcG9ydCB7IEJzVGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGltZWxpbmUvdGltZWxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXNvdXJjZS1ncm91cCc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVzb3VyY2UnO1xuaW1wb3J0IHsgU2NoZWR1bGVyU3RhbXBXaXRoU2xvdHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1zdGFtcC13aXRoLXNsb3RzJztcbmltcG9ydCB7IFdlZWtPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93ZWVrLW9wdGlvbnMnO1xuaW1wb3J0IHsgVGltZWxpbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aW1lbGluZS1vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtc2NoZWR1bGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjaGVkdWxlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCc1NjaGVkdWxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJNb250aFNlcnZpY2U6IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UsIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlOiBCc1RpbWVsaW5lU2VydmljZSkge1xuICAgIGNvbnN0IG1vbmRheSA9IHRoaXMuY2FsZW5kYXJNb250aFNlcnZpY2UuZ2V0TW9uZGF5QmVmb3JlKG5ldyBEYXRlKCkpO1xuICAgIHRoaXMuY3VycmVudFdlZWtPck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obW9uZGF5KTtcblxuICAgIHRoaXMuc2hvd25EYXlzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudFdlZWtPck1vbnRoJCwgdGhpcy5tb2RlJF0pXG4gICAgICAucGlwZShtYXAoKFtjdXJyZW50RGF5LCBtb2RlXSkgPT4ge1xuICAgICAgICBjdXJyZW50RGF5LnNldEhvdXJzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldE1pbnV0ZXMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUud2Vlazoge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oQXJyYXkoNykua2V5cygpKS5tYXAoKHgpID0+IHRoaXMuYWRkRGF5cyhjdXJyZW50RGF5LCB4KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoY3VycmVudERheS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF5LmdldE1vbnRoKCksIDEpO1xuICAgICAgICAgICAgY29uc3QgZGF5c09mTW9udGggPSBuZXcgRGF0ZShjdXJyZW50RGF5LmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXkuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KGRheXNPZk1vbnRoKS5rZXlzKCkpLm1hcCgoeCkgPT4gdGhpcy5hZGREYXlzKGZpcnN0RGF5LCB4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQgPSB0aGlzLnNob3duRGF5cyRcbiAgICAgIC5waXBlKG1hcCgoc2hvd25EYXlzKSA9PiAoeyBzdGFydDogc2hvd25EYXlzWzBdLmdldFRpbWUoKSwgZW5kOiBzaG93bkRheXNbc2hvd25EYXlzLmxlbmd0aCAtIDFdLmdldFRpbWUoKSArIDI0ICogNjAgKiA2MCAqIDEwMDAgfSkpKTtcbiAgICBcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLnJlc291cmNlcyRcbiAgICAgIC5waXBlKG1hcCgocmVzb3VyY2VzT3JHcm91cHMpID0+IHJlc291cmNlc09yR3JvdXBzLm1hcChyZXNPckdyb3VwID0+IHRoaXMuZ2V0UmVzb3VyY2VzRm9yR3JvdXAocmVzT3JHcm91cCkpKSlcbiAgICAgIC5waXBlKG1hcChqYWdnZWRSZXNvdXJjZXMgPT4gamFnZ2VkUmVzb3VyY2VzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKVxuICAgICAgLnBpcGUobWFwKHJlc291cmNlcyA9PiByZXNvdXJjZXMubWFwKHJlcyA9PiByZXMuZXZlbnRzKSkpXG4gICAgICAucGlwZShtYXAoamFnZ2VkRXZlbnRzID0+IGphZ2dlZEV2ZW50cy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSk7XG5cbiAgICAgIC8vIGdyb3Vwcy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuLmNoaWxkcmVuKSwgW10pXG4gICAgdGhpcy5ldmVudFBhcnRzJCA9IHRoaXMuZXZlbnRzJC5waXBlKFxuICAgICAgbWFwKChldmVudHMpID0+ICBldmVudHMubWFwKChldikgPT4gdGhpcy50aW1lbGluZVNlcnZpY2Uuc3BsaXRJblBhcnRzKGV2KSkpXG4gICAgKTtcblxuICAgIHRoaXMuZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkLFxuICAgICAgdGhpcy5ldmVudFBhcnRzJFxuICAgICAgICAucGlwZShtYXAoZXZlbnRQYXJ0cyA9PiBldmVudFBhcnRzLm1hcChldnAgPT4gZXZwLnBhcnRzKSkpXG4gICAgICAgIC5waXBlKG1hcChqYWdnZWRQYXJ0cyA9PiAgamFnZ2VkUGFydHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpXG4gICAgICBdKVxuICAgICAgLnBpcGUobWFwKChbc3RhcnRBbmRFbmQsIGV2ZW50UGFydHNdKSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudFBhcnRzLmZpbHRlcihldmVudFBhcnQgPT4ge1xuICAgICAgICAgIHJldHVybiAhKChldmVudFBhcnQuZW5kLmdldFRpbWUoKSA8PSBzdGFydEFuZEVuZC5zdGFydCkgfHwgKGV2ZW50UGFydC5zdGFydC5nZXRUaW1lKCkgPj0gc3RhcnRBbmRFbmQuZW5kKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5wcmV2aWV3RXZlbnRQYXJ0cyQgPSB0aGlzLnByZXZpZXdFdmVudCQucGlwZShcbiAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGltZWxpbmVTZXJ2aWNlLnNwbGl0SW5QYXJ0cyhldmVudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMucHJldmlld0V2ZW50UGFydHNGb3JUaGlzV2VlayQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQsIHRoaXMucHJldmlld0V2ZW50UGFydHMkXSlcbiAgICAgIC5waXBlKG1hcCgoW3N0YXJ0QW5kRW5kLCBwcmV2aWV3RXZlbnRQYXJ0c10pID0+IHtcbiAgICAgICAgaWYgKHByZXZpZXdFdmVudFBhcnRzKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZpZXdFdmVudFBhcnRzLnBhcnRzLmZpbHRlcihldmVudFBhcnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEoKGV2ZW50UGFydC5lbmQuZ2V0VGltZSgpIDw9IHN0YXJ0QW5kRW5kLnN0YXJ0KSB8fCAoZXZlbnRQYXJ0LnN0YXJ0LmdldFRpbWUoKSA+PSBzdGFydEFuZEVuZC5lbmQpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMudGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCA9IHRoaXMuZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJFxuICAgICAgLnBpcGUobWFwKGV2ZW50UGFydHMgPT4ge1xuICAgICAgICAvLyBXZSdsbCBvbmx5IHVzZSB0aGUgZXZlbnRzIGZvciB0aGlzIHdlZWtcbiAgICAgICAgY29uc3QgZXZlbnRzID0gZXZlbnRQYXJ0cy5tYXAoZXAgPT4gZXAuZXZlbnQpXG4gICAgICAgICAgLmZpbHRlcigoZSwgaSwgbGlzdCkgPT4gbGlzdC5pbmRleE9mKGUpID09PSBpKVxuICAgICAgICAgIC5maWx0ZXIoKGUpID0+ICEhZSlcbiAgICAgICAgICAubWFwKChlKSA9PiA8U2NoZWR1bGVyRXZlbnQ+ZSk7XG4gICAgICAgIGNvbnN0IHRpbWVsaW5lID0gdGhpcy50aW1lbGluZVNlcnZpY2UuZ2V0VGltZWxpbmUoZXZlbnRzKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aW1lbGluZS5tYXAodHJhY2sgPT4gdHJhY2suZXZlbnRzLm1hcChldiA9PiAoeyBldmVudDogZXYsIGluZGV4OiB0cmFjay5pbmRleCB9KSkpXG4gICAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSlcbiAgICAgICAgICAubWFwKChldmkpID0+IGV2ZW50UGFydHMuZmlsdGVyKHAgPT4gcC5ldmVudCA9PT0gZXZpLmV2ZW50KS5tYXAocCA9PiAoeyBwYXJ0OiBwLCBpbmRleDogZXZpLmluZGV4IH0pKSlcbiAgICAgICAgICAucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRvdGFsOiB0aW1lbGluZS5sZW5ndGgsXG4gICAgICAgICAgcGFydHM6IHJlc3VsdFxuICAgICAgICB9O1xuICAgICAgfSkpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5tb2RlJCwgdGhpcy5zaG93bkRheXMkLCB0aGlzLnRpbWVTbG90RHVyYXRpb24kXSlcbiAgICAgIC5waXBlKGZpbHRlcigoW21vZGUsIHNob3duRGF5cywgZHVyYXRpb25dKSA9PiBtb2RlICE9PSBudWxsKSlcbiAgICAgIC5waXBlKG1hcCgoW21vZGUsIHNob3duRGF5cywgZHVyYXRpb25dKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUud2Vlazoge1xuICAgICAgICAgICAgY29uc3QgdGltZVNsb3RzUGVyRGF5ID0gTWF0aC5mbG9vcigoNjAgKiA2MCAqIDI0KSAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KHRpbWVTbG90c1BlckRheSkua2V5cygpKS5tYXAoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVzbG90Rm9yTW9uZGF5ID0gdGhpcy5jcmVhdGVUaW1lc2xvdChzaG93bkRheXNbMF0sIGluZGV4LCBkdXJhdGlvbik7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90cz57XG4gICAgICAgICAgICAgICAgc2xvdHM6IHNob3duRGF5cy5tYXAoKGRheSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShkYXkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0SG91cnModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRNaW51dGVzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldE1pbnV0ZXMoKSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRTZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRNaWxsaXNlY29uZHModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShkYXkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldEhvdXJzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRNaW51dGVzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldFNlY29uZHModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0TWlsbGlzZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0RGF0ZShlbmQuZ2V0RGF0ZSgpICsgdGltZXNsb3RGb3JNb25kYXkuZW5kLmdldERhdGUoKSAtIHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldERhdGUoKSk7XG4gICAgICBcbiAgICAgICAgICAgICAgICAgIHJldHVybiA8VGltZVNsb3Q+eyBzdGFydCwgZW5kIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhbXA6IHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZToge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lc2xvdHMgPSAoMjQgKiA2MCAqIDYwKSAvIGR1cmF0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHNob3duRGF5cy5tYXAoKGRheSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gPFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzPntcbiAgICAgICAgICAgICAgICBzbG90czogQXJyYXkuZnJvbShBcnJheSh0b3RhbFRpbWVzbG90cykua2V5cygpKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGltZXNsb3QoZGF5LCBpbmRleCwgZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhbXA6IGRheVxuICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRocm93ICdVbmtub3duIHZhbHVlIGZvciBNb2RlOiAnICsgbW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKVxuICAgICAgLnN1YnNjcmliZSgodGltZXNsb3RzKSA9PiB7XG4gICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB3ZSdyZSBub3QgdXNpbmcgYW4gb2JzZXJ2YWJsZSBoZXJlLCBidXQgcGVyc2lzdCB0aGUgdGltZXNsb3RzIGluIGEgQmVoYXZpb3JTdWJqZWN0LlxuICAgICAgICB0aGlzLnRpbWVTbG90cyQubmV4dCh0aW1lc2xvdHMpO1xuICAgICAgfSk7XG4gICAgXG4gICAgICB0aGlzLndlZWtPcHRpb25zJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKCh3ZWVrT3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLndlZWtPcHRpb25zQ2hhbmdlLmVtaXQod2Vla09wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgdGhpcy50aW1lbGluZU9wdGlvbnMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRpbWVsaW5lT3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnRpbWVsaW5lT3B0aW9uc0NoYW5nZS5lbWl0KHRpbWVsaW5lT3B0aW9ucyk7XG4gICAgICB9KTtcblxuICAgIC8vIGNvbWJpbmVMYXRlc3QoW3RoaXMubW9kZSQsIHRoaXMuc2NhbGUkXSlcbiAgICAvLyAgIC5waXBlKGZpbHRlcigoW21vZGUsIHNjYWxlXSkgPT4gbW9kZSA9PT0gRVNjaGVkdWxlck1vZGUudGltZWxpbmUpKVxuXG4gIH1cblxuICByZXNvdXJjZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdPihbXSk7XG4gIGV2ZW50cyQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRbXT47XG4gIGV2ZW50UGFydHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50V2l0aFBhcnRzW10+O1xuICBldmVudFBhcnRzRm9yVGhpc1dlZWskOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50UGFydFtdPjtcbiAgdGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTx7IHRvdGFsOiBudW1iZXIsIHBhcnRzOiB7IHBhcnQ6IFNjaGVkdWxlckV2ZW50UGFydCwgaW5kZXg6IG51bWJlcn1bXSB9PjtcbiAgd2Vla09wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXZWVrT3B0aW9ucz4oeyB1bml0SGVpZ2h0OiAzMCB9KTtcbiAgdGltZWxpbmVPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZWxpbmVPcHRpb25zPih7IHVuaXRXaWR0aDogNTAgfSk7XG4gIFxuICBwcmV2aWV3RXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQcmV2aWV3RXZlbnQgfCBudWxsPihudWxsKTtcbiAgcHJldmlld0V2ZW50UGFydHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50V2l0aFBhcnRzIHwgbnVsbD47XG4gIHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50UGFydFtdPjtcbiAgXG4gIGN1cnJlbnRXZWVrT3JNb250aCQ6IEJlaGF2aW9yU3ViamVjdDxEYXRlPjtcbiAgc2hvd25EYXlzJDogT2JzZXJ2YWJsZTxEYXRlW10+O1xuICBkYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkOiBPYnNlcnZhYmxlPHtzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcn0+O1xuICB0aW1lU2xvdER1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxODAwKTtcbiAgdGltZVNsb3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHNbXT4oW10pO1xuICBtb3VzZVN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBob3ZlcmVkVGltZVNsb3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lU2xvdCB8IG51bGw+KG51bGwpO1xuICBob3ZlcmVkRXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJFdmVudCB8IG51bGw+KG51bGwpO1xuICBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkcmVuKCdzbG90JykgdGltZVNsb3RFbGVtZW50cyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XG5cbiAgY3JlYXRlVGltZXNsb3QoZGF0ZTogRGF0ZSwgaW5kZXg6IG51bWJlciwgZHVyYXRpb246IG51bWJlcikge1xuICAgIGNvbnN0IHRpbWVTbG90U3RhcnQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICB0aW1lU2xvdFN0YXJ0LnNldFRpbWUoK3RpbWVTbG90U3RhcnQuZ2V0VGltZSgpICsgaW5kZXggKiBkdXJhdGlvbiAqIDEwMDApO1xuICAgIGNvbnN0IHRpbWVTbG90RW5kID0gbmV3IERhdGUodGltZVNsb3RTdGFydCk7XG4gICAgdGltZVNsb3RFbmQuc2V0VGltZSgrdGltZVNsb3RFbmQuZ2V0VGltZSgpICsgZHVyYXRpb24gKiAxMDAwKTtcblxuICAgIHJldHVybiA8VGltZVNsb3Q+eyBzdGFydDogdGltZVNsb3RTdGFydCwgZW5kOiB0aW1lU2xvdEVuZCB9O1xuICB9XG5cbiAgZ2V0UmVzb3VyY2VzRm9yR3JvdXAocmVzb3VyY2VPckdyb3VwOiBSZXNvdXJjZSB8IFJlc291cmNlR3JvdXApIDogUmVzb3VyY2VbXSB7XG4gICAgaWYgKCdjaGlsZHJlbicgaW4gcmVzb3VyY2VPckdyb3VwKSB7XG4gICAgICByZXR1cm4gcmVzb3VyY2VPckdyb3VwLmNoaWxkcmVuXG4gICAgICAgIC5tYXAoKGNoaWxkKSA9PiB0aGlzLmdldFJlc291cmNlc0Zvckdyb3VwKGNoaWxkKSlcbiAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbcmVzb3VyY2VPckdyb3VwXTtcbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gTW9kZVxuICBtb2RlcyA9IEVTY2hlZHVsZXJNb2RlO1xuICBtb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RVNjaGVkdWxlck1vZGU+KEVTY2hlZHVsZXJNb2RlLndlZWspO1xuICBAT3V0cHV0KCkgcHVibGljIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEVTY2hlZHVsZXJNb2RlPigpO1xuICBwdWJsaWMgZ2V0IG1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBtb2RlKHZhbHVlOiBFU2NoZWR1bGVyTW9kZSkge1xuICAgIHRoaXMubW9kZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vIC8vI3JlZ2lvbiBTY2FsZVxuICAvLyBzY2FsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlclNjYWxlPihhdmFpbGFibGVTY2FsZXNbNF0pO1xuICAvLyBAT3V0cHV0KCkgcHVibGljIHNjYWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTY2hlZHVsZXJTY2FsZT4oKTtcbiAgLy8gcHVibGljIGdldCBzY2FsZSgpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5zY2FsZSQudmFsdWU7XG4gIC8vIH1cbiAgLy8gQElucHV0KCkgcHVibGljIHNldCBzY2FsZSh2YWx1ZTogU2NoZWR1bGVyU2NhbGUpIHtcbiAgLy8gICB0aGlzLnNjYWxlJC5uZXh0KHZhbHVlKTtcbiAgLy8gfVxuICAvLyAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFdlZWtPcHRpb25zXG4gIEBPdXRwdXQoKSBwdWJsaWMgd2Vla09wdGlvbnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFdlZWtPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHdlZWtPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLndlZWtPcHRpb25zJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHdlZWtPcHRpb25zKHZhbHVlOiBXZWVrT3B0aW9ucykge1xuICAgIHRoaXMud2Vla09wdGlvbnMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyNyZWdpb24gVGltZWxpbmVPcHRpb25zXG4gIEBPdXRwdXQoKSBwdWJsaWMgdGltZWxpbmVPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lbGluZU9wdGlvbnM+KCk7XG4gIHB1YmxpYyBnZXQgdGltZWxpbmVPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRpbWVsaW5lT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB0aW1lbGluZU9wdGlvbnModmFsdWU6IFRpbWVsaW5lT3B0aW9ucykge1xuICAgIHRoaXMudGltZWxpbmVPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIG1heElubmVySGVpZ2h0XG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhJbm5lckhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIC8vI2VuZHJlZ2lvblxuICAvLyNyZWdpb24gUmVzb3VyY2VzXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCByZXNvdXJjZXModmFsdWU6IChSZXNvdXJjZSB8IFJlc291cmNlR3JvdXApW10pIHtcbiAgICB0aGlzLnJlc291cmNlcyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBhZGREYXlzKGRhdGU6IERhdGUsIGRheXM6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIHJlc3VsdC5zZXREYXRlKHJlc3VsdC5nZXREYXRlKCkgKyBkYXlzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25QcmV2aW91c1dlZWtPck1vbnRoKCkge1xuICAgIHRoaXMub25DaGFuZ2VXZWVrT3JNb250aChmYWxzZSk7XG4gIH1cblxuICBvbk5leHRXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlV2Vla09yTW9udGgobmV4dDogYm9vbGVhbikge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudFdlZWtPck1vbnRoJCwgdGhpcy5tb2RlJF0pXG4gICAgICAucGlwZShtYXAoKFtjdXJyZW50V2Vla09yTW9udGgsIG1vZGVdKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUud2Vlazoge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkRGF5cyhjdXJyZW50V2Vla09yTW9udGgsIChuZXh0ID8gNyA6IC03KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShjdXJyZW50V2Vla09yTW9udGguZ2V0RnVsbFllYXIoKSwgY3VycmVudFdlZWtPck1vbnRoLmdldE1vbnRoKCkgKyAobmV4dCA/IDEgOiAtMSksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCh3KSA9PiB0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQubmV4dCh3KSk7XG4gIH1cblxuICBvbkhvdmVyRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KGV2KTtcbiAgfVxuXG4gIG9uTGVhdmVFdmVudChldjogU2NoZWR1bGVyRXZlbnQgfCBudWxsKSB7XG4gICAgdGhpcy5ob3ZlcmVkRXZlbnQkLm5leHQobnVsbCk7XG4gIH1cblxuICBvcGVyYXRpb246IERyYWdPcGVyYXRpb24gfCBudWxsID0gbnVsbDtcbiAgZHJhZ1N0YXJ0VGltZXNsb3Q6IFRpbWVTbG90IHwgbnVsbCA9IG51bGw7XG4gIG9uQ3JlYXRlRXZlbnQoZXY6IE1vdXNlRXZlbnQsIHNsb3Q6IFRpbWVTbG90KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm1vdXNlU3RhdGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IHNsb3Q7XG4gICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLmNyZWF0ZUV2ZW50LFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgc3RhcnQ6IHNsb3Quc3RhcnQsXG4gICAgICAgIGVuZDogc2xvdC5lbmQsXG4gICAgICAgIGNvbG9yOiAnI0YwMCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGVzdCBldmVudCcsXG4gICAgICB9LFxuICAgICAgbWV0YTogbnVsbCxcbiAgICB9O1xuICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IHNsb3Quc3RhcnQsIGVuZDogc2xvdC5lbmQgfSk7XG4gIH1cblxuICByYW5kb21Db2xvcigpIHtcbiAgICBjb25zdCBicmlnaHRuZXNzID0gMTI4O1xuICAgIHJldHVybiAnIycgKyB0aGlzLnJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzcykgKyB0aGlzLnJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzcykgKyB0aGlzLnJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzcyk7XG4gIH1cbiAgcmFuZG9tQ2hhbm5lbChicmlnaHRuZXNzOiBudW1iZXIpe1xuICAgIGNvbnN0IHIgPSAyNTUtYnJpZ2h0bmVzcztcbiAgICBjb25zdCBuID0gMHwoKE1hdGgucmFuZG9tKCkgKiByKSArIGJyaWdodG5lc3MpO1xuICAgIGNvbnN0IHMgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKHMubGVuZ3RoPT0xKSA/ICcwJytzIDogcztcbiAgfVxuXG4gIG9uU3RhcnREcmFnRXZlbnQoZXZlbnRQYXJ0OiBTY2hlZHVsZXJFdmVudFBhcnQsIGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGhvdmVyZWRUaW1lU2xvdCkgPT4ge1xuICAgICAgaWYgKGV2ZW50UGFydC5ldmVudCkge1xuICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gaG92ZXJlZFRpbWVTbG90O1xuICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudCxcbiAgICAgICAgICBldmVudDogZXZlbnRQYXJ0LmV2ZW50LFxuICAgICAgICAgIG1ldGE6IG51bGwsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50UGFydC5ldmVudC5zdGFydCwgZW5kOiBldmVudFBhcnQuZXZlbnQuZW5kIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25TdGFydFJlc2l6ZUV2ZW50KGV2ZW50OiBTY2hlZHVsZXJFdmVudCB8IG51bGwsIHBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSAnYm90dG9tJzoge1xuICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5yZXNpemVFdmVudCxcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG1ldGE6IHsgcG9zaXRpb24gfSxcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoeyBzdGFydDogZXZlbnQuc3RhcnQsIGVuZDogZXZlbnQuZW5kIH0pO1xuICAgICAgICB9IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vI3JlZ2lvbiBob3ZlcmVkVGltZXNsb3QkXG4gIHByaXZhdGUgZ2V0SG92ZXJlZFRpbWVzbG90KGV2OiBNb3VzZUV2ZW50LCB0aW1lU2xvdHM6IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzW10pIHtcbiAgICBjb25zdCBob3ZlcmVkU2xvdHMgPSB0aGlzLnRpbWVTbG90RWxlbWVudHMuZmlsdGVyKChlbCkgPT4ge1xuICAgICAgY29uc3QgcmN0ID0gZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmIChyY3QubGVmdCA8PSBldi54ICYmIGV2LnggPD0gcmN0LnJpZ2h0ICYmIHJjdC50b3AgPD0gZXYueSAmJiBldi55IDw9IHJjdC5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWhvdmVyZWRTbG90cyB8fCBob3ZlcmVkU2xvdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzbG90RWxlbWVudCA9IGhvdmVyZWRTbG90c1swXS5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3Qgc3RyUm93ID0gc2xvdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgIGlmICghc3RyUm93KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgcm93ID0gcGFyc2VJbnQoc3RyUm93KTtcblxuICAgIGNvbnN0IHN0ckNvbHVtbiA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jb2x1bW4nKTtcbiAgICBpZiAoIXN0ckNvbHVtbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbiA9IHBhcnNlSW50KHN0ckNvbHVtbik7XG5cbiAgICBjb25zdCBzbG90ID0gdGltZVNsb3RzW3Jvd10uc2xvdHNbY29sdW1uXTtcbiAgICByZXR1cm4gc2xvdDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2Vtb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy50aW1lU2xvdHMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh0aW1lU2xvdHMpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWQgPSB0aGlzLmdldEhvdmVyZWRUaW1lc2xvdChldiwgdGltZVNsb3RzKTtcbiAgICAgIHRoaXMuaG92ZXJlZFRpbWVTbG90JC5uZXh0KGhvdmVyZWQpO1xuXG4gICAgICBpZiAodGhpcy5vcGVyYXRpb24pIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLmNyZWF0ZUV2ZW50OiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCAmJiBob3ZlcmVkICYmICh0aGlzLm9wZXJhdGlvbi5ldmVudC5lbmQuZ2V0VGltZSgpICE9IGhvdmVyZWQuZW5kLmdldFRpbWUoKSkpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID09PSBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgIC8vIDEgc2xvdFxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpIDwgaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIGRvd25cbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYgJiYgISF0aGlzLmRyYWdTdGFydFRpbWVzbG90KSlcbiAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gaG92ZXJlZC5lbmQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5zdGFydC5nZXRUaW1lKCkgPiBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgIC8vIERyYWcgdXBcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYgJiYgISF0aGlzLmRyYWdTdGFydFRpbWVzbG90KSlcbiAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5lbmQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ubW92ZUV2ZW50OiB7XG4gICAgICAgICAgICBpZiAoaG92ZXJlZCAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYgJiYgISF0aGlzLmRyYWdTdGFydFRpbWVzbG90KSlcbiAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXYgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAgPFByZXZpZXdFdmVudD57XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKGV2LnN0YXJ0LmdldFRpbWUoKSArIGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpIC0gdGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5zdGFydC5nZXRUaW1lKCkpLFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogbmV3IERhdGUoZXYuZW5kLmdldFRpbWUoKSArIGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpIC0gdGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5zdGFydC5nZXRUaW1lKCkpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gaG92ZXJlZDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldiA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5yZXNpemVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChldikgPT4gISFldikpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMub3BlcmF0aW9uICYmIHRoaXMub3BlcmF0aW9uLmV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbi5tZXRhLnBvc2l0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgICAgICAgIGV2LnN0YXJ0ID0gaG92ZXJlZC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5lbmQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IHRoaXMub3BlcmF0aW9uLmV2ZW50LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZXY7XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldikgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZVVwKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0aW9uLm9wZXJhdGlvbikge1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLmNyZWF0ZUV2ZW50OiB7XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5wcmV2aWV3RXZlbnQkXSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbcHJldmlld0V2ZW50XSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzJC5uZXh0KFtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMucmVzb3VyY2VzJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIDxSZXNvdXJjZT57XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IHJlc291cmNlIGdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBwcmV2aWV3RXZlbnQuc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgZW5kOiBwcmV2aWV3RXZlbnQuZW5kLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLnJhbmRvbUNvbG9yKCksXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZXcgZXZlbnQnXG4gICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGJyZWFrO1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDpcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5yZXNpemVFdmVudDoge1xuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChldikgPT4gISFldikpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocHJldmlld0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCAmJiBwcmV2aWV3RXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydCA9IHByZXZpZXdFdmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbi5ldmVudC5lbmQgPSBwcmV2aWV3RXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dCh0aGlzLnJlc291cmNlcyQudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCh0cnVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB3LTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCB3ZWVrLXNjaGVkdWxlXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibnVsbFwiXG4gICAgKm5nSWY9XCIobW9kZSQgfCBhc3luYykgPT09IG1vZGVzLndlZWtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNhbGVuZGFyLWxlZnQganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaS1jaGV2cm9uLWxlZnQgcHgtMFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGZsZXgtZW5kXCIgKGNsaWNrKT1cIm9uTmV4dFdlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaS1jaGV2cm9uLXJpZ2h0IHB4LTBcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBjYWxlbmRhci1oZWFkLWNlbGxcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIChzaG93bkRheXMkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGNvbC1mb3JtLWxhYmVsIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRheSB8IGRhdGU6ICdkZC1NTScgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj4te3sgZGF5IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtzdHlsZS5oZWlnaHQucHhdPVwibWF4SW5uZXJIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyByb3dcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIod2Vla09wdGlvbnMkIHwgYXN5bmMpIGFzIHdlZWtPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBUaW1lc2xvdHMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGltZXNsb3RzIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IHAtMCB0aW1lc2xvdFwiIFtzdHlsZS5oZWlnaHQucHhdPVwid2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbCBjYWxlbmRhci1sZWZ0IGFsaWduLXRvcCBweC0yIHB5LTBcIj57eyB0aW1lc2xvdHMuc2xvdHNbMF0uc3RhcnQgfCBkYXRlOiAnSEg6bW06c3MnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGZsZXgtZ3Jvdy0xXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgdGltZXNsb3RzLnNsb3RzOyBsZXQgaiA9IGluZGV4XCIgI3Nsb3QgKG1vdXNlZG93bik9XCJvbkNyZWF0ZUV2ZW50KCRldmVudCwgc2xvdClcIiBbYXR0ci5kYXRhLXJvd109XCJpXCIgW2F0dHIuZGF0YS1jb2x1bW5dPVwialwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBFdmVudHMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdER1cmF0aW9uJCB8IGFzeW5jKSBhcyB0aW1lU2xvdER1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCB8IGFzeW5jKSBhcyBwYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHBhcnREYXRhLnBhcnRzXCIgY2xhc3M9XCJldmVudCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVG9kYXlPZmZzZXQpIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQucGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXJcIiBbY2xhc3MuaG92ZXJdPVwiKGhvdmVyZWRFdmVudCQgfCBhc3luYykgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnICogJyArIGV2ZW50UGFydC5pbmRleCArICcpJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuc3RhcnQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ3RvcCcpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1ib3JkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXdyYXBwZXJcIiAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydERyYWdFdmVudChldmVudFBhcnQucGFydCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1iZ1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImV2ZW50UGFydC5wYXJ0LmV2ZW50LmNvbG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtbGFiZWxcIj57eyBldmVudFBhcnQucGFydC5ldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSBib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJldmVudFBhcnQucGFydC5lbmQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICdib3R0b20nKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmMpIGFzIHByZXZpZXdQYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHByZXZpZXdQYXJ0RGF0YVwiIGNsYXNzPVwiZXZlbnQgcHJldmlldyBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uLTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCBiZy13aGl0ZSB0aW1lbGluZVwiICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy50aW1lbGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkIGQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYmktY2hldnJvbi1sZWZ0IHB4LTBcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgaDMgcHktMiBtYi0wIHRleHQtY2VudGVyXCI+e3sgY3VycmVudFdlZWtPck1vbnRoJCB8IGFzeW5jIHwgZGF0ZTogJ01NTU0geXl5eScgfX08L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uTmV4dFdlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYmktY2hldnJvbi1yaWdodCBweC0wXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keSB0YWJsZS1yZXNwb25zaXZlIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHRpbWVTbG90cyQgfCBhc3luYykgYXMgdGltZVNsb3RzXCI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXkgb2YgdGltZVNsb3RzXCIgW2F0dHIuY29sc3Bhbl09XCJkYXkuc2xvdHMubGVuZ3RoXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvc2l0aW9uLXN0aWNreSBkYXktbGFiZWxcIj57eyBkYXkuc3RhbXAgfCBkYXRlOiAnZCBFRScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHRpbWVsaW5lT3B0aW9ucyQgfCBhc3luYykgYXMgdGltZWxpbmVPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXkgb2YgdGltZVNsb3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBzbG90IG9mIGRheS5zbG90c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgcC0wIHRleHQtY2VudGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cInRpbWVsaW5lT3B0aW9ucy51bml0V2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNsb3Quc3RhcnQgfCBkYXRlOiAnSEg6bW0nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPGJzLXJlc291cmNlLWdyb3VwLXByZXNlbnRlciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgKHJlc291cmNlcyQgfCBhc3luYylcIiBbcmVzb3VyY2VHcm91cF09XCJncm91cFwiIFt0aW1lU2xvdHNdPVwidGltZVNsb3RzXCI+PC9icy1yZXNvdXJjZS1ncm91cC1wcmVzZW50ZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|