cax-design-system 2.8.0 → 2.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -46
- package/accordion/index.d.ts +286 -3
- package/animate/index.d.ts +41 -3
- package/animateonscroll/index.d.ts +75 -3
- package/api/index.d.ts +1856 -3
- package/autocomplete/index.d.ts +799 -3
- package/autofocus/index.d.ts +29 -3
- package/avatar/index.d.ts +80 -3
- package/avatargroup/index.d.ts +30 -3
- package/badge/index.d.ts +67 -5
- package/baseicon/index.d.ts +18 -5
- package/blockui/index.d.ts +77 -3
- package/breadcrumb/index.d.ts +105 -3
- package/button/index.d.ts +170 -3
- package/buttongroup/index.d.ts +14 -5
- package/calendar/index.d.ts +935 -3
- package/card/index.d.ts +92 -3
- package/carousel/index.d.ts +290 -3
- package/cascadeselect/index.d.ts +564 -3
- package/cax-design-system-2.8.2.tgz +0 -0
- package/chart/index.d.ts +88 -3
- package/checkbox/index.d.ts +204 -3
- package/chip/index.d.ts +63 -3
- package/chips/index.d.ts +305 -3
- package/colorpicker/index.d.ts +265 -3
- package/commentbox/index.d.ts +138 -5
- package/confirmdialog/index.d.ts +336 -3
- package/confirmpopup/index.d.ts +148 -3
- package/contextmenu/index.d.ts +261 -3
- package/dataview/index.d.ts +457 -3
- package/defer/index.d.ts +40 -3
- package/dialog/index.d.ts +411 -3
- package/divider/index.d.ts +56 -3
- package/dock/index.d.ts +136 -3
- package/dom/index.d.ts +105 -3
- package/dragdrop/index.d.ts +120 -3
- package/dropdown/index.d.ts +818 -3
- package/dynamicdialog/index.d.ts +490 -3
- package/editor/index.d.ts +177 -3
- package/fesm2022/cax-design-system-accordion.mjs +4 -4
- package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
- package/fesm2022/cax-design-system-animate.mjs +1 -1
- package/fesm2022/cax-design-system-animate.mjs.map +1 -1
- package/fesm2022/cax-design-system-animateonscroll.mjs +1 -1
- package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -1
- package/fesm2022/cax-design-system-api.mjs +1 -1
- package/fesm2022/cax-design-system-api.mjs.map +1 -1
- package/fesm2022/cax-design-system-autocomplete.mjs +3 -3
- package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
- package/fesm2022/cax-design-system-autofocus.mjs +1 -1
- package/fesm2022/cax-design-system-autofocus.mjs.map +1 -1
- package/fesm2022/cax-design-system-avatar.mjs +3 -3
- package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
- package/fesm2022/cax-design-system-avatargroup.mjs +3 -3
- package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
- package/fesm2022/cax-design-system-badge.mjs +3 -3
- package/fesm2022/cax-design-system-badge.mjs.map +1 -1
- package/fesm2022/cax-design-system-baseicon.mjs +1 -1
- package/fesm2022/cax-design-system-baseicon.mjs.map +1 -1
- package/fesm2022/cax-design-system-blockui.mjs +1 -1
- package/fesm2022/cax-design-system-blockui.mjs.map +1 -1
- package/fesm2022/cax-design-system-breadcrumb.mjs +3 -3
- package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
- package/fesm2022/cax-design-system-button.mjs +3 -3
- package/fesm2022/cax-design-system-button.mjs.map +1 -1
- package/fesm2022/cax-design-system-buttongroup.mjs +1 -1
- package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -1
- package/fesm2022/cax-design-system-calendar.mjs +5 -5
- package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
- package/fesm2022/cax-design-system-card.mjs +3 -3
- package/fesm2022/cax-design-system-card.mjs.map +1 -1
- package/fesm2022/cax-design-system-carousel.mjs +1 -1
- package/fesm2022/cax-design-system-carousel.mjs.map +1 -1
- package/fesm2022/cax-design-system-cascadeselect.mjs +5 -5
- package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
- package/fesm2022/cax-design-system-chart.mjs +1 -1
- package/fesm2022/cax-design-system-chart.mjs.map +1 -1
- package/fesm2022/cax-design-system-checkbox.mjs +3 -3
- package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/cax-design-system-chip.mjs +3 -3
- package/fesm2022/cax-design-system-chip.mjs.map +1 -1
- package/fesm2022/cax-design-system-chips.mjs +4 -4
- package/fesm2022/cax-design-system-chips.mjs.map +1 -1
- package/fesm2022/cax-design-system-colorpicker.mjs +3 -3
- package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
- package/fesm2022/cax-design-system-commentbox.mjs +3 -3
- package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
- package/fesm2022/cax-design-system-confirmdialog.mjs +3 -3
- package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
- package/fesm2022/cax-design-system-confirmpopup.mjs +2 -2
- package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -1
- package/fesm2022/cax-design-system-contextmenu.mjs +1 -1
- package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -1
- package/fesm2022/cax-design-system-dataview.mjs +1 -1
- package/fesm2022/cax-design-system-dataview.mjs.map +1 -1
- package/fesm2022/cax-design-system-defer.mjs +1 -1
- package/fesm2022/cax-design-system-defer.mjs.map +1 -1
- package/fesm2022/cax-design-system-dialog.mjs +3 -3
- package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
- package/fesm2022/cax-design-system-divider.mjs +3 -3
- package/fesm2022/cax-design-system-divider.mjs.map +1 -1
- package/fesm2022/cax-design-system-dock.mjs +1 -1
- package/fesm2022/cax-design-system-dock.mjs.map +1 -1
- package/fesm2022/cax-design-system-dom.mjs.map +1 -1
- package/fesm2022/cax-design-system-dragdrop.mjs +1 -1
- package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -1
- package/fesm2022/cax-design-system-dropdown.mjs +6 -6
- package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/cax-design-system-dynamicdialog.mjs +1 -1
- package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -1
- package/fesm2022/cax-design-system-editor.mjs +3 -3
- package/fesm2022/cax-design-system-editor.mjs.map +1 -1
- package/fesm2022/cax-design-system-fieldset.mjs +2 -2
- package/fesm2022/cax-design-system-fieldset.mjs.map +1 -1
- package/fesm2022/cax-design-system-fileupload.mjs +1 -1
- package/fesm2022/cax-design-system-fileupload.mjs.map +1 -1
- package/fesm2022/cax-design-system-floatlabel.mjs +1 -1
- package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -1
- package/fesm2022/cax-design-system-focustrap.mjs +1 -1
- package/fesm2022/cax-design-system-focustrap.mjs.map +1 -1
- package/fesm2022/cax-design-system-galleria.mjs +1 -1
- package/fesm2022/cax-design-system-galleria.mjs.map +1 -1
- package/fesm2022/cax-design-system-iconfield.mjs +1 -1
- package/fesm2022/cax-design-system-iconfield.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-check.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-home.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-search.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-star.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-times.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -1
- package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -1
- package/fesm2022/cax-design-system-image.mjs +4 -4
- package/fesm2022/cax-design-system-image.mjs.map +1 -1
- package/fesm2022/cax-design-system-inplace.mjs +1 -1
- package/fesm2022/cax-design-system-inplace.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputgroup.mjs +3 -3
- package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputgroupaddon.mjs +3 -3
- package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputicon.mjs +1 -1
- package/fesm2022/cax-design-system-inputicon.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputmask.mjs +3 -3
- package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputnumber.mjs +3 -3
- package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputotp.mjs +1 -1
- package/fesm2022/cax-design-system-inputotp.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputswitch.mjs +1 -1
- package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputtext.mjs +3 -3
- package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputtextarea.mjs +3 -3
- package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
- package/fesm2022/cax-design-system-keyfilter.mjs +1 -1
- package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -1
- package/fesm2022/cax-design-system-knob.mjs +1 -1
- package/fesm2022/cax-design-system-knob.mjs.map +1 -1
- package/fesm2022/cax-design-system-listbox.mjs +1 -1
- package/fesm2022/cax-design-system-listbox.mjs.map +1 -1
- package/fesm2022/cax-design-system-logo.mjs +3 -3
- package/fesm2022/cax-design-system-logo.mjs.map +1 -1
- package/fesm2022/cax-design-system-megamenu.mjs +1 -1
- package/fesm2022/cax-design-system-megamenu.mjs.map +1 -1
- package/fesm2022/cax-design-system-menu.mjs +5 -5
- package/fesm2022/cax-design-system-menu.mjs.map +1 -1
- package/fesm2022/cax-design-system-menubar.mjs +1 -1
- package/fesm2022/cax-design-system-menubar.mjs.map +1 -1
- package/fesm2022/cax-design-system-message.mjs +1 -1
- package/fesm2022/cax-design-system-message.mjs.map +1 -1
- package/fesm2022/cax-design-system-messages.mjs +4 -4
- package/fesm2022/cax-design-system-messages.mjs.map +1 -1
- package/fesm2022/cax-design-system-metergroup.mjs +1 -1
- package/fesm2022/cax-design-system-metergroup.mjs.map +1 -1
- package/fesm2022/cax-design-system-multiselect.mjs +5 -5
- package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
- package/fesm2022/cax-design-system-navigation.mjs +3 -3
- package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
- package/fesm2022/cax-design-system-orderlist.mjs +1 -1
- package/fesm2022/cax-design-system-orderlist.mjs.map +1 -1
- package/fesm2022/cax-design-system-organizationchart.mjs +2 -2
- package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -1
- package/fesm2022/cax-design-system-overlay.mjs +4 -4
- package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
- package/fesm2022/cax-design-system-overlaypanel.mjs +5 -5
- package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
- package/fesm2022/cax-design-system-paginator.mjs +3 -3
- package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
- package/fesm2022/cax-design-system-panel.mjs +2 -2
- package/fesm2022/cax-design-system-panel.mjs.map +1 -1
- package/fesm2022/cax-design-system-panelmenu.mjs +2 -2
- package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -1
- package/fesm2022/cax-design-system-password.mjs +1 -1
- package/fesm2022/cax-design-system-password.mjs.map +1 -1
- package/fesm2022/cax-design-system-picklist.mjs +1 -1
- package/fesm2022/cax-design-system-picklist.mjs.map +1 -1
- package/fesm2022/cax-design-system-progressbar.mjs +3 -3
- package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
- package/fesm2022/cax-design-system-progressspinner.mjs +3 -3
- package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
- package/fesm2022/cax-design-system-radiobutton.mjs +3 -3
- package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-rating.mjs +1 -1
- package/fesm2022/cax-design-system-rating.mjs.map +1 -1
- package/fesm2022/cax-design-system-ripple.mjs +1 -1
- package/fesm2022/cax-design-system-ripple.mjs.map +1 -1
- package/fesm2022/cax-design-system-scroller.mjs +4 -4
- package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
- package/fesm2022/cax-design-system-scrollpanel.mjs +1 -1
- package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -1
- package/fesm2022/cax-design-system-scrolltop.mjs +2 -2
- package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -1
- package/fesm2022/cax-design-system-selectbutton.mjs +3 -3
- package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-sidebar.mjs +4 -4
- package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
- package/fesm2022/cax-design-system-skeleton.mjs +3 -3
- package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
- package/fesm2022/cax-design-system-slidemenu.mjs +1 -1
- package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -1
- package/fesm2022/cax-design-system-slider.mjs +1 -1
- package/fesm2022/cax-design-system-slider.mjs.map +1 -1
- package/fesm2022/cax-design-system-speeddial.mjs +3 -3
- package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
- package/fesm2022/cax-design-system-spinner.mjs +1 -1
- package/fesm2022/cax-design-system-spinner.mjs.map +1 -1
- package/fesm2022/cax-design-system-splitbutton.mjs +3 -3
- package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-splitter.mjs +3 -3
- package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
- package/fesm2022/cax-design-system-stepper.mjs +2 -2
- package/fesm2022/cax-design-system-stepper.mjs.map +1 -1
- package/fesm2022/cax-design-system-steps.mjs +3 -3
- package/fesm2022/cax-design-system-steps.mjs.map +1 -1
- package/fesm2022/cax-design-system-styleclass.mjs +1 -1
- package/fesm2022/cax-design-system-styleclass.mjs.map +1 -1
- package/fesm2022/cax-design-system-table.mjs +19 -19
- package/fesm2022/cax-design-system-table.mjs.map +1 -1
- package/fesm2022/cax-design-system-tableconfiguration.mjs +19 -11
- package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
- package/fesm2022/cax-design-system-tabmenu.mjs +1 -1
- package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -1
- package/fesm2022/cax-design-system-tabview.mjs +5 -5
- package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
- package/fesm2022/cax-design-system-tag.mjs +3 -3
- package/fesm2022/cax-design-system-tag.mjs.map +1 -1
- package/fesm2022/cax-design-system-terminal.mjs +1 -1
- package/fesm2022/cax-design-system-terminal.mjs.map +1 -1
- package/fesm2022/cax-design-system-tieredmenu.mjs +1 -1
- package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -1
- package/fesm2022/cax-design-system-timeline.mjs +3 -3
- package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
- package/fesm2022/cax-design-system-toast.mjs +6 -6
- package/fesm2022/cax-design-system-toast.mjs.map +1 -1
- package/fesm2022/cax-design-system-togglebutton.mjs +1 -1
- package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-toggleswitch.mjs +3 -3
- package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
- package/fesm2022/cax-design-system-toolbar.mjs +1 -1
- package/fesm2022/cax-design-system-toolbar.mjs.map +1 -1
- package/fesm2022/cax-design-system-tooltip.mjs +1 -1
- package/fesm2022/cax-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/cax-design-system-tree.mjs +5 -5
- package/fesm2022/cax-design-system-tree.mjs.map +1 -1
- package/fesm2022/cax-design-system-treeselect.mjs +3 -3
- package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
- package/fesm2022/cax-design-system-treetable.mjs +1 -1
- package/fesm2022/cax-design-system-treetable.mjs.map +1 -1
- package/fesm2022/cax-design-system-tristatecheckbox.mjs +4 -4
- package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
- package/fesm2022/cax-design-system-upload.mjs +3 -3
- package/fesm2022/cax-design-system-upload.mjs.map +1 -1
- package/fesm2022/cax-design-system-utils.mjs.map +1 -1
- package/fesm2022/cax-design-system-virtualscroller.mjs +1 -1
- package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -1
- package/fieldset/index.d.ts +140 -3
- package/fileupload/index.d.ts +606 -3
- package/floatlabel/index.d.ts +19 -3
- package/focustrap/index.d.ts +35 -3
- package/galleria/index.d.ts +502 -3
- package/iconfield/index.d.ts +26 -3
- package/icons/angledoubledown/index.d.ts +9 -5
- package/icons/angledoubleleft/index.d.ts +9 -5
- package/icons/angledoubleright/index.d.ts +9 -5
- package/icons/angledoubleup/index.d.ts +9 -5
- package/icons/angledown/index.d.ts +9 -5
- package/icons/angleleft/index.d.ts +9 -5
- package/icons/angleright/index.d.ts +9 -5
- package/icons/angleup/index.d.ts +9 -5
- package/icons/arrowdown/index.d.ts +12 -5
- package/icons/arrowdownleft/index.d.ts +9 -5
- package/icons/arrowdownright/index.d.ts +9 -5
- package/icons/arrowleft/index.d.ts +11 -5
- package/icons/arrowright/index.d.ts +9 -5
- package/icons/arrowup/index.d.ts +11 -5
- package/icons/ban/index.d.ts +11 -5
- package/icons/bars/index.d.ts +9 -5
- package/icons/blank/index.d.ts +9 -5
- package/icons/calendar/index.d.ts +9 -5
- package/icons/caretleft/index.d.ts +9 -5
- package/icons/caretright/index.d.ts +9 -5
- package/icons/check/index.d.ts +9 -5
- package/icons/chevrondown/index.d.ts +9 -5
- package/icons/chevronleft/index.d.ts +9 -5
- package/icons/chevronright/index.d.ts +9 -5
- package/icons/chevronup/index.d.ts +9 -5
- package/icons/exclamationtriangle/index.d.ts +12 -5
- package/icons/eye/index.d.ts +9 -5
- package/icons/eyeslash/index.d.ts +11 -5
- package/icons/filter/index.d.ts +11 -5
- package/icons/filterslash/index.d.ts +11 -5
- package/icons/home/index.d.ts +11 -5
- package/icons/infocircle/index.d.ts +11 -5
- package/icons/minus/index.d.ts +9 -5
- package/icons/pencil/index.d.ts +11 -5
- package/icons/plus/index.d.ts +11 -5
- package/icons/refresh/index.d.ts +11 -5
- package/icons/search/index.d.ts +11 -5
- package/icons/searchminus/index.d.ts +11 -5
- package/icons/searchplus/index.d.ts +11 -5
- package/icons/sortalt/index.d.ts +11 -5
- package/icons/sortamountdown/index.d.ts +11 -5
- package/icons/sortamountupalt/index.d.ts +11 -5
- package/icons/spinner/index.d.ts +11 -5
- package/icons/star/index.d.ts +11 -5
- package/icons/starfill/index.d.ts +11 -5
- package/icons/thlarge/index.d.ts +11 -5
- package/icons/times/index.d.ts +9 -5
- package/icons/timescircle/index.d.ts +11 -5
- package/icons/trash/index.d.ts +11 -5
- package/icons/undo/index.d.ts +11 -5
- package/icons/upload/index.d.ts +11 -5
- package/icons/windowmaximize/index.d.ts +11 -5
- package/icons/windowminimize/index.d.ts +11 -5
- package/image/index.d.ts +228 -3
- package/index.d.ts +2 -5
- package/inplace/index.d.ts +130 -3
- package/inputgroup/index.d.ts +48 -3
- package/inputgroupaddon/index.d.ts +35 -3
- package/inputicon/index.d.ts +22 -3
- package/inputmask/index.d.ts +304 -3
- package/inputnumber/index.d.ts +443 -3
- package/inputotp/index.d.ts +189 -3
- package/inputswitch/index.d.ts +123 -3
- package/inputtext/index.d.ts +76 -5
- package/inputtextarea/index.d.ts +112 -3
- package/keyfilter/index.d.ts +65 -3
- package/knob/index.d.ts +179 -3
- package/listbox/index.d.ts +620 -3
- package/logo/index.d.ts +20 -5
- package/megamenu/index.d.ts +230 -3
- package/menu/index.d.ts +222 -3
- package/menubar/index.d.ts +290 -3
- package/message/index.d.ts +53 -3
- package/messages/index.d.ts +140 -3
- package/metergroup/index.d.ts +224 -3
- package/multiselect/index.d.ts +974 -3
- package/navigation/index.d.ts +105 -5
- package/orderlist/index.d.ts +381 -3
- package/organizationchart/index.d.ts +192 -3
- package/overlay/index.d.ts +246 -3
- package/overlaypanel/index.d.ts +170 -3
- package/package.json +270 -610
- package/paginator/index.d.ts +249 -3
- package/panel/index.d.ts +185 -3
- package/panelmenu/index.d.ts +249 -3
- package/password/index.d.ts +342 -3
- package/picklist/index.d.ts +696 -3
- package/progressbar/index.d.ts +61 -3
- package/progressspinner/index.d.ts +58 -3
- package/radiobutton/index.d.ts +173 -3
- package/rating/index.d.ts +181 -3
- package/resources/cax.min.scss +1 -1
- package/resources/cax.scss +12518 -12518
- package/resources/components/accordion/accordion.scss +46 -46
- package/resources/components/autocomplete/autocomplete.scss +183 -183
- package/resources/components/avatar/avatar.scss +34 -34
- package/resources/components/avatargroup/avatargroup.scss +10 -10
- package/resources/components/badge/badge.scss +67 -67
- package/resources/components/blockui/blockui.css +26 -26
- package/resources/components/breadcrumb/breadcrumb.scss +33 -33
- package/resources/components/button/button.scss +163 -163
- package/resources/components/calendar/calendar.scss +235 -235
- package/resources/components/card/card.scss +50 -50
- package/resources/components/carousel/carousel.css +71 -71
- package/resources/components/cascadeselect/cascadeselect.scss +105 -105
- package/resources/components/checkbox/checkbox.scss +30 -30
- package/resources/components/chip/chip.scss +6 -6
- package/resources/components/chips/chips.scss +205 -205
- package/resources/components/colorpicker/colorpicker-images.scss +6 -6
- package/resources/components/colorpicker/colorpicker.scss +82 -82
- package/resources/components/commentbox/commentbox.scss +611 -611
- package/resources/components/common/common.scss +183 -183
- package/resources/components/confirmpopup/confirmpopup.css +53 -53
- package/resources/components/contextmenu/contextmenu.css +42 -42
- package/resources/components/dataview/dataview.css +13 -13
- package/resources/components/dialog/dialog.scss +171 -171
- package/resources/components/divider/divider.scss +86 -86
- package/resources/components/dock/dock.css +107 -107
- package/resources/components/dropdown/dropdown.scss +94 -94
- package/resources/components/editor/editor.scss +3 -3
- package/resources/components/fieldset/fieldset.css +30 -30
- package/resources/components/fileupload/fileupload.css +47 -47
- package/resources/components/galleria/galleria.css +281 -281
- package/resources/components/iconfield/iconfield.css +5 -5
- package/resources/components/image/image.scss +92 -92
- package/resources/components/inplace/inplace.css +19 -19
- package/resources/components/inputicon/inputicon.css +6 -6
- package/resources/components/inputmask/inputmask.scss +12 -12
- package/resources/components/inputnumber/inputnumber.scss +109 -109
- package/resources/components/inputotp/inputotp.css +2 -2
- package/resources/components/inputswitch/inputswitch.css +23 -23
- package/resources/components/inputtext/inputtext.scss +145 -145
- package/resources/components/inputtextarea/inputtextarea.scss +10 -10
- package/resources/components/knob/knob.css +20 -20
- package/resources/components/listbox/listbox.css +40 -40
- package/resources/components/megamenu/megamenu.css +108 -108
- package/resources/components/menu/menu.scss +31 -30
- package/resources/components/menubar/menubar.css +81 -81
- package/resources/components/message/message.css +17 -17
- package/resources/components/messages/messages.scss +55 -55
- package/resources/components/multiselect/multiselect.scss +132 -132
- package/resources/components/navigation/navigation.scss +197 -196
- package/resources/components/orderlist/orderlist.css +78 -78
- package/resources/components/organizationchart/organizationchart.css +62 -62
- package/resources/components/overlay/overlay.scss +80 -80
- package/resources/components/overlaypanel/overlaypanel.scss +66 -66
- package/resources/components/paginator/paginator.scss +41 -41
- package/resources/components/panel/panel.css +29 -29
- package/resources/components/panelmenu/panelmenu.css +45 -45
- package/resources/components/password/password.css +54 -54
- package/resources/components/picklist/picklist.css +60 -60
- package/resources/components/progressbar/progressbar.scss +107 -107
- package/resources/components/progressspinner/progressspinner.scss +94 -94
- package/resources/components/radiobutton/radiobutton.scss +34 -34
- package/resources/components/rating/rating.css +15 -15
- package/resources/components/ripple/ripple.scss +29 -29
- package/resources/components/scroller/scroller.scss +58 -58
- package/resources/components/scrollpanel/scrollpanel.css +50 -50
- package/resources/components/scrolltop/scrolltop.css +18 -18
- package/resources/components/sidebar/sidebar.scss +117 -117
- package/resources/components/skeleton/skeleton.scss +24 -24
- package/resources/components/slidemenu/slidemenu.css +100 -100
- package/resources/components/slider/slider.css +41 -41
- package/resources/components/speeddial/speeddial.scss +122 -122
- package/resources/components/spinner/spinner.css +63 -63
- package/resources/components/splitbutton/splitbutton.scss +53 -53
- package/resources/components/splitter/splitter.scss +73 -73
- package/resources/components/stepper/stepper.css +9 -9
- package/resources/components/steps/steps.scss +50 -50
- package/resources/components/table/table.scss +451 -451
- package/resources/components/tableconfiguration/tableconfiguration.scss +125 -115
- package/resources/components/tabmenu/tabmenu.css +80 -80
- package/resources/components/tabview/tabview.scss +198 -198
- package/resources/components/tag/tag.scss +23 -23
- package/resources/components/terminal/terminal.css +24 -24
- package/resources/components/tieredmenu/tieredmenu.scss +55 -55
- package/resources/components/timeline/timeline.scss +128 -128
- package/resources/components/toast/toast.scss +87 -87
- package/resources/components/toggleswitch/toggleswitch.scss +36 -36
- package/resources/components/toolbar/toolbar.css +19 -19
- package/resources/components/tooltip/tooltip.scss +124 -124
- package/resources/components/tree/tree.scss +154 -154
- package/resources/components/treeselect/treeselect.scss +114 -114
- package/resources/components/treetable/treetable.css +205 -205
- package/resources/components/upload/upload.component.scss +145 -145
- package/resources/logo/dataX-dark.svg +12 -12
- package/resources/logo/dataX-icon-dark.svg +5 -5
- package/resources/logo/dataX-icon.svg +5 -5
- package/resources/logo/dataX.svg +12 -12
- package/resources/styles/colors.scss +397 -397
- package/resources/styles/shadow-blur.scss +21 -21
- package/resources/styles/space-radius-border.scss +49 -49
- package/resources/styles/typography.scss +116 -116
- package/ripple/index.d.ts +37 -3
- package/scroller/index.d.ts +528 -3
- package/scrollpanel/index.d.ts +116 -3
- package/scrolltop/index.d.ts +117 -3
- package/selectbutton/index.d.ts +184 -3
- package/sidebar/index.d.ts +213 -3
- package/skeleton/index.d.ts +69 -3
- package/slidemenu/index.d.ts +339 -3
- package/slider/index.d.ts +214 -3
- package/speeddial/index.d.ts +319 -3
- package/spinner/index.d.ts +93 -5
- package/splitbutton/index.d.ts +264 -3
- package/splitter/index.d.ts +201 -3
- package/stepper/index.d.ts +145 -3
- package/steps/index.d.ts +87 -3
- package/styleclass/index.d.ts +109 -3
- package/table/index.d.ts +2556 -3
- package/tableconfiguration/index.d.ts +25 -5
- package/tabmenu/index.d.ts +160 -3
- package/tabview/index.d.ts +357 -3
- package/tag/index.d.ts +82 -3
- package/terminal/index.d.ts +68 -3
- package/tieredmenu/index.d.ts +307 -3
- package/timeline/index.d.ts +100 -3
- package/toast/index.d.ts +202 -3
- package/togglebutton/index.d.ts +150 -3
- package/toggleswitch/index.d.ts +25 -5
- package/toolbar/index.d.ts +64 -3
- package/tooltip/index.d.ts +218 -3
- package/tree/index.d.ts +673 -3
- package/treeselect/index.d.ts +517 -3
- package/treetable/index.d.ts +1461 -3
- package/tristatecheckbox/index.d.ts +155 -3
- package/ts-helpers/index.d.ts +6 -5
- package/upload/index.d.ts +81 -5
- package/utils/index.d.ts +35 -5
- package/virtualscroller/index.d.ts +161 -3
- package/accordion/accordion.d.ts +0 -224
- package/accordion/accordion.interface.d.ts +0 -49
- package/accordion/accordion.module.d.ts +0 -13
- package/accordion/public_api.d.ts +0 -3
- package/animate/animate.d.ts +0 -40
- package/animate/public_api.d.ts +0 -1
- package/animateonscroll/animateonscroll.d.ts +0 -75
- package/animateonscroll/public_api.d.ts +0 -1
- package/api/blockableui.d.ts +0 -10
- package/api/caxconfig.d.ts +0 -24
- package/api/confirmaeventtype.d.ts +0 -8
- package/api/confirmation.d.ts +0 -96
- package/api/confirmationservice.d.ts +0 -30
- package/api/contextmenuservice.d.ts +0 -11
- package/api/filtermatchmode.d.ts +0 -22
- package/api/filtermetadata.d.ts +0 -18
- package/api/filteroperator.d.ts +0 -4
- package/api/filterservice.d.ts +0 -10
- package/api/lazyloadevent.d.ts +0 -47
- package/api/lazyloadmeta.d.ts +0 -19
- package/api/megamenuitem.d.ts +0 -130
- package/api/menuitem.d.ts +0 -176
- package/api/message.d.ts +0 -30
- package/api/messageservice.d.ts +0 -32
- package/api/overlayoptions.d.ts +0 -188
- package/api/overlayservice.d.ts +0 -9
- package/api/primeicons.d.ts +0 -313
- package/api/public_api.d.ts +0 -34
- package/api/scrolleroptions.d.ts +0 -116
- package/api/selectitem.d.ts +0 -12
- package/api/selectitemgroup.d.ts +0 -10
- package/api/shared.d.ts +0 -24
- package/api/sortevent.d.ts +0 -12
- package/api/sortmeta.d.ts +0 -8
- package/api/tablestate.d.ts +0 -60
- package/api/themegeneratorservice.d.ts +0 -12
- package/api/tooltipoptions.d.ts +0 -69
- package/api/translation.d.ts +0 -135
- package/api/translationkeys.d.ts +0 -50
- package/api/treedragdropservice.d.ts +0 -12
- package/api/treenode.d.ts +0 -91
- package/api/treenodedragevent.d.ts +0 -27
- package/api/treetablenode.d.ts +0 -36
- package/autocomplete/autocomplete.d.ts +0 -616
- package/autocomplete/autocomplete.interface.d.ts +0 -164
- package/autocomplete/autocomplete.module.d.ts +0 -20
- package/autocomplete/public_api.d.ts +0 -3
- package/autofocus/autofocus.d.ts +0 -28
- package/autofocus/public_api.d.ts +0 -1
- package/avatar/avatar.d.ts +0 -73
- package/avatar/avatar.module.d.ts +0 -7
- package/avatar/public_api.d.ts +0 -2
- package/avatargroup/avatargroup.d.ts +0 -21
- package/avatargroup/avatargroup.module.d.ts +0 -9
- package/avatargroup/public_api.d.ts +0 -2
- package/badge/badge.d.ts +0 -21
- package/badge/badge.directive.d.ts +0 -35
- package/badge/badge.module.d.ts +0 -10
- package/badge/public_api.d.ts +0 -3
- package/baseicon/baseicon.d.ts +0 -15
- package/baseicon/public_api.d.ts +0 -1
- package/blockui/blockui.d.ts +0 -64
- package/blockui/blockui.interface.d.ts +0 -11
- package/blockui/public_api.d.ts +0 -2
- package/breadcrumb/breadcrumb.d.ts +0 -55
- package/breadcrumb/breadcrumb.interface.d.ts +0 -38
- package/breadcrumb/breadcrumb.module.d.ts +0 -13
- package/breadcrumb/public_api.d.ts +0 -3
- package/button/button.d.ts +0 -85
- package/button/button.directive.d.ts +0 -49
- package/button/button.interface.d.ts +0 -30
- package/button/button.module.d.ts +0 -9
- package/button/public_api.d.ts +0 -4
- package/buttongroup/buttongroup.d.ts +0 -11
- package/buttongroup/public_api.d.ts +0 -1
- package/calendar/calendar.d.ts +0 -722
- package/calendar/calendar.interface.d.ts +0 -204
- package/calendar/calendar.module.d.ts +0 -9
- package/calendar/public_api.d.ts +0 -3
- package/card/card.d.ts +0 -53
- package/card/card.interface.d.ts +0 -27
- package/card/card.module.d.ts +0 -11
- package/card/public_api.d.ts +0 -3
- package/carousel/carousel.d.ts +0 -227
- package/carousel/carousel.interface.d.ts +0 -63
- package/carousel/public_api.d.ts +0 -2
- package/cascadeselect/cascadeselect.d.ts +0 -435
- package/cascadeselect/cascadeselect.interface.d.ts +0 -115
- package/cascadeselect/cascadeselect.module.d.ts +0 -15
- package/cascadeselect/public_api.d.ts +0 -3
- package/chart/chart.d.ts +0 -87
- package/chart/public_api.d.ts +0 -1
- package/checkbox/checkbox.d.ts +0 -168
- package/checkbox/checkbox.interface.d.ts +0 -26
- package/checkbox/checkbox.module.d.ts +0 -10
- package/checkbox/public_api.d.ts +0 -3
- package/chip/chip.d.ts +0 -38
- package/chip/chip.interface.d.ts +0 -15
- package/chip/chip.module.d.ts +0 -10
- package/chip/public_api.d.ts +0 -3
- package/chips/chips.d.ts +0 -233
- package/chips/chips.interface.d.ts +0 -58
- package/chips/chips.module.d.ts +0 -14
- package/chips/public_api.d.ts +0 -3
- package/colorpicker/colorpicker.d.ts +0 -240
- package/colorpicker/colorpicker.interface.d.ts +0 -15
- package/colorpicker/colorpicker.module.d.ts +0 -9
- package/colorpicker/public_api.d.ts +0 -3
- package/commentbox/commentbox.d.ts +0 -120
- package/commentbox/commentbox.module.d.ts +0 -17
- package/commentbox/public_api.d.ts +0 -2
- package/confirmdialog/confirmdialog.d.ts +0 -281
- package/confirmdialog/confirmdialog.interface.d.ts +0 -39
- package/confirmdialog/confirmdialog.module.d.ts +0 -15
- package/confirmdialog/public_api.d.ts +0 -3
- package/confirmpopup/confirmpopup.d.ts +0 -119
- package/confirmpopup/confirmpopup.interface.d.ts +0 -27
- package/confirmpopup/public_api.d.ts +0 -2
- package/contextmenu/contextmenu.d.ts +0 -260
- package/contextmenu/public_api.d.ts +0 -1
- package/dataview/dataview.d.ts +0 -274
- package/dataview/dataview.interface.d.ts +0 -183
- package/dataview/public_api.d.ts +0 -2
- package/defer/defer.d.ts +0 -39
- package/defer/public_api.d.ts +0 -1
- package/dialog/dialog.d.ts +0 -364
- package/dialog/dialog.interface.d.ts +0 -31
- package/dialog/dialog.module.d.ts +0 -15
- package/dialog/public_api.d.ts +0 -3
- package/divider/divider.d.ts +0 -49
- package/divider/divider.module.d.ts +0 -7
- package/divider/public_api.d.ts +0 -2
- package/dock/dock.d.ts +0 -115
- package/dock/dock.interface.d.ts +0 -19
- package/dock/public_api.d.ts +0 -2
- package/dom/connectedoverlayscrollhandler.d.ts +0 -9
- package/dom/domhandler.d.ts +0 -95
- package/dom/public_api.d.ts +0 -2
- package/dragdrop/dragdrop.d.ts +0 -112
- package/dragdrop/dragdrop.module.d.ts +0 -8
- package/dragdrop/public_api.d.ts +0 -2
- package/dropdown/dropdown-item.d.ts +0 -30
- package/dropdown/dropdown.d.ts +0 -628
- package/dropdown/dropdown.interface.d.ts +0 -154
- package/dropdown/dropdown.module.d.ts +0 -11
- package/dropdown/public_api.d.ts +0 -4
- package/dynamicdialog/dialogservice.d.ts +0 -35
- package/dynamicdialog/dynamicdialog-config.d.ts +0 -221
- package/dynamicdialog/dynamicdialog-injector.d.ts +0 -7
- package/dynamicdialog/dynamicdialog-ref.d.ts +0 -101
- package/dynamicdialog/dynamicdialog.d.ts +0 -124
- package/dynamicdialog/dynamicdialogcontent.d.ts +0 -8
- package/dynamicdialog/public_api.d.ts +0 -6
- package/editor/editor.d.ts +0 -104
- package/editor/editor.interface.d.ts +0 -64
- package/editor/editor.module.d.ts +0 -9
- package/editor/public_api.d.ts +0 -3
- package/esm2022/accordion/accordion.interface.mjs +0 -2
- package/esm2022/accordion/accordion.mjs +0 -598
- package/esm2022/accordion/accordion.module.mjs +0 -23
- package/esm2022/accordion/cax-design-system-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -4
- package/esm2022/animate/animate.mjs +0 -101
- package/esm2022/animate/cax-design-system-animate.mjs +0 -5
- package/esm2022/animate/public_api.mjs +0 -2
- package/esm2022/animateonscroll/animateonscroll.mjs +0 -185
- package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +0 -5
- package/esm2022/animateonscroll/public_api.mjs +0 -2
- package/esm2022/api/blockableui.mjs +0 -2
- package/esm2022/api/cax-design-system-api.mjs +0 -5
- package/esm2022/api/caxconfig.mjs +0 -163
- 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 -225
- 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/message.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/public_api.mjs +0 -35
- 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 -65
- package/esm2022/api/sortevent.mjs +0 -2
- package/esm2022/api/sortmeta.mjs +0 -2
- package/esm2022/api/tablestate.mjs +0 -2
- package/esm2022/api/themegeneratorservice.mjs +0 -109
- 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 -1462
- package/esm2022/autocomplete/autocomplete.module.mjs +0 -30
- package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/public_api.mjs +0 -4
- package/esm2022/autofocus/autofocus.mjs +0 -78
- package/esm2022/autofocus/cax-design-system-autofocus.mjs +0 -5
- package/esm2022/autofocus/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.mjs +0 -104
- package/esm2022/avatar/avatar.module.mjs +0 -16
- package/esm2022/avatar/cax-design-system-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -3
- package/esm2022/avatargroup/avatargroup.mjs +0 -32
- package/esm2022/avatargroup/avatargroup.module.mjs +0 -19
- package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +0 -5
- package/esm2022/avatargroup/public_api.mjs +0 -3
- package/esm2022/badge/badge.directive.mjs +0 -193
- package/esm2022/badge/badge.mjs +0 -50
- package/esm2022/badge/badge.module.mjs +0 -20
- package/esm2022/badge/cax-design-system-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -4
- package/esm2022/baseicon/baseicon.mjs +0 -45
- package/esm2022/baseicon/cax-design-system-baseicon.mjs +0 -5
- package/esm2022/baseicon/public_api.mjs +0 -2
- package/esm2022/blockui/blockui.interface.mjs +0 -2
- package/esm2022/blockui/blockui.mjs +0 -206
- package/esm2022/blockui/cax-design-system-blockui.mjs +0 -5
- package/esm2022/blockui/public_api.mjs +0 -3
- package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
- package/esm2022/breadcrumb/breadcrumb.mjs +0 -120
- package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -23
- package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +0 -5
- package/esm2022/breadcrumb/public_api.mjs +0 -4
- package/esm2022/button/button.directive.mjs +0 -259
- package/esm2022/button/button.interface.mjs +0 -2
- package/esm2022/button/button.mjs +0 -190
- package/esm2022/button/button.module.mjs +0 -18
- package/esm2022/button/cax-design-system-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -5
- package/esm2022/buttongroup/buttongroup.mjs +0 -38
- package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +0 -5
- package/esm2022/buttongroup/public_api.mjs +0 -2
- package/esm2022/calendar/calendar.interface.mjs +0 -2
- package/esm2022/calendar/calendar.mjs +0 -3242
- package/esm2022/calendar/calendar.module.mjs +0 -18
- package/esm2022/calendar/cax-design-system-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -4
- package/esm2022/card/card.interface.mjs +0 -2
- package/esm2022/card/card.mjs +0 -117
- package/esm2022/card/card.module.mjs +0 -21
- package/esm2022/card/cax-design-system-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -4
- package/esm2022/carousel/carousel.interface.mjs +0 -2
- package/esm2022/carousel/carousel.mjs +0 -968
- package/esm2022/carousel/cax-design-system-carousel.mjs +0 -5
- package/esm2022/carousel/public_api.mjs +0 -3
- package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
- package/esm2022/cascadeselect/cascadeselect.mjs +0 -1135
- package/esm2022/cascadeselect/cascadeselect.module.mjs +0 -25
- package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +0 -5
- package/esm2022/cascadeselect/public_api.mjs +0 -4
- package/esm2022/cax-design-system.mjs +0 -5
- package/esm2022/chart/cax-design-system-chart.mjs +0 -5
- package/esm2022/chart/chart.mjs +0 -236
- package/esm2022/chart/public_api.mjs +0 -2
- package/esm2022/checkbox/cax-design-system-checkbox.mjs +0 -5
- package/esm2022/checkbox/checkbox.interface.mjs +0 -2
- package/esm2022/checkbox/checkbox.mjs +0 -318
- package/esm2022/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/checkbox/public_api.mjs +0 -4
- package/esm2022/chip/cax-design-system-chip.mjs +0 -5
- package/esm2022/chip/chip.interface.mjs +0 -2
- package/esm2022/chip/chip.mjs +0 -90
- package/esm2022/chip/chip.module.mjs +0 -20
- package/esm2022/chip/public_api.mjs +0 -4
- package/esm2022/chips/cax-design-system-chips.mjs +0 -5
- package/esm2022/chips/chips.interface.mjs +0 -2
- package/esm2022/chips/chips.mjs +0 -610
- package/esm2022/chips/chips.module.mjs +0 -23
- package/esm2022/chips/public_api.mjs +0 -4
- package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +0 -5
- package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
- package/esm2022/colorpicker/colorpicker.mjs +0 -715
- package/esm2022/colorpicker/colorpicker.module.mjs +0 -19
- package/esm2022/colorpicker/public_api.mjs +0 -4
- package/esm2022/commentbox/cax-design-system-commentbox.mjs +0 -5
- package/esm2022/commentbox/commentbox.mjs +0 -575
- package/esm2022/commentbox/commentbox.module.mjs +0 -27
- package/esm2022/commentbox/public_api.mjs +0 -3
- package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +0 -5
- package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
- package/esm2022/confirmdialog/confirmdialog.mjs +0 -720
- package/esm2022/confirmdialog/confirmdialog.module.mjs +0 -25
- package/esm2022/confirmdialog/public_api.mjs +0 -4
- package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +0 -5
- package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
- package/esm2022/confirmpopup/confirmpopup.mjs +0 -499
- package/esm2022/confirmpopup/public_api.mjs +0 -3
- package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +0 -5
- package/esm2022/contextmenu/contextmenu.mjs +0 -1304
- package/esm2022/contextmenu/public_api.mjs +0 -2
- package/esm2022/dataview/cax-design-system-dataview.mjs +0 -5
- package/esm2022/dataview/dataview.interface.mjs +0 -2
- package/esm2022/dataview/dataview.mjs +0 -723
- package/esm2022/dataview/public_api.mjs +0 -3
- package/esm2022/defer/cax-design-system-defer.mjs +0 -5
- package/esm2022/defer/defer.mjs +0 -111
- package/esm2022/defer/public_api.mjs +0 -2
- package/esm2022/dialog/cax-design-system-dialog.mjs +0 -5
- package/esm2022/dialog/dialog.interface.mjs +0 -2
- package/esm2022/dialog/dialog.mjs +0 -959
- package/esm2022/dialog/dialog.module.mjs +0 -25
- package/esm2022/dialog/public_api.mjs +0 -4
- package/esm2022/divider/cax-design-system-divider.mjs +0 -5
- package/esm2022/divider/divider.mjs +0 -69
- package/esm2022/divider/divider.module.mjs +0 -16
- package/esm2022/divider/public_api.mjs +0 -3
- package/esm2022/dock/cax-design-system-dock.mjs +0 -5
- package/esm2022/dock/dock.interface.mjs +0 -2
- package/esm2022/dock/dock.mjs +0 -431
- package/esm2022/dock/public_api.mjs +0 -3
- package/esm2022/dom/cax-design-system-dom.mjs +0 -5
- package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
- package/esm2022/dom/domhandler.mjs +0 -722
- package/esm2022/dom/public_api.mjs +0 -3
- package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +0 -5
- package/esm2022/dragdrop/dragdrop.mjs +0 -309
- package/esm2022/dragdrop/dragdrop.module.mjs +0 -18
- package/esm2022/dragdrop/public_api.mjs +0 -3
- package/esm2022/dropdown/cax-design-system-dropdown.mjs +0 -5
- package/esm2022/dropdown/dropdown-item.mjs +0 -72
- package/esm2022/dropdown/dropdown.interface.mjs +0 -2
- package/esm2022/dropdown/dropdown.mjs +0 -1599
- package/esm2022/dropdown/dropdown.module.mjs +0 -20
- package/esm2022/dropdown/public_api.mjs +0 -5
- package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +0 -5
- package/esm2022/dynamicdialog/dialogservice.mjs +0 -102
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -187
- package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
- package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -696
- package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -20
- package/esm2022/dynamicdialog/public_api.mjs +0 -7
- package/esm2022/editor/cax-design-system-editor.mjs +0 -5
- package/esm2022/editor/editor.interface.mjs +0 -2
- package/esm2022/editor/editor.mjs +0 -281
- package/esm2022/editor/editor.module.mjs +0 -19
- package/esm2022/editor/public_api.mjs +0 -4
- package/esm2022/fieldset/cax-design-system-fieldset.mjs +0 -5
- package/esm2022/fieldset/fieldset.interface.mjs +0 -2
- package/esm2022/fieldset/fieldset.mjs +0 -297
- package/esm2022/fieldset/public_api.mjs +0 -3
- package/esm2022/fileupload/cax-design-system-fileupload.mjs +0 -5
- package/esm2022/fileupload/fileupload.interface.mjs +0 -2
- package/esm2022/fileupload/fileupload.mjs +0 -1188
- package/esm2022/fileupload/public_api.mjs +0 -3
- package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +0 -5
- package/esm2022/floatlabel/floatlabel.mjs +0 -28
- package/esm2022/floatlabel/floatlabel.module.mjs +0 -20
- package/esm2022/floatlabel/public_api.mjs +0 -3
- package/esm2022/focustrap/cax-design-system-focustrap.mjs +0 -5
- package/esm2022/focustrap/focustrap.mjs +0 -103
- package/esm2022/focustrap/public_api.mjs +0 -2
- package/esm2022/galleria/cax-design-system-galleria.mjs +0 -5
- package/esm2022/galleria/galleria.interface.mjs +0 -2
- package/esm2022/galleria/galleria.mjs +0 -1668
- package/esm2022/galleria/public_api.mjs +0 -3
- package/esm2022/iconfield/cax-design-system-iconfield.mjs +0 -5
- package/esm2022/iconfield/iconfield.mjs +0 -44
- package/esm2022/iconfield/public_api.mjs +0 -2
- package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -35
- package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +0 -5
- package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -35
- package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +0 -5
- package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -35
- package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +0 -5
- package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -35
- package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +0 -5
- package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
- package/esm2022/icons/angledown/angledown.mjs +0 -31
- package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +0 -5
- package/esm2022/icons/angledown/public_api.mjs +0 -2
- package/esm2022/icons/angleleft/angleleft.mjs +0 -31
- package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +0 -5
- package/esm2022/icons/angleleft/public_api.mjs +0 -2
- package/esm2022/icons/angleright/angleright.mjs +0 -31
- package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +0 -5
- package/esm2022/icons/angleright/public_api.mjs +0 -2
- package/esm2022/icons/angleup/angleup.mjs +0 -31
- package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +0 -5
- package/esm2022/icons/angleup/public_api.mjs +0 -2
- package/esm2022/icons/arrowdown/arrowdown.mjs +0 -54
- package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +0 -5
- package/esm2022/icons/arrowdown/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -31
- package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +0 -5
- package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -31
- package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +0 -5
- package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
- package/esm2022/icons/arrowleft/arrowleft.mjs +0 -54
- package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +0 -5
- package/esm2022/icons/arrowleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowright/arrowright.mjs +0 -35
- package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +0 -5
- package/esm2022/icons/arrowright/public_api.mjs +0 -2
- package/esm2022/icons/arrowup/arrowup.mjs +0 -54
- package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +0 -5
- package/esm2022/icons/arrowup/public_api.mjs +0 -2
- package/esm2022/icons/ban/ban.mjs +0 -50
- package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +0 -5
- package/esm2022/icons/ban/public_api.mjs +0 -2
- package/esm2022/icons/bars/bars.mjs +0 -35
- package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +0 -5
- package/esm2022/icons/bars/public_api.mjs +0 -2
- package/esm2022/icons/blank/blank.mjs +0 -25
- package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +0 -5
- package/esm2022/icons/blank/public_api.mjs +0 -2
- package/esm2022/icons/calendar/calendar.mjs +0 -31
- package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +0 -5
- package/esm2022/icons/calendar/public_api.mjs +0 -2
- package/esm2022/icons/caretleft/caretleft.mjs +0 -31
- package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +0 -5
- package/esm2022/icons/caretleft/public_api.mjs +0 -2
- package/esm2022/icons/caretright/caretright.mjs +0 -31
- package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +0 -5
- package/esm2022/icons/caretright/public_api.mjs +0 -2
- package/esm2022/icons/check/cax-design-system-icons-check.mjs +0 -5
- package/esm2022/icons/check/check.mjs +0 -31
- package/esm2022/icons/check/public_api.mjs +0 -2
- package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +0 -5
- package/esm2022/icons/chevrondown/chevrondown.mjs +0 -31
- package/esm2022/icons/chevrondown/public_api.mjs +0 -2
- package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +0 -5
- package/esm2022/icons/chevronleft/chevronleft.mjs +0 -31
- package/esm2022/icons/chevronleft/public_api.mjs +0 -2
- package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +0 -5
- package/esm2022/icons/chevronright/chevronright.mjs +0 -31
- package/esm2022/icons/chevronright/public_api.mjs +0 -2
- package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +0 -5
- package/esm2022/icons/chevronup/chevronup.mjs +0 -31
- package/esm2022/icons/chevronup/public_api.mjs +0 -2
- package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +0 -5
- package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -66
- package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
- package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +0 -5
- package/esm2022/icons/eye/eye.mjs +0 -35
- package/esm2022/icons/eye/public_api.mjs +0 -2
- package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +0 -5
- package/esm2022/icons/eyeslash/eyeslash.mjs +0 -54
- package/esm2022/icons/eyeslash/public_api.mjs +0 -2
- package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +0 -5
- package/esm2022/icons/filter/filter.mjs +0 -50
- package/esm2022/icons/filter/public_api.mjs +0 -2
- package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +0 -5
- package/esm2022/icons/filterslash/filterslash.mjs +0 -54
- package/esm2022/icons/filterslash/public_api.mjs +0 -2
- package/esm2022/icons/home/cax-design-system-icons-home.mjs +0 -5
- package/esm2022/icons/home/home.mjs +0 -54
- package/esm2022/icons/home/public_api.mjs +0 -2
- package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +0 -5
- package/esm2022/icons/infocircle/infocircle.mjs +0 -54
- package/esm2022/icons/infocircle/public_api.mjs +0 -2
- package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +0 -5
- package/esm2022/icons/minus/minus.mjs +0 -32
- package/esm2022/icons/minus/public_api.mjs +0 -2
- package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +0 -5
- package/esm2022/icons/pencil/pencil.mjs +0 -50
- package/esm2022/icons/pencil/public_api.mjs +0 -2
- package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +0 -5
- package/esm2022/icons/plus/plus.mjs +0 -50
- package/esm2022/icons/plus/public_api.mjs +0 -2
- package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +0 -5
- package/esm2022/icons/refresh/public_api.mjs +0 -2
- package/esm2022/icons/refresh/refresh.mjs +0 -54
- package/esm2022/icons/search/cax-design-system-icons-search.mjs +0 -5
- package/esm2022/icons/search/public_api.mjs +0 -2
- package/esm2022/icons/search/search.mjs +0 -54
- package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +0 -5
- package/esm2022/icons/searchminus/public_api.mjs +0 -2
- package/esm2022/icons/searchminus/searchminus.mjs +0 -54
- package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +0 -5
- package/esm2022/icons/searchplus/public_api.mjs +0 -2
- package/esm2022/icons/searchplus/searchplus.mjs +0 -54
- package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +0 -5
- package/esm2022/icons/sortalt/public_api.mjs +0 -2
- package/esm2022/icons/sortalt/sortalt.mjs +0 -62
- package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +0 -5
- package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
- package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -50
- package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +0 -5
- package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
- package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -50
- package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +0 -5
- package/esm2022/icons/spinner/public_api.mjs +0 -2
- package/esm2022/icons/spinner/spinner.mjs +0 -50
- package/esm2022/icons/star/cax-design-system-icons-star.mjs +0 -5
- package/esm2022/icons/star/public_api.mjs +0 -2
- package/esm2022/icons/star/star.mjs +0 -50
- package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +0 -5
- package/esm2022/icons/starfill/public_api.mjs +0 -2
- package/esm2022/icons/starfill/starfill.mjs +0 -50
- package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +0 -5
- package/esm2022/icons/thlarge/public_api.mjs +0 -2
- package/esm2022/icons/thlarge/thlarge.mjs +0 -54
- package/esm2022/icons/times/cax-design-system-icons-times.mjs +0 -5
- package/esm2022/icons/times/public_api.mjs +0 -2
- package/esm2022/icons/times/times.mjs +0 -31
- package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +0 -5
- package/esm2022/icons/timescircle/public_api.mjs +0 -2
- package/esm2022/icons/timescircle/timescircle.mjs +0 -54
- package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +0 -5
- package/esm2022/icons/trash/public_api.mjs +0 -2
- package/esm2022/icons/trash/trash.mjs +0 -54
- package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +0 -5
- package/esm2022/icons/undo/public_api.mjs +0 -2
- package/esm2022/icons/undo/undo.mjs +0 -54
- package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +0 -5
- package/esm2022/icons/upload/public_api.mjs +0 -2
- package/esm2022/icons/upload/upload.mjs +0 -54
- package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +0 -5
- package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
- package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -54
- package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +0 -5
- package/esm2022/icons/windowminimize/public_api.mjs +0 -2
- package/esm2022/icons/windowminimize/windowminimize.mjs +0 -54
- package/esm2022/image/cax-design-system-image.mjs +0 -5
- package/esm2022/image/image.interface.mjs +0 -2
- package/esm2022/image/image.mjs +0 -418
- package/esm2022/image/image.module.mjs +0 -17
- package/esm2022/image/public_api.mjs +0 -4
- package/esm2022/inplace/cax-design-system-inplace.mjs +0 -5
- package/esm2022/inplace/inplace.interface.mjs +0 -2
- package/esm2022/inplace/inplace.mjs +0 -243
- package/esm2022/inplace/public_api.mjs +0 -3
- package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +0 -5
- package/esm2022/inputgroup/inputgroup.mjs +0 -55
- package/esm2022/inputgroup/inputgroup.module.mjs +0 -25
- package/esm2022/inputgroup/public_api.mjs +0 -3
- package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +0 -5
- package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -32
- package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +0 -24
- package/esm2022/inputgroupaddon/public_api.mjs +0 -3
- package/esm2022/inputicon/cax-design-system-inputicon.mjs +0 -5
- package/esm2022/inputicon/inputicon.mjs +0 -38
- package/esm2022/inputicon/public_api.mjs +0 -2
- package/esm2022/inputmask/cax-design-system-inputmask.mjs +0 -5
- package/esm2022/inputmask/inputmask.interface.mjs +0 -2
- package/esm2022/inputmask/inputmask.mjs +0 -848
- package/esm2022/inputmask/inputmask.module.mjs +0 -22
- package/esm2022/inputmask/public_api.mjs +0 -4
- package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +0 -5
- package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
- package/esm2022/inputnumber/inputnumber.mjs +0 -1296
- package/esm2022/inputnumber/inputnumber.module.mjs +0 -17
- package/esm2022/inputnumber/public_api.mjs +0 -4
- package/esm2022/inputotp/cax-design-system-inputotp.mjs +0 -5
- package/esm2022/inputotp/inputotp.interface.mjs +0 -2
- package/esm2022/inputotp/inputotp.mjs +0 -381
- package/esm2022/inputotp/public_api.mjs +0 -3
- package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +0 -5
- package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
- package/esm2022/inputswitch/inputswitch.mjs +0 -244
- package/esm2022/inputswitch/public_api.mjs +0 -3
- package/esm2022/inputtext/cax-design-system-inputtext.mjs +0 -5
- package/esm2022/inputtext/inputtext.component.mjs +0 -132
- package/esm2022/inputtext/inputtext.directive.mjs +0 -76
- package/esm2022/inputtext/inputtext.module.mjs +0 -20
- package/esm2022/inputtext/public_api.mjs +0 -4
- package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +0 -5
- package/esm2022/inputtextarea/inputtextarea.component.mjs +0 -155
- package/esm2022/inputtextarea/inputtextarea.directive.mjs +0 -121
- package/esm2022/inputtextarea/inputtextarea.module.mjs +0 -20
- package/esm2022/inputtextarea/public_api.mjs +0 -4
- package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +0 -5
- package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
- package/esm2022/keyfilter/keyfilter.mjs +0 -265
- package/esm2022/keyfilter/public_api.mjs +0 -3
- package/esm2022/knob/cax-design-system-knob.mjs +0 -5
- package/esm2022/knob/knob.mjs +0 -464
- package/esm2022/knob/public_api.mjs +0 -2
- package/esm2022/listbox/cax-design-system-listbox.mjs +0 -5
- package/esm2022/listbox/listbox.interface.mjs +0 -2
- package/esm2022/listbox/listbox.mjs +0 -1555
- package/esm2022/listbox/public_api.mjs +0 -3
- package/esm2022/logo/cax-design-system-logo.mjs +0 -5
- package/esm2022/logo/logo.mjs +0 -45
- package/esm2022/logo/logo.module.mjs +0 -16
- package/esm2022/logo/public_api.mjs +0 -3
- package/esm2022/megamenu/cax-design-system-megamenu.mjs +0 -5
- package/esm2022/megamenu/megamenu.interface.mjs +0 -2
- package/esm2022/megamenu/megamenu.mjs +0 -1190
- package/esm2022/megamenu/public_api.mjs +0 -3
- package/esm2022/menu/cax-design-system-menu.mjs +0 -5
- package/esm2022/menu/menu.mjs +0 -626
- package/esm2022/menu/menu.module.mjs +0 -22
- package/esm2022/menu/public_api.mjs +0 -3
- package/esm2022/menubar/cax-design-system-menubar.mjs +0 -5
- package/esm2022/menubar/menubar.interface.mjs +0 -2
- package/esm2022/menubar/menubar.mjs +0 -1249
- package/esm2022/menubar/public_api.mjs +0 -3
- package/esm2022/message/cax-design-system-message.mjs +0 -5
- package/esm2022/message/message.mjs +0 -112
- package/esm2022/message/public_api.mjs +0 -2
- package/esm2022/messages/cax-design-system-messages.mjs +0 -5
- package/esm2022/messages/messages.interface.mjs +0 -2
- package/esm2022/messages/messages.mjs +0 -283
- package/esm2022/messages/messages.module.mjs +0 -17
- package/esm2022/messages/public_api.mjs +0 -4
- package/esm2022/metergroup/cax-design-system-metergroup.mjs +0 -5
- package/esm2022/metergroup/metergroup.interface.mjs +0 -2
- package/esm2022/metergroup/metergroup.mjs +0 -280
- package/esm2022/metergroup/public_api.mjs +0 -3
- package/esm2022/multiselect/cax-design-system-multiselect.mjs +0 -5
- package/esm2022/multiselect/multiselect.interface.mjs +0 -2
- package/esm2022/multiselect/multiselect.mjs +0 -1875
- package/esm2022/multiselect/multiselect.module.mjs +0 -30
- package/esm2022/multiselect/public_api.mjs +0 -4
- package/esm2022/navigation/cax-design-system-navigation.mjs +0 -5
- package/esm2022/navigation/navigation.interface.mjs +0 -2
- package/esm2022/navigation/navigation.mjs +0 -399
- package/esm2022/navigation/navigation.module.mjs +0 -16
- package/esm2022/navigation/public_api.mjs +0 -3
- package/esm2022/orderlist/cax-design-system-orderlist.mjs +0 -5
- package/esm2022/orderlist/orderlist.interface.mjs +0 -2
- package/esm2022/orderlist/orderlist.mjs +0 -993
- package/esm2022/orderlist/public_api.mjs +0 -3
- package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +0 -5
- package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
- package/esm2022/organizationchart/organizationchart.mjs +0 -416
- package/esm2022/organizationchart/public_api.mjs +0 -3
- package/esm2022/overlay/cax-design-system-overlay.mjs +0 -5
- package/esm2022/overlay/overlay.mjs +0 -579
- package/esm2022/overlay/overlay.module.mjs +0 -17
- package/esm2022/overlay/public_api.mjs +0 -3
- package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +0 -5
- package/esm2022/overlaypanel/overlaypanel.mjs +0 -470
- package/esm2022/overlaypanel/overlaypanel.module.mjs +0 -17
- package/esm2022/overlaypanel/public_api.mjs +0 -3
- package/esm2022/paginator/cax-design-system-paginator.mjs +0 -5
- package/esm2022/paginator/paginator.interface.mjs +0 -2
- package/esm2022/paginator/paginator.mjs +0 -437
- package/esm2022/paginator/paginator.module.mjs +0 -27
- package/esm2022/paginator/public_api.mjs +0 -4
- package/esm2022/panel/cax-design-system-panel.mjs +0 -5
- package/esm2022/panel/panel.interface.mjs +0 -2
- package/esm2022/panel/panel.mjs +0 -393
- package/esm2022/panel/public_api.mjs +0 -3
- package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +0 -5
- package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
- package/esm2022/panelmenu/panelmenu.mjs +0 -1276
- package/esm2022/panelmenu/public_api.mjs +0 -3
- package/esm2022/password/cax-design-system-password.mjs +0 -5
- package/esm2022/password/password.mjs +0 -1017
- package/esm2022/password/public_api.mjs +0 -2
- package/esm2022/picklist/cax-design-system-picklist.mjs +0 -5
- package/esm2022/picklist/picklist.interface.mjs +0 -2
- package/esm2022/picklist/picklist.mjs +0 -1909
- package/esm2022/picklist/public_api.mjs +0 -3
- package/esm2022/progressbar/cax-design-system-progressbar.mjs +0 -5
- package/esm2022/progressbar/progressbar.mjs +0 -86
- package/esm2022/progressbar/progressbar.module.mjs +0 -18
- package/esm2022/progressbar/public_api.mjs +0 -3
- package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +0 -5
- package/esm2022/progressspinner/progressspinner.mjs +0 -112
- package/esm2022/progressspinner/progressspinner.module.mjs +0 -18
- package/esm2022/progressspinner/public_api.mjs +0 -3
- package/esm2022/public_api.mjs +0 -2
- package/esm2022/radiobutton/cax-design-system-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 -284
- package/esm2022/radiobutton/radiobutton.module.mjs +0 -16
- package/esm2022/rating/cax-design-system-rating.mjs +0 -5
- package/esm2022/rating/public_api.mjs +0 -3
- package/esm2022/rating/rating.interface.mjs +0 -2
- package/esm2022/rating/rating.mjs +0 -388
- package/esm2022/ripple/cax-design-system-ripple.mjs +0 -5
- package/esm2022/ripple/public_api.mjs +0 -3
- package/esm2022/ripple/ripple.mjs +0 -129
- package/esm2022/ripple/ripple.module.mjs +0 -16
- package/esm2022/scroller/cax-design-system-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 -981
- package/esm2022/scroller/scroller.module.mjs +0 -17
- package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +0 -5
- package/esm2022/scrollpanel/public_api.mjs +0 -3
- package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
- package/esm2022/scrollpanel/scrollpanel.mjs +0 -501
- package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +0 -5
- package/esm2022/scrolltop/public_api.mjs +0 -3
- package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
- package/esm2022/scrolltop/scrolltop.mjs +0 -282
- package/esm2022/selectbutton/cax-design-system-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 -303
- package/esm2022/selectbutton/selectbutton.module.mjs +0 -21
- package/esm2022/sidebar/cax-design-system-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 -488
- package/esm2022/sidebar/sidebar.module.mjs +0 -21
- package/esm2022/skeleton/cax-design-system-skeleton.mjs +0 -5
- package/esm2022/skeleton/public_api.mjs +0 -3
- package/esm2022/skeleton/skeleton.mjs +0 -87
- package/esm2022/skeleton/skeleton.module.mjs +0 -18
- package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +0 -5
- package/esm2022/slidemenu/public_api.mjs +0 -3
- package/esm2022/slidemenu/slidemenu.interface.mjs +0 -2
- package/esm2022/slidemenu/slidemenu.mjs +0 -1501
- package/esm2022/slider/cax-design-system-slider.mjs +0 -5
- package/esm2022/slider/public_api.mjs +0 -3
- package/esm2022/slider/slider.interface.mjs +0 -2
- package/esm2022/slider/slider.mjs +0 -796
- package/esm2022/speeddial/cax-design-system-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 -611
- package/esm2022/speeddial/speeddial.module.mjs +0 -24
- package/esm2022/spinner/cax-design-system-spinner.mjs +0 -5
- package/esm2022/spinner/public_api.mjs +0 -2
- package/esm2022/spinner/spinner.mjs +0 -447
- package/esm2022/splitbutton/cax-design-system-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 -369
- package/esm2022/splitbutton/splitbutton.module.mjs +0 -23
- package/esm2022/splitter/cax-design-system-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 -490
- package/esm2022/splitter/splitter.module.mjs +0 -19
- package/esm2022/stepper/cax-design-system-stepper.mjs +0 -5
- package/esm2022/stepper/public_api.mjs +0 -3
- package/esm2022/stepper/stepper.interface.mjs +0 -2
- package/esm2022/stepper/stepper.mjs +0 -677
- package/esm2022/steps/cax-design-system-steps.mjs +0 -5
- package/esm2022/steps/public_api.mjs +0 -3
- package/esm2022/steps/steps.mjs +0 -207
- package/esm2022/steps/steps.module.mjs +0 -20
- package/esm2022/styleclass/cax-design-system-styleclass.mjs +0 -5
- package/esm2022/styleclass/public_api.mjs +0 -2
- package/esm2022/styleclass/styleclass.mjs +0 -316
- package/esm2022/table/cax-design-system-table.mjs +0 -5
- package/esm2022/table/columnfilter.interface.mjs +0 -2
- package/esm2022/table/components/cell-editor/cell-editor.mjs +0 -52
- package/esm2022/table/components/column-filter/column-filter.mjs +0 -865
- package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +0 -107
- package/esm2022/table/components/sort-icon/sort-icon.mjs +0 -78
- package/esm2022/table/components/table-body/table-body.mjs +0 -152
- package/esm2022/table/components/table-checkbox/table-checkbox.mjs +0 -83
- package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +0 -92
- package/esm2022/table/components/table-radio-button/table-radio-button.mjs +0 -79
- package/esm2022/table/directives/cancel-editable-row.directive.mjs +0 -32
- package/esm2022/table/directives/cell-highlight.directive.mjs +0 -42
- package/esm2022/table/directives/content-menu-row.directive.mjs +0 -70
- package/esm2022/table/directives/dynamic-column-width.directive.mjs +0 -34
- package/esm2022/table/directives/editable-column.directive.mjs +0 -344
- package/esm2022/table/directives/editable-row.directive.mjs +0 -32
- package/esm2022/table/directives/frozen-column.directive.mjs +0 -77
- package/esm2022/table/directives/init-editable-row.directive.mjs +0 -32
- package/esm2022/table/directives/reorderable-column.directive.mjs +0 -115
- package/esm2022/table/directives/reorderable-row-handle.directive.mjs +0 -25
- package/esm2022/table/directives/reorderable-row.directive.mjs +0 -122
- package/esm2022/table/directives/resizable-column.directive.mjs +0 -123
- package/esm2022/table/directives/row-group-header.directive.mjs +0 -26
- package/esm2022/table/directives/row-toggler.directive.mjs +0 -42
- package/esm2022/table/directives/save-editable-row.directive.mjs +0 -32
- package/esm2022/table/directives/selectable-row-double-click.directive.mjs +0 -71
- package/esm2022/table/directives/selectable-row.directive.mjs +0 -243
- package/esm2022/table/directives/sortable-column.directive.mjs +0 -90
- package/esm2022/table/public_api.mjs +0 -31
- package/esm2022/table/table.interface.mjs +0 -2
- package/esm2022/table/table.mjs +0 -2799
- package/esm2022/table/table.module.mjs +0 -157
- package/esm2022/table/table.service.mjs +0 -42
- package/esm2022/tableconfiguration/cax-design-system-tableconfiguration.mjs +0 -5
- package/esm2022/tableconfiguration/public_api.mjs +0 -3
- package/esm2022/tableconfiguration/tableconfiguration.mjs +0 -60
- package/esm2022/tableconfiguration/tableconfiguration.module.mjs +0 -16
- package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +0 -5
- package/esm2022/tabmenu/public_api.mjs +0 -3
- package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
- package/esm2022/tabmenu/tabmenu.mjs +0 -576
- package/esm2022/tabview/cax-design-system-tabview.mjs +0 -5
- package/esm2022/tabview/public_api.mjs +0 -4
- package/esm2022/tabview/tabview.interface.mjs +0 -2
- package/esm2022/tabview/tabview.mjs +0 -913
- package/esm2022/tabview/tabview.module.mjs +0 -25
- package/esm2022/tag/cax-design-system-tag.mjs +0 -5
- package/esm2022/tag/public_api.mjs +0 -4
- package/esm2022/tag/tag.interface.mjs +0 -2
- package/esm2022/tag/tag.mjs +0 -95
- package/esm2022/tag/tag.module.mjs +0 -19
- package/esm2022/terminal/cax-design-system-terminal.mjs +0 -5
- package/esm2022/terminal/public_api.mjs +0 -3
- package/esm2022/terminal/terminal.mjs +0 -143
- package/esm2022/terminal/terminalservice.mjs +0 -25
- package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +0 -5
- package/esm2022/tieredmenu/public_api.mjs +0 -4
- package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
- package/esm2022/tieredmenu/tieredmenu.mjs +0 -1289
- package/esm2022/tieredmenu/tiredmenu.module.mjs +0 -23
- package/esm2022/timeline/cax-design-system-timeline.mjs +0 -5
- package/esm2022/timeline/public_api.mjs +0 -4
- package/esm2022/timeline/timeline.interface.mjs +0 -2
- package/esm2022/timeline/timeline.mjs +0 -83
- package/esm2022/timeline/timeline.module.mjs +0 -19
- package/esm2022/toast/cax-design-system-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/toast.interface.mjs +0 -2
- package/esm2022/toast/toast.mjs +0 -324
- package/esm2022/toast/toast.module.mjs +0 -18
- package/esm2022/toast/toastitem.mjs +0 -170
- package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +0 -5
- package/esm2022/togglebutton/public_api.mjs +0 -3
- package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
- package/esm2022/togglebutton/togglebutton.mjs +0 -274
- package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +0 -5
- package/esm2022/toggleswitch/public_api.mjs +0 -3
- package/esm2022/toggleswitch/toggleswitch.mjs +0 -37
- package/esm2022/toggleswitch/toggleswitch.module.mjs +0 -19
- package/esm2022/toolbar/cax-design-system-toolbar.mjs +0 -5
- package/esm2022/toolbar/public_api.mjs +0 -3
- package/esm2022/toolbar/toolbar.interface.mjs +0 -2
- package/esm2022/toolbar/toolbar.mjs +0 -111
- package/esm2022/tooltip/cax-design-system-tooltip.mjs +0 -5
- package/esm2022/tooltip/public_api.mjs +0 -3
- package/esm2022/tooltip/tooltip.mjs +0 -889
- package/esm2022/tooltip/tooltip.module.mjs +0 -20
- package/esm2022/tree/cax-design-system-tree.mjs +0 -5
- package/esm2022/tree/public_api.mjs +0 -4
- package/esm2022/tree/tree.interface.mjs +0 -2
- package/esm2022/tree/tree.mjs +0 -1544
- package/esm2022/tree/tree.module.mjs +0 -31
- package/esm2022/treeselect/cax-design-system-treeselect.mjs +0 -5
- package/esm2022/treeselect/public_api.mjs +0 -4
- package/esm2022/treeselect/treeselect.interface.mjs +0 -2
- package/esm2022/treeselect/treeselect.mjs +0 -865
- package/esm2022/treeselect/treeselect.module.mjs +0 -26
- package/esm2022/treetable/cax-design-system-treetable.mjs +0 -5
- package/esm2022/treetable/public_api.mjs +0 -3
- package/esm2022/treetable/treetable.interface.mjs +0 -2
- package/esm2022/treetable/treetable.mjs +0 -4111
- package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +0 -5
- package/esm2022/tristatecheckbox/public_api.mjs +0 -4
- package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +0 -2
- package/esm2022/tristatecheckbox/tristatecheckbox.mjs +0 -215
- package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +0 -17
- package/esm2022/ts-helpers/cax-design-system-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/upload/cax-design-system-upload.mjs +0 -5
- package/esm2022/upload/public_api.mjs +0 -3
- package/esm2022/upload/upload.component.mjs +0 -367
- package/esm2022/upload/upload.component.module.mjs +0 -21
- package/esm2022/utils/cax-design-system-utils.mjs +0 -5
- package/esm2022/utils/objectutils.mjs +0 -258
- package/esm2022/utils/public_api.mjs +0 -5
- package/esm2022/utils/uniquecomponentid.mjs +0 -6
- package/esm2022/utils/zindexutils.mjs +0 -35
- package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +0 -5
- package/esm2022/virtualscroller/public_api.mjs +0 -3
- package/esm2022/virtualscroller/virtualscroller.interface.mjs +0 -2
- package/esm2022/virtualscroller/virtualscroller.mjs +0 -215
- package/fieldset/fieldset.d.ts +0 -93
- package/fieldset/fieldset.interface.d.ts +0 -46
- package/fieldset/public_api.d.ts +0 -2
- package/fileupload/fileupload.d.ts +0 -380
- package/fileupload/fileupload.interface.d.ts +0 -226
- package/fileupload/public_api.d.ts +0 -2
- package/floatlabel/floatlabel.d.ts +0 -9
- package/floatlabel/floatlabel.module.d.ts +0 -10
- package/floatlabel/public_api.d.ts +0 -2
- package/focustrap/focustrap.d.ts +0 -34
- package/focustrap/public_api.d.ts +0 -1
- package/galleria/galleria.d.ts +0 -404
- package/galleria/galleria.interface.d.ts +0 -97
- package/galleria/public_api.d.ts +0 -2
- package/iconfield/iconfield.d.ts +0 -25
- package/iconfield/public_api.d.ts +0 -1
- package/icons/angledoubledown/angledoubledown.d.ts +0 -6
- package/icons/angledoubledown/public_api.d.ts +0 -1
- package/icons/angledoubleleft/angledoubleleft.d.ts +0 -6
- package/icons/angledoubleleft/public_api.d.ts +0 -1
- package/icons/angledoubleright/angledoubleright.d.ts +0 -6
- package/icons/angledoubleright/public_api.d.ts +0 -1
- package/icons/angledoubleup/angledoubleup.d.ts +0 -6
- package/icons/angledoubleup/public_api.d.ts +0 -1
- package/icons/angledown/angledown.d.ts +0 -6
- package/icons/angledown/public_api.d.ts +0 -1
- package/icons/angleleft/angleleft.d.ts +0 -6
- package/icons/angleleft/public_api.d.ts +0 -1
- package/icons/angleright/angleright.d.ts +0 -6
- package/icons/angleright/public_api.d.ts +0 -1
- package/icons/angleup/angleup.d.ts +0 -6
- package/icons/angleup/public_api.d.ts +0 -1
- package/icons/arrowdown/arrowdown.d.ts +0 -9
- package/icons/arrowdown/public_api.d.ts +0 -1
- package/icons/arrowdownleft/arrowdownleft.d.ts +0 -6
- package/icons/arrowdownleft/public_api.d.ts +0 -1
- package/icons/arrowdownright/arrowdownright.d.ts +0 -6
- package/icons/arrowdownright/public_api.d.ts +0 -1
- package/icons/arrowleft/arrowleft.d.ts +0 -8
- package/icons/arrowleft/public_api.d.ts +0 -1
- package/icons/arrowright/arrowright.d.ts +0 -6
- package/icons/arrowright/public_api.d.ts +0 -1
- package/icons/arrowup/arrowup.d.ts +0 -8
- package/icons/arrowup/public_api.d.ts +0 -1
- package/icons/ban/ban.d.ts +0 -8
- package/icons/ban/public_api.d.ts +0 -1
- package/icons/bars/bars.d.ts +0 -6
- package/icons/bars/public_api.d.ts +0 -1
- package/icons/blank/blank.d.ts +0 -6
- package/icons/blank/public_api.d.ts +0 -1
- package/icons/calendar/calendar.d.ts +0 -6
- package/icons/calendar/public_api.d.ts +0 -1
- package/icons/caretleft/caretleft.d.ts +0 -6
- package/icons/caretleft/public_api.d.ts +0 -1
- package/icons/caretright/caretright.d.ts +0 -6
- package/icons/caretright/public_api.d.ts +0 -1
- package/icons/check/check.d.ts +0 -6
- package/icons/check/public_api.d.ts +0 -1
- package/icons/chevrondown/chevrondown.d.ts +0 -6
- package/icons/chevrondown/public_api.d.ts +0 -1
- package/icons/chevronleft/chevronleft.d.ts +0 -6
- package/icons/chevronleft/public_api.d.ts +0 -1
- package/icons/chevronright/chevronright.d.ts +0 -6
- package/icons/chevronright/public_api.d.ts +0 -1
- package/icons/chevronup/chevronup.d.ts +0 -6
- package/icons/chevronup/public_api.d.ts +0 -1
- package/icons/exclamationtriangle/exclamationtriangle.d.ts +0 -9
- package/icons/exclamationtriangle/public_api.d.ts +0 -1
- package/icons/eye/eye.d.ts +0 -6
- package/icons/eye/public_api.d.ts +0 -1
- package/icons/eyeslash/eyeslash.d.ts +0 -8
- package/icons/eyeslash/public_api.d.ts +0 -1
- package/icons/filter/filter.d.ts +0 -8
- package/icons/filter/public_api.d.ts +0 -1
- package/icons/filterslash/filterslash.d.ts +0 -8
- package/icons/filterslash/public_api.d.ts +0 -1
- package/icons/home/home.d.ts +0 -8
- package/icons/home/public_api.d.ts +0 -1
- package/icons/infocircle/infocircle.d.ts +0 -8
- package/icons/infocircle/public_api.d.ts +0 -1
- package/icons/minus/minus.d.ts +0 -6
- package/icons/minus/public_api.d.ts +0 -1
- package/icons/pencil/pencil.d.ts +0 -8
- package/icons/pencil/public_api.d.ts +0 -1
- package/icons/plus/plus.d.ts +0 -8
- package/icons/plus/public_api.d.ts +0 -1
- package/icons/refresh/public_api.d.ts +0 -1
- package/icons/refresh/refresh.d.ts +0 -8
- package/icons/search/public_api.d.ts +0 -1
- package/icons/search/search.d.ts +0 -8
- package/icons/searchminus/public_api.d.ts +0 -1
- package/icons/searchminus/searchminus.d.ts +0 -8
- package/icons/searchplus/public_api.d.ts +0 -1
- package/icons/searchplus/searchplus.d.ts +0 -8
- package/icons/sortalt/public_api.d.ts +0 -1
- package/icons/sortalt/sortalt.d.ts +0 -8
- package/icons/sortamountdown/public_api.d.ts +0 -1
- package/icons/sortamountdown/sortamountdown.d.ts +0 -8
- package/icons/sortamountupalt/public_api.d.ts +0 -1
- package/icons/sortamountupalt/sortamountupalt.d.ts +0 -8
- package/icons/spinner/public_api.d.ts +0 -1
- package/icons/spinner/spinner.d.ts +0 -8
- package/icons/star/public_api.d.ts +0 -1
- package/icons/star/star.d.ts +0 -8
- package/icons/starfill/public_api.d.ts +0 -1
- package/icons/starfill/starfill.d.ts +0 -8
- package/icons/thlarge/public_api.d.ts +0 -1
- package/icons/thlarge/thlarge.d.ts +0 -8
- package/icons/times/public_api.d.ts +0 -1
- package/icons/times/times.d.ts +0 -6
- package/icons/timescircle/public_api.d.ts +0 -1
- package/icons/timescircle/timescircle.d.ts +0 -8
- package/icons/trash/public_api.d.ts +0 -1
- package/icons/trash/trash.d.ts +0 -8
- package/icons/undo/public_api.d.ts +0 -1
- package/icons/undo/undo.d.ts +0 -8
- package/icons/upload/public_api.d.ts +0 -1
- package/icons/upload/upload.d.ts +0 -8
- package/icons/windowmaximize/public_api.d.ts +0 -1
- package/icons/windowmaximize/windowmaximize.d.ts +0 -8
- package/icons/windowminimize/public_api.d.ts +0 -1
- package/icons/windowminimize/windowminimize.d.ts +0 -8
- package/image/image.d.ts +0 -188
- package/image/image.interface.d.ts +0 -31
- package/image/image.module.d.ts +0 -8
- package/image/public_api.d.ts +0 -3
- package/inplace/inplace.d.ts +0 -109
- package/inplace/inplace.interface.d.ts +0 -19
- package/inplace/public_api.d.ts +0 -2
- package/inputgroup/inputgroup.d.ts +0 -33
- package/inputgroup/inputgroup.module.d.ts +0 -15
- package/inputgroup/public_api.d.ts +0 -2
- package/inputgroupaddon/inputgroupaddon.d.ts +0 -21
- package/inputgroupaddon/inputgroupaddon.module.d.ts +0 -14
- package/inputgroupaddon/public_api.d.ts +0 -2
- package/inputicon/inputicon.d.ts +0 -21
- package/inputicon/public_api.d.ts +0 -1
- package/inputmask/inputmask.d.ts +0 -273
- package/inputmask/inputmask.interface.d.ts +0 -19
- package/inputmask/inputmask.module.d.ts +0 -12
- package/inputmask/public_api.d.ts +0 -3
- package/inputnumber/inputnumber.d.ts +0 -397
- package/inputnumber/inputnumber.interface.d.ts +0 -38
- package/inputnumber/inputnumber.module.d.ts +0 -8
- package/inputnumber/public_api.d.ts +0 -3
- package/inputotp/inputotp.d.ts +0 -123
- package/inputotp/inputotp.interface.d.ts +0 -65
- package/inputotp/public_api.d.ts +0 -2
- package/inputswitch/inputswitch.d.ts +0 -106
- package/inputswitch/inputswitch.interface.d.ts +0 -15
- package/inputswitch/public_api.d.ts +0 -2
- package/inputtext/inputtext.component.d.ts +0 -43
- package/inputtext/inputtext.directive.d.ts +0 -25
- package/inputtext/inputtext.module.d.ts +0 -10
- package/inputtext/public_api.d.ts +0 -3
- package/inputtextarea/inputtextarea.component.d.ts +0 -57
- package/inputtextarea/inputtextarea.directive.d.ts +0 -47
- package/inputtextarea/inputtextarea.module.d.ts +0 -10
- package/inputtextarea/public_api.d.ts +0 -3
- package/keyfilter/keyfilter.d.ts +0 -58
- package/keyfilter/keyfilter.interface.d.ts +0 -5
- package/keyfilter/public_api.d.ts +0 -2
- package/knob/knob.d.ts +0 -178
- package/knob/public_api.d.ts +0 -1
- package/listbox/listbox.d.ts +0 -463
- package/listbox/listbox.interface.d.ts +0 -156
- package/listbox/public_api.d.ts +0 -2
- package/logo/logo.d.ts +0 -11
- package/logo/logo.module.d.ts +0 -7
- package/logo/public_api.d.ts +0 -2
- package/megamenu/megamenu.d.ts +0 -198
- package/megamenu/megamenu.interface.d.ts +0 -31
- package/megamenu/public_api.d.ts +0 -2
- package/menu/menu.d.ts +0 -210
- package/menu/menu.module.d.ts +0 -12
- package/menu/public_api.d.ts +0 -2
- package/menubar/menubar.d.ts +0 -248
- package/menubar/menubar.interface.d.ts +0 -40
- package/menubar/public_api.d.ts +0 -2
- package/message/message.d.ts +0 -52
- package/message/public_api.d.ts +0 -1
- package/messages/messages.d.ts +0 -115
- package/messages/messages.interface.d.ts +0 -18
- package/messages/messages.module.d.ts +0 -8
- package/messages/public_api.d.ts +0 -3
- package/metergroup/metergroup.d.ts +0 -101
- package/metergroup/metergroup.interface.d.ts +0 -122
- package/metergroup/public_api.d.ts +0 -2
- package/multiselect/multiselect.d.ts +0 -710
- package/multiselect/multiselect.interface.d.ts +0 -247
- package/multiselect/multiselect.module.d.ts +0 -20
- package/multiselect/public_api.d.ts +0 -3
- package/navigation/navigation.d.ts +0 -70
- package/navigation/navigation.interface.d.ts +0 -26
- package/navigation/navigation.module.d.ts +0 -7
- package/navigation/public_api.d.ts +0 -2
- package/orderlist/orderlist.d.ts +0 -270
- package/orderlist/orderlist.interface.d.ts +0 -110
- package/orderlist/public_api.d.ts +0 -2
- package/organizationchart/organizationchart.d.ts +0 -132
- package/organizationchart/organizationchart.interface.d.ts +0 -59
- package/organizationchart/public_api.d.ts +0 -2
- package/overlay/overlay.d.ts +0 -238
- package/overlay/overlay.module.d.ts +0 -8
- package/overlay/public_api.d.ts +0 -2
- package/overlaypanel/overlaypanel.d.ts +0 -162
- package/overlaypanel/overlaypanel.module.d.ts +0 -8
- package/overlaypanel/public_api.d.ts +0 -2
- package/paginator/paginator.d.ts +0 -195
- package/paginator/paginator.interface.d.ts +0 -37
- package/paginator/paginator.module.d.ts +0 -17
- package/paginator/public_api.d.ts +0 -3
- package/panel/panel.d.ts +0 -126
- package/panel/panel.interface.d.ts +0 -58
- package/panel/public_api.d.ts +0 -2
- package/panelmenu/panelmenu.d.ts +0 -225
- package/panelmenu/panelmenu.interface.d.ts +0 -23
- package/panelmenu/public_api.d.ts +0 -2
- package/password/password.d.ts +0 -342
- package/password/public_api.d.ts +0 -1
- package/picklist/picklist.d.ts +0 -453
- package/picklist/picklist.interface.d.ts +0 -242
- package/picklist/public_api.d.ts +0 -2
- package/progressbar/progressbar.d.ts +0 -54
- package/progressbar/progressbar.module.d.ts +0 -8
- package/progressbar/public_api.d.ts +0 -2
- package/progressspinner/progressspinner.d.ts +0 -50
- package/progressspinner/progressspinner.module.d.ts +0 -8
- package/progressspinner/public_api.d.ts +0 -2
- package/public_api.d.ts +0 -2
- package/radiobutton/public_api.d.ts +0 -3
- package/radiobutton/radiobutton.d.ts +0 -150
- package/radiobutton/radiobutton.interface.d.ts +0 -15
- package/radiobutton/radiobutton.module.d.ts +0 -7
- package/rating/public_api.d.ts +0 -2
- package/rating/rating.d.ts +0 -146
- package/rating/rating.interface.d.ts +0 -34
- package/ripple/public_api.d.ts +0 -2
- package/ripple/ripple.d.ts +0 -30
- package/ripple/ripple.module.d.ts +0 -7
- package/scroller/public_api.d.ts +0 -3
- package/scroller/scroller.d.ts +0 -343
- package/scroller/scroller.interface.d.ts +0 -177
- package/scroller/scroller.module.d.ts +0 -8
- package/scrollpanel/public_api.d.ts +0 -2
- package/scrollpanel/scrollpanel.d.ts +0 -103
- package/scrollpanel/scrollpanel.interface.d.ts +0 -11
- package/scrolltop/public_api.d.ts +0 -2
- package/scrolltop/scrolltop.d.ts +0 -97
- package/scrolltop/scrolltop.interface.d.ts +0 -18
- package/selectbutton/public_api.d.ts +0 -3
- package/selectbutton/selectbutton.d.ts +0 -128
- package/selectbutton/selectbutton.interface.d.ts +0 -45
- package/selectbutton/selectbutton.module.d.ts +0 -11
- package/sidebar/public_api.d.ts +0 -3
- package/sidebar/sidebar.d.ts +0 -173
- package/sidebar/sidebar.interface.d.ts +0 -27
- package/sidebar/sidebar.module.d.ts +0 -12
- package/skeleton/public_api.d.ts +0 -2
- package/skeleton/skeleton.d.ts +0 -61
- package/skeleton/skeleton.module.d.ts +0 -8
- package/slidemenu/public_api.d.ts +0 -2
- package/slidemenu/slidemenu.d.ts +0 -322
- package/slidemenu/slidemenu.interface.d.ts +0 -15
- package/slider/public_api.d.ts +0 -2
- package/slider/slider.d.ts +0 -174
- package/slider/slider.interface.d.ts +0 -38
- package/speeddial/public_api.d.ts +0 -3
- package/speeddial/speeddial.d.ts +0 -277
- package/speeddial/speeddial.interface.d.ts +0 -28
- package/speeddial/speeddial.module.d.ts +0 -14
- package/spinner/public_api.d.ts +0 -1
- package/spinner/spinner.d.ts +0 -90
- package/splitbutton/public_api.d.ts +0 -3
- package/splitbutton/splitbutton.d.ts +0 -222
- package/splitbutton/splitbutton.interface.d.ts +0 -30
- package/splitbutton/splitbutton.module.d.ts +0 -13
- package/splitter/public_api.d.ts +0 -3
- package/splitter/splitter.d.ts +0 -158
- package/splitter/splitter.interface.d.ts +0 -34
- package/splitter/splitter.module.d.ts +0 -9
- package/stepper/public_api.d.ts +0 -2
- package/stepper/stepper.d.ts +0 -117
- package/stepper/stepper.interface.d.ts +0 -26
- package/steps/public_api.d.ts +0 -2
- package/steps/steps.d.ts +0 -77
- package/steps/steps.module.d.ts +0 -10
- package/styleclass/public_api.d.ts +0 -1
- package/styleclass/styleclass.d.ts +0 -108
- package/table/columnfilter.interface.d.ts +0 -247
- package/table/components/cell-editor/cell-editor.d.ts +0 -20
- package/table/components/column-filter/column-filter.d.ts +0 -291
- package/table/components/column-filter-form-element/column-filter-form-element.d.ts +0 -37
- package/table/components/sort-icon/sort-icon.d.ts +0 -22
- package/table/components/table-body/table-body.d.ts +0 -36
- package/table/components/table-checkbox/table-checkbox.d.ts +0 -32
- package/table/components/table-header-checkbox/table-header-checkbox.d.ts +0 -29
- package/table/components/table-radio-button/table-radio-button.d.ts +0 -29
- package/table/directives/cancel-editable-row.directive.d.ts +0 -11
- package/table/directives/cell-highlight.directive.d.ts +0 -14
- package/table/directives/content-menu-row.directive.d.ts +0 -22
- package/table/directives/dynamic-column-width.directive.d.ts +0 -12
- package/table/directives/editable-column.directive.d.ts +0 -40
- package/table/directives/editable-row.directive.d.ts +0 -12
- package/table/directives/frozen-column.directive.d.ts +0 -16
- package/table/directives/init-editable-row.directive.d.ts +0 -11
- package/table/directives/reorderable-column.directive.d.ts +0 -32
- package/table/directives/reorderable-row-handle.directive.d.ts +0 -9
- package/table/directives/reorderable-row.directive.d.ts +0 -34
- package/table/directives/resizable-column.directive.d.ts +0 -35
- package/table/directives/row-group-header.directive.d.ts +0 -9
- package/table/directives/row-toggler.directive.d.ts +0 -13
- package/table/directives/save-editable-row.directive.d.ts +0 -11
- package/table/directives/selectable-row-double-click.directive.d.ts +0 -22
- package/table/directives/selectable-row.directive.d.ts +0 -37
- package/table/directives/sortable-column.directive.d.ts +0 -24
- package/table/public_api.d.ts +0 -30
- package/table/table.d.ts +0 -871
- package/table/table.interface.d.ts +0 -623
- package/table/table.module.d.ts +0 -34
- package/table/table.service.d.ts +0 -24
- package/tableconfiguration/public_api.d.ts +0 -2
- package/tableconfiguration/tableconfiguration.d.ts +0 -15
- package/tableconfiguration/tableconfiguration.module.d.ts +0 -7
- package/tabmenu/public_api.d.ts +0 -2
- package/tabmenu/tabmenu.d.ts +0 -126
- package/tabmenu/tabmenu.interface.d.ts +0 -32
- package/tabview/public_api.d.ts +0 -3
- package/tabview/tabview.d.ts +0 -293
- package/tabview/tabview.interface.d.ts +0 -49
- package/tabview/tabview.module.d.ts +0 -15
- package/tag/public_api.d.ts +0 -3
- package/tag/tag.d.ts +0 -61
- package/tag/tag.interface.d.ts +0 -11
- package/tag/tag.module.d.ts +0 -9
- package/terminal/public_api.d.ts +0 -2
- package/terminal/terminal.d.ts +0 -56
- package/terminal/terminalservice.d.ts +0 -11
- package/tieredmenu/public_api.d.ts +0 -3
- package/tieredmenu/tieredmenu.d.ts +0 -266
- package/tieredmenu/tieredmenu.interface.d.ts +0 -27
- package/tieredmenu/tiredmenu.module.d.ts +0 -13
- package/timeline/public_api.d.ts +0 -3
- package/timeline/timeline.d.ts +0 -47
- package/timeline/timeline.interface.d.ts +0 -43
- package/timeline/timeline.module.d.ts +0 -9
- package/toast/public_api.d.ts +0 -3
- package/toast/toast.d.ts +0 -142
- package/toast/toast.interface.d.ts +0 -52
- package/toast/toast.module.d.ts +0 -9
- package/toast/toastitem.d.ts +0 -37
- package/togglebutton/public_api.d.ts +0 -2
- package/togglebutton/togglebutton.d.ts +0 -115
- package/togglebutton/togglebutton.interface.d.ts +0 -34
- package/toggleswitch/public_api.d.ts +0 -2
- package/toggleswitch/toggleswitch.d.ts +0 -14
- package/toggleswitch/toggleswitch.module.d.ts +0 -9
- package/toolbar/public_api.d.ts +0 -2
- package/toolbar/toolbar.d.ts +0 -43
- package/toolbar/toolbar.interface.d.ts +0 -19
- package/tooltip/public_api.d.ts +0 -2
- package/tooltip/tooltip.d.ts +0 -208
- package/tooltip/tooltip.module.d.ts +0 -10
- package/tree/public_api.d.ts +0 -3
- package/tree/tree.d.ts +0 -461
- package/tree/tree.interface.d.ts +0 -193
- package/tree/tree.module.d.ts +0 -21
- package/treeselect/public_api.d.ts +0 -3
- package/treeselect/treeselect.d.ts +0 -394
- package/treeselect/treeselect.interface.d.ts +0 -108
- package/treeselect/treeselect.module.d.ts +0 -16
- package/treetable/public_api.d.ts +0 -2
- package/treetable/treetable.d.ts +0 -988
- package/treetable/treetable.interface.d.ts +0 -472
- package/tristatecheckbox/public_api.d.ts +0 -3
- package/tristatecheckbox/tristatecheckbox.d.ts +0 -117
- package/tristatecheckbox/tristatecheckbox.interface.d.ts +0 -30
- package/tristatecheckbox/tristatecheckbox.module.d.ts +0 -8
- package/ts-helpers/public_api.d.ts +0 -1
- package/ts-helpers/ts-helpers.d.ts +0 -4
- package/upload/public_api.d.ts +0 -2
- package/upload/upload.component.d.ts +0 -67
- package/upload/upload.component.module.d.ts +0 -11
- package/utils/objectutils.d.ts +0 -24
- package/utils/public_api.d.ts +0 -4
- package/utils/uniquecomponentid.d.ts +0 -2
- package/utils/zindexutils.d.ts +0 -7
- package/virtualscroller/public_api.d.ts +0 -2
- package/virtualscroller/virtualscroller.d.ts +0 -89
- package/virtualscroller/virtualscroller.interface.d.ts +0 -72
|
@@ -1,1296 +0,0 @@
|
|
|
1
|
-
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, ViewChild, ViewEncapsulation, booleanAttribute, forwardRef, numberAttribute } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
|
|
4
|
-
import { CaxTemplate } from 'cax-design-system/api';
|
|
5
|
-
import { AutoFocusModule } from 'cax-design-system/autofocus';
|
|
6
|
-
import { ButtonModule } from 'cax-design-system/button';
|
|
7
|
-
import { DomHandler } from 'cax-design-system/dom';
|
|
8
|
-
import { AngleDownIcon } from 'cax-design-system/icons/angledown';
|
|
9
|
-
import { AngleUpIcon } from 'cax-design-system/icons/angleup';
|
|
10
|
-
import { TimesIcon } from 'cax-design-system/icons/times';
|
|
11
|
-
import { InputTextModule } from 'cax-design-system/inputtext';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "cax-design-system/api";
|
|
14
|
-
import * as i2 from "@angular/common";
|
|
15
|
-
import * as i3 from "cax-design-system/inputtext";
|
|
16
|
-
import * as i4 from "cax-design-system/button";
|
|
17
|
-
import * as i5 from "cax-design-system/autofocus";
|
|
18
|
-
export const INPUTNUMBER_VALUE_ACCESSOR = {
|
|
19
|
-
provide: NG_VALUE_ACCESSOR,
|
|
20
|
-
useExisting: forwardRef(() => InputNumber),
|
|
21
|
-
multi: true
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* InputNumber is an input component to provide numerical input.
|
|
25
|
-
* @group Components
|
|
26
|
-
*/
|
|
27
|
-
export class InputNumber {
|
|
28
|
-
document;
|
|
29
|
-
el;
|
|
30
|
-
cd;
|
|
31
|
-
injector;
|
|
32
|
-
config;
|
|
33
|
-
/**
|
|
34
|
-
* Displays spinner buttons.
|
|
35
|
-
* @group Props
|
|
36
|
-
*/
|
|
37
|
-
showButtons = false;
|
|
38
|
-
/**
|
|
39
|
-
* Whether to format the value.
|
|
40
|
-
* @group Props
|
|
41
|
-
*/
|
|
42
|
-
format = true;
|
|
43
|
-
/**
|
|
44
|
-
* Layout of the buttons, valid values are "stacked" (default), "horizontal" and "vertical".
|
|
45
|
-
* @group Props
|
|
46
|
-
*/
|
|
47
|
-
buttonLayout = 'stacked';
|
|
48
|
-
/**
|
|
49
|
-
* Identifier of the focus input to match a label defined for the component.
|
|
50
|
-
* @group Props
|
|
51
|
-
*/
|
|
52
|
-
inputId;
|
|
53
|
-
/**
|
|
54
|
-
* Style class of the component.
|
|
55
|
-
* @group Props
|
|
56
|
-
*/
|
|
57
|
-
styleClass;
|
|
58
|
-
/**
|
|
59
|
-
* Inline style of the component.
|
|
60
|
-
* @group Props
|
|
61
|
-
*/
|
|
62
|
-
style;
|
|
63
|
-
/**
|
|
64
|
-
* Advisory information to display on input.
|
|
65
|
-
* @group Props
|
|
66
|
-
*/
|
|
67
|
-
placeholder;
|
|
68
|
-
/**
|
|
69
|
-
* Size of the input field.
|
|
70
|
-
* @group Props
|
|
71
|
-
*/
|
|
72
|
-
size;
|
|
73
|
-
/**
|
|
74
|
-
* Maximum number of character allows in the input field.
|
|
75
|
-
* @group Props
|
|
76
|
-
*/
|
|
77
|
-
maxlength;
|
|
78
|
-
/**
|
|
79
|
-
* Specifies tab order of the element.
|
|
80
|
-
* @group Props
|
|
81
|
-
*/
|
|
82
|
-
tabindex;
|
|
83
|
-
/**
|
|
84
|
-
* Title text of the input text.
|
|
85
|
-
* @group Props
|
|
86
|
-
*/
|
|
87
|
-
title;
|
|
88
|
-
/**
|
|
89
|
-
* Specifies one or more IDs in the DOM that labels the input field.
|
|
90
|
-
* @group Props
|
|
91
|
-
*/
|
|
92
|
-
ariaLabelledBy;
|
|
93
|
-
/**
|
|
94
|
-
* Used to define a string that labels the input element.
|
|
95
|
-
* @group Props
|
|
96
|
-
*/
|
|
97
|
-
ariaLabel;
|
|
98
|
-
/**
|
|
99
|
-
* Used to indicate that user input is required on an element before a form can be submitted.
|
|
100
|
-
* @group Props
|
|
101
|
-
*/
|
|
102
|
-
ariaRequired;
|
|
103
|
-
/**
|
|
104
|
-
* Name of the input field.
|
|
105
|
-
* @group Props
|
|
106
|
-
*/
|
|
107
|
-
name;
|
|
108
|
-
/**
|
|
109
|
-
* Indicates that whether the input field is required.
|
|
110
|
-
* @group Props
|
|
111
|
-
*/
|
|
112
|
-
required;
|
|
113
|
-
/**
|
|
114
|
-
* Used to define a string that autocomplete attribute the current element.
|
|
115
|
-
* @group Props
|
|
116
|
-
*/
|
|
117
|
-
autocomplete;
|
|
118
|
-
/**
|
|
119
|
-
* Mininum boundary value.
|
|
120
|
-
* @group Props
|
|
121
|
-
*/
|
|
122
|
-
min;
|
|
123
|
-
/**
|
|
124
|
-
* Maximum boundary value.
|
|
125
|
-
* @group Props
|
|
126
|
-
*/
|
|
127
|
-
max;
|
|
128
|
-
/**
|
|
129
|
-
* Style class of the increment button.
|
|
130
|
-
* @group Props
|
|
131
|
-
*/
|
|
132
|
-
incrementButtonClass;
|
|
133
|
-
/**
|
|
134
|
-
* Style class of the decrement button.
|
|
135
|
-
* @group Props
|
|
136
|
-
*/
|
|
137
|
-
decrementButtonClass;
|
|
138
|
-
/**
|
|
139
|
-
* Style class of the increment button.
|
|
140
|
-
* @group Props
|
|
141
|
-
*/
|
|
142
|
-
incrementButtonIcon;
|
|
143
|
-
/**
|
|
144
|
-
* Style class of the decrement button.
|
|
145
|
-
* @group Props
|
|
146
|
-
*/
|
|
147
|
-
decrementButtonIcon;
|
|
148
|
-
/**
|
|
149
|
-
* When present, it specifies that an input field is read-only.
|
|
150
|
-
* @group Props
|
|
151
|
-
*/
|
|
152
|
-
readonly = false;
|
|
153
|
-
/**
|
|
154
|
-
* Step factor to increment/decrement the value.
|
|
155
|
-
* @group Props
|
|
156
|
-
*/
|
|
157
|
-
step = 1;
|
|
158
|
-
/**
|
|
159
|
-
* Determines whether the input field is empty.
|
|
160
|
-
* @group Props
|
|
161
|
-
*/
|
|
162
|
-
allowEmpty = true;
|
|
163
|
-
/**
|
|
164
|
-
* Locale to be used in formatting.
|
|
165
|
-
* @group Props
|
|
166
|
-
*/
|
|
167
|
-
locale;
|
|
168
|
-
/**
|
|
169
|
-
* The locale matching algorithm to use. Possible values are "lookup" and "best fit"; the default is "best fit". See Locale Negotiation for details.
|
|
170
|
-
* @group Props
|
|
171
|
-
*/
|
|
172
|
-
localeMatcher;
|
|
173
|
-
/**
|
|
174
|
-
* Defines the behavior of the component, valid values are "decimal" and "currency".
|
|
175
|
-
* @group Props
|
|
176
|
-
*/
|
|
177
|
-
mode = 'decimal';
|
|
178
|
-
/**
|
|
179
|
-
* The currency to use in currency formatting. Possible values are the ISO 4217 currency codes, such as "USD" for the US dollar, "EUR" for the euro, or "CNY" for the Chinese RMB. There is no default value; if the style is "currency", the currency property must be provided.
|
|
180
|
-
* @group Props
|
|
181
|
-
*/
|
|
182
|
-
currency;
|
|
183
|
-
/**
|
|
184
|
-
* How to display the currency in currency formatting. Possible values are "symbol" to use a localized currency symbol such as €, ü"code" to use the ISO currency code, "name" to use a localized currency name such as "dollar"; the default is "symbol".
|
|
185
|
-
* @group Props
|
|
186
|
-
*/
|
|
187
|
-
currencyDisplay;
|
|
188
|
-
/**
|
|
189
|
-
* Whether to use grouping separators, such as thousands separators or thousand/lakh/crore separators.
|
|
190
|
-
* @group Props
|
|
191
|
-
*/
|
|
192
|
-
useGrouping = true;
|
|
193
|
-
/**
|
|
194
|
-
* Specifies the input variant of the component.
|
|
195
|
-
* @group Props
|
|
196
|
-
*/
|
|
197
|
-
variant = 'outlined';
|
|
198
|
-
/**
|
|
199
|
-
* The minimum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number and percent formatting is 0; the default for currency formatting is the number of minor unit digits provided by the ISO 4217 currency code list (2 if the list doesn't provide that information).
|
|
200
|
-
* @group Props
|
|
201
|
-
*/
|
|
202
|
-
minFractionDigits;
|
|
203
|
-
/**
|
|
204
|
-
* The maximum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number formatting is the larger of minimumFractionDigits and 3; the default for currency formatting is the larger of minimumFractionDigits and the number of minor unit digits provided by the ISO 4217 currency code list (2 if the list doesn't provide that information).
|
|
205
|
-
* @group Props
|
|
206
|
-
*/
|
|
207
|
-
maxFractionDigits;
|
|
208
|
-
/**
|
|
209
|
-
* Icon class to show before the input value
|
|
210
|
-
* @group Props
|
|
211
|
-
*/
|
|
212
|
-
prefixIcon;
|
|
213
|
-
/**
|
|
214
|
-
* Text to display before the value.
|
|
215
|
-
* @group Props
|
|
216
|
-
*/
|
|
217
|
-
prefix;
|
|
218
|
-
/**
|
|
219
|
-
* Text to display after the value.
|
|
220
|
-
* @group Props
|
|
221
|
-
*/
|
|
222
|
-
suffix;
|
|
223
|
-
/**
|
|
224
|
-
* Inline style of the input field.
|
|
225
|
-
* @group Props
|
|
226
|
-
*/
|
|
227
|
-
inputStyle;
|
|
228
|
-
/**
|
|
229
|
-
* Style class of the input field.
|
|
230
|
-
* @group Props
|
|
231
|
-
*/
|
|
232
|
-
inputStyleClass;
|
|
233
|
-
/**
|
|
234
|
-
* When enabled, a clear icon is displayed to clear the value.
|
|
235
|
-
* @group Props
|
|
236
|
-
*/
|
|
237
|
-
showClear = false;
|
|
238
|
-
/**
|
|
239
|
-
* When present, it specifies that the component should automatically get focus on load.
|
|
240
|
-
* @group Props
|
|
241
|
-
*/
|
|
242
|
-
autofocus;
|
|
243
|
-
/**
|
|
244
|
-
* When present, it specifies that the element should be disabled.
|
|
245
|
-
* @group Props
|
|
246
|
-
*/
|
|
247
|
-
get disabled() {
|
|
248
|
-
return this._disabled;
|
|
249
|
-
}
|
|
250
|
-
set disabled(disabled) {
|
|
251
|
-
if (disabled)
|
|
252
|
-
this.focused = false;
|
|
253
|
-
this._disabled = disabled;
|
|
254
|
-
if (this.timer)
|
|
255
|
-
this.clearTimer();
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Callback to invoke on input.
|
|
259
|
-
* @param {InputNumberInputEvent} event - Custom input event.
|
|
260
|
-
* @group Emits
|
|
261
|
-
*/
|
|
262
|
-
onInput = new EventEmitter();
|
|
263
|
-
/**
|
|
264
|
-
* Callback to invoke when the component receives focus.
|
|
265
|
-
* @param {Event} event - Browser event.
|
|
266
|
-
* @group Emits
|
|
267
|
-
*/
|
|
268
|
-
onFocus = new EventEmitter();
|
|
269
|
-
/**
|
|
270
|
-
* Callback to invoke when the component loses focus.
|
|
271
|
-
* @param {Event} event - Browser event.
|
|
272
|
-
* @group Emits
|
|
273
|
-
*/
|
|
274
|
-
onBlur = new EventEmitter();
|
|
275
|
-
/**
|
|
276
|
-
* Callback to invoke on input key press.
|
|
277
|
-
* @param {KeyboardEvent} event - Keyboard event.
|
|
278
|
-
* @group Emits
|
|
279
|
-
*/
|
|
280
|
-
onKeyDown = new EventEmitter();
|
|
281
|
-
/**
|
|
282
|
-
* Callback to invoke when clear token is clicked.
|
|
283
|
-
* @group Emits
|
|
284
|
-
*/
|
|
285
|
-
onClear = new EventEmitter();
|
|
286
|
-
input;
|
|
287
|
-
templates;
|
|
288
|
-
clearIconTemplate;
|
|
289
|
-
incrementButtonIconTemplate;
|
|
290
|
-
decrementButtonIconTemplate;
|
|
291
|
-
value;
|
|
292
|
-
onModelChange = () => { };
|
|
293
|
-
onModelTouched = () => { };
|
|
294
|
-
focused;
|
|
295
|
-
initialized;
|
|
296
|
-
groupChar = '';
|
|
297
|
-
prefixChar = '';
|
|
298
|
-
suffixChar = '';
|
|
299
|
-
isSpecialChar;
|
|
300
|
-
timer;
|
|
301
|
-
lastValue;
|
|
302
|
-
_numeral;
|
|
303
|
-
numberFormat;
|
|
304
|
-
_decimal;
|
|
305
|
-
_decimalChar;
|
|
306
|
-
_group;
|
|
307
|
-
_minusSign;
|
|
308
|
-
_currency;
|
|
309
|
-
_prefix;
|
|
310
|
-
_suffix;
|
|
311
|
-
_index;
|
|
312
|
-
_disabled;
|
|
313
|
-
ngControl = null;
|
|
314
|
-
constructor(document, el, cd, injector, config) {
|
|
315
|
-
this.document = document;
|
|
316
|
-
this.el = el;
|
|
317
|
-
this.cd = cd;
|
|
318
|
-
this.injector = injector;
|
|
319
|
-
this.config = config;
|
|
320
|
-
}
|
|
321
|
-
ngOnChanges(simpleChange) {
|
|
322
|
-
const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];
|
|
323
|
-
if (props.some((p) => !!simpleChange[p])) {
|
|
324
|
-
this.updateConstructParser();
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
ngAfterContentInit() {
|
|
328
|
-
this.templates.forEach((item) => {
|
|
329
|
-
switch (item.getType()) {
|
|
330
|
-
case 'clearicon':
|
|
331
|
-
this.clearIconTemplate = item.template;
|
|
332
|
-
break;
|
|
333
|
-
case 'incrementbuttonicon':
|
|
334
|
-
this.incrementButtonIconTemplate = item.template;
|
|
335
|
-
break;
|
|
336
|
-
case 'decrementbuttonicon':
|
|
337
|
-
this.decrementButtonIconTemplate = item.template;
|
|
338
|
-
break;
|
|
339
|
-
}
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
ngOnInit() {
|
|
343
|
-
this.ngControl = this.injector.get(NgControl, null, { optional: true });
|
|
344
|
-
this.constructParser();
|
|
345
|
-
this.initialized = true;
|
|
346
|
-
}
|
|
347
|
-
getOptions() {
|
|
348
|
-
return {
|
|
349
|
-
localeMatcher: this.localeMatcher,
|
|
350
|
-
style: this.mode,
|
|
351
|
-
currency: this.currency,
|
|
352
|
-
currencyDisplay: this.currencyDisplay,
|
|
353
|
-
useGrouping: this.useGrouping,
|
|
354
|
-
minimumFractionDigits: this.minFractionDigits ?? undefined,
|
|
355
|
-
maximumFractionDigits: this.maxFractionDigits ?? undefined
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
constructParser() {
|
|
359
|
-
this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());
|
|
360
|
-
const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();
|
|
361
|
-
const index = new Map(numerals.map((d, i) => [d, i]));
|
|
362
|
-
this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');
|
|
363
|
-
this._group = this.getGroupingExpression();
|
|
364
|
-
this._minusSign = this.getMinusSignExpression();
|
|
365
|
-
this._currency = this.getCurrencyExpression();
|
|
366
|
-
this._decimal = this.getDecimalExpression();
|
|
367
|
-
this._decimalChar = this.getDecimalChar();
|
|
368
|
-
this._suffix = this.getSuffixExpression();
|
|
369
|
-
this._prefix = this.getPrefixExpression();
|
|
370
|
-
this._index = (d) => index.get(d);
|
|
371
|
-
}
|
|
372
|
-
updateConstructParser() {
|
|
373
|
-
if (this.initialized) {
|
|
374
|
-
this.constructParser();
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
escapeRegExp(text) {
|
|
378
|
-
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
379
|
-
}
|
|
380
|
-
getDecimalExpression() {
|
|
381
|
-
const decimalChar = this.getDecimalChar();
|
|
382
|
-
return new RegExp(`[${decimalChar}]`, 'g');
|
|
383
|
-
}
|
|
384
|
-
getDecimalChar() {
|
|
385
|
-
const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });
|
|
386
|
-
return formatter
|
|
387
|
-
.format(1.1)
|
|
388
|
-
.replace(this._currency, '')
|
|
389
|
-
.trim()
|
|
390
|
-
.replace(this._numeral, '');
|
|
391
|
-
}
|
|
392
|
-
getGroupingExpression() {
|
|
393
|
-
const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });
|
|
394
|
-
this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
|
|
395
|
-
return new RegExp(`[${this.groupChar}]`, 'g');
|
|
396
|
-
}
|
|
397
|
-
getMinusSignExpression() {
|
|
398
|
-
const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });
|
|
399
|
-
return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');
|
|
400
|
-
}
|
|
401
|
-
getCurrencyExpression() {
|
|
402
|
-
if (this.currency) {
|
|
403
|
-
const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });
|
|
404
|
-
return new RegExp(`[${formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');
|
|
405
|
-
}
|
|
406
|
-
return new RegExp(`[]`, 'g');
|
|
407
|
-
}
|
|
408
|
-
getPrefixExpression() {
|
|
409
|
-
if (this.prefix) {
|
|
410
|
-
this.prefixChar = this.prefix;
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });
|
|
414
|
-
this.prefixChar = formatter.format(1).split('1')[0];
|
|
415
|
-
}
|
|
416
|
-
return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');
|
|
417
|
-
}
|
|
418
|
-
getSuffixExpression() {
|
|
419
|
-
if (this.suffix) {
|
|
420
|
-
this.suffixChar = this.suffix;
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });
|
|
424
|
-
this.suffixChar = formatter.format(1).split('1')[1];
|
|
425
|
-
}
|
|
426
|
-
return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');
|
|
427
|
-
}
|
|
428
|
-
get isBlurUpdateOnMode() {
|
|
429
|
-
return this.ngControl?.control?.updateOn === 'blur';
|
|
430
|
-
}
|
|
431
|
-
formatValue(value) {
|
|
432
|
-
if (value != null) {
|
|
433
|
-
if (value === '-') {
|
|
434
|
-
return value;
|
|
435
|
-
}
|
|
436
|
-
if (this.format) {
|
|
437
|
-
let formatter = new Intl.NumberFormat(this.locale, this.getOptions());
|
|
438
|
-
let formattedValue = formatter.format(value);
|
|
439
|
-
if (this.prefix && value != this.prefix) {
|
|
440
|
-
formattedValue = this.prefix + ' ' + formattedValue;
|
|
441
|
-
}
|
|
442
|
-
if (this.suffix && value != this.suffix) {
|
|
443
|
-
formattedValue = formattedValue + this.suffix;
|
|
444
|
-
}
|
|
445
|
-
return formattedValue;
|
|
446
|
-
}
|
|
447
|
-
return value.toString();
|
|
448
|
-
}
|
|
449
|
-
return '';
|
|
450
|
-
}
|
|
451
|
-
parseValue(text) {
|
|
452
|
-
const suffixRegex = new RegExp(this._suffix, '');
|
|
453
|
-
const prefixRegex = new RegExp(this._prefix, '');
|
|
454
|
-
const currencyRegex = new RegExp(this._currency, '');
|
|
455
|
-
let filteredText = text
|
|
456
|
-
.replace(suffixRegex, '')
|
|
457
|
-
.replace(prefixRegex, '')
|
|
458
|
-
.trim()
|
|
459
|
-
.replace(/\s/g, '')
|
|
460
|
-
.replace(currencyRegex, '')
|
|
461
|
-
.replace(this._group, '')
|
|
462
|
-
.replace(this._minusSign, '-')
|
|
463
|
-
.replace(this._decimal, '.')
|
|
464
|
-
.replace(this._numeral, this._index);
|
|
465
|
-
if (filteredText) {
|
|
466
|
-
if (filteredText === '-')
|
|
467
|
-
// Minus sign
|
|
468
|
-
return filteredText;
|
|
469
|
-
let parsedValue = +filteredText;
|
|
470
|
-
return isNaN(parsedValue) ? null : parsedValue;
|
|
471
|
-
}
|
|
472
|
-
return null;
|
|
473
|
-
}
|
|
474
|
-
repeat(event, interval, dir) {
|
|
475
|
-
if (this.readonly) {
|
|
476
|
-
return;
|
|
477
|
-
}
|
|
478
|
-
let i = interval || 500;
|
|
479
|
-
this.clearTimer();
|
|
480
|
-
this.timer = setTimeout(() => {
|
|
481
|
-
this.repeat(event, 40, dir);
|
|
482
|
-
}, i);
|
|
483
|
-
this.spin(event, dir);
|
|
484
|
-
}
|
|
485
|
-
spin(event, dir) {
|
|
486
|
-
let step = this.step * dir;
|
|
487
|
-
let currentValue = this.parseValue(this.input?.nativeElement.value) || 0;
|
|
488
|
-
let newValue = this.validateValue(currentValue + step);
|
|
489
|
-
if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {
|
|
490
|
-
return;
|
|
491
|
-
}
|
|
492
|
-
this.updateInput(newValue, null, 'spin', null);
|
|
493
|
-
this.updateModel(event, newValue);
|
|
494
|
-
this.handleOnInput(event, currentValue, newValue);
|
|
495
|
-
}
|
|
496
|
-
clear() {
|
|
497
|
-
this.value = null;
|
|
498
|
-
this.onModelChange(this.value);
|
|
499
|
-
this.onClear.emit();
|
|
500
|
-
}
|
|
501
|
-
onUpButtonMouseDown(event) {
|
|
502
|
-
if (event.button === 2) {
|
|
503
|
-
this.clearTimer();
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
if (!this.disabled) {
|
|
507
|
-
this.input?.nativeElement.focus();
|
|
508
|
-
this.repeat(event, null, 1);
|
|
509
|
-
event.preventDefault();
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
onUpButtonMouseUp() {
|
|
513
|
-
if (!this.disabled) {
|
|
514
|
-
this.clearTimer();
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
onUpButtonMouseLeave() {
|
|
518
|
-
if (!this.disabled) {
|
|
519
|
-
this.clearTimer();
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
onUpButtonKeyDown(event) {
|
|
523
|
-
if (event.keyCode === 32 || event.keyCode === 13) {
|
|
524
|
-
this.repeat(event, null, 1);
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
onUpButtonKeyUp() {
|
|
528
|
-
if (!this.disabled) {
|
|
529
|
-
this.clearTimer();
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
onDownButtonMouseDown(event) {
|
|
533
|
-
if (event.button === 2) {
|
|
534
|
-
this.clearTimer();
|
|
535
|
-
return;
|
|
536
|
-
}
|
|
537
|
-
if (!this.disabled) {
|
|
538
|
-
this.input?.nativeElement.focus();
|
|
539
|
-
this.repeat(event, null, -1);
|
|
540
|
-
event.preventDefault();
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
onDownButtonMouseUp() {
|
|
544
|
-
if (!this.disabled) {
|
|
545
|
-
this.clearTimer();
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
onDownButtonMouseLeave() {
|
|
549
|
-
if (!this.disabled) {
|
|
550
|
-
this.clearTimer();
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
onDownButtonKeyUp() {
|
|
554
|
-
if (!this.disabled) {
|
|
555
|
-
this.clearTimer();
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
onDownButtonKeyDown(event) {
|
|
559
|
-
if (event.keyCode === 32 || event.keyCode === 13) {
|
|
560
|
-
this.repeat(event, null, -1);
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
onUserInput(event) {
|
|
564
|
-
if (this.readonly) {
|
|
565
|
-
return;
|
|
566
|
-
}
|
|
567
|
-
if (this.isSpecialChar) {
|
|
568
|
-
event.target.value = this.lastValue;
|
|
569
|
-
}
|
|
570
|
-
this.isSpecialChar = false;
|
|
571
|
-
}
|
|
572
|
-
onInputKeyDown(event) {
|
|
573
|
-
if (this.readonly) {
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
576
|
-
this.lastValue = event.target.value;
|
|
577
|
-
if (event.shiftKey || event.altKey) {
|
|
578
|
-
this.isSpecialChar = true;
|
|
579
|
-
return;
|
|
580
|
-
}
|
|
581
|
-
let selectionStart = event.target.selectionStart;
|
|
582
|
-
let selectionEnd = event.target.selectionEnd;
|
|
583
|
-
let inputValue = event.target.value;
|
|
584
|
-
let newValueStr = null;
|
|
585
|
-
if (event.altKey) {
|
|
586
|
-
event.preventDefault();
|
|
587
|
-
}
|
|
588
|
-
switch (event.key) {
|
|
589
|
-
case 'ArrowUp':
|
|
590
|
-
this.spin(event, 1);
|
|
591
|
-
event.preventDefault();
|
|
592
|
-
break;
|
|
593
|
-
case 'ArrowDown':
|
|
594
|
-
this.spin(event, -1);
|
|
595
|
-
event.preventDefault();
|
|
596
|
-
break;
|
|
597
|
-
case 'ArrowLeft':
|
|
598
|
-
for (let index = selectionStart; index <= inputValue.length; index++) {
|
|
599
|
-
const previousCharIndex = index === 0 ? 0 : index - 1;
|
|
600
|
-
if (this.isNumeralChar(inputValue.charAt(previousCharIndex))) {
|
|
601
|
-
this.input.nativeElement.setSelectionRange(index, index);
|
|
602
|
-
break;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
break;
|
|
606
|
-
case 'ArrowRight':
|
|
607
|
-
for (let index = selectionEnd; index >= 0; index--) {
|
|
608
|
-
if (this.isNumeralChar(inputValue.charAt(index))) {
|
|
609
|
-
this.input.nativeElement.setSelectionRange(index, index);
|
|
610
|
-
break;
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
break;
|
|
614
|
-
case 'Tab':
|
|
615
|
-
case 'Enter':
|
|
616
|
-
newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));
|
|
617
|
-
this.input.nativeElement.value = this.formatValue(newValueStr);
|
|
618
|
-
this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);
|
|
619
|
-
this.updateModel(event, newValueStr);
|
|
620
|
-
break;
|
|
621
|
-
case 'Backspace': {
|
|
622
|
-
event.preventDefault();
|
|
623
|
-
if (selectionStart === selectionEnd) {
|
|
624
|
-
if ((selectionStart == 1 && this.prefix) || (selectionStart == inputValue.length && this.suffix)) {
|
|
625
|
-
break;
|
|
626
|
-
}
|
|
627
|
-
const deleteChar = inputValue.charAt(selectionStart - 1);
|
|
628
|
-
const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
|
|
629
|
-
if (this.isNumeralChar(deleteChar)) {
|
|
630
|
-
const decimalLength = this.getDecimalLength(inputValue);
|
|
631
|
-
if (this._group.test(deleteChar)) {
|
|
632
|
-
this._group.lastIndex = 0;
|
|
633
|
-
newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
|
|
634
|
-
}
|
|
635
|
-
else if (this._decimal.test(deleteChar)) {
|
|
636
|
-
this._decimal.lastIndex = 0;
|
|
637
|
-
if (decimalLength) {
|
|
638
|
-
this.input?.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);
|
|
639
|
-
}
|
|
640
|
-
else {
|
|
641
|
-
newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
|
|
645
|
-
const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
|
|
646
|
-
newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
|
|
647
|
-
}
|
|
648
|
-
else if (decimalCharIndexWithoutPrefix === 1) {
|
|
649
|
-
newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
|
|
650
|
-
newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
|
|
651
|
-
}
|
|
652
|
-
else {
|
|
653
|
-
newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
else if (this.mode === 'currency' && deleteChar.search(this._currency) != -1) {
|
|
657
|
-
newValueStr = inputValue.slice(1);
|
|
658
|
-
}
|
|
659
|
-
this.updateValue(event, newValueStr, null, 'delete-single');
|
|
660
|
-
}
|
|
661
|
-
else {
|
|
662
|
-
newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
|
|
663
|
-
this.updateValue(event, newValueStr, null, 'delete-range');
|
|
664
|
-
}
|
|
665
|
-
break;
|
|
666
|
-
}
|
|
667
|
-
case 'Delete':
|
|
668
|
-
event.preventDefault();
|
|
669
|
-
if (selectionStart === selectionEnd) {
|
|
670
|
-
if ((selectionStart == 0 && this.prefix) || (selectionStart == inputValue.length - 1 && this.suffix)) {
|
|
671
|
-
break;
|
|
672
|
-
}
|
|
673
|
-
const deleteChar = inputValue.charAt(selectionStart);
|
|
674
|
-
const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
|
|
675
|
-
if (this.isNumeralChar(deleteChar)) {
|
|
676
|
-
const decimalLength = this.getDecimalLength(inputValue);
|
|
677
|
-
if (this._group.test(deleteChar)) {
|
|
678
|
-
this._group.lastIndex = 0;
|
|
679
|
-
newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
|
|
680
|
-
}
|
|
681
|
-
else if (this._decimal.test(deleteChar)) {
|
|
682
|
-
this._decimal.lastIndex = 0;
|
|
683
|
-
if (decimalLength) {
|
|
684
|
-
this.input?.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);
|
|
685
|
-
}
|
|
686
|
-
else {
|
|
687
|
-
newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
|
|
691
|
-
const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
|
|
692
|
-
newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);
|
|
693
|
-
}
|
|
694
|
-
else if (decimalCharIndexWithoutPrefix === 1) {
|
|
695
|
-
newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
|
|
696
|
-
newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
|
|
697
|
-
}
|
|
698
|
-
else {
|
|
699
|
-
newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
this.updateValue(event, newValueStr, null, 'delete-back-single');
|
|
703
|
-
}
|
|
704
|
-
else {
|
|
705
|
-
newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
|
|
706
|
-
this.updateValue(event, newValueStr, null, 'delete-range');
|
|
707
|
-
}
|
|
708
|
-
break;
|
|
709
|
-
case 'Home':
|
|
710
|
-
if (this.min) {
|
|
711
|
-
this.updateModel(event, this.min);
|
|
712
|
-
event.preventDefault();
|
|
713
|
-
}
|
|
714
|
-
break;
|
|
715
|
-
case 'End':
|
|
716
|
-
if (this.max) {
|
|
717
|
-
this.updateModel(event, this.max);
|
|
718
|
-
event.preventDefault();
|
|
719
|
-
}
|
|
720
|
-
break;
|
|
721
|
-
default:
|
|
722
|
-
break;
|
|
723
|
-
}
|
|
724
|
-
this.onKeyDown.emit(event);
|
|
725
|
-
}
|
|
726
|
-
onInputKeyPress(event) {
|
|
727
|
-
if (this.readonly) {
|
|
728
|
-
return;
|
|
729
|
-
}
|
|
730
|
-
let code = event.which || event.keyCode;
|
|
731
|
-
let char = String.fromCharCode(code);
|
|
732
|
-
let isDecimalSign = this.isDecimalSign(char);
|
|
733
|
-
const isMinusSign = this.isMinusSign(char);
|
|
734
|
-
if (code != 13) {
|
|
735
|
-
event.preventDefault();
|
|
736
|
-
}
|
|
737
|
-
if (!isDecimalSign && event.code === 'NumpadDecimal') {
|
|
738
|
-
isDecimalSign = true;
|
|
739
|
-
char = this._decimalChar;
|
|
740
|
-
code = char.charCodeAt(0);
|
|
741
|
-
}
|
|
742
|
-
const newValue = this.parseValue(this.input.nativeElement.value + char);
|
|
743
|
-
const newValueStr = newValue != null ? newValue.toString() : '';
|
|
744
|
-
if (this.maxlength && this.getSelectedText()?.length == this.maxlength) {
|
|
745
|
-
this.insert(event, char, { isDecimalSign, isMinusSign });
|
|
746
|
-
return;
|
|
747
|
-
}
|
|
748
|
-
if (this.maxlength && newValueStr.length > this.maxlength) {
|
|
749
|
-
return;
|
|
750
|
-
}
|
|
751
|
-
if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {
|
|
752
|
-
this.insert(event, char, { isDecimalSign, isMinusSign });
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
getSelectedText() {
|
|
756
|
-
return (window
|
|
757
|
-
?.getSelection()
|
|
758
|
-
?.toString()
|
|
759
|
-
.replaceAll(/[^0-9']/g, '') || '');
|
|
760
|
-
}
|
|
761
|
-
onPaste(event) {
|
|
762
|
-
if (!this.disabled && !this.readonly) {
|
|
763
|
-
event.preventDefault();
|
|
764
|
-
let data = (event.clipboardData || this.document.defaultView['clipboardData']).getData('Text');
|
|
765
|
-
if (data) {
|
|
766
|
-
if (this.maxlength) {
|
|
767
|
-
data = data.toString().substring(0, this.maxlength);
|
|
768
|
-
}
|
|
769
|
-
let filteredData = this.parseValue(data);
|
|
770
|
-
if (filteredData != null) {
|
|
771
|
-
this.insert(event, filteredData.toString());
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
allowMinusSign() {
|
|
777
|
-
return this.min == null || this.min < 0;
|
|
778
|
-
}
|
|
779
|
-
isMinusSign(char) {
|
|
780
|
-
if (this._minusSign.test(char) || char === '-') {
|
|
781
|
-
this._minusSign.lastIndex = 0;
|
|
782
|
-
return true;
|
|
783
|
-
}
|
|
784
|
-
return false;
|
|
785
|
-
}
|
|
786
|
-
isDecimalSign(char) {
|
|
787
|
-
if (this._decimal.test(char)) {
|
|
788
|
-
this._decimal.lastIndex = 0;
|
|
789
|
-
return true;
|
|
790
|
-
}
|
|
791
|
-
return false;
|
|
792
|
-
}
|
|
793
|
-
isDecimalMode() {
|
|
794
|
-
return this.mode === 'decimal';
|
|
795
|
-
}
|
|
796
|
-
getDecimalCharIndexes(val) {
|
|
797
|
-
let decimalCharIndex = val.search(this._decimal);
|
|
798
|
-
this._decimal.lastIndex = 0;
|
|
799
|
-
const filteredVal = val
|
|
800
|
-
.replace(this._prefix, '')
|
|
801
|
-
.trim()
|
|
802
|
-
.replace(/\s/g, '')
|
|
803
|
-
.replace(this._currency, '');
|
|
804
|
-
const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
|
|
805
|
-
this._decimal.lastIndex = 0;
|
|
806
|
-
return { decimalCharIndex, decimalCharIndexWithoutPrefix };
|
|
807
|
-
}
|
|
808
|
-
getCharIndexes(val) {
|
|
809
|
-
const decimalCharIndex = val.search(this._decimal);
|
|
810
|
-
this._decimal.lastIndex = 0;
|
|
811
|
-
const minusCharIndex = val.search(this._minusSign);
|
|
812
|
-
this._minusSign.lastIndex = 0;
|
|
813
|
-
const suffixCharIndex = val.search(this._suffix);
|
|
814
|
-
this._suffix.lastIndex = 0;
|
|
815
|
-
const currencyCharIndex = val.search(this._currency);
|
|
816
|
-
this._currency.lastIndex = 0;
|
|
817
|
-
return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };
|
|
818
|
-
}
|
|
819
|
-
insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {
|
|
820
|
-
const minusCharIndexOnText = text.search(this._minusSign);
|
|
821
|
-
this._minusSign.lastIndex = 0;
|
|
822
|
-
if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
|
|
823
|
-
return;
|
|
824
|
-
}
|
|
825
|
-
let selectionStart = this.input?.nativeElement.selectionStart;
|
|
826
|
-
let selectionEnd = this.input?.nativeElement.selectionEnd;
|
|
827
|
-
let inputValue = this.input?.nativeElement.value.trim();
|
|
828
|
-
const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);
|
|
829
|
-
let newValueStr;
|
|
830
|
-
if (sign.isMinusSign) {
|
|
831
|
-
if (selectionStart === 0) {
|
|
832
|
-
newValueStr = inputValue;
|
|
833
|
-
if (minusCharIndex === -1 || selectionEnd !== 0) {
|
|
834
|
-
newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
|
|
835
|
-
}
|
|
836
|
-
this.updateValue(event, newValueStr, text, 'insert');
|
|
837
|
-
}
|
|
838
|
-
}
|
|
839
|
-
else if (sign.isDecimalSign) {
|
|
840
|
-
if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
|
|
841
|
-
this.updateValue(event, inputValue, text, 'insert');
|
|
842
|
-
}
|
|
843
|
-
else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
|
|
844
|
-
newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
|
|
845
|
-
this.updateValue(event, newValueStr, text, 'insert');
|
|
846
|
-
}
|
|
847
|
-
else if (decimalCharIndex === -1 && this.maxFractionDigits) {
|
|
848
|
-
newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
|
|
849
|
-
this.updateValue(event, newValueStr, text, 'insert');
|
|
850
|
-
}
|
|
851
|
-
}
|
|
852
|
-
else {
|
|
853
|
-
const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
|
|
854
|
-
const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
|
|
855
|
-
if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
|
|
856
|
-
if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {
|
|
857
|
-
const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;
|
|
858
|
-
newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
|
|
859
|
-
this.updateValue(event, newValueStr, text, operation);
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
else {
|
|
863
|
-
newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
|
|
864
|
-
this.updateValue(event, newValueStr, text, operation);
|
|
865
|
-
}
|
|
866
|
-
}
|
|
867
|
-
}
|
|
868
|
-
insertText(value, text, start, end) {
|
|
869
|
-
let textSplit = text === '.' ? text : text.split('.');
|
|
870
|
-
if (textSplit.length === 2) {
|
|
871
|
-
const decimalCharIndex = value.slice(start, end).search(this._decimal);
|
|
872
|
-
this._decimal.lastIndex = 0;
|
|
873
|
-
return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : value || this.formatValue(text);
|
|
874
|
-
}
|
|
875
|
-
else if (end - start === value.length) {
|
|
876
|
-
return this.formatValue(text);
|
|
877
|
-
}
|
|
878
|
-
else if (start === 0) {
|
|
879
|
-
return text + value.slice(end);
|
|
880
|
-
}
|
|
881
|
-
else if (end === value.length) {
|
|
882
|
-
return value.slice(0, start) + text;
|
|
883
|
-
}
|
|
884
|
-
else {
|
|
885
|
-
return value.slice(0, start) + text + value.slice(end);
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
deleteRange(value, start, end) {
|
|
889
|
-
let newValueStr;
|
|
890
|
-
if (end - start === value.length)
|
|
891
|
-
newValueStr = '';
|
|
892
|
-
else if (start === 0)
|
|
893
|
-
newValueStr = value.slice(end);
|
|
894
|
-
else if (end === value.length)
|
|
895
|
-
newValueStr = value.slice(0, start);
|
|
896
|
-
else
|
|
897
|
-
newValueStr = value.slice(0, start) + value.slice(end);
|
|
898
|
-
return newValueStr;
|
|
899
|
-
}
|
|
900
|
-
initCursor() {
|
|
901
|
-
let selectionStart = this.input?.nativeElement.selectionStart;
|
|
902
|
-
let selectionEnd = this.input?.nativeElement.selectionEnd;
|
|
903
|
-
let inputValue = this.input?.nativeElement.value;
|
|
904
|
-
let valueLength = inputValue.length;
|
|
905
|
-
let index = null;
|
|
906
|
-
// remove prefix
|
|
907
|
-
let prefixLength = (this.prefixChar || '').length;
|
|
908
|
-
inputValue = inputValue.replace(this._prefix, '');
|
|
909
|
-
// Will allow selecting whole prefix. But not a part of it.
|
|
910
|
-
// Negative values will trigger clauses after this to fix the cursor position.
|
|
911
|
-
if (selectionStart === selectionEnd || selectionStart !== 0 || selectionEnd < prefixLength) {
|
|
912
|
-
selectionStart -= prefixLength;
|
|
913
|
-
}
|
|
914
|
-
let char = inputValue.charAt(selectionStart);
|
|
915
|
-
if (this.isNumeralChar(char)) {
|
|
916
|
-
return selectionStart + prefixLength;
|
|
917
|
-
}
|
|
918
|
-
//left
|
|
919
|
-
let i = selectionStart - 1;
|
|
920
|
-
while (i >= 0) {
|
|
921
|
-
char = inputValue.charAt(i);
|
|
922
|
-
if (this.isNumeralChar(char)) {
|
|
923
|
-
index = i + prefixLength;
|
|
924
|
-
break;
|
|
925
|
-
}
|
|
926
|
-
else {
|
|
927
|
-
i--;
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
if (index !== null) {
|
|
931
|
-
this.input?.nativeElement.setSelectionRange(index + 1, index + 1);
|
|
932
|
-
}
|
|
933
|
-
else {
|
|
934
|
-
i = selectionStart;
|
|
935
|
-
while (i < valueLength) {
|
|
936
|
-
char = inputValue.charAt(i);
|
|
937
|
-
if (this.isNumeralChar(char)) {
|
|
938
|
-
index = i + prefixLength;
|
|
939
|
-
break;
|
|
940
|
-
}
|
|
941
|
-
else {
|
|
942
|
-
i++;
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
if (index !== null) {
|
|
946
|
-
this.input?.nativeElement.setSelectionRange(index, index);
|
|
947
|
-
}
|
|
948
|
-
}
|
|
949
|
-
return index || 0;
|
|
950
|
-
}
|
|
951
|
-
onInputClick() {
|
|
952
|
-
const currentValue = this.input?.nativeElement.value;
|
|
953
|
-
if (!this.readonly && currentValue !== DomHandler.getSelection()) {
|
|
954
|
-
this.initCursor();
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
isNumeralChar(char) {
|
|
958
|
-
if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {
|
|
959
|
-
this.resetRegex();
|
|
960
|
-
return true;
|
|
961
|
-
}
|
|
962
|
-
return false;
|
|
963
|
-
}
|
|
964
|
-
resetRegex() {
|
|
965
|
-
this._numeral.lastIndex = 0;
|
|
966
|
-
this._decimal.lastIndex = 0;
|
|
967
|
-
this._group.lastIndex = 0;
|
|
968
|
-
this._minusSign.lastIndex = 0;
|
|
969
|
-
}
|
|
970
|
-
updateValue(event, valueStr, insertedValueStr, operation) {
|
|
971
|
-
let currentValue = this.input?.nativeElement.value;
|
|
972
|
-
let newValue = null;
|
|
973
|
-
if (valueStr != null) {
|
|
974
|
-
newValue = this.parseValue(valueStr);
|
|
975
|
-
newValue = !newValue && !this.allowEmpty ? 0 : newValue;
|
|
976
|
-
this.updateInput(newValue, insertedValueStr, operation, valueStr);
|
|
977
|
-
this.handleOnInput(event, currentValue, newValue);
|
|
978
|
-
}
|
|
979
|
-
}
|
|
980
|
-
handleOnInput(event, currentValue, newValue) {
|
|
981
|
-
if (this.isValueChanged(currentValue, newValue)) {
|
|
982
|
-
this.input.nativeElement.value = this.formatValue(newValue);
|
|
983
|
-
this.input?.nativeElement.setAttribute('aria-valuenow', newValue);
|
|
984
|
-
!this.isBlurUpdateOnMode && this.updateModel(event, newValue);
|
|
985
|
-
this.onInput.emit({ originalEvent: event, value: newValue, formattedValue: currentValue });
|
|
986
|
-
}
|
|
987
|
-
}
|
|
988
|
-
isValueChanged(currentValue, newValue) {
|
|
989
|
-
if (newValue === null && currentValue !== null) {
|
|
990
|
-
return true;
|
|
991
|
-
}
|
|
992
|
-
if (newValue != null) {
|
|
993
|
-
let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;
|
|
994
|
-
return newValue !== parsedCurrentValue;
|
|
995
|
-
}
|
|
996
|
-
return false;
|
|
997
|
-
}
|
|
998
|
-
validateValue(value) {
|
|
999
|
-
if (value === '-' || value == null) {
|
|
1000
|
-
return null;
|
|
1001
|
-
}
|
|
1002
|
-
if (this.min != null && value < this.min) {
|
|
1003
|
-
return this.min;
|
|
1004
|
-
}
|
|
1005
|
-
if (this.max != null && value > this.max) {
|
|
1006
|
-
return this.max;
|
|
1007
|
-
}
|
|
1008
|
-
return value;
|
|
1009
|
-
}
|
|
1010
|
-
updateInput(value, insertedValueStr, operation, valueStr) {
|
|
1011
|
-
insertedValueStr = insertedValueStr || '';
|
|
1012
|
-
let inputValue = this.input?.nativeElement.value;
|
|
1013
|
-
let newValue = this.formatValue(value);
|
|
1014
|
-
let currentLength = inputValue.length;
|
|
1015
|
-
if (newValue !== valueStr) {
|
|
1016
|
-
newValue = this.concatValues(newValue, valueStr);
|
|
1017
|
-
}
|
|
1018
|
-
if (currentLength === 0) {
|
|
1019
|
-
this.input.nativeElement.value = newValue;
|
|
1020
|
-
this.input.nativeElement.setSelectionRange(0, 0);
|
|
1021
|
-
const index = this.initCursor();
|
|
1022
|
-
const selectionEnd = index + insertedValueStr.length;
|
|
1023
|
-
this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
|
|
1024
|
-
}
|
|
1025
|
-
else {
|
|
1026
|
-
let selectionStart = this.input.nativeElement.selectionStart;
|
|
1027
|
-
let selectionEnd = this.input.nativeElement.selectionEnd;
|
|
1028
|
-
if (this.maxlength && newValue.length > this.maxlength) {
|
|
1029
|
-
newValue = newValue.slice(0, this.maxlength);
|
|
1030
|
-
selectionStart = Math.min(selectionStart, this.maxlength);
|
|
1031
|
-
selectionEnd = Math.min(selectionEnd, this.maxlength);
|
|
1032
|
-
}
|
|
1033
|
-
if (this.maxlength && this.maxlength < newValue.length) {
|
|
1034
|
-
return;
|
|
1035
|
-
}
|
|
1036
|
-
this.input.nativeElement.value = newValue;
|
|
1037
|
-
let newLength = newValue.length;
|
|
1038
|
-
if (operation === 'range-insert') {
|
|
1039
|
-
const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
|
|
1040
|
-
const startValueStr = startValue !== null ? startValue.toString() : '';
|
|
1041
|
-
const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);
|
|
1042
|
-
const sRegex = new RegExp(startExpr, 'g');
|
|
1043
|
-
sRegex.test(newValue);
|
|
1044
|
-
const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);
|
|
1045
|
-
const tRegex = new RegExp(tExpr, 'g');
|
|
1046
|
-
tRegex.test(newValue.slice(sRegex.lastIndex));
|
|
1047
|
-
selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
|
|
1048
|
-
this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
|
|
1049
|
-
}
|
|
1050
|
-
else if (newLength === currentLength) {
|
|
1051
|
-
if (operation === 'insert' || operation === 'delete-back-single')
|
|
1052
|
-
this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);
|
|
1053
|
-
else if (operation === 'delete-single')
|
|
1054
|
-
this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);
|
|
1055
|
-
else if (operation === 'delete-range' || operation === 'spin')
|
|
1056
|
-
this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
|
|
1057
|
-
}
|
|
1058
|
-
else if (operation === 'delete-back-single') {
|
|
1059
|
-
let prevChar = inputValue.charAt(selectionEnd - 1);
|
|
1060
|
-
let nextChar = inputValue.charAt(selectionEnd);
|
|
1061
|
-
let diff = currentLength - newLength;
|
|
1062
|
-
let isGroupChar = this._group.test(nextChar);
|
|
1063
|
-
if (isGroupChar && diff === 1) {
|
|
1064
|
-
selectionEnd += 1;
|
|
1065
|
-
}
|
|
1066
|
-
else if (!isGroupChar && this.isNumeralChar(prevChar)) {
|
|
1067
|
-
selectionEnd += -1 * diff + 1;
|
|
1068
|
-
}
|
|
1069
|
-
this._group.lastIndex = 0;
|
|
1070
|
-
this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
|
|
1071
|
-
}
|
|
1072
|
-
else if (inputValue === '-' && operation === 'insert') {
|
|
1073
|
-
this.input.nativeElement.setSelectionRange(0, 0);
|
|
1074
|
-
const index = this.initCursor();
|
|
1075
|
-
const selectionEnd = index + insertedValueStr.length + 1;
|
|
1076
|
-
this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
|
|
1077
|
-
}
|
|
1078
|
-
else {
|
|
1079
|
-
selectionEnd = selectionEnd + (newLength - currentLength);
|
|
1080
|
-
this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
|
|
1081
|
-
}
|
|
1082
|
-
}
|
|
1083
|
-
this.input.nativeElement.setAttribute('aria-valuenow', value);
|
|
1084
|
-
}
|
|
1085
|
-
concatValues(val1, val2) {
|
|
1086
|
-
if (val1 && val2) {
|
|
1087
|
-
let decimalCharIndex = val2.search(this._decimal);
|
|
1088
|
-
this._decimal.lastIndex = 0;
|
|
1089
|
-
if (this.suffixChar) {
|
|
1090
|
-
return decimalCharIndex !== -1 ? val1 : val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar;
|
|
1091
|
-
}
|
|
1092
|
-
else {
|
|
1093
|
-
return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
return val1;
|
|
1097
|
-
}
|
|
1098
|
-
getDecimalLength(value) {
|
|
1099
|
-
if (value) {
|
|
1100
|
-
const valueSplit = value.split(this._decimal);
|
|
1101
|
-
if (valueSplit.length === 2) {
|
|
1102
|
-
return valueSplit[1]
|
|
1103
|
-
.replace(this._suffix, '')
|
|
1104
|
-
.trim()
|
|
1105
|
-
.replace(/\s/g, '')
|
|
1106
|
-
.replace(this._currency, '').length;
|
|
1107
|
-
}
|
|
1108
|
-
}
|
|
1109
|
-
return 0;
|
|
1110
|
-
}
|
|
1111
|
-
onInputFocus(event) {
|
|
1112
|
-
this.focused = true;
|
|
1113
|
-
this.onFocus.emit(event);
|
|
1114
|
-
}
|
|
1115
|
-
onInputBlur(event) {
|
|
1116
|
-
this.focused = false;
|
|
1117
|
-
const newValueNumber = this.validateValue(this.parseValue(this.input.nativeElement.value));
|
|
1118
|
-
const newValueString = newValueNumber?.toString();
|
|
1119
|
-
this.input.nativeElement.value = this.formatValue(newValueString);
|
|
1120
|
-
this.input.nativeElement.setAttribute('aria-valuenow', newValueString);
|
|
1121
|
-
this.updateModel(event, newValueNumber);
|
|
1122
|
-
this.onBlur.emit(event);
|
|
1123
|
-
}
|
|
1124
|
-
formattedValue() {
|
|
1125
|
-
const val = !this.value && !this.allowEmpty ? 0 : this.value;
|
|
1126
|
-
return this.formatValue(val);
|
|
1127
|
-
}
|
|
1128
|
-
updateModel(event, value) {
|
|
1129
|
-
if (this.value !== value) {
|
|
1130
|
-
this.value = value;
|
|
1131
|
-
if (!(this.isBlurUpdateOnMode && this.focused)) {
|
|
1132
|
-
this.onModelChange(value);
|
|
1133
|
-
}
|
|
1134
|
-
else if (this.isBlurUpdateOnMode) {
|
|
1135
|
-
this.onModelChange(value);
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
this.onModelTouched();
|
|
1139
|
-
}
|
|
1140
|
-
writeValue(value) {
|
|
1141
|
-
this.value = value;
|
|
1142
|
-
this.cd.markForCheck();
|
|
1143
|
-
}
|
|
1144
|
-
registerOnChange(fn) {
|
|
1145
|
-
this.onModelChange = fn;
|
|
1146
|
-
}
|
|
1147
|
-
registerOnTouched(fn) {
|
|
1148
|
-
this.onModelTouched = fn;
|
|
1149
|
-
}
|
|
1150
|
-
setDisabledState(val) {
|
|
1151
|
-
this.disabled = val;
|
|
1152
|
-
this.cd.markForCheck();
|
|
1153
|
-
}
|
|
1154
|
-
get filled() {
|
|
1155
|
-
return this.value != null && this.value.toString().length > 0;
|
|
1156
|
-
}
|
|
1157
|
-
clearTimer() {
|
|
1158
|
-
if (this.timer) {
|
|
1159
|
-
clearInterval(this.timer);
|
|
1160
|
-
}
|
|
1161
|
-
}
|
|
1162
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InputNumber, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
|
|
1163
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: InputNumber, isStandalone: true, selector: "cax-inputNumber", inputs: { showButtons: ["showButtons", "showButtons", booleanAttribute], format: ["format", "format", booleanAttribute], buttonLayout: "buttonLayout", inputId: "inputId", styleClass: "styleClass", style: "style", placeholder: "placeholder", size: ["size", "size", numberAttribute], maxlength: ["maxlength", "maxlength", numberAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], title: "title", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", ariaRequired: ["ariaRequired", "ariaRequired", booleanAttribute], name: "name", required: ["required", "required", booleanAttribute], autocomplete: "autocomplete", min: ["min", "min", numberAttribute], max: ["max", "max", numberAttribute], incrementButtonClass: "incrementButtonClass", decrementButtonClass: "decrementButtonClass", incrementButtonIcon: "incrementButtonIcon", decrementButtonIcon: "decrementButtonIcon", readonly: ["readonly", "readonly", booleanAttribute], step: ["step", "step", numberAttribute], allowEmpty: ["allowEmpty", "allowEmpty", booleanAttribute], locale: "locale", localeMatcher: "localeMatcher", mode: "mode", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: ["useGrouping", "useGrouping", booleanAttribute], variant: "variant", minFractionDigits: ["minFractionDigits", "minFractionDigits", (value) => numberAttribute(value, null)], maxFractionDigits: ["maxFractionDigits", "maxFractionDigits", (value) => numberAttribute(value, null)], prefixIcon: "prefixIcon", prefix: "prefix", suffix: "suffix", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", showClear: ["showClear", "showClear", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], disabled: "disabled" }, outputs: { onInput: "onInput", onFocus: "onFocus", onBlur: "onBlur", onKeyDown: "onKeyDown", onClear: "onClear" }, host: { properties: { "class.cax-inputwrapper-filled": "filled", "class.cax-inputwrapper-focus": "focused", "class.cax-inputnumber-clearable": "showClear && buttonLayout != \"vertical\"" }, classAttribute: "cax-element cax-inputwrapper" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span\n [ngClass]=\"{\n 'cax-inputnumber cax-component': true,\n 'cax-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n 'cax-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',\n 'cax-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical',\n 'cax-input-icon-left': (prefix || prefixIcon) && buttonLayout === 'stacked',\n 'cax-input-icon-right': suffix,\n 'cax-disabled': disabled\n }\"\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'inputnumber'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <!-- Only show prefix/icon in stacked layout -->\n <ng-container *ngIf=\"(prefix || prefixIcon) && buttonLayout === 'stacked'\">\n <i *ngIf=\"prefixIcon\" class=\"cax-input-prefix-icon\" [ngClass]=\"prefixIcon\"></i>\n </ng-container>\n <!-- Down button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-down\"\n [disabled]=\"disabled\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'decrementbutton'\">\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\"></span>\n </button>\n <input\n caxInputText\n #input\n [attr.id]=\"inputId\"\n role=\"spinbutton\"\n [ngClass]=\"'cax-inputnumber-input'\"\n [ngStyle]=\"inputStyle\"\n [class]=\"inputStyleClass\"\n [value]=\"formattedValue()\"\n [attr.variant]=\"variant\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.title]=\"title\"\n [attr.size]=\"size\"\n [attr.name]=\"name\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.maxlength]=\"maxlength\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.required]=\"required\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n inputmode=\"decimal\"\n (input)=\"onUserInput($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n (keypress)=\"onInputKeyPress($event)\"\n (paste)=\"onPaste($event)\"\n (click)=\"onInputClick()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [attr.data-pc-section]=\"'input'\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [class.cax-variant-filled]=\"variant === 'filled' || config.inputStyle() === 'filled'\"\n />\n <!-- Up button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-up\"\n [disabled]=\"disabled\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\">\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\"></span>\n </button>\n <i *ngIf=\"suffix\" class=\"cax-input-suffix\" [innerHTML]=\"suffix\"></i>\n <ng-container *ngIf=\"buttonLayout != 'vertical' && showClear && value\">\n <TimesIcon *ngIf=\"!clearIconTemplate\" [ngClass]=\"'cax-inputnumber-clear-icon'\" (click)=\"clear()\" [attr.data-pc-section]=\"'clearIcon'\" />\n <span *ngIf=\"clearIconTemplate\" (click)=\"clear()\" class=\"cax-inputnumber-clear-icon\" [attr.data-pc-section]=\"'clearIcon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate\"></ng-template>\n </span>\n </ng-container>\n <span class=\"cax-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\" [attr.data-pc-section]=\"'buttonGroup'\">\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"incrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n </span>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n [class]=\"incrementButtonClass\"\n class=\"cax-button-icon-only\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n</span>\n", styles: ["@layer cax{cax-inputnumber,.cax-inputnumber{display:inline-flex}.cax-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button .cax-button-label,.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button .cax-button-label{display:none}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-up{border-radius:0 8px 0 0;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-down{border-radius:0 0 8px;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group{display:flex;flex-direction:column}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group .cax-button.cax-inputnumber-button{flex:1 1 auto}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.cax-inputnumber-buttons-horizontal .cax-inputnumber-input{order:2;border-radius:0}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-vertical{flex-direction:column}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.cax-inputnumber-buttons-vertical .cax-inputnumber-input{order:2;border-radius:0;text-align:center}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.cax-inputnumber-input{flex:1 1 auto}.cax-fluid cax-inputnumber,.cax-fluid .cax-inputnumber{width:100%}.cax-fluid .cax-inputnumber .cax-inputnumber-input{width:1%}.cax-fluid .cax-inputnumber-buttons-vertical .cax-inputnumber-input{width:100%}.cax-inputnumber-clear-icon{position:absolute;cursor:pointer}.cax-inputnumber-clearable{position:relative}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i3.InputtextDirective, selector: "[caxInputText]", inputs: ["placeholder", "disabled", "variant"], outputs: ["valueChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[caxButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "link"] }, { kind: "ngmodule", type: AutoFocusModule }, { kind: "directive", type: i5.AutoFocus, selector: "[caxAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "component", type: AngleUpIcon, selector: "AngleUpIcon" }, { kind: "component", type: AngleDownIcon, selector: "AngleDownIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1164
|
-
}
|
|
1165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InputNumber, decorators: [{
|
|
1166
|
-
type: Component,
|
|
1167
|
-
args: [{ selector: 'cax-inputNumber', changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, InputTextModule, ButtonModule, AutoFocusModule, TimesIcon, AngleUpIcon, AngleDownIcon], host: {
|
|
1168
|
-
class: 'cax-element cax-inputwrapper',
|
|
1169
|
-
'[class.cax-inputwrapper-filled]': 'filled',
|
|
1170
|
-
'[class.cax-inputwrapper-focus]': 'focused',
|
|
1171
|
-
'[class.cax-inputnumber-clearable]': 'showClear && buttonLayout != "vertical"'
|
|
1172
|
-
}, template: "<span\n [ngClass]=\"{\n 'cax-inputnumber cax-component': true,\n 'cax-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n 'cax-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',\n 'cax-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical',\n 'cax-input-icon-left': (prefix || prefixIcon) && buttonLayout === 'stacked',\n 'cax-input-icon-right': suffix,\n 'cax-disabled': disabled\n }\"\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'inputnumber'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <!-- Only show prefix/icon in stacked layout -->\n <ng-container *ngIf=\"(prefix || prefixIcon) && buttonLayout === 'stacked'\">\n <i *ngIf=\"prefixIcon\" class=\"cax-input-prefix-icon\" [ngClass]=\"prefixIcon\"></i>\n </ng-container>\n <!-- Down button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-down\"\n [disabled]=\"disabled\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'decrementbutton'\">\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\"></span>\n </button>\n <input\n caxInputText\n #input\n [attr.id]=\"inputId\"\n role=\"spinbutton\"\n [ngClass]=\"'cax-inputnumber-input'\"\n [ngStyle]=\"inputStyle\"\n [class]=\"inputStyleClass\"\n [value]=\"formattedValue()\"\n [attr.variant]=\"variant\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.title]=\"title\"\n [attr.size]=\"size\"\n [attr.name]=\"name\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.maxlength]=\"maxlength\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.required]=\"required\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n inputmode=\"decimal\"\n (input)=\"onUserInput($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n (keypress)=\"onInputKeyPress($event)\"\n (paste)=\"onPaste($event)\"\n (click)=\"onInputClick()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [attr.data-pc-section]=\"'input'\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [class.cax-variant-filled]=\"variant === 'filled' || config.inputStyle() === 'filled'\"\n />\n <!-- Up button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-up\"\n [disabled]=\"disabled\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\">\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\"></span>\n </button>\n <i *ngIf=\"suffix\" class=\"cax-input-suffix\" [innerHTML]=\"suffix\"></i>\n <ng-container *ngIf=\"buttonLayout != 'vertical' && showClear && value\">\n <TimesIcon *ngIf=\"!clearIconTemplate\" [ngClass]=\"'cax-inputnumber-clear-icon'\" (click)=\"clear()\" [attr.data-pc-section]=\"'clearIcon'\" />\n <span *ngIf=\"clearIconTemplate\" (click)=\"clear()\" class=\"cax-inputnumber-clear-icon\" [attr.data-pc-section]=\"'clearIcon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate\"></ng-template>\n </span>\n </ng-container>\n <span class=\"cax-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\" [attr.data-pc-section]=\"'buttonGroup'\">\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"incrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n </span>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n [class]=\"incrementButtonClass\"\n class=\"cax-button-icon-only\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n</span>\n", styles: ["@layer cax{cax-inputnumber,.cax-inputnumber{display:inline-flex}.cax-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button .cax-button-label,.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button .cax-button-label{display:none}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-up{border-radius:0 8px 0 0;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-down{border-radius:0 0 8px;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group{display:flex;flex-direction:column}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group .cax-button.cax-inputnumber-button{flex:1 1 auto}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.cax-inputnumber-buttons-horizontal .cax-inputnumber-input{order:2;border-radius:0}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-vertical{flex-direction:column}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.cax-inputnumber-buttons-vertical .cax-inputnumber-input{order:2;border-radius:0;text-align:center}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.cax-inputnumber-input{flex:1 1 auto}.cax-fluid cax-inputnumber,.cax-fluid .cax-inputnumber{width:100%}.cax-fluid .cax-inputnumber .cax-inputnumber-input{width:1%}.cax-fluid .cax-inputnumber-buttons-vertical .cax-inputnumber-input{width:100%}.cax-inputnumber-clear-icon{position:absolute;cursor:pointer}.cax-inputnumber-clearable{position:relative}}\n"] }]
|
|
1173
|
-
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
1174
|
-
type: Inject,
|
|
1175
|
-
args: [DOCUMENT]
|
|
1176
|
-
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.caxConfig }], propDecorators: { showButtons: [{
|
|
1177
|
-
type: Input,
|
|
1178
|
-
args: [{ transform: booleanAttribute }]
|
|
1179
|
-
}], format: [{
|
|
1180
|
-
type: Input,
|
|
1181
|
-
args: [{ transform: booleanAttribute }]
|
|
1182
|
-
}], buttonLayout: [{
|
|
1183
|
-
type: Input
|
|
1184
|
-
}], inputId: [{
|
|
1185
|
-
type: Input
|
|
1186
|
-
}], styleClass: [{
|
|
1187
|
-
type: Input
|
|
1188
|
-
}], style: [{
|
|
1189
|
-
type: Input
|
|
1190
|
-
}], placeholder: [{
|
|
1191
|
-
type: Input
|
|
1192
|
-
}], size: [{
|
|
1193
|
-
type: Input,
|
|
1194
|
-
args: [{ transform: numberAttribute }]
|
|
1195
|
-
}], maxlength: [{
|
|
1196
|
-
type: Input,
|
|
1197
|
-
args: [{ transform: numberAttribute }]
|
|
1198
|
-
}], tabindex: [{
|
|
1199
|
-
type: Input,
|
|
1200
|
-
args: [{ transform: numberAttribute }]
|
|
1201
|
-
}], title: [{
|
|
1202
|
-
type: Input
|
|
1203
|
-
}], ariaLabelledBy: [{
|
|
1204
|
-
type: Input
|
|
1205
|
-
}], ariaLabel: [{
|
|
1206
|
-
type: Input
|
|
1207
|
-
}], ariaRequired: [{
|
|
1208
|
-
type: Input,
|
|
1209
|
-
args: [{ transform: booleanAttribute }]
|
|
1210
|
-
}], name: [{
|
|
1211
|
-
type: Input
|
|
1212
|
-
}], required: [{
|
|
1213
|
-
type: Input,
|
|
1214
|
-
args: [{ transform: booleanAttribute }]
|
|
1215
|
-
}], autocomplete: [{
|
|
1216
|
-
type: Input
|
|
1217
|
-
}], min: [{
|
|
1218
|
-
type: Input,
|
|
1219
|
-
args: [{ transform: numberAttribute }]
|
|
1220
|
-
}], max: [{
|
|
1221
|
-
type: Input,
|
|
1222
|
-
args: [{ transform: numberAttribute }]
|
|
1223
|
-
}], incrementButtonClass: [{
|
|
1224
|
-
type: Input
|
|
1225
|
-
}], decrementButtonClass: [{
|
|
1226
|
-
type: Input
|
|
1227
|
-
}], incrementButtonIcon: [{
|
|
1228
|
-
type: Input
|
|
1229
|
-
}], decrementButtonIcon: [{
|
|
1230
|
-
type: Input
|
|
1231
|
-
}], readonly: [{
|
|
1232
|
-
type: Input,
|
|
1233
|
-
args: [{ transform: booleanAttribute }]
|
|
1234
|
-
}], step: [{
|
|
1235
|
-
type: Input,
|
|
1236
|
-
args: [{ transform: numberAttribute }]
|
|
1237
|
-
}], allowEmpty: [{
|
|
1238
|
-
type: Input,
|
|
1239
|
-
args: [{ transform: booleanAttribute }]
|
|
1240
|
-
}], locale: [{
|
|
1241
|
-
type: Input
|
|
1242
|
-
}], localeMatcher: [{
|
|
1243
|
-
type: Input
|
|
1244
|
-
}], mode: [{
|
|
1245
|
-
type: Input
|
|
1246
|
-
}], currency: [{
|
|
1247
|
-
type: Input
|
|
1248
|
-
}], currencyDisplay: [{
|
|
1249
|
-
type: Input
|
|
1250
|
-
}], useGrouping: [{
|
|
1251
|
-
type: Input,
|
|
1252
|
-
args: [{ transform: booleanAttribute }]
|
|
1253
|
-
}], variant: [{
|
|
1254
|
-
type: Input
|
|
1255
|
-
}], minFractionDigits: [{
|
|
1256
|
-
type: Input,
|
|
1257
|
-
args: [{ transform: (value) => numberAttribute(value, null) }]
|
|
1258
|
-
}], maxFractionDigits: [{
|
|
1259
|
-
type: Input,
|
|
1260
|
-
args: [{ transform: (value) => numberAttribute(value, null) }]
|
|
1261
|
-
}], prefixIcon: [{
|
|
1262
|
-
type: Input
|
|
1263
|
-
}], prefix: [{
|
|
1264
|
-
type: Input
|
|
1265
|
-
}], suffix: [{
|
|
1266
|
-
type: Input
|
|
1267
|
-
}], inputStyle: [{
|
|
1268
|
-
type: Input
|
|
1269
|
-
}], inputStyleClass: [{
|
|
1270
|
-
type: Input
|
|
1271
|
-
}], showClear: [{
|
|
1272
|
-
type: Input,
|
|
1273
|
-
args: [{ transform: booleanAttribute }]
|
|
1274
|
-
}], autofocus: [{
|
|
1275
|
-
type: Input,
|
|
1276
|
-
args: [{ transform: booleanAttribute }]
|
|
1277
|
-
}], disabled: [{
|
|
1278
|
-
type: Input
|
|
1279
|
-
}], onInput: [{
|
|
1280
|
-
type: Output
|
|
1281
|
-
}], onFocus: [{
|
|
1282
|
-
type: Output
|
|
1283
|
-
}], onBlur: [{
|
|
1284
|
-
type: Output
|
|
1285
|
-
}], onKeyDown: [{
|
|
1286
|
-
type: Output
|
|
1287
|
-
}], onClear: [{
|
|
1288
|
-
type: Output
|
|
1289
|
-
}], input: [{
|
|
1290
|
-
type: ViewChild,
|
|
1291
|
-
args: ['input']
|
|
1292
|
-
}], templates: [{
|
|
1293
|
-
type: ContentChildren,
|
|
1294
|
-
args: [CaxTemplate]
|
|
1295
|
-
}] } });
|
|
1296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRudW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRudW1iZXIvaW5wdXRudW1iZXIudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRudW1iZXIvaW5wdXRudW1iZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssRUFHTCxNQUFNLEVBSU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBSTlELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFRO0lBQzNDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUs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QUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS3pCLFFBQVE7c0JBQXBCLEtBQUs7Z0JBZUksT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxPQUFPO3NCQUFoQixNQUFNO2dCQU1HLE1BQU07c0JBQWYsTUFBTTtnQkFNRyxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLE9BQU87c0JBQWhCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUVZLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGZvcndhcmRSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXhDb25maWcsIENheFRlbXBsYXRlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYXBpJztcbmltcG9ydCB7IEF1dG9Gb2N1c01vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2F1dG9mb2N1cyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9idXR0b24nO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2RvbSc7XG5pbXBvcnQgeyBBbmdsZURvd25JY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvYW5nbGVkb3duJztcbmltcG9ydCB7IEFuZ2xlVXBJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvYW5nbGV1cCc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy90aW1lcyc7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pbnB1dHRleHQnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90cy1oZWxwZXJzJztcbmltcG9ydCB7IElucHV0TnVtYmVySW5wdXRFdmVudCB9IGZyb20gJy4vaW5wdXRudW1iZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IElOUFVUTlVNQkVSX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXROdW1iZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuLyoqXG4gKiBJbnB1dE51bWJlciBpcyBhbiBpbnB1dCBjb21wb25lbnQgdG8gcHJvdmlkZSBudW1lcmljYWwgaW5wdXQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1pbnB1dE51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0bnVtYmVyLmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0lOUFVUTlVNQkVSX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0bnVtYmVyLnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgQnV0dG9uTW9kdWxlLCBBdXRvRm9jdXNNb2R1bGUsIFRpbWVzSWNvbiwgQW5nbGVVcEljb24sIEFuZ2xlRG93bkljb25dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCBjYXgtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXR3cmFwcGVyLWZvY3VzXSc6ICdmb2N1c2VkJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXRudW1iZXItY2xlYXJhYmxlXSc6ICdzaG93Q2xlYXIgJiYgYnV0dG9uTGF5b3V0ICE9IFwidmVydGljYWxcIidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBzcGlubmVyIGJ1dHRvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dCdXR0b25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb3JtYXQgdGhlIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmb3JtYXQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIExheW91dCBvZiB0aGUgYnV0dG9ucywgdmFsaWQgdmFsdWVzIGFyZSBcInN0YWNrZWRcIiAoZGVmYXVsdCksIFwiaG9yaXpvbnRhbFwiIGFuZCBcInZlcnRpY2FsXCIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uTGF5b3V0OiBzdHJpbmcgPSAnc3RhY2tlZCc7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgZm9jdXMgaW5wdXQgdG8gbWF0Y2ggYSBsYWJlbCBkZWZpbmVkIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBZHZpc29yeSBpbmZvcm1hdGlvbiB0byBkaXNwbGF5IG9uIGlucHV0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlciBhbGxvd3MgaW4gdGhlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1heGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0YWIgb3JkZXIgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUaXRsZSB0ZXh0IG9mIHRoZSBpbnB1dCB0ZXh0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIG9uZSBvciBtb3JlIElEcyBpbiB0aGUgRE9NIHRoYXQgbGFiZWxzIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZGVmaW5lIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gaW5kaWNhdGUgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIGFuIGVsZW1lbnQgYmVmb3JlIGEgZm9ybSBjYW4gYmUgc3VibWl0dGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhcmlhUmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB0aGF0IHdoZXRoZXIgdGhlIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyB0aGF0IGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBNaW5pbnVtIGJvdW5kYXJ5IHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGluY3JlbWVudCBidXR0b24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5jcmVtZW50QnV0dG9uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZGVjcmVtZW50IGJ1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkZWNyZW1lbnRCdXR0b25DbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBpbmNyZW1lbnQgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGluY3JlbWVudEJ1dHRvbkljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZGVjcmVtZW50IGJ1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkZWNyZW1lbnRCdXR0b25JY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCBhbiBpbnB1dCBmaWVsZCBpcyByZWFkLW9ubHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogU3RlcCBmYWN0b3IgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc3RlcDogbnVtYmVyID0gMTtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGlucHV0IGZpZWxkIGlzIGVtcHR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhbGxvd0VtcHR5OiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBMb2NhbGUgdG8gYmUgdXNlZCBpbiBmb3JtYXR0aW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBsb2NhbGUgbWF0Y2hpbmcgYWxnb3JpdGhtIHRvIHVzZS4gUG9zc2libGUgdmFsdWVzIGFyZSBcImxvb2t1cFwiIGFuZCBcImJlc3QgZml0XCI7IHRoZSBkZWZhdWx0IGlzIFwiYmVzdCBmaXRcIi4gU2VlIExvY2FsZSBOZWdvdGlhdGlvbiBmb3IgZGV0YWlscy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsb2NhbGVNYXRjaGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSBcImRlY2ltYWxcIiBhbmQgXCJjdXJyZW5jeVwiLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICdkZWNpbWFsJztcbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVuY3kgdG8gdXNlIGluIGN1cnJlbmN5IGZvcm1hdHRpbmcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgdGhlIElTTyA0MjE3IGN1cnJlbmN5IGNvZGVzLCBzdWNoIGFzIFwiVVNEXCIgZm9yIHRoZSBVUyBkb2xsYXIsIFwiRVVSXCIgZm9yIHRoZSBldXJvLCBvciBcIkNOWVwiIGZvciB0aGUgQ2hpbmVzZSBSTUIuIFRoZXJlIGlzIG5vIGRlZmF1bHQgdmFsdWU7IGlmIHRoZSBzdHlsZSBpcyBcImN1cnJlbmN5XCIsIHRoZSBjdXJyZW5jeSBwcm9wZXJ0eSBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSG93IHRvIGRpc3BsYXkgdGhlIGN1cnJlbmN5IGluIGN1cnJlbmN5IGZvcm1hdHRpbmcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgXCJzeW1ib2xcIiB0byB1c2UgYSBsb2NhbGl6ZWQgY3VycmVuY3kgc3ltYm9sIHN1Y2ggYXMg4oKsLCDDvFwiY29kZVwiIHRvIHVzZSB0aGUgSVNPIGN1cnJlbmN5IGNvZGUsIFwibmFtZVwiIHRvIHVzZSBhIGxvY2FsaXplZCBjdXJyZW5jeSBuYW1lIHN1Y2ggYXMgXCJkb2xsYXJcIjsgdGhlIGRlZmF1bHQgaXMgXCJzeW1ib2xcIi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjdXJyZW5jeURpc3BsYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHVzZSBncm91cGluZyBzZXBhcmF0b3JzLCBzdWNoIGFzIHRob3VzYW5kcyBzZXBhcmF0b3JzIG9yIHRob3VzYW5kL2xha2gvY3JvcmUgc2VwYXJhdG9ycy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXNlR3JvdXBpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byB1c2UuIFBvc3NpYmxlIHZhbHVlcyBhcmUgZnJvbSAwIHRvIDIwOyB0aGUgZGVmYXVsdCBmb3IgcGxhaW4gbnVtYmVyIGFuZCBwZXJjZW50IGZvcm1hdHRpbmcgaXMgMDsgdGhlIGRlZmF1bHQgZm9yIGN1cnJlbmN5IGZvcm1hdHRpbmcgaXMgdGhlIG51bWJlciBvZiBtaW5vciB1bml0IGRpZ2l0cyBwcm92aWRlZCBieSB0aGUgSVNPIDQyMTcgY3VycmVuY3kgY29kZSBsaXN0ICgyIGlmIHRoZSBsaXN0IGRvZXNuJ3QgcHJvdmlkZSB0aGF0IGluZm9ybWF0aW9uKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCBudWxsKSB9KSBtaW5GcmFjdGlvbkRpZ2l0czogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdG8gdXNlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGZyb20gMCB0byAyMDsgdGhlIGRlZmF1bHQgZm9yIHBsYWluIG51bWJlciBmb3JtYXR0aW5nIGlzIHRoZSBsYXJnZXIgb2YgbWluaW11bUZyYWN0aW9uRGlnaXRzIGFuZCAzOyB0aGUgZGVmYXVsdCBmb3IgY3VycmVuY3kgZm9ybWF0dGluZyBpcyB0aGUgbGFyZ2VyIG9mIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBhbmQgdGhlIG51bWJlciBvZiBtaW5vciB1bml0IGRpZ2l0cyBwcm92aWRlZCBieSB0aGUgSVNPIDQyMTcgY3VycmVuY3kgY29kZSBsaXN0ICgyIGlmIHRoZSBsaXN0IGRvZXNuJ3QgcHJvdmlkZSB0aGF0IGluZm9ybWF0aW9uKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCBudWxsKSB9KSBtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogSWNvbiBjbGFzcyB0byBzaG93IGJlZm9yZSB0aGUgaW5wdXQgdmFsdWVcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwcmVmaXhJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IGJlZm9yZSB0aGUgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IGFmdGVyIHRoZSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0U3R5bGU6IGFueTtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCBhIGNsZWFyIGljb24gaXMgZGlzcGxheWVkIHRvIGNsZWFyIHRoZSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gaW5wdXQuXG4gICAgICogQHBhcmFtIHtJbnB1dE51bWJlcklucHV0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGlucHV0IGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbklucHV0OiBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJJbnB1dEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJJbnB1dEV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IGxvc2VzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gaW5wdXQga2V5IHByZXNzLlxuICAgICAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgLSBLZXlib2FyZCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gY2xlYXIgdG9rZW4gaXMgY2xpY2tlZC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbGVhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+O1xuXG4gICAgY2xlYXJJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgaW5jcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGRlY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICB2YWx1ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIGZvY3VzZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgaW5pdGlhbGl6ZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgZ3JvdXBDaGFyOiBzdHJpbmcgPSAnJztcblxuICAgIHByZWZpeENoYXI6IHN0cmluZyA9ICcnO1xuXG4gICAgc3VmZml4Q2hhcjogc3RyaW5nID0gJyc7XG5cbiAgICBpc1NwZWNpYWxDaGFyOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIHRpbWVyOiBhbnk7XG5cbiAgICBsYXN0VmFsdWU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICBfbnVtZXJhbDogYW55O1xuXG4gICAgbnVtYmVyRm9ybWF0OiBhbnk7XG5cbiAgICBfZGVjaW1hbDogYW55O1xuXG4gICAgX2RlY2ltYWxDaGFyOiBzdHJpbmc7XG5cbiAgICBfZ3JvdXA6IGFueTtcblxuICAgIF9taW51c1NpZ246IGFueTtcblxuICAgIF9jdXJyZW5jeTogTnVsbGFibGU8UmVnRXhwIHwgc3RyaW5nPjtcblxuICAgIF9wcmVmaXg6IE51bGxhYmxlPFJlZ0V4cD47XG5cbiAgICBfc3VmZml4OiBOdWxsYWJsZTxSZWdFeHA+O1xuXG4gICAgX2luZGV4OiBudW1iZXIgfCBhbnk7XG5cbiAgICBfZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBjYXhDb25maWdcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSBbJ2xvY2FsZScsICdsb2NhbGVNYXRjaGVyJywgJ21vZGUnLCAnY3VycmVuY3knLCAnY3VycmVuY3lEaXNwbGF5JywgJ3VzZUdyb3VwaW5nJywgJ21pbkZyYWN0aW9uRGlnaXRzJywgJ21heEZyYWN0aW9uRGlnaXRzJywgJ3ByZWZpeCcsICdzdWZmaXgnXTtcbiAgICAgICAgaWYgKHByb3BzLnNvbWUoKHApID0+ICEhc2ltcGxlQ2hhbmdlW3BdKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb25zdHJ1Y3RQYXJzZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NsZWFyaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2luY3JlbWVudGJ1dHRvbmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGVjcmVtZW50YnV0dG9uaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgICAgICB0aGlzLmNvbnN0cnVjdFBhcnNlcigpO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGdldE9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbGVNYXRjaGVyOiB0aGlzLmxvY2FsZU1hdGNoZXIsXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3ksXG4gICAgICAgICAgICBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5LFxuICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRoaXMudXNlR3JvdXBpbmcsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWluRnJhY3Rpb25EaWdpdHMgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLm1heEZyYWN0aW9uRGlnaXRzID8/IHVuZGVmaW5lZFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdFBhcnNlcigpIHtcbiAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHRoaXMuZ2V0T3B0aW9ucygpKTtcbiAgICAgICAgY29uc3QgbnVtZXJhbHMgPSBbLi4ubmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQoOTg3NjU0MzIxMCldLnJldmVyc2UoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBuZXcgTWFwKG51bWVyYWxzLm1hcCgoZCwgaSkgPT4gW2QsIGldKSk7XG4gICAgICAgIHRoaXMuX251bWVyYWwgPSBuZXcgUmVnRXhwKGBbJHtudW1lcmFscy5qb2luKCcnKX1dYCwgJ2cnKTtcbiAgICAgICAgdGhpcy5fZ3JvdXAgPSB0aGlzLmdldEdyb3VwaW5nRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9taW51c1NpZ24gPSB0aGlzLmdldE1pbnVzU2lnbkV4cHJlc3Npb24oKTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3kgPSB0aGlzLmdldEN1cnJlbmN5RXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsID0gdGhpcy5nZXREZWNpbWFsRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsQ2hhciA9IHRoaXMuZ2V0RGVjaW1hbENoYXIoKTtcbiAgICAgICAgdGhpcy5fc3VmZml4ID0gdGhpcy5nZXRTdWZmaXhFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX3ByZWZpeCA9IHRoaXMuZ2V0UHJlZml4RXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9pbmRleCA9IChkOiBhbnkpID0+IGluZGV4LmdldChkKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDb25zdHJ1Y3RQYXJzZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFBhcnNlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXNjYXBlUmVnRXhwKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1stW1xcXXt9KCkqKz8uLFxcXFxeJHwjXFxzXS9nLCAnXFxcXCQmJyk7XG4gICAgfVxuXG4gICAgZ2V0RGVjaW1hbEV4cHJlc3Npb24oKTogUmVnRXhwIHtcbiAgICAgICAgY29uc3QgZGVjaW1hbENoYXIgPSB0aGlzLmdldERlY2ltYWxDaGFyKCk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbJHtkZWNpbWFsQ2hhcn1dYCwgJ2cnKTtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsQ2hhcigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgLi4udGhpcy5nZXRPcHRpb25zKCksIHVzZUdyb3VwaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlclxuICAgICAgICAgICAgLmZvcm1hdCgxLjEpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSBhcyBSZWdFeHAgfCBzdHJpbmcsICcnKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpO1xuICAgIH1cblxuICAgIGdldEdyb3VwaW5nRXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IHRydWUgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBDaGFyID0gZm9ybWF0dGVyLmZvcm1hdCgxMDAwMDAwKS50cmltKCkucmVwbGFjZSh0aGlzLl9udW1lcmFsLCAnJykuY2hhckF0KDApO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7dGhpcy5ncm91cENoYXJ9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0TWludXNTaWduRXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgtMSkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpfV1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbmN5RXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW5jeSkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgxKS5yZXBsYWNlKC9cXHMvZywgJycpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpLnJlcGxhY2UodGhpcy5fZ3JvdXAsICcnKX1dYCwgJ2cnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbXWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZml4RXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5wcmVmaXgpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZml4Q2hhciA9IHRoaXMucHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHN0eWxlOiB0aGlzLm1vZGUsIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5IH0pO1xuICAgICAgICAgICAgdGhpcy5wcmVmaXhDaGFyID0gZm9ybWF0dGVyLmZvcm1hdCgxKS5zcGxpdCgnMScpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYCR7dGhpcy5lc2NhcGVSZWdFeHAodGhpcy5wcmVmaXhDaGFyIHx8ICcnKX1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldFN1ZmZpeEV4cHJlc3Npb24oKTogUmVnRXhwIHtcbiAgICAgICAgaWYgKHRoaXMuc3VmZml4KSB7XG4gICAgICAgICAgICB0aGlzLnN1ZmZpeENoYXIgPSB0aGlzLnN1ZmZpeDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgeyBzdHlsZTogdGhpcy5tb2RlLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1ZmZpeENoYXIgPSBmb3JtYXR0ZXIuZm9ybWF0KDEpLnNwbGl0KCcxJylbMV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgJHt0aGlzLmVzY2FwZVJlZ0V4cCh0aGlzLnN1ZmZpeENoYXIgfHwgJycpfWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmx1clVwZGF0ZU9uTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5jb250cm9sPy51cGRhdGVPbiA9PT0gJ2JsdXInO1xuICAgIH1cblxuICAgIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmVmaXggJiYgdmFsdWUgIT0gdGhpcy5wcmVmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLnByZWZpeCArICcgJyArIGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1ZmZpeCAmJiB2YWx1ZSAhPSB0aGlzLnN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlICsgdGhpcy5zdWZmaXg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlKHRleHQ6IGFueSkge1xuICAgICAgICBjb25zdCBzdWZmaXhSZWdleCA9IG5ldyBSZWdFeHAodGhpcy5fc3VmZml4LCAnJyk7XG4gICAgICAgIGNvbnN0IHByZWZpeFJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLl9wcmVmaXgsICcnKTtcbiAgICAgICAgY29uc3QgY3VycmVuY3lSZWdleCA9IG5ldyBSZWdFeHAodGhpcy5fY3VycmVuY3ksICcnKTtcblxuICAgICAgICBsZXQgZmlsdGVyZWRUZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2Uoc3VmZml4UmVnZXgsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UocHJlZml4UmVnZXgsICcnKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKGN1cnJlbmN5UmVnZXgsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fZ3JvdXAsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fbWludXNTaWduLCAnLScpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9kZWNpbWFsLCAnLicpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9udW1lcmFsLCB0aGlzLl9pbmRleCk7XG5cbiAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCA9PT0gJy0nKVxuICAgICAgICAgICAgICAgIC8vIE1pbnVzIHNpZ25cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRUZXh0O1xuXG4gICAgICAgICAgICBsZXQgcGFyc2VkVmFsdWUgPSArZmlsdGVyZWRUZXh0O1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZFZhbHVlKSA/IG51bGwgOiBwYXJzZWRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJlcGVhdChldmVudDogRXZlbnQsIGludGVydmFsOiBudW1iZXIgfCBudWxsLCBkaXI6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGkgPSBpbnRlcnZhbCB8fCA1MDA7XG5cbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0KGV2ZW50LCA0MCwgZGlyKTtcbiAgICAgICAgfSwgaSk7XG5cbiAgICAgICAgdGhpcy5zcGluKGV2ZW50LCBkaXIpO1xuICAgIH1cblxuICAgIHNwaW4oZXZlbnQ6IEV2ZW50LCBkaXI6IG51bWJlcikge1xuICAgICAgICBsZXQgc3RlcCA9IHRoaXMuc3RlcCAqIGRpcjtcbiAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSh0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlKSB8fCAwO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLnZhbGlkYXRlVmFsdWUoKGN1cnJlbnRWYWx1ZSBhcyBudW1iZXIpICsgc3RlcCk7XG4gICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiB0aGlzLm1heGxlbmd0aCA8IHRoaXMuZm9ybWF0VmFsdWUobmV3VmFsdWUpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXQobmV3VmFsdWUsIG51bGwsICdzcGluJywgbnVsbCk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlKTtcblxuICAgICAgICB0aGlzLmhhbmRsZU9uSW5wdXQoZXZlbnQsIGN1cnJlbnRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0KGV2ZW50LCBudWxsLCAxKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwQnV0dG9uTW91c2VVcCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDMyIHx8IGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwQnV0dG9uS2V5VXAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgLTEpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlVXAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Eb3duQnV0dG9uS2V5VXAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzMiB8fCBldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIC0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXNlcklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTcGVjaWFsQ2hhcikge1xuICAgICAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9IHRoaXMubGFzdFZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzU3BlY2lhbENoYXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbklucHV0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBpZiAoKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLnNoaWZ0S2V5IHx8IChldmVudCBhcyBLZXlib2FyZEV2ZW50KS5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTcGVjaWFsQ2hhciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcjtcbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuc2VsZWN0aW9uRW5kIGFzIG51bWJlcjtcbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgbGV0IG5ld1ZhbHVlU3RyID0gbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3BpbihldmVudCwgMSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIC0xKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gc2VsZWN0aW9uU3RhcnQ7IGluZGV4IDw9IGlucHV0VmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ2hhckluZGV4ID0gaW5kZXggPT09IDAgPyAwIDogaW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGlucHV0VmFsdWUuY2hhckF0KHByZXZpb3VzQ2hhckluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShpbmRleCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gc2VsZWN0aW9uRW5kOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoaW5wdXRWYWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4LCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS12YWx1ZW5vdycsIG5ld1ZhbHVlU3RyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChzZWxlY3Rpb25TdGFydCA9PSAxICYmIHRoaXMucHJlZml4KSB8fCAoc2VsZWN0aW9uU3RhcnQgPT0gaW5wdXRWYWx1ZS5sZW5ndGggJiYgdGhpcy5zdWZmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4IH0gPSB0aGlzLmdldERlY2ltYWxDaGFySW5kZXhlcyhpbnB1dFZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFsTGVuZ3RoID0gdGhpcy5nZXREZWNpbWFsTGVuZ3RoKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JvdXAudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0IC0gMikgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2RlY2ltYWwudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgLSAxLCBzZWxlY3Rpb25TdGFydCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4ID4gMCAmJiBzZWxlY3Rpb25TdGFydCA+IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRlZFRleHQgPSB0aGlzLmlzRGVjaW1hbE1vZGUoKSAmJiAodGhpcy5taW5GcmFjdGlvbkRpZ2l0cyB8fCAwKSA8IGRlY2ltYWxMZW5ndGggPyAnJyA6ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArIGluc2VydGVkVGV4dCArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgJzAnICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSAodGhpcy5wYXJzZVZhbHVlKG5ld1ZhbHVlU3RyKSBhcyBudW1iZXIpID4gMCA/IG5ld1ZhbHVlU3RyIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnY3VycmVuY3knICYmIGRlbGV0ZUNoYXIuc2VhcmNoKHRoaXMuX2N1cnJlbmN5KSAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtc2luZ2xlJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmRlbGV0ZVJhbmdlKGlucHV0VmFsdWUsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgbnVsbCwgJ2RlbGV0ZS1yYW5nZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT09IHNlbGVjdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHNlbGVjdGlvblN0YXJ0ID09IDAgJiYgdGhpcy5wcmVmaXgpIHx8IChzZWxlY3Rpb25TdGFydCA9PSBpbnB1dFZhbHVlLmxlbmd0aCAtIDEgJiYgdGhpcy5zdWZmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWxldGVDaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4IH0gPSB0aGlzLmdldERlY2ltYWxDaGFySW5kZXhlcyhpbnB1dFZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFsTGVuZ3RoID0gdGhpcy5nZXREZWNpbWFsTGVuZ3RoKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JvdXAudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGVjaW1hbC50ZXN0KGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWxMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCArIDEsIHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXggPiAwICYmIHNlbGVjdGlvblN0YXJ0ID4gZGVjaW1hbENoYXJJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGVkVGV4dCA9IHRoaXMuaXNEZWNpbWFsTW9kZSgpICYmICh0aGlzLm1pbkZyYWN0aW9uRGlnaXRzIHx8IDApIDwgZGVjaW1hbExlbmd0aCA/ICcnIDogJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyBpbnNlcnRlZFRleHQgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArICcwJyArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9ICh0aGlzLnBhcnNlVmFsdWUobmV3VmFsdWVTdHIpIGFzIG51bWJlcikgPiAwID8gbmV3VmFsdWVTdHIgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyIGFzIHN0cmluZywgbnVsbCwgJ2RlbGV0ZS1iYWNrLXNpbmdsZScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5kZWxldGVSYW5nZShpbnB1dFZhbHVlLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtcmFuZ2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCB0aGlzLm1pbik7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCB0aGlzLm1heCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbktleURvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY29kZSA9IGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGxldCBjaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgbGV0IGlzRGVjaW1hbFNpZ24gPSB0aGlzLmlzRGVjaW1hbFNpZ24oY2hhcik7XG4gICAgICAgIGNvbnN0IGlzTWludXNTaWduID0gdGhpcy5pc01pbnVzU2lnbihjaGFyKTtcblxuICAgICAgICBpZiAoY29kZSAhPSAxMykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzRGVjaW1hbFNpZ24gJiYgZXZlbnQuY29kZSA9PT0gJ051bXBhZERlY2ltYWwnKSB7XG4gICAgICAgICAgICBpc0RlY2ltYWxTaWduID0gdHJ1ZTtcbiAgICAgICAgICAgIGNoYXIgPSB0aGlzLl9kZWNpbWFsQ2hhcjtcbiAgICAgICAgICAgIGNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlICsgY2hhcik7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlU3RyID0gbmV3VmFsdWUgIT0gbnVsbCA/IG5ld1ZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICAgICAgICBpZiAodGhpcy5tYXhsZW5ndGggJiYgdGhpcy5nZXRTZWxlY3RlZFRleHQoKT8ubGVuZ3RoID09IHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydChldmVudCwgY2hhciwgeyBpc0RlY2ltYWxTaWduLCBpc01pbnVzU2lnbiB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiBuZXdWYWx1ZVN0ci5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCg0OCA8PSBjb2RlICYmIGNvZGUgPD0gNTcpIHx8IGlzTWludXNTaWduIHx8IGlzRGVjaW1hbFNpZ24pIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0KGV2ZW50LCBjaGFyLCB7IGlzRGVjaW1hbFNpZ24sIGlzTWludXNTaWduIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RlZFRleHQoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB3aW5kb3dcbiAgICAgICAgICAgICAgICA/LmdldFNlbGVjdGlvbigpXG4gICAgICAgICAgICAgICAgPy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoL1teMC05J10vZywgJycpIHx8ICcnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGRhdGEgPSAoZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCAodGhpcy5kb2N1bWVudCBhcyBhbnkpLmRlZmF1bHRWaWV3WydjbGlwYm9hcmREYXRhJ10pLmdldERhdGEoJ1RleHQnKTtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWREYXRhID0gdGhpcy5wYXJzZVZhbHVlKGRhdGEpO1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZERhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydChldmVudCwgZmlsdGVyZWREYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsbG93TWludXNTaWduKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4gPT0gbnVsbCB8fCB0aGlzLm1pbiA8IDA7XG4gICAgfVxuXG4gICAgaXNNaW51c1NpZ24oY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9taW51c1NpZ24udGVzdChjaGFyKSB8fCBjaGFyID09PSAnLScpIHtcbiAgICAgICAgICAgIHRoaXMuX21pbnVzU2lnbi5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNEZWNpbWFsU2lnbihjaGFyOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlY2ltYWwudGVzdChjaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNEZWNpbWFsTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2RlY2ltYWwnO1xuICAgIH1cblxuICAgIGdldERlY2ltYWxDaGFySW5kZXhlcyh2YWw6IHN0cmluZykge1xuICAgICAgICBsZXQgZGVjaW1hbENoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFZhbCA9IHZhbFxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fcHJlZml4IGFzIFJlZ0V4cCwgJycpXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzL2csICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fY3VycmVuY3kgYXMgUmVnRXhwLCAnJyk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4ID0gZmlsdGVyZWRWYWwuc2VhcmNoKHRoaXMuX2RlY2ltYWwpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgcmV0dXJuIHsgZGVjaW1hbENoYXJJbmRleCwgZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggfTtcbiAgICB9XG5cbiAgICBnZXRDaGFySW5kZXhlcyh2YWw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBkZWNpbWFsQ2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBtaW51c0NoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fbWludXNTaWduKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeENoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fc3VmZml4IGFzIFJlZ0V4cCk7XG4gICAgICAgICh0aGlzLl9zdWZmaXggYXMgUmVnRXhwKS5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeUNoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fY3VycmVuY3kgYXMgUmVnRXhwKTtcbiAgICAgICAgKHRoaXMuX2N1cnJlbmN5IGFzIFJlZ0V4cCkubGFzdEluZGV4ID0gMDtcblxuICAgICAgICByZXR1cm4geyBkZWNpbWFsQ2hhckluZGV4LCBtaW51c0NoYXJJbmRleCwgc3VmZml4Q2hhckluZGV4LCBjdXJyZW5jeUNoYXJJbmRleCB9O1xuICAgIH1cblxuICAgIGluc2VydChldmVudDogRXZlbnQsIHRleHQ6IHN0cmluZywgc2lnbiA9IHsgaXNEZWNpbWFsU2lnbjogZmFsc2UsIGlzTWludXNTaWduOiBmYWxzZSB9KSB7XG4gICAgICAgIGNvbnN0IG1pbnVzQ2hhckluZGV4T25UZXh0ID0gdGV4dC5zZWFyY2godGhpcy5fbWludXNTaWduKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghdGhpcy5hbGxvd01pbnVzU2lnbigpICYmIG1pbnVzQ2hhckluZGV4T25UZXh0ICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIG1pbnVzQ2hhckluZGV4LCBzdWZmaXhDaGFySW5kZXgsIGN1cnJlbmN5Q2hhckluZGV4IH0gPSB0aGlzLmdldENoYXJJbmRleGVzKGlucHV0VmFsdWUpO1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHI7XG5cbiAgICAgICAgaWYgKHNpZ24uaXNNaW51c1NpZ24pIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobWludXNDaGFySW5kZXggPT09IC0xIHx8IHNlbGVjdGlvbkVuZCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuaW5zZXJ0VGV4dChpbnB1dFZhbHVlLCB0ZXh0LCAwLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2lnbi5pc0RlY2ltYWxTaWduKSB7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPT09IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBpbnB1dFZhbHVlLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXggPiBzZWxlY3Rpb25TdGFydCAmJiBkZWNpbWFsQ2hhckluZGV4IDwgc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIHRleHQsICdpbnNlcnQnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleCA9PT0gLTEgJiYgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5pbnNlcnRUZXh0KGlucHV0VmFsdWUsIHRleHQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGcmFjdGlvbkRpZ2l0cyA9IHRoaXMubnVtYmVyRm9ybWF0LnJlc29sdmVkT3B0aW9ucygpLm1heGltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHNlbGVjdGlvblN0YXJ0ICE9PSBzZWxlY3Rpb25FbmQgPyAncmFuZ2UtaW5zZXJ0JyA6ICdpbnNlcnQnO1xuXG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPiBkZWNpbWFsQ2hhckluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICsgdGV4dC5sZW5ndGggLSAoZGVjaW1hbENoYXJJbmRleCArIDEpIDw9IG1heEZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJJbmRleCA9IGN1cnJlbmN5Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gY3VycmVuY3lDaGFySW5kZXggLSAxIDogc3VmZml4Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gc3VmZml4Q2hhckluZGV4IDogaW5wdXRWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIHRleHQgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgdGV4dC5sZW5ndGgsIGNoYXJJbmRleCkgKyBpbnB1dFZhbHVlLnNsaWNlKGNoYXJJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCBvcGVyYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIHRleHQsIG9wZXJhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRUZXh0KHZhbHVlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHRleHRTcGxpdCA9IHRleHQgPT09ICcuJyA/IHRleHQgOiB0ZXh0LnNwbGl0KCcuJyk7XG5cbiAgICAgICAgaWYgKHRleHRTcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxDaGFySW5kZXggPSB2YWx1ZS5zbGljZShzdGFydCwgZW5kKS5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICByZXR1cm4gZGVjaW1hbENoYXJJbmRleCA+IDAgPyB2YWx1ZS5zbGljZSgwLCBzdGFydCkgKyB0aGlzLmZvcm1hdFZhbHVlKHRleHQpICsgdmFsdWUuc2xpY2UoZW5kKSA6IHZhbHVlIHx8IHRoaXMuZm9ybWF0VmFsdWUodGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kIC0gc3RhcnQgPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgdmFsdWUuc2xpY2UoZW5kKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgc3RhcnQpICsgdGV4dCArIHZhbHVlLnNsaWNlKGVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGVSYW5nZSh2YWx1ZTogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHI7XG5cbiAgICAgICAgaWYgKGVuZCAtIHN0YXJ0ID09PSB2YWx1ZS5sZW5ndGgpIG5ld1ZhbHVlU3RyID0gJyc7XG4gICAgICAgIGVsc2UgaWYgKHN0YXJ0ID09PSAwKSBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKGVuZCk7XG4gICAgICAgIGVsc2UgaWYgKGVuZCA9PT0gdmFsdWUubGVuZ3RoKSBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKDAsIHN0YXJ0KTtcbiAgICAgICAgZWxzZSBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHZhbHVlLnNsaWNlKGVuZCk7XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlU3RyO1xuICAgIH1cblxuICAgIGluaXRDdXJzb3IoKSB7XG4gICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGxldCBzZWxlY3Rpb25FbmQgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZDtcbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgdmFsdWVMZW5ndGggPSBpbnB1dFZhbHVlLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gbnVsbDtcblxuICAgICAgICAvLyByZW1vdmUgcHJlZml4XG4gICAgICAgIGxldCBwcmVmaXhMZW5ndGggPSAodGhpcy5wcmVmaXhDaGFyIHx8ICcnKS5sZW5ndGg7XG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJyk7XG5cbiAgICAgICAgLy8gV2lsbCBhbGxvdyBzZWxlY3Rpbmcgd2hvbGUgcHJlZml4LiBCdXQgbm90IGEgcGFydCBvZiBpdC5cbiAgICAgICAgLy8gTmVnYXRpdmUgdmFsdWVzIHdpbGwgdHJpZ2dlciBjbGF1c2VzIGFmdGVyIHRoaXMgdG8gZml4IHRoZSBjdXJzb3IgcG9zaXRpb24uXG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gc2VsZWN0aW9uRW5kIHx8IHNlbGVjdGlvblN0YXJ0ICE9PSAwIHx8IHNlbGVjdGlvbkVuZCA8IHByZWZpeExlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQgLT0gcHJlZml4TGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoY2hhcikpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25TdGFydCArIHByZWZpeExlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vbGVmdFxuICAgICAgICBsZXQgaSA9IHNlbGVjdGlvblN0YXJ0IC0gMTtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgICAgICAgY2hhciA9IGlucHV0VmFsdWUuY2hhckF0KGkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihjaGFyKSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaSArIHByZWZpeExlbmd0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4ICsgMSwgaW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgPSBzZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdmFsdWVMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoaSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihjaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGkgKyBwcmVmaXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleCB8fCAwO1xuICAgIH1cblxuICAgIG9uSW5wdXRDbGljaygpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgY3VycmVudFZhbHVlICE9PSBEb21IYW5kbGVyLmdldFNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRDdXJzb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzTnVtZXJhbENoYXIoY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIGlmIChjaGFyLmxlbmd0aCA9PT0gMSAmJiAodGhpcy5fbnVtZXJhbC50ZXN0KGNoYXIpIHx8IHRoaXMuX2RlY2ltYWwudGVzdChjaGFyKSB8fCB0aGlzLl9ncm91cC50ZXN0KGNoYXIpIHx8IHRoaXMuX21pbnVzU2lnbi50ZXN0KGNoYXIpKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFJlZ2V4KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXNldFJlZ2V4KCkge1xuICAgICAgICB0aGlzLl9udW1lcmFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5fZ3JvdXAubGFzdEluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsdWUoZXZlbnQ6IEV2ZW50LCB2YWx1ZVN0cjogTnVsbGFibGU8c3RyaW5nPiwgaW5zZXJ0ZWRWYWx1ZVN0cjogTnVsbGFibGU8c3RyaW5nPiwgb3BlcmF0aW9uOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBudWxsO1xuXG4gICAgICAgIGlmICh2YWx1ZVN0ciAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSh2YWx1ZVN0cik7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9ICFuZXdWYWx1ZSAmJiAhdGhpcy5hbGxvd0VtcHR5ID8gMCA6IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dChuZXdWYWx1ZSwgaW5zZXJ0ZWRWYWx1ZVN0ciwgb3BlcmF0aW9uLCB2YWx1ZVN0cik7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlT25JbnB1dChldmVudCwgY3VycmVudFZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVPbklucHV0KGV2ZW50OiBFdmVudCwgY3VycmVudFZhbHVlOiBzdHJpbmcsIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUNoYW5nZWQoY3VycmVudFZhbHVlLCBuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICh0aGlzLmlucHV0IGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgbmV3VmFsdWUpO1xuICAgICAgICAgICAgIXRoaXMuaXNCbHVyVXBkYXRlT25Nb2RlICYmIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25JbnB1dC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBuZXdWYWx1ZSwgZm9ybWF0dGVkVmFsdWU6IGN1cnJlbnRWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsdWVDaGFuZ2VkKGN1cnJlbnRWYWx1ZTogc3RyaW5nLCBuZXdWYWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDdXJyZW50VmFsdWUgPSB0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJyA/IHRoaXMucGFyc2VWYWx1ZShjdXJyZW50VmFsdWUpIDogY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlICE9PSBwYXJzZWRDdXJyZW50VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJy0nIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgKHZhbHVlIGFzIG51bWJlcikgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWluO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4ICE9IG51bGwgJiYgKHZhbHVlIGFzIG51bWJlcikgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHVwZGF0ZUlucHV0KHZhbHVlOiBhbnksIGluc2VydGVkVmFsdWVTdHI6IE51bGxhYmxlPHN0cmluZz4sIG9wZXJhdGlvbjogTnVsbGFibGU8c3RyaW5nPiwgdmFsdWVTdHI6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgaW5zZXJ0ZWRWYWx1ZVN0ciA9IGluc2VydGVkVmFsdWVTdHIgfHwgJyc7XG5cbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcbiAgICAgICAgbGV0IGN1cnJlbnRMZW5ndGggPSBpbnB1dFZhbHVlLmxlbmd0aDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHZhbHVlU3RyKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuY29uY2F0VmFsdWVzKG5ld1ZhbHVlLCB2YWx1ZVN0ciBhcyBzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluaXRDdXJzb3IoKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGluZGV4ICsgaW5zZXJ0ZWRWYWx1ZVN0ci5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiBuZXdWYWx1ZS5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuc2xpY2UoMCwgdGhpcy5tYXhsZW5ndGgpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gTWF0aC5taW4oc2VsZWN0aW9uU3RhcnQsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihzZWxlY3Rpb25FbmQsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoICYmIHRoaXMubWF4bGVuZ3RoIDwgbmV3VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIGxldCBuZXdMZW5ndGggPSBuZXdWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdyYW5nZS1pbnNlcnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSgoaW5wdXRWYWx1ZSB8fCAnJykuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFZhbHVlU3RyID0gc3RhcnRWYWx1ZSAhPT0gbnVsbCA/IHN0YXJ0VmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RXhwciA9IHN0YXJ0VmFsdWVTdHIuc3BsaXQoJycpLmpvaW4oYCgke3RoaXMuZ3JvdXBDaGFyfSk/YCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc1JlZ2V4ID0gbmV3IFJlZ0V4cChzdGFydEV4cHIsICdnJyk7XG4gICAgICAgICAgICAgICAgc1JlZ2V4LnRlc3QobmV3VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdEV4cHIgPSBpbnNlcnRlZFZhbHVlU3RyLnNwbGl0KCcnKS5qb2luKGAoJHt0aGlzLmdyb3VwQ2hhcn0pP2ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRSZWdleCA9IG5ldyBSZWdFeHAodEV4cHIsICdnJyk7XG4gICAgICAgICAgICAgICAgdFJlZ2V4LnRlc3QobmV3VmFsdWUuc2xpY2Uoc1JlZ2V4Lmxhc3RJbmRleCkpO1xuXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gc1JlZ2V4Lmxhc3RJbmRleCArIHRSZWdleC5sYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3TGVuZ3RoID09PSBjdXJyZW50TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ2luc2VydCcgfHwgb3BlcmF0aW9uID09PSAnZGVsZXRlLWJhY2stc2luZ2xlJykgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCArIDEsIHNlbGVjdGlvbkVuZCArIDEpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJ2RlbGV0ZS1zaW5nbGUnKSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kIC0gMSwgc2VsZWN0aW9uRW5kIC0gMSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob3BlcmF0aW9uID09PSAnZGVsZXRlLXJhbmdlJyB8fCBvcGVyYXRpb24gPT09ICdzcGluJykgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnZGVsZXRlLWJhY2stc2luZ2xlJykge1xuICAgICAgICAgICAgICAgIGxldCBwcmV2Q2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvbkVuZCAtIDEpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0Q2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgbGV0IGRpZmYgPSBjdXJyZW50TGVuZ3RoIC0gbmV3TGVuZ3RoO1xuICAgICAgICAgICAgICAgIGxldCBpc0dyb3VwQ2hhciA9IHRoaXMuX2dyb3VwLnRlc3QobmV4dENoYXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzR3JvdXBDaGFyICYmIGRpZmYgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kICs9IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNHcm91cENoYXIgJiYgdGhpcy5pc051bWVyYWxDaGFyKHByZXZDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgKz0gLTEgKiBkaWZmICsgMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9ncm91cC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0VmFsdWUgPT09ICctJyAmJiBvcGVyYXRpb24gPT09ICdpbnNlcnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0Q3Vyc29yKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gaW5kZXggKyBpbnNlcnRlZFZhbHVlU3RyLmxlbmd0aCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kICsgKG5ld0xlbmd0aCAtIGN1cnJlbnRMZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbmNhdFZhbHVlcyh2YWwxOiBzdHJpbmcsIHZhbDI6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsMSAmJiB2YWwyKSB7XG4gICAgICAgICAgICBsZXQgZGVjaW1hbENoYXJJbmRleCA9IHZhbDIuc2VhcmNoKHRoaXMuX2RlY2ltYWwpO1xuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdWZmaXhDaGFyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlY2ltYWxDaGFySW5kZXggIT09IC0xID8gdmFsMSA6IHZhbDEucmVwbGFjZSh0aGlzLnN1ZmZpeENoYXIsICcnKS5zcGxpdCh0aGlzLl9kZWNpbWFsKVswXSArIHZhbDIucmVwbGFjZSh0aGlzLnN1ZmZpeENoYXIsICcnKS5zbGljZShkZWNpbWFsQ2hhckluZGV4KSArIHRoaXMuc3VmZml4Q2hhcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlY2ltYWxDaGFySW5kZXggIT09IC0xID8gdmFsMS5zcGxpdCh0aGlzLl9kZWNpbWFsKVswXSArIHZhbDIuc2xpY2UoZGVjaW1hbENoYXJJbmRleCkgOiB2YWwxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWwxO1xuICAgIH1cblxuICAgIGdldERlY2ltYWxMZW5ndGgodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3BsaXQgPSB2YWx1ZS5zcGxpdCh0aGlzLl9kZWNpbWFsKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlU3BsaXQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlU3BsaXRbMV1cbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fc3VmZml4IGFzIFJlZ0V4cCwgJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fY3VycmVuY3kgYXMgUmVnRXhwLCAnJykubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlTnVtYmVyID0gdGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMucGFyc2VWYWx1ZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVTdHJpbmcgPSBuZXdWYWx1ZU51bWJlcj8udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShuZXdWYWx1ZVN0cmluZyk7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCBuZXdWYWx1ZVN0cmluZyk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlTnVtYmVyKTtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9ICF0aGlzLnZhbHVlICYmICF0aGlzLmFsbG93RW1wdHkgPyAwIDogdGhpcy52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodmFsKTtcbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudDogRXZlbnQsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghKHRoaXMuaXNCbHVyVXBkYXRlT25Nb2RlICYmIHRoaXMuZm9jdXNlZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQmx1clVwZGF0ZU9uTW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCBmaWxsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9IG51bGwgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c3BhblxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NheC1pbnB1dG51bWJlciBjYXgtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgJ2NheC1pbnB1dG51bWJlci1idXR0b25zLXN0YWNrZWQnOiB0aGlzLnNob3dCdXR0b25zICYmIHRoaXMuYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAgICdjYXgtaW5wdXRudW1iZXItYnV0dG9ucy1ob3Jpem9udGFsJzogdGhpcy5zaG93QnV0dG9ucyAmJiB0aGlzLmJ1dHRvbkxheW91dCA9PT0gJ2hvcml6b250YWwnLFxuICAgICAgICAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbnMtdmVydGljYWwnOiB0aGlzLnNob3dCdXR0b25zICYmIHRoaXMuYnV0dG9uTGF5b3V0ID09PSAndmVydGljYWwnLFxuICAgICAgICAnY2F4LWlucHV0LWljb24tbGVmdCc6IChwcmVmaXggfHwgcHJlZml4SWNvbikgJiYgYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAgICdjYXgtaW5wdXQtaWNvbi1yaWdodCc6IHN1ZmZpeCxcbiAgICAgICAgJ2NheC1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ2lucHV0bnVtYmVyJ1wiXG4gICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXG4+XG4gICAgPCEtLSBPbmx5IHNob3cgcHJlZml4L2ljb24gaW4gc3RhY2tlZCBsYXlvdXQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwcmVmaXggfHwgcHJlZml4SWNvbikgJiYgYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCdcIj5cbiAgICAgICAgPGkgKm5nSWY9XCJwcmVmaXhJY29uXCIgY2xhc3M9XCJjYXgtaW5wdXQtcHJlZml4LWljb25cIiBbbmdDbGFzc109XCJwcmVmaXhJY29uXCI+PC9pPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gRG93biBidXR0b24gZm9yIGhvcml6b250YWwgbGF5b3V0IC0tPlxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIiBjYXhCdXR0b25cbiAgICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIGNsYXNzPVwiY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLWRvd25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNldXApPVwib25Eb3duQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Eb3duQnV0dG9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uRG93bkJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b24nXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b25pY29uJ1wiIC8+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkZWNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8aW5wdXRcbiAgICAgICAgY2F4SW5wdXRUZXh0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgcm9sZT1cInNwaW5idXR0b25cIlxuICAgICAgICBbbmdDbGFzc109XCInY2F4LWlucHV0bnVtYmVyLWlucHV0J1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgICAgICBbY2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCJcbiAgICAgICAgW3ZhbHVlXT1cImZvcm1hdHRlZFZhbHVlKClcIlxuICAgICAgICBbYXR0ci52YXJpYW50XT1cInZhcmlhbnRcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwic2l6ZVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImFyaWFSZXF1aXJlZFwiXG4gICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgKGlucHV0KT1cIm9uVXNlcklucHV0KCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbklucHV0S2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGtleXByZXNzKT1cIm9uSW5wdXRLZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soKVwiXG4gICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2lucHV0J1wiXG4gICAgICAgIGNheEF1dG9Gb2N1c1xuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIFtjbGFzcy5jYXgtdmFyaWFudC1maWxsZWRdPVwidmFyaWFudCA9PT0gJ2ZpbGxlZCcgfHwgY29uZmlnLmlucHV0U3R5bGUoKSA9PT0gJ2ZpbGxlZCdcIlxuICAgIC8+XG4gICAgPCEtLSBVcCBidXR0b24gZm9yIGhvcml6b250YWwgbGF5b3V0IC0tPlxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIiBjYXhCdXR0b25cbiAgICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIGNsYXNzPVwiY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLXVwXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblVwQnV0dG9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25VcEJ1dHRvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uVXBCdXR0b25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpbmNyZW1lbnRidXR0b24nXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIWluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5jcmVtZW50YnV0dG9uaWNvbidcIiAvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5jcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFtuZ0NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkljb25cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGkgKm5nSWY9XCJzdWZmaXhcIiBjbGFzcz1cImNheC1pbnB1dC1zdWZmaXhcIiBbaW5uZXJIVE1MXT1cInN1ZmZpeFwiPjwvaT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ICE9ICd2ZXJ0aWNhbCcgJiYgc2hvd0NsZWFyICYmIHZhbHVlXCI+XG4gICAgICAgIDxUaW1lc0ljb24gKm5nSWY9XCIhY2xlYXJJY29uVGVtcGxhdGVcIiBbbmdDbGFzc109XCInY2F4LWlucHV0bnVtYmVyLWNsZWFyLWljb24nXCIgKGNsaWNrKT1cImNsZWFyKClcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2NsZWFySWNvbidcIiAvPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCIgKGNsaWNrKT1cImNsZWFyKClcIiBjbGFzcz1cImNheC1pbnB1dG51bWJlci1jbGVhci1pY29uXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbGVhckljb24nXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbGVhckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c3BhbiBjbGFzcz1cImNheC1pbnB1dG51bWJlci1idXR0b24tZ3JvdXBcIiAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCA9PT0gJ3N0YWNrZWQnXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIididXR0b25Hcm91cCdcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjYXhCdXR0b25cbiAgICAgICAgICAgIFtzZXZlcml0eV09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NheC1pbnB1dG51bWJlci1idXR0b24gY2F4LWlucHV0bnVtYmVyLWJ1dHRvbi11cCc6IHRydWUgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImNheC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbmNyZW1lbnRCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uVXBCdXR0b25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uVXBCdXR0b25Nb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25VcEJ1dHRvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2luY3JlbWVudGJ1dHRvbidcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluY3JlbWVudEJ1dHRvbkljb25cIiBbbmdDbGFzc109XCJpbmNyZW1lbnRCdXR0b25JY29uXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpbmNyZW1lbnRidXR0b25pY29uJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgICAgIDxBbmdsZVVwSWNvbiAqbmdJZj1cIiFpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2luY3JlbWVudGJ1dHRvbmljb24nXCIgLz5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNheEJ1dHRvblxuICAgICAgICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLWRvd24nOiB0cnVlIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJjYXgtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZXVwKT1cIm9uRG93bkJ1dHRvbk1vdXNlVXAoKVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkRvd25CdXR0b25Nb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJvbkRvd25CdXR0b25LZXlVcCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZGVjcmVtZW50YnV0dG9uJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiIFtuZ0NsYXNzXT1cImRlY3JlbWVudEJ1dHRvbkljb25cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RlY3JlbWVudGJ1dHRvbmljb24nXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZWNyZW1lbnRCdXR0b25JY29uXCI+XG4gICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b25pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCAhPT0gJ3N0YWNrZWQnICYmIGJ1dHRvbkxheW91dCAhPT0gJ2hvcml6b250YWwnXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNheEJ1dHRvblxuICAgICAgICBbc2V2ZXJpdHldPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLXVwJzogdHJ1ZSB9XCJcbiAgICAgICAgW2NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgY2xhc3M9XCJjYXgtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblVwQnV0dG9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25VcEJ1dHRvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uVXBCdXR0b25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2luY3JlbWVudGJ1dHRvbidcIlxuICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbmNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5jcmVtZW50YnV0dG9uaWNvbidcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIWluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5jcmVtZW50YnV0dG9uaWNvbidcIiAvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5jcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCAhPT0gJ3N0YWNrZWQnICYmIGJ1dHRvbkxheW91dCAhPT0gJ2hvcml6b250YWwnXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNheEJ1dHRvblxuICAgICAgICBbc2V2ZXJpdHldPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLWRvd24nOiB0cnVlIH1cIlxuICAgICAgICBjbGFzcz1cImNheC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgW2NsYXNzXT1cImRlY3JlbWVudEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNldXApPVwib25Eb3duQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Eb3duQnV0dG9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uRG93bkJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RlY3JlbWVudGJ1dHRvbidcIlxuICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkZWNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZGVjcmVtZW50YnV0dG9uaWNvbidcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b25pY29uJ1wiIC8+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbjwvc3Bhbj5cbiJdfQ==
|