@ng-nest/ui 14.0.12 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/affix/affix.component.d.ts +1 -1
- package/affix/affix.property.d.ts +1 -1
- package/alert/alert.component.d.ts +1 -1
- package/alert/alert.property.d.ts +1 -1
- package/anchor/anchor.component.d.ts +1 -1
- package/anchor/anchor.property.d.ts +1 -1
- package/api/api.component.d.ts +1 -1
- package/auto-complete/auto-complete-portal.component.d.ts +1 -1
- package/auto-complete/auto-complete.component.d.ts +1 -1
- package/auto-complete/auto-complete.property.d.ts +1 -1
- package/avatar/avatar-group.component.d.ts +1 -1
- package/avatar/avatar.component.d.ts +1 -1
- package/avatar/avatar.property.d.ts +2 -2
- package/back-top/back-top.component.d.ts +1 -1
- package/back-top/back-top.property.d.ts +1 -1
- package/badge/badge.component.d.ts +1 -1
- package/badge/badge.property.d.ts +1 -1
- package/base-form/base-form.component.d.ts +1 -1
- package/base-form/base-form.property.d.ts +1 -1
- package/border/border.component.d.ts +1 -1
- package/button/button.component.d.ts +1 -1
- package/button/button.property.d.ts +2 -2
- package/button/buttons.component.d.ts +1 -1
- package/calendar/calendar.component.d.ts +1 -1
- package/calendar/calendar.property.d.ts +1 -1
- package/card/card.component.d.ts +1 -1
- package/card/card.property.d.ts +1 -1
- package/carousel/carousel-panel.component.d.ts +1 -1
- package/carousel/carousel.component.d.ts +1 -1
- package/carousel/carousel.property.d.ts +2 -2
- package/cascade/cascade-portal.component.d.ts +1 -1
- package/cascade/cascade.component.d.ts +1 -1
- package/cascade/cascade.property.d.ts +1 -1
- package/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/checkbox.property.d.ts +1 -1
- package/collapse/collapse-panel.component.d.ts +1 -1
- package/collapse/collapse.component.d.ts +1 -1
- package/collapse/collapse.property.d.ts +2 -2
- package/color/color.component.d.ts +1 -1
- package/color/color.property.d.ts +1 -1
- package/color-picker/color-picker-portal.component.d.ts +1 -1
- package/color-picker/color-picker.component.d.ts +1 -1
- package/color-picker/color-picker.property.d.ts +1 -1
- package/comment/comment-reply.component.d.ts +1 -1
- package/comment/comment.component.d.ts +1 -1
- package/comment/comment.property.d.ts +2 -2
- package/container/aside.component.d.ts +1 -1
- package/container/container.component.d.ts +1 -1
- package/container/container.property.d.ts +4 -4
- package/container/footer.component.d.ts +1 -1
- package/container/header.component.d.ts +1 -1
- package/container/main.component.d.ts +1 -1
- package/crumb/crumb.component.d.ts +1 -1
- package/crumb/crumb.property.d.ts +1 -1
- package/date-picker/date-picker-portal.component.d.ts +1 -1
- package/date-picker/date-picker.component.d.ts +1 -1
- package/date-picker/date-picker.property.d.ts +5 -5
- package/date-picker/date-range-portal.component.d.ts +1 -1
- package/date-picker/date-range.component.d.ts +1 -1
- package/date-picker/picker-date.component.d.ts +1 -1
- package/date-picker/picker-month.component.d.ts +1 -1
- package/date-picker/picker-year.component.d.ts +1 -1
- package/description/description-item.component.d.ts +1 -1
- package/description/description.component.d.ts +1 -1
- package/description/description.property.d.ts +2 -2
- package/dialog/dialog-container.component.d.ts +1 -1
- package/dialog/dialog-portal.component.d.ts +1 -1
- package/dialog/dialog-portal.directives.d.ts +6 -6
- package/dialog/dialog.component.d.ts +1 -1
- package/dialog/dialog.property.d.ts +2 -2
- package/doc/doc.component.d.ts +1 -1
- package/drawer/drawer-container.component.d.ts +1 -1
- package/drawer/drawer-portal.component.d.ts +1 -1
- package/drawer/drawer-portal.directives.d.ts +3 -3
- package/drawer/drawer.component.d.ts +1 -1
- package/drawer/drawer.property.d.ts +2 -2
- package/dropdown/dropdown-portal.component.d.ts +1 -1
- package/dropdown/dropdown.component.d.ts +1 -1
- package/dropdown/dropdown.property.d.ts +1 -1
- package/empty/empty.component.d.ts +1 -1
- package/empty/empty.property.d.ts +1 -1
- package/esm2020/affix/affix.component.mjs +3 -3
- package/esm2020/affix/affix.module.mjs +4 -4
- package/esm2020/affix/affix.property.mjs +3 -3
- package/esm2020/alert/alert.component.mjs +3 -3
- package/esm2020/alert/alert.module.mjs +4 -4
- package/esm2020/alert/alert.property.mjs +3 -3
- package/esm2020/anchor/anchor.component.mjs +3 -3
- package/esm2020/anchor/anchor.module.mjs +4 -4
- package/esm2020/anchor/anchor.property.mjs +3 -3
- package/esm2020/api/api.component.mjs +3 -3
- package/esm2020/api/api.module.mjs +4 -4
- package/esm2020/auto-complete/auto-complete-portal.component.mjs +3 -3
- package/esm2020/auto-complete/auto-complete.component.mjs +3 -3
- package/esm2020/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2020/auto-complete/auto-complete.property.mjs +3 -3
- package/esm2020/avatar/avatar-group.component.mjs +3 -3
- package/esm2020/avatar/avatar.component.mjs +3 -3
- package/esm2020/avatar/avatar.module.mjs +4 -4
- package/esm2020/avatar/avatar.property.mjs +6 -6
- package/esm2020/back-top/back-top.component.mjs +3 -3
- package/esm2020/back-top/back-top.module.mjs +4 -4
- package/esm2020/back-top/back-top.property.mjs +3 -3
- package/esm2020/badge/badge.component.mjs +3 -3
- package/esm2020/badge/badge.module.mjs +4 -4
- package/esm2020/badge/badge.property.mjs +3 -3
- package/esm2020/base-form/base-form.component.mjs +3 -3
- package/esm2020/base-form/base-form.module.mjs +4 -4
- package/esm2020/base-form/base-form.property.mjs +3 -3
- package/esm2020/border/border.component.mjs +3 -3
- package/esm2020/border/border.module.mjs +4 -4
- package/esm2020/button/button.component.mjs +3 -3
- package/esm2020/button/button.module.mjs +4 -4
- package/esm2020/button/button.property.mjs +6 -6
- package/esm2020/button/buttons.component.mjs +3 -3
- package/esm2020/calendar/calendar.component.mjs +3 -3
- package/esm2020/calendar/calendar.module.mjs +4 -4
- package/esm2020/calendar/calendar.property.mjs +3 -3
- package/esm2020/card/card.component.mjs +3 -3
- package/esm2020/card/card.module.mjs +4 -4
- package/esm2020/card/card.property.mjs +3 -3
- package/esm2020/carousel/carousel-panel.component.mjs +3 -3
- package/esm2020/carousel/carousel.component.mjs +3 -3
- package/esm2020/carousel/carousel.module.mjs +4 -4
- package/esm2020/carousel/carousel.property.mjs +6 -6
- package/esm2020/cascade/cascade-portal.component.mjs +3 -3
- package/esm2020/cascade/cascade.component.mjs +3 -3
- package/esm2020/cascade/cascade.module.mjs +4 -4
- package/esm2020/cascade/cascade.property.mjs +3 -3
- package/esm2020/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/checkbox/checkbox.module.mjs +4 -4
- package/esm2020/checkbox/checkbox.property.mjs +3 -3
- package/esm2020/collapse/collapse-panel.component.mjs +3 -3
- package/esm2020/collapse/collapse.component.mjs +3 -3
- package/esm2020/collapse/collapse.module.mjs +4 -4
- package/esm2020/collapse/collapse.property.mjs +6 -6
- package/esm2020/color/color.component.mjs +3 -3
- package/esm2020/color/color.module.mjs +4 -4
- package/esm2020/color/color.property.mjs +3 -3
- package/esm2020/color-picker/color-picker-portal.component.mjs +5 -5
- package/esm2020/color-picker/color-picker.component.mjs +3 -3
- package/esm2020/color-picker/color-picker.module.mjs +4 -4
- package/esm2020/color-picker/color-picker.property.mjs +3 -3
- package/esm2020/comment/comment-reply.component.mjs +3 -3
- package/esm2020/comment/comment.component.mjs +3 -3
- package/esm2020/comment/comment.module.mjs +4 -4
- package/esm2020/comment/comment.property.mjs +6 -6
- package/esm2020/container/aside.component.mjs +3 -3
- package/esm2020/container/container.component.mjs +3 -3
- package/esm2020/container/container.module.mjs +4 -4
- package/esm2020/container/container.property.mjs +12 -12
- package/esm2020/container/footer.component.mjs +3 -3
- package/esm2020/container/header.component.mjs +3 -3
- package/esm2020/container/main.component.mjs +3 -3
- package/esm2020/core/config/config.service.mjs +3 -3
- package/esm2020/core/services/http.service.mjs +3 -3
- package/esm2020/core/services/preloading-strategy.service.mjs +3 -3
- package/esm2020/core/services/storage.service.mjs +3 -3
- package/esm2020/core/theme/theme.service.mjs +3 -3
- package/esm2020/crumb/crumb.component.mjs +3 -3
- package/esm2020/crumb/crumb.module.mjs +4 -4
- package/esm2020/crumb/crumb.property.mjs +3 -3
- package/esm2020/date-picker/date-picker-portal.component.mjs +3 -3
- package/esm2020/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/date-picker/date-picker.module.mjs +4 -4
- package/esm2020/date-picker/date-picker.property.mjs +15 -15
- package/esm2020/date-picker/date-range-portal.component.mjs +3 -3
- package/esm2020/date-picker/date-range.component.mjs +3 -3
- package/esm2020/date-picker/picker-date.component.mjs +3 -3
- package/esm2020/date-picker/picker-month.component.mjs +3 -3
- package/esm2020/date-picker/picker-year.component.mjs +3 -3
- package/esm2020/description/description-item.component.mjs +3 -3
- package/esm2020/description/description.component.mjs +3 -3
- package/esm2020/description/description.module.mjs +4 -4
- package/esm2020/description/description.property.mjs +6 -6
- package/esm2020/dialog/dialog-container.component.mjs +5 -5
- package/esm2020/dialog/dialog-portal.component.mjs +3 -3
- package/esm2020/dialog/dialog-portal.directives.mjs +18 -18
- package/esm2020/dialog/dialog.component.mjs +3 -3
- package/esm2020/dialog/dialog.module.mjs +4 -4
- package/esm2020/dialog/dialog.property.mjs +6 -6
- package/esm2020/dialog/dialog.service.mjs +3 -3
- package/esm2020/doc/doc.component.mjs +3 -3
- package/esm2020/doc/doc.module.mjs +4 -4
- package/esm2020/drawer/drawer-container.component.mjs +5 -5
- package/esm2020/drawer/drawer-portal.component.mjs +3 -3
- package/esm2020/drawer/drawer-portal.directives.mjs +9 -9
- package/esm2020/drawer/drawer.component.mjs +3 -3
- package/esm2020/drawer/drawer.module.mjs +4 -4
- package/esm2020/drawer/drawer.property.mjs +6 -6
- package/esm2020/drawer/drawer.service.mjs +3 -3
- package/esm2020/dropdown/dropdown-portal.component.mjs +3 -3
- package/esm2020/dropdown/dropdown.component.mjs +3 -3
- package/esm2020/dropdown/dropdown.module.mjs +4 -4
- package/esm2020/dropdown/dropdown.property.mjs +3 -3
- package/esm2020/empty/empty.component.mjs +3 -3
- package/esm2020/empty/empty.module.mjs +4 -4
- package/esm2020/empty/empty.property.mjs +3 -3
- package/esm2020/examples/examples.component.mjs +3 -3
- package/esm2020/examples/examples.module.mjs +4 -4
- package/esm2020/find/find.component.mjs +3 -3
- package/esm2020/find/find.module.mjs +4 -4
- package/esm2020/find/find.property.mjs +3 -3
- package/esm2020/form/control.component.mjs +3 -3
- package/esm2020/form/form.component.mjs +3 -3
- package/esm2020/form/form.module.mjs +4 -4
- package/esm2020/form/form.property.mjs +6 -6
- package/esm2020/highlight/highlight.component.mjs +3 -3
- package/esm2020/highlight/highlight.module.mjs +4 -4
- package/esm2020/highlight/highlight.property.mjs +3 -3
- package/esm2020/i18n/i18n.directive.mjs +3 -3
- package/esm2020/i18n/i18n.module.mjs +4 -4
- package/esm2020/i18n/i18n.pipe.mjs +3 -3
- package/esm2020/i18n/i18n.service.mjs +3 -3
- package/esm2020/icon/icon.component.mjs +3 -3
- package/esm2020/icon/icon.module.mjs +4 -4
- package/esm2020/icon/icon.property.mjs +3 -3
- package/esm2020/icon/icon.service.mjs +3 -3
- package/esm2020/image/image-group.component.mjs +3 -3
- package/esm2020/image/image-preview.component.mjs +3 -3
- package/esm2020/image/image.component.mjs +3 -3
- package/esm2020/image/image.module.mjs +4 -4
- package/esm2020/image/image.property.mjs +6 -6
- package/esm2020/inner/inner.component.mjs +3 -3
- package/esm2020/inner/inner.module.mjs +4 -4
- package/esm2020/inner/inner.property.mjs +3 -3
- package/esm2020/input/input-group.component.mjs +3 -3
- package/esm2020/input/input.component.mjs +3 -3
- package/esm2020/input/input.module.mjs +4 -4
- package/esm2020/input/input.property.mjs +6 -6
- package/esm2020/input-number/input-number.component.mjs +3 -3
- package/esm2020/input-number/input-number.module.mjs +4 -4
- package/esm2020/input-number/input-number.property.mjs +3 -3
- package/esm2020/keyword/keyword.directive.mjs +3 -3
- package/esm2020/keyword/keyword.module.mjs +4 -4
- package/esm2020/keyword/keyword.property.mjs +3 -3
- package/esm2020/layout/col.component.mjs +3 -3
- package/esm2020/layout/layout.module.mjs +4 -4
- package/esm2020/layout/layout.property.mjs +6 -6
- package/esm2020/layout/row.component.mjs +3 -3
- package/esm2020/link/link.component.mjs +3 -3
- package/esm2020/link/link.module.mjs +4 -4
- package/esm2020/link/link.property.mjs +3 -3
- package/esm2020/list/list-drop-group.directive.mjs +3 -3
- package/esm2020/list/list-option.component.mjs +3 -3
- package/esm2020/list/list.component.mjs +3 -3
- package/esm2020/list/list.module.mjs +4 -4
- package/esm2020/list/list.property.mjs +6 -6
- package/esm2020/loading/loading.component.mjs +4 -4
- package/esm2020/loading/loading.module.mjs +4 -4
- package/esm2020/loading/loading.property.mjs +3 -3
- package/esm2020/menu/menu-node.component.mjs +3 -3
- package/esm2020/menu/menu.component.mjs +4 -4
- package/esm2020/menu/menu.module.mjs +4 -4
- package/esm2020/menu/menu.property.mjs +6 -6
- package/esm2020/message/message.component.mjs +3 -3
- package/esm2020/message/message.module.mjs +4 -4
- package/esm2020/message/message.service.mjs +3 -3
- package/esm2020/message-box/message-box.component.mjs +3 -3
- package/esm2020/message-box/message-box.module.mjs +4 -4
- package/esm2020/message-box/message-box.service.mjs +3 -3
- package/esm2020/notification/notification.component.mjs +3 -3
- package/esm2020/notification/notification.module.mjs +4 -4
- package/esm2020/notification/notification.service.mjs +3 -3
- package/esm2020/outlet/outlet.directive.mjs +3 -3
- package/esm2020/outlet/outlet.module.mjs +4 -4
- package/esm2020/page-header/page-header.component.mjs +3 -3
- package/esm2020/page-header/page-header.module.mjs +4 -4
- package/esm2020/page-header/page-header.property.mjs +3 -3
- package/esm2020/pagination/pagination.component.mjs +3 -3
- package/esm2020/pagination/pagination.module.mjs +4 -4
- package/esm2020/pagination/pagination.property.mjs +3 -3
- package/esm2020/pattern/pattern.component.mjs +3 -3
- package/esm2020/pattern/pattern.module.mjs +4 -4
- package/esm2020/popconfirm/popconfirm.component.mjs +3 -3
- package/esm2020/popconfirm/popconfirm.module.mjs +4 -4
- package/esm2020/popconfirm/popconfirm.property.mjs +3 -3
- package/esm2020/popover/popover-portal.component.mjs +3 -3
- package/esm2020/popover/popover.directive.mjs +3 -3
- package/esm2020/popover/popover.module.mjs +4 -4
- package/esm2020/popover/popover.property.mjs +3 -3
- package/esm2020/portal/portal.module.mjs +4 -4
- package/esm2020/portal/portal.service.mjs +3 -3
- package/esm2020/progress/progress.component.mjs +4 -4
- package/esm2020/progress/progress.module.mjs +4 -4
- package/esm2020/progress/progress.property.mjs +3 -3
- package/esm2020/radio/radio.component.mjs +3 -3
- package/esm2020/radio/radio.module.mjs +4 -4
- package/esm2020/radio/radio.property.mjs +3 -3
- package/esm2020/rate/rate.component.mjs +3 -3
- package/esm2020/rate/rate.module.mjs +4 -4
- package/esm2020/rate/rate.property.mjs +3 -3
- package/esm2020/resizable/resizable.directive.mjs +3 -3
- package/esm2020/resizable/resizable.module.mjs +4 -4
- package/esm2020/resizable/resizable.property.mjs +3 -3
- package/esm2020/result/result.component.mjs +3 -3
- package/esm2020/result/result.module.mjs +4 -4
- package/esm2020/result/result.property.mjs +3 -3
- package/esm2020/ripple/ripple.directive.mjs +3 -3
- package/esm2020/ripple/ripple.module.mjs +4 -4
- package/esm2020/ripple/ripple.property.mjs +3 -3
- package/esm2020/select/select-portal.component.mjs +3 -3
- package/esm2020/select/select.component.mjs +3 -3
- package/esm2020/select/select.module.mjs +4 -4
- package/esm2020/select/select.property.mjs +3 -3
- package/esm2020/skeleton/skeleton.component.mjs +4 -4
- package/esm2020/skeleton/skeleton.module.mjs +4 -4
- package/esm2020/skeleton/skeleton.property.mjs +3 -3
- package/esm2020/slider/slider.component.mjs +3 -3
- package/esm2020/slider/slider.module.mjs +4 -4
- package/esm2020/slider/slider.property.mjs +3 -3
- package/esm2020/slider-select/slider-select.component.mjs +3 -3
- package/esm2020/slider-select/slider-select.module.mjs +4 -4
- package/esm2020/slider-select/slider-select.property.mjs +3 -3
- package/esm2020/statistic/countdown.component.mjs +3 -3
- package/esm2020/statistic/statistic.component.mjs +3 -3
- package/esm2020/statistic/statistic.module.mjs +4 -4
- package/esm2020/statistic/statistic.property.mjs +6 -6
- package/esm2020/steps/steps.component.mjs +3 -3
- package/esm2020/steps/steps.module.mjs +4 -4
- package/esm2020/steps/steps.property.mjs +3 -3
- package/esm2020/switch/switch.component.mjs +3 -3
- package/esm2020/switch/switch.module.mjs +4 -4
- package/esm2020/switch/switch.property.mjs +3 -3
- package/esm2020/table/drag.directive.mjs +3 -3
- package/esm2020/table/table-body.component.mjs +3 -3
- package/esm2020/table/table-foot.component.mjs +3 -3
- package/esm2020/table/table-head.component.mjs +3 -3
- package/esm2020/table/table.component.mjs +3 -3
- package/esm2020/table/table.module.mjs +4 -4
- package/esm2020/table/table.property.mjs +12 -12
- package/esm2020/tabs/tab-content.component.mjs +3 -3
- package/esm2020/tabs/tab-link.directive.mjs +8 -8
- package/esm2020/tabs/tab.component.mjs +3 -3
- package/esm2020/tabs/tabs.component.mjs +4 -4
- package/esm2020/tabs/tabs.module.mjs +4 -4
- package/esm2020/tabs/tabs.property.mjs +6 -6
- package/esm2020/tag/tag.component.mjs +3 -3
- package/esm2020/tag/tag.module.mjs +4 -4
- package/esm2020/tag/tag.property.mjs +3 -3
- package/esm2020/text-retract/text-retract.component.mjs +3 -3
- package/esm2020/text-retract/text-retract.module.mjs +4 -4
- package/esm2020/text-retract/text-retract.property.mjs +3 -3
- package/esm2020/textarea/textarea.component.mjs +3 -3
- package/esm2020/textarea/textarea.module.mjs +4 -4
- package/esm2020/textarea/textarea.property.mjs +3 -3
- package/esm2020/theme/theme.component.mjs +5 -5
- package/esm2020/theme/theme.module.mjs +4 -4
- package/esm2020/theme/theme.property.mjs +3 -3
- package/esm2020/time-ago/time-ago.module.mjs +4 -4
- package/esm2020/time-ago/time-ago.pipe.mjs +3 -3
- package/esm2020/time-picker/time-picker-frame.component.mjs +7 -7
- package/esm2020/time-picker/time-picker-portal.component.mjs +3 -3
- package/esm2020/time-picker/time-picker.component.mjs +3 -3
- package/esm2020/time-picker/time-picker.module.mjs +4 -4
- package/esm2020/time-picker/time-picker.property.mjs +3 -3
- package/esm2020/time-range/time-range.module.mjs +4 -4
- package/esm2020/time-range/time-range.pipe.mjs +3 -3
- package/esm2020/timeline/timeline.component.mjs +3 -3
- package/esm2020/timeline/timeline.module.mjs +4 -4
- package/esm2020/timeline/timeline.property.mjs +3 -3
- package/esm2020/tooltip/tooltip-portal.component.mjs +3 -3
- package/esm2020/tooltip/tooltip.directive.mjs +3 -3
- package/esm2020/tooltip/tooltip.module.mjs +4 -4
- package/esm2020/tooltip/tooltip.property.mjs +3 -3
- package/esm2020/transfer/transfer.component.mjs +5 -5
- package/esm2020/transfer/transfer.module.mjs +4 -4
- package/esm2020/transfer/transfer.property.mjs +3 -3
- package/esm2020/tree/tree-node.component.mjs +3 -3
- package/esm2020/tree/tree.component.mjs +3 -3
- package/esm2020/tree/tree.module.mjs +4 -4
- package/esm2020/tree/tree.property.mjs +6 -6
- package/esm2020/tree-file/tree-file.component.mjs +4 -4
- package/esm2020/tree-file/tree-file.module.mjs +4 -4
- package/esm2020/tree-file/tree-file.property.mjs +3 -3
- package/esm2020/tree-select/tree-select-portal.component.mjs +3 -3
- package/esm2020/tree-select/tree-select.component.mjs +3 -3
- package/esm2020/tree-select/tree-select.module.mjs +4 -4
- package/esm2020/tree-select/tree-select.property.mjs +3 -3
- package/esm2020/typography/typography.component.mjs +3 -3
- package/esm2020/typography/typography.module.mjs +4 -4
- package/esm2020/typography/typography.property.mjs +3 -3
- package/esm2020/upload/upload-portal.component.mjs +7 -7
- package/esm2020/upload/upload.component.mjs +3 -3
- package/esm2020/upload/upload.module.mjs +4 -4
- package/esm2020/upload/upload.property.mjs +3 -3
- package/examples/examples.component.d.ts +1 -1
- package/fesm2015/ng-nest-ui-affix.mjs +10 -10
- package/fesm2015/ng-nest-ui-alert.mjs +10 -10
- package/fesm2015/ng-nest-ui-anchor.mjs +10 -10
- package/fesm2015/ng-nest-ui-api.mjs +7 -7
- package/fesm2015/ng-nest-ui-auto-complete.mjs +13 -13
- package/fesm2015/ng-nest-ui-avatar.mjs +16 -16
- package/fesm2015/ng-nest-ui-back-top.mjs +10 -10
- package/fesm2015/ng-nest-ui-badge.mjs +10 -10
- package/fesm2015/ng-nest-ui-base-form.mjs +10 -10
- package/fesm2015/ng-nest-ui-border.mjs +7 -7
- package/fesm2015/ng-nest-ui-button.mjs +16 -16
- package/fesm2015/ng-nest-ui-calendar.mjs +10 -10
- package/fesm2015/ng-nest-ui-card.mjs +10 -10
- package/fesm2015/ng-nest-ui-carousel.mjs +16 -16
- package/fesm2015/ng-nest-ui-cascade.mjs +13 -13
- package/fesm2015/ng-nest-ui-checkbox.mjs +10 -10
- package/fesm2015/ng-nest-ui-collapse.mjs +16 -16
- package/fesm2015/ng-nest-ui-color-picker.mjs +14 -14
- package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-color.mjs +10 -10
- package/fesm2015/ng-nest-ui-comment.mjs +16 -16
- package/fesm2015/ng-nest-ui-container.mjs +31 -31
- package/fesm2015/ng-nest-ui-core.mjs +15 -15
- package/fesm2015/ng-nest-ui-crumb.mjs +10 -10
- package/fesm2015/ng-nest-ui-date-picker.mjs +40 -40
- package/fesm2015/ng-nest-ui-description.mjs +16 -16
- package/fesm2015/ng-nest-ui-dialog.mjs +42 -42
- package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-doc.mjs +7 -7
- package/fesm2015/ng-nest-ui-drawer.mjs +33 -33
- package/fesm2015/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-dropdown.mjs +13 -13
- package/fesm2015/ng-nest-ui-empty.mjs +10 -10
- package/fesm2015/ng-nest-ui-examples.mjs +7 -7
- package/fesm2015/ng-nest-ui-find.mjs +10 -10
- package/fesm2015/ng-nest-ui-form.mjs +16 -16
- package/fesm2015/ng-nest-ui-highlight.mjs +10 -10
- package/fesm2015/ng-nest-ui-i18n.mjs +13 -13
- package/fesm2015/ng-nest-ui-icon.mjs +13 -13
- package/fesm2015/ng-nest-ui-image.mjs +19 -19
- package/fesm2015/ng-nest-ui-inner.mjs +10 -10
- package/fesm2015/ng-nest-ui-input-number.mjs +10 -10
- package/fesm2015/ng-nest-ui-input.mjs +16 -16
- package/fesm2015/ng-nest-ui-keyword.mjs +10 -10
- package/fesm2015/ng-nest-ui-layout.mjs +16 -16
- package/fesm2015/ng-nest-ui-link.mjs +10 -10
- package/fesm2015/ng-nest-ui-list.mjs +19 -19
- package/fesm2015/ng-nest-ui-loading.mjs +11 -11
- package/fesm2015/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-menu.mjs +16 -16
- package/fesm2015/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-message-box.mjs +10 -10
- package/fesm2015/ng-nest-ui-message.mjs +10 -10
- package/fesm2015/ng-nest-ui-notification.mjs +10 -10
- package/fesm2015/ng-nest-ui-outlet.mjs +7 -7
- package/fesm2015/ng-nest-ui-page-header.mjs +10 -10
- package/fesm2015/ng-nest-ui-pagination.mjs +10 -10
- package/fesm2015/ng-nest-ui-pattern.mjs +7 -7
- package/fesm2015/ng-nest-ui-popconfirm.mjs +10 -10
- package/fesm2015/ng-nest-ui-popover.mjs +13 -13
- package/fesm2015/ng-nest-ui-portal.mjs +7 -7
- package/fesm2015/ng-nest-ui-progress.mjs +11 -11
- package/fesm2015/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-radio.mjs +10 -10
- package/fesm2015/ng-nest-ui-rate.mjs +10 -10
- package/fesm2015/ng-nest-ui-resizable.mjs +10 -10
- package/fesm2015/ng-nest-ui-result.mjs +10 -10
- package/fesm2015/ng-nest-ui-ripple.mjs +10 -10
- package/fesm2015/ng-nest-ui-select.mjs +13 -13
- package/fesm2015/ng-nest-ui-skeleton.mjs +11 -11
- package/fesm2015/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-slider-select.mjs +10 -10
- package/fesm2015/ng-nest-ui-slider.mjs +10 -10
- package/fesm2015/ng-nest-ui-statistic.mjs +16 -16
- package/fesm2015/ng-nest-ui-steps.mjs +10 -10
- package/fesm2015/ng-nest-ui-switch.mjs +10 -10
- package/fesm2015/ng-nest-ui-table.mjs +31 -31
- package/fesm2015/ng-nest-ui-tabs.mjs +26 -26
- package/fesm2015/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tag.mjs +10 -10
- package/fesm2015/ng-nest-ui-text-retract.mjs +10 -10
- package/fesm2015/ng-nest-ui-textarea.mjs +10 -10
- package/fesm2015/ng-nest-ui-theme.mjs +11 -11
- package/fesm2015/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-time-ago.mjs +7 -7
- package/fesm2015/ng-nest-ui-time-picker.mjs +19 -19
- package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-time-range.mjs +7 -7
- package/fesm2015/ng-nest-ui-timeline.mjs +10 -10
- package/fesm2015/ng-nest-ui-tooltip.mjs +13 -13
- package/fesm2015/ng-nest-ui-transfer.mjs +11 -11
- package/fesm2015/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree-file.mjs +10 -10
- package/fesm2015/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree-select.mjs +13 -13
- package/fesm2015/ng-nest-ui-tree.mjs +16 -16
- package/fesm2015/ng-nest-ui-typography.mjs +10 -10
- package/fesm2015/ng-nest-ui-upload.mjs +18 -16
- package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-affix.mjs +10 -10
- package/fesm2020/ng-nest-ui-alert.mjs +10 -10
- package/fesm2020/ng-nest-ui-anchor.mjs +10 -10
- package/fesm2020/ng-nest-ui-api.mjs +7 -7
- package/fesm2020/ng-nest-ui-auto-complete.mjs +13 -13
- package/fesm2020/ng-nest-ui-avatar.mjs +16 -16
- package/fesm2020/ng-nest-ui-back-top.mjs +10 -10
- package/fesm2020/ng-nest-ui-badge.mjs +10 -10
- package/fesm2020/ng-nest-ui-base-form.mjs +10 -10
- package/fesm2020/ng-nest-ui-border.mjs +7 -7
- package/fesm2020/ng-nest-ui-button.mjs +16 -16
- package/fesm2020/ng-nest-ui-calendar.mjs +10 -10
- package/fesm2020/ng-nest-ui-card.mjs +10 -10
- package/fesm2020/ng-nest-ui-carousel.mjs +16 -16
- package/fesm2020/ng-nest-ui-cascade.mjs +13 -13
- package/fesm2020/ng-nest-ui-checkbox.mjs +10 -10
- package/fesm2020/ng-nest-ui-collapse.mjs +16 -16
- package/fesm2020/ng-nest-ui-color-picker.mjs +14 -14
- package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-color.mjs +10 -10
- package/fesm2020/ng-nest-ui-comment.mjs +16 -16
- package/fesm2020/ng-nest-ui-container.mjs +31 -31
- package/fesm2020/ng-nest-ui-core.mjs +15 -15
- package/fesm2020/ng-nest-ui-crumb.mjs +10 -10
- package/fesm2020/ng-nest-ui-date-picker.mjs +40 -40
- package/fesm2020/ng-nest-ui-description.mjs +16 -16
- package/fesm2020/ng-nest-ui-dialog.mjs +42 -42
- package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-doc.mjs +7 -7
- package/fesm2020/ng-nest-ui-drawer.mjs +33 -33
- package/fesm2020/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-dropdown.mjs +13 -13
- package/fesm2020/ng-nest-ui-empty.mjs +10 -10
- package/fesm2020/ng-nest-ui-examples.mjs +7 -7
- package/fesm2020/ng-nest-ui-find.mjs +10 -10
- package/fesm2020/ng-nest-ui-form.mjs +16 -16
- package/fesm2020/ng-nest-ui-highlight.mjs +10 -10
- package/fesm2020/ng-nest-ui-i18n.mjs +13 -13
- package/fesm2020/ng-nest-ui-icon.mjs +13 -13
- package/fesm2020/ng-nest-ui-image.mjs +19 -19
- package/fesm2020/ng-nest-ui-inner.mjs +10 -10
- package/fesm2020/ng-nest-ui-input-number.mjs +10 -10
- package/fesm2020/ng-nest-ui-input.mjs +16 -16
- package/fesm2020/ng-nest-ui-keyword.mjs +10 -10
- package/fesm2020/ng-nest-ui-layout.mjs +16 -16
- package/fesm2020/ng-nest-ui-link.mjs +10 -10
- package/fesm2020/ng-nest-ui-list.mjs +19 -19
- package/fesm2020/ng-nest-ui-loading.mjs +11 -11
- package/fesm2020/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-menu.mjs +16 -16
- package/fesm2020/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-message-box.mjs +10 -10
- package/fesm2020/ng-nest-ui-message.mjs +10 -10
- package/fesm2020/ng-nest-ui-notification.mjs +10 -10
- package/fesm2020/ng-nest-ui-outlet.mjs +7 -7
- package/fesm2020/ng-nest-ui-page-header.mjs +10 -10
- package/fesm2020/ng-nest-ui-pagination.mjs +10 -10
- package/fesm2020/ng-nest-ui-pattern.mjs +7 -7
- package/fesm2020/ng-nest-ui-popconfirm.mjs +10 -10
- package/fesm2020/ng-nest-ui-popover.mjs +13 -13
- package/fesm2020/ng-nest-ui-portal.mjs +7 -7
- package/fesm2020/ng-nest-ui-progress.mjs +11 -11
- package/fesm2020/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-radio.mjs +10 -10
- package/fesm2020/ng-nest-ui-rate.mjs +10 -10
- package/fesm2020/ng-nest-ui-resizable.mjs +10 -10
- package/fesm2020/ng-nest-ui-result.mjs +10 -10
- package/fesm2020/ng-nest-ui-ripple.mjs +10 -10
- package/fesm2020/ng-nest-ui-select.mjs +13 -13
- package/fesm2020/ng-nest-ui-skeleton.mjs +11 -11
- package/fesm2020/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-slider-select.mjs +10 -10
- package/fesm2020/ng-nest-ui-slider.mjs +10 -10
- package/fesm2020/ng-nest-ui-statistic.mjs +16 -16
- package/fesm2020/ng-nest-ui-steps.mjs +10 -10
- package/fesm2020/ng-nest-ui-switch.mjs +10 -10
- package/fesm2020/ng-nest-ui-table.mjs +31 -31
- package/fesm2020/ng-nest-ui-tabs.mjs +26 -26
- package/fesm2020/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tag.mjs +10 -10
- package/fesm2020/ng-nest-ui-text-retract.mjs +10 -10
- package/fesm2020/ng-nest-ui-textarea.mjs +10 -10
- package/fesm2020/ng-nest-ui-theme.mjs +11 -11
- package/fesm2020/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-time-ago.mjs +7 -7
- package/fesm2020/ng-nest-ui-time-picker.mjs +19 -19
- package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-time-range.mjs +7 -7
- package/fesm2020/ng-nest-ui-timeline.mjs +10 -10
- package/fesm2020/ng-nest-ui-tooltip.mjs +13 -13
- package/fesm2020/ng-nest-ui-transfer.mjs +11 -11
- package/fesm2020/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree-file.mjs +10 -10
- package/fesm2020/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree-select.mjs +13 -13
- package/fesm2020/ng-nest-ui-tree.mjs +16 -16
- package/fesm2020/ng-nest-ui-typography.mjs +10 -10
- package/fesm2020/ng-nest-ui-upload.mjs +16 -16
- package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
- package/find/find.component.d.ts +1 -1
- package/find/find.property.d.ts +1 -1
- package/form/control.component.d.ts +1 -1
- package/form/form.component.d.ts +1 -1
- package/form/form.property.d.ts +2 -2
- package/highlight/highlight.component.d.ts +1 -1
- package/highlight/highlight.property.d.ts +1 -1
- package/i18n/i18n.directive.d.ts +1 -1
- package/icon/icon.component.d.ts +1 -1
- package/icon/icon.property.d.ts +1 -1
- package/image/image-group.component.d.ts +1 -1
- package/image/image-preview.component.d.ts +1 -1
- package/image/image.component.d.ts +1 -1
- package/image/image.property.d.ts +2 -2
- package/inner/inner.component.d.ts +1 -1
- package/inner/inner.property.d.ts +1 -1
- package/input/input-group.component.d.ts +1 -1
- package/input/input.component.d.ts +1 -1
- package/input/input.property.d.ts +2 -2
- package/input-number/input-number.component.d.ts +1 -1
- package/input-number/input-number.property.d.ts +1 -1
- package/keyword/keyword.directive.d.ts +1 -1
- package/keyword/keyword.property.d.ts +1 -1
- package/layout/col.component.d.ts +1 -1
- package/layout/layout.property.d.ts +2 -2
- package/layout/row.component.d.ts +1 -1
- package/link/link.component.d.ts +1 -1
- package/link/link.property.d.ts +1 -1
- package/list/list-drop-group.directive.d.ts +1 -1
- package/list/list-option.component.d.ts +1 -1
- package/list/list.component.d.ts +1 -1
- package/list/list.property.d.ts +2 -2
- package/loading/loading.component.d.ts +1 -1
- package/loading/loading.property.d.ts +1 -1
- package/menu/menu-node.component.d.ts +1 -1
- package/menu/menu.component.d.ts +2 -2
- package/menu/menu.property.d.ts +2 -2
- package/message/message.component.d.ts +1 -1
- package/message-box/message-box.component.d.ts +1 -1
- package/notification/notification.component.d.ts +1 -1
- package/outlet/outlet.directive.d.ts +1 -1
- package/package.json +6 -6
- package/page-header/page-header.component.d.ts +1 -1
- package/page-header/page-header.property.d.ts +1 -1
- package/pagination/pagination.component.d.ts +1 -1
- package/pagination/pagination.property.d.ts +1 -1
- package/pattern/pattern.component.d.ts +1 -1
- package/popconfirm/popconfirm.component.d.ts +1 -1
- package/popconfirm/popconfirm.property.d.ts +1 -1
- package/popover/popover-portal.component.d.ts +1 -1
- package/popover/popover.directive.d.ts +1 -1
- package/popover/popover.property.d.ts +1 -1
- package/progress/progress.component.d.ts +1 -1
- package/progress/progress.property.d.ts +1 -1
- package/radio/radio.component.d.ts +1 -1
- package/radio/radio.property.d.ts +1 -1
- package/rate/rate.component.d.ts +1 -1
- package/rate/rate.property.d.ts +1 -1
- package/resizable/resizable.directive.d.ts +1 -1
- package/resizable/resizable.property.d.ts +1 -1
- package/result/result.component.d.ts +1 -1
- package/result/result.property.d.ts +1 -1
- package/ripple/ripple.directive.d.ts +1 -1
- package/ripple/ripple.property.d.ts +1 -1
- package/select/select-portal.component.d.ts +1 -1
- package/select/select.component.d.ts +1 -1
- package/select/select.property.d.ts +1 -1
- package/skeleton/skeleton.component.d.ts +1 -1
- package/skeleton/skeleton.property.d.ts +1 -1
- package/slider/slider.component.d.ts +1 -1
- package/slider/slider.property.d.ts +1 -1
- package/slider-select/slider-select.component.d.ts +1 -1
- package/slider-select/slider-select.property.d.ts +1 -1
- package/statistic/countdown.component.d.ts +1 -1
- package/statistic/statistic.component.d.ts +1 -1
- package/statistic/statistic.property.d.ts +2 -2
- package/steps/steps.component.d.ts +1 -1
- package/steps/steps.property.d.ts +1 -1
- package/switch/switch.component.d.ts +1 -1
- package/switch/switch.property.d.ts +1 -1
- package/table/drag.directive.d.ts +1 -1
- package/table/table-body.component.d.ts +1 -1
- package/table/table-foot.component.d.ts +1 -1
- package/table/table-head.component.d.ts +1 -1
- package/table/table.component.d.ts +1 -1
- package/table/table.property.d.ts +4 -4
- package/tabs/tab-content.component.d.ts +1 -1
- package/tabs/tab-link.directive.d.ts +5 -5
- package/tabs/tab.component.d.ts +1 -1
- package/tabs/tabs.component.d.ts +3 -3
- package/tabs/tabs.property.d.ts +2 -2
- package/tag/tag.component.d.ts +1 -1
- package/tag/tag.property.d.ts +1 -1
- package/text-retract/text-retract.component.d.ts +1 -1
- package/text-retract/text-retract.property.d.ts +1 -1
- package/textarea/textarea.component.d.ts +1 -1
- package/textarea/textarea.property.d.ts +1 -1
- package/theme/theme.component.d.ts +1 -1
- package/theme/theme.property.d.ts +1 -1
- package/time-picker/time-picker-frame.component.d.ts +1 -1
- package/time-picker/time-picker-portal.component.d.ts +1 -1
- package/time-picker/time-picker.component.d.ts +1 -1
- package/time-picker/time-picker.property.d.ts +1 -1
- package/timeline/timeline.component.d.ts +1 -1
- package/timeline/timeline.property.d.ts +1 -1
- package/tooltip/tooltip-portal.component.d.ts +1 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/tooltip/tooltip.property.d.ts +1 -1
- package/transfer/transfer.component.d.ts +1 -1
- package/transfer/transfer.property.d.ts +1 -1
- package/tree/tree-node.component.d.ts +1 -1
- package/tree/tree.component.d.ts +1 -1
- package/tree/tree.property.d.ts +2 -2
- package/tree-file/tree-file.component.d.ts +2 -2
- package/tree-file/tree-file.property.d.ts +1 -1
- package/tree-select/tree-select-portal.component.d.ts +1 -1
- package/tree-select/tree-select.component.d.ts +1 -1
- package/tree-select/tree-select.property.d.ts +1 -1
- package/typography/typography.component.d.ts +1 -1
- package/typography/typography.property.d.ts +1 -1
- package/upload/upload-portal.component.d.ts +2 -2
- package/upload/upload.component.d.ts +1 -1
- package/upload/upload.property.d.ts +1 -1
|
@@ -98,7 +98,7 @@ export class XTransferComponent extends XTransferProperty {
|
|
|
98
98
|
this.cdr.detectChanges();
|
|
99
99
|
}
|
|
100
100
|
checkedAllChange($event, source) {
|
|
101
|
-
let list = source.list?.filter((x) => !x.disabled).map((x) => {
|
|
101
|
+
let list = (source.list?.filter((x) => !x.disabled)).map((x) => {
|
|
102
102
|
x.checked = $event;
|
|
103
103
|
return x;
|
|
104
104
|
});
|
|
@@ -484,10 +484,10 @@ export class XTransferComponent extends XTransferProperty {
|
|
|
484
484
|
this.cdr.detectChanges();
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
|
-
/** @nocollapse */ XTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
488
|
-
/** @nocollapse */ XTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTransferComponent, selector: "x-transfer", providers: [XValueAccessor(XTransferComponent)], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #transfer class=\"x-transfer\" cdkDropListGroup [ngClass]=\"classMap\">\r\n <div class=\"x-transfer-box\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: left }\"></ng-container>\r\n <div [ngStyle]=\"left.listStyle!\" class=\"x-transfer-list\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ul\r\n *ngSwitchCase=\"'list'\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"left.list\"\r\n [cdkDropListDisabled]=\"!drag && type === 'list'\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n <li class=\"x-transfer-item\" *ngFor=\"let node of left.list; trackBy: trackByNode\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: left }\"></ng-container>\r\n </li>\r\n </ul>\r\n <x-tree\r\n *ngSwitchCase=\"'tree'\"\r\n [data]=\"left.list!\"\r\n multiple\r\n allowManyActivated\r\n [(activatedId)]=\"treeActivatedId\"\r\n (nodeClick)=\"onTreeNodeClick($event)\"\r\n ></x-tree>\r\n <x-table\r\n *ngSwitchCase=\"'table'\"\r\n [data]=\"tableData\"\r\n [columns]=\"tableColumns!\"\r\n [(size)]=\"tableSize\"\r\n [(index)]=\"tableIndex\"\r\n (indexChange)=\"getTableData()\"\r\n [query]=\"tableQuery\"\r\n [total]=\"tableTotal\"\r\n (activatedRowChange)=\"onTableCheckedRow($event, left)\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, left)\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n ></x-table>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"x-transfer-buttons\">\r\n <x-button type=\"primary\" icon=\"fto-chevron-right\" [disabled]=\"left.disabledButton\" (click)=\"move(left, right)\"></x-button>\r\n <x-button type=\"primary\" icon=\"fto-chevron-left\" [disabled]=\"right.disabledButton\" (click)=\"move(right, left)\"></x-button>\r\n </div>\r\n <div class=\"x-transfer-box\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: right }\"></ng-container>\r\n <div [ngSwitch]=\"type\" [ngStyle]=\"right.listStyle!\" class=\"x-transfer-list\">\r\n <x-table\r\n *ngSwitchCase=\"'table'\"\r\n [data]=\"right.list!\"\r\n [columns]=\"tableColumns!\"\r\n (activatedRowChange)=\"onTableCheckedRow($event, right)\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, right)\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showPagination=\"false\"\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n ></x-table>\r\n <ul\r\n *ngSwitchDefault\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"right.list\"\r\n [cdkDropListDisabled]=\"!drag || (drag && type !== 'list')\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n <li class=\"x-transfer-item\" *ngFor=\"let node of right.list; trackBy: trackByNode\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: right }\"></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #sourceTitleTpl let-source=\"source\">\r\n <div class=\"x-transfer-title\">\r\n <x-checkbox\r\n *ngIf=\"source.title && !source.hiddenCheckAll\"\r\n [data]=\"[titleTpl ? '' : source.title]\"\r\n [(ngModel)]=\"source.checkedAll\"\r\n (ngModelChange)=\"checkedAllChange($event, source)\"\r\n [indeterminate]=\"source.indeterminate\"\r\n ></x-checkbox>\r\n <span *ngIf=\"source.title && source.hiddenCheckAll\">{{ source.title }}</span>\r\n <ng-container *xOutlet=\"titleTpl; context: { $title: source.title, $checkedCount: source.checkedCount, $count: source.count }\"\r\n ><span class=\"x-transfer-total\">{{ source.checkedCount }} / {{ source.count }}</span></ng-container\r\n >\r\n </div>\r\n <!-- <div class=\"x-transfer-search\" *ngIf=\"search\">\r\n <x-input\r\n icon=\"fto-search\"\r\n [(ngModel)]=\"source.searchInput\"\r\n (ngModelChange)=\"searchInputChange(source)\"\r\n clearable\r\n ></x-input>\r\n </div> -->\r\n</ng-template>\r\n\r\n<ng-template #sourceNodeTpl let-node=\"node\" let-source=\"source\">\r\n <x-checkbox\r\n [data]=\"[{ id: node.id, label: nodeTpl ? nodeTpl : node.label, node: node }]\"\r\n [disabled]=\"node.disabled\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"checkedChange($event, source)\"\r\n ></x-checkbox>\r\n</ng-template>\r\n", styles: [".x-transfer{margin:0;padding:0;display:inline-flex;align-items:center}.x-transfer-title{padding:.25rem .5625rem;display:flex;align-items:center;justify-content:space-between;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius);border-bottom:none;background-color:var(--x-background);color:var(--x-text-300)}.x-transfer-total{margin-left:.325rem}.x-transfer-list{display:flex;flex-direction:column;height:18rem;width:12rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-bottom-left-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius);overflow:auto}.x-transfer-item{padding:.125rem .25rem;border-radius:var(--x-border-radius);display:flex;align-items:center;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-transfer-droplist{height:100%;padding:.25rem}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item:hover{background-color:transparent}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item.cdk-drag-placeholder{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-transfer-buttons{margin:0 1rem;display:flex;flex-direction:column}.x-transfer-buttons>x-button:not(:first-child){margin-top:.5rem}.x-transfer-search{padding:.5rem;border-bottom:.0625rem solid var(--x-border)}body>li.x-transfer-item.cdk-drag-preview{padding:.125rem .25rem;border-radius:var(--x-border-radius);display:flex;align-items:center;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>li.x-transfer-item.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: i8.XButtonComponent, selector: "x-button" }, { kind: "component", type: i9.XTreeComponent, selector: "x-tree" }, { kind: "component", type: i10.XTableComponent, selector: "x-table" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
489
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
487
|
+
/** @nocollapse */ XTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
488
|
+
/** @nocollapse */ XTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTransferComponent, selector: "x-transfer", providers: [XValueAccessor(XTransferComponent)], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #transfer class=\"x-transfer\" cdkDropListGroup [ngClass]=\"classMap\">\r\n <div class=\"x-transfer-box\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: left }\"></ng-container>\r\n <div [ngStyle]=\"left.listStyle!\" class=\"x-transfer-list\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ul\r\n *ngSwitchCase=\"'list'\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"left.list\"\r\n [cdkDropListDisabled]=\"!drag && type === 'list'\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n <li class=\"x-transfer-item\" *ngFor=\"let node of left.list; trackBy: trackByNode\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: left }\"></ng-container>\r\n </li>\r\n </ul>\r\n <x-tree\r\n *ngSwitchCase=\"'tree'\"\r\n [data]=\"left.list!\"\r\n multiple\r\n allowManyActivated\r\n [(activatedId)]=\"treeActivatedId\"\r\n (nodeClick)=\"onTreeNodeClick($event)\"\r\n ></x-tree>\r\n <x-table\r\n *ngSwitchCase=\"'table'\"\r\n [data]=\"tableData\"\r\n [columns]=\"tableColumns!\"\r\n [(size)]=\"tableSize\"\r\n [(index)]=\"tableIndex\"\r\n (indexChange)=\"getTableData()\"\r\n [query]=\"tableQuery\"\r\n [total]=\"tableTotal\"\r\n (activatedRowChange)=\"onTableCheckedRow($event, left)\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, left)\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n ></x-table>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"x-transfer-buttons\">\r\n <x-button type=\"primary\" icon=\"fto-chevron-right\" [disabled]=\"left.disabledButton\" (click)=\"move(left, right)\"></x-button>\r\n <x-button type=\"primary\" icon=\"fto-chevron-left\" [disabled]=\"right.disabledButton\" (click)=\"move(right, left)\"></x-button>\r\n </div>\r\n <div class=\"x-transfer-box\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: right }\"></ng-container>\r\n <div [ngSwitch]=\"type\" [ngStyle]=\"right.listStyle!\" class=\"x-transfer-list\">\r\n <x-table\r\n *ngSwitchCase=\"'table'\"\r\n [data]=\"right.list!\"\r\n [columns]=\"tableColumns!\"\r\n (activatedRowChange)=\"onTableCheckedRow($event, right)\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, right)\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showPagination=\"false\"\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n ></x-table>\r\n <ul\r\n *ngSwitchDefault\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"right.list\"\r\n [cdkDropListDisabled]=\"!drag || (drag && type !== 'list')\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n <li class=\"x-transfer-item\" *ngFor=\"let node of right.list; trackBy: trackByNode\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: right }\"></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #sourceTitleTpl let-source=\"source\">\r\n <div class=\"x-transfer-title\">\r\n <x-checkbox\r\n *ngIf=\"source.title && !source.hiddenCheckAll\"\r\n [data]=\"[titleTpl ? '' : source.title]\"\r\n [(ngModel)]=\"source.checkedAll\"\r\n (ngModelChange)=\"checkedAllChange($event, source)\"\r\n [indeterminate]=\"source.indeterminate\"\r\n ></x-checkbox>\r\n <span *ngIf=\"source.title && source.hiddenCheckAll\">{{ source.title }}</span>\r\n <ng-container *xOutlet=\"titleTpl; context: { $title: source.title, $checkedCount: source.checkedCount, $count: source.count }\"\r\n ><span class=\"x-transfer-total\">{{ source.checkedCount }} / {{ source.count }}</span></ng-container\r\n >\r\n </div>\r\n <!-- <div class=\"x-transfer-search\" *ngIf=\"search\">\r\n <x-input\r\n icon=\"fto-search\"\r\n [(ngModel)]=\"source.searchInput\"\r\n (ngModelChange)=\"searchInputChange(source)\"\r\n clearable\r\n ></x-input>\r\n </div> -->\r\n</ng-template>\r\n\r\n<ng-template #sourceNodeTpl let-node=\"node\" let-source=\"source\">\r\n <x-checkbox\r\n [data]=\"[{ id: node.id, label: nodeTpl ? nodeTpl : node.label, node: node }]\"\r\n [disabled]=\"node.disabled\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"checkedChange($event, source)\"\r\n ></x-checkbox>\r\n</ng-template>\r\n", styles: [".x-transfer{margin:0;padding:0;display:inline-flex;align-items:center}.x-transfer-title{padding:.25rem .5625rem;display:flex;align-items:center;justify-content:space-between;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius);border-bottom:none;background-color:var(--x-background);color:var(--x-text-300)}.x-transfer-total{margin-left:.325rem}.x-transfer-list{display:flex;flex-direction:column;height:18rem;width:12rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-bottom-left-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius);overflow:auto}.x-transfer-item{padding:.125rem .25rem;border-radius:var(--x-border-radius);display:flex;align-items:center;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-transfer-droplist{height:100%;padding:.25rem}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item:hover{background-color:transparent}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item.cdk-drag-placeholder{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-transfer-buttons{margin:0 1rem;display:flex;flex-direction:column}.x-transfer-buttons>x-button:not(:first-child){margin-top:.5rem}.x-transfer-search{padding:.5rem;border-bottom:.0625rem solid var(--x-border)}body>li.x-transfer-item.cdk-drag-preview{padding:.125rem .25rem;border-radius:var(--x-border-radius);display:flex;align-items:center;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>li.x-transfer-item.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: i8.XButtonComponent, selector: "x-button" }, { kind: "component", type: i9.XTreeComponent, selector: "x-tree" }, { kind: "component", type: i10.XTableComponent, selector: "x-table" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferComponent, decorators: [{
|
|
490
490
|
type: Component,
|
|
491
491
|
args: [{ selector: `${XTransferPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTransferComponent)], template: "<div #transfer class=\"x-transfer\" cdkDropListGroup [ngClass]=\"classMap\">\r\n <div class=\"x-transfer-box\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: left }\"></ng-container>\r\n <div [ngStyle]=\"left.listStyle!\" class=\"x-transfer-list\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ul\r\n *ngSwitchCase=\"'list'\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"left.list\"\r\n [cdkDropListDisabled]=\"!drag && type === 'list'\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n <li class=\"x-transfer-item\" *ngFor=\"let node of left.list; trackBy: trackByNode\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: left }\"></ng-container>\r\n </li>\r\n </ul>\r\n <x-tree\r\n *ngSwitchCase=\"'tree'\"\r\n [data]=\"left.list!\"\r\n multiple\r\n allowManyActivated\r\n [(activatedId)]=\"treeActivatedId\"\r\n (nodeClick)=\"onTreeNodeClick($event)\"\r\n ></x-tree>\r\n <x-table\r\n *ngSwitchCase=\"'table'\"\r\n [data]=\"tableData\"\r\n [columns]=\"tableColumns!\"\r\n [(size)]=\"tableSize\"\r\n [(index)]=\"tableIndex\"\r\n (indexChange)=\"getTableData()\"\r\n [query]=\"tableQuery\"\r\n [total]=\"tableTotal\"\r\n (activatedRowChange)=\"onTableCheckedRow($event, left)\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, left)\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n ></x-table>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"x-transfer-buttons\">\r\n <x-button type=\"primary\" icon=\"fto-chevron-right\" [disabled]=\"left.disabledButton\" (click)=\"move(left, right)\"></x-button>\r\n <x-button type=\"primary\" icon=\"fto-chevron-left\" [disabled]=\"right.disabledButton\" (click)=\"move(right, left)\"></x-button>\r\n </div>\r\n <div class=\"x-transfer-box\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: right }\"></ng-container>\r\n <div [ngSwitch]=\"type\" [ngStyle]=\"right.listStyle!\" class=\"x-transfer-list\">\r\n <x-table\r\n *ngSwitchCase=\"'table'\"\r\n [data]=\"right.list!\"\r\n [columns]=\"tableColumns!\"\r\n (activatedRowChange)=\"onTableCheckedRow($event, right)\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, right)\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showPagination=\"false\"\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n ></x-table>\r\n <ul\r\n *ngSwitchDefault\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"right.list\"\r\n [cdkDropListDisabled]=\"!drag || (drag && type !== 'list')\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n <li class=\"x-transfer-item\" *ngFor=\"let node of right.list; trackBy: trackByNode\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: right }\"></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #sourceTitleTpl let-source=\"source\">\r\n <div class=\"x-transfer-title\">\r\n <x-checkbox\r\n *ngIf=\"source.title && !source.hiddenCheckAll\"\r\n [data]=\"[titleTpl ? '' : source.title]\"\r\n [(ngModel)]=\"source.checkedAll\"\r\n (ngModelChange)=\"checkedAllChange($event, source)\"\r\n [indeterminate]=\"source.indeterminate\"\r\n ></x-checkbox>\r\n <span *ngIf=\"source.title && source.hiddenCheckAll\">{{ source.title }}</span>\r\n <ng-container *xOutlet=\"titleTpl; context: { $title: source.title, $checkedCount: source.checkedCount, $count: source.count }\"\r\n ><span class=\"x-transfer-total\">{{ source.checkedCount }} / {{ source.count }}</span></ng-container\r\n >\r\n </div>\r\n <!-- <div class=\"x-transfer-search\" *ngIf=\"search\">\r\n <x-input\r\n icon=\"fto-search\"\r\n [(ngModel)]=\"source.searchInput\"\r\n (ngModelChange)=\"searchInputChange(source)\"\r\n clearable\r\n ></x-input>\r\n </div> -->\r\n</ng-template>\r\n\r\n<ng-template #sourceNodeTpl let-node=\"node\" let-source=\"source\">\r\n <x-checkbox\r\n [data]=\"[{ id: node.id, label: nodeTpl ? nodeTpl : node.label, node: node }]\"\r\n [disabled]=\"node.disabled\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"checkedChange($event, source)\"\r\n ></x-checkbox>\r\n</ng-template>\r\n", styles: [".x-transfer{margin:0;padding:0;display:inline-flex;align-items:center}.x-transfer-title{padding:.25rem .5625rem;display:flex;align-items:center;justify-content:space-between;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius);border-bottom:none;background-color:var(--x-background);color:var(--x-text-300)}.x-transfer-total{margin-left:.325rem}.x-transfer-list{display:flex;flex-direction:column;height:18rem;width:12rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-bottom-left-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius);overflow:auto}.x-transfer-item{padding:.125rem .25rem;border-radius:var(--x-border-radius);display:flex;align-items:center;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-transfer-droplist{height:100%;padding:.25rem}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item:hover{background-color:transparent}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item.cdk-drag-placeholder{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-transfer-droplist.cdk-drop-list-dragging .x-transfer-item:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-transfer-buttons{margin:0 1rem;display:flex;flex-direction:column}.x-transfer-buttons>x-button:not(:first-child){margin-top:.5rem}.x-transfer-search{padding:.5rem;border-bottom:.0625rem solid var(--x-border)}body>li.x-transfer-item.cdk-drag-preview{padding:.125rem .25rem;border-radius:var(--x-border-radius);display:flex;align-items:center;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>li.x-transfer-item.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"] }]
|
|
492
492
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }, { type: i2.XI18nService }]; } });
|
|
493
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJhbnNmZXIvdHJhbnNmZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJhbnNmZXIvdHJhbnNmZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBSXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWtDLGlCQUFpQixFQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hILE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFFBQVEsRUFFUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxjQUFjLEVBQ2QsVUFBVSxFQUNWLFdBQVcsRUFFWixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUF3QixNQUFNLHdCQUF3QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBYXZELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFpRHZELFlBQ1MsUUFBbUIsRUFDbkIsVUFBc0IsRUFDYixHQUFzQixFQUMvQixhQUE2QixFQUM3QixJQUFrQjtRQUV6QixLQUFLLEVBQUUsQ0FBQztRQU5ELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNiLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtR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QUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOztrSUE3ZFUsa0JBQWtCO3NIQUFsQixrQkFBa0IscUNBRmxCLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsc0VDeENqRCx1Z0tBcUhBOzJGRDNFYSxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsR0FBRyxlQUFlLEVBQUUsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmFuc2ZlclByZWZpeCwgWFRyYW5zZmVyTm9kZSwgWFRyYW5zZmVyU291cmNlLCBYVHJhbnNmZXJQcm9wZXJ0eSwgWFRyYW5zZmVyVHlwZSB9IGZyb20gJy4vdHJhbnNmZXIucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0NoYW5nZSxcclxuICBYSXNFbXB0eSxcclxuICBYU2V0RGF0YSxcclxuICBYQ29uZmlnU2VydmljZSxcclxuICBYUmVtb3ZlLFxyXG4gIFhJc0FycmF5LFxyXG4gIFhJc09iamVjdCxcclxuICBYSXNPYmplY3RBcnJheSxcclxuICBYSXNCb29sZWFuLFxyXG4gIFhJc0Z1bmN0aW9uLFxyXG4gIFhSZXN1bHRMaXN0XHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHRyYW5zZmVyQXJyYXlJdGVtLCBtb3ZlSXRlbUluQXJyYXksIENka0RyYWdEcm9wLCBDZGtEcmFnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4blRyYW5zZmVyIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IFhUcmVlTm9kZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3RyZWUnO1xyXG5pbXBvcnQgeyBYVGFibGVDb2x1bW4gfSBmcm9tICdAbmctbmVzdC91aS90YWJsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRyYW5zZmVyUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYW5zZmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmFuc2Zlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWFRyYW5zZmVyQ29tcG9uZW50KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmFuc2ZlckNvbXBvbmVudCBleHRlbmRzIFhUcmFuc2ZlclByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgbm9kZXM6IFhUcmFuc2Zlck5vZGVbXSA9IFtdO1xyXG4gIGxlZnQ6IFhUcmFuc2ZlclNvdXJjZSA9IHtcclxuICAgIGxpc3Q6IFtdLFxyXG4gICAgc2VhcmNoTGlzdDogW10sXHJcbiAgICBjaGVja2VkQ291bnQ6IDAsXHJcbiAgICBkaXJlY3Rpb246ICdsZWZ0JyxcclxuICAgIGRpc2FibGVkQnV0dG9uOiB0cnVlXHJcbiAgfTtcclxuICByaWdodDogWFRyYW5zZmVyU291cmNlID0ge1xyXG4gICAgbGlzdDogW10sXHJcbiAgICBzZWFyY2hMaXN0OiBbXSxcclxuICAgIGNoZWNrZWRDb3VudDogMCxcclxuICAgIGRpcmVjdGlvbjogJ3JpZ2h0JyxcclxuICAgIGRpc2FibGVkQnV0dG9uOiB0cnVlXHJcbiAgfTtcclxuICBzZWFyY2hJbnB1dDogc3RyaW5nID0gJyc7XHJcbiAgbG9jYWxlOiBYSTE4blRyYW5zZmVyID0ge307XHJcbiAgcHJpdmF0ZSBnZXQgbG9jYWxUaXRsZSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd0cmVlJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUudHJlZVRpdGxlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmxpc3RUaXRsZTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICB0cmVlQWN0aXZhdGVkSWQ6IGFueVtdID0gW107XHJcbiAgdGFibGVEYXRhOiBYVHJhbnNmZXJOb2RlW10gPSBbXTtcclxuICB0YWJsZUNoZWNrYm94Q29sdW1uPzogWFRhYmxlQ29sdW1uO1xyXG4gIGlzT2JqZWN0QXJyYXkgPSBmYWxzZTtcclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKFhJc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZCA9IFsuLi52YWx1ZV07XHJcbiAgICAgIGlmIChYSXNPYmplY3RBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmlzT2JqZWN0QXJyYXkgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldExpc3QodGhpcy5ub2Rlcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWVzKCkge1xyXG4gICAgaWYgKHRoaXMuaXNPYmplY3RBcnJheSkge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoKHgpID0+IHguaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZSxcclxuICAgIHB1YmxpYyBpMThuOiBYSTE4blNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0VGl0bGVzKCk7XHJcbiAgICB0aGlzLnNldExpc3RTdHlsZSgpO1xyXG4gICAgdGhpcy5zZXRIaWRkZW5DaGVja0FsbCgpO1xyXG4gICAgdGhpcy5nZXRUYWJsZUNoZWNrQ29sdW1uKCk7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT4geC50cmFuc2ZlciBhcyBYSTE4blRyYW5zZmVyKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IHg7XHJcbiAgICAgICAgWElzRW1wdHkodGhpcy50aXRsZXMpICYmIHRoaXMuc2V0VGl0bGVzKCk7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRhdGEpICYmIHRoaXMuc2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hJbnB1dENoYW5nZShzb3VyY2U6IFhUcmFuc2ZlclNvdXJjZSkge1xyXG4gICAgc291cmNlLmxpc3QgPSBzb3VyY2Uuc2VhcmNoTGlzdD8uZmlsdGVyKCh4KSA9PiB4LmxhYmVsLmluZGV4T2Yoc291cmNlLnNlYXJjaElucHV0KSA+PSAwKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrZWRBbGxDaGFuZ2UoJGV2ZW50OiBib29sZWFuLCBzb3VyY2U6IFhUcmFuc2ZlclNvdXJjZSkge1xyXG4gICAgbGV0IGxpc3Q6IFhUcmFuc2Zlck5vZGVbXSA9IChzb3VyY2UubGlzdD8uZmlsdGVyKCh4KSA9PiAheC5kaXNhYmxlZCkgYXMgWFRyYW5zZmVyTm9kZVtdKS5tYXAoKHgpID0+IHtcclxuICAgICAgeC5jaGVja2VkID0gJGV2ZW50O1xyXG4gICAgICByZXR1cm4geDtcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RyZWUnICYmIHNvdXJjZS5kaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZCA9ICRldmVudCA/IHNvdXJjZS5saXN0IS5tYXAoKHgpID0+IHguaWQpISA6IHNvdXJjZS5saXN0IS5maWx0ZXIoKHgpID0+IHguZGlzYWJsZWQpLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICB9XHJcbiAgICBzb3VyY2UuY2hlY2tlZENvdW50ID0gJGV2ZW50ID8gbGlzdC5sZW5ndGggOiAwO1xyXG4gICAgc291cmNlLmluZGV0ZXJtaW5hdGUgPSAkZXZlbnQ7XHJcbiAgICB0aGlzLnNldEJ1dHRvbkRpc2FibGVkKHNvdXJjZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja2VkQ2hhbmdlKCRldmVudDogYm9vbGVhbiwgc291cmNlOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIGlmICghJGV2ZW50KSAoc291cmNlLmNoZWNrZWRDb3VudCBhcyBudW1iZXIpLS07XHJcbiAgICBlbHNlIChzb3VyY2UuY2hlY2tlZENvdW50IGFzIG51bWJlcikrKztcclxuICAgIHRoaXMuc2V0Q2hlY2tlZEFsbChzb3VyY2UpO1xyXG4gICAgdGhpcy5zZXRCdXR0b25EaXNhYmxlZChzb3VyY2UpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbW92ZShmcm9tOiBYVHJhbnNmZXJTb3VyY2UsIHRvOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIGlmIChmcm9tLmRpc2FibGVkQnV0dG9uKSByZXR1cm47XHJcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xyXG4gICAgICBjYXNlICdsaXN0JzpcclxuICAgICAgICB0aGlzLm1vdmVMaXN0KGZyb20sIHRvKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndHJlZSc6XHJcbiAgICAgICAgdGhpcy5tb3ZlVHJlZShmcm9tLCB0byk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RhYmxlJzpcclxuICAgICAgICB0aGlzLm1vdmVUYWJsZShmcm9tLCB0byk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vdmVMaXN0KGZyb206IFhUcmFuc2ZlclNvdXJjZSwgdG86IFhUcmFuc2ZlclNvdXJjZSkge1xyXG4gICAgbGV0IGNoZWNrZWRJdGVtcyA9IGZyb20ubGlzdD8uZmlsdGVyKCh4KSA9PiAheC5kaXNhYmxlZCAmJiB4LmNoZWNrZWQpITtcclxuICAgIGxldCBqID0gMDtcclxuICAgIGNoZWNrZWRJdGVtcy5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gZnJvbS5saXN0Py5pbmRleE9mKHgpIGFzIG51bWJlcjtcclxuICAgICAgeC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKGZyb20ubGlzdCEsIHRvLmxpc3QhLCBpbmRleCwgaik7XHJcbiAgICAgIGorKztcclxuICAgIH0pO1xyXG4gICAgZnJvbS5saXN0ID0gWy4uLmZyb20ubGlzdCFdO1xyXG4gICAgdG8ubGlzdCA9IFsuLi50by5saXN0IV07XHJcbiAgICB0aGlzLnNldENoZWNrZWRDb3VudCgnbGlzdCcsIGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0TGlzdENvdW50KCdsaXN0JywgZnJvbSwgdG8pO1xyXG4gICAgdGhpcy5zZXRDaGVja2VkQWxsKGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQoZnJvbSwgdG8pO1xyXG4gICAgdGhpcy5zZXRTZWFyY2hMaXN0KGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0VmFsdWUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW92ZVRyZWUoZnJvbTogWFRyYW5zZmVyU291cmNlLCB0bzogWFRyYW5zZmVyU291cmNlKSB7XHJcbiAgICBsZXQgY2hlY2tlZEl0ZW1zOiBYVHJhbnNmZXJOb2RlW10gPSBbXTtcclxuICAgIGlmICh0by5kaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgY2hlY2tlZEl0ZW1zID0gZnJvbS5saXN0Py5maWx0ZXIoKHgpID0+ICF4LmRpc2FibGVkICYmICFYSXNFbXB0eSh0aGlzLnRyZWVBY3RpdmF0ZWRJZCkgJiYgdGhpcy50cmVlQWN0aXZhdGVkSWQuaW5jbHVkZXMoeC5pZCkpITtcclxuICAgICAgY2hlY2tlZEl0ZW1zLmZvckVhY2goKHg6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIHguZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0by5saXN0Py51bnNoaWZ0KFxyXG4gICAgICAgIC4uLmNoZWNrZWRJdGVtcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgIGxldCByZXMgPSB7IC4uLnggfTtcclxuICAgICAgICAgIHJlcy5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ3RyZWUnLCBmcm9tKTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ2xpc3QnLCB0byk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja2VkSXRlbXMgPSBYUmVtb3ZlKGZyb20ubGlzdCEsICh4KSA9PiAheC5kaXNhYmxlZCAmJiB4LmNoZWNrZWQhKTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiBjaGVja2VkSXRlbXMpIHtcclxuICAgICAgICBsZXQgbm9kZTogWFRyZWVOb2RlID0gdG8ubGlzdD8uZmluZCgoeCkgPT4geC5pZCA9PT0gaXRlbS5pZCkhO1xyXG4gICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICBub2RlLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIG5vZGUuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMudHJlZUFjdGl2YXRlZElkLmZpbmRJbmRleCgoeCkgPT4geCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldENoZWNrZWRDb3VudCgndHJlZScsIHRvKTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ2xpc3QnLCBmcm9tKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0Q2hlY2tlZEFsbChmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldExpc3RDb3VudCgnbGlzdCcsIGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQoZnJvbSwgdG8pO1xyXG4gICAgdGhpcy5zZXRTZWFyY2hMaXN0KGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW92ZVRhYmxlKGZyb206IFhUcmFuc2ZlclNvdXJjZSwgdG86IFhUcmFuc2ZlclNvdXJjZSkge1xyXG4gICAgbGV0IGNoZWNrZWRJdGVtczogWFRyYW5zZmVyTm9kZVtdID0gW107XHJcbiAgICBpZiAodG8uZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XHJcbiAgICAgIGNoZWNrZWRJdGVtcyA9IGZyb20ubGlzdD8uZmlsdGVyKCh4KSA9PiAheC5kaXNhYmxlZCAmJiB4LmNoZWNrZWQpITtcclxuICAgICAgdG8ubGlzdCA9IFtcclxuICAgICAgICAuLi5jaGVja2VkSXRlbXMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXMgPSB7IC4uLnggfTtcclxuICAgICAgICAgIHguZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgeC5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIHJlcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmVzLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgLi4udG8ubGlzdCFcclxuICAgICAgXTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSBbLi4uZnJvbS5saXN0IV07XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCd0YWJsZScsIGZyb20pO1xyXG4gICAgICB0aGlzLnNldENoZWNrZWRDb3VudCgnbGlzdCcsIHRvKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNoZWNrZWRJdGVtcyA9IFhSZW1vdmUoZnJvbS5saXN0ISwgKHgpID0+ICF4LmRpc2FibGVkICYmIHguY2hlY2tlZCEpO1xyXG4gICAgICBjb25zdCBpZHMgPSBjaGVja2VkSXRlbXMubWFwKCh4KSA9PiB4LmlkKTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0by5saXN0ISkge1xyXG4gICAgICAgIGlmIChpZHMuaW5jbHVkZXMoaXRlbS5pZCkpIHtcclxuICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmcm9tLmxpc3QgPSBbLi4uZnJvbS5saXN0IV07XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gWy4uLnRvLmxpc3QhXTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ3RhYmxlJywgdG8pO1xyXG4gICAgICB0aGlzLnNldENoZWNrZWRDb3VudCgnbGlzdCcsIGZyb20pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRMaXN0Q291bnQoJ3RhYmxlJywgZnJvbSwgdG8pO1xyXG4gICAgdGhpcy5zZXRDaGVja2VkQWxsKGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQoZnJvbSwgdG8pO1xyXG4gICAgdGhpcy5zZXRTZWFyY2hMaXN0KGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGRyb3BDZGsoZXZlbnQ6IENka0RyYWdEcm9wPFhUcmFuc2Zlck5vZGVbXSB8IHVuZGVmaW5lZCwgYW55Pikge1xyXG4gICAgY29uc3QgZXYgPSBldmVudCBhcyBDZGtEcmFnRHJvcDxYVHJhbnNmZXJOb2RlW10+O1xyXG4gICAgaWYgKGV2LnByZXZpb3VzQ29udGFpbmVyID09PSBldi5jb250YWluZXIpIHtcclxuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2LmNvbnRhaW5lci5kYXRhLCBldi5wcmV2aW91c0luZGV4LCBldi5jdXJyZW50SW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXYucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXYuY29udGFpbmVyLmRhdGEsIGV2LnByZXZpb3VzSW5kZXgsIGV2LmN1cnJlbnRJbmRleCk7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCdsaXN0JywgdGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQWxsKHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0TGlzdENvdW50KCdsaXN0JywgdGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgdGhpcy5zZXRCdXR0b25EaXNhYmxlZCh0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTZWFyY2hMaXN0KHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICB0aGlzLnNldFZhbHVlKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcmVkaWNhdGUoaXRlbTogQ2RrRHJhZzxYVHJhbnNmZXJOb2RlPikge1xyXG4gICAgcmV0dXJuICFpdGVtLmRhdGEuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Tm9kZShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyYW5zZmVyTm9kZSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICBzZXRMaXN0Q291bnQodHlwZTogWFRyYW5zZmVyVHlwZSA9ICdsaXN0JywgLi4uc291cmNlczogWFRyYW5zZmVyU291cmNlW10pIHtcclxuICAgIGlmIChbJ2xpc3QnLCAndHJlZSddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgc291cmNlLmNvdW50ID0gc291cmNlLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQpLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndGFibGUnKSB7XHJcbiAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZS5kaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgc291cmNlLmNvdW50ID0gdGhpcy50YWJsZVRvdGFsIC0gdGhpcy5yaWdodC5saXN0IS5sZW5ndGggfHwgMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc291cmNlLmNvdW50ID0gc291cmNlLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQpLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVHJlZU5vZGVDbGljayhfbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICB0aGlzLnNldENoZWNrZWRDb3VudCgndHJlZScsIHRoaXMubGVmdCk7XHJcbiAgICB0aGlzLnNldENoZWNrZWRBbGwodGhpcy5sZWZ0KTtcclxuICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQodGhpcy5sZWZ0KTtcclxuICB9XHJcblxyXG4gIG9uVGFibGVDaGVja2VkUm93KHJvdzogWFRyYW5zZmVyTm9kZSwgc291cmNlOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIGlmICghdGhpcy50YWJsZUNoZWNrYm94Q29sdW1uKSByZXR1cm47XHJcbiAgICBsZXQgY2hlY2tlZCA9IHJvd1t0aGlzLnRhYmxlQ2hlY2tib3hDb2x1bW4uaWRdO1xyXG4gICAgcm93LmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ3RhYmxlJywgc291cmNlKTtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZEFsbChzb3VyY2UpO1xyXG4gICAgdGhpcy5zZXRCdXR0b25EaXNhYmxlZChzb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgb25UYWJsZUNoZWNrZWRBbGwocm93OiB7IFtwcm9wOiBzdHJpbmddOiBib29sZWFuIH0sIHNvdXJjZTogWFRyYW5zZmVyU291cmNlKSB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVDaGVja2JveENvbHVtbikgcmV0dXJuO1xyXG4gICAgbGV0IGNoZWNrZWQgPSByb3dbdGhpcy50YWJsZUNoZWNrYm94Q29sdW1uLmlkXTtcclxuICAgIGZvciAobGV0IGl0ZW0gb2Ygc291cmNlLmxpc3QhKSB7XHJcbiAgICAgIGlmICghaXRlbS5kaXNhYmxlZCkge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGNoZWNrZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCd0YWJsZScsIHNvdXJjZSk7XHJcbiAgICB0aGlzLnNldEJ1dHRvbkRpc2FibGVkKHNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRhYmxlQ2hlY2tDb2x1bW4oKSB7XHJcbiAgICBpZiAodGhpcy50eXBlICE9PSAndGFibGUnIHx8IFhJc0VtcHR5KHRoaXMudGFibGVDb2x1bW5zKSkgcmV0dXJuO1xyXG4gICAgdGhpcy50YWJsZUNoZWNrYm94Q29sdW1uID0gdGhpcy50YWJsZUNvbHVtbnM/LmZpbmQoKHgpID0+IHgucm93Q2hlY2tlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENoZWNrZWRBbGwoLi4uc291cmNlczogWFRyYW5zZmVyU291cmNlW10pIHtcclxuICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgIGlmICgoc291cmNlLmNoZWNrZWRDb3VudCBhcyBudW1iZXIpID4gMCkge1xyXG4gICAgICAgIGlmIChzb3VyY2UuY2hlY2tlZENvdW50ID09PSBzb3VyY2UubGlzdD8uZmlsdGVyKCh4KSA9PiAheC5kaXNhYmxlZCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICBzb3VyY2UuY2hlY2tlZEFsbCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvdXJjZS5jaGVja2VkQWxsID0gZmFsc2U7XHJcbiAgICAgICAgICBzb3VyY2UuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNvdXJjZS5jaGVja2VkQWxsID0gZmFsc2U7XHJcbiAgICAgICAgc291cmNlLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDaGVja2VkQ291bnQodHlwZTogWFRyYW5zZmVyVHlwZSA9ICdsaXN0JywgLi4uc291cmNlczogWFRyYW5zZmVyU291cmNlW10pIHtcclxuICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgIGlmIChbJ3RhYmxlJywgJ2xpc3QnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgIHNvdXJjZS5jaGVja2VkQ291bnQgPSBzb3VyY2UubGlzdD8uZmlsdGVyKCh4KSA9PiAheC5kaXNhYmxlZCAmJiB4LmNoZWNrZWQpLmxlbmd0aDtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndHJlZScpIHtcclxuICAgICAgICBzb3VyY2UuY2hlY2tlZENvdW50ID0gc291cmNlLmxpc3Q/LmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiAheC5kaXNhYmxlZCAmJiAhWElzRW1wdHkodGhpcy50cmVlQWN0aXZhdGVkSWQpICYmIHRoaXMudHJlZUFjdGl2YXRlZElkLmluY2x1ZGVzKHguaWQpXHJcbiAgICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QnV0dG9uRGlzYWJsZWQoLi4uc291cmNlczogWFRyYW5zZmVyU291cmNlW10pIHtcclxuICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSBzb3VyY2UuZGlzYWJsZWRCdXR0b24gPSBzb3VyY2UuY2hlY2tlZENvdW50ID09PSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLmlzT2JqZWN0QXJyYXkpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmlnaHQubGlzdCE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yaWdodC5saXN0Py5tYXAoKHgpID0+IHguaWQpITtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNlYXJjaExpc3QoLi4uX3NvdXJjZXM6IFhUcmFuc2ZlclNvdXJjZVtdKSB7XHJcbiAgICAvLyBpZiAodGhpcy5zZWFyY2gpIHtcclxuICAgIC8vICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcclxuICAgIC8vICAgICBpZiAoWElzRW1wdHkoc291cmNlLnNlYXJjaElucHV0KSkge1xyXG4gICAgLy8gICAgICAgc291cmNlLnNlYXJjaExpc3QgPSBbLi4uKHNvdXJjZS5saXN0IGFzIFhUcmFuc2Zlck5vZGVbXSldO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRhKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RhYmxlJykge1xyXG4gICAgICB0aGlzLmdldFRhYmxlRGF0YSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBYU2V0RGF0YTxYVHJhbnNmZXJOb2RlPih0aGlzLmRhdGEsIHRoaXMuX3VuU3ViamVjdCkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0TGlzdCh4KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMaXN0KGRhdGE6IFhUcmFuc2Zlck5vZGVbXSkge1xyXG4gICAgaWYgKFhJc0VtcHR5KGRhdGEpKSByZXR1cm47XHJcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xyXG4gICAgICBjYXNlICdsaXN0JzpcclxuICAgICAgICB0aGlzLm5vZGVzID0gZGF0YTtcclxuICAgICAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWVzKSkge1xyXG4gICAgICAgICAgdGhpcy5sZWZ0Lmxpc3QgPSB0aGlzLm5vZGVzLmZpbHRlcigoeCkgPT4gdGhpcy52YWx1ZXMuaW5kZXhPZih4LmlkKSA8IDApO1xyXG4gICAgICAgICAgdGhpcy5yaWdodC5saXN0ID0gdGhpcy5ub2Rlcy5maWx0ZXIoKHgpID0+IHRoaXMudmFsdWVzLmluZGV4T2YoeC5pZCkgPj0gMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubGVmdC5saXN0ID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFNlYXJjaExpc3QodGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgICB0aGlzLnNldExpc3RDb3VudCh0aGlzLnR5cGUsIHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RyZWUnOlxyXG4gICAgICAgIHRoaXMubm9kZXMgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuc2V0VHJlZU5vZGVEaXNhYmxlZCgpO1xyXG4gICAgICAgIHRoaXMubGVmdC5saXN0ID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZXMpKSB7XHJcbiAgICAgICAgICB0aGlzLnJpZ2h0Lmxpc3QgPSB0aGlzLm5vZGVzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHRoaXMudmFsdWVzLmluZGV4T2YoeC5pZCkgPj0gMClcclxuICAgICAgICAgICAgLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCByZXMgPSB7IC4uLnggfTtcclxuICAgICAgICAgICAgICByZXMuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJlcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFNlYXJjaExpc3QodGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgICB0aGlzLnNldExpc3RDb3VudCh0aGlzLnR5cGUsIHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RhYmxlJzpcclxuICAgICAgICB0aGlzLm5vZGVzID0gZGF0YTtcclxuICAgICAgICB0aGlzLnNldFRhYmxlRGF0YURpc2FibGVkKCk7XHJcbiAgICAgICAgdGhpcy5sZWZ0Lmxpc3QgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlcykpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzT2JqZWN0QXJyYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5yaWdodC5saXN0ID0gW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMudmFsdWUubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0geyAuLi54IH07XHJcbiAgICAgICAgICAgICAgICByZXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJlcy5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJpZ2h0Lmxpc3QgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U2VhcmNoTGlzdCh0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xyXG4gICAgICAgIHRoaXMuc2V0TGlzdENvdW50KHRoaXMudHlwZSwgdGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldFRhYmxlRGF0YSgpIHtcclxuICAgIGlmIChYSXNGdW5jdGlvbih0aGlzLmRhdGEpKSB7XHJcbiAgICAgICh0aGlzLmRhdGEgYXMgRnVuY3Rpb24pKHRoaXMudGFibGVJbmRleCwgdGhpcy50YWJsZVNpemUsIHRoaXMudGFibGVRdWVyeSkuc3Vic2NyaWJlKCh4OiBYUmVzdWx0TGlzdDxYVHJhbnNmZXJOb2RlPikgPT4ge1xyXG4gICAgICAgIHRoaXMudGFibGVUb3RhbCA9IHgudG90YWwhO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0geC5saXN0ITtcclxuICAgICAgICB0aGlzLnNldExpc3QoeC5saXN0ISk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUaXRsZXMoKSB7XHJcbiAgICBsZXQgdGl0bGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGl0bGVzKSkge1xyXG4gICAgICB0aXRsZXMgPSBbdGhpcy5sb2NhbFRpdGxlISwgdGhpcy5sb2NhbGUuc2VsZWN0ZWRUaXRsZSFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGl0bGVzID0gdGhpcy50aXRsZXM7XHJcbiAgICB9XHJcbiAgICBpZiAodGl0bGVzLmxlbmd0aCA+IDApIHRoaXMubGVmdC50aXRsZSA9IHRpdGxlc1swXTtcclxuICAgIGlmICh0aXRsZXMubGVuZ3RoID4gMSkgdGhpcy5yaWdodC50aXRsZSA9IHRpdGxlc1sxXTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TGlzdFN0eWxlKCkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubGlzdFN0eWxlKSkgcmV0dXJuO1xyXG4gICAgbGV0IHN0eWxlczogb2JqZWN0W10gPSBbXTtcclxuICAgIGlmIChYSXNPYmplY3QodGhpcy5saXN0U3R5bGUpKSB7XHJcbiAgICAgIHN0eWxlcyA9IFt0aGlzLmxpc3RTdHlsZSwgdGhpcy5saXN0U3R5bGVdO1xyXG4gICAgfSBlbHNlIGlmIChYSXNPYmplY3RBcnJheSh0aGlzLmxpc3RTdHlsZSkpIHtcclxuICAgICAgc3R5bGVzID0gdGhpcy5saXN0U3R5bGUgYXMgb2JqZWN0W107XHJcbiAgICB9XHJcbiAgICBpZiAoc3R5bGVzLmxlbmd0aCA+IDApIHRoaXMubGVmdC5saXN0U3R5bGUgPSBzdHlsZXNbMF07XHJcbiAgICBpZiAoc3R5bGVzLmxlbmd0aCA+IDEpIHRoaXMucmlnaHQubGlzdFN0eWxlID0gc3R5bGVzWzFdO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUcmVlTm9kZURpc2FibGVkKCkge1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlcykgJiYgdGhpcy5ub2Rlcykge1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMubm9kZXMpIHtcclxuICAgICAgICBsZXQgaGFzSW4gPSB0aGlzLnZhbHVlcy5pbmRleE9mKGl0ZW0uaWQpID49IDA7XHJcbiAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGhhc0luO1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGhhc0luO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRhYmxlRGF0YURpc2FibGVkKCkge1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlcykgJiYgdGhpcy5ub2Rlcykge1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMubm9kZXMpIHtcclxuICAgICAgICBsZXQgaGFzSW4gPSB0aGlzLnZhbHVlcy5pbmRleE9mKGl0ZW0uaWQpID49IDA7XHJcbiAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGhhc0luO1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGhhc0luO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEhpZGRlbkNoZWNrQWxsKCkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMuaGlkZGVuQ2hlY2tBbGwpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5oaWRkZW5DaGVja0FsbCEubGVuZ3RoID4gMCAmJiBYSXNCb29sZWFuKHRoaXMuaGlkZGVuQ2hlY2tBbGwhWzBdKSkgdGhpcy5sZWZ0LmhpZGRlbkNoZWNrQWxsID0gdGhpcy5oaWRkZW5DaGVja0FsbCFbMF07XHJcbiAgICBpZiAodGhpcy5oaWRkZW5DaGVja0FsbCEubGVuZ3RoID4gMSAmJiBYSXNCb29sZWFuKHRoaXMuaGlkZGVuQ2hlY2tBbGwhWzFdKSkgdGhpcy5yaWdodC5oaWRkZW5DaGVja0FsbCA9IHRoaXMuaGlkZGVuQ2hlY2tBbGwhWzFdO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICN0cmFuc2ZlciBjbGFzcz1cIngtdHJhbnNmZXJcIiBjZGtEcm9wTGlzdEdyb3VwIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtdHJhbnNmZXItYm94XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic291cmNlVGl0bGVUcGw7IGNvbnRleHQ6IHsgc291cmNlOiBsZWZ0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwibGVmdC5saXN0U3R5bGUhXCIgY2xhc3M9XCJ4LXRyYW5zZmVyLWxpc3RcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxyXG4gICAgICAgIDx1bFxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ2RrKCRldmVudClcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJsZWZ0Lmxpc3RcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWRyYWcgJiYgdHlwZSA9PT0gJ2xpc3QnXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cInByZWRpY2F0ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIngtdHJhbnNmZXItZHJvcGxpc3RcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIngtdHJhbnNmZXItaXRlbVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIGxlZnQubGlzdDsgdHJhY2tCeTogdHJhY2tCeU5vZGVcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJub2RlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VOb2RlVHBsOyBjb250ZXh0OiB7IG5vZGU6IG5vZGUsIHNvdXJjZTogbGVmdCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPHgtdHJlZVxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0cmVlJ1wiXHJcbiAgICAgICAgICBbZGF0YV09XCJsZWZ0Lmxpc3QhXCJcclxuICAgICAgICAgIG11bHRpcGxlXHJcbiAgICAgICAgICBhbGxvd01hbnlBY3RpdmF0ZWRcclxuICAgICAgICAgIFsoYWN0aXZhdGVkSWQpXT1cInRyZWVBY3RpdmF0ZWRJZFwiXHJcbiAgICAgICAgICAobm9kZUNsaWNrKT1cIm9uVHJlZU5vZGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICA+PC94LXRyZWU+XHJcbiAgICAgICAgPHgtdGFibGVcclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIndGFibGUnXCJcclxuICAgICAgICAgIFtkYXRhXT1cInRhYmxlRGF0YVwiXHJcbiAgICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbHVtbnMhXCJcclxuICAgICAgICAgIFsoc2l6ZSldPVwidGFibGVTaXplXCJcclxuICAgICAgICAgIFsoaW5kZXgpXT1cInRhYmxlSW5kZXhcIlxyXG4gICAgICAgICAgKGluZGV4Q2hhbmdlKT1cImdldFRhYmxlRGF0YSgpXCJcclxuICAgICAgICAgIFtxdWVyeV09XCJ0YWJsZVF1ZXJ5XCJcclxuICAgICAgICAgIFt0b3RhbF09XCJ0YWJsZVRvdGFsXCJcclxuICAgICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwib25UYWJsZUNoZWNrZWRSb3coJGV2ZW50LCBsZWZ0KVwiXHJcbiAgICAgICAgICAoaGVhZENoZWNrYm94Q2hhbmdlKT1cIm9uVGFibGVDaGVja2VkQWxsKCRldmVudCwgbGVmdClcIlxyXG4gICAgICAgICAgaGlkZGVuV3JhcEJvcmRlclxyXG4gICAgICAgICAgaGlkZGVuUGFnaW5hdGlvbkJvcmRlclxyXG4gICAgICAgICAgc2hvd0VsbGlwc2lzPVwiZmFsc2VcIlxyXG4gICAgICAgICAgc2hvd1RvdGFsPVwiZmFsc2VcIlxyXG4gICAgICAgICAgcGFnaW5hdGlvblBvc2l0aW9uPVwiYm90dG9tLWNlbnRlclwiXHJcbiAgICAgICAgICBhbGxvd1NlbGVjdFJvdz1cImZhbHNlXCJcclxuICAgICAgICA+PC94LXRhYmxlPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRyYW5zZmVyLWJ1dHRvbnNcIj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIGljb249XCJmdG8tY2hldnJvbi1yaWdodFwiIFtkaXNhYmxlZF09XCJsZWZ0LmRpc2FibGVkQnV0dG9uXCIgKGNsaWNrKT1cIm1vdmUobGVmdCwgcmlnaHQpXCI+PC94LWJ1dHRvbj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIGljb249XCJmdG8tY2hldnJvbi1sZWZ0XCIgW2Rpc2FibGVkXT1cInJpZ2h0LmRpc2FibGVkQnV0dG9uXCIgKGNsaWNrKT1cIm1vdmUocmlnaHQsIGxlZnQpXCI+PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmFuc2Zlci1ib3hcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VUaXRsZVRwbDsgY29udGV4dDogeyBzb3VyY2U6IHJpZ2h0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW25nU3dpdGNoXT1cInR5cGVcIiBbbmdTdHlsZV09XCJyaWdodC5saXN0U3R5bGUhXCIgY2xhc3M9XCJ4LXRyYW5zZmVyLWxpc3RcIj5cclxuICAgICAgPHgtdGFibGVcclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RhYmxlJ1wiXHJcbiAgICAgICAgW2RhdGFdPVwicmlnaHQubGlzdCFcIlxyXG4gICAgICAgIFtjb2x1bW5zXT1cInRhYmxlQ29sdW1ucyFcIlxyXG4gICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwib25UYWJsZUNoZWNrZWRSb3coJGV2ZW50LCByaWdodClcIlxyXG4gICAgICAgIChoZWFkQ2hlY2tib3hDaGFuZ2UpPVwib25UYWJsZUNoZWNrZWRBbGwoJGV2ZW50LCByaWdodClcIlxyXG4gICAgICAgIGhpZGRlbldyYXBCb3JkZXJcclxuICAgICAgICBoaWRkZW5QYWdpbmF0aW9uQm9yZGVyXHJcbiAgICAgICAgc2hvd1BhZ2luYXRpb249XCJmYWxzZVwiXHJcbiAgICAgICAgc2hvd0VsbGlwc2lzPVwiZmFsc2VcIlxyXG4gICAgICAgIHNob3dUb3RhbD1cImZhbHNlXCJcclxuICAgICAgICBwYWdpbmF0aW9uUG9zaXRpb249XCJib3R0b20tY2VudGVyXCJcclxuICAgICAgICBhbGxvd1NlbGVjdFJvdz1cImZhbHNlXCJcclxuICAgICAgPjwveC10YWJsZT5cclxuICAgICAgPHVsXHJcbiAgICAgICAgKm5nU3dpdGNoRGVmYXVsdFxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ2RrKCRldmVudClcIlxyXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwicmlnaHQubGlzdFwiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWRyYWcgfHwgKGRyYWcgJiYgdHlwZSAhPT0gJ2xpc3QnKVwiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwicHJlZGljYXRlXCJcclxuICAgICAgICBjbGFzcz1cIngtdHJhbnNmZXItZHJvcGxpc3RcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwieC10cmFuc2Zlci1pdGVtXCIgKm5nRm9yPVwibGV0IG5vZGUgb2YgcmlnaHQubGlzdDsgdHJhY2tCeTogdHJhY2tCeU5vZGVcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJub2RlXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic291cmNlTm9kZVRwbDsgY29udGV4dDogeyBub2RlOiBub2RlLCBzb3VyY2U6IHJpZ2h0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNzb3VyY2VUaXRsZVRwbCBsZXQtc291cmNlPVwic291cmNlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtdHJhbnNmZXItdGl0bGVcIj5cclxuICAgIDx4LWNoZWNrYm94XHJcbiAgICAgICpuZ0lmPVwic291cmNlLnRpdGxlICYmICFzb3VyY2UuaGlkZGVuQ2hlY2tBbGxcIlxyXG4gICAgICBbZGF0YV09XCJbdGl0bGVUcGwgPyAnJyA6IHNvdXJjZS50aXRsZV1cIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInNvdXJjZS5jaGVja2VkQWxsXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hlY2tlZEFsbENoYW5nZSgkZXZlbnQsIHNvdXJjZSlcIlxyXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzb3VyY2UuaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICA+PC94LWNoZWNrYm94PlxyXG4gICAgPHNwYW4gKm5nSWY9XCJzb3VyY2UudGl0bGUgJiYgc291cmNlLmhpZGRlbkNoZWNrQWxsXCI+e3sgc291cmNlLnRpdGxlIH19PC9zcGFuPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInRpdGxlVHBsOyBjb250ZXh0OiB7ICR0aXRsZTogc291cmNlLnRpdGxlLCAkY2hlY2tlZENvdW50OiBzb3VyY2UuY2hlY2tlZENvdW50LCAkY291bnQ6IHNvdXJjZS5jb3VudCB9XCJcclxuICAgICAgPjxzcGFuIGNsYXNzPVwieC10cmFuc2Zlci10b3RhbFwiPnt7IHNvdXJjZS5jaGVja2VkQ291bnQgfX0gLyB7eyBzb3VyY2UuY291bnQgfX08L3NwYW4+PC9uZy1jb250YWluZXJcclxuICAgID5cclxuICA8L2Rpdj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJ4LXRyYW5zZmVyLXNlYXJjaFwiICpuZ0lmPVwic2VhcmNoXCI+XHJcbiAgICA8eC1pbnB1dFxyXG4gICAgICBpY29uPVwiZnRvLXNlYXJjaFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwic291cmNlLnNlYXJjaElucHV0XCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoSW5wdXRDaGFuZ2Uoc291cmNlKVwiXHJcbiAgICAgIGNsZWFyYWJsZVxyXG4gICAgPjwveC1pbnB1dD5cclxuICA8L2Rpdj4gLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NvdXJjZU5vZGVUcGwgbGV0LW5vZGU9XCJub2RlXCIgbGV0LXNvdXJjZT1cInNvdXJjZVwiPlxyXG4gIDx4LWNoZWNrYm94XHJcbiAgICBbZGF0YV09XCJbeyBpZDogbm9kZS5pZCwgbGFiZWw6IG5vZGVUcGwgPyBub2RlVHBsIDogbm9kZS5sYWJlbCwgbm9kZTogbm9kZSB9XVwiXHJcbiAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIm5vZGUuY2hlY2tlZFwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjaGVja2VkQ2hhbmdlKCRldmVudCwgc291cmNlKVwiXHJcbiAgPjwveC1jaGVja2JveD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJhbnNmZXIvdHJhbnNmZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJhbnNmZXIvdHJhbnNmZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBSXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWtDLGlCQUFpQixFQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hILE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFFBQVEsRUFFUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxjQUFjLEVBQ2QsVUFBVSxFQUNWLFdBQVcsRUFFWixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUF3QixNQUFNLHdCQUF3QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBYXZELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFpRHZELFlBQ1MsUUFBbUIsRUFDbkIsVUFBc0IsRUFDYixHQUFzQixFQUMvQixhQUE2QixFQUM3QixJQUFrQjtRQUV6QixLQUFLLEVBQUUsQ0FBQztRQU5ELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNiLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtR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QUFDLENBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hJLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7a0lBN2RVLGtCQUFrQjtzSEFBbEIsa0JBQWtCLHFDQUZsQixDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLHNFQ3hDakQsdWdLQXFIQTsyRkQzRWEsa0JBQWtCO2tCQVI5QixTQUFTOytCQUNFLEdBQUcsZUFBZSxFQUFFLGlCQUdmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVHJhbnNmZXJQcmVmaXgsIFhUcmFuc2Zlck5vZGUsIFhUcmFuc2ZlclNvdXJjZSwgWFRyYW5zZmVyUHJvcGVydHksIFhUcmFuc2ZlclR5cGUgfSBmcm9tICcuL3RyYW5zZmVyLnByb3BlcnR5JztcclxuaW1wb3J0IHtcclxuICBYSXNDaGFuZ2UsXHJcbiAgWElzRW1wdHksXHJcbiAgWFNldERhdGEsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWFJlbW92ZSxcclxuICBYSXNBcnJheSxcclxuICBYSXNPYmplY3QsXHJcbiAgWElzT2JqZWN0QXJyYXksXHJcbiAgWElzQm9vbGVhbixcclxuICBYSXNGdW5jdGlvbixcclxuICBYUmVzdWx0TGlzdFxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyB0cmFuc2ZlckFycmF5SXRlbSwgbW92ZUl0ZW1JbkFycmF5LCBDZGtEcmFnRHJvcCwgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhJMThuU2VydmljZSwgWEkxOG5UcmFuc2ZlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGUgfSBmcm9tICdAbmctbmVzdC91aS90cmVlJztcclxuaW1wb3J0IHsgWFRhYmxlQ29sdW1uIH0gZnJvbSAnQG5nLW5lc3QvdWkvdGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUcmFuc2ZlclByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmFuc2Zlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJhbnNmZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhUcmFuc2ZlckNvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJhbnNmZXJDb21wb25lbnQgZXh0ZW5kcyBYVHJhbnNmZXJQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIG5vZGVzOiBYVHJhbnNmZXJOb2RlW10gPSBbXTtcclxuICBsZWZ0OiBYVHJhbnNmZXJTb3VyY2UgPSB7XHJcbiAgICBsaXN0OiBbXSxcclxuICAgIHNlYXJjaExpc3Q6IFtdLFxyXG4gICAgY2hlY2tlZENvdW50OiAwLFxyXG4gICAgZGlyZWN0aW9uOiAnbGVmdCcsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbjogdHJ1ZVxyXG4gIH07XHJcbiAgcmlnaHQ6IFhUcmFuc2ZlclNvdXJjZSA9IHtcclxuICAgIGxpc3Q6IFtdLFxyXG4gICAgc2VhcmNoTGlzdDogW10sXHJcbiAgICBjaGVja2VkQ291bnQ6IDAsXHJcbiAgICBkaXJlY3Rpb246ICdyaWdodCcsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbjogdHJ1ZVxyXG4gIH07XHJcbiAgc2VhcmNoSW5wdXQ6IHN0cmluZyA9ICcnO1xyXG4gIGxvY2FsZTogWEkxOG5UcmFuc2ZlciA9IHt9O1xyXG4gIHByaXZhdGUgZ2V0IGxvY2FsVGl0bGUoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAndHJlZScpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnRyZWVUaXRsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5saXN0VGl0bGU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgdHJlZUFjdGl2YXRlZElkOiBhbnlbXSA9IFtdO1xyXG4gIHRhYmxlRGF0YTogWFRyYW5zZmVyTm9kZVtdID0gW107XHJcbiAgdGFibGVDaGVja2JveENvbHVtbj86IFhUYWJsZUNvbHVtbjtcclxuICBpc09iamVjdEFycmF5ID0gZmFsc2U7XHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChYSXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQgPSBbLi4udmFsdWVdO1xyXG4gICAgICBpZiAoWElzT2JqZWN0QXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5pc09iamVjdEFycmF5ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRMaXN0KHRoaXMubm9kZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlcygpIHtcclxuICAgIGlmICh0aGlzLmlzT2JqZWN0QXJyYXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKCh4KSA9PiB4LmlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldFRpdGxlcygpO1xyXG4gICAgdGhpcy5zZXRMaXN0U3R5bGUoKTtcclxuICAgIHRoaXMuc2V0SGlkZGVuQ2hlY2tBbGwoKTtcclxuICAgIHRoaXMuZ2V0VGFibGVDaGVja0NvbHVtbigpO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHgudHJhbnNmZXIgYXMgWEkxOG5UcmFuc2ZlciksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIFhJc0VtcHR5KHRoaXMudGl0bGVzKSAmJiB0aGlzLnNldFRpdGxlcygpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZShkYXRhKSAmJiB0aGlzLnNldERhdGEoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoSW5wdXRDaGFuZ2Uoc291cmNlOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIHNvdXJjZS5saXN0ID0gc291cmNlLnNlYXJjaExpc3Q/LmZpbHRlcigoeCkgPT4geC5sYWJlbC5pbmRleE9mKHNvdXJjZS5zZWFyY2hJbnB1dCkgPj0gMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja2VkQWxsQ2hhbmdlKCRldmVudDogYm9vbGVhbiwgc291cmNlOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIGxldCBsaXN0OiBYVHJhbnNmZXJOb2RlW10gPSAoc291cmNlLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQpIGFzIFhUcmFuc2Zlck5vZGVbXSkubWFwKCh4KSA9PiB7XHJcbiAgICAgIHguY2hlY2tlZCA9ICRldmVudDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd0cmVlJyAmJiBzb3VyY2UuZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQgPSAkZXZlbnQgPyBzb3VyY2UubGlzdCEubWFwKCh4KSA9PiB4LmlkKSEgOiBzb3VyY2UubGlzdCEuZmlsdGVyKCh4KSA9PiB4LmRpc2FibGVkKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gICAgfVxyXG4gICAgc291cmNlLmNoZWNrZWRDb3VudCA9ICRldmVudCA/IGxpc3QubGVuZ3RoIDogMDtcclxuICAgIHNvdXJjZS5pbmRldGVybWluYXRlID0gJGV2ZW50O1xyXG4gICAgdGhpcy5zZXRCdXR0b25EaXNhYmxlZChzb3VyY2UpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tlZENoYW5nZSgkZXZlbnQ6IGJvb2xlYW4sIHNvdXJjZTogWFRyYW5zZmVyU291cmNlKSB7XHJcbiAgICBpZiAoISRldmVudCkgKHNvdXJjZS5jaGVja2VkQ291bnQgYXMgbnVtYmVyKS0tO1xyXG4gICAgZWxzZSAoc291cmNlLmNoZWNrZWRDb3VudCBhcyBudW1iZXIpKys7XHJcbiAgICB0aGlzLnNldENoZWNrZWRBbGwoc291cmNlKTtcclxuICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQoc291cmNlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG1vdmUoZnJvbTogWFRyYW5zZmVyU291cmNlLCB0bzogWFRyYW5zZmVyU291cmNlKSB7XHJcbiAgICBpZiAoZnJvbS5kaXNhYmxlZEJ1dHRvbikgcmV0dXJuO1xyXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcclxuICAgICAgY2FzZSAnbGlzdCc6XHJcbiAgICAgICAgdGhpcy5tb3ZlTGlzdChmcm9tLCB0byk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RyZWUnOlxyXG4gICAgICAgIHRoaXMubW92ZVRyZWUoZnJvbSwgdG8pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0YWJsZSc6XHJcbiAgICAgICAgdGhpcy5tb3ZlVGFibGUoZnJvbSwgdG8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb3ZlTGlzdChmcm9tOiBYVHJhbnNmZXJTb3VyY2UsIHRvOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIGxldCBjaGVja2VkSXRlbXMgPSBmcm9tLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQgJiYgeC5jaGVja2VkKSE7XHJcbiAgICBsZXQgaiA9IDA7XHJcbiAgICBjaGVja2VkSXRlbXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGZyb20ubGlzdD8uaW5kZXhPZih4KSBhcyBudW1iZXI7XHJcbiAgICAgIHguY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShmcm9tLmxpc3QhLCB0by5saXN0ISwgaW5kZXgsIGopO1xyXG4gICAgICBqKys7XHJcbiAgICB9KTtcclxuICAgIGZyb20ubGlzdCA9IFsuLi5mcm9tLmxpc3QhXTtcclxuICAgIHRvLmxpc3QgPSBbLi4udG8ubGlzdCFdO1xyXG4gICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ2xpc3QnLCBmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldExpc3RDb3VudCgnbGlzdCcsIGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZEFsbChmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldEJ1dHRvbkRpc2FibGVkKGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0U2VhcmNoTGlzdChmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldFZhbHVlKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vdmVUcmVlKGZyb206IFhUcmFuc2ZlclNvdXJjZSwgdG86IFhUcmFuc2ZlclNvdXJjZSkge1xyXG4gICAgbGV0IGNoZWNrZWRJdGVtczogWFRyYW5zZmVyTm9kZVtdID0gW107XHJcbiAgICBpZiAodG8uZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XHJcbiAgICAgIGNoZWNrZWRJdGVtcyA9IGZyb20ubGlzdD8uZmlsdGVyKCh4KSA9PiAheC5kaXNhYmxlZCAmJiAhWElzRW1wdHkodGhpcy50cmVlQWN0aXZhdGVkSWQpICYmIHRoaXMudHJlZUFjdGl2YXRlZElkLmluY2x1ZGVzKHguaWQpKSE7XHJcbiAgICAgIGNoZWNrZWRJdGVtcy5mb3JFYWNoKCh4OiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICB4LmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB4LmNoYW5nZSAmJiB4LmNoYW5nZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgdG8ubGlzdD8udW5zaGlmdChcclxuICAgICAgICAuLi5jaGVja2VkSXRlbXMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzID0geyAuLi54IH07XHJcbiAgICAgICAgICByZXMuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmVzLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCd0cmVlJywgZnJvbSk7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCdsaXN0JywgdG8pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tlZEl0ZW1zID0gWFJlbW92ZShmcm9tLmxpc3QhLCAoeCkgPT4gIXguZGlzYWJsZWQgJiYgeC5jaGVja2VkISk7XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgY2hlY2tlZEl0ZW1zKSB7XHJcbiAgICAgICAgbGV0IG5vZGU6IFhUcmVlTm9kZSA9IHRvLmxpc3Q/LmZpbmQoKHgpID0+IHguaWQgPT09IGl0ZW0uaWQpITtcclxuICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgbm9kZS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICBub2RlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLnRyZWVBY3RpdmF0ZWRJZC5maW5kSW5kZXgoKHgpID0+IHggPT09IG5vZGUuaWQpO1xyXG4gICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ3RyZWUnLCB0byk7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCdsaXN0JywgZnJvbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENoZWNrZWRBbGwoZnJvbSwgdG8pO1xyXG4gICAgdGhpcy5zZXRMaXN0Q291bnQoJ2xpc3QnLCBmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldEJ1dHRvbkRpc2FibGVkKGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0U2VhcmNoTGlzdChmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vdmVUYWJsZShmcm9tOiBYVHJhbnNmZXJTb3VyY2UsIHRvOiBYVHJhbnNmZXJTb3VyY2UpIHtcclxuICAgIGxldCBjaGVja2VkSXRlbXM6IFhUcmFuc2Zlck5vZGVbXSA9IFtdO1xyXG4gICAgaWYgKHRvLmRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICBjaGVja2VkSXRlbXMgPSBmcm9tLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQgJiYgeC5jaGVja2VkKSE7XHJcbiAgICAgIHRvLmxpc3QgPSBbXHJcbiAgICAgICAgLi4uY2hlY2tlZEl0ZW1zLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0geyAuLi54IH07XHJcbiAgICAgICAgICB4LmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHguY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICByZXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHJlcy5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIC4uLnRvLmxpc3QhXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gWy4uLmZyb20ubGlzdCFdO1xyXG4gICAgICB0aGlzLnNldENoZWNrZWRDb3VudCgndGFibGUnLCBmcm9tKTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ2xpc3QnLCB0byk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja2VkSXRlbXMgPSBYUmVtb3ZlKGZyb20ubGlzdCEsICh4KSA9PiAheC5kaXNhYmxlZCAmJiB4LmNoZWNrZWQhKTtcclxuICAgICAgY29uc3QgaWRzID0gY2hlY2tlZEl0ZW1zLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdG8ubGlzdCEpIHtcclxuICAgICAgICBpZiAoaWRzLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICBpdGVtLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZnJvbS5saXN0ID0gWy4uLmZyb20ubGlzdCFdO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IFsuLi50by5saXN0IV07XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCd0YWJsZScsIHRvKTtcclxuICAgICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ2xpc3QnLCBmcm9tKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TGlzdENvdW50KCd0YWJsZScsIGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZEFsbChmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldEJ1dHRvbkRpc2FibGVkKGZyb20sIHRvKTtcclxuICAgIHRoaXMuc2V0U2VhcmNoTGlzdChmcm9tLCB0byk7XHJcbiAgICB0aGlzLnNldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBkcm9wQ2RrKGV2ZW50OiBDZGtEcmFnRHJvcDxYVHJhbnNmZXJOb2RlW10gfCB1bmRlZmluZWQsIGFueT4pIHtcclxuICAgIGNvbnN0IGV2ID0gZXZlbnQgYXMgQ2RrRHJhZ0Ryb3A8WFRyYW5zZmVyTm9kZVtdPjtcclxuICAgIGlmIChldi5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXYuY29udGFpbmVyKSB7XHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldi5jb250YWluZXIuZGF0YSwgZXYucHJldmlvdXNJbmRleCwgZXYuY3VycmVudEluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKGV2LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2LmNvbnRhaW5lci5kYXRhLCBldi5wcmV2aW91c0luZGV4LCBldi5jdXJyZW50SW5kZXgpO1xyXG4gICAgICB0aGlzLnNldENoZWNrZWRDb3VudCgnbGlzdCcsIHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZEFsbCh0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xyXG4gICAgICB0aGlzLnNldExpc3RDb3VudCgnbGlzdCcsIHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQodGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U2VhcmNoTGlzdCh0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xyXG4gICAgdGhpcy5zZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJlZGljYXRlKGl0ZW06IENka0RyYWc8WFRyYW5zZmVyTm9kZT4pIHtcclxuICAgIHJldHVybiAhaXRlbS5kYXRhLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeU5vZGUoX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmFuc2Zlck5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxuXHJcbiAgc2V0TGlzdENvdW50KHR5cGU6IFhUcmFuc2ZlclR5cGUgPSAnbGlzdCcsIC4uLnNvdXJjZXM6IFhUcmFuc2ZlclNvdXJjZVtdKSB7XHJcbiAgICBpZiAoWydsaXN0JywgJ3RyZWUnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xyXG4gICAgICAgIHNvdXJjZS5jb3VudCA9IHNvdXJjZS5saXN0Py5maWx0ZXIoKHgpID0+ICF4LmRpc2FibGVkKS5sZW5ndGg7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RhYmxlJykge1xyXG4gICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xyXG4gICAgICAgIGlmIChzb3VyY2UuZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcclxuICAgICAgICAgIHNvdXJjZS5jb3VudCA9IHRoaXMudGFibGVUb3RhbCAtIHRoaXMucmlnaHQubGlzdCEubGVuZ3RoIHx8IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvdXJjZS5jb3VudCA9IHNvdXJjZS5saXN0Py5maWx0ZXIoKHgpID0+ICF4LmRpc2FibGVkKS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRyZWVOb2RlQ2xpY2soX25vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgdGhpcy5zZXRDaGVja2VkQ291bnQoJ3RyZWUnLCB0aGlzLmxlZnQpO1xyXG4gICAgdGhpcy5zZXRDaGVja2VkQWxsKHRoaXMubGVmdCk7XHJcbiAgICB0aGlzLnNldEJ1dHRvbkRpc2FibGVkKHRoaXMubGVmdCk7XHJcbiAgfVxyXG5cclxuICBvblRhYmxlQ2hlY2tlZFJvdyhyb3c6IFhUcmFuc2Zlck5vZGUsIHNvdXJjZTogWFRyYW5zZmVyU291cmNlKSB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVDaGVja2JveENvbHVtbikgcmV0dXJuO1xyXG4gICAgbGV0IGNoZWNrZWQgPSByb3dbdGhpcy50YWJsZUNoZWNrYm94Q29sdW1uLmlkXTtcclxuICAgIHJvdy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZENvdW50KCd0YWJsZScsIHNvdXJjZSk7XHJcbiAgICB0aGlzLnNldENoZWNrZWRBbGwoc291cmNlKTtcclxuICAgIHRoaXMuc2V0QnV0dG9uRGlzYWJsZWQoc291cmNlKTtcclxuICB9XHJcblxyXG4gIG9uVGFibGVDaGVja2VkQWxsKHJvdzogeyBbcHJvcDogc3RyaW5nXTogYm9vbGVhbiB9LCBzb3VyY2U6IFhUcmFuc2ZlclNvdXJjZSkge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlQ2hlY2tib3hDb2x1bW4pIHJldHVybjtcclxuICAgIGxldCBjaGVja2VkID0gcm93W3RoaXMudGFibGVDaGVja2JveENvbHVtbi5pZF07XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIHNvdXJjZS5saXN0ISkge1xyXG4gICAgICBpZiAoIWl0ZW0uZGlzYWJsZWQpIHtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENoZWNrZWRDb3VudCgndGFibGUnLCBzb3VyY2UpO1xyXG4gICAgdGhpcy5zZXRCdXR0b25EaXNhYmxlZChzb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUYWJsZUNoZWNrQ29sdW1uKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ3RhYmxlJyB8fCBYSXNFbXB0eSh0aGlzLnRhYmxlQ29sdW1ucykpIHJldHVybjtcclxuICAgIHRoaXMudGFibGVDaGVja2JveENvbHVtbiA9IHRoaXMudGFibGVDb2x1bW5zPy5maW5kKCh4KSA9PiB4LnJvd0NoZWNrZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDaGVja2VkQWxsKC4uLnNvdXJjZXM6IFhUcmFuc2ZlclNvdXJjZVtdKSB7XHJcbiAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xyXG4gICAgICBpZiAoKHNvdXJjZS5jaGVja2VkQ291bnQgYXMgbnVtYmVyKSA+IDApIHtcclxuICAgICAgICBpZiAoc291cmNlLmNoZWNrZWRDb3VudCA9PT0gc291cmNlLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQpLmxlbmd0aCkge1xyXG4gICAgICAgICAgc291cmNlLmNoZWNrZWRBbGwgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzb3VyY2UuY2hlY2tlZEFsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgc291cmNlLmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3VyY2UuY2hlY2tlZEFsbCA9IGZhbHNlO1xyXG4gICAgICAgIHNvdXJjZS5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2hlY2tlZENvdW50KHR5cGU6IFhUcmFuc2ZlclR5cGUgPSAnbGlzdCcsIC4uLnNvdXJjZXM6IFhUcmFuc2ZlclNvdXJjZVtdKSB7XHJcbiAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xyXG4gICAgICBpZiAoWyd0YWJsZScsICdsaXN0J10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgICBzb3VyY2UuY2hlY2tlZENvdW50ID0gc291cmNlLmxpc3Q/LmZpbHRlcigoeCkgPT4gIXguZGlzYWJsZWQgJiYgeC5jaGVja2VkKS5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RyZWUnKSB7XHJcbiAgICAgICAgc291cmNlLmNoZWNrZWRDb3VudCA9IHNvdXJjZS5saXN0Py5maWx0ZXIoXHJcbiAgICAgICAgICAoeCkgPT4gIXguZGlzYWJsZWQgJiYgIVhJc0VtcHR5KHRoaXMudHJlZUFjdGl2YXRlZElkKSAmJiB0aGlzLnRyZWVBY3RpdmF0ZWRJZC5pbmNsdWRlcyh4LmlkKVxyXG4gICAgICAgICkubGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJ1dHRvbkRpc2FibGVkKC4uLnNvdXJjZXM6IFhUcmFuc2ZlclNvdXJjZVtdKSB7XHJcbiAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykgc291cmNlLmRpc2FibGVkQnV0dG9uID0gc291cmNlLmNoZWNrZWRDb3VudCA9PT0gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5pc09iamVjdEFycmF5KSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJpZ2h0Lmxpc3QhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmlnaHQubGlzdD8ubWFwKCh4KSA9PiB4LmlkKSE7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWFyY2hMaXN0KC4uLl9zb3VyY2VzOiBYVHJhbnNmZXJTb3VyY2VbXSkge1xyXG4gICAgLy8gaWYgKHRoaXMuc2VhcmNoKSB7XHJcbiAgICAvLyAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XHJcbiAgICAvLyAgICAgaWYgKFhJc0VtcHR5KHNvdXJjZS5zZWFyY2hJbnB1dCkpIHtcclxuICAgIC8vICAgICAgIHNvdXJjZS5zZWFyY2hMaXN0ID0gWy4uLihzb3VyY2UubGlzdCBhcyBYVHJhbnNmZXJOb2RlW10pXTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd0YWJsZScpIHtcclxuICAgICAgdGhpcy5nZXRUYWJsZURhdGEoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgWFNldERhdGE8WFRyYW5zZmVyTm9kZT4odGhpcy5kYXRhLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldExpc3QoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TGlzdChkYXRhOiBYVHJhbnNmZXJOb2RlW10pIHtcclxuICAgIGlmIChYSXNFbXB0eShkYXRhKSkgcmV0dXJuO1xyXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcclxuICAgICAgY2FzZSAnbGlzdCc6XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IGRhdGE7XHJcbiAgICAgICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlcykpIHtcclxuICAgICAgICAgIHRoaXMubGVmdC5saXN0ID0gdGhpcy5ub2Rlcy5maWx0ZXIoKHgpID0+IHRoaXMudmFsdWVzLmluZGV4T2YoeC5pZCkgPCAwKTtcclxuICAgICAgICAgIHRoaXMucmlnaHQubGlzdCA9IHRoaXMubm9kZXMuZmlsdGVyKCh4KSA9PiB0aGlzLnZhbHVlcy5pbmRleE9mKHguaWQpID49IDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmxlZnQubGlzdCA9IFsuLi50aGlzLm5vZGVzXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRTZWFyY2hMaXN0KHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgICAgdGhpcy5zZXRMaXN0Q291bnQodGhpcy50eXBlLCB0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0cmVlJzpcclxuICAgICAgICB0aGlzLm5vZGVzID0gZGF0YTtcclxuICAgICAgICB0aGlzLnNldFRyZWVOb2RlRGlzYWJsZWQoKTtcclxuICAgICAgICB0aGlzLmxlZnQubGlzdCA9IFsuLi50aGlzLm5vZGVzXTtcclxuICAgICAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWVzKSkge1xyXG4gICAgICAgICAgdGhpcy5yaWdodC5saXN0ID0gdGhpcy5ub2Rlc1xyXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB0aGlzLnZhbHVlcy5pbmRleE9mKHguaWQpID49IDApXHJcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgcmVzID0geyAuLi54IH07XHJcbiAgICAgICAgICAgICAgcmVzLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByZXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRTZWFyY2hMaXN0KHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgICAgdGhpcy5zZXRMaXN0Q291bnQodGhpcy50eXBlLCB0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0YWJsZSc6XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5zZXRUYWJsZURhdGFEaXNhYmxlZCgpO1xyXG4gICAgICAgIHRoaXMubGVmdC5saXN0ID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZXMpKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pc09iamVjdEFycmF5KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlnaHQubGlzdCA9IFtcclxuICAgICAgICAgICAgICAuLi50aGlzLnZhbHVlLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IHsgLi4ueCB9O1xyXG4gICAgICAgICAgICAgICAgcmVzLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXMuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yaWdodC5saXN0ID0gWy4uLnRoaXMudmFsdWVdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFNlYXJjaExpc3QodGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgICB0aGlzLnNldExpc3RDb3VudCh0aGlzLnR5cGUsIHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZURhdGEoKSB7XHJcbiAgICBpZiAoWElzRnVuY3Rpb24odGhpcy5kYXRhKSkge1xyXG4gICAgICAodGhpcy5kYXRhIGFzIEZ1bmN0aW9uKSh0aGlzLnRhYmxlSW5kZXgsIHRoaXMudGFibGVTaXplLCB0aGlzLnRhYmxlUXVlcnkpLnN1YnNjcmliZSgoeDogWFJlc3VsdExpc3Q8WFRyYW5zZmVyTm9kZT4pID0+IHtcclxuICAgICAgICB0aGlzLnRhYmxlVG90YWwgPSB4LnRvdGFsITtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHgubGlzdCE7XHJcbiAgICAgICAgdGhpcy5zZXRMaXN0KHgubGlzdCEpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGl0bGVzKCkge1xyXG4gICAgbGV0IHRpdGxlczogc3RyaW5nW10gPSBbXTtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLnRpdGxlcykpIHtcclxuICAgICAgdGl0bGVzID0gW3RoaXMubG9jYWxUaXRsZSEsIHRoaXMubG9jYWxlLnNlbGVjdGVkVGl0bGUhXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRpdGxlcyA9IHRoaXMudGl0bGVzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRpdGxlcy5sZW5ndGggPiAwKSB0aGlzLmxlZnQudGl0bGUgPSB0aXRsZXNbMF07XHJcbiAgICBpZiAodGl0bGVzLmxlbmd0aCA+IDEpIHRoaXMucmlnaHQudGl0bGUgPSB0aXRsZXNbMV07XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExpc3RTdHlsZSgpIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLmxpc3RTdHlsZSkpIHJldHVybjtcclxuICAgIGxldCBzdHlsZXM6IG9iamVjdFtdID0gW107XHJcbiAgICBpZiAoWElzT2JqZWN0KHRoaXMubGlzdFN0eWxlKSkge1xyXG4gICAgICBzdHlsZXMgPSBbdGhpcy5saXN0U3R5bGUsIHRoaXMubGlzdFN0eWxlXTtcclxuICAgIH0gZWxzZSBpZiAoWElzT2JqZWN0QXJyYXkodGhpcy5saXN0U3R5bGUpKSB7XHJcbiAgICAgIHN0eWxlcyA9IHRoaXMubGlzdFN0eWxlIGFzIG9iamVjdFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0eWxlcy5sZW5ndGggPiAwKSB0aGlzLmxlZnQubGlzdFN0eWxlID0gc3R5bGVzWzBdO1xyXG4gICAgaWYgKHN0eWxlcy5sZW5ndGggPiAxKSB0aGlzLnJpZ2h0Lmxpc3RTdHlsZSA9IHN0eWxlc1sxXTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VHJlZU5vZGVEaXNhYmxlZCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZXMpICYmIHRoaXMubm9kZXMpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLm5vZGVzKSB7XHJcbiAgICAgICAgbGV0IGhhc0luID0gdGhpcy52YWx1ZXMuaW5kZXhPZihpdGVtLmlkKSA+PSAwO1xyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBoYXNJbjtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSBoYXNJbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUYWJsZURhdGFEaXNhYmxlZCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZXMpICYmIHRoaXMubm9kZXMpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLm5vZGVzKSB7XHJcbiAgICAgICAgbGV0IGhhc0luID0gdGhpcy52YWx1ZXMuaW5kZXhPZihpdGVtLmlkKSA+PSAwO1xyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBoYXNJbjtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSBoYXNJbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRIaWRkZW5DaGVja0FsbCgpIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLmhpZGRlbkNoZWNrQWxsKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuQ2hlY2tBbGwhLmxlbmd0aCA+IDAgJiYgWElzQm9vbGVhbih0aGlzLmhpZGRlbkNoZWNrQWxsIVswXSkpIHRoaXMubGVmdC5oaWRkZW5DaGVja0FsbCA9IHRoaXMuaGlkZGVuQ2hlY2tBbGwhWzBdO1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuQ2hlY2tBbGwhLmxlbmd0aCA+IDEgJiYgWElzQm9vbGVhbih0aGlzLmhpZGRlbkNoZWNrQWxsIVsxXSkpIHRoaXMucmlnaHQuaGlkZGVuQ2hlY2tBbGwgPSB0aGlzLmhpZGRlbkNoZWNrQWxsIVsxXTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdHJhbnNmZXIgY2xhc3M9XCJ4LXRyYW5zZmVyXCIgY2RrRHJvcExpc3RHcm91cCBbbmdDbGFzc109XCJjbGFzc01hcFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRyYW5zZmVyLWJveFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvdXJjZVRpdGxlVHBsOyBjb250ZXh0OiB7IHNvdXJjZTogbGVmdCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cImxlZnQubGlzdFN0eWxlIVwiIGNsYXNzPVwieC10cmFuc2Zlci1saXN0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICAgICAgICA8dWxcclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGlzdCdcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcENkaygkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibGVmdC5saXN0XCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnICYmIHR5cGUgPT09ICdsaXN0J1wiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJwcmVkaWNhdGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ4LXRyYW5zZmVyLWRyb3BsaXN0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJ4LXRyYW5zZmVyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbm9kZSBvZiBsZWZ0Lmxpc3Q7IHRyYWNrQnk6IHRyYWNrQnlOb2RlXCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwibm9kZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic291cmNlTm9kZVRwbDsgY29udGV4dDogeyBub2RlOiBub2RlLCBzb3VyY2U6IGxlZnQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIDx4LXRyZWVcclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIndHJlZSdcIlxyXG4gICAgICAgICAgW2RhdGFdPVwibGVmdC5saXN0IVwiXHJcbiAgICAgICAgICBtdWx0aXBsZVxyXG4gICAgICAgICAgYWxsb3dNYW55QWN0aXZhdGVkXHJcbiAgICAgICAgICBbKGFjdGl2YXRlZElkKV09XCJ0cmVlQWN0aXZhdGVkSWRcIlxyXG4gICAgICAgICAgKG5vZGVDbGljayk9XCJvblRyZWVOb2RlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgPjwveC10cmVlPlxyXG4gICAgICAgIDx4LXRhYmxlXHJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RhYmxlJ1wiXHJcbiAgICAgICAgICBbZGF0YV09XCJ0YWJsZURhdGFcIlxyXG4gICAgICAgICAgW2NvbHVtbnNdPVwidGFibGVDb2x1bW5zIVwiXHJcbiAgICAgICAgICBbKHNpemUpXT1cInRhYmxlU2l6ZVwiXHJcbiAgICAgICAgICBbKGluZGV4KV09XCJ0YWJsZUluZGV4XCJcclxuICAgICAgICAgIChpbmRleENoYW5nZSk9XCJnZXRUYWJsZURhdGEoKVwiXHJcbiAgICAgICAgICBbcXVlcnldPVwidGFibGVRdWVyeVwiXHJcbiAgICAgICAgICBbdG90YWxdPVwidGFibGVUb3RhbFwiXHJcbiAgICAgICAgICAoYWN0aXZhdGVkUm93Q2hhbmdlKT1cIm9uVGFibGVDaGVja2VkUm93KCRldmVudCwgbGVmdClcIlxyXG4gICAgICAgICAgKGhlYWRDaGVja2JveENoYW5nZSk9XCJvblRhYmxlQ2hlY2tlZEFsbCgkZXZlbnQsIGxlZnQpXCJcclxuICAgICAgICAgIGhpZGRlbldyYXBCb3JkZXJcclxuICAgICAgICAgIGhpZGRlblBhZ2luYXRpb25Cb3JkZXJcclxuICAgICAgICAgIHNob3dFbGxpcHNpcz1cImZhbHNlXCJcclxuICAgICAgICAgIHNob3dUb3RhbD1cImZhbHNlXCJcclxuICAgICAgICAgIHBhZ2luYXRpb25Qb3NpdGlvbj1cImJvdHRvbS1jZW50ZXJcIlxyXG4gICAgICAgICAgYWxsb3dTZWxlY3RSb3c9XCJmYWxzZVwiXHJcbiAgICAgICAgPjwveC10YWJsZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmFuc2Zlci1idXR0b25zXCI+XHJcbiAgICA8eC1idXR0b24gdHlwZT1cInByaW1hcnlcIiBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIiBbZGlzYWJsZWRdPVwibGVmdC5kaXNhYmxlZEJ1dHRvblwiIChjbGljayk9XCJtb3ZlKGxlZnQsIHJpZ2h0KVwiPjwveC1idXR0b24+XHJcbiAgICA8eC1idXR0b24gdHlwZT1cInByaW1hcnlcIiBpY29uPVwiZnRvLWNoZXZyb24tbGVmdFwiIFtkaXNhYmxlZF09XCJyaWdodC5kaXNhYmxlZEJ1dHRvblwiIChjbGljayk9XCJtb3ZlKHJpZ2h0LCBsZWZ0KVwiPjwveC1idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIngtdHJhbnNmZXItYm94XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic291cmNlVGl0bGVUcGw7IGNvbnRleHQ6IHsgc291cmNlOiByaWdodCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ1N3aXRjaF09XCJ0eXBlXCIgW25nU3R5bGVdPVwicmlnaHQubGlzdFN0eWxlIVwiIGNsYXNzPVwieC10cmFuc2Zlci1saXN0XCI+XHJcbiAgICAgIDx4LXRhYmxlXHJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0YWJsZSdcIlxyXG4gICAgICAgIFtkYXRhXT1cInJpZ2h0Lmxpc3QhXCJcclxuICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbHVtbnMhXCJcclxuICAgICAgICAoYWN0aXZhdGVkUm93Q2hhbmdlKT1cIm9uVGFibGVDaGVja2VkUm93KCRldmVudCwgcmlnaHQpXCJcclxuICAgICAgICAoaGVhZENoZWNrYm94Q2hhbmdlKT1cIm9uVGFibGVDaGVja2VkQWxsKCRldmVudCwgcmlnaHQpXCJcclxuICAgICAgICBoaWRkZW5XcmFwQm9yZGVyXHJcbiAgICAgICAgaGlkZGVuUGFnaW5hdGlvbkJvcmRlclxyXG4gICAgICAgIHNob3dQYWdpbmF0aW9uPVwiZmFsc2VcIlxyXG4gICAgICAgIHNob3dFbGxpcHNpcz1cImZhbHNlXCJcclxuICAgICAgICBzaG93VG90YWw9XCJmYWxzZVwiXHJcbiAgICAgICAgcGFnaW5hdGlvblBvc2l0aW9uPVwiYm90dG9tLWNlbnRlclwiXHJcbiAgICAgICAgYWxsb3dTZWxlY3RSb3c9XCJmYWxzZVwiXHJcbiAgICAgID48L3gtdGFibGU+XHJcbiAgICAgIDx1bFxyXG4gICAgICAgICpuZ1N3aXRjaERlZmF1bHRcclxuICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcENkaygkZXZlbnQpXCJcclxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInJpZ2h0Lmxpc3RcIlxyXG4gICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnIHx8IChkcmFnICYmIHR5cGUgIT09ICdsaXN0JylcIlxyXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cInByZWRpY2F0ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJ4LXRyYW5zZmVyLWRyb3BsaXN0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIngtdHJhbnNmZXItaXRlbVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIHJpZ2h0Lmxpc3Q7IHRyYWNrQnk6IHRyYWNrQnlOb2RlXCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwibm9kZVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvdXJjZU5vZGVUcGw7IGNvbnRleHQ6IHsgbm9kZTogbm9kZSwgc291cmNlOiByaWdodCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc291cmNlVGl0bGVUcGwgbGV0LXNvdXJjZT1cInNvdXJjZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRyYW5zZmVyLXRpdGxlXCI+XHJcbiAgICA8eC1jaGVja2JveFxyXG4gICAgICAqbmdJZj1cInNvdXJjZS50aXRsZSAmJiAhc291cmNlLmhpZGRlbkNoZWNrQWxsXCJcclxuICAgICAgW2RhdGFdPVwiW3RpdGxlVHBsID8gJycgOiBzb3VyY2UudGl0bGVdXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJzb3VyY2UuY2hlY2tlZEFsbFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrZWRBbGxDaGFuZ2UoJGV2ZW50LCBzb3VyY2UpXCJcclxuICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic291cmNlLmluZGV0ZXJtaW5hdGVcIlxyXG4gICAgPjwveC1jaGVja2JveD5cclxuICAgIDxzcGFuICpuZ0lmPVwic291cmNlLnRpdGxlICYmIHNvdXJjZS5oaWRkZW5DaGVja0FsbFwiPnt7IHNvdXJjZS50aXRsZSB9fTwvc3Bhbj5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0aXRsZVRwbDsgY29udGV4dDogeyAkdGl0bGU6IHNvdXJjZS50aXRsZSwgJGNoZWNrZWRDb3VudDogc291cmNlLmNoZWNrZWRDb3VudCwgJGNvdW50OiBzb3VyY2UuY291bnQgfVwiXHJcbiAgICAgID48c3BhbiBjbGFzcz1cIngtdHJhbnNmZXItdG90YWxcIj57eyBzb3VyY2UuY2hlY2tlZENvdW50IH19IC8ge3sgc291cmNlLmNvdW50IH19PC9zcGFuPjwvbmctY29udGFpbmVyXHJcbiAgICA+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSA8ZGl2IGNsYXNzPVwieC10cmFuc2Zlci1zZWFyY2hcIiAqbmdJZj1cInNlYXJjaFwiPlxyXG4gICAgPHgtaW5wdXRcclxuICAgICAgaWNvbj1cImZ0by1zZWFyY2hcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInNvdXJjZS5zZWFyY2hJbnB1dFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaElucHV0Q2hhbmdlKHNvdXJjZSlcIlxyXG4gICAgICBjbGVhcmFibGVcclxuICAgID48L3gtaW5wdXQ+XHJcbiAgPC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzb3VyY2VOb2RlVHBsIGxldC1ub2RlPVwibm9kZVwiIGxldC1zb3VyY2U9XCJzb3VyY2VcIj5cclxuICA8eC1jaGVja2JveFxyXG4gICAgW2RhdGFdPVwiW3sgaWQ6IG5vZGUuaWQsIGxhYmVsOiBub2RlVHBsID8gbm9kZVRwbCA6IG5vZGUubGFiZWwsIG5vZGU6IG5vZGUgfV1cIlxyXG4gICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJub2RlLmNoZWNrZWRcIlxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hlY2tlZENoYW5nZSgkZXZlbnQsIHNvdXJjZSlcIlxyXG4gID48L3gtY2hlY2tib3g+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -14,8 +14,8 @@ import { XTableModule } from '@ng-nest/ui/table';
|
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
export class XTransferModule {
|
|
16
16
|
}
|
|
17
|
-
/** @nocollapse */ XTransferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
/** @nocollapse */ XTransferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
17
|
+
/** @nocollapse */ XTransferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
/** @nocollapse */ XTransferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: XTransferModule, declarations: [XTransferComponent, XTransferProperty], imports: [CommonModule,
|
|
19
19
|
FormsModule,
|
|
20
20
|
DragDropModule,
|
|
21
21
|
XOutletModule,
|
|
@@ -25,7 +25,7 @@ export class XTransferModule {
|
|
|
25
25
|
XBaseFormModule,
|
|
26
26
|
XTreeModule,
|
|
27
27
|
XTableModule], exports: [XTransferComponent] });
|
|
28
|
-
/** @nocollapse */ XTransferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
28
|
+
/** @nocollapse */ XTransferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferModule, imports: [CommonModule,
|
|
29
29
|
FormsModule,
|
|
30
30
|
DragDropModule,
|
|
31
31
|
XOutletModule,
|
|
@@ -35,7 +35,7 @@ export class XTransferModule {
|
|
|
35
35
|
XBaseFormModule,
|
|
36
36
|
XTreeModule,
|
|
37
37
|
XTableModule] });
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferModule, decorators: [{
|
|
39
39
|
type: NgModule,
|
|
40
40
|
args: [{
|
|
41
41
|
declarations: [XTransferComponent, XTransferProperty],
|
|
@@ -33,8 +33,8 @@ export class XTransferProperty extends XControlValueAccessor {
|
|
|
33
33
|
this.tableTotal = 0;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
/** @nocollapse */ XTransferProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
/** @nocollapse */ XTransferProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
36
|
+
/** @nocollapse */ XTransferProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
/** @nocollapse */ XTransferProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTransferProperty, selector: "ng-component", inputs: { data: "data", type: "type", titles: "titles", listStyle: "listStyle", hiddenCheckAll: "hiddenCheckAll", drag: "drag", search: "search", nodeTpl: "nodeTpl", titleTpl: "titleTpl", tableColumns: "tableColumns", tableIndex: "tableIndex", tableSize: "tableSize", tableQuery: "tableQuery", tableTotal: "tableTotal" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
38
38
|
__decorate([
|
|
39
39
|
XDataConvert()
|
|
40
40
|
], XTransferProperty.prototype, "data", void 0);
|
|
@@ -60,7 +60,7 @@ __decorate([
|
|
|
60
60
|
__decorate([
|
|
61
61
|
XWithConfig(X_CONFIG_NAME, 10)
|
|
62
62
|
], XTransferProperty.prototype, "tableSize", void 0);
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTransferProperty, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
65
|
args: [{ template: '' }]
|
|
66
66
|
}], propDecorators: { data: [{
|
|
@@ -172,9 +172,9 @@ export class XTreeNodeComponent extends XTreeNodeProperty {
|
|
|
172
172
|
return item.id;
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
-
/** @nocollapse */ XTreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
176
|
-
/** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
175
|
+
/** @nocollapse */ XTreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeNodeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
+
/** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: { tree: "tree" }, host: { properties: { "class.x-tree-node": "this.rootClass" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"getActivated\"\r\n [class.x-disabled]=\"node.disabled\"\r\n [class.x-tree-node-sub]=\"!node.leaf\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"!node.disabled && onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!node.loading\"\r\n [class.is-leaf]=\"node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n class=\"x-tree-node-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon class=\"x-tree-node-loading\" *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"node.disabled!\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\r\n</div>\r\n", styles: [".x-tree-node{display:block;margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon.is-leaf{visibility:hidden}.x-tree-node-content x-icon.is-open{transform:rotate(90deg)}.x-tree-node-content x-icon:hover{color:var(--x-text-200)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content.x-disabled{color:var(--x-text-400);background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-background-a400);color:var(--x-primary)}.x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XIconComponent, selector: "x-icon" }, { kind: "component", type: i5.XCheckboxComponent, selector: "x-checkbox" }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XLinkComponent, selector: "x-link" }, { kind: "directive", type: i8.XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeNodeComponent, decorators: [{
|
|
178
178
|
type: Component,
|
|
179
179
|
args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"getActivated\"\r\n [class.x-disabled]=\"node.disabled\"\r\n [class.x-tree-node-sub]=\"!node.leaf\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"!node.disabled && onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!node.loading\"\r\n [class.is-leaf]=\"node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n class=\"x-tree-node-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon class=\"x-tree-node-loading\" *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"node.disabled!\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\r\n</div>\r\n", styles: [".x-tree-node{display:block;margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon.is-leaf{visibility:hidden}.x-tree-node-content x-icon.is-open{transform:rotate(90deg)}.x-tree-node-content x-icon:hover{color:var(--x-text-200)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content.x-disabled{color:var(--x-text-400);background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-background-a400);color:var(--x-primary)}.x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"] }]
|
|
180
180
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { tree: [{
|
|
@@ -434,9 +434,9 @@ export class XTreeComponent extends XTreeProperty {
|
|
|
434
434
|
return item.id;
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
/** @nocollapse */ XTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
438
|
-
/** @nocollapse */ XTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
437
|
+
/** @nocollapse */ XTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
+
/** @nocollapse */ XTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTreeComponent, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }, { propertyName: "_nodeComponents", predicate: XTreeNodeComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf\">\r\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XIconComponent, selector: "x-icon" }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i5.XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["tree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeComponent, decorators: [{
|
|
440
440
|
type: Component,
|
|
441
441
|
args: [{ selector: `${XTreePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf\">\r\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}\n"] }]
|
|
442
442
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { tree: [{
|
|
@@ -13,10 +13,10 @@ import { XKeywordModule } from '@ng-nest/ui/keyword';
|
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
export class XTreeModule {
|
|
15
15
|
}
|
|
16
|
-
/** @nocollapse */ XTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
17
|
-
/** @nocollapse */ XTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
18
|
-
/** @nocollapse */ XTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
16
|
+
/** @nocollapse */ XTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
/** @nocollapse */ XTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: XTreeModule, declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty], imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule, XKeywordModule], exports: [XTreeComponent, XTreeNodeComponent] });
|
|
18
|
+
/** @nocollapse */ XTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeModule, imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule, XKeywordModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeModule, decorators: [{
|
|
20
20
|
type: NgModule,
|
|
21
21
|
args: [{
|
|
22
22
|
declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty],
|
|
@@ -92,8 +92,8 @@ export class XTreeProperty extends XProperty {
|
|
|
92
92
|
this.activatedIdChange = new EventEmitter();
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
/** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
96
|
-
/** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
95
|
+
/** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
+
/** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", scrollElement: "scrollElement", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", heightAdaption: "heightAdaption", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", multiple: "multiple", objectArray: "objectArray", keywordText: "keywordText", caseSensitive: "caseSensitive", onlyLeaf: "onlyLeaf" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange", nodeClick: "nodeClick", activatedIdChange: "activatedIdChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
97
97
|
__decorate([
|
|
98
98
|
XDataConvert()
|
|
99
99
|
], XTreeProperty.prototype, "data", void 0);
|
|
@@ -161,7 +161,7 @@ __decorate([
|
|
|
161
161
|
XInputBoolean(),
|
|
162
162
|
XWithConfig(X_CONFIG_NAME, false)
|
|
163
163
|
], XTreeProperty.prototype, "onlyLeaf", void 0);
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeProperty, decorators: [{
|
|
165
165
|
type: Component,
|
|
166
166
|
args: [{ template: '' }]
|
|
167
167
|
}], propDecorators: { data: [{
|
|
@@ -264,8 +264,8 @@ export class XTreeNodeProperty extends XProperty {
|
|
|
264
264
|
this.nodeAlignItems = 'center';
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
|
-
/** @nocollapse */ XTreeNodeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
268
|
-
/** @nocollapse */ XTreeNodeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
267
|
+
/** @nocollapse */ XTreeNodeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
268
|
+
/** @nocollapse */ XTreeNodeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTreeNodeProperty, selector: "ng-component", inputs: { node: "node", level: "level", lazy: "lazy", nodeHeight: "nodeHeight", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", lazyData: "lazyData", virtualScroll: "virtualScroll" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
269
269
|
__decorate([
|
|
270
270
|
XInputBoolean()
|
|
271
271
|
], XTreeNodeProperty.prototype, "lazy", void 0);
|
|
@@ -278,7 +278,7 @@ __decorate([
|
|
|
278
278
|
__decorate([
|
|
279
279
|
XInputBoolean()
|
|
280
280
|
], XTreeNodeProperty.prototype, "virtualScroll", void 0);
|
|
281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTreeNodeProperty, decorators: [{
|
|
282
282
|
type: Component,
|
|
283
283
|
args: [{ template: '' }]
|
|
284
284
|
}], propDecorators: { node: [{
|