primeng 18.0.1 → 19.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/base/style/basestyle.d.ts +11 -11
- package/config/themeprovider.d.ts +6 -0
- package/confirmdialog/confirmdialog.d.ts +1 -0
- package/dynamicdialog/dynamicdialog.d.ts +2 -2
- package/fesm2022/primeng-accordion.mjs +10 -10
- package/fesm2022/primeng-accordion.mjs.map +1 -1
- package/fesm2022/primeng-animateonscroll.mjs +1 -1
- package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
- package/fesm2022/primeng-api.mjs +5 -5
- package/fesm2022/primeng-api.mjs.map +1 -1
- package/fesm2022/primeng-autocomplete.mjs +2 -2
- package/fesm2022/primeng-autocomplete.mjs.map +1 -1
- package/fesm2022/primeng-autofocus.mjs +1 -1
- package/fesm2022/primeng-autofocus.mjs.map +1 -1
- package/fesm2022/primeng-avatar.mjs +2 -2
- package/fesm2022/primeng-avatar.mjs.map +1 -1
- package/fesm2022/primeng-avatargroup.mjs +2 -2
- package/fesm2022/primeng-avatargroup.mjs.map +1 -1
- package/fesm2022/primeng-badge.mjs +3 -3
- package/fesm2022/primeng-badge.mjs.map +1 -1
- package/fesm2022/primeng-basecomponent.mjs +1 -1
- package/fesm2022/primeng-basecomponent.mjs.map +1 -1
- package/fesm2022/primeng-blockui.mjs +2 -2
- package/fesm2022/primeng-blockui.mjs.map +1 -1
- package/fesm2022/primeng-breadcrumb.mjs +2 -2
- package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
- package/fesm2022/primeng-button.mjs +5 -5
- package/fesm2022/primeng-button.mjs.map +1 -1
- package/fesm2022/primeng-buttongroup.mjs +2 -2
- package/fesm2022/primeng-buttongroup.mjs.map +1 -1
- package/fesm2022/primeng-calendar.mjs +4 -4
- package/fesm2022/primeng-calendar.mjs.map +1 -1
- package/fesm2022/primeng-card.mjs +2 -2
- package/fesm2022/primeng-card.mjs.map +1 -1
- package/fesm2022/primeng-carousel.mjs +2 -2
- package/fesm2022/primeng-carousel.mjs.map +1 -1
- package/fesm2022/primeng-cascadeselect.mjs +4 -4
- package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
- package/fesm2022/primeng-chart.mjs +2 -2
- package/fesm2022/primeng-chart.mjs.map +1 -1
- package/fesm2022/primeng-checkbox.mjs +2 -2
- package/fesm2022/primeng-checkbox.mjs.map +1 -1
- package/fesm2022/primeng-chip.mjs +2 -2
- package/fesm2022/primeng-chip.mjs.map +1 -1
- package/fesm2022/primeng-colorpicker.mjs +2 -2
- package/fesm2022/primeng-colorpicker.mjs.map +1 -1
- package/fesm2022/primeng-config.mjs +14 -12
- package/fesm2022/primeng-config.mjs.map +1 -1
- package/fesm2022/primeng-confirmdialog.mjs +11 -8
- package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
- package/fesm2022/primeng-confirmpopup.mjs +2 -2
- package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
- package/fesm2022/primeng-contextmenu.mjs +5 -5
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-dataview.mjs +2 -2
- package/fesm2022/primeng-dataview.mjs.map +1 -1
- package/fesm2022/primeng-datepicker.mjs +2 -2
- package/fesm2022/primeng-datepicker.mjs.map +1 -1
- package/fesm2022/primeng-defer.mjs +1 -1
- package/fesm2022/primeng-dialog.mjs +2 -2
- package/fesm2022/primeng-dialog.mjs.map +1 -1
- package/fesm2022/primeng-divider.mjs +2 -2
- package/fesm2022/primeng-divider.mjs.map +1 -1
- package/fesm2022/primeng-dock.mjs +2 -2
- package/fesm2022/primeng-dock.mjs.map +1 -1
- package/fesm2022/primeng-dragdrop.mjs +2 -2
- package/fesm2022/primeng-dragdrop.mjs.map +1 -1
- package/fesm2022/primeng-drawer.mjs +2 -2
- package/fesm2022/primeng-drawer.mjs.map +1 -1
- package/fesm2022/primeng-dropdown.mjs +4 -4
- package/fesm2022/primeng-dropdown.mjs.map +1 -1
- package/fesm2022/primeng-dynamicdialog.mjs +7 -7
- package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
- package/fesm2022/primeng-editor.mjs +2 -2
- package/fesm2022/primeng-editor.mjs.map +1 -1
- package/fesm2022/primeng-fieldset.mjs +2 -2
- package/fesm2022/primeng-fieldset.mjs.map +1 -1
- package/fesm2022/primeng-fileupload.mjs +2 -2
- package/fesm2022/primeng-fileupload.mjs.map +1 -1
- package/fesm2022/primeng-floatlabel.mjs +2 -2
- package/fesm2022/primeng-floatlabel.mjs.map +1 -1
- package/fesm2022/primeng-fluid.mjs +2 -2
- package/fesm2022/primeng-fluid.mjs.map +1 -1
- package/fesm2022/primeng-focustrap.mjs +1 -1
- package/fesm2022/primeng-focustrap.mjs.map +1 -1
- package/fesm2022/primeng-galleria.mjs +10 -10
- package/fesm2022/primeng-galleria.mjs.map +1 -1
- package/fesm2022/primeng-iconfield.mjs +2 -2
- package/fesm2022/primeng-iconfield.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleright.mjs +2 -2
- package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleup.mjs +2 -2
- package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowup.mjs +2 -2
- package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
- package/fesm2022/primeng-icons-ban.mjs +2 -2
- package/fesm2022/primeng-icons-ban.mjs.map +1 -1
- package/fesm2022/primeng-icons-bars.mjs +2 -2
- package/fesm2022/primeng-icons-bars.mjs.map +1 -1
- package/fesm2022/primeng-icons-baseicon.mjs +2 -2
- package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
- package/fesm2022/primeng-icons-blank.mjs +2 -2
- package/fesm2022/primeng-icons-blank.mjs.map +1 -1
- package/fesm2022/primeng-icons-calendar.mjs +2 -2
- package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretleft.mjs +2 -2
- package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretright.mjs +2 -2
- package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
- package/fesm2022/primeng-icons-check.mjs +2 -2
- package/fesm2022/primeng-icons-check.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
- package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
- package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronright.mjs +2 -2
- package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronup.mjs +2 -2
- package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
- package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
- package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
- package/fesm2022/primeng-icons-eye.mjs +2 -2
- package/fesm2022/primeng-icons-eye.mjs.map +1 -1
- package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
- package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-filter.mjs +2 -2
- package/fesm2022/primeng-icons-filter.mjs.map +1 -1
- package/fesm2022/primeng-icons-filterslash.mjs +2 -2
- package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-home.mjs +2 -2
- package/fesm2022/primeng-icons-home.mjs.map +1 -1
- package/fesm2022/primeng-icons-infocircle.mjs +2 -2
- package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-minus.mjs +2 -2
- package/fesm2022/primeng-icons-minus.mjs.map +1 -1
- package/fesm2022/primeng-icons-pencil.mjs +2 -2
- package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
- package/fesm2022/primeng-icons-plus.mjs +2 -2
- package/fesm2022/primeng-icons-plus.mjs.map +1 -1
- package/fesm2022/primeng-icons-refresh.mjs +2 -2
- package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
- package/fesm2022/primeng-icons-search.mjs +2 -2
- package/fesm2022/primeng-icons-search.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchminus.mjs +2 -2
- package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchplus.mjs +2 -2
- package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-spinner.mjs +2 -2
- package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
- package/fesm2022/primeng-icons-star.mjs +2 -2
- package/fesm2022/primeng-icons-star.mjs.map +1 -1
- package/fesm2022/primeng-icons-starfill.mjs +2 -2
- package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
- package/fesm2022/primeng-icons-thlarge.mjs +2 -2
- package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
- package/fesm2022/primeng-icons-times.mjs +2 -2
- package/fesm2022/primeng-icons-times.mjs.map +1 -1
- package/fesm2022/primeng-icons-timescircle.mjs +2 -2
- package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-trash.mjs +2 -2
- package/fesm2022/primeng-icons-trash.mjs.map +1 -1
- package/fesm2022/primeng-icons-undo.mjs +2 -2
- package/fesm2022/primeng-icons-undo.mjs.map +1 -1
- package/fesm2022/primeng-icons-upload.mjs +2 -2
- package/fesm2022/primeng-icons-upload.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
- package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
- package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
- package/fesm2022/primeng-iftalabel.mjs +2 -2
- package/fesm2022/primeng-iftalabel.mjs.map +1 -1
- package/fesm2022/primeng-image.mjs +2 -2
- package/fesm2022/primeng-image.mjs.map +1 -1
- package/fesm2022/primeng-imagecompare.mjs +2 -2
- package/fesm2022/primeng-imagecompare.mjs.map +1 -1
- package/fesm2022/primeng-inplace.mjs +6 -6
- package/fesm2022/primeng-inplace.mjs.map +1 -1
- package/fesm2022/primeng-inputgroup.mjs +2 -2
- package/fesm2022/primeng-inputgroup.mjs.map +1 -1
- package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
- package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
- package/fesm2022/primeng-inputicon.mjs +2 -2
- package/fesm2022/primeng-inputicon.mjs.map +1 -1
- package/fesm2022/primeng-inputmask.mjs +2 -2
- package/fesm2022/primeng-inputmask.mjs.map +1 -1
- package/fesm2022/primeng-inputnumber.mjs +2 -2
- package/fesm2022/primeng-inputnumber.mjs.map +1 -1
- package/fesm2022/primeng-inputotp.mjs +2 -2
- package/fesm2022/primeng-inputotp.mjs.map +1 -1
- package/fesm2022/primeng-inputswitch.mjs +2 -2
- package/fesm2022/primeng-inputswitch.mjs.map +1 -1
- package/fesm2022/primeng-inputtext.mjs +1 -1
- package/fesm2022/primeng-inputtext.mjs.map +1 -1
- package/fesm2022/primeng-inputtextarea.mjs +1 -1
- package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
- package/fesm2022/primeng-keyfilter.mjs +1 -1
- package/fesm2022/primeng-keyfilter.mjs.map +1 -1
- package/fesm2022/primeng-knob.mjs +2 -2
- package/fesm2022/primeng-knob.mjs.map +1 -1
- package/fesm2022/primeng-listbox.mjs +2 -2
- package/fesm2022/primeng-listbox.mjs.map +1 -1
- package/fesm2022/primeng-megamenu.mjs +4 -4
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +5 -5
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +4 -4
- package/fesm2022/primeng-menubar.mjs.map +1 -1
- package/fesm2022/primeng-message.mjs +2 -2
- package/fesm2022/primeng-message.mjs.map +1 -1
- package/fesm2022/primeng-messages.mjs +2 -2
- package/fesm2022/primeng-messages.mjs.map +1 -1
- package/fesm2022/primeng-metergroup.mjs +4 -4
- package/fesm2022/primeng-metergroup.mjs.map +1 -1
- package/fesm2022/primeng-multiselect.mjs +4 -4
- package/fesm2022/primeng-multiselect.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +2 -2
- package/fesm2022/primeng-orderlist.mjs.map +1 -1
- package/fesm2022/primeng-organizationchart.mjs +5 -5
- package/fesm2022/primeng-organizationchart.mjs.map +1 -1
- package/fesm2022/primeng-overlay.mjs +2 -2
- package/fesm2022/primeng-overlay.mjs.map +1 -1
- package/fesm2022/primeng-overlaybadge.mjs +2 -2
- package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
- package/fesm2022/primeng-overlaypanel.mjs +2 -2
- package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
- package/fesm2022/primeng-paginator.mjs +2 -2
- package/fesm2022/primeng-paginator.mjs.map +1 -1
- package/fesm2022/primeng-panel.mjs +2 -2
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +7 -7
- package/fesm2022/primeng-panelmenu.mjs.map +1 -1
- package/fesm2022/primeng-password.mjs +4 -4
- package/fesm2022/primeng-password.mjs.map +1 -1
- package/fesm2022/primeng-picklist.mjs +2 -2
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +2 -2
- package/fesm2022/primeng-popover.mjs.map +1 -1
- package/fesm2022/primeng-progressbar.mjs +2 -2
- package/fesm2022/primeng-progressbar.mjs.map +1 -1
- package/fesm2022/primeng-progressspinner.mjs +2 -2
- package/fesm2022/primeng-progressspinner.mjs.map +1 -1
- package/fesm2022/primeng-radiobutton.mjs +2 -2
- package/fesm2022/primeng-radiobutton.mjs.map +1 -1
- package/fesm2022/primeng-rating.mjs +2 -2
- package/fesm2022/primeng-rating.mjs.map +1 -1
- package/fesm2022/primeng-ripple.mjs +1 -1
- package/fesm2022/primeng-ripple.mjs.map +1 -1
- package/fesm2022/primeng-scroller.mjs +2 -2
- package/fesm2022/primeng-scroller.mjs.map +1 -1
- package/fesm2022/primeng-scrollpanel.mjs +2 -2
- package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
- package/fesm2022/primeng-scrolltop.mjs +2 -2
- package/fesm2022/primeng-scrolltop.mjs.map +1 -1
- package/fesm2022/primeng-select.mjs +4 -4
- package/fesm2022/primeng-select.mjs.map +1 -1
- package/fesm2022/primeng-selectbutton.mjs +2 -2
- package/fesm2022/primeng-selectbutton.mjs.map +1 -1
- package/fesm2022/primeng-sidebar.mjs +2 -2
- package/fesm2022/primeng-sidebar.mjs.map +1 -1
- package/fesm2022/primeng-skeleton.mjs +2 -2
- package/fesm2022/primeng-skeleton.mjs.map +1 -1
- package/fesm2022/primeng-slider.mjs +2 -2
- package/fesm2022/primeng-slider.mjs.map +1 -1
- package/fesm2022/primeng-speeddial.mjs +2 -2
- package/fesm2022/primeng-speeddial.mjs.map +1 -1
- package/fesm2022/primeng-splitbutton.mjs +2 -2
- package/fesm2022/primeng-splitbutton.mjs.map +1 -1
- package/fesm2022/primeng-splitter.mjs +4 -4
- package/fesm2022/primeng-splitter.mjs.map +1 -1
- package/fesm2022/primeng-stepper.mjs +16 -16
- package/fesm2022/primeng-stepper.mjs.map +1 -1
- package/fesm2022/primeng-steps.mjs +2 -2
- package/fesm2022/primeng-steps.mjs.map +1 -1
- package/fesm2022/primeng-styleclass.mjs +1 -1
- package/fesm2022/primeng-styleclass.mjs.map +1 -1
- package/fesm2022/primeng-table.mjs +64 -38
- package/fesm2022/primeng-table.mjs.map +1 -1
- package/fesm2022/primeng-tabmenu.mjs +2 -2
- package/fesm2022/primeng-tabmenu.mjs.map +1 -1
- package/fesm2022/primeng-tabs.mjs +11 -11
- package/fesm2022/primeng-tabs.mjs.map +1 -1
- package/fesm2022/primeng-tabview.mjs +4 -4
- package/fesm2022/primeng-tabview.mjs.map +1 -1
- package/fesm2022/primeng-tag.mjs +2 -2
- package/fesm2022/primeng-tag.mjs.map +1 -1
- package/fesm2022/primeng-terminal.mjs +2 -2
- package/fesm2022/primeng-terminal.mjs.map +1 -1
- package/fesm2022/primeng-textarea.mjs +1 -1
- package/fesm2022/primeng-textarea.mjs.map +1 -1
- package/fesm2022/primeng-tieredmenu.mjs +4 -4
- package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
- package/fesm2022/primeng-timeline.mjs +2 -2
- package/fesm2022/primeng-timeline.mjs.map +1 -1
- package/fesm2022/primeng-toast.mjs +4 -4
- package/fesm2022/primeng-toast.mjs.map +1 -1
- package/fesm2022/primeng-togglebutton.mjs +3 -3
- package/fesm2022/primeng-togglebutton.mjs.map +1 -1
- package/fesm2022/primeng-toggleswitch.mjs +2 -2
- package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
- package/fesm2022/primeng-toolbar.mjs +2 -2
- package/fesm2022/primeng-toolbar.mjs.map +1 -1
- package/fesm2022/primeng-tooltip.mjs +1 -1
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +4 -4
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +2 -2
- package/fesm2022/primeng-treeselect.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +24 -24
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/package.json +163 -511
- package/speeddial/speeddial.d.ts +2 -2
- package/esm2022/accordion/accordion.mjs +0 -1281
- package/esm2022/accordion/primeng-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -3
- package/esm2022/accordion/style/accordionstyle.mjs +0 -163
- package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
- package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
- package/esm2022/animateonscroll/public_api.mjs +0 -2
- package/esm2022/api/blockableui.mjs +0 -2
- package/esm2022/api/confirmaeventtype.mjs +0 -10
- package/esm2022/api/confirmation.mjs +0 -2
- package/esm2022/api/confirmationservice.mjs +0 -43
- package/esm2022/api/contextmenuservice.mjs +0 -22
- package/esm2022/api/filtermatchmode.mjs +0 -23
- package/esm2022/api/filtermetadata.mjs +0 -2
- package/esm2022/api/filteroperator.mjs +0 -5
- package/esm2022/api/filterservice.mjs +0 -224
- package/esm2022/api/lazyloadevent.mjs +0 -2
- package/esm2022/api/lazyloadmeta.mjs +0 -2
- package/esm2022/api/megamenuitem.mjs +0 -2
- package/esm2022/api/menuitem.mjs +0 -2
- package/esm2022/api/messageservice.mjs +0 -47
- package/esm2022/api/overlayoptions.mjs +0 -2
- package/esm2022/api/overlayservice.mjs +0 -19
- package/esm2022/api/primeicons.mjs +0 -314
- package/esm2022/api/primeng-api.mjs +0 -5
- package/esm2022/api/public_api.mjs +0 -33
- package/esm2022/api/scrolleroptions.mjs +0 -2
- package/esm2022/api/selectitem.mjs +0 -2
- package/esm2022/api/selectitemgroup.mjs +0 -2
- package/esm2022/api/shared.mjs +0 -76
- package/esm2022/api/sortevent.mjs +0 -2
- package/esm2022/api/sortmeta.mjs +0 -2
- package/esm2022/api/tablestate.mjs +0 -2
- package/esm2022/api/toastmessage.mjs +0 -2
- package/esm2022/api/tooltipoptions.mjs +0 -2
- package/esm2022/api/translation.mjs +0 -2
- package/esm2022/api/translationkeys.mjs +0 -51
- package/esm2022/api/treedragdropservice.mjs +0 -21
- package/esm2022/api/treenode.mjs +0 -2
- package/esm2022/api/treenodedragevent.mjs +0 -2
- package/esm2022/api/treetablenode.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.mjs +0 -2284
- package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/public_api.mjs +0 -4
- package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -409
- package/esm2022/autofocus/autofocus.mjs +0 -86
- package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
- package/esm2022/autofocus/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.mjs +0 -193
- package/esm2022/avatar/primeng-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -3
- package/esm2022/avatar/style/avatarstyle.mjs +0 -130
- package/esm2022/avatargroup/avatargroup.mjs +0 -80
- package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
- package/esm2022/avatargroup/public_api.mjs +0 -3
- package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
- package/esm2022/badge/badge.mjs +0 -339
- package/esm2022/badge/primeng-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -3
- package/esm2022/badge/style/badgestyle.mjs +0 -143
- package/esm2022/base/base.mjs +0 -19
- package/esm2022/base/primeng-base.mjs +0 -5
- package/esm2022/base/public_api.mjs +0 -3
- package/esm2022/base/style/basestyle.mjs +0 -256
- package/esm2022/basecomponent/basecomponent.mjs +0 -160
- package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
- package/esm2022/basecomponent/public_api.mjs +0 -3
- package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
- package/esm2022/blockui/blockui.interface.mjs +0 -2
- package/esm2022/blockui/blockui.mjs +0 -230
- package/esm2022/blockui/primeng-blockui.mjs +0 -5
- package/esm2022/blockui/public_api.mjs +0 -4
- package/esm2022/blockui/style/blockuistyle.mjs +0 -50
- package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
- package/esm2022/breadcrumb/breadcrumb.mjs +0 -601
- package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
- package/esm2022/breadcrumb/public_api.mjs +0 -4
- package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
- package/esm2022/button/button.interface.mjs +0 -2
- package/esm2022/button/button.mjs +0 -923
- package/esm2022/button/primeng-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -4
- package/esm2022/button/style/buttonstyle.mjs +0 -707
- package/esm2022/buttongroup/buttongroup.mjs +0 -47
- package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
- package/esm2022/buttongroup/public_api.mjs +0 -3
- package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
- package/esm2022/calendar/calendar.interface.mjs +0 -2
- package/esm2022/calendar/calendar.mjs +0 -4567
- package/esm2022/calendar/primeng-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -4
- package/esm2022/calendar/style/calendarstyle.mjs +0 -472
- package/esm2022/card/card.interface.mjs +0 -2
- package/esm2022/card/card.mjs +0 -293
- package/esm2022/card/primeng-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -4
- package/esm2022/card/style/cardstyle.mjs +0 -100
- package/esm2022/carousel/carousel.interface.mjs +0 -2
- package/esm2022/carousel/carousel.mjs +0 -1213
- package/esm2022/carousel/primeng-carousel.mjs +0 -5
- package/esm2022/carousel/public_api.mjs +0 -4
- package/esm2022/carousel/style/carouselstyle.mjs +0 -234
- package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
- package/esm2022/cascadeselect/cascadeselect.mjs +0 -1878
- package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
- package/esm2022/cascadeselect/public_api.mjs +0 -4
- package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
- package/esm2022/chart/chart.mjs +0 -210
- package/esm2022/chart/primeng-chart.mjs +0 -5
- package/esm2022/chart/public_api.mjs +0 -3
- package/esm2022/chart/style/chartstyle.mjs +0 -36
- package/esm2022/checkbox/checkbox.interface.mjs +0 -2
- package/esm2022/checkbox/checkbox.mjs +0 -468
- package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
- package/esm2022/checkbox/public_api.mjs +0 -4
- package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
- package/esm2022/chip/chip.interface.mjs +0 -2
- package/esm2022/chip/chip.mjs +0 -358
- package/esm2022/chip/primeng-chip.mjs +0 -5
- package/esm2022/chip/public_api.mjs +0 -4
- package/esm2022/chip/style/chipstyle.mjs +0 -104
- package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
- package/esm2022/colorpicker/colorpicker.mjs +0 -856
- package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
- package/esm2022/colorpicker/public_api.mjs +0 -4
- package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
- package/esm2022/config/primeng-config.mjs +0 -5
- package/esm2022/config/primeng.mjs +0 -185
- package/esm2022/config/provideprimeng.mjs +0 -19
- package/esm2022/config/public_api.mjs +0 -4
- package/esm2022/config/themeprovider.mjs +0 -68
- package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
- package/esm2022/confirmdialog/confirmdialog.mjs +0 -854
- package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
- package/esm2022/confirmdialog/public_api.mjs +0 -4
- package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
- package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
- package/esm2022/confirmpopup/confirmpopup.mjs +0 -647
- package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
- package/esm2022/confirmpopup/public_api.mjs +0 -4
- package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
- package/esm2022/contextmenu/contextmenu.mjs +0 -1467
- package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
- package/esm2022/contextmenu/public_api.mjs +0 -3
- package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
- package/esm2022/dataview/dataview.interface.mjs +0 -2
- package/esm2022/dataview/dataview.mjs +0 -819
- package/esm2022/dataview/primeng-dataview.mjs +0 -5
- package/esm2022/dataview/public_api.mjs +0 -4
- package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
- package/esm2022/datepicker/datepicker.interface.mjs +0 -2
- package/esm2022/datepicker/datepicker.mjs +0 -4580
- package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
- package/esm2022/datepicker/public_api.mjs +0 -4
- package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
- package/esm2022/defer/defer.mjs +0 -100
- package/esm2022/defer/primeng-defer.mjs +0 -5
- package/esm2022/defer/public_api.mjs +0 -2
- package/esm2022/dialog/dialog.interface.mjs +0 -2
- package/esm2022/dialog/dialog.mjs +0 -1430
- package/esm2022/dialog/primeng-dialog.mjs +0 -5
- package/esm2022/dialog/public_api.mjs +0 -4
- package/esm2022/dialog/style/dialogstyle.mjs +0 -283
- package/esm2022/divider/divider.mjs +0 -117
- package/esm2022/divider/primeng-divider.mjs +0 -5
- package/esm2022/divider/public_api.mjs +0 -3
- package/esm2022/divider/style/dividerstyle.mjs +0 -138
- package/esm2022/dock/dock.interface.mjs +0 -2
- package/esm2022/dock/dock.mjs +0 -465
- package/esm2022/dock/primeng-dock.mjs +0 -5
- package/esm2022/dock/public_api.mjs +0 -4
- package/esm2022/dock/style/dockstyle.mjs +0 -210
- package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
- package/esm2022/dom/domhandler.mjs +0 -725
- package/esm2022/dom/primeng-dom.mjs +0 -5
- package/esm2022/dom/public_api.mjs +0 -3
- package/esm2022/dragdrop/dragdrop.mjs +0 -323
- package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
- package/esm2022/dragdrop/public_api.mjs +0 -2
- package/esm2022/drawer/drawer.interface.mjs +0 -2
- package/esm2022/drawer/drawer.mjs +0 -705
- package/esm2022/drawer/primeng-drawer.mjs +0 -5
- package/esm2022/drawer/public_api.mjs +0 -4
- package/esm2022/drawer/style/drawerstyle.mjs +0 -283
- package/esm2022/dropdown/dropdown.interface.mjs +0 -2
- package/esm2022/dropdown/dropdown.mjs +0 -2506
- package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
- package/esm2022/dropdown/public_api.mjs +0 -4
- package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
- package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
- package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
- package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -879
- package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
- package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
- package/esm2022/dynamicdialog/public_api.mjs +0 -8
- package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
- package/esm2022/editor/editor.interface.mjs +0 -2
- package/esm2022/editor/editor.mjs +0 -443
- package/esm2022/editor/primeng-editor.mjs +0 -5
- package/esm2022/editor/public_api.mjs +0 -4
- package/esm2022/editor/style/editorstyle.mjs +0 -1008
- package/esm2022/fieldset/fieldset.interface.mjs +0 -2
- package/esm2022/fieldset/fieldset.mjs +0 -455
- package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
- package/esm2022/fieldset/public_api.mjs +0 -4
- package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
- package/esm2022/fileupload/fileupload.interface.mjs +0 -2
- package/esm2022/fileupload/fileupload.mjs +0 -1647
- package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
- package/esm2022/fileupload/public_api.mjs +0 -4
- package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
- package/esm2022/floatlabel/floatlabel.mjs +0 -61
- package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
- package/esm2022/floatlabel/public_api.mjs +0 -3
- package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
- package/esm2022/fluid/fluid.mjs +0 -50
- package/esm2022/fluid/primeng-fluid.mjs +0 -5
- package/esm2022/fluid/public_api.mjs +0 -3
- package/esm2022/fluid/style/fluidstyle.mjs +0 -38
- package/esm2022/focustrap/focustrap.mjs +0 -104
- package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
- package/esm2022/focustrap/public_api.mjs +0 -2
- package/esm2022/galleria/galleria.interface.mjs +0 -2
- package/esm2022/galleria/galleria.mjs +0 -1867
- package/esm2022/galleria/primeng-galleria.mjs +0 -5
- package/esm2022/galleria/public_api.mjs +0 -4
- package/esm2022/galleria/style/galleriastyle.mjs +0 -644
- package/esm2022/iconfield/iconfield.mjs +0 -73
- package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
- package/esm2022/iconfield/public_api.mjs +0 -3
- package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
- package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
- package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
- package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
- package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
- package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
- package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
- package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
- package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
- package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
- package/esm2022/icons/angledown/angledown.mjs +0 -32
- package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
- package/esm2022/icons/angledown/public_api.mjs +0 -2
- package/esm2022/icons/angleleft/angleleft.mjs +0 -32
- package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
- package/esm2022/icons/angleleft/public_api.mjs +0 -2
- package/esm2022/icons/angleright/angleright.mjs +0 -32
- package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
- package/esm2022/icons/angleright/public_api.mjs +0 -2
- package/esm2022/icons/angleup/angleup.mjs +0 -32
- package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
- package/esm2022/icons/angleup/public_api.mjs +0 -2
- package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
- package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
- package/esm2022/icons/arrowdown/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
- package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
- package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
- package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
- package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
- package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
- package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
- package/esm2022/icons/arrowleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowright/arrowright.mjs +0 -34
- package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
- package/esm2022/icons/arrowright/public_api.mjs +0 -2
- package/esm2022/icons/arrowup/arrowup.mjs +0 -53
- package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
- package/esm2022/icons/arrowup/public_api.mjs +0 -2
- package/esm2022/icons/ban/ban.mjs +0 -51
- package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
- package/esm2022/icons/ban/public_api.mjs +0 -2
- package/esm2022/icons/bars/bars.mjs +0 -34
- package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
- package/esm2022/icons/bars/public_api.mjs +0 -2
- package/esm2022/icons/baseicon/baseicon.mjs +0 -54
- package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
- package/esm2022/icons/baseicon/public_api.mjs +0 -3
- package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
- package/esm2022/icons/blank/blank.mjs +0 -26
- package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
- package/esm2022/icons/blank/public_api.mjs +0 -2
- package/esm2022/icons/calendar/calendar.mjs +0 -32
- package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
- package/esm2022/icons/calendar/public_api.mjs +0 -2
- package/esm2022/icons/caretleft/caretleft.mjs +0 -32
- package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
- package/esm2022/icons/caretleft/public_api.mjs +0 -2
- package/esm2022/icons/caretright/caretright.mjs +0 -32
- package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
- package/esm2022/icons/caretright/public_api.mjs +0 -2
- package/esm2022/icons/check/check.mjs +0 -32
- package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
- package/esm2022/icons/check/public_api.mjs +0 -2
- package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
- package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
- package/esm2022/icons/chevrondown/public_api.mjs +0 -2
- package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
- package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
- package/esm2022/icons/chevronleft/public_api.mjs +0 -2
- package/esm2022/icons/chevronright/chevronright.mjs +0 -32
- package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
- package/esm2022/icons/chevronright/public_api.mjs +0 -2
- package/esm2022/icons/chevronup/chevronup.mjs +0 -32
- package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
- package/esm2022/icons/chevronup/public_api.mjs +0 -2
- package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
- package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
- package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
- package/esm2022/icons/eye/eye.mjs +0 -34
- package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
- package/esm2022/icons/eye/public_api.mjs +0 -2
- package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
- package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
- package/esm2022/icons/eyeslash/public_api.mjs +0 -2
- package/esm2022/icons/filter/filter.mjs +0 -51
- package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
- package/esm2022/icons/filter/public_api.mjs +0 -2
- package/esm2022/icons/filterslash/filterslash.mjs +0 -53
- package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
- package/esm2022/icons/filterslash/public_api.mjs +0 -2
- package/esm2022/icons/home/home.mjs +0 -53
- package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
- package/esm2022/icons/home/public_api.mjs +0 -2
- package/esm2022/icons/infocircle/infocircle.mjs +0 -53
- package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
- package/esm2022/icons/infocircle/public_api.mjs +0 -2
- package/esm2022/icons/minus/minus.mjs +0 -32
- package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
- package/esm2022/icons/minus/public_api.mjs +0 -2
- package/esm2022/icons/pencil/pencil.mjs +0 -51
- package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
- package/esm2022/icons/pencil/public_api.mjs +0 -2
- package/esm2022/icons/plus/plus.mjs +0 -51
- package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
- package/esm2022/icons/plus/public_api.mjs +0 -2
- package/esm2022/icons/primeng-icons.mjs +0 -5
- package/esm2022/icons/public_api.mjs +0 -58
- package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
- package/esm2022/icons/refresh/public_api.mjs +0 -2
- package/esm2022/icons/refresh/refresh.mjs +0 -53
- package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
- package/esm2022/icons/search/public_api.mjs +0 -2
- package/esm2022/icons/search/search.mjs +0 -53
- package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
- package/esm2022/icons/searchminus/public_api.mjs +0 -2
- package/esm2022/icons/searchminus/searchminus.mjs +0 -53
- package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
- package/esm2022/icons/searchplus/public_api.mjs +0 -2
- package/esm2022/icons/searchplus/searchplus.mjs +0 -53
- package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
- package/esm2022/icons/sortalt/public_api.mjs +0 -2
- package/esm2022/icons/sortalt/sortalt.mjs +0 -57
- package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
- package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
- package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
- package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
- package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
- package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
- package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
- package/esm2022/icons/spinner/public_api.mjs +0 -2
- package/esm2022/icons/spinner/spinner.mjs +0 -51
- package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
- package/esm2022/icons/star/public_api.mjs +0 -2
- package/esm2022/icons/star/star.mjs +0 -51
- package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
- package/esm2022/icons/starfill/public_api.mjs +0 -2
- package/esm2022/icons/starfill/starfill.mjs +0 -51
- package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
- package/esm2022/icons/thlarge/public_api.mjs +0 -2
- package/esm2022/icons/thlarge/thlarge.mjs +0 -53
- package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
- package/esm2022/icons/times/public_api.mjs +0 -2
- package/esm2022/icons/times/times.mjs +0 -32
- package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
- package/esm2022/icons/timescircle/public_api.mjs +0 -2
- package/esm2022/icons/timescircle/timescircle.mjs +0 -53
- package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
- package/esm2022/icons/trash/public_api.mjs +0 -2
- package/esm2022/icons/trash/trash.mjs +0 -53
- package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
- package/esm2022/icons/undo/public_api.mjs +0 -2
- package/esm2022/icons/undo/undo.mjs +0 -53
- package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
- package/esm2022/icons/upload/public_api.mjs +0 -2
- package/esm2022/icons/upload/upload.mjs +0 -53
- package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
- package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
- package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
- package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
- package/esm2022/icons/windowminimize/public_api.mjs +0 -2
- package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
- package/esm2022/iftalabel/iftalabel.mjs +0 -49
- package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
- package/esm2022/iftalabel/public_api.mjs +0 -3
- package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
- package/esm2022/image/image.interface.mjs +0 -2
- package/esm2022/image/image.mjs +0 -794
- package/esm2022/image/primeng-image.mjs +0 -5
- package/esm2022/image/public_api.mjs +0 -4
- package/esm2022/image/style/imagestyle.mjs +0 -219
- package/esm2022/imagecompare/imagecompare.mjs +0 -178
- package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
- package/esm2022/imagecompare/public_api.mjs +0 -3
- package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
- package/esm2022/inplace/inplace.interface.mjs +0 -2
- package/esm2022/inplace/inplace.mjs +0 -369
- package/esm2022/inplace/primeng-inplace.mjs +0 -5
- package/esm2022/inplace/public_api.mjs +0 -4
- package/esm2022/inplace/style/inplacestyle.mjs +0 -69
- package/esm2022/inputgroup/inputgroup.mjs +0 -68
- package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
- package/esm2022/inputgroup/public_api.mjs +0 -3
- package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
- package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
- package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
- package/esm2022/inputgroupaddon/public_api.mjs +0 -3
- package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
- package/esm2022/inputicon/inputicon.mjs +0 -66
- package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
- package/esm2022/inputicon/public_api.mjs +0 -3
- package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
- package/esm2022/inputmask/inputmask.interface.mjs +0 -2
- package/esm2022/inputmask/inputmask.mjs +0 -927
- package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
- package/esm2022/inputmask/public_api.mjs +0 -4
- package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
- package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
- package/esm2022/inputnumber/inputnumber.mjs +0 -1753
- package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
- package/esm2022/inputnumber/public_api.mjs +0 -4
- package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
- package/esm2022/inputotp/inputotp.mjs +0 -425
- package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
- package/esm2022/inputotp/public_api.mjs +0 -3
- package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
- package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
- package/esm2022/inputswitch/inputswitch.mjs +0 -241
- package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
- package/esm2022/inputswitch/public_api.mjs +0 -4
- package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
- package/esm2022/inputtext/inputtext.mjs +0 -104
- package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
- package/esm2022/inputtext/public_api.mjs +0 -3
- package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
- package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
- package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
- package/esm2022/inputtextarea/public_api.mjs +0 -3
- package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
- package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
- package/esm2022/keyfilter/keyfilter.mjs +0 -263
- package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
- package/esm2022/keyfilter/public_api.mjs +0 -3
- package/esm2022/knob/knob.mjs +0 -471
- package/esm2022/knob/primeng-knob.mjs +0 -5
- package/esm2022/knob/public_api.mjs +0 -3
- package/esm2022/knob/style/knobstyle.mjs +0 -83
- package/esm2022/listbox/listbox.interface.mjs +0 -2
- package/esm2022/listbox/listbox.mjs +0 -2103
- package/esm2022/listbox/primeng-listbox.mjs +0 -5
- package/esm2022/listbox/public_api.mjs +0 -4
- package/esm2022/listbox/style/listboxstyle.mjs +0 -206
- package/esm2022/megamenu/megamenu.interface.mjs +0 -2
- package/esm2022/megamenu/megamenu.mjs +0 -1653
- package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
- package/esm2022/megamenu/public_api.mjs +0 -4
- package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
- package/esm2022/menu/menu.mjs +0 -1193
- package/esm2022/menu/primeng-menu.mjs +0 -5
- package/esm2022/menu/public_api.mjs +0 -3
- package/esm2022/menu/style/menustyle.mjs +0 -179
- package/esm2022/menubar/menubar.interface.mjs +0 -2
- package/esm2022/menubar/menubar.mjs +0 -1519
- package/esm2022/menubar/primeng-menubar.mjs +0 -5
- package/esm2022/menubar/public_api.mjs +0 -4
- package/esm2022/menubar/style/menubarstyle.mjs +0 -375
- package/esm2022/message/message.mjs +0 -445
- package/esm2022/message/primeng-message.mjs +0 -5
- package/esm2022/message/public_api.mjs +0 -3
- package/esm2022/message/style/messagestyle.mjs +0 -357
- package/esm2022/messages/messages.interface.mjs +0 -2
- package/esm2022/messages/messages.mjs +0 -538
- package/esm2022/messages/primeng-messages.mjs +0 -5
- package/esm2022/messages/public_api.mjs +0 -4
- package/esm2022/messages/style/messagesstyle.mjs +0 -229
- package/esm2022/metergroup/metergroup.interface.mjs +0 -2
- package/esm2022/metergroup/metergroup.mjs +0 -455
- package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
- package/esm2022/metergroup/public_api.mjs +0 -4
- package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
- package/esm2022/multiselect/multiselect.interface.mjs +0 -2
- package/esm2022/multiselect/multiselect.mjs +0 -3015
- package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
- package/esm2022/multiselect/public_api.mjs +0 -4
- package/esm2022/multiselect/style/multiselectstyle.mjs +0 -373
- package/esm2022/orderlist/orderlist.interface.mjs +0 -2
- package/esm2022/orderlist/orderlist.mjs +0 -1176
- package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
- package/esm2022/orderlist/public_api.mjs +0 -4
- package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
- package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
- package/esm2022/organizationchart/organizationchart.mjs +0 -607
- package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
- package/esm2022/organizationchart/public_api.mjs +0 -4
- package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
- package/esm2022/overlay/overlay.mjs +0 -688
- package/esm2022/overlay/primeng-overlay.mjs +0 -5
- package/esm2022/overlay/public_api.mjs +0 -3
- package/esm2022/overlay/style/overlaystyle.mjs +0 -93
- package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
- package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
- package/esm2022/overlaybadge/public_api.mjs +0 -3
- package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
- package/esm2022/overlaypanel/overlaypanel.mjs +0 -552
- package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
- package/esm2022/overlaypanel/public_api.mjs +0 -3
- package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
- package/esm2022/paginator/paginator.interface.mjs +0 -2
- package/esm2022/paginator/paginator.mjs +0 -925
- package/esm2022/paginator/primeng-paginator.mjs +0 -5
- package/esm2022/paginator/public_api.mjs +0 -4
- package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
- package/esm2022/panel/panel.mjs +0 -645
- package/esm2022/panel/primeng-panel.mjs +0 -5
- package/esm2022/panel/public_api.mjs +0 -3
- package/esm2022/panel/style/panelstyle.mjs +0 -120
- package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
- package/esm2022/panelmenu/panelmenu.mjs +0 -1651
- package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
- package/esm2022/panelmenu/public_api.mjs +0 -4
- package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
- package/esm2022/password/password.mjs +0 -1240
- package/esm2022/password/primeng-password.mjs +0 -5
- package/esm2022/password/public_api.mjs +0 -3
- package/esm2022/password/style/passwordstyle.mjs +0 -182
- package/esm2022/picklist/picklist.interface.mjs +0 -2
- package/esm2022/picklist/picklist.mjs +0 -2426
- package/esm2022/picklist/primeng-picklist.mjs +0 -5
- package/esm2022/picklist/public_api.mjs +0 -4
- package/esm2022/picklist/style/pickliststyle.mjs +0 -79
- package/esm2022/popover/popover.mjs +0 -535
- package/esm2022/popover/primeng-popover.mjs +0 -5
- package/esm2022/popover/public_api.mjs +0 -3
- package/esm2022/popover/style/popoverstyle.mjs +0 -99
- package/esm2022/primeng.mjs +0 -5
- package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
- package/esm2022/progressbar/progressbar.mjs +0 -215
- package/esm2022/progressbar/public_api.mjs +0 -3
- package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
- package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
- package/esm2022/progressspinner/progressspinner.mjs +0 -105
- package/esm2022/progressspinner/public_api.mjs +0 -3
- package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
- package/esm2022/public_api.mjs +0 -2
- package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
- package/esm2022/radiobutton/public_api.mjs +0 -4
- package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
- package/esm2022/radiobutton/radiobutton.mjs +0 -356
- package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
- package/esm2022/rating/primeng-rating.mjs +0 -5
- package/esm2022/rating/public_api.mjs +0 -4
- package/esm2022/rating/rating.interface.mjs +0 -2
- package/esm2022/rating/rating.mjs +0 -449
- package/esm2022/rating/style/ratingstyle.mjs +0 -103
- package/esm2022/ripple/primeng-ripple.mjs +0 -5
- package/esm2022/ripple/public_api.mjs +0 -3
- package/esm2022/ripple/ripple.mjs +0 -134
- package/esm2022/ripple/style/ripplestyle.mjs +0 -63
- package/esm2022/scroller/primeng-scroller.mjs +0 -5
- package/esm2022/scroller/public_api.mjs +0 -4
- package/esm2022/scroller/scroller.interface.mjs +0 -2
- package/esm2022/scroller/scroller.mjs +0 -1300
- package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
- package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
- package/esm2022/scrollpanel/public_api.mjs +0 -4
- package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
- package/esm2022/scrollpanel/scrollpanel.mjs +0 -525
- package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
- package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
- package/esm2022/scrolltop/public_api.mjs +0 -4
- package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
- package/esm2022/scrolltop/scrolltop.mjs +0 -343
- package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
- package/esm2022/select/primeng-select.mjs +0 -5
- package/esm2022/select/public_api.mjs +0 -4
- package/esm2022/select/select.interface.mjs +0 -2
- package/esm2022/select/select.mjs +0 -2697
- package/esm2022/select/style/selectstyle.mjs +0 -365
- package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
- package/esm2022/selectbutton/public_api.mjs +0 -4
- package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
- package/esm2022/selectbutton/selectbutton.mjs +0 -388
- package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
- package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
- package/esm2022/sidebar/public_api.mjs +0 -4
- package/esm2022/sidebar/sidebar.interface.mjs +0 -2
- package/esm2022/sidebar/sidebar.mjs +0 -600
- package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
- package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
- package/esm2022/skeleton/public_api.mjs +0 -3
- package/esm2022/skeleton/skeleton.mjs +0 -121
- package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
- package/esm2022/slider/primeng-slider.mjs +0 -5
- package/esm2022/slider/public_api.mjs +0 -4
- package/esm2022/slider/slider.interface.mjs +0 -2
- package/esm2022/slider/slider.mjs +0 -820
- package/esm2022/slider/style/sliderstyle.mjs +0 -141
- package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
- package/esm2022/speeddial/public_api.mjs +0 -4
- package/esm2022/speeddial/speeddial.interface.mjs +0 -2
- package/esm2022/speeddial/speeddial.mjs +0 -891
- package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
- package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
- package/esm2022/splitbutton/public_api.mjs +0 -4
- package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
- package/esm2022/splitbutton/splitbutton.mjs +0 -602
- package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
- package/esm2022/splitter/primeng-splitter.mjs +0 -5
- package/esm2022/splitter/public_api.mjs +0 -4
- package/esm2022/splitter/splitter.interface.mjs +0 -2
- package/esm2022/splitter/splitter.mjs +0 -626
- package/esm2022/splitter/style/splitterstyle.mjs +0 -127
- package/esm2022/stepper/primeng-stepper.mjs +0 -5
- package/esm2022/stepper/public_api.mjs +0 -3
- package/esm2022/stepper/stepper.mjs +0 -535
- package/esm2022/stepper/style/stepperstyle.mjs +0 -228
- package/esm2022/steps/primeng-steps.mjs +0 -5
- package/esm2022/steps/public_api.mjs +0 -3
- package/esm2022/steps/steps.mjs +0 -405
- package/esm2022/steps/style/stepsstyle.mjs +0 -180
- package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
- package/esm2022/styleclass/public_api.mjs +0 -2
- package/esm2022/styleclass/styleclass.mjs +0 -315
- package/esm2022/table/columnfilter.interface.mjs +0 -2
- package/esm2022/table/primeng-table.mjs +0 -5
- package/esm2022/table/public_api.mjs +0 -5
- package/esm2022/table/style/tablestyle.mjs +0 -906
- package/esm2022/table/table.interface.mjs +0 -2
- package/esm2022/table/table.mjs +0 -7840
- package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
- package/esm2022/tabmenu/public_api.mjs +0 -4
- package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
- package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
- package/esm2022/tabmenu/tabmenu.mjs +0 -757
- package/esm2022/tabs/primeng-tabs.mjs +0 -5
- package/esm2022/tabs/public_api.mjs +0 -7
- package/esm2022/tabs/style/tabsstyle.mjs +0 -211
- package/esm2022/tabs/tab.mjs +0 -175
- package/esm2022/tabs/tablist.mjs +0 -305
- package/esm2022/tabs/tabpanel.mjs +0 -60
- package/esm2022/tabs/tabpanels.mjs +0 -38
- package/esm2022/tabs/tabs.mjs +0 -105
- package/esm2022/tabview/primeng-tabview.mjs +0 -5
- package/esm2022/tabview/public_api.mjs +0 -4
- package/esm2022/tabview/style/tabsstyle.mjs +0 -211
- package/esm2022/tabview/tabview.interface.mjs +0 -2
- package/esm2022/tabview/tabview.mjs +0 -1141
- package/esm2022/tag/primeng-tag.mjs +0 -5
- package/esm2022/tag/public_api.mjs +0 -4
- package/esm2022/tag/style/tagstyle.mjs +0 -108
- package/esm2022/tag/tag.interface.mjs +0 -2
- package/esm2022/tag/tag.mjs +0 -192
- package/esm2022/terminal/primeng-terminal.mjs +0 -5
- package/esm2022/terminal/public_api.mjs +0 -4
- package/esm2022/terminal/style/terminalstyle.mjs +0 -113
- package/esm2022/terminal/terminal.mjs +0 -195
- package/esm2022/terminal/terminalservice.mjs +0 -25
- package/esm2022/textarea/primeng-textarea.mjs +0 -5
- package/esm2022/textarea/public_api.mjs +0 -3
- package/esm2022/textarea/style/textareastyle.mjs +0 -120
- package/esm2022/textarea/textarea.mjs +0 -165
- package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
- package/esm2022/tieredmenu/public_api.mjs +0 -4
- package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
- package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
- package/esm2022/tieredmenu/tieredmenu.mjs +0 -1467
- package/esm2022/timeline/primeng-timeline.mjs +0 -5
- package/esm2022/timeline/public_api.mjs +0 -4
- package/esm2022/timeline/style/timelinestyle.mjs +0 -217
- package/esm2022/timeline/timeline.interface.mjs +0 -2
- package/esm2022/timeline/timeline.mjs +0 -247
- package/esm2022/toast/primeng-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/style/toaststyle.mjs +0 -351
- package/esm2022/toast/toast.interface.mjs +0 -2
- package/esm2022/toast/toast.mjs +0 -760
- package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
- package/esm2022/togglebutton/public_api.mjs +0 -3
- package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
- package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
- package/esm2022/togglebutton/togglebutton.mjs +0 -368
- package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
- package/esm2022/toggleswitch/public_api.mjs +0 -4
- package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
- package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
- package/esm2022/toggleswitch/toggleswitch.mjs +0 -297
- package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
- package/esm2022/toolbar/public_api.mjs +0 -4
- package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
- package/esm2022/toolbar/toolbar.interface.mjs +0 -2
- package/esm2022/toolbar/toolbar.mjs +0 -198
- package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
- package/esm2022/tooltip/public_api.mjs +0 -3
- package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
- package/esm2022/tooltip/tooltip.mjs +0 -680
- package/esm2022/tree/primeng-tree.mjs +0 -5
- package/esm2022/tree/public_api.mjs +0 -4
- package/esm2022/tree/style/treestyle.mjs +0 -333
- package/esm2022/tree/tree.interface.mjs +0 -2
- package/esm2022/tree/tree.mjs +0 -2304
- package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
- package/esm2022/treeselect/public_api.mjs +0 -4
- package/esm2022/treeselect/style/treeselectstyle.mjs +0 -271
- package/esm2022/treeselect/treeselect.interface.mjs +0 -2
- package/esm2022/treeselect/treeselect.mjs +0 -1439
- package/esm2022/treetable/primeng-treetable.mjs +0 -5
- package/esm2022/treetable/public_api.mjs +0 -4
- package/esm2022/treetable/style/treetablestyle.mjs +0 -621
- package/esm2022/treetable/treetable.interface.mjs +0 -2
- package/esm2022/treetable/treetable.mjs +0 -4661
- package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
- package/esm2022/ts-helpers/public_api.mjs +0 -2
- package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
- package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
- package/esm2022/usestyle/public_api.mjs +0 -2
- package/esm2022/usestyle/usestyle.mjs +0 -44
- package/esm2022/utils/inpututils.mjs +0 -7
- package/esm2022/utils/objectutils.mjs +0 -276
- package/esm2022/utils/primeng-utils.mjs +0 -5
- package/esm2022/utils/public_api.mjs +0 -6
- package/esm2022/utils/uniquecomponentid.mjs +0 -6
- package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,2103 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, computed, ContentChild, ContentChildren, EventEmitter, forwardRef, inject, Input, NgModule, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
|
3
|
-
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
-
import { equals, findLastIndex, findSingle, focus, getFirstFocusableElement, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData, uuid } from '@primeuix/utils';
|
5
|
-
import { Footer, Header, PrimeTemplate, SharedModule } from 'primeng/api';
|
6
|
-
import { BaseComponent } from 'primeng/basecomponent';
|
7
|
-
import { Checkbox } from 'primeng/checkbox';
|
8
|
-
import { IconField } from 'primeng/iconfield';
|
9
|
-
import { BlankIcon, CheckIcon, SearchIcon } from 'primeng/icons';
|
10
|
-
import { InputIcon } from 'primeng/inputicon';
|
11
|
-
import { InputText } from 'primeng/inputtext';
|
12
|
-
import { Ripple } from 'primeng/ripple';
|
13
|
-
import { Scroller } from 'primeng/scroller';
|
14
|
-
import { ListBoxStyle } from './style/listboxstyle';
|
15
|
-
import * as i0 from "@angular/core";
|
16
|
-
import * as i1 from "primeng/api";
|
17
|
-
import * as i2 from "@angular/common";
|
18
|
-
import * as i3 from "@angular/forms";
|
19
|
-
const _c0 = ["item"];
|
20
|
-
const _c1 = ["group"];
|
21
|
-
const _c2 = ["header"];
|
22
|
-
const _c3 = ["filter"];
|
23
|
-
const _c4 = ["footer"];
|
24
|
-
const _c5 = ["emptyfilter"];
|
25
|
-
const _c6 = ["empty"];
|
26
|
-
const _c7 = ["filtericon"];
|
27
|
-
const _c8 = ["checkicon"];
|
28
|
-
const _c9 = ["checkmark"];
|
29
|
-
const _c10 = ["loader"];
|
30
|
-
const _c11 = ["headerchkbox"];
|
31
|
-
const _c12 = ["lastHiddenFocusableElement"];
|
32
|
-
const _c13 = ["firstHiddenFocusableElement"];
|
33
|
-
const _c14 = ["scroller"];
|
34
|
-
const _c15 = ["list"];
|
35
|
-
const _c16 = ["container"];
|
36
|
-
const _c17 = [[["p-header"]], [["p-footer"]]];
|
37
|
-
const _c18 = ["p-header", "p-footer"];
|
38
|
-
const _c19 = (a0, a1) => ({ $implicit: a0, options: a1 });
|
39
|
-
const _c20 = a0 => ({ "p-checkbox-disabled": a0 });
|
40
|
-
const _c21 = a0 => ({ $implicit: a0 });
|
41
|
-
const _c22 = a0 => ({ options: a0 });
|
42
|
-
const _c23 = a0 => ({ height: a0 });
|
43
|
-
const _c24 = () => ({});
|
44
|
-
const _c25 = (a0, a1, a2) => ({ "p-listbox-option-selected": a0, "p-focus": a1, "p-disabled": a2 });
|
45
|
-
const _c26 = (a0, a1, a2) => ({ $implicit: a0, index: a1, selected: a2 });
|
46
|
-
const _c27 = a0 => ({ implicit: a0 });
|
47
|
-
function Listbox_div_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
48
|
-
i0.ɵɵelementContainer(0);
|
49
|
-
} }
|
50
|
-
function Listbox_div_3_Template(rf, ctx) { if (rf & 1) {
|
51
|
-
i0.ɵɵelementStart(0, "div", 23);
|
52
|
-
i0.ɵɵprojection(1);
|
53
|
-
i0.ɵɵtemplate(2, Listbox_div_3_ng_container_2_Template, 1, 0, "ng-container", 24);
|
54
|
-
i0.ɵɵelementEnd();
|
55
|
-
} if (rf & 2) {
|
56
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
57
|
-
i0.ɵɵadvance(2);
|
58
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.headerTemplate || ctx_r1._headerTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, ctx_r1.modelValue(), ctx_r1.visibleOptions()));
|
59
|
-
} }
|
60
|
-
function Listbox_div_4_div_1_p_checkbox_4_ng_container_1_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
61
|
-
function Listbox_div_4_div_1_p_checkbox_4_ng_container_1_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
62
|
-
i0.ɵɵtemplate(0, Listbox_div_4_div_1_p_checkbox_4_ng_container_1_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
63
|
-
} }
|
64
|
-
function Listbox_div_4_div_1_p_checkbox_4_ng_container_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
65
|
-
i0.ɵɵtemplate(0, Listbox_div_4_div_1_p_checkbox_4_ng_container_1_ng_template_1_0_Template, 1, 0, null, 24);
|
66
|
-
} if (rf & 2) {
|
67
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
68
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.checkIconTemplate || ctx_r1._checkIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c21, ctx_r1.allSelected()));
|
69
|
-
} }
|
70
|
-
function Listbox_div_4_div_1_p_checkbox_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
71
|
-
i0.ɵɵelementContainerStart(0);
|
72
|
-
i0.ɵɵtemplate(1, Listbox_div_4_div_1_p_checkbox_4_ng_container_1_ng_template_1_Template, 1, 4, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
|
73
|
-
i0.ɵɵelementContainerEnd();
|
74
|
-
} }
|
75
|
-
function Listbox_div_4_div_1_p_checkbox_4_Template(rf, ctx) { if (rf & 1) {
|
76
|
-
i0.ɵɵelementStart(0, "p-checkbox", 31);
|
77
|
-
i0.ɵɵtemplate(1, Listbox_div_4_div_1_p_checkbox_4_ng_container_1_Template, 3, 0, "ng-container", 19);
|
78
|
-
i0.ɵɵelementEnd();
|
79
|
-
} if (rf & 2) {
|
80
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
81
|
-
i0.ɵɵproperty("ngModel", ctx_r1.allSelected())("disabled", ctx_r1.disabled)("tabindex", -1)("variant", ctx_r1.config.inputStyle() === "filled" ? "filled" : "outlined" || ctx_r1.config.inputVariant() === "filled" ? "filled" : "outlined")("binary", true);
|
82
|
-
i0.ɵɵadvance();
|
83
|
-
i0.ɵɵproperty("ngIf", ctx_r1.checkIconTemplate || ctx_r1._checkIconTemplate);
|
84
|
-
} }
|
85
|
-
function Listbox_div_4_div_1_Template(rf, ctx) { if (rf & 1) {
|
86
|
-
const _r3 = i0.ɵɵgetCurrentView();
|
87
|
-
i0.ɵɵelementStart(0, "div", 27);
|
88
|
-
i0.ɵɵlistener("click", function Listbox_div_4_div_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToggleAll($event)); })("keydown", function Listbox_div_4_div_1_Template_div_keydown_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onHeaderCheckboxKeyDown($event)); });
|
89
|
-
i0.ɵɵelementStart(1, "div", 28)(2, "input", 29, 5);
|
90
|
-
i0.ɵɵlistener("focus", function Listbox_div_4_div_1_Template_input_focus_2_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onHeaderCheckboxFocus($event)); })("blur", function Listbox_div_4_div_1_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onHeaderCheckboxBlur()); });
|
91
|
-
i0.ɵɵelementEnd()();
|
92
|
-
i0.ɵɵtemplate(4, Listbox_div_4_div_1_p_checkbox_4_Template, 2, 6, "p-checkbox", 30);
|
93
|
-
i0.ɵɵelementEnd();
|
94
|
-
} if (rf & 2) {
|
95
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
96
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c20, ctx_r1.disabled));
|
97
|
-
i0.ɵɵadvance();
|
98
|
-
i0.ɵɵattribute("data-p-hidden-accessible", true);
|
99
|
-
i0.ɵɵadvance();
|
100
|
-
i0.ɵɵproperty("disabled", ctx_r1.disabled);
|
101
|
-
i0.ɵɵattribute("checked", ctx_r1.allSelected())("aria-label", ctx_r1.toggleAllAriaLabel);
|
102
|
-
i0.ɵɵadvance(2);
|
103
|
-
i0.ɵɵproperty("ngIf", ctx_r1.checkbox && ctx_r1.multiple);
|
104
|
-
} }
|
105
|
-
function Listbox_div_4_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
106
|
-
i0.ɵɵelementContainer(0);
|
107
|
-
} }
|
108
|
-
function Listbox_div_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
109
|
-
i0.ɵɵelementContainerStart(0);
|
110
|
-
i0.ɵɵtemplate(1, Listbox_div_4_ng_container_2_ng_container_1_Template, 1, 0, "ng-container", 24);
|
111
|
-
i0.ɵɵelementContainerEnd();
|
112
|
-
} if (rf & 2) {
|
113
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
114
|
-
i0.ɵɵadvance();
|
115
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.filterTemplate || ctx_r1._filterTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c22, ctx_r1.filterOptions));
|
116
|
-
} }
|
117
|
-
function Listbox_div_4_ng_template_3_div_0_SearchIcon_5_Template(rf, ctx) { if (rf & 1) {
|
118
|
-
i0.ɵɵelement(0, "SearchIcon", 38);
|
119
|
-
} if (rf & 2) {
|
120
|
-
i0.ɵɵproperty("styleClass", "p-listbox-filter-icon");
|
121
|
-
i0.ɵɵattribute("aria-hidden", true);
|
122
|
-
} }
|
123
|
-
function Listbox_div_4_ng_template_3_div_0_span_6_1_ng_template_0_Template(rf, ctx) { }
|
124
|
-
function Listbox_div_4_ng_template_3_div_0_span_6_1_Template(rf, ctx) { if (rf & 1) {
|
125
|
-
i0.ɵɵtemplate(0, Listbox_div_4_ng_template_3_div_0_span_6_1_ng_template_0_Template, 0, 0, "ng-template");
|
126
|
-
} }
|
127
|
-
function Listbox_div_4_ng_template_3_div_0_span_6_Template(rf, ctx) { if (rf & 1) {
|
128
|
-
i0.ɵɵelementStart(0, "span", 39);
|
129
|
-
i0.ɵɵtemplate(1, Listbox_div_4_ng_template_3_div_0_span_6_1_Template, 1, 0, null, 40);
|
130
|
-
i0.ɵɵelementEnd();
|
131
|
-
} if (rf & 2) {
|
132
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
133
|
-
i0.ɵɵattribute("aria-hidden", true);
|
134
|
-
i0.ɵɵadvance();
|
135
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.filterIconTemplate || ctx_r1._filterIconTemplate);
|
136
|
-
} }
|
137
|
-
function Listbox_div_4_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
|
138
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
139
|
-
i0.ɵɵelementStart(0, "div", 34)(1, "p-iconfield")(2, "input", 35, 7);
|
140
|
-
i0.ɵɵlistener("input", function Listbox_div_4_ng_template_3_div_0_Template_input_input_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onFilterChange($event)); })("keydown", function Listbox_div_4_ng_template_3_div_0_Template_input_keydown_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onFilterKeyDown($event)); })("focus", function Listbox_div_4_ng_template_3_div_0_Template_input_focus_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onFilterFocus($event)); })("blur", function Listbox_div_4_ng_template_3_div_0_Template_input_blur_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onFilterBlur($event)); });
|
141
|
-
i0.ɵɵelementEnd();
|
142
|
-
i0.ɵɵelementStart(4, "p-inputicon");
|
143
|
-
i0.ɵɵtemplate(5, Listbox_div_4_ng_template_3_div_0_SearchIcon_5_Template, 1, 2, "SearchIcon", 36)(6, Listbox_div_4_ng_template_3_div_0_span_6_Template, 2, 2, "span", 37);
|
144
|
-
i0.ɵɵelementEnd()()();
|
145
|
-
} if (rf & 2) {
|
146
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
147
|
-
i0.ɵɵadvance(2);
|
148
|
-
i0.ɵɵproperty("value", ctx_r1._filterValue() || "")("disabled", ctx_r1.disabled)("tabindex", !ctx_r1.disabled && !ctx_r1.focused ? ctx_r1.tabindex : -1);
|
149
|
-
i0.ɵɵattribute("aria-owns", ctx_r1.id + "_list")("aria-activedescendant", ctx_r1.focusedOptionId)("placeholder", ctx_r1.filterPlaceHolder)("aria-label", ctx_r1.ariaFilterLabel);
|
150
|
-
i0.ɵɵadvance(3);
|
151
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.filterIconTemplate && !ctx_r1._filterIconTemplate);
|
152
|
-
i0.ɵɵadvance();
|
153
|
-
i0.ɵɵproperty("ngIf", ctx_r1.filterIconTemplate || ctx_r1._filterIconTemplate);
|
154
|
-
} }
|
155
|
-
function Listbox_div_4_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
156
|
-
i0.ɵɵtemplate(0, Listbox_div_4_ng_template_3_div_0_Template, 7, 9, "div", 32);
|
157
|
-
i0.ɵɵelementStart(1, "span", 33);
|
158
|
-
i0.ɵɵtext(2);
|
159
|
-
i0.ɵɵelementEnd();
|
160
|
-
} if (rf & 2) {
|
161
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
162
|
-
i0.ɵɵproperty("ngIf", ctx_r1.filter);
|
163
|
-
i0.ɵɵadvance();
|
164
|
-
i0.ɵɵattribute("data-p-hidden-accessible", true);
|
165
|
-
i0.ɵɵadvance();
|
166
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.filterResultMessageText, " ");
|
167
|
-
} }
|
168
|
-
function Listbox_div_4_Template(rf, ctx) { if (rf & 1) {
|
169
|
-
i0.ɵɵelementStart(0, "div", 23);
|
170
|
-
i0.ɵɵtemplate(1, Listbox_div_4_div_1_Template, 5, 8, "div", 25)(2, Listbox_div_4_ng_container_2_Template, 2, 4, "ng-container", 26)(3, Listbox_div_4_ng_template_3_Template, 3, 3, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
171
|
-
i0.ɵɵelementEnd();
|
172
|
-
} if (rf & 2) {
|
173
|
-
const builtInFilterElement_r5 = i0.ɵɵreference(4);
|
174
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
175
|
-
i0.ɵɵadvance();
|
176
|
-
i0.ɵɵproperty("ngIf", ctx_r1.checkbox && ctx_r1.multiple && ctx_r1.showToggleAll);
|
177
|
-
i0.ɵɵadvance();
|
178
|
-
i0.ɵɵproperty("ngIf", ctx_r1.filterTemplate || ctx_r1._filterTemplate)("ngIfElse", builtInFilterElement_r5);
|
179
|
-
} }
|
180
|
-
function Listbox_p_scroller_7_ng_template_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
181
|
-
i0.ɵɵelementContainer(0);
|
182
|
-
} }
|
183
|
-
function Listbox_p_scroller_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
184
|
-
i0.ɵɵtemplate(0, Listbox_p_scroller_7_ng_template_2_ng_container_0_Template, 1, 0, "ng-container", 24);
|
185
|
-
} if (rf & 2) {
|
186
|
-
const items_r7 = ctx.$implicit;
|
187
|
-
const scrollerOptions_r8 = ctx.options;
|
188
|
-
i0.ɵɵnextContext(2);
|
189
|
-
const buildInItems_r9 = i0.ɵɵreference(10);
|
190
|
-
i0.ɵɵproperty("ngTemplateOutlet", buildInItems_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, items_r7, scrollerOptions_r8));
|
191
|
-
} }
|
192
|
-
function Listbox_p_scroller_7_Conditional_4_ng_template_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
193
|
-
i0.ɵɵelementContainer(0);
|
194
|
-
} }
|
195
|
-
function Listbox_p_scroller_7_Conditional_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
196
|
-
i0.ɵɵtemplate(0, Listbox_p_scroller_7_Conditional_4_ng_template_0_ng_container_0_Template, 1, 0, "ng-container", 24);
|
197
|
-
} if (rf & 2) {
|
198
|
-
const scrollerOptions_r10 = ctx.options;
|
199
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
200
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.loaderTemplate || ctx_r1._loaderTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c22, scrollerOptions_r10));
|
201
|
-
} }
|
202
|
-
function Listbox_p_scroller_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
203
|
-
i0.ɵɵtemplate(0, Listbox_p_scroller_7_Conditional_4_ng_template_0_Template, 1, 4, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
|
204
|
-
} }
|
205
|
-
function Listbox_p_scroller_7_Template(rf, ctx) { if (rf & 1) {
|
206
|
-
const _r6 = i0.ɵɵgetCurrentView();
|
207
|
-
i0.ɵɵelementStart(0, "p-scroller", 41, 8);
|
208
|
-
i0.ɵɵlistener("onLazyLoad", function Listbox_p_scroller_7_Template_p_scroller_onLazyLoad_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLazyLoad.emit($event)); });
|
209
|
-
i0.ɵɵtemplate(2, Listbox_p_scroller_7_ng_template_2_Template, 1, 5, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor)(4, Listbox_p_scroller_7_Conditional_4_Template, 2, 0);
|
210
|
-
i0.ɵɵelementEnd();
|
211
|
-
} if (rf & 2) {
|
212
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
213
|
-
i0.ɵɵstyleMap(i0.ɵɵpureFunction1(9, _c23, ctx_r1.scrollHeight));
|
214
|
-
i0.ɵɵproperty("items", ctx_r1.visibleOptions())("itemSize", ctx_r1.virtualScrollItemSize)("autoSize", true)("lazy", ctx_r1.lazy)("options", ctx_r1.virtualScrollOptions)("tabindex", ctx_r1.scrollerTabIndex);
|
215
|
-
i0.ɵɵadvance(4);
|
216
|
-
i0.ɵɵconditional(ctx_r1.loaderTemplate || ctx_r1._loaderTemplate ? 4 : -1);
|
217
|
-
} }
|
218
|
-
function Listbox_ng_container_8_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
219
|
-
i0.ɵɵelementContainer(0);
|
220
|
-
} }
|
221
|
-
function Listbox_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
222
|
-
i0.ɵɵelementContainerStart(0);
|
223
|
-
i0.ɵɵtemplate(1, Listbox_ng_container_8_ng_container_1_Template, 1, 0, "ng-container", 24);
|
224
|
-
i0.ɵɵelementContainerEnd();
|
225
|
-
} if (rf & 2) {
|
226
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
227
|
-
const buildInItems_r9 = i0.ɵɵreference(10);
|
228
|
-
i0.ɵɵadvance();
|
229
|
-
i0.ɵɵproperty("ngTemplateOutlet", buildInItems_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c19, ctx_r1.visibleOptions(), i0.ɵɵpureFunction0(2, _c24)));
|
230
|
-
} }
|
231
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_0_span_2_Template(rf, ctx) { if (rf & 1) {
|
232
|
-
i0.ɵɵelementStart(0, "span");
|
233
|
-
i0.ɵɵtext(1);
|
234
|
-
i0.ɵɵelementEnd();
|
235
|
-
} if (rf & 2) {
|
236
|
-
const option_r12 = i0.ɵɵnextContext(2).$implicit;
|
237
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
238
|
-
i0.ɵɵadvance();
|
239
|
-
i0.ɵɵtextInterpolate(ctx_r1.getOptionGroupLabel(option_r12.optionGroup));
|
240
|
-
} }
|
241
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_0_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
242
|
-
i0.ɵɵelementContainer(0);
|
243
|
-
} }
|
244
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
245
|
-
i0.ɵɵelementContainerStart(0);
|
246
|
-
i0.ɵɵelementStart(1, "li", 45);
|
247
|
-
i0.ɵɵtemplate(2, Listbox_ng_template_9_ng_template_2_ng_container_0_span_2_Template, 2, 1, "span", 19)(3, Listbox_ng_template_9_ng_template_2_ng_container_0_ng_container_3_Template, 1, 0, "ng-container", 24);
|
248
|
-
i0.ɵɵelementEnd();
|
249
|
-
i0.ɵɵelementContainerEnd();
|
250
|
-
} if (rf & 2) {
|
251
|
-
const ctx_r12 = i0.ɵɵnextContext();
|
252
|
-
const option_r12 = ctx_r12.$implicit;
|
253
|
-
const i_r14 = ctx_r12.index;
|
254
|
-
const scrollerOptions_r15 = i0.ɵɵnextContext().options;
|
255
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
256
|
-
i0.ɵɵadvance();
|
257
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c23, scrollerOptions_r15.itemSize + "px"));
|
258
|
-
i0.ɵɵattribute("id", ctx_r1.id + "_" + ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15));
|
259
|
-
i0.ɵɵadvance();
|
260
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.groupTemplate && !ctx_r1._groupTemplate);
|
261
|
-
i0.ɵɵadvance();
|
262
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.groupTemplate || ctx_r1._groupTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(7, _c21, option_r12.optionGroup));
|
263
|
-
} }
|
264
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
265
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
266
|
-
i0.ɵɵtemplate(0, Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
267
|
-
} }
|
268
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
269
|
-
i0.ɵɵtemplate(0, Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_ng_template_1_0_Template, 1, 0, null, 24);
|
270
|
-
} if (rf & 2) {
|
271
|
-
const option_r12 = i0.ɵɵnextContext(4).$implicit;
|
272
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
273
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.checkIconTemplate || ctx_r1._checkIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c21, ctx_r1.isSelected(option_r12)));
|
274
|
-
} }
|
275
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
276
|
-
i0.ɵɵelementContainerStart(0);
|
277
|
-
i0.ɵɵtemplate(1, Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_ng_template_1_Template, 1, 4, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
|
278
|
-
i0.ɵɵelementContainerEnd();
|
279
|
-
} }
|
280
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_Template(rf, ctx) { if (rf & 1) {
|
281
|
-
i0.ɵɵelementStart(0, "p-checkbox", 31);
|
282
|
-
i0.ɵɵtemplate(1, Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_ng_container_1_Template, 3, 0, "ng-container", 19);
|
283
|
-
i0.ɵɵelementEnd();
|
284
|
-
} if (rf & 2) {
|
285
|
-
const option_r12 = i0.ɵɵnextContext(2).$implicit;
|
286
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
287
|
-
i0.ɵɵproperty("ngModel", ctx_r1.isSelected(option_r12))("disabled", ctx_r1.disabled || ctx_r1.isOptionDisabled(option_r12))("tabindex", -1)("variant", ctx_r1.config.inputStyle() === "filled" ? "filled" : "outlined" || ctx_r1.config.inputVariant() === "filled" ? "filled" : "outlined")("binary", true);
|
288
|
-
i0.ɵɵadvance();
|
289
|
-
i0.ɵɵproperty("ngIf", ctx_r1.checkIconTemplate || ctx_r1._checkIconTemplate);
|
290
|
-
} }
|
291
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_1_BlankIcon_1_Template(rf, ctx) { if (rf & 1) {
|
292
|
-
i0.ɵɵelement(0, "BlankIcon", 48);
|
293
|
-
} }
|
294
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_1_CheckIcon_2_Template(rf, ctx) { if (rf & 1) {
|
295
|
-
i0.ɵɵelement(0, "CheckIcon", 48);
|
296
|
-
} }
|
297
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
298
|
-
i0.ɵɵelementContainerStart(0);
|
299
|
-
i0.ɵɵtemplate(1, Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_1_BlankIcon_1_Template, 1, 0, "BlankIcon", 47)(2, Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_1_CheckIcon_2_Template, 1, 0, "CheckIcon", 47);
|
300
|
-
i0.ɵɵelementContainerEnd();
|
301
|
-
} if (rf & 2) {
|
302
|
-
const option_r12 = i0.ɵɵnextContext(3).$implicit;
|
303
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
304
|
-
i0.ɵɵadvance();
|
305
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.isSelected(option_r12));
|
306
|
-
i0.ɵɵadvance();
|
307
|
-
i0.ɵɵproperty("ngIf", ctx_r1.isSelected(option_r12));
|
308
|
-
} }
|
309
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
310
|
-
i0.ɵɵelementContainer(0);
|
311
|
-
} }
|
312
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
313
|
-
i0.ɵɵelementContainerStart(0);
|
314
|
-
i0.ɵɵtemplate(1, Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_1_Template, 3, 2, "ng-container", 19)(2, Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_ng_container_2_Template, 1, 0, "ng-container", 24);
|
315
|
-
i0.ɵɵelementContainerEnd();
|
316
|
-
} if (rf & 2) {
|
317
|
-
const option_r12 = i0.ɵɵnextContext(2).$implicit;
|
318
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
319
|
-
i0.ɵɵadvance();
|
320
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.checkmarkTemplate && !ctx_r1._checkmarkTemplate);
|
321
|
-
i0.ɵɵadvance();
|
322
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.checkmarkTemplate || ctx_r1._checkmarkTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c27, ctx_r1.isSelected(option_r12)));
|
323
|
-
} }
|
324
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
|
325
|
-
i0.ɵɵelementStart(0, "span");
|
326
|
-
i0.ɵɵtext(1);
|
327
|
-
i0.ɵɵelementEnd();
|
328
|
-
} if (rf & 2) {
|
329
|
-
const option_r12 = i0.ɵɵnextContext(2).$implicit;
|
330
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
331
|
-
i0.ɵɵadvance();
|
332
|
-
i0.ɵɵtextInterpolate(ctx_r1.getOptionLabel(option_r12));
|
333
|
-
} }
|
334
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
335
|
-
i0.ɵɵelementContainer(0);
|
336
|
-
} }
|
337
|
-
function Listbox_ng_template_9_ng_template_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
338
|
-
const _r16 = i0.ɵɵgetCurrentView();
|
339
|
-
i0.ɵɵelementContainerStart(0);
|
340
|
-
i0.ɵɵelementStart(1, "li", 46);
|
341
|
-
i0.ɵɵlistener("click", function Listbox_ng_template_9_ng_template_2_ng_container_1_Template_li_click_1_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r12 = i0.ɵɵnextContext(); const option_r12 = ctx_r12.$implicit; const i_r14 = ctx_r12.index; const scrollerOptions_r15 = i0.ɵɵnextContext().options; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOptionSelect($event, option_r12, ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15))); })("dblclick", function Listbox_ng_template_9_ng_template_2_ng_container_1_Template_li_dblclick_1_listener($event) { i0.ɵɵrestoreView(_r16); const option_r12 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onOptionDoubleClick($event, option_r12)); })("mousedown", function Listbox_ng_template_9_ng_template_2_ng_container_1_Template_li_mousedown_1_listener($event) { i0.ɵɵrestoreView(_r16); const i_r14 = i0.ɵɵnextContext().index; const scrollerOptions_r15 = i0.ɵɵnextContext().options; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOptionMouseDown($event, ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15))); })("mouseenter", function Listbox_ng_template_9_ng_template_2_ng_container_1_Template_li_mouseenter_1_listener($event) { i0.ɵɵrestoreView(_r16); const i_r14 = i0.ɵɵnextContext().index; const scrollerOptions_r15 = i0.ɵɵnextContext().options; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOptionMouseEnter($event, ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15))); })("touchend", function Listbox_ng_template_9_ng_template_2_ng_container_1_Template_li_touchend_1_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onOptionTouchEnd()); });
|
342
|
-
i0.ɵɵtemplate(2, Listbox_ng_template_9_ng_template_2_ng_container_1_p_checkbox_2_Template, 2, 6, "p-checkbox", 30)(3, Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_3_Template, 3, 5, "ng-container", 19)(4, Listbox_ng_template_9_ng_template_2_ng_container_1_span_4_Template, 2, 1, "span", 19)(5, Listbox_ng_template_9_ng_template_2_ng_container_1_ng_container_5_Template, 1, 0, "ng-container", 24);
|
343
|
-
i0.ɵɵelementEnd();
|
344
|
-
i0.ɵɵelementContainerEnd();
|
345
|
-
} if (rf & 2) {
|
346
|
-
const ctx_r12 = i0.ɵɵnextContext();
|
347
|
-
const option_r12 = ctx_r12.$implicit;
|
348
|
-
const i_r14 = ctx_r12.index;
|
349
|
-
const scrollerOptions_r15 = i0.ɵɵnextContext().options;
|
350
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
351
|
-
i0.ɵɵadvance();
|
352
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(13, _c23, scrollerOptions_r15.itemSize + "px"))("ngClass", i0.ɵɵpureFunction3(15, _c25, ctx_r1.isSelected(option_r12) && ctx_r1.highlightOnSelect, ctx_r1.focusedOptionIndex() === ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15), ctx_r1.isOptionDisabled(option_r12)));
|
353
|
-
i0.ɵɵattribute("id", ctx_r1.id + "_" + ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15))("aria-label", ctx_r1.getOptionLabel(option_r12))("aria-selected", ctx_r1.isSelected(option_r12))("aria-disabled", ctx_r1.isOptionDisabled(option_r12))("aria-setsize", ctx_r1.ariaSetSize)("ariaPosInset", ctx_r1.getAriaPosInset(ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15)));
|
354
|
-
i0.ɵɵadvance();
|
355
|
-
i0.ɵɵproperty("ngIf", ctx_r1.checkbox && ctx_r1.multiple);
|
356
|
-
i0.ɵɵadvance();
|
357
|
-
i0.ɵɵproperty("ngIf", ctx_r1.checkmark);
|
358
|
-
i0.ɵɵadvance();
|
359
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.itemTemplate && !ctx_r1._itemTemplate);
|
360
|
-
i0.ɵɵadvance();
|
361
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.itemTemplate || ctx_r1._itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(19, _c26, option_r12, ctx_r1.getOptionIndex(i_r14, scrollerOptions_r15), ctx_r1.isSelected(option_r12)));
|
362
|
-
} }
|
363
|
-
function Listbox_ng_template_9_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
364
|
-
i0.ɵɵtemplate(0, Listbox_ng_template_9_ng_template_2_ng_container_0_Template, 4, 9, "ng-container", 19)(1, Listbox_ng_template_9_ng_template_2_ng_container_1_Template, 6, 23, "ng-container", 19);
|
365
|
-
} if (rf & 2) {
|
366
|
-
const option_r12 = ctx.$implicit;
|
367
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
368
|
-
i0.ɵɵproperty("ngIf", ctx_r1.isOptionGroup(option_r12));
|
369
|
-
i0.ɵɵadvance();
|
370
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.isOptionGroup(option_r12));
|
371
|
-
} }
|
372
|
-
function Listbox_ng_template_9_li_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
373
|
-
i0.ɵɵtext(0);
|
374
|
-
} if (rf & 2) {
|
375
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
376
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.emptyFilterMessageText, " ");
|
377
|
-
} }
|
378
|
-
function Listbox_ng_template_9_li_3_Conditional_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
379
|
-
i0.ɵɵelementContainer(0, null, 12);
|
380
|
-
} }
|
381
|
-
function Listbox_ng_template_9_li_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
382
|
-
i0.ɵɵtemplate(0, Listbox_ng_template_9_li_3_Conditional_2_ng_container_0_Template, 2, 0, "ng-container", 40);
|
383
|
-
} if (rf & 2) {
|
384
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
385
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.emptyFilterTemplate || ctx_r1._emptyFilterTemplate || ctx_r1._emptyTemplate || ctx_r1.emptyTemplate);
|
386
|
-
} }
|
387
|
-
function Listbox_ng_template_9_li_3_Template(rf, ctx) { if (rf & 1) {
|
388
|
-
i0.ɵɵelementStart(0, "li", 49);
|
389
|
-
i0.ɵɵtemplate(1, Listbox_ng_template_9_li_3_Conditional_1_Template, 1, 1)(2, Listbox_ng_template_9_li_3_Conditional_2_Template, 1, 1, "ng-container");
|
390
|
-
i0.ɵɵelementEnd();
|
391
|
-
} if (rf & 2) {
|
392
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
393
|
-
i0.ɵɵadvance();
|
394
|
-
i0.ɵɵconditional(!ctx_r1.emptyFilterTemplate && !ctx_r1._emptyFilterTemplate && !ctx_r1._emptyTemplate && !ctx_r1.emptyTemplate ? 1 : 2);
|
395
|
-
} }
|
396
|
-
function Listbox_ng_template_9_li_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
397
|
-
i0.ɵɵtext(0);
|
398
|
-
} if (rf & 2) {
|
399
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
400
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.emptyMessage, " ");
|
401
|
-
} }
|
402
|
-
function Listbox_ng_template_9_li_4_Conditional_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
403
|
-
i0.ɵɵelementContainer(0, null, 13);
|
404
|
-
} }
|
405
|
-
function Listbox_ng_template_9_li_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
406
|
-
i0.ɵɵtemplate(0, Listbox_ng_template_9_li_4_Conditional_2_ng_container_0_Template, 2, 0, "ng-container", 40);
|
407
|
-
} if (rf & 2) {
|
408
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
409
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.emptyTemplate || ctx_r1._emptyTemplate);
|
410
|
-
} }
|
411
|
-
function Listbox_ng_template_9_li_4_Template(rf, ctx) { if (rf & 1) {
|
412
|
-
i0.ɵɵelementStart(0, "li", 49);
|
413
|
-
i0.ɵɵtemplate(1, Listbox_ng_template_9_li_4_Conditional_1_Template, 1, 1)(2, Listbox_ng_template_9_li_4_Conditional_2_Template, 1, 1, "ng-container");
|
414
|
-
i0.ɵɵelementEnd();
|
415
|
-
} if (rf & 2) {
|
416
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
417
|
-
i0.ɵɵadvance();
|
418
|
-
i0.ɵɵconditional(!ctx_r1.emptyTemplate && !ctx_r1._emptyTemplate ? 1 : 2);
|
419
|
-
} }
|
420
|
-
function Listbox_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
421
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
422
|
-
i0.ɵɵelementStart(0, "ul", 42, 11);
|
423
|
-
i0.ɵɵlistener("focus", function Listbox_ng_template_9_Template_ul_focus_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onListFocus($event)); })("blur", function Listbox_ng_template_9_Template_ul_blur_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onListBlur($event)); })("keydown", function Listbox_ng_template_9_Template_ul_keydown_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onListKeyDown($event)); });
|
424
|
-
i0.ɵɵtemplate(2, Listbox_ng_template_9_ng_template_2_Template, 2, 2, "ng-template", 43)(3, Listbox_ng_template_9_li_3_Template, 3, 1, "li", 44)(4, Listbox_ng_template_9_li_4_Template, 3, 1, "li", 44);
|
425
|
-
i0.ɵɵelementEnd();
|
426
|
-
} if (rf & 2) {
|
427
|
-
const items_r17 = ctx.$implicit;
|
428
|
-
const scrollerOptions_r15 = ctx.options;
|
429
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
430
|
-
i0.ɵɵstyleMap(scrollerOptions_r15.contentStyle);
|
431
|
-
i0.ɵɵproperty("tabindex", -1)("ngClass", scrollerOptions_r15.contentStyleClass);
|
432
|
-
i0.ɵɵattribute("aria-multiselectable", true)("aria-activedescendant", ctx_r1.focused ? ctx_r1.focusedOptionId : undefined)("aria-label", ctx_r1.ariaLabel)("aria-disabled", ctx_r1.disabled);
|
433
|
-
i0.ɵɵadvance(2);
|
434
|
-
i0.ɵɵproperty("ngForOf", items_r17);
|
435
|
-
i0.ɵɵadvance();
|
436
|
-
i0.ɵɵproperty("ngIf", ctx_r1.hasFilter() && ctx_r1.isEmpty());
|
437
|
-
i0.ɵɵadvance();
|
438
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.hasFilter() && ctx_r1.isEmpty());
|
439
|
-
} }
|
440
|
-
function Listbox_div_11_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
441
|
-
i0.ɵɵelementContainer(0);
|
442
|
-
} }
|
443
|
-
function Listbox_div_11_Template(rf, ctx) { if (rf & 1) {
|
444
|
-
i0.ɵɵelementStart(0, "div", 50);
|
445
|
-
i0.ɵɵprojection(1, 1);
|
446
|
-
i0.ɵɵtemplate(2, Listbox_div_11_ng_container_2_Template, 1, 0, "ng-container", 24);
|
447
|
-
i0.ɵɵelementEnd();
|
448
|
-
} if (rf & 2) {
|
449
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
450
|
-
i0.ɵɵadvance(2);
|
451
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.footerTemplate || ctx_r1._footerTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, ctx_r1.modelValue(), ctx_r1.visibleOptions()));
|
452
|
-
} }
|
453
|
-
function Listbox_span_12_Template(rf, ctx) { if (rf & 1) {
|
454
|
-
i0.ɵɵelementStart(0, "span", 22);
|
455
|
-
i0.ɵɵtext(1);
|
456
|
-
i0.ɵɵelementEnd();
|
457
|
-
} if (rf & 2) {
|
458
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
459
|
-
i0.ɵɵadvance();
|
460
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.emptyMessage, " ");
|
461
|
-
} }
|
462
|
-
export const LISTBOX_VALUE_ACCESSOR = {
|
463
|
-
provide: NG_VALUE_ACCESSOR,
|
464
|
-
useExisting: forwardRef(() => Listbox),
|
465
|
-
multi: true
|
466
|
-
};
|
467
|
-
/**
|
468
|
-
* ListBox is used to select one or more values from a list of items.
|
469
|
-
* @group Components
|
470
|
-
*/
|
471
|
-
export class Listbox extends BaseComponent {
|
472
|
-
filterService;
|
473
|
-
/**
|
474
|
-
* Unique identifier of the component.
|
475
|
-
* @group Props
|
476
|
-
*/
|
477
|
-
id;
|
478
|
-
/**
|
479
|
-
* Text to display when the search is active. Defaults to global value in i18n translation configuration.
|
480
|
-
* @group Props
|
481
|
-
* @defaultValue '{0} results are available'
|
482
|
-
*/
|
483
|
-
searchMessage;
|
484
|
-
/**
|
485
|
-
* Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.
|
486
|
-
* @group Props
|
487
|
-
* @defaultValue 'No selected item'
|
488
|
-
*/
|
489
|
-
emptySelectionMessage;
|
490
|
-
/**
|
491
|
-
* Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.
|
492
|
-
* @group Props
|
493
|
-
* @defaultValue '{0} items selected'
|
494
|
-
*/
|
495
|
-
selectionMessage;
|
496
|
-
/**
|
497
|
-
* Whether to focus on the first visible or selected element when the overlay panel is shown.
|
498
|
-
* @group Props
|
499
|
-
*/
|
500
|
-
autoOptionFocus = true;
|
501
|
-
/**
|
502
|
-
* Defines a string that labels the input for accessibility.
|
503
|
-
* @group Props
|
504
|
-
*/
|
505
|
-
ariaLabel;
|
506
|
-
/**
|
507
|
-
* When enabled, the focused option is selected.
|
508
|
-
* @group Props
|
509
|
-
*/
|
510
|
-
selectOnFocus;
|
511
|
-
/**
|
512
|
-
* Locale to use in searching. The default locale is the host environment's current locale.
|
513
|
-
* @group Props
|
514
|
-
*/
|
515
|
-
searchLocale;
|
516
|
-
/**
|
517
|
-
* When enabled, the hovered option will be focused.
|
518
|
-
* @group Props
|
519
|
-
*/
|
520
|
-
focusOnHover = true;
|
521
|
-
/**
|
522
|
-
* Text to display when filtering.
|
523
|
-
* @group Props
|
524
|
-
*/
|
525
|
-
filterMessage;
|
526
|
-
/**
|
527
|
-
* Fields used when filtering the options, defaults to optionLabel.
|
528
|
-
* @group Props
|
529
|
-
*/
|
530
|
-
filterFields;
|
531
|
-
/**
|
532
|
-
* Defines if data is loaded and interacted with in lazy manner.
|
533
|
-
* @group Props
|
534
|
-
*/
|
535
|
-
lazy = false;
|
536
|
-
/**
|
537
|
-
* Whether the data should be loaded on demand during scroll.
|
538
|
-
* @group Props
|
539
|
-
*/
|
540
|
-
virtualScroll;
|
541
|
-
/**
|
542
|
-
* Height of an item in the list for VirtualScrolling.
|
543
|
-
* @group Props
|
544
|
-
*/
|
545
|
-
virtualScrollItemSize;
|
546
|
-
/**
|
547
|
-
* Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
|
548
|
-
* @group Props
|
549
|
-
*/
|
550
|
-
virtualScrollOptions;
|
551
|
-
/**
|
552
|
-
* Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
|
553
|
-
* @group Props
|
554
|
-
*/
|
555
|
-
scrollHeight = '14rem';
|
556
|
-
/**
|
557
|
-
* Index of the element in tabbing order.
|
558
|
-
* @group Props
|
559
|
-
*/
|
560
|
-
tabindex = 0;
|
561
|
-
/**
|
562
|
-
* When specified, allows selecting multiple values.
|
563
|
-
* @group Props
|
564
|
-
*/
|
565
|
-
multiple;
|
566
|
-
/**
|
567
|
-
* Inline style of the container.
|
568
|
-
* @group Props
|
569
|
-
*/
|
570
|
-
style;
|
571
|
-
/**
|
572
|
-
* Style class of the container.
|
573
|
-
* @group Props
|
574
|
-
*/
|
575
|
-
styleClass;
|
576
|
-
/**
|
577
|
-
* Inline style of the list element.
|
578
|
-
* @group Props
|
579
|
-
*/
|
580
|
-
listStyle;
|
581
|
-
/**
|
582
|
-
* Style class of the list element.
|
583
|
-
* @group Props
|
584
|
-
*/
|
585
|
-
listStyleClass;
|
586
|
-
/**
|
587
|
-
* When present, it specifies that the element value cannot be changed.
|
588
|
-
* @group Props
|
589
|
-
*/
|
590
|
-
readonly;
|
591
|
-
/**
|
592
|
-
* When present, it specifies that the element should be disabled.
|
593
|
-
* @group Props
|
594
|
-
*/
|
595
|
-
disabled;
|
596
|
-
/**
|
597
|
-
* When specified, allows selecting items with checkboxes.
|
598
|
-
* @group Props
|
599
|
-
*/
|
600
|
-
checkbox = false;
|
601
|
-
/**
|
602
|
-
* When specified, displays a filter input at header.
|
603
|
-
* @group Props
|
604
|
-
*/
|
605
|
-
filter = false;
|
606
|
-
/**
|
607
|
-
* When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.
|
608
|
-
* @group Props
|
609
|
-
*/
|
610
|
-
filterBy;
|
611
|
-
/**
|
612
|
-
* Defines how the items are filtered.
|
613
|
-
* @group Props
|
614
|
-
*/
|
615
|
-
filterMatchMode = 'contains';
|
616
|
-
/**
|
617
|
-
* Locale to use in filtering. The default locale is the host environment's current locale.
|
618
|
-
* @group Props
|
619
|
-
*/
|
620
|
-
filterLocale;
|
621
|
-
/**
|
622
|
-
* Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
|
623
|
-
* @group Props
|
624
|
-
*/
|
625
|
-
metaKeySelection = false;
|
626
|
-
/**
|
627
|
-
* A property to uniquely identify a value in options.
|
628
|
-
* @group Props
|
629
|
-
*/
|
630
|
-
dataKey;
|
631
|
-
/**
|
632
|
-
* Whether header checkbox is shown in multiple mode.
|
633
|
-
* @group Props
|
634
|
-
*/
|
635
|
-
showToggleAll = true;
|
636
|
-
/**
|
637
|
-
* Name of the label field of an option.
|
638
|
-
* @group Props
|
639
|
-
*/
|
640
|
-
optionLabel;
|
641
|
-
/**
|
642
|
-
* Name of the value field of an option.
|
643
|
-
* @group Props
|
644
|
-
*/
|
645
|
-
optionValue;
|
646
|
-
/**
|
647
|
-
* Name of the options field of an option group.
|
648
|
-
* @group Props
|
649
|
-
*/
|
650
|
-
optionGroupChildren = 'items';
|
651
|
-
/**
|
652
|
-
* Name of the label field of an option group.
|
653
|
-
* @group Props
|
654
|
-
*/
|
655
|
-
optionGroupLabel = 'label';
|
656
|
-
/**
|
657
|
-
* Name of the disabled field of an option.
|
658
|
-
* @group Props
|
659
|
-
*/
|
660
|
-
optionDisabled;
|
661
|
-
/**
|
662
|
-
* Defines a string that labels the filter input.
|
663
|
-
* @group Props
|
664
|
-
*/
|
665
|
-
ariaFilterLabel;
|
666
|
-
/**
|
667
|
-
* Defines placeholder of the filter input.
|
668
|
-
* @group Props
|
669
|
-
*/
|
670
|
-
filterPlaceHolder;
|
671
|
-
/**
|
672
|
-
* Text to display when filtering does not return any results.
|
673
|
-
* @group Props
|
674
|
-
*/
|
675
|
-
emptyFilterMessage;
|
676
|
-
/**
|
677
|
-
* Text to display when there is no data. Defaults to global value in i18n translation configuration.
|
678
|
-
* @group Props
|
679
|
-
*/
|
680
|
-
emptyMessage;
|
681
|
-
/**
|
682
|
-
* Whether to display options as grouped when nested options are provided.
|
683
|
-
* @group Props
|
684
|
-
*/
|
685
|
-
group;
|
686
|
-
/**
|
687
|
-
* An array of selectitems to display as the available options.
|
688
|
-
* @group Props
|
689
|
-
*/
|
690
|
-
get options() {
|
691
|
-
return this._options();
|
692
|
-
}
|
693
|
-
set options(val) {
|
694
|
-
this._options.set(val);
|
695
|
-
}
|
696
|
-
/**
|
697
|
-
* When specified, filter displays with this value.
|
698
|
-
* @group Props
|
699
|
-
*/
|
700
|
-
get filterValue() {
|
701
|
-
return this._filterValue();
|
702
|
-
}
|
703
|
-
set filterValue(val) {
|
704
|
-
this._filterValue.set(val);
|
705
|
-
}
|
706
|
-
/**
|
707
|
-
* Whether all data is selected.
|
708
|
-
* @group Props
|
709
|
-
*/
|
710
|
-
get selectAll() {
|
711
|
-
return this._selectAll;
|
712
|
-
}
|
713
|
-
set selectAll(value) {
|
714
|
-
this._selectAll = value;
|
715
|
-
}
|
716
|
-
/**
|
717
|
-
* Whether to displays rows with alternating colors.
|
718
|
-
* @group Props
|
719
|
-
* @defaultValue false
|
720
|
-
*/
|
721
|
-
striped = false;
|
722
|
-
/**
|
723
|
-
* Whether the selected option will be add highlight class.
|
724
|
-
* @group Props
|
725
|
-
* @defaultValue true
|
726
|
-
*/
|
727
|
-
highlightOnSelect = true;
|
728
|
-
/**
|
729
|
-
* Whether the selected option will be shown with a check mark.
|
730
|
-
* @group Props
|
731
|
-
* @defaultValue false
|
732
|
-
*/
|
733
|
-
checkmark = false;
|
734
|
-
/**
|
735
|
-
* Callback to invoke on value change.
|
736
|
-
* @param {ListboxChangeEvent} event - Custom change event.
|
737
|
-
* @group Emits
|
738
|
-
*/
|
739
|
-
onChange = new EventEmitter();
|
740
|
-
/**
|
741
|
-
* Callback to invoke when option is clicked.
|
742
|
-
* @param {ListboxClickEvent} event - Custom click event.
|
743
|
-
* @group Emits
|
744
|
-
*/
|
745
|
-
onClick = new EventEmitter();
|
746
|
-
/**
|
747
|
-
* Callback to invoke when option is double clicked.
|
748
|
-
* @param {ListboxDoubleClickEvent} event - Custom double click event.
|
749
|
-
* @group Emits
|
750
|
-
*/
|
751
|
-
onDblClick = new EventEmitter();
|
752
|
-
/**
|
753
|
-
* Callback to invoke when data is filtered.
|
754
|
-
* @param {ListboxFilterEvent} event - Custom filter event.
|
755
|
-
* @group Emits
|
756
|
-
*/
|
757
|
-
onFilter = new EventEmitter();
|
758
|
-
/**
|
759
|
-
* Callback to invoke when component receives focus.
|
760
|
-
* @param {FocusEvent} event - Focus event.
|
761
|
-
* @group Emits
|
762
|
-
*/
|
763
|
-
onFocus = new EventEmitter();
|
764
|
-
/**
|
765
|
-
* Callback to invoke when component loses focus.
|
766
|
-
* @param {FocusEvent} event - Blur event.
|
767
|
-
* @group Emits
|
768
|
-
*/
|
769
|
-
onBlur = new EventEmitter();
|
770
|
-
/**
|
771
|
-
* Callback to invoke when all data is selected.
|
772
|
-
* @param {ListboxSelectAllChangeEvent} event - Custom select event.
|
773
|
-
* @group Emits
|
774
|
-
*/
|
775
|
-
onSelectAllChange = new EventEmitter();
|
776
|
-
/**
|
777
|
-
* Emits on lazy load.
|
778
|
-
* @param {ScrollerLazyLoadEvent} event - Scroller lazy load event.
|
779
|
-
* @group Emits
|
780
|
-
*/
|
781
|
-
onLazyLoad = new EventEmitter();
|
782
|
-
headerCheckboxViewChild;
|
783
|
-
filterViewChild;
|
784
|
-
lastHiddenFocusableElement;
|
785
|
-
firstHiddenFocusableElement;
|
786
|
-
scroller;
|
787
|
-
listViewChild;
|
788
|
-
containerViewChild;
|
789
|
-
headerFacet;
|
790
|
-
footerFacet;
|
791
|
-
/**
|
792
|
-
* Custom item template.
|
793
|
-
* @group Templates
|
794
|
-
*/
|
795
|
-
itemTemplate;
|
796
|
-
/**
|
797
|
-
* Custom group template.
|
798
|
-
* @group Templates
|
799
|
-
*/
|
800
|
-
groupTemplate;
|
801
|
-
/**
|
802
|
-
* Custom header template.
|
803
|
-
* @group Templates
|
804
|
-
*/
|
805
|
-
headerTemplate;
|
806
|
-
/**
|
807
|
-
* Custom filter template.
|
808
|
-
* @group Templates
|
809
|
-
*/
|
810
|
-
filterTemplate;
|
811
|
-
/**
|
812
|
-
* Custom footer template.
|
813
|
-
* @group Templates
|
814
|
-
*/
|
815
|
-
footerTemplate;
|
816
|
-
/**
|
817
|
-
* Custom empty filter message template.
|
818
|
-
* @group Templates
|
819
|
-
*/
|
820
|
-
emptyFilterTemplate;
|
821
|
-
/**
|
822
|
-
* Custom empty message template.
|
823
|
-
* @group Templates
|
824
|
-
*/
|
825
|
-
emptyTemplate;
|
826
|
-
/**
|
827
|
-
* Custom filter icon template.
|
828
|
-
* @group Templates
|
829
|
-
*/
|
830
|
-
filterIconTemplate;
|
831
|
-
/**
|
832
|
-
* Custom check icon template.
|
833
|
-
* @group Templates
|
834
|
-
*/
|
835
|
-
checkIconTemplate;
|
836
|
-
/**
|
837
|
-
* Custom checkmark icon template.
|
838
|
-
* @group Templates
|
839
|
-
*/
|
840
|
-
checkmarkTemplate;
|
841
|
-
/**
|
842
|
-
* Custom loader template.
|
843
|
-
* @group Templates
|
844
|
-
*/
|
845
|
-
loaderTemplate;
|
846
|
-
templates;
|
847
|
-
_itemTemplate;
|
848
|
-
_groupTemplate;
|
849
|
-
_headerTemplate;
|
850
|
-
_filterTemplate;
|
851
|
-
_footerTemplate;
|
852
|
-
_emptyFilterTemplate;
|
853
|
-
_emptyTemplate;
|
854
|
-
_filterIconTemplate;
|
855
|
-
_checkIconTemplate;
|
856
|
-
_checkmarkTemplate;
|
857
|
-
_loaderTemplate;
|
858
|
-
_filterValue = signal(null);
|
859
|
-
_filteredOptions;
|
860
|
-
filterOptions;
|
861
|
-
filtered;
|
862
|
-
value;
|
863
|
-
onModelChange = () => { };
|
864
|
-
onModelTouched = () => { };
|
865
|
-
optionTouched;
|
866
|
-
focus;
|
867
|
-
headerCheckboxFocus;
|
868
|
-
translationSubscription;
|
869
|
-
focused;
|
870
|
-
scrollerTabIndex = '0';
|
871
|
-
_componentStyle = inject(ListBoxStyle);
|
872
|
-
get containerClass() {
|
873
|
-
return {
|
874
|
-
'p-listbox p-component': true,
|
875
|
-
'p-listbox-striped': this.striped,
|
876
|
-
'p-disabled': this.disabled
|
877
|
-
};
|
878
|
-
}
|
879
|
-
get focusedOptionId() {
|
880
|
-
return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;
|
881
|
-
}
|
882
|
-
get filterResultMessageText() {
|
883
|
-
return isNotEmpty(this.visibleOptions()) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptyFilterMessageText;
|
884
|
-
}
|
885
|
-
get filterMessageText() {
|
886
|
-
return this.filterMessage || this.config.translation.searchMessage || '';
|
887
|
-
}
|
888
|
-
get searchMessageText() {
|
889
|
-
return this.searchMessage || this.config.translation.searchMessage || '';
|
890
|
-
}
|
891
|
-
get emptyFilterMessageText() {
|
892
|
-
return this.emptyFilterMessage || this.config.translation.emptySearchMessage || this.config.translation.emptyFilterMessage || '';
|
893
|
-
}
|
894
|
-
get selectionMessageText() {
|
895
|
-
return this.selectionMessage || this.config.translation.selectionMessage || '';
|
896
|
-
}
|
897
|
-
get emptySelectionMessageText() {
|
898
|
-
return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';
|
899
|
-
}
|
900
|
-
get selectedMessageText() {
|
901
|
-
return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;
|
902
|
-
}
|
903
|
-
get ariaSetSize() {
|
904
|
-
return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;
|
905
|
-
}
|
906
|
-
get virtualScrollerDisabled() {
|
907
|
-
return !this.virtualScroll;
|
908
|
-
}
|
909
|
-
get searchFields() {
|
910
|
-
return this.filterFields || [this.optionLabel];
|
911
|
-
}
|
912
|
-
get toggleAllAriaLabel() {
|
913
|
-
return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;
|
914
|
-
}
|
915
|
-
searchValue;
|
916
|
-
searchTimeout;
|
917
|
-
_selectAll = null;
|
918
|
-
_options = signal(null);
|
919
|
-
startRangeIndex = signal(-1);
|
920
|
-
focusedOptionIndex = signal(-1);
|
921
|
-
modelValue = signal(null);
|
922
|
-
visibleOptions = computed(() => {
|
923
|
-
const options = this.group ? this.flatOptions(this._options()) : this._options() || [];
|
924
|
-
return this._filterValue() ? this.filterService.filter(options, this.searchFields, this._filterValue(), this.filterMatchMode, this.filterLocale) : options;
|
925
|
-
});
|
926
|
-
constructor(filterService) {
|
927
|
-
super();
|
928
|
-
this.filterService = filterService;
|
929
|
-
}
|
930
|
-
ngOnInit() {
|
931
|
-
super.ngOnInit();
|
932
|
-
this.id = this.id || uuid('pn_id_');
|
933
|
-
this.translationSubscription = this.config.translationObserver.subscribe(() => {
|
934
|
-
this.cd.markForCheck();
|
935
|
-
});
|
936
|
-
this.autoUpdateModel();
|
937
|
-
if (this.filterBy) {
|
938
|
-
this.filterOptions = {
|
939
|
-
filter: (value) => this.onFilterChange(value),
|
940
|
-
reset: () => this.resetFilter()
|
941
|
-
};
|
942
|
-
}
|
943
|
-
}
|
944
|
-
ngAfterContentInit() {
|
945
|
-
this.templates.forEach((item) => {
|
946
|
-
switch (item.getType()) {
|
947
|
-
case 'item':
|
948
|
-
this._itemTemplate = item.template;
|
949
|
-
break;
|
950
|
-
case 'group':
|
951
|
-
this._groupTemplate = item.template;
|
952
|
-
break;
|
953
|
-
case 'header':
|
954
|
-
this._headerTemplate = item.template;
|
955
|
-
break;
|
956
|
-
case 'filter':
|
957
|
-
this._filterTemplate = item.template;
|
958
|
-
break;
|
959
|
-
case 'footer':
|
960
|
-
this._footerTemplate = item.template;
|
961
|
-
break;
|
962
|
-
case 'empty':
|
963
|
-
this._emptyTemplate = item.template;
|
964
|
-
break;
|
965
|
-
case 'emptyfilter':
|
966
|
-
this._emptyFilterTemplate = item.template;
|
967
|
-
break;
|
968
|
-
case 'filtericon':
|
969
|
-
this._filterIconTemplate = item.template;
|
970
|
-
break;
|
971
|
-
case 'checkicon':
|
972
|
-
this._checkIconTemplate = item.template;
|
973
|
-
break;
|
974
|
-
case 'checkmark':
|
975
|
-
this._checkmarkTemplate = item.template;
|
976
|
-
break;
|
977
|
-
case 'loader':
|
978
|
-
this._loaderTemplate = item.template;
|
979
|
-
break;
|
980
|
-
default:
|
981
|
-
this._itemTemplate = item.template;
|
982
|
-
break;
|
983
|
-
}
|
984
|
-
});
|
985
|
-
}
|
986
|
-
writeValue(value) {
|
987
|
-
this.value = value;
|
988
|
-
this.modelValue.set(this.value);
|
989
|
-
this.cd.markForCheck();
|
990
|
-
}
|
991
|
-
registerOnChange(fn) {
|
992
|
-
this.onModelChange = fn;
|
993
|
-
}
|
994
|
-
registerOnTouched(fn) {
|
995
|
-
this.onModelTouched = fn;
|
996
|
-
}
|
997
|
-
setDisabledState(val) {
|
998
|
-
this.disabled = val;
|
999
|
-
this.cd.markForCheck();
|
1000
|
-
}
|
1001
|
-
flatOptions(options) {
|
1002
|
-
return (options || []).reduce((result, option, index) => {
|
1003
|
-
result.push({ optionGroup: option, group: true, index });
|
1004
|
-
const optionGroupChildren = this.getOptionGroupChildren(option);
|
1005
|
-
optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));
|
1006
|
-
return result;
|
1007
|
-
}, []);
|
1008
|
-
}
|
1009
|
-
autoUpdateModel() {
|
1010
|
-
if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption() && !this.multiple) {
|
1011
|
-
const focusedOptionIndex = this.findFirstFocusedOptionIndex();
|
1012
|
-
this.focusedOptionIndex.set(focusedOptionIndex);
|
1013
|
-
this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()]);
|
1014
|
-
}
|
1015
|
-
}
|
1016
|
-
/**
|
1017
|
-
* Updates the model value.
|
1018
|
-
* @group Method
|
1019
|
-
*/
|
1020
|
-
updateModel(value, event) {
|
1021
|
-
this.value = value;
|
1022
|
-
this.modelValue.set(value);
|
1023
|
-
this.onModelChange(value);
|
1024
|
-
this.onChange.emit({ originalEvent: event, value: this.value });
|
1025
|
-
}
|
1026
|
-
removeOption(option) {
|
1027
|
-
return this.modelValue().filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey()));
|
1028
|
-
}
|
1029
|
-
onOptionSelect(event, option, index = -1) {
|
1030
|
-
if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
|
1031
|
-
return;
|
1032
|
-
}
|
1033
|
-
event && this.onClick.emit({ originalEvent: event, option, value: this.value });
|
1034
|
-
this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);
|
1035
|
-
this.optionTouched = false;
|
1036
|
-
index !== -1 && this.focusedOptionIndex.set(index);
|
1037
|
-
}
|
1038
|
-
onOptionSelectMultiple(event, option) {
|
1039
|
-
let selected = this.isSelected(option);
|
1040
|
-
let value = null;
|
1041
|
-
let metaSelection = this.optionTouched ? false : this.metaKeySelection;
|
1042
|
-
if (metaSelection) {
|
1043
|
-
let metaKey = event.metaKey || event.ctrlKey;
|
1044
|
-
if (selected) {
|
1045
|
-
value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];
|
1046
|
-
}
|
1047
|
-
else {
|
1048
|
-
value = metaKey ? this.modelValue() || [] : [];
|
1049
|
-
value = [...value, this.getOptionValue(option)];
|
1050
|
-
}
|
1051
|
-
}
|
1052
|
-
else {
|
1053
|
-
value = selected ? this.removeOption(option) : [...(this.modelValue() || []), this.getOptionValue(option)];
|
1054
|
-
}
|
1055
|
-
this.updateModel(value, event);
|
1056
|
-
}
|
1057
|
-
onOptionSelectSingle(event, option) {
|
1058
|
-
let selected = this.isSelected(option);
|
1059
|
-
let valueChanged = false;
|
1060
|
-
let value = null;
|
1061
|
-
let metaSelection = this.optionTouched ? false : this.metaKeySelection;
|
1062
|
-
if (metaSelection) {
|
1063
|
-
let metaKey = event.metaKey || event.ctrlKey;
|
1064
|
-
if (selected) {
|
1065
|
-
if (metaKey) {
|
1066
|
-
value = null;
|
1067
|
-
valueChanged = true;
|
1068
|
-
}
|
1069
|
-
}
|
1070
|
-
else {
|
1071
|
-
value = this.getOptionValue(option);
|
1072
|
-
valueChanged = true;
|
1073
|
-
}
|
1074
|
-
}
|
1075
|
-
else {
|
1076
|
-
value = selected ? null : this.getOptionValue(option);
|
1077
|
-
valueChanged = true;
|
1078
|
-
}
|
1079
|
-
if (valueChanged) {
|
1080
|
-
this.updateModel(value, event);
|
1081
|
-
}
|
1082
|
-
}
|
1083
|
-
onOptionSelectRange(event, start = -1, end = -1) {
|
1084
|
-
start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));
|
1085
|
-
end === -1 && (end = this.findNearestSelectedOptionIndex(start));
|
1086
|
-
if (start !== -1 && end !== -1) {
|
1087
|
-
const rangeStart = Math.min(start, end);
|
1088
|
-
const rangeEnd = Math.max(start, end);
|
1089
|
-
const value = this.visibleOptions()
|
1090
|
-
.slice(rangeStart, rangeEnd + 1)
|
1091
|
-
.filter((option) => this.isValidOption(option))
|
1092
|
-
.map((option) => this.getOptionValue(option));
|
1093
|
-
this.updateModel(value, event);
|
1094
|
-
}
|
1095
|
-
}
|
1096
|
-
onToggleAll(event) {
|
1097
|
-
if (this.disabled || this.readonly) {
|
1098
|
-
return;
|
1099
|
-
}
|
1100
|
-
focus(this.headerCheckboxViewChild.nativeElement);
|
1101
|
-
if (this.selectAll !== null) {
|
1102
|
-
this.onSelectAllChange.emit({
|
1103
|
-
originalEvent: event,
|
1104
|
-
checked: !this.allSelected()
|
1105
|
-
});
|
1106
|
-
}
|
1107
|
-
else {
|
1108
|
-
const value = this.allSelected()
|
1109
|
-
? []
|
1110
|
-
: this.visibleOptions()
|
1111
|
-
.filter((option) => this.isValidOption(option))
|
1112
|
-
.map((option) => this.getOptionValue(option));
|
1113
|
-
this.updateModel(value, event);
|
1114
|
-
this.onChange.emit({ originalEvent: event, value: this.value });
|
1115
|
-
}
|
1116
|
-
event.preventDefault();
|
1117
|
-
// event.stopPropagation();
|
1118
|
-
}
|
1119
|
-
allSelected() {
|
1120
|
-
return this.selectAll !== null ? this.selectAll : isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));
|
1121
|
-
}
|
1122
|
-
onOptionTouchEnd() {
|
1123
|
-
if (this.disabled) {
|
1124
|
-
return;
|
1125
|
-
}
|
1126
|
-
this.optionTouched = true;
|
1127
|
-
}
|
1128
|
-
onOptionMouseDown(event, index) {
|
1129
|
-
this.changeFocusedOptionIndex(event, index);
|
1130
|
-
}
|
1131
|
-
onOptionMouseEnter(event, index) {
|
1132
|
-
if (this.focusOnHover) {
|
1133
|
-
this.changeFocusedOptionIndex(event, index);
|
1134
|
-
}
|
1135
|
-
}
|
1136
|
-
onOptionDoubleClick(event, option) {
|
1137
|
-
if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
|
1138
|
-
return;
|
1139
|
-
}
|
1140
|
-
this.onDblClick.emit({
|
1141
|
-
originalEvent: event,
|
1142
|
-
option: option,
|
1143
|
-
value: this.value
|
1144
|
-
});
|
1145
|
-
}
|
1146
|
-
onFirstHiddenFocus(event) {
|
1147
|
-
focus(this.listViewChild.nativeElement);
|
1148
|
-
const firstFocusableEl = getFirstFocusableElement(this.el.nativeElement, ':not([data-p-hidden-focusable="true"])');
|
1149
|
-
this.lastHiddenFocusableElement.nativeElement.tabIndex = isEmpty(firstFocusableEl) ? '-1' : undefined;
|
1150
|
-
this.firstHiddenFocusableElement.nativeElement.tabIndex = -1;
|
1151
|
-
}
|
1152
|
-
onLastHiddenFocus(event) {
|
1153
|
-
const relatedTarget = event.relatedTarget;
|
1154
|
-
if (relatedTarget === this.listViewChild.nativeElement) {
|
1155
|
-
const firstFocusableEl = getFirstFocusableElement(this.el.nativeElement, ':not(.p-hidden-focusable)');
|
1156
|
-
focus(firstFocusableEl);
|
1157
|
-
this.firstHiddenFocusableElement.nativeElement.tabIndex = undefined;
|
1158
|
-
}
|
1159
|
-
else {
|
1160
|
-
focus(this.firstHiddenFocusableElement.nativeElement);
|
1161
|
-
}
|
1162
|
-
this.lastHiddenFocusableElement.nativeElement.tabIndex = -1;
|
1163
|
-
}
|
1164
|
-
onFocusout(event) {
|
1165
|
-
if (!this.el.nativeElement.contains(event.relatedTarget) && this.lastHiddenFocusableElement && this.firstHiddenFocusableElement) {
|
1166
|
-
this.firstHiddenFocusableElement.nativeElement.tabIndex = this.lastHiddenFocusableElement.nativeElement.tabIndex = undefined;
|
1167
|
-
this.containerViewChild.nativeElement.tabIndex = '0';
|
1168
|
-
this.scrollerTabIndex = '0';
|
1169
|
-
}
|
1170
|
-
}
|
1171
|
-
onListFocus(event) {
|
1172
|
-
this.focused = true;
|
1173
|
-
const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
|
1174
|
-
this.focusedOptionIndex.set(focusedOptionIndex);
|
1175
|
-
this.onFocus.emit(event);
|
1176
|
-
this.containerViewChild.nativeElement.tabIndex = '-1';
|
1177
|
-
this.scrollerTabIndex = '-1';
|
1178
|
-
}
|
1179
|
-
onFilterFocus(event) {
|
1180
|
-
this.containerViewChild.nativeElement.tabIndex = '-1';
|
1181
|
-
}
|
1182
|
-
onListBlur(event) {
|
1183
|
-
this.focused = false;
|
1184
|
-
this.focusedOptionIndex.set(-1);
|
1185
|
-
this.startRangeIndex.set(-1);
|
1186
|
-
this.searchValue = '';
|
1187
|
-
}
|
1188
|
-
onHeaderCheckboxFocus(event) {
|
1189
|
-
this.headerCheckboxFocus = true;
|
1190
|
-
}
|
1191
|
-
onHeaderCheckboxBlur() {
|
1192
|
-
this.headerCheckboxFocus = false;
|
1193
|
-
}
|
1194
|
-
onHeaderCheckboxKeyDown(event) {
|
1195
|
-
if (this.disabled) {
|
1196
|
-
event.preventDefault();
|
1197
|
-
return;
|
1198
|
-
}
|
1199
|
-
switch (event.code) {
|
1200
|
-
case 'Space':
|
1201
|
-
this.onToggleAll(event);
|
1202
|
-
break;
|
1203
|
-
case 'Enter':
|
1204
|
-
this.onToggleAll(event);
|
1205
|
-
break;
|
1206
|
-
case 'Tab':
|
1207
|
-
this.onHeaderCheckboxTabKeyDown(event);
|
1208
|
-
break;
|
1209
|
-
default:
|
1210
|
-
break;
|
1211
|
-
}
|
1212
|
-
}
|
1213
|
-
onHeaderCheckboxTabKeyDown(event) {
|
1214
|
-
focus(this.listViewChild.nativeElement);
|
1215
|
-
event.preventDefault();
|
1216
|
-
}
|
1217
|
-
onFilterChange(event) {
|
1218
|
-
let value = event.target.value?.trim();
|
1219
|
-
this._filterValue.set(value);
|
1220
|
-
this.focusedOptionIndex.set(-1);
|
1221
|
-
this.startRangeIndex.set(-1);
|
1222
|
-
this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });
|
1223
|
-
!this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);
|
1224
|
-
}
|
1225
|
-
onFilterBlur(event) {
|
1226
|
-
this.focusedOptionIndex.set(-1);
|
1227
|
-
this.startRangeIndex.set(-1);
|
1228
|
-
}
|
1229
|
-
onListKeyDown(event) {
|
1230
|
-
const metaKey = event.metaKey || event.ctrlKey;
|
1231
|
-
switch (event.code) {
|
1232
|
-
case 'ArrowDown':
|
1233
|
-
this.onArrowDownKey(event);
|
1234
|
-
break;
|
1235
|
-
case 'ArrowUp':
|
1236
|
-
this.onArrowUpKey(event);
|
1237
|
-
break;
|
1238
|
-
case 'Home':
|
1239
|
-
this.onHomeKey(event);
|
1240
|
-
break;
|
1241
|
-
case 'End':
|
1242
|
-
this.onEndKey(event);
|
1243
|
-
break;
|
1244
|
-
case 'PageDown':
|
1245
|
-
this.onPageDownKey(event);
|
1246
|
-
break;
|
1247
|
-
case 'PageUp':
|
1248
|
-
this.onPageUpKey(event);
|
1249
|
-
break;
|
1250
|
-
case 'Enter':
|
1251
|
-
case 'Space':
|
1252
|
-
case 'NumpadEnter':
|
1253
|
-
this.onSpaceKey(event);
|
1254
|
-
break;
|
1255
|
-
case 'Tab':
|
1256
|
-
//NOOP
|
1257
|
-
break;
|
1258
|
-
case 'ShiftLeft':
|
1259
|
-
case 'ShiftRight':
|
1260
|
-
this.onShiftKey();
|
1261
|
-
break;
|
1262
|
-
default:
|
1263
|
-
if (this.multiple && event.code === 'KeyA' && metaKey) {
|
1264
|
-
const value = this.visibleOptions()
|
1265
|
-
.filter((option) => this.isValidOption(option))
|
1266
|
-
.map((option) => this.getOptionValue(option));
|
1267
|
-
this.updateModel(value, event);
|
1268
|
-
event.preventDefault();
|
1269
|
-
break;
|
1270
|
-
}
|
1271
|
-
if (!metaKey && isPrintableCharacter(event.key)) {
|
1272
|
-
this.searchOptions(event, event.key);
|
1273
|
-
event.preventDefault();
|
1274
|
-
}
|
1275
|
-
break;
|
1276
|
-
}
|
1277
|
-
}
|
1278
|
-
onFilterKeyDown(event) {
|
1279
|
-
switch (event.code) {
|
1280
|
-
case 'ArrowDown':
|
1281
|
-
this.onArrowDownKey(event);
|
1282
|
-
break;
|
1283
|
-
case 'ArrowUp':
|
1284
|
-
this.onArrowUpKey(event);
|
1285
|
-
break;
|
1286
|
-
case 'ArrowLeft':
|
1287
|
-
case 'ArrowRight':
|
1288
|
-
this.onArrowLeftKey(event, true);
|
1289
|
-
break;
|
1290
|
-
case 'Home':
|
1291
|
-
this.onHomeKey(event, true);
|
1292
|
-
break;
|
1293
|
-
case 'End':
|
1294
|
-
this.onEndKey(event, true);
|
1295
|
-
break;
|
1296
|
-
case 'Enter':
|
1297
|
-
this.onEnterKey(event);
|
1298
|
-
break;
|
1299
|
-
case 'ShiftLeft':
|
1300
|
-
case 'ShiftRight':
|
1301
|
-
this.onShiftKey();
|
1302
|
-
break;
|
1303
|
-
default:
|
1304
|
-
break;
|
1305
|
-
}
|
1306
|
-
}
|
1307
|
-
onArrowDownKey(event) {
|
1308
|
-
const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();
|
1309
|
-
if (this.multiple && event.shiftKey) {
|
1310
|
-
this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
|
1311
|
-
}
|
1312
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1313
|
-
event.preventDefault();
|
1314
|
-
}
|
1315
|
-
onArrowUpKey(event) {
|
1316
|
-
const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();
|
1317
|
-
if (this.multiple && event.shiftKey) {
|
1318
|
-
this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
|
1319
|
-
}
|
1320
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1321
|
-
event.preventDefault();
|
1322
|
-
}
|
1323
|
-
onArrowLeftKey(event, pressedInInputText = false) {
|
1324
|
-
pressedInInputText && this.focusedOptionIndex.set(-1);
|
1325
|
-
}
|
1326
|
-
onHomeKey(event, pressedInInputText = false) {
|
1327
|
-
if (pressedInInputText) {
|
1328
|
-
event.currentTarget.setSelectionRange(0, 0);
|
1329
|
-
this.focusedOptionIndex.set(-1);
|
1330
|
-
}
|
1331
|
-
else {
|
1332
|
-
let metaKey = event.metaKey || event.ctrlKey;
|
1333
|
-
let optionIndex = this.findFirstOptionIndex();
|
1334
|
-
if (this.multiple && event.shiftKey && metaKey) {
|
1335
|
-
this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
|
1336
|
-
}
|
1337
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1338
|
-
}
|
1339
|
-
event.preventDefault();
|
1340
|
-
}
|
1341
|
-
onEndKey(event, pressedInInputText = false) {
|
1342
|
-
if (pressedInInputText) {
|
1343
|
-
const target = event.currentTarget;
|
1344
|
-
const len = target.value.length;
|
1345
|
-
target.setSelectionRange(len, len);
|
1346
|
-
this.focusedOptionIndex.set(-1);
|
1347
|
-
}
|
1348
|
-
else {
|
1349
|
-
let metaKey = event.metaKey || event.ctrlKey;
|
1350
|
-
let optionIndex = this.findLastOptionIndex();
|
1351
|
-
if (this.multiple && event.shiftKey && metaKey) {
|
1352
|
-
this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
|
1353
|
-
}
|
1354
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1355
|
-
}
|
1356
|
-
event.preventDefault();
|
1357
|
-
}
|
1358
|
-
onPageDownKey(event) {
|
1359
|
-
this.scrollInView(0);
|
1360
|
-
event.preventDefault();
|
1361
|
-
}
|
1362
|
-
onPageUpKey(event) {
|
1363
|
-
this.scrollInView(this.visibleOptions().length - 1);
|
1364
|
-
event.preventDefault();
|
1365
|
-
}
|
1366
|
-
onEnterKey(event) {
|
1367
|
-
if (this.focusedOptionIndex() !== -1) {
|
1368
|
-
if (this.multiple && event.shiftKey)
|
1369
|
-
this.onOptionSelectRange(event, this.focusedOptionIndex());
|
1370
|
-
else
|
1371
|
-
this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
|
1372
|
-
}
|
1373
|
-
event.preventDefault();
|
1374
|
-
}
|
1375
|
-
onSpaceKey(event) {
|
1376
|
-
this.onEnterKey(event);
|
1377
|
-
}
|
1378
|
-
onShiftKey() {
|
1379
|
-
const focusedOptionIndex = this.focusedOptionIndex();
|
1380
|
-
this.startRangeIndex.set(focusedOptionIndex);
|
1381
|
-
}
|
1382
|
-
getOptionGroupChildren(optionGroup) {
|
1383
|
-
return this.optionGroupChildren ? resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
|
1384
|
-
}
|
1385
|
-
getOptionGroupLabel(optionGroup) {
|
1386
|
-
return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;
|
1387
|
-
}
|
1388
|
-
getOptionLabel(option) {
|
1389
|
-
return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;
|
1390
|
-
}
|
1391
|
-
getOptionIndex(index, scrollerOptions) {
|
1392
|
-
return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];
|
1393
|
-
}
|
1394
|
-
getOptionValue(option) {
|
1395
|
-
return this.optionValue ? resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;
|
1396
|
-
}
|
1397
|
-
getAriaPosInset(index) {
|
1398
|
-
return ((this.optionGroupLabel
|
1399
|
-
? index -
|
1400
|
-
this.visibleOptions()
|
1401
|
-
.slice(0, index)
|
1402
|
-
.filter((option) => this.isOptionGroup(option)).length
|
1403
|
-
: index) + 1);
|
1404
|
-
}
|
1405
|
-
hasSelectedOption() {
|
1406
|
-
return isNotEmpty(this.modelValue());
|
1407
|
-
}
|
1408
|
-
isOptionGroup(option) {
|
1409
|
-
return this.optionGroupLabel && option.optionGroup && option.group;
|
1410
|
-
}
|
1411
|
-
changeFocusedOptionIndex(event, index) {
|
1412
|
-
if (this.focusedOptionIndex() !== index) {
|
1413
|
-
this.focusedOptionIndex.set(index);
|
1414
|
-
this.scrollInView();
|
1415
|
-
if (this.selectOnFocus && !this.multiple) {
|
1416
|
-
this.onOptionSelect(event, this.visibleOptions()[index]);
|
1417
|
-
}
|
1418
|
-
}
|
1419
|
-
}
|
1420
|
-
searchOptions(event, char) {
|
1421
|
-
this.searchValue = (this.searchValue || '') + char;
|
1422
|
-
let optionIndex = -1;
|
1423
|
-
let matched = false;
|
1424
|
-
if (this.focusedOptionIndex() !== -1) {
|
1425
|
-
optionIndex = this.visibleOptions()
|
1426
|
-
.slice(this.focusedOptionIndex())
|
1427
|
-
.findIndex((option) => this.isOptionMatched(option));
|
1428
|
-
optionIndex =
|
1429
|
-
optionIndex === -1
|
1430
|
-
? this.visibleOptions()
|
1431
|
-
.slice(0, this.focusedOptionIndex())
|
1432
|
-
.findIndex((option) => this.isOptionMatched(option))
|
1433
|
-
: optionIndex + this.focusedOptionIndex();
|
1434
|
-
}
|
1435
|
-
else {
|
1436
|
-
optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
|
1437
|
-
}
|
1438
|
-
if (optionIndex !== -1) {
|
1439
|
-
matched = true;
|
1440
|
-
}
|
1441
|
-
if (optionIndex === -1 && this.focusedOptionIndex() === -1) {
|
1442
|
-
optionIndex = this.findFirstFocusedOptionIndex();
|
1443
|
-
}
|
1444
|
-
if (optionIndex !== -1) {
|
1445
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1446
|
-
}
|
1447
|
-
if (this.searchTimeout) {
|
1448
|
-
clearTimeout(this.searchTimeout);
|
1449
|
-
}
|
1450
|
-
this.searchTimeout = setTimeout(() => {
|
1451
|
-
this.searchValue = '';
|
1452
|
-
this.searchTimeout = null;
|
1453
|
-
}, 500);
|
1454
|
-
return matched;
|
1455
|
-
}
|
1456
|
-
isOptionMatched(option) {
|
1457
|
-
return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));
|
1458
|
-
}
|
1459
|
-
scrollInView(index = -1) {
|
1460
|
-
const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
|
1461
|
-
const element = findSingle(this.listViewChild.nativeElement, `li[id="${id}"]`);
|
1462
|
-
if (element) {
|
1463
|
-
element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
1464
|
-
}
|
1465
|
-
else if (!this.virtualScrollerDisabled) {
|
1466
|
-
this.virtualScroll && this.scroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
|
1467
|
-
}
|
1468
|
-
}
|
1469
|
-
findFirstOptionIndex() {
|
1470
|
-
return this.visibleOptions().findIndex((option) => this.isValidOption(option));
|
1471
|
-
}
|
1472
|
-
findLastOptionIndex() {
|
1473
|
-
return findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));
|
1474
|
-
}
|
1475
|
-
findFirstFocusedOptionIndex() {
|
1476
|
-
const selectedIndex = this.findFirstSelectedOptionIndex();
|
1477
|
-
return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
|
1478
|
-
}
|
1479
|
-
findLastFocusedOptionIndex() {
|
1480
|
-
const selectedIndex = this.findLastSelectedOptionIndex();
|
1481
|
-
return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
|
1482
|
-
}
|
1483
|
-
findLastSelectedOptionIndex() {
|
1484
|
-
return this.hasSelectedOption() ? findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;
|
1485
|
-
}
|
1486
|
-
findNextOptionIndex(index) {
|
1487
|
-
const matchedOptionIndex = index < this.visibleOptions().length - 1
|
1488
|
-
? this.visibleOptions()
|
1489
|
-
.slice(index + 1)
|
1490
|
-
.findIndex((option) => this.isValidOption(option))
|
1491
|
-
: -1;
|
1492
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
1493
|
-
}
|
1494
|
-
findNextSelectedOptionIndex(index) {
|
1495
|
-
const matchedOptionIndex = this.hasSelectedOption() && index < this.visibleOptions().length - 1
|
1496
|
-
? this.visibleOptions()
|
1497
|
-
.slice(index + 1)
|
1498
|
-
.findIndex((option) => this.isValidSelectedOption(option))
|
1499
|
-
: -1;
|
1500
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
1501
|
-
}
|
1502
|
-
findPrevSelectedOptionIndex(index) {
|
1503
|
-
const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;
|
1504
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
1505
|
-
}
|
1506
|
-
findFirstSelectedOptionIndex() {
|
1507
|
-
return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
|
1508
|
-
}
|
1509
|
-
findPrevOptionIndex(index) {
|
1510
|
-
const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;
|
1511
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
1512
|
-
}
|
1513
|
-
findNearestSelectedOptionIndex(index, firstCheckUp = false) {
|
1514
|
-
let matchedOptionIndex = -1;
|
1515
|
-
if (this.hasSelectedOption()) {
|
1516
|
-
if (firstCheckUp) {
|
1517
|
-
matchedOptionIndex = this.findPrevSelectedOptionIndex(index);
|
1518
|
-
matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;
|
1519
|
-
}
|
1520
|
-
else {
|
1521
|
-
matchedOptionIndex = this.findNextSelectedOptionIndex(index);
|
1522
|
-
matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;
|
1523
|
-
}
|
1524
|
-
}
|
1525
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
1526
|
-
}
|
1527
|
-
equalityKey() {
|
1528
|
-
return this.optionValue ? null : this.dataKey;
|
1529
|
-
}
|
1530
|
-
isValidSelectedOption(option) {
|
1531
|
-
return this.isValidOption(option) && this.isSelected(option);
|
1532
|
-
}
|
1533
|
-
isOptionDisabled(option) {
|
1534
|
-
return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;
|
1535
|
-
}
|
1536
|
-
isSelected(option) {
|
1537
|
-
const optionValue = this.getOptionValue(option);
|
1538
|
-
if (this.multiple)
|
1539
|
-
return (this.modelValue() || []).some((value) => equals(value, optionValue, this.equalityKey()));
|
1540
|
-
else
|
1541
|
-
return equals(this.modelValue(), optionValue, this.equalityKey());
|
1542
|
-
}
|
1543
|
-
isValidOption(option) {
|
1544
|
-
return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));
|
1545
|
-
}
|
1546
|
-
isEmpty() {
|
1547
|
-
return !this._options()?.length || !this.visibleOptions()?.length;
|
1548
|
-
}
|
1549
|
-
hasFilter() {
|
1550
|
-
return this._filterValue() && this._filterValue().trim().length > 0;
|
1551
|
-
}
|
1552
|
-
resetFilter() {
|
1553
|
-
if (this.filterViewChild && this.filterViewChild.nativeElement) {
|
1554
|
-
this.filterViewChild.nativeElement.value = '';
|
1555
|
-
}
|
1556
|
-
this._filterValue.set(null);
|
1557
|
-
}
|
1558
|
-
ngOnDestroy() {
|
1559
|
-
if (this.translationSubscription) {
|
1560
|
-
this.translationSubscription.unsubscribe();
|
1561
|
-
}
|
1562
|
-
super.ngOnDestroy();
|
1563
|
-
}
|
1564
|
-
static ɵfac = function Listbox_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Listbox)(i0.ɵɵdirectiveInject(i1.FilterService)); };
|
1565
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Listbox, selectors: [["p-listbox"], ["p-listBox"], ["p-list-box"]], contentQueries: function Listbox_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
1566
|
-
i0.ɵɵcontentQuery(dirIndex, Header, 5);
|
1567
|
-
i0.ɵɵcontentQuery(dirIndex, Footer, 5);
|
1568
|
-
i0.ɵɵcontentQuery(dirIndex, _c0, 4);
|
1569
|
-
i0.ɵɵcontentQuery(dirIndex, _c1, 4);
|
1570
|
-
i0.ɵɵcontentQuery(dirIndex, _c2, 4);
|
1571
|
-
i0.ɵɵcontentQuery(dirIndex, _c3, 4);
|
1572
|
-
i0.ɵɵcontentQuery(dirIndex, _c4, 4);
|
1573
|
-
i0.ɵɵcontentQuery(dirIndex, _c5, 4);
|
1574
|
-
i0.ɵɵcontentQuery(dirIndex, _c6, 4);
|
1575
|
-
i0.ɵɵcontentQuery(dirIndex, _c7, 4);
|
1576
|
-
i0.ɵɵcontentQuery(dirIndex, _c8, 4);
|
1577
|
-
i0.ɵɵcontentQuery(dirIndex, _c9, 4);
|
1578
|
-
i0.ɵɵcontentQuery(dirIndex, _c10, 4);
|
1579
|
-
i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
|
1580
|
-
} if (rf & 2) {
|
1581
|
-
let _t;
|
1582
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerFacet = _t.first);
|
1583
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerFacet = _t.first);
|
1584
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
|
1585
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);
|
1586
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);
|
1587
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterTemplate = _t.first);
|
1588
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);
|
1589
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterTemplate = _t.first);
|
1590
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyTemplate = _t.first);
|
1591
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterIconTemplate = _t.first);
|
1592
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.checkIconTemplate = _t.first);
|
1593
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.checkmarkTemplate = _t.first);
|
1594
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loaderTemplate = _t.first);
|
1595
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
|
1596
|
-
} }, viewQuery: function Listbox_Query(rf, ctx) { if (rf & 1) {
|
1597
|
-
i0.ɵɵviewQuery(_c11, 5);
|
1598
|
-
i0.ɵɵviewQuery(_c3, 5);
|
1599
|
-
i0.ɵɵviewQuery(_c12, 5);
|
1600
|
-
i0.ɵɵviewQuery(_c13, 5);
|
1601
|
-
i0.ɵɵviewQuery(_c14, 5);
|
1602
|
-
i0.ɵɵviewQuery(_c15, 5);
|
1603
|
-
i0.ɵɵviewQuery(_c16, 5);
|
1604
|
-
} if (rf & 2) {
|
1605
|
-
let _t;
|
1606
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerCheckboxViewChild = _t.first);
|
1607
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterViewChild = _t.first);
|
1608
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lastHiddenFocusableElement = _t.first);
|
1609
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.firstHiddenFocusableElement = _t.first);
|
1610
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scroller = _t.first);
|
1611
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewChild = _t.first);
|
1612
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerViewChild = _t.first);
|
1613
|
-
} }, inputs: { id: "id", searchMessage: "searchMessage", emptySelectionMessage: "emptySelectionMessage", selectionMessage: "selectionMessage", autoOptionFocus: [2, "autoOptionFocus", "autoOptionFocus", booleanAttribute], ariaLabel: "ariaLabel", selectOnFocus: [2, "selectOnFocus", "selectOnFocus", booleanAttribute], searchLocale: [2, "searchLocale", "searchLocale", booleanAttribute], focusOnHover: [2, "focusOnHover", "focusOnHover", booleanAttribute], filterMessage: "filterMessage", filterFields: "filterFields", lazy: [2, "lazy", "lazy", booleanAttribute], virtualScroll: [2, "virtualScroll", "virtualScroll", booleanAttribute], virtualScrollItemSize: [2, "virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], virtualScrollOptions: "virtualScrollOptions", scrollHeight: "scrollHeight", tabindex: [2, "tabindex", "tabindex", numberAttribute], multiple: [2, "multiple", "multiple", booleanAttribute], style: "style", styleClass: "styleClass", listStyle: "listStyle", listStyleClass: "listStyleClass", readonly: [2, "readonly", "readonly", booleanAttribute], disabled: [2, "disabled", "disabled", booleanAttribute], checkbox: [2, "checkbox", "checkbox", booleanAttribute], filter: [2, "filter", "filter", booleanAttribute], filterBy: "filterBy", filterMatchMode: "filterMatchMode", filterLocale: "filterLocale", metaKeySelection: [2, "metaKeySelection", "metaKeySelection", booleanAttribute], dataKey: "dataKey", showToggleAll: [2, "showToggleAll", "showToggleAll", booleanAttribute], optionLabel: "optionLabel", optionValue: "optionValue", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", optionDisabled: "optionDisabled", ariaFilterLabel: "ariaFilterLabel", filterPlaceHolder: "filterPlaceHolder", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", group: [2, "group", "group", booleanAttribute], options: "options", filterValue: "filterValue", selectAll: "selectAll", striped: [2, "striped", "striped", booleanAttribute], highlightOnSelect: [2, "highlightOnSelect", "highlightOnSelect", booleanAttribute], checkmark: [2, "checkmark", "checkmark", booleanAttribute] }, outputs: { onChange: "onChange", onClick: "onClick", onDblClick: "onDblClick", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onSelectAllChange: "onSelectAllChange", onLazyLoad: "onLazyLoad" }, standalone: true, features: [i0.ɵɵProvidersFeature([LISTBOX_VALUE_ACCESSOR, ListBoxStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c18, decls: 17, vars: 25, consts: [["firstHiddenFocusableElement", ""], ["container", ""], ["buildInItems", ""], ["lastHiddenFocusableElement", ""], ["builtInFilterElement", ""], ["headerchkbox", ""], ["icon", ""], ["filterInput", ""], ["scroller", ""], ["content", ""], ["loader", ""], ["list", ""], ["emptyFilter", ""], ["empty", ""], [3, "focusout", "ngClass", "ngStyle"], ["role", "presentation", 1, "p-hidden-accessible", "p-hidden-focusable", 3, "focus", "tabindex"], ["class", "p-listbox-header", 4, "ngIf"], [3, "ngClass", "ngStyle"], [3, "items", "style", "itemSize", "autoSize", "lazy", "options", "tabindex", "onLazyLoad", 4, "ngIf"], [4, "ngIf"], ["class", "p-listbox-footer", 4, "ngIf"], ["role", "status", "aria-live", "polite", "class", "p-hidden-accessible", 4, "ngIf"], ["role", "status", "aria-live", "polite", 1, "p-hidden-accessible"], [1, "p-listbox-header"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "p-checkbox p-component", 3, "ngClass", "click", "keydown", 4, "ngIf"], [4, "ngIf", "ngIfElse"], [1, "p-checkbox", "p-component", 3, "click", "keydown", "ngClass"], [1, "p-hidden-accessible"], ["type", "checkbox", "readonly", "readonly", 3, "focus", "blur", "disabled"], ["styleClass", "p-listbox-option-check-icon", 3, "ngModel", "disabled", "tabindex", "variant", "binary", 4, "ngIf"], ["styleClass", "p-listbox-option-check-icon", 3, "ngModel", "disabled", "tabindex", "variant", "binary"], ["class", "p-listbox-filter-container", 4, "ngIf"], ["role", "status", "attr.aria-live", "polite", 1, "p-hidden-accessible"], [1, "p-listbox-filter-container"], ["pInputText", "", "type", "text", "role", "searchbox", 1, "p-listbox-filter", 3, "input", "keydown", "focus", "blur", "value", "disabled", "tabindex"], [3, "styleClass", 4, "ngIf"], ["class", "p-listbox-filter-icon", 4, "ngIf"], [3, "styleClass"], [1, "p-listbox-filter-icon"], [4, "ngTemplateOutlet"], [3, "onLazyLoad", "items", "itemSize", "autoSize", "lazy", "options", "tabindex"], ["role", "listbox", 1, "p-listbox-list", 3, "focus", "blur", "keydown", "tabindex", "ngClass"], ["ngFor", "", 3, "ngForOf"], ["class", "p-listbox-empty-message", "role", "option", 4, "ngIf"], ["role", "option", 1, "p-listbox-option-group", 3, "ngStyle"], ["pRipple", "", "role", "option", 1, "p-listbox-option", 3, "click", "dblclick", "mousedown", "mouseenter", "touchend", "ngStyle", "ngClass"], ["styleClass", "p-listbox-option-check-icon", 4, "ngIf"], ["styleClass", "p-listbox-option-check-icon"], ["role", "option", 1, "p-listbox-empty-message"], [1, "p-listbox-footer"]], template: function Listbox_Template(rf, ctx) { if (rf & 1) {
|
1614
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
1615
|
-
i0.ɵɵprojectionDef(_c17);
|
1616
|
-
i0.ɵɵelementStart(0, "div", 14);
|
1617
|
-
i0.ɵɵlistener("focusout", function Listbox_Template_div_focusout_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFocusout($event)); });
|
1618
|
-
i0.ɵɵelementStart(1, "span", 15, 0);
|
1619
|
-
i0.ɵɵlistener("focus", function Listbox_Template_span_focus_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFirstHiddenFocus($event)); });
|
1620
|
-
i0.ɵɵelementEnd();
|
1621
|
-
i0.ɵɵtemplate(3, Listbox_div_3_Template, 3, 5, "div", 16)(4, Listbox_div_4_Template, 5, 3, "div", 16);
|
1622
|
-
i0.ɵɵelementStart(5, "div", 17, 1);
|
1623
|
-
i0.ɵɵtemplate(7, Listbox_p_scroller_7_Template, 5, 11, "p-scroller", 18)(8, Listbox_ng_container_8_Template, 2, 6, "ng-container", 19)(9, Listbox_ng_template_9_Template, 5, 11, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
1624
|
-
i0.ɵɵelementEnd();
|
1625
|
-
i0.ɵɵtemplate(11, Listbox_div_11_Template, 3, 5, "div", 20)(12, Listbox_span_12_Template, 2, 1, "span", 21);
|
1626
|
-
i0.ɵɵelementStart(13, "span", 22);
|
1627
|
-
i0.ɵɵtext(14);
|
1628
|
-
i0.ɵɵelementEnd();
|
1629
|
-
i0.ɵɵelementStart(15, "span", 15, 3);
|
1630
|
-
i0.ɵɵlistener("focus", function Listbox_Template_span_focus_15_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onLastHiddenFocus($event)); });
|
1631
|
-
i0.ɵɵelementEnd()();
|
1632
|
-
} if (rf & 2) {
|
1633
|
-
i0.ɵɵclassMap(ctx.styleClass);
|
1634
|
-
i0.ɵɵproperty("ngClass", ctx.containerClass)("ngStyle", ctx.style);
|
1635
|
-
i0.ɵɵattribute("id", ctx.id);
|
1636
|
-
i0.ɵɵadvance();
|
1637
|
-
i0.ɵɵproperty("tabindex", !ctx.disabled ? ctx.tabindex : -1);
|
1638
|
-
i0.ɵɵattribute("aria-hidden", true)("data-p-hidden-focusable", true);
|
1639
|
-
i0.ɵɵadvance(2);
|
1640
|
-
i0.ɵɵproperty("ngIf", ctx.headerFacet || ctx.headerTemplate || ctx._headerTemplate);
|
1641
|
-
i0.ɵɵadvance();
|
1642
|
-
i0.ɵɵproperty("ngIf", ctx.checkbox && ctx.multiple && ctx.showToggleAll || ctx.filter);
|
1643
|
-
i0.ɵɵadvance();
|
1644
|
-
i0.ɵɵclassMap(ctx.listStyleClass);
|
1645
|
-
i0.ɵɵstyleProp("max-height", ctx.virtualScroll ? "auto" : ctx.scrollHeight || "auto");
|
1646
|
-
i0.ɵɵproperty("ngClass", "p-listbox-list-container")("ngStyle", ctx.listStyle);
|
1647
|
-
i0.ɵɵattribute("tabindex", !ctx.disabled && "0");
|
1648
|
-
i0.ɵɵadvance(2);
|
1649
|
-
i0.ɵɵproperty("ngIf", ctx.virtualScroll);
|
1650
|
-
i0.ɵɵadvance();
|
1651
|
-
i0.ɵɵproperty("ngIf", !ctx.virtualScroll);
|
1652
|
-
i0.ɵɵadvance(3);
|
1653
|
-
i0.ɵɵproperty("ngIf", ctx.footerFacet || ctx.footerTemplate || ctx._footerTemplate);
|
1654
|
-
i0.ɵɵadvance();
|
1655
|
-
i0.ɵɵproperty("ngIf", ctx.isEmpty());
|
1656
|
-
i0.ɵɵadvance(2);
|
1657
|
-
i0.ɵɵtextInterpolate1(" ", ctx.selectedMessageText, " ");
|
1658
|
-
i0.ɵɵadvance();
|
1659
|
-
i0.ɵɵproperty("tabindex", !ctx.disabled ? ctx.tabindex : -1);
|
1660
|
-
i0.ɵɵattribute("aria-hidden", true)("data-p-hidden-focusable", true);
|
1661
|
-
} }, dependencies: [CommonModule, i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle, Ripple, Scroller, InputIcon, SearchIcon, Checkbox, CheckIcon, IconField, InputText, BlankIcon, FormsModule, i3.NgControlStatus, i3.NgModel, SharedModule], encapsulation: 2, changeDetection: 0 });
|
1662
|
-
}
|
1663
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Listbox, [{
|
1664
|
-
type: Component,
|
1665
|
-
args: [{
|
1666
|
-
selector: 'p-listbox, p-listBox, p-list-box',
|
1667
|
-
standalone: true,
|
1668
|
-
imports: [CommonModule, Ripple, Scroller, InputIcon, SearchIcon, Checkbox, CheckIcon, IconField, InputText, BlankIcon, FormsModule, SharedModule],
|
1669
|
-
template: `
|
1670
|
-
<div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass" (focusout)="onFocusout($event)">
|
1671
|
-
<span
|
1672
|
-
#firstHiddenFocusableElement
|
1673
|
-
role="presentation"
|
1674
|
-
[attr.aria-hidden]="true"
|
1675
|
-
class="p-hidden-accessible p-hidden-focusable"
|
1676
|
-
[tabindex]="!disabled ? tabindex : -1"
|
1677
|
-
(focus)="onFirstHiddenFocus($event)"
|
1678
|
-
[attr.data-p-hidden-focusable]="true"
|
1679
|
-
>
|
1680
|
-
</span>
|
1681
|
-
<div class="p-listbox-header" *ngIf="headerFacet || headerTemplate || _headerTemplate">
|
1682
|
-
<ng-content select="p-header"></ng-content>
|
1683
|
-
<ng-container *ngTemplateOutlet="headerTemplate || _headerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
|
1684
|
-
</div>
|
1685
|
-
<div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
|
1686
|
-
<div *ngIf="checkbox && multiple && showToggleAll" class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-disabled': disabled }" (click)="onToggleAll($event)" (keydown)="onHeaderCheckboxKeyDown($event)">
|
1687
|
-
<div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
|
1688
|
-
<input #headerchkbox type="checkbox" readonly="readonly" [attr.checked]="allSelected()" [disabled]="disabled" (focus)="onHeaderCheckboxFocus($event)" (blur)="onHeaderCheckboxBlur()" [attr.aria-label]="toggleAllAriaLabel" />
|
1689
|
-
</div>
|
1690
|
-
<p-checkbox
|
1691
|
-
*ngIf="checkbox && multiple"
|
1692
|
-
styleClass="p-listbox-option-check-icon"
|
1693
|
-
[ngModel]="allSelected()"
|
1694
|
-
[disabled]="disabled"
|
1695
|
-
[tabindex]="-1"
|
1696
|
-
[variant]="config.inputStyle() === 'filled' ? 'filled' : 'outlined' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'"
|
1697
|
-
[binary]="true"
|
1698
|
-
>
|
1699
|
-
<ng-container *ngIf="checkIconTemplate || _checkIconTemplate">
|
1700
|
-
<ng-template #icon>
|
1701
|
-
<ng-template *ngTemplateOutlet="checkIconTemplate || _checkIconTemplate; context: { $implicit: allSelected() }"></ng-template>
|
1702
|
-
</ng-template>
|
1703
|
-
</ng-container>
|
1704
|
-
</p-checkbox>
|
1705
|
-
</div>
|
1706
|
-
<ng-container *ngIf="filterTemplate || _filterTemplate; else builtInFilterElement">
|
1707
|
-
<ng-container *ngTemplateOutlet="filterTemplate || _filterTemplate; context: { options: filterOptions }"></ng-container>
|
1708
|
-
</ng-container>
|
1709
|
-
<ng-template #builtInFilterElement>
|
1710
|
-
<div class="p-listbox-filter-container" *ngIf="filter">
|
1711
|
-
<p-iconfield>
|
1712
|
-
<input
|
1713
|
-
#filterInput
|
1714
|
-
pInputText
|
1715
|
-
type="text"
|
1716
|
-
class="p-listbox-filter"
|
1717
|
-
role="searchbox"
|
1718
|
-
[value]="_filterValue() || ''"
|
1719
|
-
[disabled]="disabled"
|
1720
|
-
[attr.aria-owns]="id + '_list'"
|
1721
|
-
[attr.aria-activedescendant]="focusedOptionId"
|
1722
|
-
[attr.placeholder]="filterPlaceHolder"
|
1723
|
-
[attr.aria-label]="ariaFilterLabel"
|
1724
|
-
[tabindex]="!disabled && !focused ? tabindex : -1"
|
1725
|
-
(input)="onFilterChange($event)"
|
1726
|
-
(keydown)="onFilterKeyDown($event)"
|
1727
|
-
(focus)="onFilterFocus($event)"
|
1728
|
-
(blur)="onFilterBlur($event)"
|
1729
|
-
/>
|
1730
|
-
<p-inputicon>
|
1731
|
-
<SearchIcon *ngIf="!filterIconTemplate && !_filterIconTemplate" [styleClass]="'p-listbox-filter-icon'" [attr.aria-hidden]="true" />
|
1732
|
-
<span *ngIf="filterIconTemplate || _filterIconTemplate" class="p-listbox-filter-icon" [attr.aria-hidden]="true">
|
1733
|
-
<ng-template *ngTemplateOutlet="filterIconTemplate || _filterIconTemplate"></ng-template>
|
1734
|
-
</span>
|
1735
|
-
</p-inputicon>
|
1736
|
-
</p-iconfield>
|
1737
|
-
</div>
|
1738
|
-
<span role="status" attr.aria-live="polite" class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
|
1739
|
-
{{ filterResultMessageText }}
|
1740
|
-
</span>
|
1741
|
-
</ng-template>
|
1742
|
-
</div>
|
1743
|
-
<div [ngClass]="'p-listbox-list-container'" #container [ngStyle]="listStyle" [class]="listStyleClass" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'" [attr.tabindex]="!disabled && '0'">
|
1744
|
-
<p-scroller
|
1745
|
-
#scroller
|
1746
|
-
*ngIf="virtualScroll"
|
1747
|
-
[items]="visibleOptions()"
|
1748
|
-
[style]="{ height: scrollHeight }"
|
1749
|
-
[itemSize]="virtualScrollItemSize"
|
1750
|
-
[autoSize]="true"
|
1751
|
-
[lazy]="lazy"
|
1752
|
-
[options]="virtualScrollOptions"
|
1753
|
-
(onLazyLoad)="onLazyLoad.emit($event)"
|
1754
|
-
[tabindex]="scrollerTabIndex"
|
1755
|
-
>
|
1756
|
-
<ng-template #content let-items let-scrollerOptions="options">
|
1757
|
-
<ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
|
1758
|
-
</ng-template>
|
1759
|
-
@if (loaderTemplate || _loaderTemplate) {
|
1760
|
-
<ng-template #loader let-scrollerOptions="options">
|
1761
|
-
<ng-container *ngTemplateOutlet="loaderTemplate || _loaderTemplate; context: { options: scrollerOptions }"></ng-container>
|
1762
|
-
</ng-template>
|
1763
|
-
}
|
1764
|
-
</p-scroller>
|
1765
|
-
<ng-container *ngIf="!virtualScroll">
|
1766
|
-
<ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
|
1767
|
-
</ng-container>
|
1768
|
-
|
1769
|
-
<ng-template #buildInItems let-items let-scrollerOptions="options">
|
1770
|
-
<ul
|
1771
|
-
#list
|
1772
|
-
class="p-listbox-list"
|
1773
|
-
role="listbox"
|
1774
|
-
[tabindex]="-1"
|
1775
|
-
[attr.aria-multiselectable]="true"
|
1776
|
-
[ngClass]="scrollerOptions.contentStyleClass"
|
1777
|
-
[style]="scrollerOptions.contentStyle"
|
1778
|
-
[attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
|
1779
|
-
[attr.aria-label]="ariaLabel"
|
1780
|
-
[attr.aria-disabled]="disabled"
|
1781
|
-
(focus)="onListFocus($event)"
|
1782
|
-
(blur)="onListBlur($event)"
|
1783
|
-
(keydown)="onListKeyDown($event)"
|
1784
|
-
>
|
1785
|
-
<ng-template ngFor let-option [ngForOf]="items" let-i="index">
|
1786
|
-
<ng-container *ngIf="isOptionGroup(option)">
|
1787
|
-
<li [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)" class="p-listbox-option-group" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
|
1788
|
-
<span *ngIf="!groupTemplate && !_groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
|
1789
|
-
<ng-container *ngTemplateOutlet="groupTemplate || _groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
|
1790
|
-
</li>
|
1791
|
-
</ng-container>
|
1792
|
-
<ng-container *ngIf="!isOptionGroup(option)">
|
1793
|
-
<li
|
1794
|
-
pRipple
|
1795
|
-
class="p-listbox-option"
|
1796
|
-
role="option"
|
1797
|
-
[attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
|
1798
|
-
[ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
|
1799
|
-
[ngClass]="{
|
1800
|
-
'p-listbox-option-selected': isSelected(option) && highlightOnSelect,
|
1801
|
-
'p-focus': focusedOptionIndex() === getOptionIndex(i, scrollerOptions),
|
1802
|
-
'p-disabled': isOptionDisabled(option)
|
1803
|
-
}"
|
1804
|
-
[attr.aria-label]="getOptionLabel(option)"
|
1805
|
-
[attr.aria-selected]="isSelected(option)"
|
1806
|
-
[attr.aria-disabled]="isOptionDisabled(option)"
|
1807
|
-
[attr.aria-setsize]="ariaSetSize"
|
1808
|
-
[attr.ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
|
1809
|
-
(click)="onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))"
|
1810
|
-
(dblclick)="onOptionDoubleClick($event, option)"
|
1811
|
-
(mousedown)="onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))"
|
1812
|
-
(mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
|
1813
|
-
(touchend)="onOptionTouchEnd()"
|
1814
|
-
>
|
1815
|
-
<p-checkbox
|
1816
|
-
*ngIf="checkbox && multiple"
|
1817
|
-
styleClass="p-listbox-option-check-icon"
|
1818
|
-
[ngModel]="isSelected(option)"
|
1819
|
-
[disabled]="disabled || isOptionDisabled(option)"
|
1820
|
-
[tabindex]="-1"
|
1821
|
-
[variant]="config.inputStyle() === 'filled' ? 'filled' : 'outlined' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'"
|
1822
|
-
[binary]="true"
|
1823
|
-
>
|
1824
|
-
<ng-container *ngIf="checkIconTemplate || _checkIconTemplate">
|
1825
|
-
<ng-template #icon>
|
1826
|
-
<ng-template *ngTemplateOutlet="checkIconTemplate || _checkIconTemplate; context: { $implicit: isSelected(option) }"></ng-template>
|
1827
|
-
</ng-template>
|
1828
|
-
</ng-container>
|
1829
|
-
</p-checkbox>
|
1830
|
-
<ng-container *ngIf="checkmark">
|
1831
|
-
<ng-container *ngIf="!checkmarkTemplate && !_checkmarkTemplate">
|
1832
|
-
<BlankIcon *ngIf="!isSelected(option)" styleClass="p-listbox-option-check-icon" />
|
1833
|
-
<CheckIcon *ngIf="isSelected(option)" styleClass="p-listbox-option-check-icon" />
|
1834
|
-
</ng-container>
|
1835
|
-
<ng-container *ngTemplateOutlet="checkmarkTemplate || _checkmarkTemplate; context: { implicit: isSelected(option) }"></ng-container>
|
1836
|
-
</ng-container>
|
1837
|
-
<span *ngIf="!itemTemplate && !_itemTemplate">{{ getOptionLabel(option) }}</span>
|
1838
|
-
<ng-container
|
1839
|
-
*ngTemplateOutlet="
|
1840
|
-
itemTemplate || _itemTemplate;
|
1841
|
-
context: {
|
1842
|
-
$implicit: option,
|
1843
|
-
index: getOptionIndex(i, scrollerOptions),
|
1844
|
-
selected: isSelected(option)
|
1845
|
-
}
|
1846
|
-
"
|
1847
|
-
></ng-container>
|
1848
|
-
</li>
|
1849
|
-
</ng-container>
|
1850
|
-
</ng-template>
|
1851
|
-
<li *ngIf="hasFilter() && isEmpty()" class="p-listbox-empty-message" role="option">
|
1852
|
-
@if (!emptyFilterTemplate && !_emptyFilterTemplate && !_emptyTemplate && !emptyTemplate) {
|
1853
|
-
{{ emptyFilterMessageText }}
|
1854
|
-
} @else {
|
1855
|
-
<ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || _emptyFilterTemplate || _emptyTemplate || emptyTemplate"></ng-container>
|
1856
|
-
}
|
1857
|
-
</li>
|
1858
|
-
<li *ngIf="!hasFilter() && isEmpty()" class="p-listbox-empty-message" role="option">
|
1859
|
-
@if (!emptyTemplate && !_emptyTemplate) {
|
1860
|
-
{{ emptyMessage }}
|
1861
|
-
} @else {
|
1862
|
-
<ng-container #empty *ngTemplateOutlet="emptyTemplate || _emptyTemplate"></ng-container>
|
1863
|
-
}
|
1864
|
-
</li>
|
1865
|
-
</ul>
|
1866
|
-
</ng-template>
|
1867
|
-
</div>
|
1868
|
-
<div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate || _footerTemplate">
|
1869
|
-
<ng-content select="p-footer"></ng-content>
|
1870
|
-
<ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
|
1871
|
-
</div>
|
1872
|
-
<span *ngIf="isEmpty()" role="status" aria-live="polite" class="p-hidden-accessible">
|
1873
|
-
{{ emptyMessage }}
|
1874
|
-
</span>
|
1875
|
-
<span role="status" aria-live="polite" class="p-hidden-accessible">
|
1876
|
-
{{ selectedMessageText }}
|
1877
|
-
</span>
|
1878
|
-
<span
|
1879
|
-
#lastHiddenFocusableElement
|
1880
|
-
role="presentation"
|
1881
|
-
[attr.aria-hidden]="true"
|
1882
|
-
class="p-hidden-accessible p-hidden-focusable"
|
1883
|
-
[tabindex]="!disabled ? tabindex : -1"
|
1884
|
-
(focus)="onLastHiddenFocus($event)"
|
1885
|
-
[attr.data-p-hidden-focusable]="true"
|
1886
|
-
>
|
1887
|
-
</span>
|
1888
|
-
</div>
|
1889
|
-
`,
|
1890
|
-
providers: [LISTBOX_VALUE_ACCESSOR, ListBoxStyle],
|
1891
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
1892
|
-
encapsulation: ViewEncapsulation.None
|
1893
|
-
}]
|
1894
|
-
}], () => [{ type: i1.FilterService }], { id: [{
|
1895
|
-
type: Input
|
1896
|
-
}], searchMessage: [{
|
1897
|
-
type: Input
|
1898
|
-
}], emptySelectionMessage: [{
|
1899
|
-
type: Input
|
1900
|
-
}], selectionMessage: [{
|
1901
|
-
type: Input
|
1902
|
-
}], autoOptionFocus: [{
|
1903
|
-
type: Input,
|
1904
|
-
args: [{ transform: booleanAttribute }]
|
1905
|
-
}], ariaLabel: [{
|
1906
|
-
type: Input
|
1907
|
-
}], selectOnFocus: [{
|
1908
|
-
type: Input,
|
1909
|
-
args: [{ transform: booleanAttribute }]
|
1910
|
-
}], searchLocale: [{
|
1911
|
-
type: Input,
|
1912
|
-
args: [{ transform: booleanAttribute }]
|
1913
|
-
}], focusOnHover: [{
|
1914
|
-
type: Input,
|
1915
|
-
args: [{ transform: booleanAttribute }]
|
1916
|
-
}], filterMessage: [{
|
1917
|
-
type: Input
|
1918
|
-
}], filterFields: [{
|
1919
|
-
type: Input
|
1920
|
-
}], lazy: [{
|
1921
|
-
type: Input,
|
1922
|
-
args: [{ transform: booleanAttribute }]
|
1923
|
-
}], virtualScroll: [{
|
1924
|
-
type: Input,
|
1925
|
-
args: [{ transform: booleanAttribute }]
|
1926
|
-
}], virtualScrollItemSize: [{
|
1927
|
-
type: Input,
|
1928
|
-
args: [{ transform: numberAttribute }]
|
1929
|
-
}], virtualScrollOptions: [{
|
1930
|
-
type: Input
|
1931
|
-
}], scrollHeight: [{
|
1932
|
-
type: Input
|
1933
|
-
}], tabindex: [{
|
1934
|
-
type: Input,
|
1935
|
-
args: [{ transform: numberAttribute }]
|
1936
|
-
}], multiple: [{
|
1937
|
-
type: Input,
|
1938
|
-
args: [{ transform: booleanAttribute }]
|
1939
|
-
}], style: [{
|
1940
|
-
type: Input
|
1941
|
-
}], styleClass: [{
|
1942
|
-
type: Input
|
1943
|
-
}], listStyle: [{
|
1944
|
-
type: Input
|
1945
|
-
}], listStyleClass: [{
|
1946
|
-
type: Input
|
1947
|
-
}], readonly: [{
|
1948
|
-
type: Input,
|
1949
|
-
args: [{ transform: booleanAttribute }]
|
1950
|
-
}], disabled: [{
|
1951
|
-
type: Input,
|
1952
|
-
args: [{ transform: booleanAttribute }]
|
1953
|
-
}], checkbox: [{
|
1954
|
-
type: Input,
|
1955
|
-
args: [{ transform: booleanAttribute }]
|
1956
|
-
}], filter: [{
|
1957
|
-
type: Input,
|
1958
|
-
args: [{ transform: booleanAttribute }]
|
1959
|
-
}], filterBy: [{
|
1960
|
-
type: Input
|
1961
|
-
}], filterMatchMode: [{
|
1962
|
-
type: Input
|
1963
|
-
}], filterLocale: [{
|
1964
|
-
type: Input
|
1965
|
-
}], metaKeySelection: [{
|
1966
|
-
type: Input,
|
1967
|
-
args: [{ transform: booleanAttribute }]
|
1968
|
-
}], dataKey: [{
|
1969
|
-
type: Input
|
1970
|
-
}], showToggleAll: [{
|
1971
|
-
type: Input,
|
1972
|
-
args: [{ transform: booleanAttribute }]
|
1973
|
-
}], optionLabel: [{
|
1974
|
-
type: Input
|
1975
|
-
}], optionValue: [{
|
1976
|
-
type: Input
|
1977
|
-
}], optionGroupChildren: [{
|
1978
|
-
type: Input
|
1979
|
-
}], optionGroupLabel: [{
|
1980
|
-
type: Input
|
1981
|
-
}], optionDisabled: [{
|
1982
|
-
type: Input
|
1983
|
-
}], ariaFilterLabel: [{
|
1984
|
-
type: Input
|
1985
|
-
}], filterPlaceHolder: [{
|
1986
|
-
type: Input
|
1987
|
-
}], emptyFilterMessage: [{
|
1988
|
-
type: Input
|
1989
|
-
}], emptyMessage: [{
|
1990
|
-
type: Input
|
1991
|
-
}], group: [{
|
1992
|
-
type: Input,
|
1993
|
-
args: [{ transform: booleanAttribute }]
|
1994
|
-
}], options: [{
|
1995
|
-
type: Input
|
1996
|
-
}], filterValue: [{
|
1997
|
-
type: Input
|
1998
|
-
}], selectAll: [{
|
1999
|
-
type: Input
|
2000
|
-
}], striped: [{
|
2001
|
-
type: Input,
|
2002
|
-
args: [{ transform: booleanAttribute }]
|
2003
|
-
}], highlightOnSelect: [{
|
2004
|
-
type: Input,
|
2005
|
-
args: [{ transform: booleanAttribute }]
|
2006
|
-
}], checkmark: [{
|
2007
|
-
type: Input,
|
2008
|
-
args: [{ transform: booleanAttribute }]
|
2009
|
-
}], onChange: [{
|
2010
|
-
type: Output
|
2011
|
-
}], onClick: [{
|
2012
|
-
type: Output
|
2013
|
-
}], onDblClick: [{
|
2014
|
-
type: Output
|
2015
|
-
}], onFilter: [{
|
2016
|
-
type: Output
|
2017
|
-
}], onFocus: [{
|
2018
|
-
type: Output
|
2019
|
-
}], onBlur: [{
|
2020
|
-
type: Output
|
2021
|
-
}], onSelectAllChange: [{
|
2022
|
-
type: Output
|
2023
|
-
}], onLazyLoad: [{
|
2024
|
-
type: Output
|
2025
|
-
}], headerCheckboxViewChild: [{
|
2026
|
-
type: ViewChild,
|
2027
|
-
args: ['headerchkbox']
|
2028
|
-
}], filterViewChild: [{
|
2029
|
-
type: ViewChild,
|
2030
|
-
args: ['filter']
|
2031
|
-
}], lastHiddenFocusableElement: [{
|
2032
|
-
type: ViewChild,
|
2033
|
-
args: ['lastHiddenFocusableElement']
|
2034
|
-
}], firstHiddenFocusableElement: [{
|
2035
|
-
type: ViewChild,
|
2036
|
-
args: ['firstHiddenFocusableElement']
|
2037
|
-
}], scroller: [{
|
2038
|
-
type: ViewChild,
|
2039
|
-
args: ['scroller']
|
2040
|
-
}], listViewChild: [{
|
2041
|
-
type: ViewChild,
|
2042
|
-
args: ['list']
|
2043
|
-
}], containerViewChild: [{
|
2044
|
-
type: ViewChild,
|
2045
|
-
args: ['container']
|
2046
|
-
}], headerFacet: [{
|
2047
|
-
type: ContentChild,
|
2048
|
-
args: [Header]
|
2049
|
-
}], footerFacet: [{
|
2050
|
-
type: ContentChild,
|
2051
|
-
args: [Footer]
|
2052
|
-
}], itemTemplate: [{
|
2053
|
-
type: ContentChild,
|
2054
|
-
args: ['item', { descendants: false }]
|
2055
|
-
}], groupTemplate: [{
|
2056
|
-
type: ContentChild,
|
2057
|
-
args: ['group', { descendants: false }]
|
2058
|
-
}], headerTemplate: [{
|
2059
|
-
type: ContentChild,
|
2060
|
-
args: ['header', { descendants: false }]
|
2061
|
-
}], filterTemplate: [{
|
2062
|
-
type: ContentChild,
|
2063
|
-
args: ['filter', { descendants: false }]
|
2064
|
-
}], footerTemplate: [{
|
2065
|
-
type: ContentChild,
|
2066
|
-
args: ['footer', { descendants: false }]
|
2067
|
-
}], emptyFilterTemplate: [{
|
2068
|
-
type: ContentChild,
|
2069
|
-
args: ['emptyfilter', { descendants: false }]
|
2070
|
-
}], emptyTemplate: [{
|
2071
|
-
type: ContentChild,
|
2072
|
-
args: ['empty', { descendants: false }]
|
2073
|
-
}], filterIconTemplate: [{
|
2074
|
-
type: ContentChild,
|
2075
|
-
args: ['filtericon', { descendants: false }]
|
2076
|
-
}], checkIconTemplate: [{
|
2077
|
-
type: ContentChild,
|
2078
|
-
args: ['checkicon', { descendants: false }]
|
2079
|
-
}], checkmarkTemplate: [{
|
2080
|
-
type: ContentChild,
|
2081
|
-
args: ['checkmark', { descendants: false }]
|
2082
|
-
}], loaderTemplate: [{
|
2083
|
-
type: ContentChild,
|
2084
|
-
args: ['loader', { descendants: false }]
|
2085
|
-
}], templates: [{
|
2086
|
-
type: ContentChildren,
|
2087
|
-
args: [PrimeTemplate]
|
2088
|
-
}] }); })();
|
2089
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(Listbox, { className: "Listbox" }); })();
|
2090
|
-
export class ListboxModule {
|
2091
|
-
static ɵfac = function ListboxModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ListboxModule)(); };
|
2092
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: ListboxModule });
|
2093
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Listbox, SharedModule, SharedModule] });
|
2094
|
-
}
|
2095
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListboxModule, [{
|
2096
|
-
type: NgModule,
|
2097
|
-
args: [{
|
2098
|
-
imports: [Listbox, SharedModule],
|
2099
|
-
exports: [Listbox, SharedModule]
|
2100
|
-
}]
|
2101
|
-
}], null, null); })();
|
2102
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ListboxModule, { imports: [Listbox, SharedModule], exports: [Listbox, SharedModule] }); })();
|
2103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXN0Ym94L2xpc3Rib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLGVBQWUsRUFHZixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEssT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBbUIsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixD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TyxFQXV5Q0csWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZXF1YWxzLCBmaW5kTGFzdEluZGV4LCBmaW5kU2luZ2xlLCBmb2N1cywgZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50LCBpc0VtcHR5LCBpc05vdEVtcHR5LCBpc1ByaW50YWJsZUNoYXJhY3RlciwgcmVzb2x2ZUZpZWxkRGF0YSwgdXVpZCB9IGZyb20gJ0BwcmltZXVpeC91dGlscyc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlLCBGb290ZXIsIEhlYWRlciwgUHJpbWVUZW1wbGF0ZSwgU2Nyb2xsZXJPcHRpb25zLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAncHJpbWVuZy9iYXNlY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XG5pbXBvcnQgeyBJY29uRmllbGQgfSBmcm9tICdwcmltZW5nL2ljb25maWVsZCc7XG5pbXBvcnQgeyBCbGFua0ljb24sIENoZWNrSWNvbiwgU2VhcmNoSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMnO1xuaW1wb3J0IHsgSW5wdXRJY29uIH0gZnJvbSAncHJpbWVuZy9pbnB1dGljb24nO1xuaW1wb3J0IHsgSW5wdXRUZXh0IH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgUmlwcGxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgU2Nyb2xsZXIsIFNjcm9sbGVyTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvc2Nyb2xsZXInO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaXN0Ym94Q2hhbmdlRXZlbnQsIExpc3Rib3hDbGlja0V2ZW50LCBMaXN0Ym94RG91YmxlQ2xpY2tFdmVudCwgTGlzdGJveEZpbHRlckV2ZW50LCBMaXN0Ym94RmlsdGVyT3B0aW9ucywgTGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50IH0gZnJvbSAnLi9saXN0Ym94LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaXN0Qm94U3R5bGUgfSBmcm9tICcuL3N0eWxlL2xpc3Rib3hzdHlsZSc7XG5cbmV4cG9ydCBjb25zdCBMSVNUQk9YX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTGlzdGJveCksXG4gICAgbXVsdGk6IHRydWVcbn07XG4vKipcbiAqIExpc3RCb3ggaXMgdXNlZCB0byBzZWxlY3Qgb25lIG9yIG1vcmUgdmFsdWVzIGZyb20gYSBsaXN0IG9mIGl0ZW1zLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWxpc3Rib3gsIHAtbGlzdEJveCwgcC1saXN0LWJveCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSaXBwbGUsIFNjcm9sbGVyLCBJbnB1dEljb24sIFNlYXJjaEljb24sIENoZWNrYm94LCBDaGVja0ljb24sIEljb25GaWVsZCwgSW5wdXRUZXh0LCBCbGFua0ljb24sIEZvcm1zTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiaWRcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAoZm9jdXNvdXQpPVwib25Gb2N1c291dCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICNmaXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnRcbiAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGUgcC1oaWRkZW4tZm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiIWRpc2FibGVkID8gdGFiaW5kZXggOiAtMVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRmlyc3RIaWRkZW5Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXAtaGlkZGVuLWZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWxpc3Rib3gtaGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJGYWNldCB8fCBoZWFkZXJUZW1wbGF0ZSB8fCBfaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGUgfHwgX2hlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWxWYWx1ZSgpLCBvcHRpb25zOiB2aXNpYmxlT3B0aW9ucygpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbGlzdGJveC1oZWFkZXJcIiAqbmdJZj1cIihjaGVja2JveCAmJiBtdWx0aXBsZSAmJiBzaG93VG9nZ2xlQWxsKSB8fCBmaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2hlY2tib3ggJiYgbXVsdGlwbGUgJiYgc2hvd1RvZ2dsZUFsbFwiIGNsYXNzPVwicC1jaGVja2JveCBwLWNvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsgJ3AtY2hlY2tib3gtZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCIgKGNsaWNrKT1cIm9uVG9nZ2xlQWxsKCRldmVudClcIiAoa2V5ZG93bik9XCJvbkhlYWRlckNoZWNrYm94S2V5RG93bigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCIgW2F0dHIuZGF0YS1wLWhpZGRlbi1hY2Nlc3NpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAjaGVhZGVyY2hrYm94IHR5cGU9XCJjaGVja2JveFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiBbYXR0ci5jaGVja2VkXT1cImFsbFNlbGVjdGVkKClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoZm9jdXMpPVwib25IZWFkZXJDaGVja2JveEZvY3VzKCRldmVudClcIiAoYmx1cik9XCJvbkhlYWRlckNoZWNrYm94Qmx1cigpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b2dnbGVBbGxBcmlhTGFiZWxcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tib3ggJiYgbXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtbGlzdGJveC1vcHRpb24tY2hlY2staWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwiY29uZmlnLmlucHV0U3R5bGUoKSA9PT0gJ2ZpbGxlZCcgPyAnZmlsbGVkJyA6ICdvdXRsaW5lZCcgfHwgY29uZmlnLmlucHV0VmFyaWFudCgpID09PSAnZmlsbGVkJyA/ICdmaWxsZWQnIDogJ291dGxpbmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tJY29uVGVtcGxhdGUgfHwgX2NoZWNrSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGVja0ljb25UZW1wbGF0ZSB8fCBfY2hlY2tJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBhbGxTZWxlY3RlZCgpIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJUZW1wbGF0ZSB8fCBfZmlsdGVyVGVtcGxhdGU7IGVsc2UgYnVpbHRJbkZpbHRlckVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclRlbXBsYXRlIHx8IF9maWx0ZXJUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb25zOiBmaWx0ZXJPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1aWx0SW5GaWx0ZXJFbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1saXN0Ym94LWZpbHRlci1jb250YWluZXJcIiAqbmdJZj1cImZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtaWNvbmZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1saXN0Ym94LWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJzZWFyY2hib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX2ZpbHRlclZhbHVlKCkgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwiaWQgKyAnX2xpc3QnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRPcHRpb25JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImZpbHRlclBsYWNlSG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhRmlsdGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiIWRpc2FibGVkICYmICFmb2N1c2VkID8gdGFiaW5kZXggOiAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25GaWx0ZXJLZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25GaWx0ZXJGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25GaWx0ZXJCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXRpY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiAqbmdJZj1cIiFmaWx0ZXJJY29uVGVtcGxhdGUgJiYgIV9maWx0ZXJJY29uVGVtcGxhdGVcIiBbc3R5bGVDbGFzc109XCIncC1saXN0Ym94LWZpbHRlci1pY29uJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlckljb25UZW1wbGF0ZSB8fCBfZmlsdGVySWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWxpc3Rib3gtZmlsdGVyLWljb25cIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJJY29uVGVtcGxhdGUgfHwgX2ZpbHRlckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXRpY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWljb25maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJzdGF0dXNcIiBhdHRyLmFyaWEtbGl2ZT1cInBvbGl0ZVwiIGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiIFthdHRyLmRhdGEtcC1oaWRkZW4tYWNjZXNzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXJSZXN1bHRNZXNzYWdlVGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCIncC1saXN0Ym94LWxpc3QtY29udGFpbmVyJ1wiICNjb250YWluZXIgW25nU3R5bGVdPVwibGlzdFN0eWxlXCIgW2NsYXNzXT1cImxpc3RTdHlsZUNsYXNzXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwidmlydHVhbFNjcm9sbCA/ICdhdXRvJyA6IHNjcm9sbEhlaWdodCB8fCAnYXV0bydcIiBbYXR0ci50YWJpbmRleF09XCIhZGlzYWJsZWQgJiYgJzAnXCI+XG4gICAgICAgICAgICAgICAgPHAtc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgI3Njcm9sbGVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJ2aXNpYmxlT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxIZWlnaHQgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b1NpemVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYXp5XT1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ2aXJ0dWFsU2Nyb2xsT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNjcm9sbGVyVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb250ZW50IGxldC1pdGVtcyBsZXQtc2Nyb2xsZXJPcHRpb25zPVwib3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1aWxkSW5JdGVtczsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW1zLCBvcHRpb25zOiBzY3JvbGxlck9wdGlvbnMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGxvYWRlclRlbXBsYXRlIHx8IF9sb2FkZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXIgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGVyVGVtcGxhdGUgfHwgX2xvYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9wLXNjcm9sbGVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlzaWJsZU9wdGlvbnMoKSwgb3B0aW9uczoge30gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidWlsZEluSXRlbXMgbGV0LWl0ZW1zIGxldC1zY3JvbGxlck9wdGlvbnM9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgICAgICAgICAgI2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1saXN0Ym94LWxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2Nyb2xsZXJPcHRpb25zLmNvbnRlbnRTdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJzY3JvbGxlck9wdGlvbnMuY29udGVudFN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJmb2N1c2VkID8gZm9jdXNlZE9wdGlvbklkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTGlzdEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25MaXN0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTGlzdEtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0aW9uIFtuZ0Zvck9mXT1cIml0ZW1zXCIgbGV0LWk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wdGlvbkdyb3VwKG9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFthdHRyLmlkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiIGNsYXNzPVwicC1saXN0Ym94LW9wdGlvbi1ncm91cFwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cFRlbXBsYXRlICYmICFfZ3JvdXBUZW1wbGF0ZVwiPnt7IGdldE9wdGlvbkdyb3VwTGFiZWwob3B0aW9uLm9wdGlvbkdyb3VwKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlIHx8IF9ncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uLm9wdGlvbkdyb3VwIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzT3B0aW9uR3JvdXAob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1saXN0Ym94LW9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsZXJPcHRpb25zLml0ZW1TaXplICsgJ3B4JyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1saXN0Ym94LW9wdGlvbi1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQob3B0aW9uKSAmJiBoaWdobGlnaHRPblNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1mb2N1cyc6IGZvY3VzZWRPcHRpb25JbmRleCgpID09PSBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWRpc2FibGVkJzogaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0T3B0aW9uTGFiZWwob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiYXJpYVNldFNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYVBvc0luc2V0XT1cImdldEFyaWFQb3NJbnNldChnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PcHRpb25TZWxlY3QoJGV2ZW50LCBvcHRpb24sIGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucykpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbk9wdGlvbkRvdWJsZUNsaWNrKCRldmVudCwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uT3B0aW9uTW91c2VEb3duKCRldmVudCwgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25PcHRpb25Nb3VzZUVudGVyKCRldmVudCwgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uT3B0aW9uVG91Y2hFbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGVja2JveCAmJiBtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtbGlzdGJveC1vcHRpb24tY2hlY2staWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYW50XT1cImNvbmZpZy5pbnB1dFN0eWxlKCkgPT09ICdmaWxsZWQnID8gJ2ZpbGxlZCcgOiAnb3V0bGluZWQnIHx8IGNvbmZpZy5pbnB1dFZhcmlhbnQoKSA9PT0gJ2ZpbGxlZCcgPyAnZmlsbGVkJyA6ICdvdXRsaW5lZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrSWNvblRlbXBsYXRlIHx8IF9jaGVja0ljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGVja0ljb25UZW1wbGF0ZSB8fCBfY2hlY2tJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpc1NlbGVjdGVkKG9wdGlvbikgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2ttYXJrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjaGVja21hcmtUZW1wbGF0ZSAmJiAhX2NoZWNrbWFya1RlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbGFua0ljb24gKm5nSWY9XCIhaXNTZWxlY3RlZChvcHRpb24pXCIgc3R5bGVDbGFzcz1cInAtbGlzdGJveC1vcHRpb24tY2hlY2staWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja0ljb24gKm5nSWY9XCJpc1NlbGVjdGVkKG9wdGlvbilcIiBzdHlsZUNsYXNzPVwicC1saXN0Ym94LW9wdGlvbi1jaGVjay1pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hlY2ttYXJrVGVtcGxhdGUgfHwgX2NoZWNrbWFya1RlbXBsYXRlOyBjb250ZXh0OiB7IGltcGxpY2l0OiBpc1NlbGVjdGVkKG9wdGlvbikgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtVGVtcGxhdGUgJiYgIV9pdGVtVGVtcGxhdGVcIj57eyBnZXRPcHRpb25MYWJlbChvcHRpb24pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSB8fCBfaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNGaWx0ZXIoKSAmJiBpc0VtcHR5KClcIiBjbGFzcz1cInAtbGlzdGJveC1lbXB0eS1tZXNzYWdlXCIgcm9sZT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWVtcHR5RmlsdGVyVGVtcGxhdGUgJiYgIV9lbXB0eUZpbHRlclRlbXBsYXRlICYmICFfZW1wdHlUZW1wbGF0ZSAmJiAhZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eUZpbHRlck1lc3NhZ2VUZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5RmlsdGVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJUZW1wbGF0ZSB8fCBfZW1wdHlGaWx0ZXJUZW1wbGF0ZSB8fCBfZW1wdHlUZW1wbGF0ZSB8fCBlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFoYXNGaWx0ZXIoKSAmJiBpc0VtcHR5KClcIiBjbGFzcz1cInAtbGlzdGJveC1lbXB0eS1tZXNzYWdlXCIgcm9sZT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWVtcHR5VGVtcGxhdGUgJiYgIV9lbXB0eVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVtcHR5TWVzc2FnZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNlbXB0eSAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGUgfHwgX2VtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWxpc3Rib3gtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZSB8fCBfZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGUgfHwgX2Zvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWxWYWx1ZSgpLCBvcHRpb25zOiB2aXNpYmxlT3B0aW9ucygpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0VtcHR5KClcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRNZXNzYWdlVGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAjbGFzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnRcbiAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGUgcC1oaWRkZW4tZm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiIWRpc2FibGVkID8gdGFiaW5kZXggOiAtMVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTGFzdEhpZGRlbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1oaWRkZW4tZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW0xJU1RCT1hfVkFMVUVfQUNDRVNTT1IsIExpc3RCb3hTdHlsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Ym94IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIHRoZSBzZWFyY2ggaXMgYWN0aXZlLiBEZWZhdWx0cyB0byBnbG9iYWwgdmFsdWUgaW4gaTE4biB0cmFuc2xhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgJ3swfSByZXN1bHRzIGFyZSBhdmFpbGFibGUnXG4gICAgICovXG4gICAgQElucHV0KCkgc2VhcmNoTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIGZpbHRlcmluZyBkb2VzIG5vdCByZXR1cm4gYW55IHJlc3VsdHMuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSAnTm8gc2VsZWN0ZWQgaXRlbSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlbXB0eVNlbGVjdGlvbk1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUZXh0IHRvIGJlIGRpc3BsYXllZCBpbiBoaWRkZW4gYWNjZXNzaWJsZSBmaWVsZCB3aGVuIG9wdGlvbnMgYXJlIHNlbGVjdGVkLiBEZWZhdWx0cyB0byBnbG9iYWwgdmFsdWUgaW4gaTE4biB0cmFuc2xhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgJ3swfSBpdGVtcyBzZWxlY3RlZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZWxlY3Rpb25NZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb2N1cyBvbiB0aGUgZmlyc3QgdmlzaWJsZSBvciBzZWxlY3RlZCBlbGVtZW50IHdoZW4gdGhlIG92ZXJsYXkgcGFuZWwgaXMgc2hvd24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9PcHRpb25Gb2N1czogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgaW5wdXQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCB0aGUgZm9jdXNlZCBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNlbGVjdE9uRm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBzZWFyY2hpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWFyY2hMb2NhbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCB0aGUgaG92ZXJlZCBvcHRpb24gd2lsbCBiZSBmb2N1c2VkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmb2N1c09uSG92ZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIGZpbHRlcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRmllbGRzIHVzZWQgd2hlbiBmaWx0ZXJpbmcgdGhlIG9wdGlvbnMsIGRlZmF1bHRzIHRvIG9wdGlvbkxhYmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckZpZWxkczogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBpZiBkYXRhIGlzIGxvYWRlZCBhbmQgaW50ZXJhY3RlZCB3aXRoIGluIGxhenkgbWFubmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBsYXp5OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZGF0YSBzaG91bGQgYmUgbG9hZGVkIG9uIGRlbWFuZCBkdXJpbmcgc2Nyb2xsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB2aXJ0dWFsU2Nyb2xsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEhlaWdodCBvZiBhbiBpdGVtIGluIHRoZSBsaXN0IGZvciBWaXJ0dWFsU2Nyb2xsaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gdXNlIHRoZSBzY3JvbGxlciBmZWF0dXJlLiBUaGUgcHJvcGVydGllcyBvZiBzY3JvbGxlciBjb21wb25lbnQgY2FuIGJlIHVzZWQgbGlrZSBhbiBvYmplY3QgaW4gaXQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmlydHVhbFNjcm9sbE9wdGlvbnM6IFNjcm9sbGVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0IGluIHBpeGVscywgYSBzY3JvbGxiYXIgaXMgZGVmaW5lZCBpZiBoZWlnaHQgb2YgbGlzdCBleGNlZWRzIHRoaXMgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnMTRyZW0nO1xuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IDA7XG4gICAgLyoqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGFsbG93cyBzZWxlY3RpbmcgbXVsdGlwbGUgdmFsdWVzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtdWx0aXBsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29udGFpbmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsaXN0U3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsaXN0U3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGVsZW1lbnQgdmFsdWUgY2Fubm90IGJlIGNoYW5nZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHNwZWNpZmllZCwgYWxsb3dzIHNlbGVjdGluZyBpdGVtcyB3aXRoIGNoZWNrYm94ZXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGRpc3BsYXlzIGEgZmlsdGVyIGlucHV0IGF0IGhlYWRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBmaWx0ZXJpbmcgaXMgZW5hYmxlZCwgZmlsdGVyQnkgZGVjaWRlcyB3aGljaCBmaWVsZCBvciBmaWVsZHMgKGNvbW1hIHNlcGFyYXRlZCkgdG8gc2VhcmNoIGFnYWluc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZmlsdGVyQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgaXRlbXMgYXJlIGZpbHRlcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogJ2NvbnRhaW5zJyB8ICdzdGFydHNXaXRoJyB8ICdlbmRzV2l0aCcgfCAnZXF1YWxzJyB8ICdub3RFcXVhbHMnIHwgJ2luJyB8ICdsdCcgfCAnbHRlJyB8ICdndCcgfCAnZ3RlJyA9ICdjb250YWlucyc7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBmaWx0ZXJpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IG11bHRpcGxlIGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCwgd2hlbiB0cnVlIG1ldGFLZXkgbmVlZHMgdG8gYmUgcHJlc3NlZCB0byBzZWxlY3Qgb3IgdW5zZWxlY3QgYW4gaXRlbSBhbmQgd2hlbiBzZXQgdG8gZmFsc2Ugc2VsZWN0aW9uIG9mIGVhY2ggaXRlbSBjYW4gYmUgdG9nZ2xlZCBpbmRpdmlkdWFsbHkuIE9uIHRvdWNoIGVuYWJsZWQgZGV2aWNlcywgbWV0YUtleVNlbGVjdGlvbiBpcyB0dXJuZWQgb2ZmIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1ldGFLZXlTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBBIHByb3BlcnR5IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgdmFsdWUgaW4gb3B0aW9ucy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBoZWFkZXIgY2hlY2tib3ggaXMgc2hvd24gaW4gbXVsdGlwbGUgbW9kZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd1RvZ2dsZUFsbDogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3B0aW9ucyBmaWVsZCBvZiBhbiBvcHRpb24gZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBDaGlsZHJlbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2l0ZW1zJztcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBsYWJlbCBmaWVsZCBvZiBhbiBvcHRpb24gZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2xhYmVsJztcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBkaXNhYmxlZCBmaWVsZCBvZiBhbiBvcHRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uRGlzYWJsZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBmaWx0ZXIgaW5wdXQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUZpbHRlckxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBwbGFjZWhvbGRlciBvZiB0aGUgZmlsdGVyIGlucHV0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlclBsYWNlSG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gZmlsdGVyaW5nIGRvZXMgbm90IHJldHVybiBhbnkgcmVzdWx0cy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlbXB0eUZpbHRlck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGVyZSBpcyBubyBkYXRhLiBEZWZhdWx0cyB0byBnbG9iYWwgdmFsdWUgaW4gaTE4biB0cmFuc2xhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVtcHR5TWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSBvcHRpb25zIGFzIGdyb3VwZWQgd2hlbiBuZXN0ZWQgb3B0aW9ucyBhcmUgcHJvdmlkZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGdyb3VwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIHNlbGVjdGl0ZW1zIHRvIGRpc3BsYXkgYXMgdGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBvcHRpb25zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMoKTtcbiAgICB9XG4gICAgc2V0IG9wdGlvbnModmFsOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldCh2YWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHNwZWNpZmllZCwgZmlsdGVyIGRpc3BsYXlzIHdpdGggdGhpcyB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgZmlsdGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclZhbHVlKCk7XG4gICAgfVxuICAgIHNldCBmaWx0ZXJWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9maWx0ZXJWYWx1ZS5zZXQodmFsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciBhbGwgZGF0YSBpcyBzZWxlY3RlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgc2VsZWN0QWxsKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdEFsbDtcbiAgICB9XG4gICAgc2V0IHNlbGVjdEFsbCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0QWxsID0gdmFsdWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheXMgcm93cyB3aXRoIGFsdGVybmF0aW5nIGNvbG9ycy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0cmlwZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBzZWxlY3RlZCBvcHRpb24gd2lsbCBiZSBhZGQgaGlnaGxpZ2h0IGNsYXNzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoaWdobGlnaHRPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgc2VsZWN0ZWQgb3B0aW9uIHdpbGwgYmUgc2hvd24gd2l0aCBhIGNoZWNrIG1hcmsuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjaGVja21hcms6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveENoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TGlzdGJveENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdGJveENoYW5nZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIG9wdGlvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveENsaWNrRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGNsaWNrIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TGlzdGJveENsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0Ym94Q2xpY2tFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBvcHRpb24gaXMgZG91YmxlIGNsaWNrZWQuXG4gICAgICogQHBhcmFtIHtMaXN0Ym94RG91YmxlQ2xpY2tFdmVudH0gZXZlbnQgLSBDdXN0b20gZG91YmxlIGNsaWNrIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkRibENsaWNrOiBFdmVudEVtaXR0ZXI8TGlzdGJveERvdWJsZUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0Ym94RG91YmxlQ2xpY2tFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkYXRhIGlzIGZpbHRlcmVkLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveEZpbHRlckV2ZW50fSBldmVudCAtIEN1c3RvbSBmaWx0ZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8TGlzdGJveEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdGJveEZpbHRlckV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGNvbXBvbmVudCByZWNlaXZlcyBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0ZvY3VzRXZlbnR9IGV2ZW50IC0gRm9jdXMgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBjb21wb25lbnQgbG9zZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtGb2N1c0V2ZW50fSBldmVudCAtIEJsdXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGFsbCBkYXRhIGlzIHNlbGVjdGVkLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIG9uIGxhenkgbG9hZC5cbiAgICAgKiBAcGFyYW0ge1Njcm9sbGVyTGF6eUxvYWRFdmVudH0gZXZlbnQgLSBTY3JvbGxlciBsYXp5IGxvYWQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTGF6eUxvYWQ6IEV2ZW50RW1pdHRlcjxTY3JvbGxlckxhenlMb2FkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY3JvbGxlckxhenlMb2FkRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdoZWFkZXJjaGtib3gnKSBoZWFkZXJDaGVja2JveFZpZXdDaGlsZDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdmaWx0ZXInKSBmaWx0ZXJWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnbGFzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQnKSBsYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdmaXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQnKSBmaXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsZXInKSBzY3JvbGxlcjogTnVsbGFibGU8U2Nyb2xsZXI+O1xuXG4gICAgQFZpZXdDaGlsZCgnbGlzdCcpIGxpc3RWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBDb250ZW50Q2hpbGQoSGVhZGVyKSBoZWFkZXJGYWNldDogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBAQ29udGVudENoaWxkKEZvb3RlcikgZm9vdGVyRmFjZXQ6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGl0ZW0gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZ3JvdXAgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWFkZXIgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGZpbHRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVyJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZm9vdGVyIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdmb290ZXInLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBmaWx0ZXIgbWVzc2FnZSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHlmaWx0ZXInLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBlbXB0eUZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGVtcHR5IG1lc3NhZ2UgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5JywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBmaWx0ZXIgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVyaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGZpbHRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBjaGVjayBpY29uIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdjaGVja2ljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBjaGVja0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBjaGVja21hcmsgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnY2hlY2ttYXJrJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgY2hlY2ttYXJrVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbG9hZGVyIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdsb2FkZXInLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBsb2FkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+O1xuXG4gICAgX2l0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9ncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2hlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2ZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2Zvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2VtcHR5RmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9maWx0ZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY2hlY2tJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY2hlY2ttYXJrVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfbG9hZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgX2ZpbHRlclZhbHVlID0gc2lnbmFsPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwpO1xuXG4gICAgcHVibGljIF9maWx0ZXJlZE9wdGlvbnM6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIGZpbHRlck9wdGlvbnM6IExpc3Rib3hGaWx0ZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGZpbHRlcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHB1YmxpYyB2YWx1ZTogYW55IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgcHVibGljIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgcHVibGljIG9wdGlvblRvdWNoZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgcHVibGljIGZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHB1YmxpYyBoZWFkZXJDaGVja2JveEZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBOdWxsYWJsZTxTdWJzY3JpcHRpb24+O1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIHNjcm9sbGVyVGFiSW5kZXg6IHN0cmluZyA9ICcwJztcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChMaXN0Qm94U3R5bGUpO1xuXG4gICAgZ2V0IGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtbGlzdGJveCBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1saXN0Ym94LXN0cmlwZWQnOiB0aGlzLnN0cmlwZWQsXG4gICAgICAgICAgICAncC1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZE9wdGlvbklkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyBgJHt0aGlzLmlkfV8ke3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCl9YCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlclJlc3VsdE1lc3NhZ2VUZXh0KCkge1xuICAgICAgICByZXR1cm4gaXNOb3RFbXB0eSh0aGlzLnZpc2libGVPcHRpb25zKCkpID8gdGhpcy5maWx0ZXJNZXNzYWdlVGV4dC5yZXBsYWNlQWxsKCd7MH0nLCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoKSA6IHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlVGV4dDtcbiAgICB9XG5cbiAgICBnZXQgZmlsdGVyTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlck1lc3NhZ2UgfHwgdGhpcy5jb25maWcudHJhbnNsYXRpb24uc2VhcmNoTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgc2VhcmNoTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaE1lc3NhZ2UgfHwgdGhpcy5jb25maWcudHJhbnNsYXRpb24uc2VhcmNoTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlGaWx0ZXJNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlIHx8IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmVtcHR5U2VhcmNoTWVzc2FnZSB8fCB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5lbXB0eUZpbHRlck1lc3NhZ2UgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGlvbk1lc3NhZ2VUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25NZXNzYWdlIHx8IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLnNlbGVjdGlvbk1lc3NhZ2UgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5U2VsZWN0aW9uTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5U2VsZWN0aW9uTWVzc2FnZSB8fCB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5lbXB0eVNlbGVjdGlvbk1lc3NhZ2UgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgPyB0aGlzLnNlbGVjdGlvbk1lc3NhZ2VUZXh0LnJlcGxhY2VBbGwoJ3swfScsIHRoaXMubXVsdGlwbGUgPyB0aGlzLm1vZGVsVmFsdWUoKS5sZW5ndGggOiAnMScpIDogdGhpcy5lbXB0eVNlbGVjdGlvbk1lc3NhZ2VUZXh0O1xuICAgIH1cblxuICAgIGdldCBhcmlhU2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maWx0ZXIoKG9wdGlvbikgPT4gIXRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0IHZpcnR1YWxTY3JvbGxlckRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudmlydHVhbFNjcm9sbDtcbiAgICB9XG5cbiAgICBnZXQgc2VhcmNoRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHMgfHwgW3RoaXMub3B0aW9uTGFiZWxdO1xuICAgIH1cblxuICAgIGdldCB0b2dnbGVBbGxBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYVt0aGlzLmFsbFNlbGVjdGVkKCkgPyAnc2VsZWN0QWxsJyA6ICd1bnNlbGVjdEFsbCddIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzZWFyY2hUaW1lb3V0OiBhbnk7XG5cbiAgICBfc2VsZWN0QWxsOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XG5cbiAgICBfb3B0aW9ucyA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgc3RhcnRSYW5nZUluZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuXG4gICAgZm9jdXNlZE9wdGlvbkluZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuXG4gICAgbW9kZWxWYWx1ZSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgdmlzaWJsZU9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdyb3VwID8gdGhpcy5mbGF0T3B0aW9ucyh0aGlzLl9vcHRpb25zKCkpIDogdGhpcy5fb3B0aW9ucygpIHx8IFtdO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyVmFsdWUoKSA/IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIob3B0aW9ucywgdGhpcy5zZWFyY2hGaWVsZHMsIHRoaXMuX2ZpbHRlclZhbHVlKCksIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSkgOiBvcHRpb25zO1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgdXVpZCgncG5faWRfJyk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmF1dG9VcGRhdGVNb2RlbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMub25GaWx0ZXJDaGFuZ2UodmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlc2V0OiAoKSA9PiB0aGlzLnJlc2V0RmlsdGVyKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdncm91cCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHlmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eUZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmaWx0ZXJpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVySWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2ljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0ljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2ttYXJrJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hlY2ttYXJrVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tb2RlbFZhbHVlLnNldCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZmxhdE9wdGlvbnMob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gKG9wdGlvbnMgfHwgW10pLnJlZHVjZSgocmVzdWx0LCBvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IG9wdGlvbkdyb3VwOiBvcHRpb24sIGdyb3VwOiB0cnVlLCBpbmRleCB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXBDaGlsZHJlbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb24pO1xuXG4gICAgICAgICAgICBvcHRpb25Hcm91cENoaWxkcmVuICYmIG9wdGlvbkdyb3VwQ2hpbGRyZW4uZm9yRWFjaCgobykgPT4gcmVzdWx0LnB1c2gobykpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgYXV0b1VwZGF0ZU1vZGVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RPbkZvY3VzICYmIHRoaXMuYXV0b09wdGlvbkZvY3VzICYmICF0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QobnVsbCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBtb2RlbCB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudD8pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlKCkuZmlsdGVyKCh2YWwpID0+ICFlcXVhbHModmFsLCB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbiksIHRoaXMuZXF1YWxpdHlLZXkoKSkpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0KGV2ZW50LCBvcHRpb24sIGluZGV4ID0gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQgJiYgdGhpcy5vbkNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgb3B0aW9uLCB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcblxuICAgICAgICB0aGlzLm11bHRpcGxlID8gdGhpcy5vbk9wdGlvblNlbGVjdE11bHRpcGxlKGV2ZW50LCBvcHRpb24pIDogdGhpcy5vbk9wdGlvblNlbGVjdFNpbmdsZShldmVudCwgb3B0aW9uKTtcbiAgICAgICAgdGhpcy5vcHRpb25Ub3VjaGVkID0gZmFsc2U7XG4gICAgICAgIGluZGV4ICE9PSAtMSAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoaW5kZXgpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0TXVsdGlwbGUoZXZlbnQsIG9wdGlvbikge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcbiAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1ldGFTZWxlY3Rpb24gPSB0aGlzLm9wdGlvblRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbWV0YUtleSA/IHRoaXMucmVtb3ZlT3B0aW9uKG9wdGlvbikgOiBbdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtZXRhS2V5ID8gdGhpcy5tb2RlbFZhbHVlKCkgfHwgW10gOiBbXTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFsuLi52YWx1ZSwgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gc2VsZWN0ZWQgPyB0aGlzLnJlbW92ZU9wdGlvbihvcHRpb24pIDogWy4uLih0aGlzLm1vZGVsVmFsdWUoKSB8fCBbXSksIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudCk7XG4gICAgfVxuXG4gICAgb25PcHRpb25TZWxlY3RTaW5nbGUoZXZlbnQsIG9wdGlvbikge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcbiAgICAgICAgbGV0IHZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWV0YVNlbGVjdGlvbiA9IHRoaXMub3B0aW9uVG91Y2hlZCA/IGZhbHNlIDogdGhpcy5tZXRhS2V5U2VsZWN0aW9uO1xuXG4gICAgICAgIGlmIChtZXRhU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gc2VsZWN0ZWQgPyBudWxsIDogdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0UmFuZ2UoZXZlbnQsIHN0YXJ0ID0gLTEsIGVuZCA9IC0xKSB7XG4gICAgICAgIHN0YXJ0ID09PSAtMSAmJiAoc3RhcnQgPSB0aGlzLmZpbmROZWFyZXN0U2VsZWN0ZWRPcHRpb25JbmRleChlbmQsIHRydWUpKTtcbiAgICAgICAgZW5kID09PSAtMSAmJiAoZW5kID0gdGhpcy5maW5kTmVhcmVzdFNlbGVjdGVkT3B0aW9uSW5kZXgoc3RhcnQpKTtcblxuICAgICAgICBpZiAoc3RhcnQgIT09IC0xICYmIGVuZCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSBNYXRoLm1pbihzdGFydCwgZW5kKTtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlRW5kID0gTWF0aC5tYXgoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgIC5zbGljZShyYW5nZVN0YXJ0LCByYW5nZUVuZCArIDEpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSlcbiAgICAgICAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG9nZ2xlQWxsKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb2N1cyh0aGlzLmhlYWRlckNoZWNrYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFsbENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBjaGVja2VkOiAhdGhpcy5hbGxTZWxlY3RlZCgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5hbGxTZWxlY3RlZCgpXG4gICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgIDogdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGFsbFNlbGVjdGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RBbGwgIT09IG51bGwgPyB0aGlzLnNlbGVjdEFsbCA6IGlzTm90RW1wdHkodGhpcy52aXNpYmxlT3B0aW9ucygpKSAmJiB0aGlzLnZpc2libGVPcHRpb25zKCkuZXZlcnkoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbkdyb3VwKG9wdGlvbikgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfHwgdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uVG91Y2hFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wdGlvblRvdWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uT3B0aW9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBpbmRleCk7XG4gICAgfVxuXG4gICAgb25PcHRpb25Nb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3B0aW9uRG91YmxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIG9wdGlvbjogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25EYmxDbGljay5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkZpcnN0SGlkZGVuRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgZm9jdXModGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZUVsID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJzpub3QoW2RhdGEtcC1oaWRkZW4tZm9jdXNhYmxlPVwidHJ1ZVwiXSknKTtcbiAgICAgICAgdGhpcy5sYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gaXNFbXB0eShmaXJzdEZvY3VzYWJsZUVsKSA/ICctMScgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICBvbkxhc3RIaWRkZW5Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcblxuICAgICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gdGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWwgPSA8YW55PmdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICc6bm90KC5wLWhpZGRlbi1mb2N1c2FibGUpJyk7XG5cbiAgICAgICAgICAgIGZvY3VzKGZpcnN0Rm9jdXNhYmxlRWwpO1xuICAgICAgICAgICAgdGhpcy5maXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvY3VzKHRoaXMuZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGFzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IC0xO1xuICAgIH1cblxuICAgIG9uRm9jdXNvdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkgJiYgdGhpcy5sYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudCAmJiB0aGlzLmZpcnN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5maXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMubGFzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAnMCc7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbGVyVGFiSW5kZXggPSAnMCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkxpc3RGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb2N1c2VkT3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgOiB0aGlzLmF1dG9PcHRpb25Gb2N1cyA/IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCkgOiAtMTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KGZvY3VzZWRPcHRpb25JbmRleCk7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gJy0xJztcbiAgICAgICAgdGhpcy5zY3JvbGxlclRhYkluZGV4ID0gJy0xJztcbiAgICB9XG5cbiAgICBvbkZpbHRlckZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAnLTEnO1xuICAgIH1cblxuICAgIG9uTGlzdEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkhlYWRlckNoZWNrYm94Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveEZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkhlYWRlckNoZWNrYm94Qmx1cigpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveEZvY3VzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveEtleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ub2dnbGVBbGwoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ub2dnbGVBbGwoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGVhZGVyQ2hlY2tib3hUYWJLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkhlYWRlckNoZWNrYm94VGFiS2V5RG93bihldmVudCkge1xuICAgICAgICBmb2N1cyh0aGlzLmxpc3RWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZT8udHJpbSgpO1xuICAgICAgICB0aGlzLl9maWx0ZXJWYWx1ZS5zZXQodmFsdWUpO1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VJbmRleC5zZXQoLTEpO1xuICAgICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgZmlsdGVyOiB0aGlzLl9maWx0ZXJWYWx1ZSgpIH0pO1xuXG4gICAgICAgICF0aGlzLnZpcnR1YWxTY3JvbGxlckRpc2FibGVkICYmIHRoaXMuc2Nyb2xsZXIuc2Nyb2xsVG9JbmRleCgwKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlckJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5zdGFydFJhbmdlSW5kZXguc2V0KC0xKTtcbiAgICB9XG5cbiAgICBvbkxpc3RLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ib21lS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW5kS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlRG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblBhZ2VVcEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ051bXBhZEVudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3BhY2VLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgICAgIC8vTk9PUFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTaGlmdExlZnQnOlxuICAgICAgICAgICAgY2FzZSAnU2hpZnRSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblNoaWZ0S2V5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQuY29kZSA9PT0gJ0tleUEnICYmIG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSwgZXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghbWV0YUtleSAmJiBpc1ByaW50YWJsZUNoYXJhY3RlcihldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoT3B0aW9ucyhldmVudCwgZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRmlsdGVyS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0xlZnRLZXkoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTaGlmdExlZnQnOlxuICAgICAgICAgICAgY2FzZSAnU2hpZnRSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblNoaWZ0S2V5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93RG93bktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xID8gdGhpcy5maW5kTmV4dE9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpIDogdGhpcy5maW5kRmlyc3RGb2N1c2VkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpLCBvcHRpb25JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xID8gdGhpcy5maW5kUHJldk9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpIDogdGhpcy5maW5kTGFzdEZvY3VzZWRPcHRpb25JbmRleCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0UmFuZ2UoZXZlbnQsIG9wdGlvbkluZGV4LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByZXNzZWRJbklucHV0VGV4dCA9IGZhbHNlKSB7XG4gICAgICAgIHByZXNzZWRJbklucHV0VGV4dCAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogS2V5Ym9hcmRFdmVudCwgcHJlc3NlZEluSW5wdXRUZXh0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHByZXNzZWRJbklucHV0VGV4dCkge1xuICAgICAgICAgICAgKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG4gICAgICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmRGaXJzdE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIGV2ZW50LnNoaWZ0S2V5ICYmIG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0UmFuZ2UoZXZlbnQsIG9wdGlvbkluZGV4LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIG9wdGlvbkluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByZXNzZWRJbklucHV0VGV4dDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChwcmVzc2VkSW5JbnB1dFRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHRhcmdldC52YWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShsZW4sIGxlbik7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG4gICAgICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmRMYXN0T3B0aW9uSW5kZXgoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQuc2hpZnRLZXkgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3RSYW5nZShldmVudCwgdGhpcy5zdGFydFJhbmdlSW5kZXgoKSwgb3B0aW9uSW5kZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblBhZ2VEb3duS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KDApO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZVVwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KHRoaXMudmlzaWJsZU9wdGlvbnMoKS5sZW5ndGggLSAxKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVudGVyS2V5KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQuc2hpZnRLZXkpIHRoaXMub25PcHRpb25TZWxlY3RSYW5nZShldmVudCwgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSk7XG4gICAgICAgICAgICBlbHNlIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNoaWZ0S2V5KCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkT3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpO1xuICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VJbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbkdyb3VwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4gPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4pIDogb3B0aW9uR3JvdXAuaXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBMYWJlbChvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwTGFiZWwgPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwTGFiZWwpIDogb3B0aW9uR3JvdXAgJiYgb3B0aW9uR3JvdXAubGFiZWwgIT09IHVuZGVmaW5lZCA/IG9wdGlvbkdyb3VwLmxhYmVsIDogb3B0aW9uR3JvdXA7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkxhYmVsID8gcmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uTGFiZWwpIDogb3B0aW9uLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbjtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25JbmRleChpbmRleCwgc2Nyb2xsZXJPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxTY3JvbGxlckRpc2FibGVkID8gaW5kZXggOiBzY3JvbGxlck9wdGlvbnMgJiYgc2Nyb2xsZXJPcHRpb25zLmdldEl0ZW1PcHRpb25zKGluZGV4KVsnaW5kZXgnXTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25WYWx1ZShvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IHJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvblZhbHVlKSA6ICF0aGlzLm9wdGlvbkxhYmVsICYmIG9wdGlvbiAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi52YWx1ZSA6IG9wdGlvbjtcbiAgICB9XG5cbiAgICBnZXRBcmlhUG9zSW5zZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMub3B0aW9uR3JvdXBMYWJlbFxuICAgICAgICAgICAgICAgID8gaW5kZXggLVxuICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbkdyb3VwKG9wdGlvbikpLmxlbmd0aFxuICAgICAgICAgICAgICAgIDogaW5kZXgpICsgMVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGhhc1NlbGVjdGVkT3B0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNOb3RFbXB0eSh0aGlzLm1vZGVsVmFsdWUoKSk7XG4gICAgfVxuXG4gICAgaXNPcHRpb25Hcm91cChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBMYWJlbCAmJiBvcHRpb24ub3B0aW9uR3JvdXAgJiYgb3B0aW9uLmdyb3VwO1xuICAgIH1cblxuICAgIGNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IGluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0T25Gb2N1cyAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVtpbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VhcmNoT3B0aW9ucyhldmVudCwgY2hhcikge1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gKHRoaXMuc2VhcmNoVmFsdWUgfHwgJycpICsgY2hhcjtcblxuICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSAtMTtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIG9wdGlvbkluZGV4ID0gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgLnNsaWNlKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpXG4gICAgICAgICAgICAgICAgLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uTWF0Y2hlZChvcHRpb24pKTtcbiAgICAgICAgICAgIG9wdGlvbkluZGV4ID1cbiAgICAgICAgICAgICAgICBvcHRpb25JbmRleCA9PT0gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbk1hdGNoZWQob3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25JbmRleCArIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbk1hdGNoZWQob3B0aW9uKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25JbmRleCA9PT0gLTEgJiYgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIG9wdGlvbkluZGV4ID0gdGhpcy5maW5kRmlyc3RGb2N1c2VkT3B0aW9uSW5kZXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG5cbiAgICBpc09wdGlvbk1hdGNoZWQob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSAmJiB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbikudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSkpO1xuICAgIH1cblxuICAgIHNjcm9sbEluVmlldyhpbmRleCA9IC0xKSB7XG4gICAgICAgIGNvbnN0IGlkID0gaW5kZXggIT09IC0xID8gYCR7dGhpcy5pZH1fJHtpbmRleH1gIDogdGhpcy5mb2N1c2VkT3B0aW9uSWQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaW5kU2luZ2xlKHRoaXMubGlzdFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCBgbGlbaWQ9XCIke2lkfVwiXWApO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICduZWFyZXN0JyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsZXJEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMuc2Nyb2xsZXIuc2Nyb2xsVG9JbmRleChpbmRleCAhPT0gLTEgPyBpbmRleCA6IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZEZpcnN0T3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBmaW5kTGFzdE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCksIChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RGb2N1c2VkT3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRGaXJzdFNlbGVjdGVkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRGaXJzdE9wdGlvbkluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0Rm9jdXNlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kTGFzdFNlbGVjdGVkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRMYXN0T3B0aW9uSW5kZXgoKSA6IHNlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgZmluZExhc3RTZWxlY3RlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpID8gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCksIChvcHRpb24pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGVkT3B0aW9uKG9wdGlvbikpIDogLTE7XG4gICAgfVxuXG4gICAgZmluZE5leHRPcHRpb25JbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uSW5kZXggPVxuICAgICAgICAgICAgaW5kZXggPCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKVxuICAgICAgICAgICAgICAgIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4ICsgaW5kZXggKyAxIDogaW5kZXg7XG4gICAgfVxuXG4gICAgZmluZE5leHRTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb25JbmRleCA9XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgJiYgaW5kZXggPCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGVkT3B0aW9uKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggKyBpbmRleCArIDEgOiAtMTtcbiAgICB9XG5cbiAgICBmaW5kUHJldlNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpICYmIGluZGV4ID4gMCA/IGZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlT3B0aW9ucygpLnNsaWNlKDAsIGluZGV4KSwgKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggOiAtMTtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RTZWxlY3RlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpID8gdGhpcy52aXNpYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pKSA6IC0xO1xuICAgIH1cblxuICAgIGZpbmRQcmV2T3B0aW9uSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gaW5kZXggPiAwID8gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCkuc2xpY2UoMCwgaW5kZXgpLCAob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggOiBpbmRleDtcbiAgICB9XG5cbiAgICBmaW5kTmVhcmVzdFNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgsIGZpcnN0Q2hlY2tVcCA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBtYXRjaGVkT3B0aW9uSW5kZXggPSAtMTtcblxuICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpKSB7XG4gICAgICAgICAgICBpZiAoZmlyc3RDaGVja1VwKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hlZE9wdGlvbkluZGV4ID0gdGhpcy5maW5kUHJldlNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgpO1xuICAgICAgICAgICAgICAgIG1hdGNoZWRPcHRpb25JbmRleCA9IG1hdGNoZWRPcHRpb25JbmRleCA9PT0gLTEgPyB0aGlzLmZpbmROZXh0U2VsZWN0ZWRPcHRpb25JbmRleChpbmRleCkgOiBtYXRjaGVkT3B0aW9uSW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hdGNoZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZE5leHRTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBtYXRjaGVkT3B0aW9uSW5kZXggPSBtYXRjaGVkT3B0aW9uSW5kZXggPT09IC0xID8gdGhpcy5maW5kUHJldlNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgpIDogbWF0Y2hlZE9wdGlvbkluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4IDogaW5kZXg7XG4gICAgfVxuXG4gICAgZXF1YWxpdHlLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gbnVsbCA6IHRoaXMuZGF0YUtleTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSAmJiB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkRpc2FibGVkID8gcmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uRGlzYWJsZWQpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChvcHRpb24pIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHJldHVybiAodGhpcy5tb2RlbFZhbHVlKCkgfHwgW10pLnNvbWUoKHZhbHVlKSA9PiBlcXVhbHModmFsdWUsIG9wdGlvblZhbHVlLCB0aGlzLmVxdWFsaXR5S2V5KCkpKTtcbiAgICAgICAgZWxzZSByZXR1cm4gZXF1YWxzKHRoaXMubW9kZWxWYWx1ZSgpLCBvcHRpb25WYWx1ZSwgdGhpcy5lcXVhbGl0eUtleSgpKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkT3B0aW9uKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uICYmICEodGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfHwgdGhpcy5pc09wdGlvbkdyb3VwKG9wdGlvbikpO1xuICAgIH1cblxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fb3B0aW9ucygpPy5sZW5ndGggfHwgIXRoaXMudmlzaWJsZU9wdGlvbnMoKT8ubGVuZ3RoO1xuICAgIH1cblxuICAgIGhhc0ZpbHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclZhbHVlKCkgJiYgdGhpcy5fZmlsdGVyVmFsdWUoKS50cmltKCkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICByZXNldEZpbHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmlld0NoaWxkICYmIHRoaXMuZmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlLnNldChudWxsKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtMaXN0Ym94LCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtMaXN0Ym94LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIExpc3Rib3hNb2R1bGUge31cbiJdfQ==
|