@acorex/modules 20.0.6 → 20.0.8
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/common/index.d.ts +22 -2
- package/contact-management/README.md +568 -0
- package/contact-management/index.d.ts +263 -0
- package/conversation/index.d.ts +222 -189
- package/document-management/index.d.ts +5 -1
- package/fesm2022/{acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs → acorex-modules-application-management-module-designer.component-BErRgx0w.mjs} +7 -7
- package/fesm2022/{acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs.map → acorex-modules-application-management-module-designer.component-BErRgx0w.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +41 -42
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs → acorex-modules-auth-acorex-modules-auth-X866H4oy.mjs} +44 -44
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-X866H4oy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-C60idNYx.mjs → acorex-modules-auth-app-chooser.component-DqKTfLA2.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-app-chooser.component-C60idNYx.mjs.map → acorex-modules-auth-app-chooser.component-DqKTfLA2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-blank.layout-C5d42pO1.mjs → acorex-modules-auth-blank.layout-D2qSgxTy.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-blank.layout-C5d42pO1.mjs.map → acorex-modules-auth-blank.layout-D2qSgxTy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-siRdi16m.mjs → acorex-modules-auth-login.module-CWOYzn0L.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-login.module-siRdi16m.mjs.map → acorex-modules-auth-login.module-CWOYzn0L.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-BJCAe5Ai.mjs → acorex-modules-auth-master.layout-384T0lIg.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-master.layout-BJCAe5Ai.mjs.map → acorex-modules-auth-master.layout-384T0lIg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-VhDUmkMc.mjs → acorex-modules-auth-password.component-BW_ooTQG.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-VhDUmkMc.mjs.map → acorex-modules-auth-password.component-BW_ooTQG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-6-EEsfc2.mjs → acorex-modules-auth-password.component-JG95JpLz.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-6-EEsfc2.mjs.map → acorex-modules-auth-password.component-JG95JpLz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-BwBn4o81.mjs → acorex-modules-auth-routes-DqKtHu-i.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BwBn4o81.mjs.map → acorex-modules-auth-routes-DqKtHu-i.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs → acorex-modules-auth-tenant-chooser.component-C0jxaqqg.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs.map → acorex-modules-auth-tenant-chooser.component-C0jxaqqg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs → acorex-modules-auth-two-factor-code.component-D7KOomHD.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs.map → acorex-modules-auth-two-factor-code.component-D7KOomHD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-D7NgZHmC.mjs → acorex-modules-auth-two-factor.module-C88pXqao.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-two-factor.module-D7NgZHmC.mjs.map → acorex-modules-auth-two-factor.module-C88pXqao.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-DhlBCxly.mjs → acorex-modules-auth-user-sessions.component-loloVwv0.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-user-sessions.component-DhlBCxly.mjs.map → acorex-modules-auth-user-sessions.component-loloVwv0.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-B5JU9uH9.mjs → acorex-modules-common-search-popup.component-CCKiQx0U.mjs} +8 -8
- package/fesm2022/{acorex-modules-common-search-popup.component-B5JU9uH9.mjs.map → acorex-modules-common-search-popup.component-CCKiQx0U.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs → acorex-modules-common-timeline-version-history-popup.component-DJOcjquG.mjs} +8 -8
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs.map → acorex-modules-common-timeline-version-history-popup.component-DJOcjquG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +215 -86
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs +489 -0
- package/fesm2022/acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs +827 -0
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs +509 -0
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs +469 -0
- package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs +489 -0
- package/fesm2022/acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management.mjs +2332 -0
- package/fesm2022/acorex-modules-contact-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-content-management.mjs +119 -55
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1174 -1216
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +76 -76
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-ClH75xx1.mjs → acorex-modules-document-management-acorex-modules-document-management-C4cvhxSV.mjs} +310 -235
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C4cvhxSV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-B_tjfzIn.mjs → acorex-modules-document-management-attachment-widget.component-B5txg8z0.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-B_tjfzIn.mjs.map → acorex-modules-document-management-attachment-widget.component-B5txg8z0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DNdRcCAs.mjs → acorex-modules-document-management-create-folder-dialog.component-LfnTz49a.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DNdRcCAs.mjs.map → acorex-modules-document-management-create-folder-dialog.component-LfnTz49a.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-JsK1UgZh.mjs → acorex-modules-document-management-details-view.component-Co5F8eWp.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-details-view.component-JsK1UgZh.mjs.map → acorex-modules-document-management-details-view.component-Co5F8eWp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DJT9oLek.mjs → acorex-modules-document-management-drive-choose.component-DFRdS7s1.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DJT9oLek.mjs.map → acorex-modules-document-management-drive-choose.component-DFRdS7s1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-DYxpvUWX.mjs → acorex-modules-document-management-drive.component-jGs09Jrd.mjs} +8 -8
- package/fesm2022/{acorex-modules-document-management-drive.component-DYxpvUWX.mjs.map → acorex-modules-document-management-drive.component-jGs09Jrd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-B324V2hL.mjs → acorex-modules-document-management-large-icons-view.component-DD9_xgL4.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-B324V2hL.mjs.map → acorex-modules-document-management-large-icons-view.component-DD9_xgL4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-V5gHyu9X.mjs → acorex-modules-document-management-large-tiles-view.component-CNBUzaUz.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-V5gHyu9X.mjs.map → acorex-modules-document-management-large-tiles-view.component-CNBUzaUz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs → acorex-modules-document-management-link-dialog.component-CXzR7mUW.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs.map → acorex-modules-document-management-link-dialog.component-CXzR7mUW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-Bm2EH2aT.mjs → acorex-modules-document-management-list-view.component-D4DbyB6W.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-list-view.component-Bm2EH2aT.mjs.map → acorex-modules-document-management-list-view.component-D4DbyB6W.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-CmMvrfKW.mjs +315 -0
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-CmMvrfKW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs → acorex-modules-document-management-meta-selector-widget-column.component-DHQjyq8s.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs.map → acorex-modules-document-management-meta-selector-widget-column.component-DHQjyq8s.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs → acorex-modules-document-management-meta-selector-widget-designer.component-Cc6n71wn.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs.map → acorex-modules-document-management-meta-selector-widget-designer.component-Cc6n71wn.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-D88h9eR6.mjs +31 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-D88h9eR6.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DGqVDVLJ.mjs → acorex-modules-document-management-permission-definition.provider-DoOyhnwQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DGqVDVLJ.mjs.map → acorex-modules-document-management-permission-definition.provider-DoOyhnwQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-LgpvDguk.mjs → acorex-modules-document-management-rename-node-dialog.component-JDZWsFXL.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-LgpvDguk.mjs.map → acorex-modules-document-management-rename-node-dialog.component-JDZWsFXL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs → acorex-modules-document-management-share-dialog.component-DTzXwqHw.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs.map → acorex-modules-document-management-share-dialog.component-DTzXwqHw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs → acorex-modules-document-management-share-email-dialog.component-BaNzKKG4.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs.map → acorex-modules-document-management-share-email-dialog.component-BaNzKKG4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BwFoe1vd.mjs → acorex-modules-document-management-small-icons-view.component-BNTmgtYr.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BwFoe1vd.mjs.map → acorex-modules-document-management-small-icons-view.component-BNTmgtYr.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-B5gp0wus.mjs → acorex-modules-document-management-small-tiles-view.component-CbCBAKyR.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-B5gp0wus.mjs.map → acorex-modules-document-management-small-tiles-view.component-CbCBAKyR.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-BsAsK1EG.mjs} +58 -57
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs.map → acorex-modules-form-template-management-acorex-modules-form-template-management-BsAsK1EG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs → acorex-modules-form-template-management-category.entity-B3iAtREq.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs.map → acorex-modules-form-template-management-category.entity-B3iAtREq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs → acorex-modules-form-template-management-designer.page-B-TIUKl7.mjs} +4 -4
- package/fesm2022/{acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs.map → acorex-modules-form-template-management-designer.page-B-TIUKl7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs → acorex-modules-form-template-management-permission-definition.provider-CTG95UDp.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs.map → acorex-modules-form-template-management-permission-definition.provider-CTG95UDp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs → acorex-modules-form-template-management-settings.provider-BmFufTUd.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs.map → acorex-modules-form-template-management-settings.provider-BmFufTUd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs → acorex-modules-form-template-management-template-picker.component-CNwhdnGC.mjs} +4 -4
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs.map → acorex-modules-form-template-management-template-picker.component-CNwhdnGC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs → acorex-modules-form-template-management-template-widget-edit.component-BNIx16WW.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-BNIx16WW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template.entity-Cps77n3G.mjs → acorex-modules-form-template-management-template.entity-BGsixiEI.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-Cps77n3G.mjs.map → acorex-modules-form-template-management-template.entity-BGsixiEI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs → acorex-modules-form-template-management-viewer-popup.component-CzjuUz4o.mjs} +9 -6
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-CzjuUz4o.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs → acorex-modules-issue-management-acorex-modules-issue-management-C2JoHgaa.mjs} +24 -24
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-C2JoHgaa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs → acorex-modules-issue-management-capture-screen.component-DTtUkL78.mjs} +5 -5
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs.map → acorex-modules-issue-management-capture-screen.component-DTtUkL78.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +10 -10
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +35 -35
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-COUAmxM8.mjs → acorex-modules-organization-management-add-item.component-D99TugmE.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-add-item.component-COUAmxM8.mjs.map → acorex-modules-organization-management-add-item.component-D99TugmE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs → acorex-modules-organization-management-org-chart-configuration.page-DTNqHbxt.mjs} +5 -5
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-DTNqHbxt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs → acorex-modules-organization-management-org-chart-configuration.service-BSO0GrAW.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs.map → acorex-modules-organization-management-org-chart-configuration.service-BSO0GrAW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs → acorex-modules-organization-management-org-chart.page-ioMhEPnQ.mjs} +12 -12
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs.map → acorex-modules-organization-management-org-chart.page-ioMhEPnQ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +122 -122
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs → acorex-modules-platform-management-acorex-modules-platform-management-CFoPmixl.mjs} +933 -315
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CFoPmixl.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-CSNKxghv.mjs → acorex-modules-platform-management-list-version.component-D0-Ya-Yx.mjs} +7 -7
- package/fesm2022/{acorex-modules-platform-management-list-version.component-CSNKxghv.mjs.map → acorex-modules-platform-management-list-version.component-D0-Ya-Yx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs → acorex-modules-platform-management-settings.provider--ARXqBUY.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs.map → acorex-modules-platform-management-settings.provider--ARXqBUY.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +43 -43
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management-report-create-root.component-LrE6TkIp.mjs +302 -0
- package/fesm2022/acorex-modules-report-management-report-create-root.component-LrE6TkIp.mjs.map +1 -0
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs → acorex-modules-report-management-report-runner-root-page.component-BntIoMfN.mjs} +49 -21
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BntIoMfN.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management-run.command-CoXvPC15.mjs +20 -0
- package/fesm2022/acorex-modules-report-management-run.command-CoXvPC15.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +797 -29
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +63 -69
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs → acorex-modules-settings-management-setting-page.component-BKwKLUpD.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs.map → acorex-modules-settings-management-setting-page.component-BKwKLUpD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs → acorex-modules-settings-management-setting-view.component-Dco7MvZr.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs.map → acorex-modules-settings-management-setting-view.component-Dco7MvZr.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +6 -6
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +43 -44
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-ChW_Hwf2.mjs +762 -0
- package/fesm2022/acorex-modules-workflow-management-task-board.page-ChW_Hwf2.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +12 -12
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +9 -5
- package/platform-management/index.d.ts +235 -8
- package/report-management/index.d.ts +11 -4
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-ClH75xx1.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs +0 -51
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-q6mDKrFi.mjs +0 -190
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-q6mDKrFi.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs +0 -32
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs +0 -36
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs +0 -494
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs.map +0 -1
package/fesm2022/acorex-modules-report-management-report-create-root.component-LrE6TkIp.mjs.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-report-management-report-create-root.component-LrE6TkIp.mjs","sources":["../tmp-esm2022/report-management/lib/features/report/create/report-create-root/report-create-root.component.js"],"sourcesContent":["import { Component, ViewEncapsulation, computed, inject, signal, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXStepWizardModule } from '@acorex/components/step-wizard';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXToastService } from '@acorex/components/toast';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/form\";\nimport * as i3 from \"@acorex/components/text-box\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/label\";\nimport * as i6 from \"@acorex/components/check-box\";\nimport * as i7 from \"@acorex/components/select-box\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/step-wizard\";\n//#endregion\nexport class AXPReportCreateRootComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.toastService = inject(AXToastService);\n //#endregion\n //#region ---- ViewChild & Signals ----\n this.reportWizard = viewChild('reportWizard');\n this.isValidating = signal(false);\n this.isSaving = signal(false);\n //#endregion\n //#region ---- Computed Properties ----\n this.canProceed = computed(() => {\n return this.validateCurrentStep();\n });\n //#endregion\n //#region ---- Form Data ----\n this.formData = {\n name: '',\n title: '',\n category: '',\n dataSource: '',\n template: '',\n formats: {},\n isScheduled: false,\n scheduleFrequency: '',\n parameters: []\n };\n //#endregion\n //#region ---- Step Definitions ----\n this.steps = [\n {\n id: 'basic-info',\n title: 'Basic Information',\n subtitle: 'Enter report details'\n },\n {\n id: 'configuration',\n title: 'Configuration',\n subtitle: 'Configure report settings'\n },\n {\n id: 'parameters',\n title: 'Parameters',\n subtitle: 'Define report parameters'\n },\n {\n id: 'review',\n title: 'Review & Finish',\n subtitle: 'Review and complete'\n }\n ];\n //#endregion\n //#region ---- Data Sources ----\n this.categories = [\n { id: 'financial', name: 'Financial Reports' },\n { id: 'operational', name: 'Operational Reports' },\n { id: 'analytics', name: 'Analytics Reports' },\n { id: 'compliance', name: 'Compliance Reports' }\n ];\n this.dataSources = [\n { id: 'users', title: 'Users Data' },\n { id: 'orders', title: 'Orders Data' },\n { id: 'products', title: 'Products Data' },\n { id: 'transactions', title: 'Transactions Data' },\n { id: 'logs', title: 'System Logs' }\n ];\n this.templates = [\n { id: 'standard', name: 'Standard Template' },\n { id: 'detailed', name: 'Detailed Template' },\n { id: 'summary', name: 'Summary Template' },\n { id: 'custom', name: 'Custom Template' }\n ];\n this.formats = [\n { id: 'pdf', name: 'PDF' },\n { id: 'excel', name: 'Excel' },\n { id: 'csv', name: 'CSV' },\n { id: 'html', name: 'HTML' }\n ];\n this.frequencies = [\n { id: 'daily', name: 'Daily' },\n { id: 'weekly', name: 'Weekly' },\n { id: 'monthly', name: 'Monthly' },\n { id: 'yearly', name: 'Yearly' }\n ];\n this.parameterTypes = [\n { id: 'string', name: 'Text' },\n { id: 'number', name: 'Number' },\n { id: 'date', name: 'Date' },\n { id: 'boolean', name: 'Boolean' },\n { id: 'select', name: 'Selection' }\n ];\n }\n //#endregion\n //#region ---- Lifecycle Methods ----\n ngOnInit() {\n this.initializeFormData();\n }\n ngOnDestroy() {\n // Cleanup if needed\n }\n //#endregion\n //#region ---- Step Navigation Methods ----\n async nextStep() {\n if (this.isValidating())\n return;\n this.isValidating.set(true);\n try {\n const isValid = this.validateCurrentStep();\n if (isValid) {\n const wizard = this.reportWizard();\n if (wizard) {\n wizard.next();\n }\n }\n else {\n this.toastService.warning('Please complete all required fields before proceeding.');\n }\n }\n catch (error) {\n this.toastService.danger('Validation failed. Please try again.');\n }\n finally {\n this.isValidating.set(false);\n }\n }\n async finishWizard() {\n if (this.isSaving())\n return;\n this.isSaving.set(true);\n try {\n const isValid = await this.validateAllSteps();\n if (isValid) {\n await this.saveReport();\n this.toastService.success('Report created successfully!');\n // Navigate to report list or show success message\n }\n else {\n this.toastService.warning('Please complete all required fields.');\n }\n }\n catch (error) {\n this.toastService.danger('Failed to create report. Please try again.');\n console.error('Error creating report:', error);\n }\n finally {\n this.isSaving.set(false);\n }\n }\n //#endregion\n //#region ---- Parameter Management ----\n addParameter() {\n const newParameter = {\n id: `param_${Date.now()}`,\n name: '',\n type: 'string',\n required: false\n };\n this.formData.parameters.push(newParameter);\n }\n removeParameter(index) {\n this.formData.parameters.splice(index, 1);\n }\n //#endregion\n //#region ---- Validation Methods ----\n validateCurrentStep() {\n // Since we can't reliably get current step index from wizard,\n // we'll validate all steps and let the wizard handle navigation\n return this.validateBasicInfo() || this.validateConfiguration() ||\n this.validateParameters() || this.validateReview();\n }\n validateBasicInfo() {\n return !!(this.formData.name?.trim() && this.formData.title?.trim() &&\n this.formData.category && this.formData.dataSource);\n }\n validateConfiguration() {\n const hasSelectedFormat = Object.values(this.formData.formats).some(selected => selected);\n const scheduleValid = !this.formData.isScheduled || !!this.formData.scheduleFrequency;\n return !!(this.formData.template && hasSelectedFormat && scheduleValid);\n }\n validateParameters() {\n return this.formData.parameters.every(param => param.name?.trim() && param.type);\n }\n validateReview() {\n return this.validateBasicInfo() && this.validateConfiguration() && this.validateParameters();\n }\n async validateAllSteps() {\n // Validate each step's form individually\n const basicValid = this.validateBasicInfo();\n const configValid = this.validateConfiguration();\n const paramsValid = this.validateParameters();\n const reviewValid = this.validateReview();\n return basicValid && configValid && paramsValid && reviewValid;\n }\n //#endregion\n //#region ---- Helper Methods ----\n initializeFormData() {\n // Initialize formats object\n this.formats.forEach(format => {\n this.formData.formats[format.id] = false;\n });\n // Set default PDF format\n this.formData.formats['pdf'] = true;\n }\n async saveReport() {\n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000));\n console.log('Saving report with data:', this.formData);\n // Here you would typically call a service to save the report\n // Example: await this.reportService.createReport(this.formData);\n }\n getCategoryName(categoryId) {\n const category = this.categories.find(c => c.id === categoryId);\n return category?.name || categoryId;\n }\n getTemplateName(templateId) {\n const template = this.templates.find(t => t.id === templateId);\n return template?.name || templateId;\n }\n getSelectedFormats() {\n const selectedFormats = Object.entries(this.formData.formats)\n .filter(([_, selected]) => selected)\n .map(([formatId, _]) => {\n const format = this.formats.find(f => f.id === formatId);\n return format?.name || formatId;\n });\n return selectedFormats.join(', ') || 'None';\n }\n getDataSourceTitle(dataSourceId) {\n const dataSource = this.dataSources.find(d => d.id === dataSourceId);\n return dataSource?.title || dataSourceId;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPReportCreateRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.6\", type: AXPReportCreateRootComponent, isStandalone: true, selector: \"axp-report-create-root\", providers: [], viewQueries: [{ propertyName: \"reportWizard\", first: true, predicate: [\"reportWizard\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"ax-w-full ax-max-w-4xl ax-mx-auto ax-p-6\\\">\\n <div class=\\\"step-wizard-header ax-text-center ax-mb-8\\\">\\n <h2 class=\\\"ax-text-2xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Create New Report</h2>\\n <p class=\\\"ax-text-gray-600\\\">Follow these steps to create your custom report</p>\\n </div>\\n\\n <ax-step-wizard\\n [content]=\\\"wizardContent\\\"\\n [look]=\\\"'rounded-icon'\\\"\\n #reportWizard\\n >\\n <ax-step-wizard-item [label]=\\\"'Basic Information'\\\" [id]=\\\"'basic'\\\">\\n <ax-icon class=\\\"fas fa-info-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Basic Information</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Enter the basic details for your report</p>\\n </div>\\n \\n <ax-form #basicForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Report Name *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.name\\\"\\n placeholder=\\\"Enter report name\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportName\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Report Title *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.title\\\"\\n placeholder=\\\"Enter report title\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTitle\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Category *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.category\\\"\\n [dataSource]=\\\"categories\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select category\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportCategory\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Data Source *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.dataSource\\\"\\n [dataSource]=\\\"dataSources\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'title'\\\"\\n placeholder=\\\"Select data source\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportDataSource\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Configuration'\\\" [id]=\\\"'config'\\\">\\n <ax-icon class=\\\"fas fa-cog\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Configuration</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Configure your report settings</p>\\n </div>\\n \\n <ax-form #configForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Template *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.template\\\"\\n [dataSource]=\\\"templates\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select template\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTemplate\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Output Formats *</ax-label>\\n <div class=\\\"format-selection ax-grid ax-grid-cols-2 ax-gap-3\\\">\\n @for (format of formats; track format.id) {\\n <div class=\\\"format-option ax-p-3 ax-border ax-border-gray-200 ax-rounded-lg ax-transition-colors\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.formats[format.id]\\\"\\n [name]=\\\"'format_' + format.id\\\">\\n {{ format.name }}\\n </ax-check-box>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n\\n <ax-form-field class=\\\"md:ax-col-span-2\\\">\\n <div class=\\\"schedule-section ax-space-y-4\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.isScheduled\\\"\\n name=\\\"isScheduled\\\">\\n Enable scheduled reports\\n </ax-check-box>\\n \\n @if (formData.isScheduled) {\\n <div class=\\\"schedule-options ax-pl-6 ax-border-l-2 ax-border-primary/20\\\">\\n <ax-form-field>\\n <ax-label>Frequency</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.scheduleFrequency\\\"\\n [dataSource]=\\\"frequencies\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select frequency\\\"\\n name=\\\"scheduleFrequency\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Parameters'\\\" [id]=\\\"'parameters'\\\">\\n <ax-icon class=\\\"fas fa-sliders-h\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Parameters</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Define parameters for your report</p>\\n </div>\\n \\n <div class=\\\"parameters-section ax-space-y-6\\\">\\n @if (formData.parameters.length > 0) {\\n <div class=\\\"parameters-list ax-space-y-4\\\">\\n @for (param of formData.parameters; track param.id; let i = $index) {\\n <div class=\\\"parameter-item ax-p-4 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50 ax-space-y-4\\\">\\n <div class=\\\"parameter-fields ax-grid ax-grid-cols-1 md:ax-grid-cols-3 ax-gap-4\\\">\\n <ax-form-field>\\n <ax-label>Parameter Name</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"param.name\\\"\\n placeholder=\\\"Enter parameter name\\\"\\n [name]=\\\"'param_name_' + i\\\">\\n </ax-text-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-label>Type</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"param.type\\\"\\n [dataSource]=\\\"parameterTypes\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select type\\\"\\n [name]=\\\"'param_type_' + i\\\">\\n </ax-select-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-check-box \\n [(ngModel)]=\\\"param.required\\\"\\n [name]=\\\"'param_required_' + i\\\">\\n Required\\n </ax-check-box>\\n </ax-form-field>\\n </div>\\n \\n <ax-button \\n look=\\\"ghost\\\"\\n color=\\\"danger\\\"\\n size=\\\"small\\\"\\n (onClick)=\\\"removeParameter(i)\\\">\\n Remove\\n </ax-button>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"no-parameters ax-text-center ax-py-8 ax-text-gray-500\\\">\\n <p>No parameters defined yet.</p>\\n </div>\\n }\\n \\n <div class=\\\"add-parameter-section ax-text-center\\\">\\n <ax-button \\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"addParameter()\\\">\\n + Add Parameter\\n </ax-button>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Review'\\\" [id]=\\\"'review'\\\">\\n <ax-icon class=\\\"fas fa-check-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Review & Confirm</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Review your report configuration before creating</p>\\n </div>\\n \\n <div class=\\\"review-sections ax-space-y-6\\\">\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Basic Information</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Name:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.name || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Title:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.title || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Category:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getCategoryName(formData.category) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Data Source:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getDataSourceTitle(formData.dataSource) || 'Not selected' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Configuration</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Template:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getTemplateName(formData.template) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Formats:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getSelectedFormats() || 'None selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Scheduled:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.isScheduled ? 'Yes - ' + formData.scheduleFrequency : 'No' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Parameters</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n @if (formData.parameters.length > 0) {\\n @for (param of formData.parameters; track param.id) {\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">{{ param.name }}:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ param.type }}{{ param.required ? ' (Required)' : '' }}</span>\\n </div>\\n }\\n } @else {\\n <div class=\\\"review-item\\\">\\n <span class=\\\"value ax-text-gray-900\\\">No parameters defined</span>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n </ax-step-wizard>\\n\\n <div class=\\\"ax-flex ax-justify-center ax-p-5\\\">\\n <ng-template [axStepWizardContent] #wizardContent=\\\"axStepWizardContent\\\">\\n </ng-template>\\n </div>\\n\\n <div class=\\\"ax-mt-10 ax-flex ax-justify-between ax-items-center ax-pt-6 ax-border-t ax-border-gray-200\\\">\\n <div class=\\\"nav-left\\\">\\n <ax-button\\n [disabled]=\\\"reportWizard.isFirst()\\\"\\n (onClick)=\\\"reportWizard.previous()\\\"\\n [color]=\\\"'primary'\\\"\\n text=\\\"\\u2190 Previous\\\"\\n look=\\\"outline\\\">\\n </ax-button>\\n </div>\\n\\n <div class=\\\"nav-right\\\">\\n @if(reportWizard.isLast()) {\\n <ax-button \\n (onClick)=\\\"finishWizard()\\\" \\n color=\\\"success\\\" \\n text=\\\"Create Report\\\"\\n [disabled]=\\\"isSaving()\\\">\\n @if (isSaving()) {\\n Creating...\\n } @else {\\n Create Report\\n }\\n </ax-button>\\n } @else {\\n <ax-button\\n (onClick)=\\\"nextStep()\\\"\\n color=\\\"primary\\\"\\n text=\\\"Next \\u2192\\\"\\n [disabled]=\\\"!canProceed()\\\">\\n </ax-button>\\n }\\n </div>\\n </div>\\n</div>\\n\", styles: [\".step-content{min-height:24rem}.step-title-section{margin-bottom:1.5rem;text-align:center}.step-title-section h3{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.step-title-section p{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.form-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media (min-width: 768px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.format-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (max-width: 480px){.format-selection{grid-template-columns:repeat(1,minmax(0,1fr))}}.format-option{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.format-option:has(input:checked){--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-500),.05)}.schedule-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.schedule-section .schedule-options{border-left-width:2px;border-color:rgba(var(--ax-sys-color-primary-500),.2);padding-left:1.5rem}.parameters-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.parameters-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.parameter-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item .parameter-fields{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width: 768px){.parameter-item .parameter-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}.no-parameters{padding-top:2rem;padding-bottom:2rem;text-align:center;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.add-parameter-section{text-align:center}.review-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.review-section{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1.5rem}.review-section h4{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-bottom:.5rem}.review-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.review-item{display:flex;align-items:flex-start;justify-content:space-between}@media (max-width: 480px){.review-item{flex-direction:column}.review-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}}.review-item .label{margin-right:1rem;min-width:0px;flex-shrink:0;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.review-item .value{overflow-wrap:break-word;text-align:right;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}@media (max-width: 480px){.review-item .value{text-align:left}}ax-form-field{display:block}ax-form-field ax-label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: \n // Angular\n CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: \n // ACoreX\n AXFormModule }, { kind: \"component\", type: i2.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i2.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i3.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i5.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i6.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"checked\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"component\", type: i7.AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXStepWizardModule }, { kind: \"component\", type: i9.AXStepWizardComponent, selector: \"ax-step-wizard\", inputs: [\"connector\", \"size\", \"look\", \"changeStep\", \"orientation\", \"content\"], outputs: [\"stepChanged\"] }, { kind: \"component\", type: i9.AXStepWizardItemComponent, selector: \"ax-step-wizard-item\", inputs: [\"disabled\", \"color\", \"step\", \"label\", \"description\", \"customTemplate\", \"active\", \"passed\", \"look\", \"state\", \"id\"], outputs: [\"activeChange\", \"passedChange\", \"lookChange\", \"stateChange\"] }, { kind: \"directive\", type: i9.AXStepWizardContentDirective, selector: \"[axStepWizardContent]\", inputs: [\"axStepWizardContent\"], exportAs: [\"axStepWizardContent\"] }], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(20px)' }),\n animate('300ms ease-in', style({ opacity: 1, transform: 'translateY(0)' }))\n ])\n ])\n ], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPReportCreateRootComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-create-root', imports: [\n // Angular\n CommonModule,\n FormsModule,\n // ACoreX\n AXFormModule,\n AXTextBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXSelectBoxModule,\n AXSwitchModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXStepWizardModule,\n // Platform\n ], encapsulation: ViewEncapsulation.None, providers: [], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(20px)' }),\n animate('300ms ease-in', style({ opacity: 1, transform: 'translateY(0)' }))\n ])\n ])\n ], template: \"<div class=\\\"ax-w-full ax-max-w-4xl ax-mx-auto ax-p-6\\\">\\n <div class=\\\"step-wizard-header ax-text-center ax-mb-8\\\">\\n <h2 class=\\\"ax-text-2xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Create New Report</h2>\\n <p class=\\\"ax-text-gray-600\\\">Follow these steps to create your custom report</p>\\n </div>\\n\\n <ax-step-wizard\\n [content]=\\\"wizardContent\\\"\\n [look]=\\\"'rounded-icon'\\\"\\n #reportWizard\\n >\\n <ax-step-wizard-item [label]=\\\"'Basic Information'\\\" [id]=\\\"'basic'\\\">\\n <ax-icon class=\\\"fas fa-info-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Basic Information</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Enter the basic details for your report</p>\\n </div>\\n \\n <ax-form #basicForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Report Name *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.name\\\"\\n placeholder=\\\"Enter report name\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportName\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Report Title *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.title\\\"\\n placeholder=\\\"Enter report title\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTitle\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Category *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.category\\\"\\n [dataSource]=\\\"categories\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select category\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportCategory\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Data Source *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.dataSource\\\"\\n [dataSource]=\\\"dataSources\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'title'\\\"\\n placeholder=\\\"Select data source\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportDataSource\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Configuration'\\\" [id]=\\\"'config'\\\">\\n <ax-icon class=\\\"fas fa-cog\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Configuration</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Configure your report settings</p>\\n </div>\\n \\n <ax-form #configForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Template *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.template\\\"\\n [dataSource]=\\\"templates\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select template\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTemplate\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Output Formats *</ax-label>\\n <div class=\\\"format-selection ax-grid ax-grid-cols-2 ax-gap-3\\\">\\n @for (format of formats; track format.id) {\\n <div class=\\\"format-option ax-p-3 ax-border ax-border-gray-200 ax-rounded-lg ax-transition-colors\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.formats[format.id]\\\"\\n [name]=\\\"'format_' + format.id\\\">\\n {{ format.name }}\\n </ax-check-box>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n\\n <ax-form-field class=\\\"md:ax-col-span-2\\\">\\n <div class=\\\"schedule-section ax-space-y-4\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.isScheduled\\\"\\n name=\\\"isScheduled\\\">\\n Enable scheduled reports\\n </ax-check-box>\\n \\n @if (formData.isScheduled) {\\n <div class=\\\"schedule-options ax-pl-6 ax-border-l-2 ax-border-primary/20\\\">\\n <ax-form-field>\\n <ax-label>Frequency</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.scheduleFrequency\\\"\\n [dataSource]=\\\"frequencies\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select frequency\\\"\\n name=\\\"scheduleFrequency\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Parameters'\\\" [id]=\\\"'parameters'\\\">\\n <ax-icon class=\\\"fas fa-sliders-h\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Parameters</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Define parameters for your report</p>\\n </div>\\n \\n <div class=\\\"parameters-section ax-space-y-6\\\">\\n @if (formData.parameters.length > 0) {\\n <div class=\\\"parameters-list ax-space-y-4\\\">\\n @for (param of formData.parameters; track param.id; let i = $index) {\\n <div class=\\\"parameter-item ax-p-4 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50 ax-space-y-4\\\">\\n <div class=\\\"parameter-fields ax-grid ax-grid-cols-1 md:ax-grid-cols-3 ax-gap-4\\\">\\n <ax-form-field>\\n <ax-label>Parameter Name</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"param.name\\\"\\n placeholder=\\\"Enter parameter name\\\"\\n [name]=\\\"'param_name_' + i\\\">\\n </ax-text-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-label>Type</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"param.type\\\"\\n [dataSource]=\\\"parameterTypes\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select type\\\"\\n [name]=\\\"'param_type_' + i\\\">\\n </ax-select-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-check-box \\n [(ngModel)]=\\\"param.required\\\"\\n [name]=\\\"'param_required_' + i\\\">\\n Required\\n </ax-check-box>\\n </ax-form-field>\\n </div>\\n \\n <ax-button \\n look=\\\"ghost\\\"\\n color=\\\"danger\\\"\\n size=\\\"small\\\"\\n (onClick)=\\\"removeParameter(i)\\\">\\n Remove\\n </ax-button>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"no-parameters ax-text-center ax-py-8 ax-text-gray-500\\\">\\n <p>No parameters defined yet.</p>\\n </div>\\n }\\n \\n <div class=\\\"add-parameter-section ax-text-center\\\">\\n <ax-button \\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"addParameter()\\\">\\n + Add Parameter\\n </ax-button>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Review'\\\" [id]=\\\"'review'\\\">\\n <ax-icon class=\\\"fas fa-check-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Review & Confirm</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Review your report configuration before creating</p>\\n </div>\\n \\n <div class=\\\"review-sections ax-space-y-6\\\">\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Basic Information</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Name:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.name || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Title:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.title || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Category:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getCategoryName(formData.category) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Data Source:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getDataSourceTitle(formData.dataSource) || 'Not selected' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Configuration</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Template:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getTemplateName(formData.template) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Formats:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getSelectedFormats() || 'None selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Scheduled:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.isScheduled ? 'Yes - ' + formData.scheduleFrequency : 'No' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Parameters</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n @if (formData.parameters.length > 0) {\\n @for (param of formData.parameters; track param.id) {\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">{{ param.name }}:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ param.type }}{{ param.required ? ' (Required)' : '' }}</span>\\n </div>\\n }\\n } @else {\\n <div class=\\\"review-item\\\">\\n <span class=\\\"value ax-text-gray-900\\\">No parameters defined</span>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n </ax-step-wizard>\\n\\n <div class=\\\"ax-flex ax-justify-center ax-p-5\\\">\\n <ng-template [axStepWizardContent] #wizardContent=\\\"axStepWizardContent\\\">\\n </ng-template>\\n </div>\\n\\n <div class=\\\"ax-mt-10 ax-flex ax-justify-between ax-items-center ax-pt-6 ax-border-t ax-border-gray-200\\\">\\n <div class=\\\"nav-left\\\">\\n <ax-button\\n [disabled]=\\\"reportWizard.isFirst()\\\"\\n (onClick)=\\\"reportWizard.previous()\\\"\\n [color]=\\\"'primary'\\\"\\n text=\\\"\\u2190 Previous\\\"\\n look=\\\"outline\\\">\\n </ax-button>\\n </div>\\n\\n <div class=\\\"nav-right\\\">\\n @if(reportWizard.isLast()) {\\n <ax-button \\n (onClick)=\\\"finishWizard()\\\" \\n color=\\\"success\\\" \\n text=\\\"Create Report\\\"\\n [disabled]=\\\"isSaving()\\\">\\n @if (isSaving()) {\\n Creating...\\n } @else {\\n Create Report\\n }\\n </ax-button>\\n } @else {\\n <ax-button\\n (onClick)=\\\"nextStep()\\\"\\n color=\\\"primary\\\"\\n text=\\\"Next \\u2192\\\"\\n [disabled]=\\\"!canProceed()\\\">\\n </ax-button>\\n }\\n </div>\\n </div>\\n</div>\\n\", styles: [\".step-content{min-height:24rem}.step-title-section{margin-bottom:1.5rem;text-align:center}.step-title-section h3{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.step-title-section p{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.form-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media (min-width: 768px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.format-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (max-width: 480px){.format-selection{grid-template-columns:repeat(1,minmax(0,1fr))}}.format-option{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.format-option:has(input:checked){--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-500),.05)}.schedule-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.schedule-section .schedule-options{border-left-width:2px;border-color:rgba(var(--ax-sys-color-primary-500),.2);padding-left:1.5rem}.parameters-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.parameters-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.parameter-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item .parameter-fields{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width: 768px){.parameter-item .parameter-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}.no-parameters{padding-top:2rem;padding-bottom:2rem;text-align:center;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.add-parameter-section{text-align:center}.review-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.review-section{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1.5rem}.review-section h4{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-bottom:.5rem}.review-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.review-item{display:flex;align-items:flex-start;justify-content:space-between}@media (max-width: 480px){.review-item{flex-direction:column}.review-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}}.review-item .label{margin-right:1rem;min-width:0px;flex-shrink:0;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.review-item .value{overflow-wrap:break-word;text-align:right;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}@media (max-width: 480px){.review-item .value{text-align:left}}ax-form-field{display:block}ax-form-field ax-label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNyZWF0ZS1yb290LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC9jcmVhdGUvcmVwb3J0LWNyZWF0ZS1yb290L3JlcG9ydC1jcmVhdGUtcm9vdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQvY3JlYXRlL3JlcG9ydC1jcmVhdGUtcm9vdC9yZXBvcnQtY3JlYXRlLXJvb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBUyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0s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LE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7NkJBQzlFLENBQUM7eUJBQ0wsQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7IEFYRm9ybU1vZHVsZSwgQVhGb3JtQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhTd2l0Y2hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc3dpdGNoJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTdGVwV2l6YXJkTW9kdWxlLCBBWFN0ZXBXaXphcmRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc3RlcC13aXphcmQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgSW50ZXJmYWNlcyAmIFR5cGVzICAgLS0tLVxuXG5pbnRlcmZhY2UgU3RlcERlZmluaXRpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZTogc3RyaW5nO1xuICBpc1ZhbGlkPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFJlcG9ydEZvcm1EYXRhIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBkYXRhU291cmNlOiBzdHJpbmc7XG4gIHRlbXBsYXRlOiBzdHJpbmc7XG4gIGZvcm1hdHM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuICBpc1NjaGVkdWxlZDogYm9vbGVhbjtcbiAgc2NoZWR1bGVGcmVxdWVuY3k6IHN0cmluZztcbiAgcGFyYW1ldGVyczogUGFyYW1ldGVyRGVmaW5pdGlvbltdO1xufVxuXG5pbnRlcmZhY2UgUGFyYW1ldGVyRGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENhdGVnb3J5T3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVGVtcGxhdGVPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGb3JtYXRPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGcmVxdWVuY3lPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQYXJhbWV0ZXJUeXBlT3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRGF0YVNvdXJjZU9wdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjonYXhwLXJlcG9ydC1jcmVhdGUtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1jcmVhdGUtcm9vdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3JlcG9ydC1jcmVhdGUtcm9vdC5jb21wb25lbnQuc2NzcycsXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBBbmd1bGFyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIC8vIEFDb3JlWFxuICAgICAgICBBWEZvcm1Nb2R1bGUsXG4gICAgICAgIEFYVGV4dEJveE1vZHVsZSxcbiAgICAgICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgICAgIEFYTGFiZWxNb2R1bGUsXG4gICAgICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgICAgICBBWFN3aXRjaE1vZHVsZSxcbiAgICAgICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgICAgIEFYU3RlcFdpemFyZE1vZHVsZSxcbiAgICAgICAgLy8gUGxhdGZvcm1cbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2ZhZGVJbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMjBweCknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJlcG9ydENyZWF0ZVJvb3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFZpZXdDaGlsZCAmIFNpZ25hbHMgICAtLS0tXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcG9ydFdpemFyZCA9IHZpZXdDaGlsZDxBWFN0ZXBXaXphcmRDb21wb25lbnQ+KCdyZXBvcnRXaXphcmQnKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1ZhbGlkYXRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1NhdmluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5Qcm9jZWVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUN1cnJlbnRTdGVwKCk7XG4gICAgfSk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRm9ybSBEYXRhICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGZvcm1EYXRhOiBSZXBvcnRGb3JtRGF0YSA9IHtcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgY2F0ZWdvcnk6ICcnLFxuICAgICAgICBkYXRhU291cmNlOiAnJyxcbiAgICAgICAgdGVtcGxhdGU6ICcnLFxuICAgICAgICBmb3JtYXRzOiB7fSxcbiAgICAgICAgaXNTY2hlZHVsZWQ6IGZhbHNlLFxuICAgICAgICBzY2hlZHVsZUZyZXF1ZW5jeTogJycsXG4gICAgICAgIHBhcmFtZXRlcnM6IFtdXG4gICAgfTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBTdGVwIERlZmluaXRpb25zICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0ZXBzOiBTdGVwRGVmaW5pdGlvbltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ2Jhc2ljLWluZm8nLFxuICAgICAgICAgICAgdGl0bGU6ICdCYXNpYyBJbmZvcm1hdGlvbicsXG4gICAgICAgICAgICBzdWJ0aXRsZTogJ0VudGVyIHJlcG9ydCBkZXRhaWxzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICAgdGl0bGU6ICdDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgIHN1YnRpdGxlOiAnQ29uZmlndXJlIHJlcG9ydCBzZXR0aW5ncydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdwYXJhbWV0ZXJzJyxcbiAgICAgICAgICAgIHRpdGxlOiAnUGFyYW1ldGVycycsXG4gICAgICAgICAgICBzdWJ0aXRsZTogJ0RlZmluZSByZXBvcnQgcGFyYW1ldGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdyZXZpZXcnLFxuICAgICAgICAgICAgdGl0bGU6ICdSZXZpZXcgJiBGaW5pc2gnLFxuICAgICAgICAgICAgc3VidGl0bGU6ICdSZXZpZXcgYW5kIGNvbXBsZXRlJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEYXRhIFNvdXJjZXMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcmllczogQ2F0ZWdvcnlPcHRpb25bXSA9IFtcbiAgICAgICAgeyBpZDogJ2ZpbmFuY2lhbCcsIG5hbWU6ICdGaW5hbmNpYWwgUmVwb3J0cycgfSxcbiAgICAgICAgeyBpZDogJ29wZXJhdGlvbmFsJywgbmFtZTogJ09wZXJhdGlvbmFsIFJlcG9ydHMnIH0sXG4gICAgICAgIHsgaWQ6ICdhbmFseXRpY3MnLCBuYW1lOiAnQW5hbHl0aWNzIFJlcG9ydHMnIH0sXG4gICAgICAgIHsgaWQ6ICdjb21wbGlhbmNlJywgbmFtZTogJ0NvbXBsaWFuY2UgUmVwb3J0cycgfVxuICAgIF07XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YVNvdXJjZXM6IERhdGFTb3VyY2VPcHRpb25bXSA9IFtcbiAgICAgICAgeyBpZDogJ3VzZXJzJywgdGl0bGU6ICdVc2VycyBEYXRhJyB9LFxuICAgICAgICB7IGlkOiAnb3JkZXJzJywgdGl0bGU6ICdPcmRlcnMgRGF0YScgfSxcbiAgICAgICAgeyBpZDogJ3Byb2R1Y3RzJywgdGl0bGU6ICdQcm9kdWN0cyBEYXRhJyB9LFxuICAgICAgICB7IGlkOiAndHJhbnNhY3Rpb25zJywgdGl0bGU6ICdUcmFuc2FjdGlvbnMgRGF0YScgfSxcbiAgICAgICAgeyBpZDogJ2xvZ3MnLCB0aXRsZTogJ1N5c3RlbSBMb2dzJyB9XG4gICAgXTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZW1wbGF0ZXM6IFRlbXBsYXRlT3B0aW9uW10gPSBbXG4gICAgICAgIHsgaWQ6ICdzdGFuZGFyZCcsIG5hbWU6ICdTdGFuZGFyZCBUZW1wbGF0ZScgfSxcbiAgICAgICAgeyBpZDogJ2RldGFpbGVkJywgbmFtZTogJ0RldGFpbGVkIFRlbXBsYXRlJyB9LFxuICAgICAgICB7IGlkOiAnc3VtbWFyeScsIG5hbWU6ICdTdW1tYXJ5IFRlbXBsYXRlJyB9LFxuICAgICAgICB7IGlkOiAnY3VzdG9tJywgbmFtZTogJ0N1c3RvbSBUZW1wbGF0ZScgfVxuICAgIF07XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybWF0czogRm9ybWF0T3B0aW9uW10gPSBbXG4gICAgICAgIHsgaWQ6ICdwZGYnLCBuYW1lOiAnUERGJyB9LFxuICAgICAgICB7IGlkOiAnZXhjZWwnLCBuYW1lOiAnRXhjZWwnIH0sXG4gICAgICAgIHsgaWQ6ICdjc3YnLCBuYW1lOiAnQ1NWJyB9LFxuICAgICAgICB7IGlkOiAnaHRtbCcsIG5hbWU6ICdIVE1MJyB9XG4gICAgXTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBmcmVxdWVuY2llczogRnJlcXVlbmN5T3B0aW9uW10gPSBbXG4gICAgICAgIHsgaWQ6ICdkYWlseScsIG5hbWU6ICdEYWlseScgfSxcbiAgICAgICAgeyBpZDogJ3dlZWtseScsIG5hbWU6ICdXZWVrbHknIH0sXG4gICAgICAgIHsgaWQ6ICdtb250aGx5JywgbmFtZTogJ01vbnRobHknIH0sXG4gICAgICAgIHsgaWQ6ICd5ZWFybHknLCBuYW1lOiAnWWVhcmx5JyB9XG4gICAgXTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBwYXJhbWV0ZXJUeXBlczogUGFyYW1ldGVyVHlwZU9wdGlvbltdID0gW1xuICAgICAgICB7IGlkOiAnc3RyaW5nJywgbmFtZTogJ1RleHQnIH0sXG4gICAgICAgIHsgaWQ6ICdudW1iZXInLCBuYW1lOiAnTnVtYmVyJyB9LFxuICAgICAgICB7IGlkOiAnZGF0ZScsIG5hbWU6ICdEYXRlJyB9LFxuICAgICAgICB7IGlkOiAnYm9vbGVhbicsIG5hbWU6ICdCb29sZWFuJyB9LFxuICAgICAgICB7IGlkOiAnc2VsZWN0JywgbmFtZTogJ1NlbGVjdGlvbicgfVxuICAgIF07XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTGlmZWN5Y2xlIE1ldGhvZHMgICAtLS0tXG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybURhdGEoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gQ2xlYW51cCBpZiBuZWVkZWRcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RlcCBOYXZpZ2F0aW9uIE1ldGhvZHMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgbmV4dFN0ZXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRhdGluZygpKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICB0aGlzLmlzVmFsaWRhdGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVDdXJyZW50U3RlcCgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMucmVwb3J0V2l6YXJkKCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpemFyZCkge1xuICAgICAgICAgICAgICAgICAgICB3aXphcmQubmV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uud2FybmluZygnUGxlYXNlIGNvbXBsZXRlIGFsbCByZXF1aXJlZCBmaWVsZHMgYmVmb3JlIHByb2NlZWRpbmcuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ1ZhbGlkYXRpb24gZmFpbGVkLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkYXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBmaW5pc2hXaXphcmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU2F2aW5nKCkpIHJldHVybjtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuaXNTYXZpbmcuc2V0KHRydWUpO1xuICAgICAgICBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlQWxsU3RlcHMoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVSZXBvcnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKCdSZXBvcnQgY3JlYXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgICAgICAgICAgICAgLy8gTmF2aWdhdGUgdG8gcmVwb3J0IGxpc3Qgb3Igc2hvdyBzdWNjZXNzIG1lc3NhZ2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uud2FybmluZygnUGxlYXNlIGNvbXBsZXRlIGFsbCByZXF1aXJlZCBmaWVsZHMuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBjcmVhdGUgcmVwb3J0LiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY3JlYXRpbmcgcmVwb3J0OicsIGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuaXNTYXZpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQYXJhbWV0ZXIgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIHByb3RlY3RlZCBhZGRQYXJhbWV0ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1BhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAgIGlkOiBgcGFyYW1fJHtEYXRlLm5vdygpfWAsXG4gICAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICB0aGlzLmZvcm1EYXRhLnBhcmFtZXRlcnMucHVzaChuZXdQYXJhbWV0ZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZW1vdmVQYXJhbWV0ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLnBhcmFtZXRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgVmFsaWRhdGlvbiBNZXRob2RzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUN1cnJlbnRTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBTaW5jZSB3ZSBjYW4ndCByZWxpYWJseSBnZXQgY3VycmVudCBzdGVwIGluZGV4IGZyb20gd2l6YXJkLFxuICAgICAgICAvLyB3ZSdsbCB2YWxpZGF0ZSBhbGwgc3RlcHMgYW5kIGxldCB0aGUgd2l6YXJkIGhhbmRsZSBuYXZpZ2F0aW9uXG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmFzaWNJbmZvKCkgfHwgdGhpcy52YWxpZGF0ZUNvbmZpZ3VyYXRpb24oKSB8fCBcbiAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVQYXJhbWV0ZXJzKCkgfHwgdGhpcy52YWxpZGF0ZVJldmlldygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVCYXNpY0luZm8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmZvcm1EYXRhLm5hbWU/LnRyaW0oKSAmJiB0aGlzLmZvcm1EYXRhLnRpdGxlPy50cmltKCkgJiYgXG4gICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuY2F0ZWdvcnkgJiYgdGhpcy5mb3JtRGF0YS5kYXRhU291cmNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaGFzU2VsZWN0ZWRGb3JtYXQgPSBPYmplY3QudmFsdWVzKHRoaXMuZm9ybURhdGEuZm9ybWF0cykuc29tZShzZWxlY3RlZCA9PiBzZWxlY3RlZCk7XG4gICAgICAgIGNvbnN0IHNjaGVkdWxlVmFsaWQgPSAhdGhpcy5mb3JtRGF0YS5pc1NjaGVkdWxlZCB8fCAhIXRoaXMuZm9ybURhdGEuc2NoZWR1bGVGcmVxdWVuY3k7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gISEodGhpcy5mb3JtRGF0YS50ZW1wbGF0ZSAmJiBoYXNTZWxlY3RlZEZvcm1hdCAmJiBzY2hlZHVsZVZhbGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUGFyYW1ldGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybURhdGEucGFyYW1ldGVycy5ldmVyeShwYXJhbSA9PiBcbiAgICAgICAgICAgIHBhcmFtLm5hbWU/LnRyaW0oKSAmJiBwYXJhbS50eXBlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVJldmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVCYXNpY0luZm8oKSAmJiB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbigpICYmIHRoaXMudmFsaWRhdGVQYXJhbWV0ZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUFsbFN0ZXBzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICAvLyBWYWxpZGF0ZSBlYWNoIHN0ZXAncyBmb3JtIGluZGl2aWR1YWxseVxuICAgICAgICBjb25zdCBiYXNpY1ZhbGlkID0gdGhpcy52YWxpZGF0ZUJhc2ljSW5mbygpO1xuICAgICAgICBjb25zdCBjb25maWdWYWxpZCA9IHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IHBhcmFtc1ZhbGlkID0gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcnMoKTtcbiAgICAgICAgY29uc3QgcmV2aWV3VmFsaWQgPSB0aGlzLnZhbGlkYXRlUmV2aWV3KCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gYmFzaWNWYWxpZCAmJiBjb25maWdWYWxpZCAmJiBwYXJhbXNWYWxpZCAmJiByZXZpZXdWYWxpZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVGb3JtRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBmb3JtYXRzIG9iamVjdFxuICAgICAgICB0aGlzLmZvcm1hdHMuZm9yRWFjaChmb3JtYXQgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtRGF0YS5mb3JtYXRzW2Zvcm1hdC5pZF0gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBTZXQgZGVmYXVsdCBQREYgZm9ybWF0XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZm9ybWF0c1sncGRmJ10gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2F2ZVJlcG9ydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gU2ltdWxhdGUgQVBJIGNhbGxcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKCdTYXZpbmcgcmVwb3J0IHdpdGggZGF0YTonLCB0aGlzLmZvcm1EYXRhKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEhlcmUgeW91IHdvdWxkIHR5cGljYWxseSBjYWxsIGEgc2VydmljZSB0byBzYXZlIHRoZSByZXBvcnRcbiAgICAgICAgLy8gRXhhbXBsZTogYXdhaXQgdGhpcy5yZXBvcnRTZXJ2aWNlLmNyZWF0ZVJlcG9ydCh0aGlzLmZvcm1EYXRhKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q2F0ZWdvcnlOYW1lKGNhdGVnb3J5SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzLmZpbmQoYyA9PiBjLmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5Py5uYW1lIHx8IGNhdGVnb3J5SWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFRlbXBsYXRlTmFtZSh0ZW1wbGF0ZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzLmZpbmQodCA9PiB0LmlkID09PSB0ZW1wbGF0ZUlkKTtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlPy5uYW1lIHx8IHRlbXBsYXRlSWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFNlbGVjdGVkRm9ybWF0cygpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEZvcm1hdHMgPSBPYmplY3QuZW50cmllcyh0aGlzLmZvcm1EYXRhLmZvcm1hdHMpXG4gICAgICAgICAgICAuZmlsdGVyKChbXywgc2VsZWN0ZWRdKSA9PiBzZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKFtmb3JtYXRJZCwgX10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmZvcm1hdHMuZmluZChmID0+IGYuaWQgPT09IGZvcm1hdElkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Py5uYW1lIHx8IGZvcm1hdElkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtYXRzLmpvaW4oJywgJykgfHwgJ05vbmUnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXREYXRhU291cmNlVGl0bGUoZGF0YVNvdXJjZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlcy5maW5kKGQgPT4gZC5pZCA9PT0gZGF0YVNvdXJjZUlkKTtcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2U/LnRpdGxlIHx8IGRhdGFTb3VyY2VJZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC13LWZ1bGwgYXgtbWF4LXctNHhsIGF4LW14LWF1dG8gYXgtcC02XCI+XG4gIDxkaXYgY2xhc3M9XCJzdGVwLXdpemFyZC1oZWFkZXIgYXgtdGV4dC1jZW50ZXIgYXgtbWItOFwiPlxuICAgIDxoMiBjbGFzcz1cImF4LXRleHQtMnhsIGF4LWZvbnQtYm9sZCBheC10ZXh0LWdyYXktOTAwIGF4LW1iLTJcIj5DcmVhdGUgTmV3IFJlcG9ydDwvaDI+XG4gICAgPHAgY2xhc3M9XCJheC10ZXh0LWdyYXktNjAwXCI+Rm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSB5b3VyIGN1c3RvbSByZXBvcnQ8L3A+XG4gIDwvZGl2PlxuXG4gIDxheC1zdGVwLXdpemFyZFxuICAgIFtjb250ZW50XT1cIndpemFyZENvbnRlbnRcIlxuICAgIFtsb29rXT1cIidyb3VuZGVkLWljb24nXCJcbiAgICAjcmVwb3J0V2l6YXJkXG4gID5cbiAgICA8YXgtc3RlcC13aXphcmQtaXRlbSBbbGFiZWxdPVwiJ0Jhc2ljIEluZm9ybWF0aW9uJ1wiIFtpZF09XCInYmFzaWMnXCI+XG4gICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvYXgtaWNvbj5cbiAgICAgIDxheC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtdGl0bGUtc2VjdGlvbiBheC10ZXh0LWNlbnRlciBheC1tYi02XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZCBheC10ZXh0LWdyYXktOTAwIGF4LW1iLTJcIj5CYXNpYyBJbmZvcm1hdGlvbjwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtZ3JheS02MDAgYXgtdGV4dC1zbVwiPkVudGVyIHRoZSBiYXNpYyBkZXRhaWxzIGZvciB5b3VyIHJlcG9ydDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8YXgtZm9ybSAjYmFzaWNGb3JtPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZCBheC1ncmlkIGF4LWdyaWQtY29scy0xIG1kOmF4LWdyaWQtY29scy0yIGF4LWdhcC02XCI+XG4gICAgICAgICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbD5SZXBvcnQgTmFtZSAqPC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciByZXBvcnQgbmFtZVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVwb3J0TmFtZVwiPlxuICAgICAgICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+UmVwb3J0IFRpdGxlICo8L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxheC10ZXh0LWJveCBcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciByZXBvcnQgdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlcG9ydFRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPC9heC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbD5DYXRlZ29yeSAqPC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXgtc2VsZWN0LWJveCBcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCInaWQnXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ25hbWUnXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZXBvcnRDYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbD5EYXRhIFNvdXJjZSAqPC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXgtc2VsZWN0LWJveCBcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuZGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCInaWQnXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ3RpdGxlJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRhIHNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVwb3J0RGF0YVNvdXJjZVwiPlxuICAgICAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9heC1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXgtY29udGVudD5cbiAgICA8L2F4LXN0ZXAtd2l6YXJkLWl0ZW0+XG5cbiAgICA8YXgtc3RlcC13aXphcmQtaXRlbSBbbGFiZWxdPVwiJ0NvbmZpZ3VyYXRpb24nXCIgW2lkXT1cIidjb25maWcnXCI+XG4gICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2F4LWljb24+XG4gICAgICA8YXgtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlLXNlY3Rpb24gYXgtdGV4dC1jZW50ZXIgYXgtbWItNlwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi0yXCI+UmVwb3J0IENvbmZpZ3VyYXRpb248L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWdyYXktNjAwIGF4LXRleHQtc21cIj5Db25maWd1cmUgeW91ciByZXBvcnQgc2V0dGluZ3M8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGF4LWZvcm0gI2NvbmZpZ0Zvcm0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkIGF4LWdyaWQgYXgtZ3JpZC1jb2xzLTEgbWQ6YXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTZcIj5cbiAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPGF4LWxhYmVsPlRlbXBsYXRlICo8L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94IFxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0ZW1wbGF0ZXNcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiJ2lkJ1wiXG4gICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIiduYW1lJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVwb3J0VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+T3V0cHV0IEZvcm1hdHMgKjwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1hdC1zZWxlY3Rpb24gYXgtZ3JpZCBheC1ncmlkLWNvbHMtMiBheC1nYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZm9ybWF0IG9mIGZvcm1hdHM7IHRyYWNrIGZvcm1hdC5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybWF0LW9wdGlvbiBheC1wLTMgYXgtYm9yZGVyIGF4LWJvcmRlci1ncmF5LTIwMCBheC1yb3VuZGVkLWxnIGF4LXRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWNoZWNrLWJveCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuZm9ybWF0c1tmb3JtYXQuaWRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidmb3JtYXRfJyArIGZvcm1hdC5pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZCBjbGFzcz1cIm1kOmF4LWNvbC1zcGFuLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGUtc2VjdGlvbiBheC1zcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1jaGVjay1ib3ggXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuaXNTY2hlZHVsZWRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXNTY2hlZHVsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgRW5hYmxlIHNjaGVkdWxlZCByZXBvcnRzXG4gICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgQGlmIChmb3JtRGF0YS5pc1NjaGVkdWxlZCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGUtb3B0aW9ucyBheC1wbC02IGF4LWJvcmRlci1sLTIgYXgtYm9yZGVyLXByaW1hcnkvMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1sYWJlbD5GcmVxdWVuY3k8L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNlbGVjdC1ib3ggXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuc2NoZWR1bGVGcmVxdWVuY3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJmcmVxdWVuY2llc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIiduYW1lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGZyZXF1ZW5jeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzY2hlZHVsZUZyZXF1ZW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXgtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgPC9heC1zdGVwLXdpemFyZC1pdGVtPlxuXG4gICAgPGF4LXN0ZXAtd2l6YXJkLWl0ZW0gW2xhYmVsXT1cIidQYXJhbWV0ZXJzJ1wiIFtpZF09XCIncGFyYW1ldGVycydcIj5cbiAgICAgIDxheC1pY29uIGNsYXNzPVwiZmFzIGZhLXNsaWRlcnMtaFwiPjwvYXgtaWNvbj5cbiAgICAgIDxheC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtdGl0bGUtc2VjdGlvbiBheC10ZXh0LWNlbnRlciBheC1tYi02XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZCBheC10ZXh0LWdyYXktOTAwIGF4LW1iLTJcIj5SZXBvcnQgUGFyYW1ldGVyczwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtZ3JheS02MDAgYXgtdGV4dC1zbVwiPkRlZmluZSBwYXJhbWV0ZXJzIGZvciB5b3VyIHJlcG9ydDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFyYW1ldGVycy1zZWN0aW9uIGF4LXNwYWNlLXktNlwiPlxuICAgICAgICAgICAgQGlmIChmb3JtRGF0YS5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhcmFtZXRlcnMtbGlzdCBheC1zcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwYXJhbSBvZiBmb3JtRGF0YS5wYXJhbWV0ZXJzOyB0cmFjayBwYXJhbS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXJhbWV0ZXItaXRlbSBheC1wLTQgYXgtYm9yZGVyIGF4LWJvcmRlci1ncmF5LTIwMCBheC1yb3VuZGVkLWxnIGF4LWJnLWdyYXktNTAgYXgtc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXJhbWV0ZXItZmllbGRzIGF4LWdyaWQgYXgtZ3JpZC1jb2xzLTEgbWQ6YXgtZ3JpZC1jb2xzLTMgYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1sYWJlbD5QYXJhbWV0ZXIgTmFtZTwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFyYW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcGFyYW1ldGVyIG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIncGFyYW1fbmFtZV8nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+VHlwZTwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtc2VsZWN0LWJveCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXJhbS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwicGFyYW1ldGVyVHlwZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCInaWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCInbmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BhcmFtX3R5cGVfJyArIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtY2hlY2stYm94IFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhcmFtLnJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BhcmFtX3JlcXVpcmVkXycgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICBsb29rPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInJlbW92ZVBhcmFtZXRlcihpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXBhcmFtZXRlcnMgYXgtdGV4dC1jZW50ZXIgYXgtcHktOCBheC10ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgPHA+Tm8gcGFyYW1ldGVycyBkZWZpbmVkIHlldC48L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLXBhcmFtZXRlci1zZWN0aW9uIGF4LXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxheC1idXR0b24gXG4gICAgICAgICAgICAgICAgbG9vaz1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWRkUGFyYW1ldGVyKClcIj5cbiAgICAgICAgICAgICAgICArIEFkZCBQYXJhbWV0ZXJcbiAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgPC9heC1zdGVwLXdpemFyZC1pdGVtPlxuXG4gICAgPGF4LXN0ZXAtd2l6YXJkLWl0ZW0gW2xhYmVsXT1cIidSZXZpZXcnXCIgW2lkXT1cIidyZXZpZXcnXCI+XG4gICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1jaGVjay1jaXJjbGVcIj48L2F4LWljb24+XG4gICAgICA8YXgtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlLXNlY3Rpb24gYXgtdGV4dC1jZW50ZXIgYXgtbWItNlwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi0yXCI+UmV2aWV3ICYgQ29uZmlybTwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtZ3JheS02MDAgYXgtdGV4dC1zbVwiPlJldmlldyB5b3VyIHJlcG9ydCBjb25maWd1cmF0aW9uIGJlZm9yZSBjcmVhdGluZzwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LXNlY3Rpb25zIGF4LXNwYWNlLXktNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1zZWN0aW9uIGF4LXAtNiBheC1ib3JkZXIgYXgtYm9yZGVyLWdyYXktMjAwIGF4LXJvdW5kZWQtbGcgYXgtYmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJheC10ZXh0LWxnIGF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi00IGF4LXBiLTIgYXgtYm9yZGVyLWIgYXgtYm9yZGVyLWdyYXktMjAwXCI+QmFzaWMgSW5mb3JtYXRpb248L2g0PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW1zIGF4LXNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+TmFtZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IGZvcm1EYXRhLm5hbWUgfHwgJ05vdCBzcGVjaWZpZWQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+VGl0bGU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBheC10ZXh0LWdyYXktOTAwIGF4LXRleHQtcmlnaHQgYXgtYnJlYWstd29yZHNcIj57eyBmb3JtRGF0YS50aXRsZSB8fCAnTm90IHNwZWNpZmllZCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pdGVtIGF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtZ3JheS03MDAgYXgtbWluLXctMCBheC1tci00IGF4LWZsZXgtc2hyaW5rLTBcIj5DYXRlZ29yeTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IGdldENhdGVnb3J5TmFtZShmb3JtRGF0YS5jYXRlZ29yeSkgfHwgJ05vdCBzZWxlY3RlZCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pdGVtIGF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtZ3JheS03MDAgYXgtbWluLXctMCBheC1tci00IGF4LWZsZXgtc2hyaW5rLTBcIj5EYXRhIFNvdXJjZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IGdldERhdGFTb3VyY2VUaXRsZShmb3JtRGF0YS5kYXRhU291cmNlKSB8fCAnTm90IHNlbGVjdGVkJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1zZWN0aW9uIGF4LXAtNiBheC1ib3JkZXIgYXgtYm9yZGVyLWdyYXktMjAwIGF4LXJvdW5kZWQtbGcgYXgtYmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJheC10ZXh0LWxnIGF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi00IGF4LXBiLTIgYXgtYm9yZGVyLWIgYXgtYm9yZGVyLWdyYXktMjAwXCI+Q29uZmlndXJhdGlvbjwvaDQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbXMgYXgtc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pdGVtIGF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtZ3JheS03MDAgYXgtbWluLXctMCBheC1tci00IGF4LWZsZXgtc2hyaW5rLTBcIj5UZW1wbGF0ZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IGdldFRlbXBsYXRlTmFtZShmb3JtRGF0YS50ZW1wbGF0ZSkgfHwgJ05vdCBzZWxlY3RlZCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pdGVtIGF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtZ3JheS03MDAgYXgtbWluLXctMCBheC1tci00IGF4LWZsZXgtc2hyaW5rLTBcIj5Gb3JtYXRzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgYXgtdGV4dC1ncmF5LTkwMCBheC10ZXh0LXJpZ2h0IGF4LWJyZWFrLXdvcmRzXCI+e3sgZ2V0U2VsZWN0ZWRGb3JtYXRzKCkgfHwgJ05vbmUgc2VsZWN0ZWQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+U2NoZWR1bGVkOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgYXgtdGV4dC1ncmF5LTkwMCBheC10ZXh0LXJpZ2h0IGF4LWJyZWFrLXdvcmRzXCI+e3sgZm9ybURhdGEuaXNTY2hlZHVsZWQgPyAnWWVzIC0gJyArIGZvcm1EYXRhLnNjaGVkdWxlRnJlcXVlbmN5IDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1zZWN0aW9uIGF4LXAtNiBheC1ib3JkZXIgYXgtYm9yZGVyLWdyYXktMjAwIGF4LXJvdW5kZWQtbGcgYXgtYmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJheC10ZXh0LWxnIGF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi00IGF4LXBiLTIgYXgtYm9yZGVyLWIgYXgtYm9yZGVyLWdyYXktMjAwXCI+UGFyYW1ldGVyczwvaDQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbXMgYXgtc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgQGlmIChmb3JtRGF0YS5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIEBmb3IgKHBhcmFtIG9mIGZvcm1EYXRhLnBhcmFtZXRlcnM7IHRyYWNrIHBhcmFtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1ncmF5LTcwMCBheC1taW4tdy0wIGF4LW1yLTQgYXgtZmxleC1zaHJpbmstMFwiPnt7IHBhcmFtLm5hbWUgfX06PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgYXgtdGV4dC1ncmF5LTkwMCBheC10ZXh0LXJpZ2h0IGF4LWJyZWFrLXdvcmRzXCI+e3sgcGFyYW0udHlwZSB9fXt7IHBhcmFtLnJlcXVpcmVkID8gJyAoUmVxdWlyZWQpJyA6ICcnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDBcIj5ObyBwYXJhbWV0ZXJzIGRlZmluZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1jb250ZW50PlxuICAgIDwvYXgtc3RlcC13aXphcmQtaXRlbT5cbiAgPC9heC1zdGVwLXdpemFyZD5cblxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC1wLTVcIj5cbiAgICA8bmctdGVtcGxhdGUgW2F4U3RlcFdpemFyZENvbnRlbnRdICN3aXphcmRDb250ZW50PVwiYXhTdGVwV2l6YXJkQ29udGVudFwiPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJheC1tdC0xMCBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXIgYXgtcHQtNiBheC1ib3JkZXItdCBheC1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmF2LWxlZnRcIj5cbiAgICAgIDxheC1idXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cInJlcG9ydFdpemFyZC5pc0ZpcnN0KClcIlxuICAgICAgICAob25DbGljayk9XCJyZXBvcnRXaXphcmQucHJldmlvdXMoKVwiXG4gICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICB0ZXh0PVwi4oaQIFByZXZpb3VzXCJcbiAgICAgICAgbG9vaz1cIm91dGxpbmVcIj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm5hdi1yaWdodFwiPlxuICAgICAgQGlmKHJlcG9ydFdpemFyZC5pc0xhc3QoKSkge1xuICAgICAgICA8YXgtYnV0dG9uIFxuICAgICAgICAgIChvbkNsaWNrKT1cImZpbmlzaFdpemFyZCgpXCIgXG4gICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCIgXG4gICAgICAgICAgdGV4dD1cIkNyZWF0ZSBSZXBvcnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmluZygpXCI+XG4gICAgICAgICAgQGlmIChpc1NhdmluZygpKSB7XG4gICAgICAgICAgICBDcmVhdGluZy4uLlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQ3JlYXRlIFJlcG9ydFxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIChvbkNsaWNrKT1cIm5leHRTdGVwKClcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgdGV4dD1cIk5leHQg4oaSXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblByb2NlZWQoKVwiPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ=="],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { AXBadgeModule } from '@acorex/components/badge';
|
2
2
|
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
3
|
-
import * as
|
3
|
+
import * as i4 from '@acorex/components/button';
|
4
4
|
import { AXButtonModule } from '@acorex/components/button';
|
5
|
-
import * as
|
5
|
+
import * as i8 from '@acorex/components/decorators';
|
6
6
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
7
7
|
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
8
8
|
import * as i7 from '@acorex/components/loading';
|
@@ -21,7 +21,7 @@ import * as i1 from '@angular/common';
|
|
21
21
|
import { CommonModule } from '@angular/common';
|
22
22
|
import * as i0 from '@angular/core';
|
23
23
|
import { computed, inject, output, ViewEncapsulation, ChangeDetectionStrategy, Component, viewChild } from '@angular/core';
|
24
|
-
import * as
|
24
|
+
import * as i1$1 from '@angular/forms';
|
25
25
|
import { FormsModule } from '@angular/forms';
|
26
26
|
import { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';
|
27
27
|
import { merge, filter, startWith, firstValueFrom } from 'rxjs';
|
@@ -30,8 +30,10 @@ import { signalStore, withState, withComputed, withMethods, patchState, withHook
|
|
30
30
|
import { isNil, isEmpty } from 'lodash-es';
|
31
31
|
import { AXLocaleService } from '@acorex/core/locale';
|
32
32
|
import { RootConfig } from './acorex-modules-report-management.mjs';
|
33
|
+
import { AXPCommandService } from '@acorex/platform/runtime';
|
33
34
|
import * as i2 from '@acorex/components/tree-view';
|
34
35
|
import { AXTreeViewModule } from '@acorex/components/tree-view';
|
36
|
+
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
35
37
|
|
36
38
|
const AXPReportRunnerRootViewModel = signalStore(withState(() => ({
|
37
39
|
activeCategory: undefined,
|
@@ -81,7 +83,7 @@ const AXPReportRunnerRootViewModel = signalStore(withState(() => ({
|
|
81
83
|
}))
|
82
84
|
};
|
83
85
|
}),
|
84
|
-
})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService)) => ({
|
86
|
+
})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService), commandService = inject(AXPCommandService)) => ({
|
85
87
|
async loadRootCategories() {
|
86
88
|
patchState(store, {
|
87
89
|
activeCategory: undefined,
|
@@ -225,14 +227,20 @@ const AXPReportRunnerRootViewModel = signalStore(withState(() => ({
|
|
225
227
|
status: AXPPageStatus.Submitting,
|
226
228
|
});
|
227
229
|
//
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
}
|
234
|
-
|
235
|
-
|
230
|
+
try {
|
231
|
+
await commandService.execute(`${RootConfig.entities.report.fullName}:Run`, {
|
232
|
+
reportId: store.activeReport()?.id,
|
233
|
+
context: store.context(),
|
234
|
+
});
|
235
|
+
}
|
236
|
+
catch (error) {
|
237
|
+
console.error(error);
|
238
|
+
}
|
239
|
+
finally {
|
240
|
+
patchState(store, {
|
241
|
+
status: AXPPageStatus.Idle,
|
242
|
+
});
|
243
|
+
}
|
236
244
|
},
|
237
245
|
async discard() {
|
238
246
|
const form = store.form();
|
@@ -326,10 +334,10 @@ class AXPReportCategoriesTreeComponent {
|
|
326
334
|
this.reportClick.emit(node.item);
|
327
335
|
}
|
328
336
|
}
|
329
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
330
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.
|
337
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPReportCategoriesTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
338
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXPReportCategoriesTreeComponent, isStandalone: true, selector: "axp-report-categories-tree", outputs: { categoryClick: "categoryClick", reportClick: "reportClick" }, host: { classAttribute: "axp-report-categories-tree" }, ngImport: i0, template: "<ax-tree-view\n [showCheckbox]=\"false\"\n [itemTemplate]=\"itemTemplate\"\n [textField]=\"'title'\"\n [hasChildField]=\"'hasChild'\"\n [valueField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [items]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n>\n</ax-tree-view>\n\n<ng-template #itemTemplate let-item>\n @if (item.type === 'category') {\n <ax-icon class=\"fas ax-text-warning fa-folder\"></ax-icon>\n } @else {\n <ax-icon class=\"fas ax-text-accent1 fa-file-chart-column\"></ax-icon>\n }\n {{ item.title }}\n</ng-template>\n", styles: [".axp-report-categories-tree{height:100%;width:100%}.axp-report-categories-tree .__tree-view .__item{display:flex;align-items:center;gap:.5rem}.axp-report-categories-tree .__tree-view .__item .__icon{flex-shrink:0}.axp-report-categories-tree .__tree-view .__item .__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.axp-report-categories-tree .__tree-view .__item:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i8.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTreeViewModule }, { kind: "component", type: i2.AXTreeViewComponent, selector: "ax-tree-view", inputs: ["items", "showCheckbox", "hasCheckboxField", "selectionMode", "selectionBehavior", "selectionScope", "focusNodeEnabled", "valueField", "textField", "visibleField", "disableField", "hasChildField", "selectedField", "expandedField", "tooltipField", "childrenField", "activeField", "indeterminateField", "parentField", "iconField", "toggleIcons", "look", "showEmptyNodeMassage", "itemTemplate", "emptyTemplate", "expandOn"], outputs: ["onSelectionChanged", "onItemSelectedChanged", "onNodeClick", "onCollapsedChanged", "onNodedbClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
331
339
|
}
|
332
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPReportCategoriesTreeComponent, decorators: [{
|
333
341
|
type: Component,
|
334
342
|
args: [{ selector: 'axp-report-categories-tree', standalone: true, imports: [
|
335
343
|
CommonModule,
|
@@ -347,6 +355,7 @@ class AXMReportRunnerRootPageComponent extends AXPPageLayoutBaseComponent {
|
|
347
355
|
this.unsubscribe = inject(AXUnsubscriber);
|
348
356
|
this.reportDefinitionService = inject(AXPReportDefinitionService);
|
349
357
|
this.dynamicForm = viewChild(AXPDynamicFormComponent);
|
358
|
+
this.workflow = inject(AXPWorkflowService);
|
350
359
|
this.router = inject(Router);
|
351
360
|
this.baseRoutes = [this.sessionService.application?.name, 'report-management', 'reports'];
|
352
361
|
this.defaultLayout = computed(() => {
|
@@ -532,25 +541,44 @@ class AXMReportRunnerRootPageComponent extends AXPPageLayoutBaseComponent {
|
|
532
541
|
case 'navigate-to-reports-root':
|
533
542
|
await this.router.navigate([...this.baseRoutes]);
|
534
543
|
break;
|
544
|
+
case 'create-report':
|
545
|
+
await this.workflow.execute('report-create', {
|
546
|
+
data: {
|
547
|
+
categoryId: this.vm.activeCategory()?.id ?? null,
|
548
|
+
},
|
549
|
+
});
|
550
|
+
break;
|
535
551
|
}
|
536
552
|
}
|
537
|
-
|
538
|
-
|
553
|
+
async getPrimaryMenuItems() {
|
554
|
+
return [
|
555
|
+
{
|
556
|
+
title: 't("actions.create")',
|
557
|
+
icon: 'fa-light fa-plus',
|
558
|
+
color: 'primary',
|
559
|
+
command: {
|
560
|
+
name: 'create-report',
|
561
|
+
},
|
562
|
+
},
|
563
|
+
];
|
564
|
+
}
|
565
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXMReportRunnerRootPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
566
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXMReportRunnerRootPageComponent, isStandalone: true, selector: "ng-component", host: { classAttribute: "axp-report-runner-root-page" }, providers: [
|
539
567
|
AXUnsubscriber,
|
540
568
|
AXPReportRunnerRootViewModel,
|
541
569
|
{
|
542
570
|
provide: AXPPageLayoutBase,
|
543
571
|
useExisting: AXMReportRunnerRootPageComponent,
|
544
572
|
},
|
545
|
-
], viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: AXPDynamicFormComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n @if (vm.showSideMenu()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>{{ t('@report-management:features.report-runner.menu-title') | async }}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box\n [delayTime]=\"300\"\n [ngModel]=\"vm.searchExpression()\"\n (onValueChanged)=\"vm.search($event.value)\"\n [placeholder]=\"t('search.placeholder') | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content>\n <axp-report-categories-tree (categoryClick)=\"onCategoryClick($event)\" (reportClick)=\"onReportClick($event)\" />\n </axp-layout-content>\n </axp-layout-start-side>\n }\n\n <axp-page-content>\n @if (vm.showSideMenu()) {\n <!-- Desktop: Show parameters view when report is selected, or grid browser when no report -->\n @if (vm.hasActiveReport()) {\n <div class=\"__parameters-view\">\n <axp-dynamic-form\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.context()\"\n [layoutConfig]=\"defaultLayout()\"\n (contextChange)=\"handleContextChanged($event)\"\n (contextInitiated)=\"handleContextInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"browser\"> </ng-container>\n }\n } @else {\n <!-- Mobile: Show parameters view when report is selected, or mobile browser for navigation -->\n @if (vm.hasActiveReport()) {\n <div class=\"__parameters-view\">\n <axp-dynamic-form\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.context()\"\n [layoutConfig]=\"defaultLayout()\"\n (contextChange)=\"handleContextChanged($event)\"\n (contextInitiated)=\"handleContextInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"browser\"> </ng-container>\n }\n }\n </axp-page-content>\n\n <!-- Desktop: Grid-based browser for main content when no report selected -->\n <ng-template #browser>\n <div class=\"__reports-browser __desktop\">\n @if (vm.categories().length > 0) {\n <div class=\"__section\">\n <h3 class=\"__section-title\">Categories</h3>\n <div class=\"__items-grid\">\n @for (category of vm.categories(); track category.id) {\n <div class=\"__item __category\" (click)=\"navigateToCategory(category)\">\n <div class=\"__item-icon\">\n <ax-icon class=\"fa-solid fa-folder\"></ax-icon>\n </div>\n <div class=\"__item-content\">\n <div class=\"__item-title\">{{ category.title }}</div>\n @if (category.description) {\n <div class=\"__item-description\">{{ category.description }}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.reports().length > 0) {\n <div class=\"__section\">\n <h3 class=\"__section-title\">Reports</h3>\n <div class=\"__items-grid\">\n @for (report of vm.reports(); track report.id) {\n <div class=\"__item __report\" (click)=\"navigateToReport(report)\">\n <div class=\"__item-icon\">\n <ax-icon class=\"fa-solid fa-file-chart-column\"></ax-icon>\n </div>\n <div class=\"__item-content\">\n <div class=\"__item-title\">{{ report.title }}</div>\n @if (report.description) {\n <div class=\"__item-description\">{{ report.description }}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.categories().length === 0 && vm.reports().length === 0) {\n <div class=\"__empty-state\">\n <div class=\"__empty-icon\">\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </div>\n <div class=\"__empty-content\">\n <h4>No items found</h4>\n <p>There are no categories or reports available in this location.</p>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n @if (vm.hasActiveReport()) {\n <axp-page-footer class=\"--animated\">\n <axp-layout-suffix>\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n [disabled]=\"vm.isBusy() || vm.isRunning()\"\n [text]=\"t('run') | async\"\n (onClick)=\"vm.run()\"\n [color]=\"'secondary'\"\n >\n @if (vm.isRunning()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-page-footer>\n }\n</axp-page-layout>\n", styles: [".axp-report-runner-root-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-runner-root-page axp-layout-start-side{width:24rem}}.axp-report-runner-root-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding-left:1rem;padding-right:1rem}.axp-report-runner-root-page .__reports-browser>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.axp-report-runner-root-page .__reports-browser{padding:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.axp-report-runner-root-page .__reports-browser.__mobile{padding:1rem}.axp-report-runner-root-page .__reports-browser .__section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axp-report-runner-root-page .__reports-browser .__section .__section-title{display:flex;align-items:center;gap:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-runner-root-page .__reports-browser .__section .__section-title ax-icon{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width: 768px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1280px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1536px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 2560px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item{cursor:pointer;border-radius:.5rem;border-width:1px;padding:1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item{display:flex;align-items:flex-start;gap:.75rem}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-icon{display:flex;height:2.5rem;width:2.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:.25rem;font-size:1.125rem;line-height:1.75rem}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-content{min-width:0px;flex:1 1 0%}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-content .__item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-content .__item-description{margin-top:.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__category .__item-icon{background-color:rgba(var(--ax-sys-color-warning-500),.1)}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__category .__item-icon ax-icon{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-500),var(--tw-text-opacity, 1))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__category:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-warning-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-warning-500),.05)}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__report .__item-icon{background-color:rgba(var(--ax-sys-color-primary-500),.1)}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__report .__item-icon ax-icon{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__report:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-500),.05)}.axp-report-runner-root-page .__reports-browser.__mobile .__mobile-search{margin-bottom:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item{padding:.75rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item .__item-icon{height:2rem;width:2rem;font-size:1rem;line-height:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item .__item-content .__item-title{font-size:1rem;line-height:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item .__item-content .__item-description{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;font-size:.75rem;line-height:1rem}.axp-report-runner-root-page .__reports-browser .__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:4rem;padding-bottom:4rem;text-align:center}.axp-report-runner-root-page .__reports-browser .__empty-state .__empty-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;opacity:.5}.axp-report-runner-root-page .__reports-browser .__empty-state .__empty-content h4{margin-bottom:.5rem;font-size:1.5rem;font-weight:500;line-height:1.5rem}.axp-report-runner-root-page .__reports-browser .__empty-state .__empty-content p{max-width:28rem;opacity:74%;display:block;font-size:1rem;font-weight:400;line-height:1.625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
573
|
+
], viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: AXPDynamicFormComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n @if (vm.showSideMenu()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>{{ t('@report-management:features.report-runner.menu-title') | async }}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box\n [delayTime]=\"300\"\n [ngModel]=\"vm.searchExpression()\"\n (onValueChanged)=\"vm.search($event.value)\"\n [placeholder]=\"t('search.placeholder') | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content>\n <axp-report-categories-tree (categoryClick)=\"onCategoryClick($event)\" (reportClick)=\"onReportClick($event)\" />\n </axp-layout-content>\n </axp-layout-start-side>\n }\n\n <axp-page-content>\n @if (vm.showSideMenu()) {\n <!-- Desktop: Show parameters view when report is selected, or grid browser when no report -->\n @if (vm.hasActiveReport()) {\n <div class=\"__parameters-view\">\n <axp-dynamic-form\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.context()\"\n [layoutConfig]=\"defaultLayout()\"\n (contextChange)=\"handleContextChanged($event)\"\n (contextInitiated)=\"handleContextInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"browser\"> </ng-container>\n }\n } @else {\n <!-- Mobile: Show parameters view when report is selected, or mobile browser for navigation -->\n @if (vm.hasActiveReport()) {\n <div class=\"__parameters-view\">\n <axp-dynamic-form\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.context()\"\n [layoutConfig]=\"defaultLayout()\"\n (contextChange)=\"handleContextChanged($event)\"\n (contextInitiated)=\"handleContextInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"browser\"> </ng-container>\n }\n }\n </axp-page-content>\n\n <!-- Desktop: Grid-based browser for main content when no report selected -->\n <ng-template #browser>\n <div class=\"__reports-browser __desktop\">\n @if (vm.categories().length > 0) {\n <div class=\"__section\">\n <h3 class=\"__section-title\">Categories</h3>\n <div class=\"__items-grid\">\n @for (category of vm.categories(); track category.id) {\n <div class=\"__item __category\" (click)=\"navigateToCategory(category)\">\n <div class=\"__item-icon\">\n <ax-icon class=\"fa-solid fa-folder\"></ax-icon>\n </div>\n <div class=\"__item-content\">\n <div class=\"__item-title\">{{ category.title }}</div>\n @if (category.description) {\n <div class=\"__item-description\">{{ category.description }}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.reports().length > 0) {\n <div class=\"__section\">\n <h3 class=\"__section-title\">Reports</h3>\n <div class=\"__items-grid\">\n @for (report of vm.reports(); track report.id) {\n <div class=\"__item __report\" (click)=\"navigateToReport(report)\">\n <div class=\"__item-icon\">\n <ax-icon class=\"fa-solid fa-file-chart-column\"></ax-icon>\n </div>\n <div class=\"__item-content\">\n <div class=\"__item-title\">{{ report.title }}</div>\n @if (report.description) {\n <div class=\"__item-description\">{{ report.description }}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.categories().length === 0 && vm.reports().length === 0) {\n <div class=\"__empty-state\">\n <div class=\"__empty-icon\">\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </div>\n <div class=\"__empty-content\">\n <h4>No items found</h4>\n <p>There are no categories or reports available in this location.</p>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n @if (vm.hasActiveReport()) {\n <axp-page-footer class=\"--animated\">\n <axp-layout-suffix>\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n [disabled]=\"vm.isBusy() || vm.isRunning()\"\n [text]=\"t('run') | async\"\n (onClick)=\"vm.run()\"\n [color]=\"'secondary'\"\n >\n @if (vm.isRunning()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-page-footer>\n }\n</axp-page-layout>\n", styles: [".axp-report-runner-root-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-runner-root-page axp-layout-start-side{width:24rem}}.axp-report-runner-root-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding-left:1rem;padding-right:1rem}.axp-report-runner-root-page .__reports-browser>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.axp-report-runner-root-page .__reports-browser{padding:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.axp-report-runner-root-page .__reports-browser.__mobile{padding:1rem}.axp-report-runner-root-page .__reports-browser .__section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axp-report-runner-root-page .__reports-browser .__section .__section-title{display:flex;align-items:center;gap:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-runner-root-page .__reports-browser .__section .__section-title ax-icon{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width: 768px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1280px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1536px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 2560px){.axp-report-runner-root-page .__reports-browser .__section .__items-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item{cursor:pointer;border-radius:.5rem;border-width:1px;padding:1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item{display:flex;align-items:flex-start;gap:.75rem}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-icon{display:flex;height:2.5rem;width:2.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:.25rem;font-size:1.125rem;line-height:1.75rem}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-content{min-width:0px;flex:1 1 0%}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-content .__item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item .__item-content .__item-description{margin-top:.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__category .__item-icon{background-color:rgba(var(--ax-sys-color-warning-500),.1)}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__category .__item-icon ax-icon{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-500),var(--tw-text-opacity, 1))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__category:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-warning-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-warning-500),.05)}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__report .__item-icon{background-color:rgba(var(--ax-sys-color-primary-500),.1)}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__report .__item-icon ax-icon{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axp-report-runner-root-page .__reports-browser .__section .__items-grid .__item.__report:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-500),.05)}.axp-report-runner-root-page .__reports-browser.__mobile .__mobile-search{margin-bottom:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item{padding:.75rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item .__item-icon{height:2rem;width:2rem;font-size:1rem;line-height:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item .__item-content .__item-title{font-size:1rem;line-height:1.5rem}.axp-report-runner-root-page .__reports-browser.__mobile .__section .__items-grid .__item .__item-content .__item-description{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;font-size:.75rem;line-height:1rem}.axp-report-runner-root-page .__reports-browser .__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:4rem;padding-bottom:4rem;text-align:center}.axp-report-runner-root-page .__reports-browser .__empty-state .__empty-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;opacity:.5}.axp-report-runner-root-page .__reports-browser .__empty-state .__empty-content h4{margin-bottom:.5rem;font-size:1.5rem;font-weight:500;line-height:1.5rem}.axp-report-runner-root-page .__reports-browser .__empty-state .__empty-content p{max-width:28rem;opacity:74%;display:block;font-size:1rem;font-weight:400;line-height:1.625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
546
574
|
//
|
547
|
-
AXSearchBoxModule }, { kind: "component", type: i3.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type:
|
575
|
+
AXSearchBoxModule }, { kind: "component", type: i3.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i8.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i8.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i7.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type:
|
548
576
|
//
|
549
577
|
AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutToolbarComponent, selector: "axp-layout-toolbar" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type:
|
550
578
|
//
|
551
579
|
AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPReportCategoriesTreeComponent, selector: "axp-report-categories-tree", outputs: ["categoryClick", "reportClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
552
580
|
}
|
553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
581
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXMReportRunnerRootPageComponent, decorators: [{
|
554
582
|
type: Component,
|
555
583
|
args: [{ standalone: true, imports: [
|
556
584
|
CommonModule,
|
@@ -586,4 +614,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
|
|
586
614
|
}] });
|
587
615
|
|
588
616
|
export { AXMReportRunnerRootPageComponent };
|
589
|
-
//# sourceMappingURL=acorex-modules-report-management-report-runner-root-page.component-
|
617
|
+
//# sourceMappingURL=acorex-modules-report-management-report-runner-root-page.component-BntIoMfN.mjs.map
|