@ng-nest/ui 17.0.1 → 17.0.3
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/affix/affix.component.d.ts +1 -2
- package/affix/affix.module.d.ts +1 -3
- package/alert/alert.component.d.ts +4 -5
- package/alert/alert.module.d.ts +1 -8
- package/anchor/anchor-inner.component.d.ts +1 -1
- package/anchor/anchor.component.d.ts +6 -7
- package/anchor/anchor.module.d.ts +2 -6
- package/api/api.component.d.ts +4 -4
- package/api/api.module.d.ts +1 -2
- package/auto-complete/auto-complete-portal.component.d.ts +3 -5
- package/auto-complete/auto-complete.component.d.ts +12 -13
- package/auto-complete/auto-complete.module.d.ts +1 -9
- package/avatar/avatar-group.component.d.ts +1 -2
- package/avatar/avatar.component.d.ts +6 -7
- package/avatar/avatar.module.d.ts +2 -6
- package/back-top/back-top.component.d.ts +7 -12
- package/back-top/back-top.module.d.ts +1 -5
- package/badge/badge.component.d.ts +3 -8
- package/badge/badge.module.d.ts +1 -3
- package/base-form/base-form.component.d.ts +1 -1
- package/base-form/base-form.module.d.ts +1 -2
- package/border/border.component.d.ts +4 -4
- package/border/border.module.d.ts +1 -1
- package/button/button.component.d.ts +8 -10
- package/button/button.module.d.ts +1 -5
- package/button/buttons.component.d.ts +4 -5
- package/calendar/calendar.component.d.ts +9 -14
- package/calendar/calendar.module.d.ts +1 -10
- package/card/card.component.d.ts +2 -6
- package/card/card.module.d.ts +1 -5
- package/carousel/carousel-panel.component.d.ts +10 -13
- package/carousel/carousel.component.d.ts +4 -8
- package/carousel/carousel.module.d.ts +1 -5
- package/cascade/cascade-portal.component.d.ts +4 -5
- package/cascade/cascade.component.d.ts +14 -13
- package/cascade/cascade.module.d.ts +1 -9
- package/checkbox/checkbox.component.d.ts +6 -9
- package/checkbox/checkbox.module.d.ts +1 -8
- package/collapse/collapse-panel.component.d.ts +5 -8
- package/collapse/collapse.component.d.ts +3 -7
- package/collapse/collapse.module.d.ts +1 -5
- package/color/color.component.d.ts +4 -6
- package/color/color.module.d.ts +1 -3
- package/color-picker/color-picker-portal.component.d.ts +7 -11
- package/color-picker/color-picker.component.d.ts +11 -12
- package/color-picker/color-picker.module.d.ts +1 -11
- package/comment/comment-reply.component.d.ts +4 -9
- package/comment/comment.component.d.ts +5 -9
- package/comment/comment.module.d.ts +1 -11
- package/container/aside.component.d.ts +5 -5
- package/container/container.component.d.ts +2 -3
- package/container/container.module.d.ts +1 -3
- package/container/footer.component.d.ts +5 -7
- package/container/header.component.d.ts +5 -7
- package/container/main.component.d.ts +4 -4
- package/crumb/crumb.component.d.ts +4 -6
- package/crumb/crumb.module.d.ts +1 -5
- package/date-picker/date-picker-portal.component.d.ts +5 -9
- package/date-picker/date-picker.component.d.ts +14 -16
- package/date-picker/date-picker.module.d.ts +2 -21
- package/date-picker/date-quarter.pipe.d.ts +1 -1
- package/date-picker/date-range-portal.component.d.ts +1 -1
- package/date-picker/date-range.component.d.ts +17 -19
- package/date-picker/picker-date.component.d.ts +8 -12
- package/date-picker/picker-month.component.d.ts +8 -11
- package/date-picker/picker-quarter.component.d.ts +9 -14
- package/date-picker/picker-year.component.d.ts +5 -8
- package/description/description-item.component.d.ts +1 -2
- package/description/description.component.d.ts +4 -5
- package/description/description.module.d.ts +2 -5
- package/dialog/dialog-container.component.d.ts +1 -2
- package/dialog/dialog-portal.component.d.ts +1 -1
- package/dialog/dialog-portal.directives.d.ts +13 -17
- package/dialog/dialog.component.d.ts +15 -17
- package/dialog/dialog.module.d.ts +1 -14
- package/dialog/dialog.service.d.ts +8 -10
- package/doc/doc.component.d.ts +6 -6
- package/doc/doc.module.d.ts +1 -2
- package/drag/drag.directive.d.ts +5 -6
- package/drag/drag.module.d.ts +1 -2
- package/drawer/drawer-container.component.d.ts +1 -2
- package/drawer/drawer-portal.component.d.ts +1 -2
- package/drawer/drawer-portal.directives.d.ts +5 -6
- package/drawer/drawer.component.d.ts +10 -15
- package/drawer/drawer.module.d.ts +2 -8
- package/drawer/drawer.service.d.ts +5 -7
- package/dropdown/dropdown-portal.component.d.ts +1 -1
- package/dropdown/dropdown.component.d.ts +10 -13
- package/dropdown/dropdown.module.d.ts +1 -7
- package/empty/empty.component.d.ts +4 -7
- package/empty/empty.module.d.ts +1 -6
- package/esm2022/affix/affix.component.mjs +11 -11
- package/esm2022/affix/affix.module.mjs +6 -9
- package/esm2022/affix/affix.property.mjs +3 -3
- package/esm2022/alert/alert.component.mjs +19 -19
- package/esm2022/alert/alert.module.mjs +6 -14
- package/esm2022/alert/alert.property.mjs +4 -4
- package/esm2022/anchor/anchor-inner.component.mjs +5 -4
- package/esm2022/anchor/anchor.component.mjs +18 -21
- package/esm2022/anchor/anchor.module.mjs +6 -11
- package/esm2022/anchor/anchor.property.mjs +7 -7
- package/esm2022/api/api.component.mjs +14 -12
- package/esm2022/api/api.module.mjs +6 -8
- package/esm2022/auto-complete/auto-complete-portal.component.mjs +15 -16
- package/esm2022/auto-complete/auto-complete.component.mjs +44 -31
- package/esm2022/auto-complete/auto-complete.module.mjs +7 -16
- package/esm2022/auto-complete/auto-complete.property.mjs +3 -3
- package/esm2022/avatar/avatar-group.component.mjs +7 -7
- package/esm2022/avatar/avatar.component.mjs +17 -19
- package/esm2022/avatar/avatar.module.mjs +6 -11
- package/esm2022/avatar/avatar.property.mjs +7 -7
- package/esm2022/back-top/back-top.component.mjs +23 -29
- package/esm2022/back-top/back-top.module.mjs +6 -11
- package/esm2022/back-top/back-top.property.mjs +3 -3
- package/esm2022/badge/badge.component.mjs +18 -23
- package/esm2022/badge/badge.module.mjs +6 -9
- package/esm2022/badge/badge.property.mjs +3 -3
- package/esm2022/base-form/base-form.component.mjs +11 -6
- package/esm2022/base-form/base-form.module.mjs +7 -8
- package/esm2022/base-form/base-form.property.mjs +4 -4
- package/esm2022/border/border.component.mjs +14 -12
- package/esm2022/border/border.module.mjs +6 -6
- package/esm2022/button/button.component.mjs +19 -24
- package/esm2022/button/button.module.mjs +6 -11
- package/esm2022/button/button.property.mjs +7 -7
- package/esm2022/button/buttons.component.mjs +15 -15
- package/esm2022/calendar/calendar.component.mjs +38 -30
- package/esm2022/calendar/calendar.module.mjs +6 -16
- package/esm2022/calendar/calendar.property.mjs +3 -3
- package/esm2022/card/card.component.mjs +14 -17
- package/esm2022/card/card.module.mjs +6 -11
- package/esm2022/card/card.property.mjs +3 -3
- package/esm2022/carousel/carousel-panel.component.mjs +36 -34
- package/esm2022/carousel/carousel.component.mjs +19 -26
- package/esm2022/carousel/carousel.module.mjs +7 -12
- package/esm2022/carousel/carousel.property.mjs +6 -6
- package/esm2022/cascade/cascade-portal.component.mjs +20 -20
- package/esm2022/cascade/cascade.component.mjs +34 -29
- package/esm2022/cascade/cascade.module.mjs +7 -16
- package/esm2022/cascade/cascade.property.mjs +3 -3
- package/esm2022/checkbox/checkbox.component.mjs +31 -27
- package/esm2022/checkbox/checkbox.module.mjs +6 -14
- package/esm2022/checkbox/checkbox.property.mjs +3 -3
- package/esm2022/collapse/collapse-panel.component.mjs +18 -21
- package/esm2022/collapse/collapse.component.mjs +11 -15
- package/esm2022/collapse/collapse.module.mjs +6 -11
- package/esm2022/collapse/collapse.property.mjs +6 -6
- package/esm2022/color/color.component.mjs +14 -19
- package/esm2022/color/color.module.mjs +6 -9
- package/esm2022/color/color.property.mjs +3 -3
- package/esm2022/color-picker/color-picker-portal.component.mjs +45 -35
- package/esm2022/color-picker/color-picker.component.mjs +36 -35
- package/esm2022/color-picker/color-picker.module.mjs +7 -44
- package/esm2022/color-picker/color-picker.property.mjs +3 -3
- package/esm2022/comment/comment-reply.component.mjs +18 -19
- package/esm2022/comment/comment.component.mjs +30 -25
- package/esm2022/comment/comment.module.mjs +6 -43
- package/esm2022/comment/comment.property.mjs +7 -7
- package/esm2022/container/aside.component.mjs +15 -13
- package/esm2022/container/container.component.mjs +14 -14
- package/esm2022/container/container.module.mjs +7 -37
- package/esm2022/container/container.property.mjs +12 -12
- package/esm2022/container/footer.component.mjs +17 -21
- package/esm2022/container/header.component.mjs +17 -21
- package/esm2022/container/main.component.mjs +14 -12
- package/esm2022/core/config/config.service.mjs +11 -6
- package/esm2022/core/services/http.service.mjs +3 -3
- package/esm2022/core/services/preloading-strategy.service.mjs +6 -5
- package/esm2022/core/services/storage.service.mjs +3 -3
- package/esm2022/core/theme/theme.service.mjs +3 -3
- package/esm2022/crumb/crumb.component.mjs +15 -19
- package/esm2022/crumb/crumb.module.mjs +6 -11
- package/esm2022/crumb/crumb.property.mjs +3 -3
- package/esm2022/date-picker/date-picker-portal.component.mjs +38 -29
- package/esm2022/date-picker/date-picker.component.mjs +52 -47
- package/esm2022/date-picker/date-picker.module.mjs +7 -108
- package/esm2022/date-picker/date-picker.property.mjs +18 -18
- package/esm2022/date-picker/date-quarter.pipe.mjs +5 -5
- package/esm2022/date-picker/date-range-portal.component.mjs +25 -13
- package/esm2022/date-picker/date-range.component.mjs +50 -51
- package/esm2022/date-picker/picker-date.component.mjs +45 -43
- package/esm2022/date-picker/picker-month.component.mjs +31 -30
- package/esm2022/date-picker/picker-quarter.component.mjs +31 -32
- package/esm2022/date-picker/picker-year.component.mjs +26 -25
- package/esm2022/description/description-item.component.mjs +6 -9
- package/esm2022/description/description.component.mjs +13 -14
- package/esm2022/description/description.module.mjs +6 -10
- package/esm2022/description/description.property.mjs +6 -6
- package/esm2022/dialog/dialog-container.component.mjs +7 -7
- package/esm2022/dialog/dialog-portal.component.mjs +22 -11
- package/esm2022/dialog/dialog-portal.directives.mjs +48 -48
- package/esm2022/dialog/dialog-ref.mjs +1 -1
- package/esm2022/dialog/dialog.component.mjs +40 -48
- package/esm2022/dialog/dialog.module.mjs +12 -71
- package/esm2022/dialog/dialog.property.mjs +6 -6
- package/esm2022/dialog/dialog.service.mjs +16 -17
- package/esm2022/doc/doc.component.mjs +12 -10
- package/esm2022/doc/doc.module.mjs +6 -8
- package/esm2022/drag/drag.directive.mjs +11 -11
- package/esm2022/drag/drag.module.mjs +6 -8
- package/esm2022/drag/drag.property.mjs +3 -3
- package/esm2022/drawer/drawer-container.component.mjs +7 -7
- package/esm2022/drawer/drawer-portal.component.mjs +12 -12
- package/esm2022/drawer/drawer-portal.directives.mjs +22 -21
- package/esm2022/drawer/drawer.component.mjs +23 -33
- package/esm2022/drawer/drawer.module.mjs +10 -27
- package/esm2022/drawer/drawer.property.mjs +6 -6
- package/esm2022/drawer/drawer.service.mjs +15 -15
- package/esm2022/dropdown/dropdown-portal.component.mjs +8 -7
- package/esm2022/dropdown/dropdown.component.mjs +18 -22
- package/esm2022/dropdown/dropdown.module.mjs +7 -14
- package/esm2022/dropdown/dropdown.property.mjs +3 -3
- package/esm2022/empty/empty.component.mjs +20 -18
- package/esm2022/empty/empty.module.mjs +6 -12
- package/esm2022/empty/empty.property.mjs +3 -3
- package/esm2022/examples/examples.component.mjs +12 -10
- package/esm2022/examples/examples.module.mjs +6 -8
- package/esm2022/find/find.component.mjs +48 -33
- package/esm2022/find/find.module.mjs +6 -54
- package/esm2022/find/find.property.mjs +3 -3
- package/esm2022/form/control.component.mjs +67 -40
- package/esm2022/form/form.component.mjs +28 -22
- package/esm2022/form/form.module.mjs +6 -71
- package/esm2022/form/form.property.mjs +6 -6
- package/esm2022/highlight/highlight.component.mjs +26 -24
- package/esm2022/highlight/highlight.module.mjs +6 -10
- package/esm2022/highlight/highlight.property.mjs +3 -3
- package/esm2022/i18n/i18n.directive.mjs +14 -11
- package/esm2022/i18n/i18n.module.mjs +6 -6
- package/esm2022/i18n/i18n.pipe.mjs +6 -5
- package/esm2022/i18n/i18n.service.mjs +9 -13
- package/esm2022/icon/icon.component.mjs +21 -22
- package/esm2022/icon/icon.module.mjs +6 -11
- package/esm2022/icon/icon.property.mjs +4 -4
- package/esm2022/icon/icon.service.mjs +36 -35
- package/esm2022/image/image-group.component.mjs +12 -6
- package/esm2022/image/image-preview.component.mjs +26 -32
- package/esm2022/image/image.component.mjs +30 -30
- package/esm2022/image/image.module.mjs +6 -15
- package/esm2022/image/image.property.mjs +6 -6
- package/esm2022/inner/inner.component.mjs +14 -14
- package/esm2022/inner/inner.module.mjs +6 -9
- package/esm2022/inner/inner.property.mjs +3 -3
- package/esm2022/input/input-group.component.mjs +12 -14
- package/esm2022/input/input.component.mjs +33 -35
- package/esm2022/input/input.module.mjs +6 -13
- package/esm2022/input/input.property.mjs +6 -6
- package/esm2022/input-number/input-number.component.mjs +23 -27
- package/esm2022/input-number/input-number.module.mjs +6 -13
- package/esm2022/input-number/input-number.property.mjs +3 -3
- package/esm2022/keyword/keyword.directive.mjs +14 -14
- package/esm2022/keyword/keyword.module.mjs +6 -9
- package/esm2022/keyword/keyword.property.mjs +5 -5
- package/esm2022/layout/col.component.mjs +15 -19
- package/esm2022/layout/layout.module.mjs +6 -9
- package/esm2022/layout/layout.property.mjs +7 -7
- package/esm2022/layout/row.component.mjs +13 -13
- package/esm2022/link/link.component.mjs +17 -19
- package/esm2022/link/link.module.mjs +6 -12
- package/esm2022/link/link.property.mjs +3 -3
- package/esm2022/list/list-drop-group.directive.mjs +5 -4
- package/esm2022/list/list-option.component.mjs +16 -17
- package/esm2022/list/list.component.mjs +36 -33
- package/esm2022/list/list.module.mjs +6 -54
- package/esm2022/list/list.property.mjs +6 -6
- package/esm2022/loading/loading.component.mjs +19 -22
- package/esm2022/loading/loading.module.mjs +6 -12
- package/esm2022/loading/loading.property.mjs +3 -3
- package/esm2022/menu/menu-node.component.mjs +17 -18
- package/esm2022/menu/menu.component.mjs +21 -27
- package/esm2022/menu/menu.module.mjs +6 -13
- package/esm2022/menu/menu.property.mjs +6 -6
- package/esm2022/message/message.component.mjs +10 -16
- package/esm2022/message/message.module.mjs +7 -14
- package/esm2022/message/message.service.mjs +13 -13
- package/esm2022/message-box/message-box.component.mjs +21 -12
- package/esm2022/message-box/message-box.module.mjs +7 -49
- package/esm2022/message-box/message-box.service.mjs +13 -12
- package/esm2022/notification/notification.component.mjs +10 -16
- package/esm2022/notification/notification.module.mjs +7 -14
- package/esm2022/notification/notification.service.mjs +15 -11
- package/esm2022/outlet/outlet.directive.mjs +10 -10
- package/esm2022/outlet/outlet.module.mjs +6 -8
- package/esm2022/page-header/page-header.component.mjs +18 -19
- package/esm2022/page-header/page-header.module.mjs +6 -10
- package/esm2022/page-header/page-header.property.mjs +3 -3
- package/esm2022/pagination/pagination.component.mjs +37 -33
- package/esm2022/pagination/pagination.module.mjs +6 -15
- package/esm2022/pagination/pagination.property.mjs +3 -3
- package/esm2022/pattern/pattern.component.mjs +12 -10
- package/esm2022/pattern/pattern.module.mjs +6 -8
- package/esm2022/popconfirm/popconfirm.component.mjs +23 -26
- package/esm2022/popconfirm/popconfirm.module.mjs +6 -13
- package/esm2022/popconfirm/popconfirm.property.mjs +3 -3
- package/esm2022/popover/popover-portal.component.mjs +16 -16
- package/esm2022/popover/popover.directive.mjs +17 -19
- package/esm2022/popover/popover.module.mjs +7 -13
- package/esm2022/popover/popover.property.mjs +3 -3
- package/esm2022/portal/portal.module.mjs +8 -11
- package/esm2022/portal/portal.service.mjs +13 -12
- package/esm2022/progress/progress.component.mjs +16 -19
- package/esm2022/progress/progress.module.mjs +6 -11
- package/esm2022/progress/progress.property.mjs +3 -3
- package/esm2022/radio/radio.component.mjs +21 -25
- package/esm2022/radio/radio.module.mjs +6 -14
- package/esm2022/radio/radio.property.mjs +3 -3
- package/esm2022/rate/rate.component.mjs +22 -22
- package/esm2022/rate/rate.module.mjs +6 -13
- package/esm2022/rate/rate.property.mjs +3 -3
- package/esm2022/resizable/resizable.directive.mjs +57 -46
- package/esm2022/resizable/resizable.module.mjs +7 -9
- package/esm2022/resizable/resizable.property.mjs +5 -5
- package/esm2022/result/result.component.mjs +15 -19
- package/esm2022/result/result.module.mjs +6 -11
- package/esm2022/result/result.property.mjs +3 -3
- package/esm2022/ripple/ripple.directive.mjs +12 -11
- package/esm2022/ripple/ripple.module.mjs +7 -10
- package/esm2022/ripple/ripple.property.mjs +3 -3
- package/esm2022/select/select-portal.component.mjs +7 -6
- package/esm2022/select/select.component.mjs +51 -50
- package/esm2022/select/select.module.mjs +7 -48
- package/esm2022/select/select.property.mjs +3 -3
- package/esm2022/skeleton/skeleton.component.mjs +14 -17
- package/esm2022/skeleton/skeleton.module.mjs +6 -10
- package/esm2022/skeleton/skeleton.property.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +38 -39
- package/esm2022/slider/slider.module.mjs +7 -13
- package/esm2022/slider/slider.property.mjs +3 -3
- package/esm2022/slider-select/slider-select.component.mjs +46 -38
- package/esm2022/slider-select/slider-select.module.mjs +6 -38
- package/esm2022/slider-select/slider-select.property.mjs +3 -3
- package/esm2022/statistic/countdown.component.mjs +15 -16
- package/esm2022/statistic/statistic.component.mjs +13 -14
- package/esm2022/statistic/statistic.module.mjs +6 -11
- package/esm2022/statistic/statistic.property.mjs +6 -6
- package/esm2022/steps/steps.component.mjs +17 -22
- package/esm2022/steps/steps.module.mjs +6 -11
- package/esm2022/steps/steps.property.mjs +3 -3
- package/esm2022/switch/switch.component.mjs +18 -18
- package/esm2022/switch/switch.module.mjs +6 -13
- package/esm2022/switch/switch.property.mjs +3 -3
- package/esm2022/table/table-body.component.mjs +23 -13
- package/esm2022/table/table-foot.component.mjs +12 -16
- package/esm2022/table/table-head.component.mjs +35 -31
- package/esm2022/table/table.component.mjs +22 -13
- package/esm2022/table/table.module.mjs +6 -71
- package/esm2022/table/table.property.mjs +12 -12
- package/esm2022/tabs/tab-content.component.mjs +13 -11
- package/esm2022/tabs/tab-link.directive.mjs +11 -9
- package/esm2022/tabs/tab.component.mjs +11 -11
- package/esm2022/tabs/tabs.component.mjs +28 -27
- package/esm2022/tabs/tabs.module.mjs +7 -28
- package/esm2022/tabs/tabs.property.mjs +6 -6
- package/esm2022/tag/tag.component.mjs +16 -20
- package/esm2022/tag/tag.module.mjs +6 -11
- package/esm2022/tag/tag.property.mjs +3 -3
- package/esm2022/text-retract/text-retract.component.mjs +16 -19
- package/esm2022/text-retract/text-retract.module.mjs +6 -12
- package/esm2022/text-retract/text-retract.property.mjs +3 -3
- package/esm2022/textarea/textarea.component.mjs +24 -25
- package/esm2022/textarea/textarea.module.mjs +6 -12
- package/esm2022/textarea/textarea.property.mjs +3 -3
- package/esm2022/theme/theme.component.mjs +42 -31
- package/esm2022/theme/theme.module.mjs +6 -42
- package/esm2022/theme/theme.property.mjs +3 -3
- package/esm2022/time-ago/time-ago.module.mjs +6 -8
- package/esm2022/time-ago/time-ago.pipe.mjs +21 -21
- package/esm2022/time-picker/time-picker-frame.component.mjs +30 -30
- package/esm2022/time-picker/time-picker-portal.component.mjs +18 -20
- package/esm2022/time-picker/time-picker.component.mjs +40 -41
- package/esm2022/time-picker/time-picker.module.mjs +7 -48
- package/esm2022/time-picker/time-picker.property.mjs +3 -3
- package/esm2022/time-range/time-range.module.mjs +7 -7
- package/esm2022/time-range/time-range.pipe.mjs +5 -5
- package/esm2022/timeline/timeline.component.mjs +17 -20
- package/esm2022/timeline/timeline.module.mjs +6 -13
- package/esm2022/timeline/timeline.property.mjs +3 -3
- package/esm2022/tooltip/tooltip-portal.component.mjs +16 -16
- package/esm2022/tooltip/tooltip.directive.mjs +16 -19
- package/esm2022/tooltip/tooltip.module.mjs +7 -13
- package/esm2022/tooltip/tooltip.property.mjs +3 -3
- package/esm2022/transfer/transfer.component.mjs +70 -55
- package/esm2022/transfer/transfer.module.mjs +6 -59
- package/esm2022/transfer/transfer.property.mjs +3 -3
- package/esm2022/tree/tree-node.component.mjs +36 -30
- package/esm2022/tree/tree.component.mjs +12 -16
- package/esm2022/tree/tree.module.mjs +6 -43
- package/esm2022/tree/tree.property.mjs +6 -6
- package/esm2022/tree/tree.service.mjs +6 -5
- package/esm2022/tree-file/tree-file.component.mjs +34 -31
- package/esm2022/tree-file/tree-file.module.mjs +6 -15
- package/esm2022/tree-file/tree-file.property.mjs +3 -3
- package/esm2022/tree-select/tree-select-portal.component.mjs +24 -26
- package/esm2022/tree-select/tree-select.component.mjs +52 -51
- package/esm2022/tree-select/tree-select.module.mjs +8 -56
- package/esm2022/tree-select/tree-select.property.mjs +3 -3
- package/esm2022/typography/typography.component.mjs +12 -12
- package/esm2022/typography/typography.module.mjs +6 -9
- package/esm2022/typography/typography.property.mjs +3 -3
- package/esm2022/upload/upload-portal.component.mjs +11 -12
- package/esm2022/upload/upload.component.mjs +42 -43
- package/esm2022/upload/upload.module.mjs +6 -55
- package/esm2022/upload/upload.property.mjs +3 -3
- package/examples/examples.component.d.ts +6 -6
- package/examples/examples.module.d.ts +1 -2
- package/fesm2022/ng-nest-ui-affix.mjs +18 -21
- package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-alert.mjs +25 -32
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +32 -37
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +18 -18
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +65 -57
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +33 -38
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +30 -39
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +25 -32
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +19 -14
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-border.mjs +18 -16
- package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +40 -49
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +44 -44
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-card.mjs +21 -28
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +62 -68
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +58 -58
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +37 -39
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +36 -47
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +84 -106
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +22 -28
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +51 -83
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +80 -114
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +24 -18
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +22 -30
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +277 -326
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +28 -35
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +193 -242
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +16 -16
- package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +19 -20
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drawer.mjs +128 -149
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +33 -38
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +26 -31
- package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-examples.mjs +16 -16
- package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +55 -86
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +98 -126
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +33 -33
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +29 -29
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +62 -64
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +69 -75
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +21 -24
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +31 -38
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +51 -60
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +22 -24
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +35 -41
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +24 -31
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +63 -100
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +26 -34
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +42 -54
- package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message-box.mjs +38 -66
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message.mjs +26 -37
- package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-notification.mjs +28 -35
- package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-outlet.mjs +14 -16
- package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-page-header.mjs +25 -30
- package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pagination.mjs +43 -47
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +16 -16
- package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popconfirm.mjs +30 -40
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +39 -44
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +26 -26
- package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-progress.mjs +22 -29
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +28 -38
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +29 -34
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +67 -57
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +22 -30
- package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +20 -21
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +66 -100
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +21 -27
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +53 -73
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +46 -52
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +34 -40
- package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-steps.mjs +24 -33
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +25 -30
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +111 -154
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +67 -79
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +23 -31
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +22 -30
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +31 -36
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +49 -71
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-ago.mjs +24 -26
- package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +89 -127
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +10 -10
- package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +24 -33
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +38 -44
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +76 -111
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +41 -46
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +83 -126
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +60 -89
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +19 -21
- package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +58 -106
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/find/find.component.d.ts +6 -8
- package/find/find.module.d.ts +1 -13
- package/form/control.component.d.ts +6 -7
- package/form/form.component.d.ts +5 -8
- package/form/form.module.d.ts +1 -24
- package/highlight/highlight.component.d.ts +12 -10
- package/highlight/highlight.module.d.ts +1 -4
- package/i18n/i18n.directive.d.ts +6 -7
- package/i18n/i18n.module.d.ts +1 -1
- package/i18n/i18n.pipe.d.ts +1 -1
- package/i18n/i18n.service.d.ts +3 -2
- package/icon/icon.component.d.ts +7 -9
- package/icon/icon.module.d.ts +1 -3
- package/icon/icon.property.d.ts +1 -1
- package/icon/icon.service.d.ts +6 -7
- package/image/image-group.component.d.ts +3 -1
- package/image/image-preview.component.d.ts +5 -10
- package/image/image.component.d.ts +9 -14
- package/image/image.module.d.ts +3 -11
- package/inner/inner.component.d.ts +2 -3
- package/inner/inner.module.d.ts +1 -3
- package/input/input-group.component.d.ts +3 -6
- package/input/input.component.d.ts +8 -10
- package/input/input.module.d.ts +2 -8
- package/input-number/input-number.component.d.ts +5 -6
- package/input-number/input-number.module.d.ts +1 -7
- package/keyword/keyword.directive.d.ts +3 -4
- package/keyword/keyword.module.d.ts +1 -3
- package/keyword/keyword.property.d.ts +1 -1
- package/layout/col.component.d.ts +5 -7
- package/layout/layout.module.d.ts +1 -3
- package/layout/row.component.d.ts +3 -4
- package/link/link.component.d.ts +5 -7
- package/link/link.module.d.ts +1 -6
- package/list/list-drop-group.directive.d.ts +1 -1
- package/list/list-option.component.d.ts +6 -7
- package/list/list.component.d.ts +9 -12
- package/list/list.module.d.ts +1 -13
- package/loading/loading.component.d.ts +7 -10
- package/loading/loading.module.d.ts +1 -6
- package/menu/menu-node.component.d.ts +6 -7
- package/menu/menu.component.d.ts +4 -8
- package/menu/menu.module.d.ts +1 -7
- package/message/message.component.d.ts +3 -7
- package/message/message.module.d.ts +1 -5
- package/message/message.service.d.ts +4 -5
- package/message-box/message-box.component.d.ts +1 -1
- package/message-box/message-box.module.d.ts +1 -11
- package/message-box/message-box.service.d.ts +2 -5
- package/notification/notification.component.d.ts +3 -7
- package/notification/notification.module.d.ts +1 -5
- package/notification/notification.service.d.ts +1 -3
- package/outlet/outlet.directive.d.ts +4 -5
- package/outlet/outlet.module.d.ts +1 -2
- package/package.json +36 -36
- package/page-header/page-header.component.d.ts +5 -7
- package/page-header/page-header.module.d.ts +1 -4
- package/pagination/pagination.component.d.ts +8 -11
- package/pagination/pagination.module.d.ts +1 -9
- package/pattern/pattern.component.d.ts +4 -4
- package/pattern/pattern.module.d.ts +1 -2
- package/popconfirm/popconfirm.component.d.ts +6 -9
- package/popconfirm/popconfirm.module.d.ts +1 -7
- package/popover/popover-portal.component.d.ts +4 -5
- package/popover/popover.directive.d.ts +9 -10
- package/popover/popover.module.d.ts +1 -6
- package/portal/portal.module.d.ts +1 -3
- package/portal/portal.service.d.ts +3 -4
- package/progress/progress.component.d.ts +3 -7
- package/progress/progress.module.d.ts +1 -5
- package/radio/radio.component.d.ts +6 -9
- package/radio/radio.module.d.ts +1 -8
- package/rate/rate.component.d.ts +6 -8
- package/rate/rate.module.d.ts +1 -7
- package/resizable/resizable.directive.d.ts +5 -7
- package/resizable/resizable.module.d.ts +1 -2
- package/resizable/resizable.property.d.ts +1 -1
- package/result/result.component.d.ts +3 -7
- package/result/result.module.d.ts +1 -5
- package/ripple/ripple.directive.d.ts +4 -5
- package/ripple/ripple.module.d.ts +1 -3
- package/select/select-portal.component.d.ts +1 -1
- package/select/select.component.d.ts +14 -15
- package/select/select.module.d.ts +1 -12
- package/skeleton/skeleton.component.d.ts +3 -6
- package/skeleton/skeleton.module.d.ts +1 -4
- package/slider/slider.component.d.ts +5 -8
- package/slider/slider.module.d.ts +1 -7
- package/slider-select/slider-select.component.d.ts +6 -7
- package/slider-select/slider-select.module.d.ts +1 -9
- package/statistic/countdown.component.d.ts +6 -7
- package/statistic/statistic.component.d.ts +2 -3
- package/statistic/statistic.module.d.ts +1 -5
- package/steps/steps.component.d.ts +4 -8
- package/steps/steps.module.d.ts +1 -5
- package/style/core/index.css +1 -1
- package/style/params/colors.scss +1 -1
- package/switch/switch.component.d.ts +6 -7
- package/switch/switch.module.d.ts +1 -7
- package/table/table-body.component.d.ts +1 -1
- package/table/table-foot.component.d.ts +3 -6
- package/table/table-head.component.d.ts +5 -8
- package/table/table.component.d.ts +1 -1
- package/table/table.module.d.ts +4 -17
- package/tabs/tab-content.component.d.ts +6 -6
- package/tabs/tab-link.directive.d.ts +2 -2
- package/tabs/tab.component.d.ts +2 -3
- package/tabs/tabs.component.d.ts +8 -9
- package/tabs/tabs.module.d.ts +3 -9
- package/tag/tag.component.d.ts +4 -8
- package/tag/tag.module.d.ts +1 -5
- package/text-retract/text-retract.component.d.ts +6 -10
- package/text-retract/text-retract.module.d.ts +1 -6
- package/textarea/textarea.component.d.ts +5 -7
- package/textarea/textarea.module.d.ts +1 -6
- package/theme/theme.component.d.ts +8 -9
- package/theme/theme.module.d.ts +1 -10
- package/time-ago/time-ago.module.d.ts +1 -1
- package/time-ago/time-ago.pipe.d.ts +6 -9
- package/time-picker/time-picker-frame.component.d.ts +5 -6
- package/time-picker/time-picker-portal.component.d.ts +5 -7
- package/time-picker/time-picker.component.d.ts +14 -16
- package/time-picker/time-picker.module.d.ts +2 -13
- package/time-range/time-range.module.d.ts +1 -1
- package/time-range/time-range.pipe.d.ts +1 -1
- package/timeline/timeline.component.d.ts +5 -8
- package/timeline/timeline.module.d.ts +1 -7
- package/tooltip/tooltip-portal.component.d.ts +4 -5
- package/tooltip/tooltip.directive.d.ts +8 -9
- package/tooltip/tooltip.module.d.ts +1 -6
- package/transfer/transfer.component.d.ts +6 -9
- package/transfer/transfer.module.d.ts +1 -15
- package/tree/tree-node.component.d.ts +6 -10
- package/tree/tree.component.d.ts +1 -1
- package/tree/tree.module.d.ts +1 -11
- package/tree-file/tree-file.component.d.ts +5 -10
- package/tree-file/tree-file.module.d.ts +1 -9
- package/tree-select/tree-select-portal.component.d.ts +5 -7
- package/tree-select/tree-select.component.d.ts +14 -15
- package/tree-select/tree-select.module.d.ts +1 -14
- package/typography/typography.component.d.ts +3 -4
- package/typography/typography.module.d.ts +1 -3
- package/upload/upload-portal.component.d.ts +5 -7
- package/upload/upload.component.d.ts +12 -16
- package/upload/upload.module.d.ts +1 -14
|
@@ -1,21 +1,52 @@
|
|
|
1
|
-
import { XPortalConnectedPosition } from '@ng-nest/ui/portal';
|
|
1
|
+
import { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';
|
|
2
2
|
import { Subject, fromEvent } from 'rxjs';
|
|
3
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, inject } from '@angular/core';
|
|
3
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Renderer2, ElementRef, ViewContainerRef, ViewChild, inject } from '@angular/core';
|
|
4
4
|
import { XDateRangePrefix, XDateRangeProperty } from './date-picker.property';
|
|
5
|
-
import { XIsEmpty, XIsDate, XIsNumber, XIsChange, XClearClass, XIsString, XIsNull, XDateYearWeek, XDateYearQuarter, XParents } from '@ng-nest/ui/core';
|
|
6
|
-
import {
|
|
5
|
+
import { XIsEmpty, XIsDate, XIsNumber, XIsChange, XClearClass, XIsString, XConfigService, XIsNull, XDateYearWeek, XDateYearQuarter, XParents } from '@ng-nest/ui/core';
|
|
6
|
+
import { XInputComponent, XInputGroupComponent } from '@ng-nest/ui/input';
|
|
7
|
+
import { DOCUMENT, DatePipe, NgClass } from '@angular/common';
|
|
8
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
7
9
|
import { filter, map, takeUntil } from 'rxjs/operators';
|
|
8
10
|
import { XValueAccessor } from '@ng-nest/ui/base-form';
|
|
9
11
|
import { XDateRangePortalComponent } from './date-range-portal.component';
|
|
12
|
+
import { XI18nService } from '@ng-nest/ui/i18n';
|
|
13
|
+
import { FormsModule } from '@angular/forms';
|
|
10
14
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@
|
|
12
|
-
import * as i2 from "@ng-nest/ui/portal";
|
|
13
|
-
import * as i3 from "@angular/common";
|
|
14
|
-
import * as i4 from "@angular/cdk/overlay";
|
|
15
|
-
import * as i5 from "@ng-nest/ui/i18n";
|
|
16
|
-
import * as i6 from "@angular/forms";
|
|
17
|
-
import * as i7 from "@ng-nest/ui/input";
|
|
15
|
+
import * as i1 from "@angular/forms";
|
|
18
16
|
export class XDateRangeComponent extends XDateRangeProperty {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.modelType = 'date';
|
|
20
|
+
this.isInput = false;
|
|
21
|
+
this.showClearable = false;
|
|
22
|
+
this.enter = false;
|
|
23
|
+
this.inputClearable = false;
|
|
24
|
+
this.animating = false;
|
|
25
|
+
this.displayValue = [];
|
|
26
|
+
this.icon = 'fto-calendar';
|
|
27
|
+
this.maxNodes = 6;
|
|
28
|
+
this.protalTobottom = true;
|
|
29
|
+
this.valueChange = new Subject();
|
|
30
|
+
this.dataChange = new Subject();
|
|
31
|
+
this.positionChange = new Subject();
|
|
32
|
+
this.closeSubject = new Subject();
|
|
33
|
+
this.activeTypeChange = new Subject();
|
|
34
|
+
this.startDisplay = '';
|
|
35
|
+
this.endDisplay = '';
|
|
36
|
+
this.flexClass = [];
|
|
37
|
+
this.locale = {};
|
|
38
|
+
this._unSubject = new Subject();
|
|
39
|
+
this.document = inject(DOCUMENT);
|
|
40
|
+
this.renderer = inject(Renderer2);
|
|
41
|
+
this.elementRef = inject(ElementRef);
|
|
42
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
43
|
+
this.portalService = inject(XPortalService);
|
|
44
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
45
|
+
this.datePipe = inject(DatePipe);
|
|
46
|
+
this.overlay = inject(Overlay);
|
|
47
|
+
this.i18n = inject(XI18nService);
|
|
48
|
+
this.configService = inject(XConfigService);
|
|
49
|
+
}
|
|
19
50
|
get getStartPlaceholder() {
|
|
20
51
|
if (this.placeholder && this.placeholder.length > 0)
|
|
21
52
|
return this.placeholder[0];
|
|
@@ -82,39 +113,6 @@ export class XDateRangeComponent extends XDateRangeProperty {
|
|
|
82
113
|
this.valueChange.next(this.numberValue);
|
|
83
114
|
this.cdr.detectChanges();
|
|
84
115
|
}
|
|
85
|
-
constructor(renderer, elementRef, configService, cdr, portalService, viewContainerRef, datePipe, overlay, i18n) {
|
|
86
|
-
super();
|
|
87
|
-
this.renderer = renderer;
|
|
88
|
-
this.elementRef = elementRef;
|
|
89
|
-
this.configService = configService;
|
|
90
|
-
this.cdr = cdr;
|
|
91
|
-
this.portalService = portalService;
|
|
92
|
-
this.viewContainerRef = viewContainerRef;
|
|
93
|
-
this.datePipe = datePipe;
|
|
94
|
-
this.overlay = overlay;
|
|
95
|
-
this.i18n = i18n;
|
|
96
|
-
this.modelType = 'date';
|
|
97
|
-
this.isInput = false;
|
|
98
|
-
this.showClearable = false;
|
|
99
|
-
this.enter = false;
|
|
100
|
-
this.inputClearable = false;
|
|
101
|
-
this.animating = false;
|
|
102
|
-
this.displayValue = [];
|
|
103
|
-
this.icon = 'fto-calendar';
|
|
104
|
-
this.maxNodes = 6;
|
|
105
|
-
this.protalTobottom = true;
|
|
106
|
-
this.valueChange = new Subject();
|
|
107
|
-
this.dataChange = new Subject();
|
|
108
|
-
this.positionChange = new Subject();
|
|
109
|
-
this.closeSubject = new Subject();
|
|
110
|
-
this.activeTypeChange = new Subject();
|
|
111
|
-
this.startDisplay = '';
|
|
112
|
-
this.endDisplay = '';
|
|
113
|
-
this.flexClass = [];
|
|
114
|
-
this.locale = {};
|
|
115
|
-
this._unSubject = new Subject();
|
|
116
|
-
this.document = inject(DOCUMENT);
|
|
117
|
-
}
|
|
118
116
|
ngOnInit() {
|
|
119
117
|
this.setFlex(this.dateRange.nativeElement, this.renderer, this.justify, this.align, this.direction);
|
|
120
118
|
this.setHostTypeClass();
|
|
@@ -324,7 +322,8 @@ export class XDateRangeComponent extends XDateRangeProperty {
|
|
|
324
322
|
.pipe(takeUntil(this._unSubject))
|
|
325
323
|
.subscribe((event) => {
|
|
326
324
|
const clickTarget = event.target;
|
|
327
|
-
if (clickTarget !== this.inputStartCom.inputRef.nativeElement &&
|
|
325
|
+
if (clickTarget !== this.inputStartCom.inputRef.nativeElement &&
|
|
326
|
+
clickTarget !== this.inputEndCom.inputRef.nativeElement) {
|
|
328
327
|
this.closeSubject.next();
|
|
329
328
|
}
|
|
330
329
|
});
|
|
@@ -453,13 +452,13 @@ export class XDateRangeComponent extends XDateRangeProperty {
|
|
|
453
452
|
this.ngOnInit();
|
|
454
453
|
this.cdr.detectChanges();
|
|
455
454
|
}
|
|
456
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
457
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XDateRangeComponent, selector: "x-date-range", providers: [XValueAccessor(XDateRangeComponent), DatePipe], viewQueries: [{ propertyName: "dateRange", first: true, predicate: ["dateRange"], descendants: true, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, static: true }, { propertyName: "inputStartCom", first: true, predicate: ["inputStartCom"], descendants: true, static: true }, { propertyName: "inputEndCom", first: true, predicate: ["inputEndCom"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n <label *ngIf=\"label\" [class.x-date-range-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-date-range-row\">\r\n <x-input-group #inputGroup class=\"x-date-range-group\" (mouseenter)=\"menter()\" (mouseleave)=\"mleave()\" (click)=\"showPortal($event)\">\r\n <x-input\r\n #inputStartCom\r\n class=\"x-data-range-input x-data-range-input-start\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getStartPlaceholder\"\r\n (xFocus)=\"onFocus('start')\"\r\n (xClick)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n icon=\"fto-arrow-right\"\r\n ></x-input>\r\n <x-input\r\n #inputEndCom\r\n class=\"x-data-range-input x-data-range-input-end\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getEndPlaceholder\"\r\n (xFocus)=\"onFocus('end')\"\r\n (xClick)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n [icon]=\"icon\"\r\n (clearEmit)=\"clearEmit()\"\r\n [clearable]=\"showClearable\"\r\n ></x-input>\r\n <div *ngIf=\"active\" class=\"x-date-range-active-bar\"></div>\r\n </x-input-group>\r\n <span class=\"x-date-range-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block;width:15.6rem}x-date-range.x-date-range-date-time{width:23rem}x-date-range.x-date-range-date-minute{width:21rem}x-date-range.x-date-range-date-hour{width:19rem}.x-date-range{margin:0;padding:0;width:100%}.x-date-range.x-flex{display:flex}.x-date-range.x-justify-start{justify-content:flex-start}.x-date-range.x-justify-center{justify-content:center}.x-date-range.x-justify-end{justify-content:flex-end}.x-date-range.x-justify-space-between{justify-content:space-between}.x-date-range.x-justify-space-around{justify-content:space-around}.x-date-range.x-align-start{align-items:flex-start}.x-date-range.x-align-center{align-items:center}.x-date-range.x-align-end{align-items:flex-end}.x-date-range.x-direction-column{flex-direction:column}.x-date-range.x-direction-column-reverse{flex-direction:column-reverse}.x-date-range.x-direction-row{flex-direction:row}.x-date-range.x-direction-row-reverse{flex-direction:row-reverse}.x-date-range>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-date-range>label.x-text-align-start{text-align:start}.x-date-range>label.x-text-align-center{text-align:center}.x-date-range>label.x-text-align-end{text-align:end}.x-date-range.x-direction-row>label{padding:0 .5rem 0 0}.x-date-range.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-date-range.x-direction-column,.x-date-range.x-direction-column-reverse{align-items:inherit}.x-date-range-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-date-range-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-date-range.x-invalid>label,.x-date-range.x-required>label{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-input x-icon,.x-date-range.x-required .x-date-range-input x-icon{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error,.x-date-range.x-required .x-date-range-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range-row{flex:1;display:flex;align-items:center;position:relative}.x-date-range-group{width:100%;font-size:var(--x-font-size);background-image:none;box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center;position:relative}.x-date-range-group .x-input-group>x-input{flex:1;width:50%}.x-date-range-group .x-input-group>x-input input{padding-left:.4rem!important;padding-right:.4rem!important}.x-date-range-bordered .x-date-range-group{border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius)}.x-date-range-bordered .x-date-range-group .x-input-group>x-input input{background-color:transparent;border-radius:0}.x-date-range-bordered:not(.x-disabled) .x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active-bar{position:absolute;height:.125rem;margin-left:.4rem;bottom:-.0625rem;width:calc(50% - 2.2rem);background-color:var(--x-primary);transition:var(--x-animation-duration-base)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}.x-date-range-active-start .x-date-range-active-bar{left:0}.x-date-range-active-end .x-date-range-active-bar{left:50%}.x-date-range-big>.x-date-range-row .x-date-range-input input{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>.x-date-range-row{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-large>.x-date-range-row .x-date-range-input input{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>.x-date-range-row{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-medium>.x-date-range-row .x-date-range-input input{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>.x-date-range-row{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-small>.x-date-range-row .x-date-range-input input{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>.x-date-range-row{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-mini>.x-date-range-row .x-date-range-input input{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>.x-date-range-row{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.XInputComponent, selector: "x-input" }, { kind: "component", type: i7.XInputGroupComponent, selector: "x-input-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
455
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XDateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
456
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: XDateRangeComponent, isStandalone: true, selector: "x-date-range", providers: [XValueAccessor(XDateRangeComponent), DatePipe], viewQueries: [{ propertyName: "dateRange", first: true, predicate: ["dateRange"], descendants: true, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, static: true }, { propertyName: "inputStartCom", first: true, predicate: ["inputStartCom"], descendants: true, static: true }, { propertyName: "inputEndCom", first: true, predicate: ["inputEndCom"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n @if (label) {\r\n <label [class.x-date-range-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{\r\n label\r\n }}</label>\r\n }\r\n <div class=\"x-date-range-row\">\r\n <x-input-group\r\n #inputGroup\r\n class=\"x-date-range-group\"\r\n (mouseenter)=\"menter()\"\r\n (mouseleave)=\"mleave()\"\r\n (click)=\"showPortal($event)\"\r\n >\r\n <x-input\r\n #inputStartCom\r\n class=\"x-data-range-input x-data-range-input-start\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getStartPlaceholder\"\r\n (xFocus)=\"onFocus('start')\"\r\n (xClick)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n icon=\"fto-arrow-right\"\r\n ></x-input>\r\n <x-input\r\n #inputEndCom\r\n class=\"x-data-range-input x-data-range-input-end\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getEndPlaceholder\"\r\n (xFocus)=\"onFocus('end')\"\r\n (xClick)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n [icon]=\"icon\"\r\n (clearEmit)=\"clearEmit()\"\r\n [clearable]=\"showClearable\"\r\n ></x-input>\r\n @if (active) {\r\n <div class=\"x-date-range-active-bar\"></div>\r\n }\r\n </x-input-group>\r\n @if (invalid) {\r\n <span class=\"x-date-range-error-message\">{{ invalidMessage }}</span>\r\n }\r\n @if (requiredIsEmpty || invalid) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block;width:15.6rem}x-date-range.x-date-range-date-time{width:23rem}x-date-range.x-date-range-date-minute{width:21rem}x-date-range.x-date-range-date-hour{width:19rem}.x-date-range{margin:0;padding:0;width:100%}.x-date-range.x-flex{display:flex}.x-date-range.x-justify-start{justify-content:flex-start}.x-date-range.x-justify-center{justify-content:center}.x-date-range.x-justify-end{justify-content:flex-end}.x-date-range.x-justify-space-between{justify-content:space-between}.x-date-range.x-justify-space-around{justify-content:space-around}.x-date-range.x-align-start{align-items:flex-start}.x-date-range.x-align-center{align-items:center}.x-date-range.x-align-end{align-items:flex-end}.x-date-range.x-direction-column{flex-direction:column}.x-date-range.x-direction-column-reverse{flex-direction:column-reverse}.x-date-range.x-direction-row{flex-direction:row}.x-date-range.x-direction-row-reverse{flex-direction:row-reverse}.x-date-range>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-date-range>label.x-text-align-start{text-align:start}.x-date-range>label.x-text-align-center{text-align:center}.x-date-range>label.x-text-align-end{text-align:end}.x-date-range.x-direction-row>label{padding:0 .5rem 0 0}.x-date-range.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-date-range.x-direction-column,.x-date-range.x-direction-column-reverse{align-items:inherit}.x-date-range-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-date-range-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-date-range.x-invalid>label,.x-date-range.x-required>label{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-input x-icon,.x-date-range.x-required .x-date-range-input x-icon{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error,.x-date-range.x-required .x-date-range-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range-row{flex:1;display:flex;align-items:center;position:relative}.x-date-range-group{width:100%;font-size:var(--x-font-size);background-image:none;box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center;position:relative}.x-date-range-group .x-input-group>x-input{flex:1;width:50%}.x-date-range-group .x-input-group>x-input input{padding-left:.4rem!important;padding-right:.4rem!important}.x-date-range-bordered .x-date-range-group{border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius)}.x-date-range-bordered .x-date-range-group .x-input-group>x-input input{background-color:transparent;border-radius:0}.x-date-range-bordered:not(.x-disabled) .x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active-bar{position:absolute;height:.125rem;margin-left:.4rem;bottom:-.0625rem;width:calc(50% - 2.2rem);background-color:var(--x-primary);transition:var(--x-animation-duration-base)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}.x-date-range-active-start .x-date-range-active-bar{left:0}.x-date-range-active-end .x-date-range-active-bar{left:50%}.x-date-range-big>.x-date-range-row .x-date-range-input input{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>.x-date-range-row{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-large>.x-date-range-row .x-date-range-input input{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>.x-date-range-row{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-medium>.x-date-range-row .x-date-range-input input{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>.x-date-range-row{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-small>.x-date-range-row .x-date-range-input input{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>.x-date-range-row{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-mini>.x-date-range-row .x-date-range-input input{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>.x-date-range-row{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XInputGroupComponent, selector: "x-input-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
458
457
|
}
|
|
459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
458
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XDateRangeComponent, decorators: [{
|
|
460
459
|
type: Component,
|
|
461
|
-
args: [{ selector: `${XDateRangePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XDateRangeComponent), DatePipe], template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n
|
|
462
|
-
}],
|
|
460
|
+
args: [{ selector: `${XDateRangePrefix}`, standalone: true, imports: [NgClass, FormsModule, XInputComponent, XInputGroupComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XDateRangeComponent), DatePipe], template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n @if (label) {\r\n <label [class.x-date-range-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{\r\n label\r\n }}</label>\r\n }\r\n <div class=\"x-date-range-row\">\r\n <x-input-group\r\n #inputGroup\r\n class=\"x-date-range-group\"\r\n (mouseenter)=\"menter()\"\r\n (mouseleave)=\"mleave()\"\r\n (click)=\"showPortal($event)\"\r\n >\r\n <x-input\r\n #inputStartCom\r\n class=\"x-data-range-input x-data-range-input-start\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getStartPlaceholder\"\r\n (xFocus)=\"onFocus('start')\"\r\n (xClick)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n icon=\"fto-arrow-right\"\r\n ></x-input>\r\n <x-input\r\n #inputEndCom\r\n class=\"x-data-range-input x-data-range-input-end\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getEndPlaceholder\"\r\n (xFocus)=\"onFocus('end')\"\r\n (xClick)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n [icon]=\"icon\"\r\n (clearEmit)=\"clearEmit()\"\r\n [clearable]=\"showClearable\"\r\n ></x-input>\r\n @if (active) {\r\n <div class=\"x-date-range-active-bar\"></div>\r\n }\r\n </x-input-group>\r\n @if (invalid) {\r\n <span class=\"x-date-range-error-message\">{{ invalidMessage }}</span>\r\n }\r\n @if (requiredIsEmpty || invalid) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block;width:15.6rem}x-date-range.x-date-range-date-time{width:23rem}x-date-range.x-date-range-date-minute{width:21rem}x-date-range.x-date-range-date-hour{width:19rem}.x-date-range{margin:0;padding:0;width:100%}.x-date-range.x-flex{display:flex}.x-date-range.x-justify-start{justify-content:flex-start}.x-date-range.x-justify-center{justify-content:center}.x-date-range.x-justify-end{justify-content:flex-end}.x-date-range.x-justify-space-between{justify-content:space-between}.x-date-range.x-justify-space-around{justify-content:space-around}.x-date-range.x-align-start{align-items:flex-start}.x-date-range.x-align-center{align-items:center}.x-date-range.x-align-end{align-items:flex-end}.x-date-range.x-direction-column{flex-direction:column}.x-date-range.x-direction-column-reverse{flex-direction:column-reverse}.x-date-range.x-direction-row{flex-direction:row}.x-date-range.x-direction-row-reverse{flex-direction:row-reverse}.x-date-range>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-date-range>label.x-text-align-start{text-align:start}.x-date-range>label.x-text-align-center{text-align:center}.x-date-range>label.x-text-align-end{text-align:end}.x-date-range.x-direction-row>label{padding:0 .5rem 0 0}.x-date-range.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-date-range.x-direction-column,.x-date-range.x-direction-column-reverse{align-items:inherit}.x-date-range-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-date-range-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-date-range.x-invalid>label,.x-date-range.x-required>label{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-input x-icon,.x-date-range.x-required .x-date-range-input x-icon{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error,.x-date-range.x-required .x-date-range-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range-row{flex:1;display:flex;align-items:center;position:relative}.x-date-range-group{width:100%;font-size:var(--x-font-size);background-image:none;box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center;position:relative}.x-date-range-group .x-input-group>x-input{flex:1;width:50%}.x-date-range-group .x-input-group>x-input input{padding-left:.4rem!important;padding-right:.4rem!important}.x-date-range-bordered .x-date-range-group{border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius)}.x-date-range-bordered .x-date-range-group .x-input-group>x-input input{background-color:transparent;border-radius:0}.x-date-range-bordered:not(.x-disabled) .x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active-bar{position:absolute;height:.125rem;margin-left:.4rem;bottom:-.0625rem;width:calc(50% - 2.2rem);background-color:var(--x-primary);transition:var(--x-animation-duration-base)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}.x-date-range-active-start .x-date-range-active-bar{left:0}.x-date-range-active-end .x-date-range-active-bar{left:50%}.x-date-range-big>.x-date-range-row .x-date-range-input input{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>.x-date-range-row{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-large>.x-date-range-row .x-date-range-input input{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>.x-date-range-row{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-medium>.x-date-range-row .x-date-range-input input{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>.x-date-range-row{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-small>.x-date-range-row .x-date-range-input input{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>.x-date-range-row{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-mini>.x-date-range-row .x-date-range-input input{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>.x-date-range-row{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}\n"] }]
|
|
461
|
+
}], propDecorators: { dateRange: [{
|
|
463
462
|
type: ViewChild,
|
|
464
463
|
args: ['dateRange', { static: true }]
|
|
465
464
|
}], inputGroup: [{
|
|
@@ -472,4 +471,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
|
|
|
472
471
|
type: ViewChild,
|
|
473
472
|
args: ['inputEndCom', { static: true }]
|
|
474
473
|
}] } });
|
|
475
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2RhdGUtcGlja2VyL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU12QixTQUFTLEVBRVQsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRyxPQUFPLEVBQ0wsUUFBUSxFQUNSLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBRVQsT0FBTyxFQUNQLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7OztBQVcxRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBV3pELElBQUksbUJBQW1CO1FBQ3JCLElBQUksSUFBSSxDQUFDLFdB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QVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEYsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO2lJQS9jVSxtQkFBbUI7cUhBQW5CLG1CQUFtQix1Q0FGbkIsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBRSxRQUFRLENBQUMsK2ZDN0M1RCw2ekVBd0RBOzsyRkRUYSxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsR0FBRyxnQkFBZ0IsRUFBRSxpQkFHaEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMscUJBQXFCLEVBQUUsUUFBUSxDQUFDO3dTQUdoQixTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNLLGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDQSxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYUG9ydGFsU2VydmljZSwgWFBvcnRhbE92ZXJsYXlSZWYsIFhQb3J0YWxDb25uZWN0ZWRQb3NpdGlvbiB9IGZyb20gJ0BuZy1uZXN0L3VpL3BvcnRhbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhEYXRlUGlja2VyTW9kZWxUeXBlLCBYRGF0ZVJhbmdlUHJlZml4LCBYRGF0ZVJhbmdlUHJvcGVydHkgfSBmcm9tICcuL2RhdGUtcGlja2VyLnByb3BlcnR5JztcclxuaW1wb3J0IHtcclxuICBYSXNFbXB0eSxcclxuICBYSXNEYXRlLFxyXG4gIFhJc051bWJlcixcclxuICBYSXNDaGFuZ2UsXHJcbiAgWENvcm5lcixcclxuICBYQ2xlYXJDbGFzcyxcclxuICBYSXNTdHJpbmcsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWElzTnVsbCxcclxuICBYRGF0ZVllYXJXZWVrLFxyXG4gIFhEYXRlWWVhclF1YXJ0ZXIsXHJcbiAgWFBhcmVudHNcclxufSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWElucHV0Q29tcG9uZW50LCBYSW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWEkxOG5EYXRlUGlja2VyLCBYSTE4blNlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYRGF0ZVJhbmdlUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhEYXRlUmFuZ2VDb21wb25lbnQpLCBEYXRlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhEYXRlUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBYRGF0ZVJhbmdlUHJvcGVydHkgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVJhbmdlJywgeyBzdGF0aWM6IHRydWUgfSkgZGF0ZVJhbmdlITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRHcm91cCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0R3JvdXAhOiBYSW5wdXRHcm91cENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdpbnB1dFN0YXJ0Q29tJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRTdGFydENvbSE6IFhJbnB1dENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdpbnB1dEVuZENvbScsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RW5kQ29tITogWElucHV0Q29tcG9uZW50O1xyXG5cclxuICBtb2RlbFR5cGU6IFhEYXRlUGlja2VyTW9kZWxUeXBlID0gJ2RhdGUnO1xyXG4gIG51bWJlclZhbHVlITogKG51bWJlciB8IG51bGwpW107XHJcbiAgaXNJbnB1dCA9IGZhbHNlO1xyXG4gIHNob3dDbGVhcmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGdldFN0YXJ0UGxhY2Vob2xkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCA+IDApIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyWzBdO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRNb250aDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncXVhcnRlcicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnN0YXJ0UXVhcnRlcjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAneWVhcicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnN0YXJ0WWVhcjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnN0YXJ0V2VlaztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5zdGFydERhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0RW5kUGxhY2Vob2xkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCA+IDEpIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyWzFdO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuZW5kTW9udGg7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmRRdWFydGVyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuZW5kWWVhcjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmVuZFdlZWs7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuZW5kRGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIGdldCByZXF1aXJlZElzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IgJiYgdGhpcy5yZXF1aXJlZCAmJiBYSXNFbXB0eSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHZhbHVlKSkge1xyXG4gICAgICB2YWx1ZSA9IFtdO1xyXG4gICAgICB0aGlzLm51bWJlclZhbHVlID0gW107XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoWElzRGF0ZSh2YWx1ZVswXSkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsVHlwZSA9ICdkYXRlJztcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gdmFsdWUubWFwKCh4OiBEYXRlKSA9PiB4LmdldFRpbWUoKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoWElzTnVtYmVyKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gJ251bWJlcic7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKFhJc1N0cmluZyh2YWx1ZVswXSkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsVHlwZSA9ICdzdHJpbmcnO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlVGltZSA9IHZhbHVlLm1hcCgoeDogc3RyaW5nKSA9PiBuZXcgRGF0ZSh4KS5nZXRUaW1lKCkpO1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSAhaXNOYU4odmFsdWVUaW1lWzBdKSA/IHZhbHVlVGltZSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGVudGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaW5wdXRDbGVhcmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhbmltYXRpbmcgPSBmYWxzZTtcclxuICBkaXNwbGF5VmFsdWU6IHN0cmluZ1tdID0gW107XHJcbiAgcG9ydGFsITogWFBvcnRhbE92ZXJsYXlSZWY8WERhdGVSYW5nZVBvcnRhbENvbXBvbmVudD47XHJcbiAgaWNvbjogc3RyaW5nID0gJ2Z0by1jYWxlbmRhcic7XHJcbiAgYm94ITogRE9NUmVjdDtcclxuICBwcm90YWxIZWlnaHQhOiBudW1iZXI7XHJcbiAgbWF4Tm9kZXM6IG51bWJlciA9IDY7XHJcbiAgcHJvdGFsVG9ib3R0b206IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHZhbHVlQ2hhbmdlOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGRhdGFDaGFuZ2U6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcG9zaXRpb25DaGFuZ2U6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY2xvc2VTdWJqZWN0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBhY3RpdmVUeXBlQ2hhbmdlID0gbmV3IFN1YmplY3Q8J3N0YXJ0JyB8ICdlbmQnPigpO1xyXG4gIHN0YXJ0RGlzcGxheTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XHJcbiAgZW5kRGlzcGxheTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XHJcbiAgYWN0aXZlVHlwZT86ICdzdGFydCcgfCAnZW5kJztcclxuICBmbGV4Q2xhc3M6IHN0cmluZ1tdID0gW107XHJcbiAgbG9jYWxlOiBYSTE4bkRhdGVQaWNrZXIgPSB7fTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHBvcnRhbFNlcnZpY2U6IFhQb3J0YWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIGkxOG46IFhJMThuU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRGbGV4KHRoaXMuZGF0ZVJhbmdlLm5hdGl2ZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIsIHRoaXMuanVzdGlmeSwgdGhpcy5hbGlnbiwgdGhpcy5kaXJlY3Rpb24pO1xyXG4gICAgdGhpcy5zZXRIb3N0VHlwZUNsYXNzKCk7XHJcbiAgICB0aGlzLnNldEZvcm1hdCgpO1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gICAgdGhpcy5zZXRTdWJqZWN0KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldFBvcnRhbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyB0eXBlLCBqdXN0aWZ5LCBhbGlnbiwgZGlyZWN0aW9uLCBzaXplLCBsYWJlbEFsaWduIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKHNpemUsIGxhYmVsQWxpZ24pICYmIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICAgIFhJc0NoYW5nZShqdXN0aWZ5LCBhbGlnbiwgZGlyZWN0aW9uKSAmJiB0aGlzLnNldEZsZXhDbGFzcygpO1xyXG4gICAgaWYgKFhJc0NoYW5nZSh0eXBlKSkge1xyXG4gICAgICB0aGlzLnNldEZvcm1hdCgpO1xyXG4gICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3ViamVjdCgpIHtcclxuICAgIHRoaXMuY2xvc2VTdWJqZWN0LnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2xvc2VQb3J0YWwoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRGbGV4Q2xhc3MoKSB7XHJcbiAgICBpZiAodGhpcy5mbGV4Q2xhc3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBjbHMgb2YgdGhpcy5mbGV4Q2xhc3MpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZGF0ZVJhbmdlLm5hdGl2ZUVsZW1lbnQsIGNscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZmxleENsYXNzID0gdGhpcy5zZXRGbGV4KHRoaXMuZGF0ZVJhbmdlLm5hdGl2ZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIsIHRoaXMuanVzdGlmeSwgdGhpcy5hbGlnbiwgdGhpcy5kaXJlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0SG9zdFR5cGVDbGFzcygpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGB4LWRhdGUtcmFuZ2UtJHt0aGlzLnR5cGV9YCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYXJhbnRTY3JvbGwoKSB7XHJcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnQpIHJldHVybjtcclxuICAgIGNvbnN0IHBhcmVudHMgPSBYUGFyZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICBsZXQgZmlyc3RTY3JvbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIHBhcmVudHMpIHtcclxuICAgICAgaWYgKGl0ZW0uY2xpZW50SGVpZ2h0IDwgaXRlbS5zY3JvbGxIZWlnaHQpIHtcclxuICAgICAgICBmaXJzdFNjcm9sbCA9IGl0ZW07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChmaXJzdFNjcm9sbCAmJiBmaXJzdFNjcm9sbC50YWdOYW1lICE9PSAnQk9EWScpIHtcclxuICAgICAgZnJvbUV2ZW50KGZpcnN0U2Nyb2xsLCAnc2Nyb2xsJylcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnBvcnRhbEF0dGFjaGVkKCkhKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICAgICAgICBjb25zdCBlcmFjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgY29uc3QgZnJlY3QgPSBmaXJzdFNjcm9sbCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICBpZiAoZXJhY3QudG9wICsgZXJhY3QuaGVpZ2h0IC0gZnJlY3QudG9wIDwgMCB8fCBlcmFjdC5ib3R0b20gPiBmcmVjdC5ib3R0b20pIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybWF0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybWF0ICE9PSAneXl5eS1NTS1kZCcpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5LU1NLWRkJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAneWVhcicpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5LU1NJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnZGF0ZS10aW1lJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnZGF0ZS1ob3VyJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW0nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWVudGVyKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY2xlYXJhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLmVudGVyID0gdHJ1ZTtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy5udW1iZXJWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5pY29uID0gJyc7XHJcbiAgICAgIHRoaXMuc2hvd0NsZWFyYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1sZWF2ZSgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmNsZWFyYWJsZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lbnRlciA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuY2xlYXJhYmxlKSB7XHJcbiAgICAgIHRoaXMuaWNvbiA9ICdmdG8tY2FsZW5kYXInO1xyXG4gICAgICB0aGlzLnNob3dDbGVhcmFibGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJFbWl0KCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IFtdO1xyXG4gICAgdGhpcy5udW1iZXJWYWx1ZSA9IFtdO1xyXG4gICAgdGhpcy5zdGFydERpc3BsYXkgPSAnJztcclxuICAgIHRoaXMuZW5kRGlzcGxheSA9ICcnO1xyXG4gICAgdGhpcy5tbGVhdmUoKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWxpZGF0b3IoKTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UoKTtcclxuICAgIHRoaXMuaW5wdXRTdGFydENvbS5pbnB1dEZvY3VzKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkljb25DbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmljb24gPT09ICdmdG8teCcpIHtcclxuICAgICAgdGhpcy5jbGVhckVtaXQoKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbW9kZWxDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZ2V0VmFsdWUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsVHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgID8gdGhpcy5udW1iZXJWYWx1ZS5tYXAoKHgpID0+IG5ldyBEYXRlKHghKSlcclxuICAgICAgOiB0aGlzLm1vZGVsVHlwZSA9PT0gJ3N0cmluZydcclxuICAgICAgPyB0aGlzLm51bWJlclZhbHVlLm1hcCgoeCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oeCwgdGhpcy5mb3JtYXQpKVxyXG4gICAgICA6IHRoaXMubnVtYmVyVmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXROdW1iZXJWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsVHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgID8gdGhpcy52YWx1ZS5tYXAoKHg6IERhdGUpID0+IHguZ2V0VGltZSgpKVxyXG4gICAgICA6IHRoaXMubW9kZWxUeXBlID09PSAnc3RyaW5nJ1xyXG4gICAgICA/IHRoaXMudmFsdWUubWFwKCh4OiBzdHJpbmcpID0+IG5ldyBEYXRlKHgpLmdldFRpbWUoKSlcclxuICAgICAgOiB0aGlzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcG9ydGFsQXR0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVBvcnRhbCgpIHtcclxuICAgIGlmICh0aGlzLnBvcnRhbEF0dGFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LmRldGFjaCgpO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsb3NlUmVkdWN0aW9uKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbG9zZVJlZHVjdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5udW1iZXJWYWx1ZSB8fCB0aGlzLm51bWJlclZhbHVlLmxlbmd0aCA9PT0gMCB8fCB0aGlzLm51bWJlclZhbHVlLmluY2x1ZGVzKG51bGwpKSB7XHJcbiAgICAgIGlmICghdGhpcy52YWx1ZSB8fCB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSB0aGlzLmdldE51bWJlclZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5udW1iZXJWYWx1ZS5pbmNsdWRlcyhudWxsKSAmJiB0aGlzLnZhbHVlICYmICF0aGlzLnZhbHVlLmluY2x1ZGVzKG51bGwpKSB7XHJcbiAgICAgIGxldCBudW1iZXJWYWx1ZSA9IHRoaXMuZ2V0TnVtYmVyVmFsdWUoKTtcclxuICAgICAgaWYgKHRoaXMubnVtYmVyVmFsdWVbMF0gIT09IG51bWJlclZhbHVlWzBdIHx8IHRoaXMubnVtYmVyVmFsdWVbMV0gIT09IG51bWJlclZhbHVlWzFdKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IG51bWJlclZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95UG9ydGFsKCkge1xyXG4gICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG4gIHNob3dQb3J0YWwoJGV2ZW50OiBFdmVudCwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgdHlwZSAmJiAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmFuaW1hdGluZykgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmVUeXBlID0gdHlwZSB8fCAnc3RhcnQnO1xyXG4gICAgdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLm5leHQodGhpcy5hY3RpdmVUeXBlKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgY29uc3QgY29uZmlnOiBPdmVybGF5Q29uZmlnID0ge1xyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnJyxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5zZXRQbGFjZW1lbnQoKSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2V0UG9zaXRpb24oY29uZmlnKTtcclxuICAgIHRoaXMucG9ydGFsID0gdGhpcy5wb3J0YWxTZXJ2aWNlLmF0dGFjaCh7XHJcbiAgICAgIGNvbnRlbnQ6IFhEYXRlUmFuZ2VQb3J0YWxDb21wb25lbnQsXHJcbiAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcclxuICAgICAgb3ZlcmxheUNvbmZpZzogY29uZmlnXHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGFsLm92ZXJsYXlSZWZcclxuICAgICAgPy5vdXRzaWRlUG9pbnRlckV2ZW50cygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNsaWNrVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmIChjbGlja1RhcmdldCAhPT0gdGhpcy5pbnB1dFN0YXJ0Q29tLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQgJiYgY2xpY2tUYXJnZXQgIT09IHRoaXMuaW5wdXRFbmRDb20uaW5wdXRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNldEluc3RhbmNlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQb3NpdGlvbihjb25maWc6IE92ZXJsYXlDb25maWcpIHtcclxuICAgIGxldCBwb3NpdGlvbiA9IGNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcclxuICAgIHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHBvczogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBsYWNlID0gWFBvcnRhbENvbm5lY3RlZFBvc2l0aW9uLmdldChwb3MuY29ubmVjdGlvblBhaXIpIGFzIFhDb3JuZXI7XHJcbiAgICAgIHBsYWNlICE9PSB0aGlzLnBsYWNlbWVudCAmJiB0aGlzLnBvc2l0aW9uQ2hhbmdlLm5leHQocGxhY2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRJbnN0YW5jZSgpIHtcclxuICAgIGxldCBjb21wb25lbnRSZWYgPSB0aGlzLnBvcnRhbD8uY29tcG9uZW50UmVmO1xyXG4gICAgaWYgKCFjb21wb25lbnRSZWYpIHJldHVybjtcclxuICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlLCB7XHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMubnVtYmVyVmFsdWUsXHJcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXHJcbiAgICAgIHZhbHVlQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLFxyXG4gICAgICBwb3NpdGlvbkNoYW5nZTogdGhpcy5wb3NpdGlvbkNoYW5nZSxcclxuICAgICAgYWN0aXZlVHlwZTogdGhpcy5hY3RpdmVUeXBlLFxyXG4gICAgICBleHRyYUZvb3RlcjogdGhpcy5leHRyYUZvb3RlcixcclxuICAgICAgcHJlc2V0OiB0aGlzLnByZXNldCxcclxuICAgICAgYWN0aXZlVHlwZUNoYW5nZTogdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLFxyXG4gICAgICBkaXNhYmxlZERhdGU6IHRoaXMuZGlzYWJsZWREYXRlLFxyXG4gICAgICBkaXNhYmxlZFRpbWU6IHRoaXMuZGlzYWJsZWRUaW1lLFxyXG4gICAgICBjbG9zZVBvcnRhbDogKCkgPT4gdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpLFxyXG4gICAgICBkZXN0cm95UG9ydGFsOiAoKSA9PiB0aGlzLmRlc3Ryb3lQb3J0YWwoKSxcclxuICAgICAgbm9kZUVtaXQ6IChkYXRlczogRGF0ZVtdLCBjbG9zZSA9IHRydWUpID0+IHRoaXMub25Ob2RlQ2xpY2soZGF0ZXMsIGNsb3NlKSxcclxuICAgICAgc3RhcnROb2RlRW1pdDogKG5vZGU6IERhdGUsIGNsb3NlID0gZmFsc2UsIGlzRGF0ZVBpY2tlcjogYm9vbGVhbiA9IHRydWUpID0+IHRoaXMuc3RhcnROb2RlQ2xpY2sobm9kZSwgY2xvc2UsIGlzRGF0ZVBpY2tlciksXHJcbiAgICAgIGVuZE5vZGVFbWl0OiAobm9kZTogRGF0ZSwgY2xvc2UgPSBmYWxzZSwgaXNEYXRlUGlja2VyOiBib29sZWFuID0gdHJ1ZSkgPT4gdGhpcy5lbmROb2RlQ2xpY2sobm9kZSwgY2xvc2UsIGlzRGF0ZVBpY2tlciksXHJcbiAgICAgIGFuaW1hdGluZzogKGluZzogYm9vbGVhbikgPT4gKHRoaXMuYW5pbWF0aW5nID0gaW5nKVxyXG4gICAgfSk7XHJcbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnROb2RlQ2xpY2sobm9kZT86IERhdGUsIGNsb3NlID0gZmFsc2UsIGlzRGF0ZVBpY2tlcjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gIW5vZGVcclxuICAgICAgPyAnJ1xyXG4gICAgICA6IHRoaXMudHlwZSA9PT0gJ3dlZWsnXHJcbiAgICAgID8gWERhdGVZZWFyV2Vlayhub2RlKSFcclxuICAgICAgOiB0aGlzLnR5cGUgPT09ICdxdWFydGVyJ1xyXG4gICAgICA/IFhEYXRlWWVhclF1YXJ0ZXIobm9kZSkhXHJcbiAgICAgIDogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obm9kZSwgdGhpcy5mb3JtYXQpITtcclxuICAgIGlmICghY2xvc2UgJiYgaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbmRDb20uaW5wdXRGb2N1cygnYWZ0ZXInKTtcclxuICAgICAgdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLm5leHQoJ2VuZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZW5kTm9kZUNsaWNrKG5vZGU/OiBEYXRlLCBjbG9zZSA9IGZhbHNlLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmVuZERpc3BsYXkgPSAhbm9kZVxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogdGhpcy50eXBlID09PSAnd2VlaydcclxuICAgICAgPyBYRGF0ZVllYXJXZWVrKG5vZGUpIVxyXG4gICAgICA6IHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInXHJcbiAgICAgID8gWERhdGVZZWFyUXVhcnRlcihub2RlKSFcclxuICAgICAgOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShub2RlLCB0aGlzLmZvcm1hdCkhO1xyXG4gICAgaWYgKCFjbG9zZSAmJiBpc0RhdGVQaWNrZXIpIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXJ0Q29tLmlucHV0Rm9jdXMoJ2FmdGVyJyk7XHJcbiAgICAgIHRoaXMuYWN0aXZlVHlwZUNoYW5nZS5uZXh0KCdzdGFydCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlQ2xpY2soZGF0ZXM6IERhdGVbXSwgY2xvc2UgPSB0cnVlKSB7XHJcbiAgICB0aGlzLmlzSW5wdXQgPSBmYWxzZTtcclxuICAgIHRoaXMubnVtYmVyVmFsdWUgPSBkYXRlcy5tYXAoKHgpID0+IHguZ2V0VGltZSgpKTtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XHJcbiAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWxpZGF0b3IoKTtcclxuICAgIGlmIChjbG9zZSkge1xyXG4gICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KCkge1xyXG4gICAgdGhpcy5pc0lucHV0ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXModHlwZTogJ3N0YXJ0JyB8ICdlbmQnKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5hY3RpdmVDaGFuZ2UubmV4dCh0aGlzLmFjdGl2ZVR5cGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheVZhbHVlKGRhdGVOdW1iZXI6IChudW1iZXIgfCBudWxsKVtdKSB7XHJcbiAgICBpZiAoIWRhdGVOdW1iZXIpIHJldHVybjtcclxuICAgIGlmICghWElzTnVsbChkYXRlTnVtYmVyWzBdKSkge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IFhEYXRlWWVhcldlZWsoZGF0ZU51bWJlclswXSEpITtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWERhdGVZZWFyUXVhcnRlcihkYXRlTnVtYmVyWzBdISkhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZU51bWJlclswXSwgdGhpcy5mb3JtYXQpIGFzIHN0cmluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFYSXNOdWxsKGRhdGVOdW1iZXJbMV0pKSB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhEYXRlWWVhcldlZWsoZGF0ZU51bWJlclsxXSEpITtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhEYXRlWWVhclF1YXJ0ZXIoZGF0ZU51bWJlclsxXSEpITtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVuZERpc3BsYXkgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlTnVtYmVyWzFdLCB0aGlzLmZvcm1hdCkgYXMgc3RyaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQbGFjZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3J0YWxTZXJ2aWNlLnNldFBsYWNlbWVudCh7XHJcbiAgICAgIGVsZW1lbnRSZWY6IHRoaXMuaW5wdXRHcm91cC5lbGVtZW50UmVmLFxyXG4gICAgICBwbGFjZW1lbnQ6IFt0aGlzLnBsYWNlbWVudCBhcyBYQ29ybmVyLCAnYm90dG9tLXN0YXJ0JywgJ2JvdHRvbS1lbmQnLCAndG9wLXN0YXJ0JywgJ3RvcC1lbmQnXSxcclxuICAgICAgdHJhbnNmb3JtT3JpZ2luT246ICd4LWRhdGUtcmFuZ2UtcG9ydGFsJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQb3J0YWwoKSB7XHJcbiAgICB0aGlzLnBvcnRhbEF0dGFjaGVkKCkgJiYgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5zZXRQbGFjZW1lbnQoKSk7XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIFhDbGVhckNsYXNzKHRoaXMuY2xhc3NNYXAsIHRoaXMubGFiZWxNYXApO1xyXG4gICAgdGhpcy5jbGFzc01hcFtgJHtYRGF0ZVJhbmdlUHJlZml4fS0ke3RoaXMuc2l6ZX1gXSA9IHRoaXMuc2l6ZSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMubGFiZWxNYXBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbn1gXSA9IHRoaXMubGFiZWxBbGlnbiA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGZvcm1Db250cm9sQ2hhbmdlcygpIHtcclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICNkYXRlUmFuZ2VcclxuICBjbGFzcz1cIngtZGF0ZS1yYW5nZVwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIlxyXG4gIFtjbGFzcy54LWZsZXhdPVwianVzdGlmeSB8fCBhbGlnbiB8fCBkaXJlY3Rpb25cIlxyXG4gIFtjbGFzcy54LWNoZWNrZWRdPVwidmFsdWVcIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbY2xhc3MueC1yZXF1aXJlZF09XCJyZXF1aXJlZElzRW1wdHlcIlxyXG4gIFtjbGFzcy54LWludmFsaWRdPVwiaW52YWxpZFwiXHJcbiAgW2NsYXNzLngtZGF0ZS1yYW5nZS1ib3JkZXJlZF09XCJib3JkZXJlZFwiXHJcbiAgW2NsYXNzLngtZGF0ZS1yYW5nZS1hY3RpdmVdPVwiYWN0aXZlXCJcclxuICBbY2xhc3MueC1kYXRlLXJhbmdlLWFjdGl2ZS1zdGFydF09XCJhY3RpdmVUeXBlID09PSAnc3RhcnQnXCJcclxuICBbY2xhc3MueC1kYXRlLXJhbmdlLWFjdGl2ZS1lbmRdPVwiYWN0aXZlVHlwZSA9PT0gJ2VuZCdcIlxyXG4+XHJcbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbY2xhc3MueC1kYXRlLXJhbmdlLWxhYmVsLXJlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGhcIiBbbmdDbGFzc109XCJsYWJlbE1hcFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXJvd1wiPlxyXG4gICAgPHgtaW5wdXQtZ3JvdXAgI2lucHV0R3JvdXAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtZ3JvdXBcIiAobW91c2VlbnRlcik9XCJtZW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm1sZWF2ZSgpXCIgKGNsaWNrKT1cInNob3dQb3J0YWwoJGV2ZW50KVwiPlxyXG4gICAgICA8eC1pbnB1dFxyXG4gICAgICAgICNpbnB1dFN0YXJ0Q29tXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGEtcmFuZ2UtaW5wdXQgeC1kYXRhLXJhbmdlLWlucHV0LXN0YXJ0XCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgYm9yZGVyZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0U3RhcnRQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgKHhGb2N1cyk9XCJvbkZvY3VzKCdzdGFydCcpXCJcclxuICAgICAgICAoeENsaWNrKT1cInNob3dQb3J0YWwoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgIGljb249XCJmdG8tYXJyb3ctcmlnaHRcIlxyXG4gICAgICA+PC94LWlucHV0PlxyXG4gICAgICA8eC1pbnB1dFxyXG4gICAgICAgICNpbnB1dEVuZENvbVxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRhLXJhbmdlLWlucHV0IHgtZGF0YS1yYW5nZS1pbnB1dC1lbmRcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBib3JkZXJlZD1cImZhbHNlXCJcclxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRFbmRQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgKHhGb2N1cyk9XCJvbkZvY3VzKCdlbmQnKVwiXHJcbiAgICAgICAgKHhDbGljayk9XCJzaG93UG9ydGFsKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgIFtpY29uXT1cImljb25cIlxyXG4gICAgICAgIChjbGVhckVtaXQpPVwiY2xlYXJFbWl0KClcIlxyXG4gICAgICAgIFtjbGVhcmFibGVdPVwic2hvd0NsZWFyYWJsZVwiXHJcbiAgICAgID48L3gtaW5wdXQ+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVcIiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1hY3RpdmUtYmFyXCI+PC9kaXY+XHJcbiAgICA8L3gtaW5wdXQtZ3JvdXA+XHJcbiAgICA8c3BhbiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpbnZhbGlkXCI+e3sgaW52YWxpZE1lc3NhZ2UgfX08L3NwYW4+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVxdWlyZWRJc0VtcHR5IHx8IGludmFsaWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtdG9wLWxlZnRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtdG9wLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWJvcmRlci1lcnJvciB4LWJvdHRvbS1sZWZ0XCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWJvcmRlci1lcnJvciB4LWJvdHRvbS1yaWdodFwiPjwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
474
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2RhdGUtcGlja2VyL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBcUIsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUVULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFFVCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BHLE9BQU8sRUFDTCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxjQUFjLEVBQ2QsT0FBTyxFQUNQLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNULE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFDTCxPQUFPLEVBSVIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FB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RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0EsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWFBvcnRhbFNlcnZpY2UsIFhQb3J0YWxPdmVybGF5UmVmLCBYUG9ydGFsQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAbmctbmVzdC91aS9wb3J0YWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIGluamVjdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYRGF0ZVBpY2tlck1vZGVsVHlwZSwgWERhdGVSYW5nZVByZWZpeCwgWERhdGVSYW5nZVByb3BlcnR5IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzRGF0ZSxcclxuICBYSXNOdW1iZXIsXHJcbiAgWElzQ2hhbmdlLFxyXG4gIFhDb3JuZXIsXHJcbiAgWENsZWFyQ2xhc3MsXHJcbiAgWElzU3RyaW5nLFxyXG4gIFhDb25maWdTZXJ2aWNlLFxyXG4gIFhJc051bGwsXHJcbiAgWERhdGVZZWFyV2VlayxcclxuICBYRGF0ZVllYXJRdWFydGVyLFxyXG4gIFhQYXJlbnRzXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhJbnB1dENvbXBvbmVudCwgWElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dCc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBEYXRlUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgT3ZlcmxheSxcclxuICBPdmVybGF5Q29uZmlnLFxyXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcclxuICBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2VcclxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWEkxOG5EYXRlUGlja2VyLCBYSTE4blNlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WERhdGVSYW5nZVByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nQ2xhc3MsIEZvcm1zTW9kdWxlLCBYSW5wdXRDb21wb25lbnQsIFhJbnB1dEdyb3VwQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWERhdGVSYW5nZUNvbXBvbmVudCksIERhdGVQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZUNvbXBvbmVudCBleHRlbmRzIFhEYXRlUmFuZ2VQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVSYW5nZScsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGVSYW5nZSE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0R3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEdyb3VwITogWElucHV0R3JvdXBDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRTdGFydENvbScsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0U3RhcnRDb20hOiBYSW5wdXRDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbmRDb20nLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVuZENvbSE6IFhJbnB1dENvbXBvbmVudDtcclxuXHJcbiAgbW9kZWxUeXBlOiBYRGF0ZVBpY2tlck1vZGVsVHlwZSA9ICdkYXRlJztcclxuICBudW1iZXJWYWx1ZSE6IChudW1iZXIgfCBudWxsKVtdO1xyXG4gIGlzSW5wdXQgPSBmYWxzZTtcclxuICBzaG93Q2xlYXJhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBnZXRTdGFydFBsYWNlaG9sZGVyKCkge1xyXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgJiYgdGhpcy5wbGFjZWhvbGRlci5sZW5ndGggPiAwKSByZXR1cm4gdGhpcy5wbGFjZWhvbGRlclswXTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnN0YXJ0TW9udGg7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5zdGFydFF1YXJ0ZXI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5zdGFydFllYXI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5zdGFydFdlZWs7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnREYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGdldEVuZFBsYWNlaG9sZGVyKCkge1xyXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgJiYgdGhpcy5wbGFjZWhvbGRlci5sZW5ndGggPiAxKSByZXR1cm4gdGhpcy5wbGFjZWhvbGRlclsxXTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmVuZE1vbnRoO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuZW5kUXVhcnRlcjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAneWVhcicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmVuZFllYXI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmRXZWVrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmVuZERhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBnZXQgcmVxdWlyZWRJc0VtcHR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yICYmIHRoaXMucmVxdWlyZWQgJiYgWElzRW1wdHkodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmIChYSXNFbXB0eSh2YWx1ZSkpIHtcclxuICAgICAgdmFsdWUgPSBbXTtcclxuICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKFhJc0RhdGUodmFsdWVbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFR5cGUgPSAnZGF0ZSc7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IHZhbHVlLm1hcCgoeDogRGF0ZSkgPT4geC5nZXRUaW1lKCkpO1xyXG4gICAgICB9IGVsc2UgaWYgKFhJc051bWJlcih2YWx1ZVswXSkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsVHlwZSA9ICdudW1iZXInO1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChYSXNTdHJpbmcodmFsdWVbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFR5cGUgPSAnc3RyaW5nJztcclxuICAgICAgICBjb25zdCB2YWx1ZVRpbWUgPSB2YWx1ZS5tYXAoKHg6IHN0cmluZykgPT4gbmV3IERhdGUoeCkuZ2V0VGltZSgpKTtcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gIWlzTmFOKHZhbHVlVGltZVswXSkgPyB2YWx1ZVRpbWUgOiBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBlbnRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlucHV0Q2xlYXJhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5pbWF0aW5nID0gZmFsc2U7XHJcbiAgZGlzcGxheVZhbHVlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHBvcnRhbCE6IFhQb3J0YWxPdmVybGF5UmVmPFhEYXRlUmFuZ2VQb3J0YWxDb21wb25lbnQ+O1xyXG4gIGljb246IHN0cmluZyA9ICdmdG8tY2FsZW5kYXInO1xyXG4gIGJveCE6IERPTVJlY3Q7XHJcbiAgcHJvdGFsSGVpZ2h0ITogbnVtYmVyO1xyXG4gIG1heE5vZGVzOiBudW1iZXIgPSA2O1xyXG4gIHByb3RhbFRvYm90dG9tOiBib29sZWFuID0gdHJ1ZTtcclxuICB2YWx1ZUNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBkYXRhQ2hhbmdlOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHBvc2l0aW9uQ2hhbmdlOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGNsb3NlU3ViamVjdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgYWN0aXZlVHlwZUNoYW5nZSA9IG5ldyBTdWJqZWN0PCdzdGFydCcgfCAnZW5kJz4oKTtcclxuICBzdGFydERpc3BsYXk6IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG4gIGVuZERpc3BsYXk6IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG4gIGFjdGl2ZVR5cGU/OiAnc3RhcnQnIHwgJ2VuZCc7XHJcbiAgZmxleENsYXNzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIG92ZXJyaWRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBwb3J0YWxTZXJ2aWNlID0gaW5qZWN0KFhQb3J0YWxTZXJ2aWNlKTtcclxuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XHJcbiAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xyXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG4gIGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoWENvbmZpZ1NlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RmxleCh0aGlzLmRhdGVSYW5nZS5uYXRpdmVFbGVtZW50LCB0aGlzLnJlbmRlcmVyLCB0aGlzLmp1c3RpZnksIHRoaXMuYWxpZ24sIHRoaXMuZGlyZWN0aW9uKTtcclxuICAgIHRoaXMuc2V0SG9zdFR5cGVDbGFzcygpO1xyXG4gICAgdGhpcy5zZXRGb3JtYXQoKTtcclxuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICAgIHRoaXMuc2V0U3ViamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zZXRQb3J0YWwoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgdHlwZSwganVzdGlmeSwgYWxpZ24sIGRpcmVjdGlvbiwgc2l6ZSwgbGFiZWxBbGlnbiB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZShzaXplLCBsYWJlbEFsaWduKSAmJiB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICBYSXNDaGFuZ2UoanVzdGlmeSwgYWxpZ24sIGRpcmVjdGlvbikgJiYgdGhpcy5zZXRGbGV4Q2xhc3MoKTtcclxuICAgIGlmIChYSXNDaGFuZ2UodHlwZSkpIHtcclxuICAgICAgdGhpcy5zZXRGb3JtYXQoKTtcclxuICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNldFN1YmplY3QoKSB7XHJcbiAgICB0aGlzLmNsb3NlU3ViamVjdC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlUG9ydGFsKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4LmRhdGVQaWNrZXIgYXMgWEkxOG5EYXRlUGlja2VyKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IHg7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0RmxleENsYXNzKCkge1xyXG4gICAgaWYgKHRoaXMuZmxleENsYXNzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgY2xzIG9mIHRoaXMuZmxleENsYXNzKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRhdGVSYW5nZS5uYXRpdmVFbGVtZW50LCBjbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmZsZXhDbGFzcyA9IHRoaXMuc2V0RmxleChcclxuICAgICAgdGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCxcclxuICAgICAgdGhpcy5yZW5kZXJlcixcclxuICAgICAgdGhpcy5qdXN0aWZ5LFxyXG4gICAgICB0aGlzLmFsaWduLFxyXG4gICAgICB0aGlzLmRpcmVjdGlvblxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldEhvc3RUeXBlQ2xhc3MoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBgeC1kYXRlLXJhbmdlLSR7dGhpcy50eXBlfWApO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFyYW50U2Nyb2xsKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvY3VtZW50KSByZXR1cm47XHJcbiAgICBjb25zdCBwYXJlbnRzID0gWFBhcmVudHModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgbGV0IGZpcnN0U2Nyb2xsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaXRlbSBvZiBwYXJlbnRzKSB7XHJcbiAgICAgIGlmIChpdGVtLmNsaWVudEhlaWdodCA8IGl0ZW0uc2Nyb2xsSGVpZ2h0KSB7XHJcbiAgICAgICAgZmlyc3RTY3JvbGwgPSBpdGVtO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZmlyc3RTY3JvbGwgJiYgZmlyc3RTY3JvbGwudGFnTmFtZSAhPT0gJ0JPRFknKSB7XHJcbiAgICAgIGZyb21FdmVudChmaXJzdFNjcm9sbCwgJ3Njcm9sbCcpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5wb3J0YWxBdHRhY2hlZCgpISksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy51cGRhdGVQb3NpdGlvbigpO1xyXG4gICAgICAgICAgY29uc3QgZXJhY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGNvbnN0IGZyZWN0ID0gZmlyc3RTY3JvbGwhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgaWYgKGVyYWN0LnRvcCArIGVyYWN0LmhlaWdodCAtIGZyZWN0LnRvcCA8IDAgfHwgZXJhY3QuYm90dG9tID4gZnJlY3QuYm90dG9tKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZvcm1hdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1hdCAhPT0gJ3l5eXktTU0tZGQnKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTS1kZCc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXknO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUtaG91cicpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISCc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUtbWludXRlJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1lbnRlcigpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmNsZWFyYWJsZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lbnRlciA9IHRydWU7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMubnVtYmVyVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuaWNvbiA9ICcnO1xyXG4gICAgICB0aGlzLnNob3dDbGVhcmFibGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtbGVhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jbGVhcmFibGUpIHJldHVybjtcclxuICAgIHRoaXMuZW50ZXIgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmNsZWFyYWJsZSkge1xyXG4gICAgICB0aGlzLmljb24gPSAnZnRvLWNhbGVuZGFyJztcclxuICAgICAgdGhpcy5zaG93Q2xlYXJhYmxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyRW1pdCgpIHtcclxuICAgIHRoaXMudmFsdWUgPSBbXTtcclxuICAgIHRoaXMubnVtYmVyVmFsdWUgPSBbXTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gJyc7XHJcbiAgICB0aGlzLmVuZERpc3BsYXkgPSAnJztcclxuICAgIHRoaXMubWxlYXZlKCk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlKCk7XHJcbiAgICB0aGlzLmlucHV0U3RhcnRDb20uaW5wdXRGb2N1cygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25JY29uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pY29uID09PSAnZnRvLXgnKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJFbWl0KCk7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG1vZGVsQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmdldFZhbHVlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbFR5cGUgPT09ICdkYXRlJ1xyXG4gICAgICA/IHRoaXMubnVtYmVyVmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpXHJcbiAgICAgIDogdGhpcy5tb2RlbFR5cGUgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLm51bWJlclZhbHVlLm1hcCgoeCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oeCwgdGhpcy5mb3JtYXQpKVxyXG4gICAgICAgIDogdGhpcy5udW1iZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldE51bWJlclZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWxUeXBlID09PSAnZGF0ZSdcclxuICAgICAgPyB0aGlzLnZhbHVlLm1hcCgoeDogRGF0ZSkgPT4geC5nZXRUaW1lKCkpXHJcbiAgICAgIDogdGhpcy5tb2RlbFR5cGUgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0aGlzLnZhbHVlLm1hcCgoeDogc3RyaW5nKSA9PiBuZXcgRGF0ZSh4KS5nZXRUaW1lKCkpXHJcbiAgICAgICAgOiB0aGlzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcG9ydGFsQXR0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVBvcnRhbCgpIHtcclxuICAgIGlmICh0aGlzLnBvcnRhbEF0dGFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LmRldGFjaCgpO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsb3NlUmVkdWN0aW9uKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbG9zZVJlZHVjdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5udW1iZXJWYWx1ZSB8fCB0aGlzLm51bWJlclZhbHVlLmxlbmd0aCA9PT0gMCB8fCB0aGlzLm51bWJlclZhbHVlLmluY2x1ZGVzKG51bGwpKSB7XHJcbiAgICAgIGlmICghdGhpcy52YWx1ZSB8fCB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSB0aGlzLmdldE51bWJlclZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5udW1iZXJWYWx1ZS5pbmNsdWRlcyhudWxsKSAmJiB0aGlzLnZhbHVlICYmICF0aGlzLnZhbHVlLmluY2x1ZGVzKG51bGwpKSB7XHJcbiAgICAgIGxldCBudW1iZXJWYWx1ZSA9IHRoaXMuZ2V0TnVtYmVyVmFsdWUoKTtcclxuICAgICAgaWYgKHRoaXMubnVtYmVyVmFsdWVbMF0gIT09IG51bWJlclZhbHVlWzBdIHx8IHRoaXMubnVtYmVyVmFsdWVbMV0gIT09IG51bWJlclZhbHVlWzFdKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IG51bWJlclZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95UG9ydGFsKCkge1xyXG4gICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG4gIHNob3dQb3J0YWwoJGV2ZW50OiBFdmVudCwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgdHlwZSAmJiAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmFuaW1hdGluZykgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmVUeXBlID0gdHlwZSB8fCAnc3RhcnQnO1xyXG4gICAgdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLm5leHQodGhpcy5hY3RpdmVUeXBlKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgY29uc3QgY29uZmlnOiBPdmVybGF5Q29uZmlnID0ge1xyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnJyxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5zZXRQbGFjZW1lbnQoKSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2V0UG9zaXRpb24oY29uZmlnKTtcclxuICAgIHRoaXMucG9ydGFsID0gdGhpcy5wb3J0YWxTZXJ2aWNlLmF0dGFjaCh7XHJcbiAgICAgIGNvbnRlbnQ6IFhEYXRlUmFuZ2VQb3J0YWxDb21wb25lbnQsXHJcbiAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcclxuICAgICAgb3ZlcmxheUNvbmZpZzogY29uZmlnXHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGFsLm92ZXJsYXlSZWZcclxuICAgICAgPy5vdXRzaWRlUG9pbnRlckV2ZW50cygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNsaWNrVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGNsaWNrVGFyZ2V0ICE9PSB0aGlzLmlucHV0U3RhcnRDb20uaW5wdXRSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICAgY2xpY2tUYXJnZXQgIT09IHRoaXMuaW5wdXRFbmRDb20uaW5wdXRSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNldEluc3RhbmNlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQb3NpdGlvbihjb25maWc6IE92ZXJsYXlDb25maWcpIHtcclxuICAgIGxldCBwb3NpdGlvbiA9IGNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcclxuICAgIHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHBvczogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBsYWNlID0gWFBvcnRhbENvbm5lY3RlZFBvc2l0aW9uLmdldChwb3MuY29ubmVjdGlvblBhaXIpIGFzIFhDb3JuZXI7XHJcbiAgICAgIHBsYWNlICE9PSB0aGlzLnBsYWNlbWVudCAmJiB0aGlzLnBvc2l0aW9uQ2hhbmdlLm5leHQocGxhY2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRJbnN0YW5jZSgpIHtcclxuICAgIGxldCBjb21wb25lbnRSZWYgPSB0aGlzLnBvcnRhbD8uY29tcG9uZW50UmVmO1xyXG4gICAgaWYgKCFjb21wb25lbnRSZWYpIHJldHVybjtcclxuICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlLCB7XHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMubnVtYmVyVmFsdWUsXHJcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXHJcbiAgICAgIHZhbHVlQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLFxyXG4gICAgICBwb3NpdGlvbkNoYW5nZTogdGhpcy5wb3NpdGlvbkNoYW5nZSxcclxuICAgICAgYWN0aXZlVHlwZTogdGhpcy5hY3RpdmVUeXBlLFxyXG4gICAgICBleHRyYUZvb3RlcjogdGhpcy5leHRyYUZvb3RlcixcclxuICAgICAgcHJlc2V0OiB0aGlzLnByZXNldCxcclxuICAgICAgYWN0aXZlVHlwZUNoYW5nZTogdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLFxyXG4gICAgICBkaXNhYmxlZERhdGU6IHRoaXMuZGlzYWJsZWREYXRlLFxyXG4gICAgICBkaXNhYmxlZFRpbWU6IHRoaXMuZGlzYWJsZWRUaW1lLFxyXG4gICAgICBjbG9zZVBvcnRhbDogKCkgPT4gdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpLFxyXG4gICAgICBkZXN0cm95UG9ydGFsOiAoKSA9PiB0aGlzLmRlc3Ryb3lQb3J0YWwoKSxcclxuICAgICAgbm9kZUVtaXQ6IChkYXRlczogRGF0ZVtdLCBjbG9zZSA9IHRydWUpID0+IHRoaXMub25Ob2RlQ2xpY2soZGF0ZXMsIGNsb3NlKSxcclxuICAgICAgc3RhcnROb2RlRW1pdDogKG5vZGU6IERhdGUsIGNsb3NlID0gZmFsc2UsIGlzRGF0ZVBpY2tlcjogYm9vbGVhbiA9IHRydWUpID0+XHJcbiAgICAgICAgdGhpcy5zdGFydE5vZGVDbGljayhub2RlLCBjbG9zZSwgaXNEYXRlUGlja2VyKSxcclxuICAgICAgZW5kTm9kZUVtaXQ6IChub2RlOiBEYXRlLCBjbG9zZSA9IGZhbHNlLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlKSA9PlxyXG4gICAgICAgIHRoaXMuZW5kTm9kZUNsaWNrKG5vZGUsIGNsb3NlLCBpc0RhdGVQaWNrZXIpLFxyXG4gICAgICBhbmltYXRpbmc6IChpbmc6IGJvb2xlYW4pID0+ICh0aGlzLmFuaW1hdGluZyA9IGluZylcclxuICAgIH0pO1xyXG4gICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0Tm9kZUNsaWNrKG5vZGU/OiBEYXRlLCBjbG9zZSA9IGZhbHNlLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLnN0YXJ0RGlzcGxheSA9ICFub2RlXHJcbiAgICAgID8gJydcclxuICAgICAgOiB0aGlzLnR5cGUgPT09ICd3ZWVrJ1xyXG4gICAgICAgID8gWERhdGVZZWFyV2Vlayhub2RlKSFcclxuICAgICAgICA6IHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInXHJcbiAgICAgICAgICA/IFhEYXRlWWVhclF1YXJ0ZXIobm9kZSkhXHJcbiAgICAgICAgICA6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vZGUsIHRoaXMuZm9ybWF0KSE7XHJcbiAgICBpZiAoIWNsb3NlICYmIGlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLmlucHV0RW5kQ29tLmlucHV0Rm9jdXMoJ2FmdGVyJyk7XHJcbiAgICAgIHRoaXMuYWN0aXZlVHlwZUNoYW5nZS5uZXh0KCdlbmQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGVuZE5vZGVDbGljayhub2RlPzogRGF0ZSwgY2xvc2UgPSBmYWxzZSwgaXNEYXRlUGlja2VyOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gIW5vZGVcclxuICAgICAgPyAnJ1xyXG4gICAgICA6IHRoaXMudHlwZSA9PT0gJ3dlZWsnXHJcbiAgICAgICAgPyBYRGF0ZVllYXJXZWVrKG5vZGUpIVxyXG4gICAgICAgIDogdGhpcy50eXBlID09PSAncXVhcnRlcidcclxuICAgICAgICAgID8gWERhdGVZZWFyUXVhcnRlcihub2RlKSFcclxuICAgICAgICAgIDogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obm9kZSwgdGhpcy5mb3JtYXQpITtcclxuICAgIGlmICghY2xvc2UgJiYgaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRTdGFydENvbS5pbnB1dEZvY3VzKCdhZnRlcicpO1xyXG4gICAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UubmV4dCgnc3RhcnQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uTm9kZUNsaWNrKGRhdGVzOiBEYXRlW10sIGNsb3NlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5pc0lucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLm51bWJlclZhbHVlID0gZGF0ZXMubWFwKCh4KSA9PiB4LmdldFRpbWUoKSk7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgICBpZiAoY2xvc2UpIHtcclxuICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dCgpIHtcclxuICAgIHRoaXMuaXNJbnB1dCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKHR5cGU6ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgdGhpcy5hY3RpdmVUeXBlID0gdHlwZTtcclxuICAgIHRoaXMuYWN0aXZlQ2hhbmdlLm5leHQodGhpcy5hY3RpdmVUeXBlKTtcclxuICB9XHJcblxyXG4gIHNldERpc3BsYXlWYWx1ZShkYXRlTnVtYmVyOiAobnVtYmVyIHwgbnVsbClbXSkge1xyXG4gICAgaWYgKCFkYXRlTnVtYmVyKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc051bGwoZGF0ZU51bWJlclswXSkpIHtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSBYRGF0ZVllYXJXZWVrKGRhdGVOdW1iZXJbMF0hKSE7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncXVhcnRlcicpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IFhEYXRlWWVhclF1YXJ0ZXIoZGF0ZU51bWJlclswXSEpITtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVOdW1iZXJbMF0sIHRoaXMuZm9ybWF0KSBhcyBzdHJpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghWElzTnVsbChkYXRlTnVtYmVyWzFdKSkge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgICB0aGlzLmVuZERpc3BsYXkgPSBYRGF0ZVllYXJXZWVrKGRhdGVOdW1iZXJbMV0hKSE7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncXVhcnRlcicpIHtcclxuICAgICAgICB0aGlzLmVuZERpc3BsYXkgPSBYRGF0ZVllYXJRdWFydGVyKGRhdGVOdW1iZXJbMV0hKSE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZU51bWJlclsxXSwgdGhpcy5mb3JtYXQpIGFzIHN0cmluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGxhY2VtZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucG9ydGFsU2VydmljZS5zZXRQbGFjZW1lbnQoe1xyXG4gICAgICBlbGVtZW50UmVmOiB0aGlzLmlucHV0R3JvdXAuZWxlbWVudFJlZixcclxuICAgICAgcGxhY2VtZW50OiBbdGhpcy5wbGFjZW1lbnQgYXMgWENvcm5lciwgJ2JvdHRvbS1zdGFydCcsICdib3R0b20tZW5kJywgJ3RvcC1zdGFydCcsICd0b3AtZW5kJ10sXHJcbiAgICAgIHRyYW5zZm9ybU9yaWdpbk9uOiAneC1kYXRlLXJhbmdlLXBvcnRhbCdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UG9ydGFsKCkge1xyXG4gICAgdGhpcy5wb3J0YWxBdHRhY2hlZCgpICYmIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuc2V0UGxhY2VtZW50KCkpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmNsYXNzTWFwLCB0aGlzLmxhYmVsTWFwKTtcclxuICAgIHRoaXMuY2xhc3NNYXBbYCR7WERhdGVSYW5nZVByZWZpeH0tJHt0aGlzLnNpemV9YF0gPSB0aGlzLnNpemUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLmxhYmVsTWFwW2B4LXRleHQtYWxpZ24tJHt0aGlzLmxhYmVsQWxpZ259YF0gPSB0aGlzLmxhYmVsQWxpZ24gPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmb3JtQ29udHJvbENoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjZGF0ZVJhbmdlXHJcbiAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2VcIlxyXG4gIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1jaGVja2VkXT1cInZhbHVlXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy54LWRhdGUtcmFuZ2UtYm9yZGVyZWRdPVwiYm9yZGVyZWRcIlxyXG4gIFtjbGFzcy54LWRhdGUtcmFuZ2UtYWN0aXZlXT1cImFjdGl2ZVwiXHJcbiAgW2NsYXNzLngtZGF0ZS1yYW5nZS1hY3RpdmUtc3RhcnRdPVwiYWN0aXZlVHlwZSA9PT0gJ3N0YXJ0J1wiXHJcbiAgW2NsYXNzLngtZGF0ZS1yYW5nZS1hY3RpdmUtZW5kXT1cImFjdGl2ZVR5cGUgPT09ICdlbmQnXCJcclxuPlxyXG4gIEBpZiAobGFiZWwpIHtcclxuICAgIDxsYWJlbCBbY2xhc3MueC1kYXRlLXJhbmdlLWxhYmVsLXJlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGhcIiBbbmdDbGFzc109XCJsYWJlbE1hcFwiPnt7XHJcbiAgICAgIGxhYmVsXHJcbiAgICB9fTwvbGFiZWw+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2Utcm93XCI+XHJcbiAgICA8eC1pbnB1dC1ncm91cFxyXG4gICAgICAjaW5wdXRHcm91cFxyXG4gICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1ncm91cFwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cIm1lbnRlcigpXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwibWxlYXZlKClcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPHgtaW5wdXRcclxuICAgICAgICAjaW5wdXRTdGFydENvbVxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRhLXJhbmdlLWlucHV0IHgtZGF0YS1yYW5nZS1pbnB1dC1zdGFydFwiXHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGJvcmRlcmVkPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaXplXT1cInNpemVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFN0YXJ0UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICh4Rm9jdXMpPVwib25Gb2N1cygnc3RhcnQnKVwiXHJcbiAgICAgICAgKHhDbGljayk9XCJzaG93UG9ydGFsKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICBpY29uPVwiZnRvLWFycm93LXJpZ2h0XCJcclxuICAgICAgPjwveC1pbnB1dD5cclxuICAgICAgPHgtaW5wdXRcclxuICAgICAgICAjaW5wdXRFbmRDb21cclxuICAgICAgICBjbGFzcz1cIngtZGF0YS1yYW5nZS1pbnB1dCB4LWRhdGEtcmFuZ2UtaW5wdXQtZW5kXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgYm9yZGVyZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0RW5kUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICh4Rm9jdXMpPVwib25Gb2N1cygnZW5kJylcIlxyXG4gICAgICAgICh4Q2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICBbaWNvbl09XCJpY29uXCJcclxuICAgICAgICAoY2xlYXJFbWl0KT1cImNsZWFyRW1pdCgpXCJcclxuICAgICAgICBbY2xlYXJhYmxlXT1cInNob3dDbGVhcmFibGVcIlxyXG4gICAgICA+PC94LWlucHV0PlxyXG4gICAgICBAaWYgKGFjdGl2ZSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtYWN0aXZlLWJhclwiPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L3gtaW5wdXQtZ3JvdXA+XHJcbiAgICBAaWYgKGludmFsaWQpIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtZXJyb3ItbWVzc2FnZVwiPnt7IGludmFsaWRNZXNzYWdlIH19PC9zcGFuPlxyXG4gICAgfVxyXG4gICAgQGlmIChyZXF1aXJlZElzRW1wdHkgfHwgaW52YWxpZCkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtbGVmdFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtcmlnaHRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLWxlZnRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|