@acorex/modules 20.7.17 → 20.7.20
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/assessment-management/index.d.ts +0 -1
- package/business-core/index.d.ts +32 -2
- package/common/index.d.ts +21 -0
- package/customer-management/index.d.ts +1 -27
- package/document-management/index.d.ts +0 -1
- package/fesm2022/acorex-modules-application-management.mjs +19 -27
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-CULLP39a.mjs} +65 -67
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-CULLP39a.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-BLjzQMgD.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-BLjzQMgD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-Dy1fV5UY.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-Dy1fV5UY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-UWn57QXA.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-UWn57QXA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs → acorex-modules-assessment-management-assessment-case.entity-DMSrj4-x.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs.map → acorex-modules-assessment-management-assessment-case.entity-DMSrj4-x.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs → acorex-modules-assessment-management-assessment-session.entity-Amq-d0wb.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs.map → acorex-modules-assessment-management-assessment-session.entity-Amq-d0wb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs → acorex-modules-assessment-management-fill-assessment-session.command-CdxcGakt.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-CdxcGakt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs → acorex-modules-assessment-management-preview-questionnaire.command-C5zwNwJi.mjs} +4 -4
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-C5zwNwJi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs → acorex-modules-assessment-management-question-bank-item.entity-MlspdBfD.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-MlspdBfD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-DswgENO1.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-DswgENO1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-C3BXFr5P.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-C3BXFr5P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs → acorex-modules-assessment-management-questionnaire-builder.component-BMR71H5h.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-BMR71H5h.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Bj-JfJqq.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Bj-JfJqq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-CVF6-BFW.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-CVF6-BFW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs → acorex-modules-assessment-management-questionnaire.entity-BZj3A4yO.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs.map → acorex-modules-assessment-management-questionnaire.entity-BZj3A4yO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs → acorex-modules-assessment-management-view-session-answers.command-BVwF-Qvd.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs.map → acorex-modules-assessment-management-view-session-answers.command-BVwF-Qvd.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs → acorex-modules-auth-acorex-modules-auth-CCFM_tlK.mjs} +13 -13
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs.map → acorex-modules-auth-acorex-modules-auth-CCFM_tlK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DJE47I8p.mjs → acorex-modules-auth-app-chooser.component-CK5MfqD3.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DJE47I8p.mjs.map → acorex-modules-auth-app-chooser.component-CK5MfqD3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CI_lkyb7.mjs → acorex-modules-auth-login.module-CoRuFgHW.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CI_lkyb7.mjs.map → acorex-modules-auth-login.module-CoRuFgHW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CdY380qS.mjs → acorex-modules-auth-master.layout-DtQSZBEK.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CdY380qS.mjs.map → acorex-modules-auth-master.layout-DtQSZBEK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-menu.provider-Bk9KXBU3.mjs → acorex-modules-auth-menu.provider-CBNyM4Ax.mjs} +2 -14
- package/fesm2022/acorex-modules-auth-menu.provider-CBNyM4Ax.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs → acorex-modules-auth-oauth-callback.component-CLdkbMqN.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs.map → acorex-modules-auth-oauth-callback.component-CLdkbMqN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-Dw_v_EFQ.mjs → acorex-modules-auth-password.component-DFh6ylyI.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-Dw_v_EFQ.mjs.map → acorex-modules-auth-password.component-DFh6ylyI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CefISnvd.mjs → acorex-modules-auth-password.component-zygAB4zy.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-CefISnvd.mjs.map → acorex-modules-auth-password.component-zygAB4zy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CwcJHbAi.mjs → acorex-modules-auth-routes-44-jn5HH.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CwcJHbAi.mjs.map → acorex-modules-auth-routes-44-jn5HH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs → acorex-modules-auth-tenant-chooser.component-B7og_Ed1.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs.map → acorex-modules-auth-tenant-chooser.component-B7og_Ed1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-BOZB6sLo.mjs → acorex-modules-auth-two-factor.module--ToitCHE.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-BOZB6sLo.mjs.map → acorex-modules-auth-two-factor.module--ToitCHE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs → acorex-modules-auth-user-sessions.component-B49q0G5k.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs.map → acorex-modules-auth-user-sessions.component-B49q0G5k.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-business-core.mjs +124 -1
- package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +49 -0
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +21 -22
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer.entity-B7-T9_T7.mjs → acorex-modules-customer-management-customer.entity-BOUGKl2b.mjs} +53 -1
- package/fesm2022/acorex-modules-customer-management-customer.entity-BOUGKl2b.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-lead.entity-Da9JTLOl.mjs → acorex-modules-customer-management-lead.entity-C-juNxOd.mjs} +19 -14
- package/fesm2022/acorex-modules-customer-management-lead.entity-C-juNxOd.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management.mjs +34 -152
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +28 -39
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +51 -42
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +21 -17
- package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-MfqQx2iN.mjs → acorex-modules-help-desk-acorex-modules-help-desk-6uU5upBy.mjs} +65 -70
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-6uU5upBy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CATwc3fe.mjs → acorex-modules-help-desk-capture-screen.component-CqtTzbgS.mjs} +2 -2
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CATwc3fe.mjs.map → acorex-modules-help-desk-capture-screen.component-CqtTzbgS.mjs.map} +1 -1
- package/fesm2022/acorex-modules-help-desk.mjs +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +85 -76
- package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-learning-management.mjs +105 -137
- package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +64 -198
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management.mjs +45 -39
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management-menu.provider-DeMKkRZa.mjs +61 -0
- package/fesm2022/acorex-modules-order-management-menu.provider-DeMKkRZa.mjs.map +1 -0
- package/fesm2022/acorex-modules-order-management.mjs +2 -2
- package/fesm2022/acorex-modules-organization-management.mjs +140 -90
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-ndbiBVUt.mjs → acorex-modules-platform-management-acorex-modules-platform-management-fAjKD6Y5.mjs} +20 -17
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-ndbiBVUt.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-fAjKD6Y5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-w-Ix2VZA.mjs → acorex-modules-platform-management-menu-list.component-BJsd86Vf.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-w-Ix2VZA.mjs.map → acorex-modules-platform-management-menu-list.component-BJsd86Vf.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-procurement-management.mjs +13 -18
- package/fesm2022/acorex-modules-procurement-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-product-catalog.mjs +24 -27
- package/fesm2022/acorex-modules-product-catalog.mjs.map +1 -1
- package/fesm2022/acorex-modules-reservation-management.mjs +91 -54
- package/fesm2022/acorex-modules-reservation-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs → acorex-modules-settings-management-acorex-modules-settings-management-fj933lbu.mjs} +6 -6
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-fj933lbu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs → acorex-modules-settings-management-permission-definition.provider-CW3wSb7v.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs.map → acorex-modules-settings-management-permission-definition.provider-CW3wSb7v.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs → acorex-modules-settings-management-setting-page.component-BqJ31scm.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs.map → acorex-modules-settings-management-setting-page.component-BqJ31scm.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs → acorex-modules-settings-management-setting-view.component-D7QpT246.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs.map → acorex-modules-settings-management-setting-view.component-D7QpT246.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-subscription-management.mjs +19 -28
- package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-tenant-management.mjs +9 -16
- package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +51 -36
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/learning-management/index.d.ts +6 -0
- package/meeting-management/index.d.ts +0 -1
- package/package.json +2 -2
- package/reservation-management/index.d.ts +13 -12
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-menu.provider-Bk9KXBU3.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer.entity-B7-T9_T7.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-lead.entity-Da9JTLOl.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-DNFSDcpD.mjs +0 -60
- package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-DNFSDcpD.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-sales-territory.entity-Bw5YU_a3.mjs +0 -60
- package/fesm2022/acorex-modules-customer-management-sales-territory.entity-Bw5YU_a3.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-MfqQx2iN.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-menu.provider-CDXy5oMa.mjs +0 -68
- package/fesm2022/acorex-modules-order-management-menu.provider-CDXy5oMa.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs","sources":["../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.types.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.component.js"],"sourcesContent":["//#region ---- Imports ----\n//#endregion\n//#region ---- Utility Functions ----\n/**\n * Convert raw value to builder state\n */\nexport function convertValueToState(value) {\n // Handle null/undefined or empty sections\n if (!value || !value.sections || value.sections.length === 0) {\n // Always return at least one default section\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n sections: [defaultSection],\n displaySettings: value?.displaySettings,\n };\n }\n // Handle structure (sections with nested items)\n return {\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id || `section-${sectionIndex}`,\n title: section.title,\n description: section.description,\n order: section.order ?? sectionIndex,\n visibilityCondition: section.visibilityCondition,\n items: (section.items || []).map((item, itemIndex) => ({\n id: item.id || `item-${itemIndex}`,\n questionBankItemId: item.questionBankItemId,\n order: item.order ?? itemIndex,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n isNewlyAdded: false,\n })),\n isNewlyAdded: false,\n })),\n displaySettings: value.displaySettings,\n };\n}\n/**\n * Convert builder state to value for persistence\n */\nexport function convertStateToValue(state, existingValue) {\n const result = {\n sections: state.sections\n .filter((section) => {\n // Drop sections that are NOT newly added AND have no items\n // Keep sections that are newly added OR have items\n const isNewlyAdded = section.isNewlyAdded === true;\n const hasItems = section.items.length > 0;\n return isNewlyAdded || hasItems;\n })\n .map((section) => {\n return {\n id: section.id,\n title: section.title,\n description: section.description,\n order: section.order,\n visibilityCondition: section.visibilityCondition,\n items: section.items.map((item) => ({\n id: item.id,\n questionBankItemId: item.questionBankItemId,\n order: item.order,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n })),\n };\n }),\n };\n // Preserve displaySettings from state first, then from existing value if state doesn't have it\n if (state.displaySettings) {\n result.displaySettings = state.displaySettings;\n }\n else if (existingValue?.displaySettings) {\n result.displaySettings = existingValue.displaySettings;\n }\n return result;\n}\n/**\n * Create a default section\n */\nexport function createDefaultSection() {\n return {\n id: `section-${Date.now()}`,\n title: 'New Section',\n description: undefined,\n order: 0,\n visibilityCondition: undefined,\n items: [],\n isNewlyAdded: true,\n };\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBK0ovQixZQUFZO0FBRVoseUNBQXlDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQW1EO0lBQ25GLDBDQUEwQztJQUMxQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCw2Q0FBNkM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPO1lBQ0gsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQzFCLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZTtTQUMxQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxPQUFPO1FBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxXQUFXLFlBQVksRUFBRTtZQUMzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVk7WUFDcEMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtZQUNoRCxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLFFBQVEsU0FBUyxFQUFFO2dCQUNsQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQzdDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDekMsWUFBWSxFQUFFLEtBQUs7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO0tBQ3pDLENBQUM7QUFDTixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBZ0MsRUFBRSxhQUF5QztJQUMzRyxNQUFNLE1BQU0sR0FBOEI7UUFDdEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ25CLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLDJEQUEyRDtZQUMzRCxtREFBbUQ7WUFDbkQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUM7WUFDbkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRTFDLE9BQU8sWUFBWSxJQUFJLFFBQVEsQ0FBQztRQUNwQyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNiLE9BQU87Z0JBQ0gsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUI7Z0JBQ2hELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUNYLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO29CQUM3QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO29CQUN6QyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3JDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7aUJBQzVDLENBQUMsQ0FBQzthQUNOLENBQUM7UUFDTixDQUFDLENBQUM7S0FDVCxDQUFDO0lBRUYsK0ZBQStGO0lBQy9GLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNuRCxDQUFDO1NBQU0sSUFBSSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2hDLE9BQU87UUFDSCxFQUFFLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDM0IsS0FBSyxFQUFFLGFBQWE7UUFDcEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDUixtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLEtBQUssRUFBRSxFQUFFO1FBQ1QsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBxdWVzdGlvbiBpdGVtIHdpdGhpbiBhIHNlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBzdHJpbmc7XG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHNjb3JpbmdPdmVycmlkZT86IHtcbiAgICAgICAgcG9pbnRzPzogbnVtYmVyO1xuICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfTtcbiAgICBpbnRlcmZhY2VPdmVycmlkZT86IEFYUFdpZGdldE5vZGU7XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcblxuICAgIC8vIFJlbGF0ZWQgcXVlc3Rpb24gZGF0YSAoZnJvbSBleHBvc2UpXG4gICAgcXVlc3Rpb24/OiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBkaWZmaWN1bHR5Pzogc3RyaW5nO1xuICAgICAgICBzY29yaW5nVHlwZT86IHN0cmluZztcbiAgICB9O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgU2VjdGlvbiBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2VjdGlvbiBjb250YWluaW5nIHF1ZXN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICBpdGVtczogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtW107XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlc3Rpb25uYWlyZSBCdWlsZGVyIFN0YXRlIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIE92ZXJhbGwgc3RhdGUgZm9yIHRoZSBxdWVzdGlvbm5haXJlIGJ1aWxkZXIgd2lkZ2V0IChkZXNpZ25lciBtb2RlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUge1xuICAgIHNlY3Rpb25zOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb25bXTtcbiAgICBzZWxlY3RlZEl0ZW1JZD86IHN0cmluZztcbiAgICBzZWxlY3RlZFNlY3Rpb25JZD86IHN0cmluZztcbiAgICBkaXNwbGF5U2V0dGluZ3M/OiBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzO1xufVxuXG4vKipcbiAqIERpc3BsYXkgc2V0dGluZ3MgZm9yIHF1ZXN0aW9ubmFpcmUgdmlld2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncyB7XG4gICAgLyoqXG4gICAgICogVmlldyBtb2RlOiBzaW5nbGUtcGFnZSwgcGFnZS1wZXItZ3JvdXAsIHBhZ2UtcGVyLXF1ZXN0aW9uLCBzaWRlLW1lbnVcbiAgICAgKi9cbiAgICB2aWV3TW9kZT86ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyB8ICdzaWRlLW1lbnUnO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBwcm9ncmVzcyBiYXJcbiAgICAgKi9cbiAgICBzaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3Jlc3MgY2FsY3VsYXRpb24gbW9kZTogYW5zd2VyZWQgb3IgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIHByb2dyZXNzTW9kZT86ICdhbnN3ZXJlZCcgfCAnbmF2aWdhdGlvbic7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRpbWVyXG4gICAgICovXG4gICAgc2hvd1RpbWVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNob3cgc2VjdGlvbiB0aXRsZXNcbiAgICAgKi9cbiAgICBzaG93U2VjdGlvblRpdGxlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHF1ZXN0aW9uIG51bWJlcnNcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25OdW1iZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF1dG8tc2F2ZSBhbnN3ZXJzIGFzIHVzZXIgdHlwZXNcbiAgICAgKi9cbiAgICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHZhbGlkYXRpb24gZXJyb3JzIGlubGluZVxuICAgICAqL1xuICAgIHNob3dWYWxpZGF0aW9uRXJyb3JzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFsbG93IHNraXBwaW5nIHF1ZXN0aW9ucyAoaWYgbm90IHJlcXVpcmVkKVxuICAgICAqL1xuICAgIGFsbG93U2tpcHBpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBxdWVzdGlvbiBjb3VudGVyIChlLmcuLCBcIlF1ZXN0aW9uIDMgb2YgMTBcIilcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25Db3VudGVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlIGJlZm9yZSBhbGxvd2luZyBuYXZpZ2F0aW9uIHRvIG90aGVyIHNlY3Rpb25zL3BhZ2VzXG4gICAgICogV2hlbiB0cnVlLCBuYXZpZ2F0aW9uIGlzIGJsb2NrZWQgaWYgY3VycmVudCBwYWdlIGhhcyB2YWxpZGF0aW9uIGVycm9yc1xuICAgICAqIFdoZW4gZmFsc2UsIG5hdmlnYXRpb24gaXMgYWxsb3dlZCBidXQgdmFsaWRhdGlvbiBlcnJvcnMgYXJlIHN0aWxsIHNob3duXG4gICAgICogRGVmYXVsdDogdHJ1ZVxuICAgICAqL1xuICAgIHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmFsdWUgc3RydWN0dXJlIHN0b3JlZCBpbiBlbnRpdHkgKHNpbXBsaWZpZWQgZm9yIHBlcnNpc3RlbmNlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUge1xuICAgIHNlY3Rpb25zOiBBcnJheTx7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBvcmRlcjogbnVtYmVyO1xuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICBpdGVtczogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogc3RyaW5nO1xuICAgICAgICAgICAgb3JkZXI6IG51bWJlcjtcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlPzoge1xuICAgICAgICAgICAgICAgIHBvaW50cz86IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW50ZXJmYWNlT3ZlcnJpZGU/OiBBWFBXaWRnZXROb2RlO1xuICAgICAgICB9PjtcbiAgICB9PjtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHNldHRpbmdzIGZvciBxdWVzdGlvbm5haXJlIHZpZXdlclxuICAgICAqL1xuICAgIGRpc3BsYXlTZXR0aW5ncz86IFF1ZXN0aW9ubmFpcmVEaXNwbGF5U2V0dGluZ3M7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFV0aWxpdHkgRnVuY3Rpb25zICAgLS0tLVxuXG4vKipcbiAqIENvbnZlcnQgcmF3IHZhbHVlIHRvIGJ1aWxkZXIgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvU3RhdGUodmFsdWU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSB7XG4gICAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIG9yIGVtcHR5IHNlY3Rpb25zXG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc2VjdGlvbnMgfHwgdmFsdWUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEFsd2F5cyByZXR1cm4gYXQgbGVhc3Qgb25lIGRlZmF1bHQgc2VjdGlvblxuICAgICAgICBjb25zdCBkZWZhdWx0U2VjdGlvbiA9IGNyZWF0ZURlZmF1bHRTZWN0aW9uKCk7XG4gICAgICAgIGRlZmF1bHRTZWN0aW9uLm9yZGVyID0gMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlY3Rpb25zOiBbZGVmYXVsdFNlY3Rpb25dLFxuICAgICAgICAgICAgZGlzcGxheVNldHRpbmdzOiB2YWx1ZT8uZGlzcGxheVNldHRpbmdzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzdHJ1Y3R1cmUgKHNlY3Rpb25zIHdpdGggbmVzdGVkIGl0ZW1zKVxuICAgIHJldHVybiB7XG4gICAgICAgIHNlY3Rpb25zOiB2YWx1ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIHNlY3Rpb25JbmRleCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBzZWN0aW9uLmlkIHx8IGBzZWN0aW9uLSR7c2VjdGlvbkluZGV4fWAsXG4gICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIgPz8gc2VjdGlvbkluZGV4LFxuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogc2VjdGlvbi52aXNpYmlsaXR5Q29uZGl0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IChzZWN0aW9uLml0ZW1zIHx8IFtdKS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCB8fCBgaXRlbS0ke2l0ZW1JbmRleH1gLFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQsXG4gICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIgPz8gaXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGl0ZW0uaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IGl0ZW0ucmVxdWlyZWRDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlOiBpdGVtLnNjb3JpbmdPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpc05ld2x5QWRkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaXNOZXdseUFkZGVkOiBmYWxzZSxcbiAgICAgICAgfSkpLFxuICAgICAgICBkaXNwbGF5U2V0dGluZ3M6IHZhbHVlLmRpc3BsYXlTZXR0aW5ncyxcbiAgICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYnVpbGRlciBzdGF0ZSB0byB2YWx1ZSBmb3IgcGVyc2lzdGVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUsIGV4aXN0aW5nVmFsdWU/OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB7XG4gICAgY29uc3QgcmVzdWx0OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlID0ge1xuICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAvLyBEcm9wIHNlY3Rpb25zIHRoYXQgYXJlIE5PVCBuZXdseSBhZGRlZCBBTkQgaGF2ZSBubyBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIEtlZXAgc2VjdGlvbnMgdGhhdCBhcmUgbmV3bHkgYWRkZWQgT1IgaGF2ZSBpdGVtc1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmV3bHlBZGRlZCA9IHNlY3Rpb24uaXNOZXdseUFkZGVkID09PSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0l0ZW1zID0gc2VjdGlvbi5pdGVtcy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTmV3bHlBZGRlZCB8fCBoYXNJdGVtcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHNlY3Rpb24udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbkJhbmtJdGVtSWQ6IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBpdGVtLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogaXRlbS5yZXF1aXJlZENvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZTogaXRlbS5zY29yaW5nT3ZlcnJpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gUHJlc2VydmUgZGlzcGxheVNldHRpbmdzIGZyb20gc3RhdGUgZmlyc3QsIHRoZW4gZnJvbSBleGlzdGluZyB2YWx1ZSBpZiBzdGF0ZSBkb2Vzbid0IGhhdmUgaXRcbiAgICBpZiAoc3RhdGUuZGlzcGxheVNldHRpbmdzKSB7XG4gICAgICAgIHJlc3VsdC5kaXNwbGF5U2V0dGluZ3MgPSBzdGF0ZS5kaXNwbGF5U2V0dGluZ3M7XG4gICAgfSBlbHNlIGlmIChleGlzdGluZ1ZhbHVlPy5kaXNwbGF5U2V0dGluZ3MpIHtcbiAgICAgICAgcmVzdWx0LmRpc3BsYXlTZXR0aW5ncyA9IGV4aXN0aW5nVmFsdWUuZGlzcGxheVNldHRpbmdzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVmYXVsdCBzZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0U2VjdGlvbigpOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBgc2VjdGlvbi0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgdGl0bGU6ICdOZXcgU2VjdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgaXNOZXdseUFkZGVkOiB0cnVlLFxuICAgIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CdkDrag, CdkDragHandle, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPDataSelectorService } from '@acorex/platform/layout/components';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../const';\nimport { AXMQuestionBankItemService } from '../../entities/question-bank-item/question-bank-item.service';\nimport { convertStateToValue, convertValueToState, createDefaultSection, } from './questionnaire-builder.types';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport { AXFullScreenDirective } from '@acorex/cdk/full-screen';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer/questionnaire-viewer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable Questionnaire Builder Component\n * Can be used both in dialog and inline contexts\n */\nexport class AXMQuestionnaireBuilderComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.dataSelectorService = inject(AXPDataSelectorService);\n this.questionBankService = inject(AXMQuestionBankItemService);\n this.entityResolver = inject(AXPEntityDefinitionRegistryService);\n this.dialogService = inject(AXDialogService);\n this.translationService = inject(AXTranslationService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n //#endregion\n //#region ---- Inputs & Outputs ----\n /**\n * Initial value (QuestionnaireBuilderValue)\n */\n this.value = input(null, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n /**\n * Readonly mode\n */\n this.readonly = input(false, ...(ngDevMode ? [{ debugName: \"readonly\" }] : []));\n /**\n * Pre/post config for preview (welcome, review, summary).\n * When provided, passed to the preview dialog.\n */\n this.prePostConfig = input(null, ...(ngDevMode ? [{ debugName: \"prePostConfig\" }] : []));\n /**\n * Value change event\n */\n this.valueChange = output();\n //#endregion\n //#region ---- Class Properties ----\n // Designer state management - always start with at least one default section\n this.builderState = signal({\n sections: [createDefaultSection()],\n }, ...(ngDevMode ? [{ debugName: \"builderState\" }] : []));\n // Selected item tracking\n this.selectedItemId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedItemId\" }] : []));\n this.selectedSectionId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedSectionId\" }] : []));\n // Track if we're making internal updates to prevent effect loops\n this.isInternalUpdate = false;\n // Fullscreen directive reference\n this.fullscreenDirective = viewChild('fullscreen', ...(ngDevMode ? [{ debugName: \"fullscreenDirective\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Get all sections for rendering\n */\n this.sections = computed(() => this.builderState().sections, ...(ngDevMode ? [{ debugName: \"sections\" }] : []));\n /**\n * Check if can remove section (must have at least 1 section)\n */\n this.canRemoveSection = computed(() => this.sections().length > 1, ...(ngDevMode ? [{ debugName: \"canRemoveSection\" }] : []));\n /**\n * Get current display settings from state or default\n */\n this.displaySettings = computed(() => {\n const state = this.builderState();\n if (state.displaySettings) {\n return state.displaySettings;\n }\n // Fallback to value if state doesn't have it\n const currentValue = convertStateToValue(state, this.value() || undefined);\n return currentValue.displaySettings || {\n viewMode: 'single-page',\n showProgressBar: true,\n showTimer: false,\n showSectionTitles: true,\n showQuestionNumbers: true,\n };\n }, ...(ngDevMode ? [{ debugName: \"displaySettings\" }] : []));\n // Track last emitted value to prevent circular updates\n let lastEmittedValue = null;\n // Sync value input to state (only when value changes externally)\n effect(() => {\n const val = this.value();\n if (val !== null && val !== undefined && !this.isInternalUpdate) {\n const currentState = untracked(() => this.builderState());\n const currentValue = convertStateToValue(currentState);\n // Only update if the value actually changed and it's different from what we last emitted\n const valStr = JSON.stringify(val);\n const currentStr = JSON.stringify(currentValue);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n // Update only if:\n // 1. The incoming value is different from current state value\n // 2. AND it's not the value we just emitted (prevent circular updates)\n if (valStr !== currentStr && valStr !== lastEmittedStr) {\n const newState = convertValueToState(val);\n untracked(() => {\n this.builderState.set(newState);\n // Load question details for all items\n this.loadQuestionDetailsForState(newState);\n });\n }\n }\n else if ((val === null || val === undefined) && !this.isInternalUpdate) {\n // If value is null/undefined, ensure we have at least one default section\n const currentState = untracked(() => this.builderState());\n if (currentState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n untracked(() => {\n this.builderState.set({ sections: [defaultSection] });\n });\n }\n }\n });\n // Sync state changes to output\n effect(() => {\n const state = this.builderState();\n const currentValue = this.value();\n const value = convertStateToValue(state, currentValue || undefined);\n // Prevent circular updates\n if (!this.isInternalUpdate) {\n untracked(() => {\n lastEmittedValue = value;\n this.valueChange.emit(value);\n });\n }\n });\n }\n /**\n * Load question details for all items in the state\n */\n async loadQuestionDetailsForState(state) {\n const questionIds = new Set();\n // Collect all question bank item IDs\n state.sections.forEach((section) => {\n section.items.forEach((item) => {\n if (item.questionBankItemId && !item.question) {\n questionIds.add(item.questionBankItemId);\n }\n });\n });\n if (questionIds.size === 0)\n return;\n // Load all questions in parallel\n const questionPromises = Array.from(questionIds).map((id) => this.questionBankService.getOne(id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n // Create a map of question ID to question data\n const questionMap = new Map();\n questions.forEach((q) => {\n if (q) {\n questionMap.set(q.id, q);\n }\n });\n // Update state with question details\n this.builderState.update((currentState) => ({\n ...currentState,\n sections: currentState.sections.map((section) => ({\n ...section,\n items: section.items.map((item) => {\n if (item.question)\n return item; // Already has question data\n const questionData = questionMap.get(item.questionBankItemId);\n if (questionData) {\n return {\n ...item,\n question: {\n id: questionData.id,\n title: questionData.title,\n description: questionData.description,\n difficulty: questionData.difficulty,\n scoringType: questionData.scoringType,\n },\n };\n }\n return item;\n }),\n })),\n }));\n }\n //#endregion\n //#region ---- Section Management ----\n /**\n * Helper method to update state while preventing effect loops\n * Ensures at least one section always exists\n */\n updateState(updater) {\n this.isInternalUpdate = true;\n try {\n this.builderState.update((state) => {\n const updatedState = updater(state);\n // Safety check: ensure at least one section always exists\n if (updatedState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n ...updatedState,\n sections: [defaultSection],\n };\n }\n return updatedState;\n });\n }\n finally {\n // Reset flag after current execution context\n Promise.resolve().then(() => {\n this.isInternalUpdate = false;\n });\n }\n }\n /**\n * Handle adding a new section\n */\n async handleAddSection() {\n try {\n const addTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title') || 'Add Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(addTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: '',\n description: '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n const newSection = createDefaultSection();\n newSection.order = this.sections().length;\n newSection.title = formData.title || 'New Section';\n newSection.description = formData.description || undefined;\n this.updateState((state) => ({\n ...state,\n sections: [...state.sections, newSection],\n }));\n // Scroll to the newly added section after DOM update\n setTimeout(() => {\n const sectionElement = document.getElementById(`section-${newSection.id}`);\n if (sectionElement) {\n sectionElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }, 100);\n }\n }\n catch (error) {\n console.error('Error adding section:', error);\n }\n }\n /**\n * Handle section editing\n */\n async handleSectionEdit(section) {\n try {\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-section.title') || 'Edit Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: section.title || '',\n description: section.description || '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n title: formData.title || s.title,\n description: formData.description !== undefined ? formData.description : s.description,\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error editing section:', error);\n }\n }\n /**\n * Handle section removal\n */\n handleSectionRemove(section) {\n // Don't allow removing the last section - must always have at least one\n if (this.sections().length <= 1) {\n return;\n }\n // Remove the section and update order values\n this.updateState((state) => ({\n ...state,\n sections: state.sections\n .filter((s) => s.id !== section.id)\n .map((s, index) => ({\n ...s,\n order: index,\n })),\n }));\n }\n /**\n * Handle section drop (reordering)\n */\n handleSectionDrop(event) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n // Update order values\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section, index) => ({\n ...section,\n order: index,\n })),\n }));\n }\n }\n //#endregion\n //#region ---- Item Management ----\n /**\n * Handle adding questions to a section\n */\n async handleAddQuestionsToSection(section) {\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const questions = await this.questionBankService.query(e);\n return {\n items: questions.items,\n total: questions.total,\n };\n },\n });\n // Create category tree data source for filtering\n const categoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n const entity = await this.entityResolver.resolve(RootConfig.module.name, RootConfig.entities.questionBankItem.name);\n if (!entity) {\n throw new Error('Entity not found: ' + RootConfig.entities.questionBankItem.name);\n }\n const columns = entity.columns\n ?.filter((column) => entity.properties.some((property) => property.name === column.name))\n .map((column) => {\n const property = entity.properties.find((prop) => prop.name === column.name);\n return {\n name: column.name,\n title: property?.title ?? '',\n visible: column.options?.visible !== false,\n widget: {\n type: column.showAs?.type ?? property?.schema?.interface?.type ?? 'text-editor',\n options: column.showAs?.options ?? property?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n // Translate titles\n const selectQuestionsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.select-questions') || 'Select Questions from Question Bank';\n const categoriesTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.categories') || 'Categories';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n // Open data selector with category filter\n const result = await this.dataSelectorService.openWithCategoryFilter({\n title: selectQuestionsTitle,\n dataSource: dataSource,\n columns: columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: titleLabel },\n { name: 'description', title: descriptionLabel },\n ],\n allowCreate: false,\n }, {\n title: categoriesTitle,\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n });\n // Add selected questions to the section\n if (result?.items && result.items.length > 0) {\n // Load full question details for each selected item\n const questionPromises = result.items.map((item) => this.questionBankService.getOne(item.id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n const newItems = result.items.map((item, index) => {\n const fullQuestion = questions[index];\n return {\n id: AXPDataGenerator.uuid(),\n questionBankItemId: item.id,\n order: section.items.length + index,\n isRequired: false,\n visibilityCondition: undefined,\n requiredCondition: undefined,\n scoringOverride: undefined,\n isNewlyAdded: true,\n question: fullQuestion\n ? {\n id: fullQuestion.id,\n title: fullQuestion.title,\n description: fullQuestion.description,\n difficulty: fullQuestion.difficulty,\n scoringType: fullQuestion.scoringType,\n }\n : {\n id: item.id,\n title: item.title || 'Question',\n description: item.description,\n difficulty: item.difficulty,\n scoringType: item.scoringType,\n },\n };\n });\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n items: [...s.items, ...newItems],\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error loading questions:', error);\n }\n }\n /**\n * Handle item removal\n */\n handleItemRemove(item, sectionId) {\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n // Hard delete - remove item from array\n return {\n ...section,\n items: section.items.filter((i) => i.id !== item.id).map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n /**\n * Handle question item editing (settings)\n */\n async handleItemEdit(item, sectionId) {\n try {\n // Load full question details to get default scoring values\n const questionDetails = item.questionBankItemId\n ? await this.questionBankService.getOne(item.questionBankItemId).catch(() => null)\n : null;\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-question.title') || 'Edit Question Settings';\n const isRequiredLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.is-required.title') || 'Required';\n const visibilityConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.visibility-condition.title') || 'Visibility Condition';\n const requiredConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.required-condition.title') || 'Required Condition';\n const scoringPointsLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-points.title') || 'Scoring Points';\n const scoringWeightLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-weight.title') || 'Scoring Weight';\n // Get default values from question bank item or use existing override values\n const defaultScoringPoints = item.scoringOverride?.points ?? questionDetails?.points ?? '';\n const defaultScoringWeight = item.scoringOverride?.weight ?? questionDetails?.weight ?? '';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n isRequired: item.isRequired ?? false,\n visibilityCondition: item.visibilityCondition || '',\n requiredCondition: item.requiredCondition || '',\n scoringPoints: defaultScoringPoints,\n scoringWeight: defaultScoringWeight,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(isRequiredLabel, (field) => {\n field.path('isRequired');\n field.toggleSwitch();\n })\n .formField(visibilityConditionLabel, (field) => {\n field.path('visibilityCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(requiredConditionLabel, (field) => {\n field.path('requiredCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(scoringPointsLabel, (field) => {\n field.path('scoringPoints');\n field.numberBox({\n placeholder: 'Enter scoring points (optional)',\n });\n })\n .formField(scoringWeightLabel, (field) => {\n field.path('scoringWeight');\n field.numberBox({\n placeholder: 'Enter scoring weight (optional)',\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n return {\n ...section,\n items: section.items.map((i) => {\n if (i.id !== item.id)\n return i;\n // Build scoring override if points or weight are provided\n let scoringOverride = undefined;\n const hasPoints = formData.scoringPoints !== undefined && formData.scoringPoints !== null && formData.scoringPoints !== '';\n const hasWeight = formData.scoringWeight !== undefined && formData.scoringWeight !== null && formData.scoringWeight !== '';\n if (hasPoints || hasWeight) {\n scoringOverride = {};\n if (hasPoints) {\n scoringOverride.points = Number(formData.scoringPoints);\n }\n if (hasWeight) {\n scoringOverride.weight = Number(formData.scoringWeight);\n }\n }\n return {\n ...i,\n isRequired: formData.isRequired ?? false,\n visibilityCondition: formData.visibilityCondition || undefined,\n requiredCondition: formData.requiredCondition || undefined,\n scoringOverride: scoringOverride,\n };\n }),\n };\n }),\n }));\n }\n }\n catch (error) {\n console.error('Error editing question:', error);\n }\n }\n /**\n * Handle item drop (reordering within section or between sections)\n */\n handleItemDrop(event, targetSectionId) {\n if (event.previousContainer === event.container) {\n // Reordering within same section\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== targetSectionId)\n return section;\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n else {\n // Moving item between sections\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n // Update orders for both sections\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id === targetSectionId || section.id === event.previousContainer.id) {\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }\n return section;\n }),\n }));\n }\n }\n /**\n * Get all section drop lists for drag-drop connectivity\n */\n getAllSectionDropLists() {\n return this.sections().map((section) => `section-${section.id}-items`);\n }\n //#endregion\n //#region ---- Display Settings ----\n /**\n * Handle opening display settings dialog\n */\n async handleSettings() {\n try {\n const settingsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title') || 'Display Settings';\n const viewModeLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.title') || 'View Mode';\n const showProgressBarLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-progress-bar.title') || 'Show Progress Bar';\n const showTimerLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-timer.title') || 'Show Timer';\n const showSectionTitlesLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-section-titles.title') || 'Show Section Titles';\n const showQuestionNumbersLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-question-numbers.title') || 'Show Question Numbers';\n const validateBeforeNavigationLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.validate-before-navigation.title') || 'Validate Before Navigation';\n const currentSettings = this.displaySettings();\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(settingsTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n viewMode: currentSettings.viewMode || 'single-page',\n showProgressBar: currentSettings.showProgressBar ?? true,\n showTimer: currentSettings.showTimer ?? false,\n showSectionTitles: currentSettings.showSectionTitles ?? true,\n showQuestionNumbers: currentSettings.showQuestionNumbers ?? true,\n validateBeforeNavigation: currentSettings.validateBeforeNavigation ?? true,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(viewModeLabel, (field) => {\n field.path('viewMode');\n field.selectBox({\n valueField: 'id',\n textField: 'title',\n dataSource: [\n { id: 'single-page', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.single-page' },\n { id: 'page-per-group', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-group' },\n { id: 'page-per-question', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-question' },\n { id: 'side-menu', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.side-menu' },\n ],\n });\n })\n .formField(showProgressBarLabel, (field) => {\n field.path('showProgressBar');\n field.toggleSwitch();\n })\n .formField(showTimerLabel, (field) => {\n field.path('showTimer');\n field.toggleSwitch();\n })\n .formField(showSectionTitlesLabel, (field) => {\n field.path('showSectionTitles');\n field.toggleSwitch();\n })\n .formField(showQuestionNumbersLabel, (field) => {\n field.path('showQuestionNumbers');\n field.toggleSwitch();\n })\n .formField(validateBeforeNavigationLabel, (field) => {\n field.path('validateBeforeNavigation');\n field.toggleSwitch();\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n // Extract viewMode - handle both string and object (from select box)\n let viewMode = 'single-page';\n const viewModeValue = formData.viewMode;\n if (typeof viewModeValue === 'string') {\n viewMode = viewModeValue;\n }\n else if (viewModeValue && typeof viewModeValue === 'object' && 'id' in viewModeValue) {\n viewMode = viewModeValue.id;\n }\n const newSettings = {\n viewMode: viewMode,\n showProgressBar: formData.showProgressBar ?? true,\n showTimer: formData.showTimer ?? false,\n showSectionTitles: formData.showSectionTitles ?? true,\n showQuestionNumbers: formData.showQuestionNumbers ?? true,\n validateBeforeNavigation: formData.validateBeforeNavigation ?? true,\n };\n // Update state by preserving existing question data and updating displaySettings in state\n this.updateState((state) => {\n // Update displaySettings in state directly\n const updatedState = {\n ...state,\n displaySettings: newSettings,\n };\n return updatedState;\n });\n }\n }\n catch (error) {\n console.error('Error opening settings:', error);\n }\n }\n //#endregion\n //#region ---- Preview ----\n /**\n * Open preview dialog with questionnaire viewer\n */\n async handlePreview() {\n if (this.sections().length === 0) {\n return;\n }\n try {\n const currentValue = convertStateToValue(this.builderState(), this.value() || undefined);\n // Always use the current displaySettings from the computed property to ensure preview uses latest settings\n currentValue.displaySettings = this.displaySettings();\n const previewTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title') || 'Preview';\n const result = await this.questionnaireViewerService.open({\n title: previewTitle,\n structure: currentValue,\n prePostConfig: this.prePostConfig() ?? undefined,\n size: 'lg',\n });\n // Handle result if needed (answers, submitted status)\n if (result) {\n console.log('Questionnaire preview result:', result);\n }\n }\n catch (error) {\n console.error('Error opening preview:', error);\n }\n }\n /**\n * Toggle fullscreen mode using the directive\n */\n async handleFullscreen() {\n const fullscreen = this.fullscreenDirective();\n if (fullscreen) {\n await fullscreen.toggle();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireBuilderComponent, isStandalone: true, selector: \"axm-questionnaire-builder\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null }, prePostConfig: { classPropertyName: \"prePostConfig\", publicName: \"prePostConfig\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"fullscreenDirective\", first: true, predicate: [\"fullscreen\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>: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))}.axm-questionnaire-builder .__preview-container .__preview-sections>: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))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;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));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.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: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.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: AXDropdownModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"directive\", type: \n // CDK DragDrop modules\n CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"directive\", type: \n // Fullscreen directive\n AXFullScreenDirective, selector: \"[axFullscreen]\", outputs: [\"fullscreenChange\"], exportAs: [\"axFullscreen\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-builder', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSwitchModule,\n AXLabelModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n // CDK DragDrop modules\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n // Fullscreen directive\n AXFullScreenDirective,\n ], template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>: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))}.axm-questionnaire-builder .__preview-container .__preview-sections>: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))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;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));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: \"value\", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: \"readonly\", required: false }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: \"prePostConfig\", required: false }] }], valueChange: [{ type: i0.Output, args: [\"valueChange\"] }], fullscreenDirective: [{ type: i0.ViewChild, args: ['fullscreen', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBZSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUs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Q29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhTd2l0Y2hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc3dpdGNoJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0hhbmRsZSwgQ2RrRHJvcExpc3QsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eVByb3BlcnR5LCBBWFBFbnRpdHlUYWJsZUNvbHVtbiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUENhdGVnb3J5VHJlZURhdGFTb3VyY2UsIEFYUERhdGFTZWxlY3RvclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9xdWVzdGlvbi1iYW5rLWl0ZW0vcXVlc3Rpb24tYmFuay1pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW0sXG4gICAgUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uLFxuICAgIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUsXG4gICAgUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSxcbiAgICBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzLFxuICAgIGNvbnZlcnRTdGF0ZVRvVmFsdWUsXG4gICAgY29udmVydFZhbHVlVG9TdGF0ZSxcbiAgICBjcmVhdGVEZWZhdWx0U2VjdGlvbixcbn0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMnO1xuaW1wb3J0IHsgQVhQRGF0YUdlbmVyYXRvciB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWEZ1bGxTY3JlZW5EaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2Nkay9mdWxsLXNjcmVlbic7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlVmlld2VyU2VydmljZSB9IGZyb20gJy4uL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBQcmVQb3N0Q29uZmlnIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnR5cGVzJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFJldXNhYmxlIFF1ZXN0aW9ubmFpcmUgQnVpbGRlciBDb21wb25lbnRcbiAqIENhbiBiZSB1c2VkIGJvdGggaW4gZGlhbG9nIGFuZCBpbmxpbmUgY29udGV4dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS1idWlsZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQVhGb3JtTW9kdWxlLFxuICAgICAgICBBWFN3aXRjaE1vZHVsZSxcbiAgICAgICAgQVhMYWJlbE1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICAvLyBDREsgRHJhZ0Ryb3AgbW9kdWxlc1xuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICAgICAgLy8gRnVsbHNjcmVlbiBkaXJlY3RpdmVcbiAgICAgICAgQVhGdWxsU2NyZWVuRGlyZWN0aXZlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyQ29tcG9uZW50IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGRhdGFTZWxlY3RvclNlcnZpY2UgPSBpbmplY3QoQVhQRGF0YVNlbGVjdG9yU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHF1ZXN0aW9uQmFua1NlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBlbnRpdHlSZXNvbHZlciA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBsYXlvdXRCdWlsZGVyID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAmIE91dHB1dHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHZhbHVlIChRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKVxuICAgICAqL1xuICAgIHZhbHVlID0gaW5wdXQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZG9ubHkgbW9kZVxuICAgICAqL1xuICAgIHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogUHJlL3Bvc3QgY29uZmlnIGZvciBwcmV2aWV3ICh3ZWxjb21lLCByZXZpZXcsIHN1bW1hcnkpLlxuICAgICAqIFdoZW4gcHJvdmlkZWQsIHBhc3NlZCB0byB0aGUgcHJldmlldyBkaWFsb2cuXG4gICAgICovXG4gICAgcHJlUG9zdENvbmZpZyA9IGlucHV0PFByZVBvc3RDb25maWcgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIGNoYW5nZSBldmVudFxuICAgICAqL1xuICAgIHZhbHVlQ2hhbmdlID0gb3V0cHV0PFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWU+KCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2xhc3MgUHJvcGVydGllcyAgIC0tLS1cblxuICAgIC8vIERlc2lnbmVyIHN0YXRlIG1hbmFnZW1lbnQgLSBhbHdheXMgc3RhcnQgd2l0aCBhdCBsZWFzdCBvbmUgZGVmYXVsdCBzZWN0aW9uXG4gICAgcHJvdGVjdGVkIGJ1aWxkZXJTdGF0ZSA9IHNpZ25hbDxRdWVzdGlvbm5haXJlQnVpbGRlclN0YXRlPih7XG4gICAgICAgIHNlY3Rpb25zOiBbY3JlYXRlRGVmYXVsdFNlY3Rpb24oKV0sXG4gICAgfSk7XG5cbiAgICAvLyBTZWxlY3RlZCBpdGVtIHRyYWNraW5nXG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbUlkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZFNlY3Rpb25JZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIC8vIFRyYWNrIGlmIHdlJ3JlIG1ha2luZyBpbnRlcm5hbCB1cGRhdGVzIHRvIHByZXZlbnQgZWZmZWN0IGxvb3BzXG4gICAgcHJpdmF0ZSBpc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG5cbiAgICAvLyBGdWxsc2NyZWVuIGRpcmVjdGl2ZSByZWZlcmVuY2VcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnVsbHNjcmVlbkRpcmVjdGl2ZSA9IHZpZXdDaGlsZDxBWEZ1bGxTY3JlZW5EaXJlY3RpdmU+KCdmdWxsc2NyZWVuJyk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTGlmZWN5Y2xlICAgLS0tLVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIFRyYWNrIGxhc3QgZW1pdHRlZCB2YWx1ZSB0byBwcmV2ZW50IGNpcmN1bGFyIHVwZGF0ZXNcbiAgICAgICAgbGV0IGxhc3RFbWl0dGVkVmFsdWU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsID0gbnVsbDtcblxuICAgICAgICAvLyBTeW5jIHZhbHVlIGlucHV0IHRvIHN0YXRlIChvbmx5IHdoZW4gdmFsdWUgY2hhbmdlcyBleHRlcm5hbGx5KVxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5pc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gdW50cmFja2VkKCgpID0+IHRoaXMuYnVpbGRlclN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUoY3VycmVudFN0YXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIE9ubHkgdXBkYXRlIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkIGFuZCBpdCdzIGRpZmZlcmVudCBmcm9tIHdoYXQgd2UgbGFzdCBlbWl0dGVkXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsU3RyID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RyID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RW1pdHRlZFN0ciA9IGxhc3RFbWl0dGVkVmFsdWUgPyBKU09OLnN0cmluZ2lmeShsYXN0RW1pdHRlZFZhbHVlKSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgb25seSBpZjpcbiAgICAgICAgICAgICAgICAvLyAxLiBUaGUgaW5jb21pbmcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gY3VycmVudCBzdGF0ZSB2YWx1ZVxuICAgICAgICAgICAgICAgIC8vIDIuIEFORCBpdCdzIG5vdCB0aGUgdmFsdWUgd2UganVzdCBlbWl0dGVkIChwcmV2ZW50IGNpcmN1bGFyIHVwZGF0ZXMpXG4gICAgICAgICAgICAgICAgaWYgKHZhbFN0ciAhPT0gY3VycmVudFN0ciAmJiB2YWxTdHIgIT09IGxhc3RFbWl0dGVkU3RyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gY29udmVydFZhbHVlVG9TdGF0ZSh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUuc2V0KG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIExvYWQgcXVlc3Rpb24gZGV0YWlscyBmb3IgYWxsIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRRdWVzdGlvbkRldGFpbHNGb3JTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgJiYgIXRoaXMuaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIG51bGwvdW5kZWZpbmVkLCBlbnN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgZGVmYXVsdCBzZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gdW50cmFja2VkKCgpID0+IHRoaXMuYnVpbGRlclN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTZWN0aW9uID0gY3JlYXRlRGVmYXVsdFNlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNlY3Rpb24ub3JkZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUuc2V0KHsgc2VjdGlvbnM6IFtkZWZhdWx0U2VjdGlvbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3luYyBzdGF0ZSBjaGFuZ2VzIHRvIG91dHB1dFxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmJ1aWxkZXJTdGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0U3RhdGVUb1ZhbHVlKHN0YXRlLCBjdXJyZW50VmFsdWUgfHwgdW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgLy8gUHJldmVudCBjaXJjdWxhciB1cGRhdGVzXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RFbWl0dGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCBxdWVzdGlvbiBkZXRhaWxzIGZvciBhbGwgaXRlbXMgaW4gdGhlIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkUXVlc3Rpb25EZXRhaWxzRm9yU3RhdGUoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25JZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAvLyBDb2xsZWN0IGFsbCBxdWVzdGlvbiBiYW5rIGl0ZW0gSURzXG4gICAgICAgIHN0YXRlLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHNlY3Rpb24uaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCAmJiAhaXRlbS5xdWVzdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkcy5hZGQoaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVlc3Rpb25JZHMuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIHF1ZXN0aW9ucyBpbiBwYXJhbGxlbFxuICAgICAgICBjb25zdCBxdWVzdGlvblByb21pc2VzID0gQXJyYXkuZnJvbShxdWVzdGlvbklkcykubWFwKChpZCkgPT5cbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rU2VydmljZS5nZXRPbmUoaWQpLmNhdGNoKCgpID0+IG51bGwpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChxdWVzdGlvblByb21pc2VzKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBtYXAgb2YgcXVlc3Rpb24gSUQgdG8gcXVlc3Rpb24gZGF0YVxuICAgICAgICBjb25zdCBxdWVzdGlvbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgICAgIHF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9uTWFwLnNldChxLmlkLCBxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHN0YXRlIHdpdGggcXVlc3Rpb24gZGV0YWlsc1xuICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKGN1cnJlbnRTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBjdXJyZW50U3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnF1ZXN0aW9uKSByZXR1cm4gaXRlbTsgLy8gQWxyZWFkeSBoYXMgcXVlc3Rpb24gZGF0YVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRGF0YSA9IHF1ZXN0aW9uTWFwLmdldChpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcXVlc3Rpb25EYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcXVlc3Rpb25EYXRhLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcXVlc3Rpb25EYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiBxdWVzdGlvbkRhdGEuZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IHF1ZXN0aW9uRGF0YS5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgc2VjdGlvbnMgZm9yIHJlbmRlcmluZ1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYnVpbGRlclN0YXRlKCkuc2VjdGlvbnMpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgY2FuIHJlbW92ZSBzZWN0aW9uIChtdXN0IGhhdmUgYXQgbGVhc3QgMSBzZWN0aW9uKVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjYW5SZW1vdmVTZWN0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWN0aW9ucygpLmxlbmd0aCA+IDEpO1xuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgZGlzcGxheSBzZXR0aW5ncyBmcm9tIHN0YXRlIG9yIGRlZmF1bHRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGlzcGxheVNldHRpbmdzID0gY29tcHV0ZWQ8UXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncz4oKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuYnVpbGRlclN0YXRlKCk7XG4gICAgICAgIGlmIChzdGF0ZS5kaXNwbGF5U2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5kaXNwbGF5U2V0dGluZ3M7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmFsbGJhY2sgdG8gdmFsdWUgaWYgc3RhdGUgZG9lc24ndCBoYXZlIGl0XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGUsIHRoaXMudmFsdWUoKSB8fCB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlLmRpc3BsYXlTZXR0aW5ncyB8fCB7XG4gICAgICAgICAgICB2aWV3TW9kZTogJ3NpbmdsZS1wYWdlJyBhcyBjb25zdCxcbiAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAgICAgICAgIHNob3dUaW1lcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93U2VjdGlvblRpdGxlczogdHJ1ZSxcbiAgICAgICAgICAgIHNob3dRdWVzdGlvbk51bWJlcnM6IHRydWUsXG4gICAgICAgIH07XG4gICAgfSk7XG5cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBTZWN0aW9uIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgbWV0aG9kIHRvIHVwZGF0ZSBzdGF0ZSB3aGlsZSBwcmV2ZW50aW5nIGVmZmVjdCBsb29wc1xuICAgICAqIEVuc3VyZXMgYXQgbGVhc3Qgb25lIHNlY3Rpb24gYWx3YXlzIGV4aXN0c1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlU3RhdGUodXBkYXRlcjogKHN0YXRlOiBRdWVzdGlvbm5haXJlQnVpbGRlclN0YXRlKSA9PiBRdWVzdGlvbm5haXJlQnVpbGRlclN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNJbnRlcm5hbFVwZGF0ZSA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFN0YXRlID0gdXBkYXRlcihzdGF0ZSk7XG4gICAgICAgICAgICAgICAgLy8gU2FmZXR5IGNoZWNrOiBlbnN1cmUgYXQgbGVhc3Qgb25lIHNlY3Rpb24gYWx3YXlzIGV4aXN0c1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkU3RhdGUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTZWN0aW9uID0gY3JlYXRlRGVmYXVsdFNlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNlY3Rpb24ub3JkZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udXBkYXRlZFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IFtkZWZhdWx0U2VjdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkU3RhdGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIFJlc2V0IGZsYWcgYWZ0ZXIgY3VycmVudCBleGVjdXRpb24gY29udGV4dFxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBhZGRpbmcgYSBuZXcgc2VjdGlvblxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUFkZFNlY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBhZGRUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuYWRkLXNlY3Rpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdBZGQgU2VjdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGdlbmVyYWw6dGVybXMuY29tbW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVGl0bGUnO1xuXG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgICkgfHwgJ0Rlc2NyaXB0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKGFkZFRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNpemUoJ21kJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDbG9zZUJ1dHRvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh0aXRsZUxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gdGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKGRlc2NyaXB0aW9uTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2Rlc2NyaXB0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubGFyZ2VUZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzZWN0aW9uIGRlc2NyaXB0aW9uIChvcHRpb25hbCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldEFjdGlvbnMoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYW5jZWwoJ0BnZW5lcmFsOmFjdGlvbnMuY2FuY2VsLnRpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1Ym1pdCgnQGdlbmVyYWw6YWN0aW9ucy5zYXZlLnRpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gZGlhbG9nUmVmLmNvbnRleHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGF3YWl0IGRpYWxvZ1JlZi5hY3Rpb24oKTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uICE9PSAnY2FuY2VsJyAmJiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlY3Rpb24gPSBjcmVhdGVEZWZhdWx0U2VjdGlvbigpO1xuICAgICAgICAgICAgICAgIG5ld1NlY3Rpb24ub3JkZXIgPSB0aGlzLnNlY3Rpb25zKCkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIG5ld1NlY3Rpb24udGl0bGUgPSBmb3JtRGF0YS50aXRsZSB8fCAnTmV3IFNlY3Rpb24nO1xuICAgICAgICAgICAgICAgIG5ld1NlY3Rpb24uZGVzY3JpcHRpb24gPSBmb3JtRGF0YS5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBbLi4uc3RhdGUuc2VjdGlvbnMsIG5ld1NlY3Rpb25dLFxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCB0byB0aGUgbmV3bHkgYWRkZWQgc2VjdGlvbiBhZnRlciBET00gdXBkYXRlXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHNlY3Rpb24tJHtuZXdTZWN0aW9uLmlkfWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWRkaW5nIHNlY3Rpb246JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHNlY3Rpb24gZWRpdGluZ1xuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZVNlY3Rpb25FZGl0KHNlY3Rpb246IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZWRpdFRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5lZGl0LXNlY3Rpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdFZGl0IFNlY3Rpb24nO1xuXG4gICAgICAgICAgICBjb25zdCB0aXRsZUxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1RpdGxlJztcblxuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb25MYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24uZGVzY3JpcHRpb24nXG4gICAgICAgICAgICApIHx8ICdEZXNjcmlwdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IGF3YWl0IHRoaXMubGF5b3V0QnVpbGRlclxuICAgICAgICAgICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAgICAgICAgIC5kaWFsb2coKGRpYWxvZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShlZGl0VGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0U2l6ZSgnbWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNlY3Rpb24udGl0bGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHNlY3Rpb24uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh0aXRsZUxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gdGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKGRlc2NyaXB0aW9uTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2Rlc2NyaXB0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubGFyZ2VUZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzZWN0aW9uIGRlc2NyaXB0aW9uIChvcHRpb25hbCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldEFjdGlvbnMoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYW5jZWwoJ0BnZW5lcmFsOmFjdGlvbnMuY2FuY2VsLnRpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1Ym1pdCgnQGdlbmVyYWw6YWN0aW9ucy5zYXZlLnRpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gZGlhbG9nUmVmLmNvbnRleHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGF3YWl0IGRpYWxvZ1JlZi5hY3Rpb24oKTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uICE9PSAnY2FuY2VsJyAmJiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgocykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHMuaWQgPT09IHNlY3Rpb24uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvcm1EYXRhLnRpdGxlIHx8IHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkID8gZm9ybURhdGEuZGVzY3JpcHRpb24gOiBzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlZGl0aW5nIHNlY3Rpb246JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHNlY3Rpb24gcmVtb3ZhbFxuICAgICAqL1xuICAgIGhhbmRsZVNlY3Rpb25SZW1vdmUoc2VjdGlvbjogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIC8vIERvbid0IGFsbG93IHJlbW92aW5nIHRoZSBsYXN0IHNlY3Rpb24gLSBtdXN0IGFsd2F5cyBoYXZlIGF0IGxlYXN0IG9uZVxuICAgICAgICBpZiAodGhpcy5zZWN0aW9ucygpLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgdGhlIHNlY3Rpb24gYW5kIHVwZGF0ZSBvcmRlciB2YWx1ZXNcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+IHMuaWQgIT09IHNlY3Rpb24uaWQpXG4gICAgICAgICAgICAgICAgLm1hcCgocywgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgc2VjdGlvbiBkcm9wIChyZW9yZGVyaW5nKVxuICAgICAqL1xuICAgIGhhbmRsZVNlY3Rpb25Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb25bXT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBvcmRlciB2YWx1ZXNcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgSXRlbSBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGFkZGluZyBxdWVzdGlvbnMgdG8gYSBzZWN0aW9uXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlQWRkUXVlc3Rpb25zVG9TZWN0aW9uKHNlY3Rpb246IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IG5ldyBBWERhdGFTb3VyY2Uoe1xuICAgICAgICAgICAgICAgIGtleTogJ2lkJyxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMjAsXG4gICAgICAgICAgICAgICAgbG9hZDogYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25zID0gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLnF1ZXJ5KGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHF1ZXN0aW9ucy5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBxdWVzdGlvbnMudG90YWwsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgY2F0ZWdvcnkgdHJlZSBkYXRhIHNvdXJjZSBmb3IgZmlsdGVyaW5nXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeVRyZWVEYXRhU291cmNlOiBBWFBDYXRlZ29yeVRyZWVEYXRhU291cmNlID0ge1xuICAgICAgICAgICAgICAgIGxvYWRSb290Tm9kZXM6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlOiAxMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdwYXJlbnRJZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2lzRW1wdHknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudDogaXRlbS5jaGlsZHJlbkNvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvYWRDaGlsZE5vZGVzOiBhc3luYyAocGFyZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnQ6IGl0ZW0uY2hpbGRyZW5Db3VudCB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWFyY2hOb2RlczogYXN5bmMgKHNlYXJjaFZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlOiAxMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZWFyY2hWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZWFyY2hWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnQ6IGl0ZW0uY2hpbGRyZW5Db3VudCB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGVudGl0eTogQVhQRW50aXR5IHwgbnVsbCA9IGF3YWl0IHRoaXMuZW50aXR5UmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgICAgICAgICAgICAgIFJvb3RDb25maWcuZW50aXRpZXMucXVlc3Rpb25CYW5rSXRlbS5uYW1lLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgbm90IGZvdW5kOiAnICsgUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLm5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID1cbiAgICAgICAgICAgICAgICBlbnRpdHkuY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoY29sdW1uOiBBWFBFbnRpdHlUYWJsZUNvbHVtbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eSEucHJvcGVydGllcy5zb21lKChwcm9wZXJ0eTogQVhQRW50aXR5UHJvcGVydHkpID0+IHByb3BlcnR5Lm5hbWUgPT09IGNvbHVtbi5uYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2x1bW46IEFYUEVudGl0eVRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGVudGl0eSEucHJvcGVydGllcy5maW5kKChwcm9wOiBBWFBFbnRpdHlQcm9wZXJ0eSkgPT4gcHJvcC5uYW1lID09PSBjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wZXJ0eT8udGl0bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLm9wdGlvbnM/LnZpc2libGUgIT09IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2x1bW4uc2hvd0FzPy50eXBlID8/IHByb3BlcnR5Py5zY2hlbWE/LmludGVyZmFjZT8udHlwZSA/PyAndGV4dC1lZGl0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBjb2x1bW4uc2hvd0FzPy5vcHRpb25zID8/IHByb3BlcnR5Py5zY2hlbWE/LmludGVyZmFjZT8ub3B0aW9ucyA/PyB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgICAgIC8vIFRyYW5zbGF0ZSB0aXRsZXNcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdFF1ZXN0aW9uc1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuc2VsZWN0LXF1ZXN0aW9ucydcbiAgICAgICAgICAgICkgfHwgJ1NlbGVjdCBRdWVzdGlvbnMgZnJvbSBRdWVzdGlvbiBCYW5rJztcblxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuY2F0ZWdvcmllcydcbiAgICAgICAgICAgICkgfHwgJ0NhdGVnb3JpZXMnO1xuXG4gICAgICAgICAgICBjb25zdCB0aXRsZUxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi50aXRsZScpIHx8ICdUaXRsZSc7XG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kZXNjcmlwdGlvbicpIHx8ICdEZXNjcmlwdGlvbic7XG5cbiAgICAgICAgICAgIC8vIE9wZW4gZGF0YSBzZWxlY3RvciB3aXRoIGNhdGVnb3J5IGZpbHRlclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kYXRhU2VsZWN0b3JTZXJ2aWNlLm9wZW5XaXRoQ2F0ZWdvcnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2VsZWN0UXVlc3Rpb25zVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU6ICdtdWx0aXBsZScsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEZpZWxkczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAndGl0bGUnLCB0aXRsZTogdGl0bGVMYWJlbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnZGVzY3JpcHRpb24nLCB0aXRsZTogZGVzY3JpcHRpb25MYWJlbCB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBhbGxvd0NyZWF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yaWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGNhdGVnb3J5VHJlZURhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnY2F0ZWdvcnlJZHMnLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJPcGVyYXRvcjogJ2NvbnRhaW5zJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICczNTBweCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBzZWxlY3RlZCBxdWVzdGlvbnMgdG8gdGhlIHNlY3Rpb25cbiAgICAgICAgICAgIGlmIChyZXN1bHQ/Lml0ZW1zICYmIHJlc3VsdC5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gTG9hZCBmdWxsIHF1ZXN0aW9uIGRldGFpbHMgZm9yIGVhY2ggc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uUHJvbWlzZXMgPSByZXN1bHQuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rU2VydmljZS5nZXRPbmUoaXRlbS5pZCkuY2F0Y2goKCkgPT4gbnVsbCksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChxdWVzdGlvblByb21pc2VzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW1zOiBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW1bXSA9IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmdWxsUXVlc3Rpb24gPSBxdWVzdGlvbnNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24uaXRlbXMubGVuZ3RoICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV3bHlBZGRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiBmdWxsUXVlc3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGZ1bGxRdWVzdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bGxRdWVzdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZ1bGxRdWVzdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0eTogZnVsbFF1ZXN0aW9uLmRpZmZpY3VsdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdUeXBlOiBmdWxsUXVlc3Rpb24uc2NvcmluZ1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgJ1F1ZXN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZpY3VsdHk6IGl0ZW0uZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IGl0ZW0uc2NvcmluZ1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5pZCA9PT0gc2VjdGlvbi5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogWy4uLnMuaXRlbXMsIC4uLm5ld0l0ZW1zXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcXVlc3Rpb25zOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBpdGVtIHJlbW92YWxcbiAgICAgKi9cbiAgICBoYW5kbGVJdGVtUmVtb3ZlKGl0ZW06IFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbSwgc2VjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlkICE9PSBzZWN0aW9uSWQpIHJldHVybiBzZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgLy8gSGFyZCBkZWxldGUgLSByZW1vdmUgaXRlbSBmcm9tIGFycmF5XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMuZmlsdGVyKChpKSA9PiBpLmlkICE9PSBpdGVtLmlkKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBxdWVzdGlvbiBpdGVtIGVkaXRpbmcgKHNldHRpbmdzKVxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUl0ZW1FZGl0KGl0ZW06IFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbSwgc2VjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIExvYWQgZnVsbCBxdWVzdGlvbiBkZXRhaWxzIHRvIGdldCBkZWZhdWx0IHNjb3JpbmcgdmFsdWVzXG4gICAgICAgICAgICBjb25zdCBxdWVzdGlvbkRldGFpbHMgPSBpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZFxuICAgICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldE9uZShpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgIGNvbnN0IGVkaXRUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuZWRpdC1xdWVzdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0VkaXQgUXVlc3Rpb24gU2V0dGluZ3MnO1xuXG4gICAgICAgICAgICBjb25zdCBpc1JlcXVpcmVkTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5maWVsZHMuaXMtcmVxdWlyZWQudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdSZXF1aXJlZCc7XG5cbiAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlDb25kaXRpb25MYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy52aXNpYmlsaXR5LWNvbmRpdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Zpc2liaWxpdHkgQ29uZGl0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRDb25kaXRpb25MYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5yZXF1aXJlZC1jb25kaXRpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdSZXF1aXJlZCBDb25kaXRpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBzY29yaW5nUG9pbnRzTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5maWVsZHMuc2NvcmluZy1wb2ludHMudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdTY29yaW5nIFBvaW50cyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjb3JpbmdXZWlnaHRMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5zY29yaW5nLXdlaWdodC50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Njb3JpbmcgV2VpZ2h0JztcblxuICAgICAgICAgICAgLy8gR2V0IGRlZmF1bHQgdmFsdWVzIGZyb20gcXVlc3Rpb24gYmFuayBpdGVtIG9yIHVzZSBleGlzdGluZyBvdmVycmlkZSB2YWx1ZXNcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTY29yaW5nUG9pbnRzID0gaXRlbS5zY29yaW5nT3ZlcnJpZGU/LnBvaW50cyA/PyBxdWVzdGlvbkRldGFpbHM/LnBvaW50cyA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTY29yaW5nV2VpZ2h0ID0gaXRlbS5zY29yaW5nT3ZlcnJpZGU/LndlaWdodCA/PyBxdWVzdGlvbkRldGFpbHM/LndlaWdodCA/PyAnJztcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKGVkaXRUaXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRTaXplKCdtZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q2xvc2VCdXR0b24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBpdGVtLmlzUmVxdWlyZWQgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogaXRlbS52aXNpYmlsaXR5Q29uZGl0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uOiBpdGVtLnJlcXVpcmVkQ29uZGl0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdQb2ludHM6IGRlZmF1bHRTY29yaW5nUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdXZWlnaHQ6IGRlZmF1bHRTY29yaW5nV2VpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jb250ZW50KChsYXlvdXRCdWlsZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0QnVpbGRlci5mbGV4KChmbGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXREaXJlY3Rpb24oJ2NvbHVtbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0R2FwKCcxNnB4JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoaXNSZXF1aXJlZExhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdpc1JlcXVpcmVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh2aXNpYmlsaXR5Q29uZGl0aW9uTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Zpc2liaWxpdHlDb25kaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5jdXN0b21XaWRnZXQoJ2NvZGUtZWRpdG9yJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnbWluLWgtNDgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQocmVxdWlyZWRDb25kaXRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgncmVxdWlyZWRDb25kaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5jdXN0b21XaWRnZXQoJ2NvZGUtZWRpdG9yJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnbWluLWgtNDgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoc2NvcmluZ1BvaW50c0xhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzY29yaW5nUG9pbnRzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubnVtYmVyQm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzY29yaW5nIHBvaW50cyAob3B0aW9uYWwpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNjb3JpbmdXZWlnaHRMYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnc2NvcmluZ1dlaWdodCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm51bWJlckJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgc2NvcmluZyB3ZWlnaHQgKG9wdGlvbmFsKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5pZCAhPT0gc2VjdGlvbklkKSByZXR1cm4gc2VjdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uLml0ZW1zLm1hcCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5pZCAhPT0gaXRlbS5pZCkgcmV0dXJuIGk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnVpbGQgc2NvcmluZyBvdmVycmlkZSBpZiBwb2ludHMgb3Igd2VpZ2h0IGFyZSBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcmluZ092ZXJyaWRlOiB7IHBvaW50cz86IG51bWJlcjsgd2VpZ2h0PzogbnVtYmVyIH0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BvaW50cyA9IGZvcm1EYXRhLnNjb3JpbmdQb2ludHMgIT09IHVuZGVmaW5lZCAmJiBmb3JtRGF0YS5zY29yaW5nUG9pbnRzICE9PSBudWxsICYmIGZvcm1EYXRhLnNjb3JpbmdQb2ludHMgIT09ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNXZWlnaHQgPSBmb3JtRGF0YS5zY29yaW5nV2VpZ2h0ICE9PSB1bmRlZmluZWQgJiYgZm9ybURhdGEuc2NvcmluZ1dlaWdodCAhPT0gbnVsbCAmJiBmb3JtRGF0YS5zY29yaW5nV2VpZ2h0ICE9PSAnJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUG9pbnRzIHx8IGhhc1dlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlLnBvaW50cyA9IE51bWJlcihmb3JtRGF0YS5zY29yaW5nUG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNXZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGUud2VpZ2h0ID0gTnVtYmVyKGZvcm1EYXRhLnNjb3JpbmdXZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBmb3JtRGF0YS5pc1JlcXVpcmVkID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogZm9ybURhdGEudmlzaWJpbGl0eUNvbmRpdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogZm9ybURhdGEucmVxdWlyZWRDb25kaXRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlOiBzY29yaW5nT3ZlcnJpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlZGl0aW5nIHF1ZXN0aW9uOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBpdGVtIGRyb3AgKHJlb3JkZXJpbmcgd2l0aGluIHNlY3Rpb24gb3IgYmV0d2VlbiBzZWN0aW9ucylcbiAgICAgKi9cbiAgICBoYW5kbGVJdGVtRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8UXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtW10+LCB0YXJnZXRTZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgLy8gUmVvcmRlcmluZyB3aXRoaW4gc2FtZSBzZWN0aW9uXG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb24uaWQgIT09IHRhcmdldFNlY3Rpb25JZCkgcmV0dXJuIHNlY3Rpb247XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTW92aW5nIGl0ZW0gYmV0d2VlbiBzZWN0aW9uc1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBvcmRlcnMgZm9yIGJvdGggc2VjdGlvbnNcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5pZCA9PT0gdGFyZ2V0U2VjdGlvbklkIHx8IHNlY3Rpb24uaWQgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlY3Rpb247XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHNlY3Rpb24gZHJvcCBsaXN0cyBmb3IgZHJhZy1kcm9wIGNvbm5lY3Rpdml0eVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRBbGxTZWN0aW9uRHJvcExpc3RzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VjdGlvbnMoKS5tYXAoKHNlY3Rpb24pID0+IGBzZWN0aW9uLSR7c2VjdGlvbi5pZH0taXRlbXNgKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRGlzcGxheSBTZXR0aW5ncyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBvcGVuaW5nIGRpc3BsYXkgc2V0dGluZ3MgZGlhbG9nXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5nc1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5zZXR0aW5ncy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0Rpc3BsYXkgU2V0dGluZ3MnO1xuXG4gICAgICAgICAgICBjb25zdCB2aWV3TW9kZUxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVmlldyBNb2RlJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1Byb2dyZXNzQmFyTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXByb2dyZXNzLWJhci50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Nob3cgUHJvZ3Jlc3MgQmFyJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1RpbWVyTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXRpbWVyLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBUaW1lcic7XG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dTZWN0aW9uVGl0bGVzTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXNlY3Rpb24tdGl0bGVzLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBTZWN0aW9uIFRpdGxlcyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dRdWVzdGlvbk51bWJlcnNMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctcXVlc3Rpb24tbnVtYmVycy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Nob3cgUXVlc3Rpb24gTnVtYmVycyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmFsaWRhdGUtYmVmb3JlLW5hdmlnYXRpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdWYWxpZGF0ZSBCZWZvcmUgTmF2aWdhdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZXR0aW5ncyA9IHRoaXMuZGlzcGxheVNldHRpbmdzKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IGF3YWl0IHRoaXMubGF5b3V0QnVpbGRlclxuICAgICAgICAgICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAgICAgICAgIC5kaWFsb2coKGRpYWxvZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShzZXR0aW5nc1RpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNpemUoJ21kJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDbG9zZUJ1dHRvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlOiBjdXJyZW50U2V0dGluZ3Mudmlld01vZGUgfHwgJ3NpbmdsZS1wYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3NCYXI6IGN1cnJlbnRTZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXIgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGltZXI6IGN1cnJlbnRTZXR0aW5ncy5zaG93VGltZXIgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1NlY3Rpb25UaXRsZXM6IGN1cnJlbnRTZXR0aW5ncy5zaG93U2VjdGlvblRpdGxlcyA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dRdWVzdGlvbk51bWJlcnM6IGN1cnJlbnRTZXR0aW5ncy5zaG93UXVlc3Rpb25OdW1iZXJzID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uOiBjdXJyZW50U2V0dGluZ3MudmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh2aWV3TW9kZUxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd2aWV3TW9kZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnNlbGVjdEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NpbmdsZS1wYWdlJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnNpbmdsZS1wYWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3BhZ2UtcGVyLWdyb3VwJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnBhZ2UtcGVyLWdyb3VwJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3BhZ2UtcGVyLXF1ZXN0aW9uJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnBhZ2UtcGVyLXF1ZXN0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NpZGUtbWVudScsIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52aWV3LW1vZGUub3B0aW9ucy5zaWRlLW1lbnUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93UHJvZ3Jlc3NCYXJMYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnc2hvd1Byb2dyZXNzQmFyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93VGltZXJMYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnc2hvd1RpbWVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93U2VjdGlvblRpdGxlc0xhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93U2VjdGlvblRpdGxlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnRvZ2dsZVN3aXRjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoc2hvd1F1ZXN0aW9uTnVtYmVyc0xhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93UXVlc3Rpb25OdW1iZXJzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgndmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gRXh0cmFjdCB2aWV3TW9kZSAtIGhhbmRsZSBib3RoIHN0cmluZyBhbmQgb2JqZWN0IChmcm9tIHNlbGVjdCBib3gpXG4gICAgICAgICAgICAgICAgbGV0IHZpZXdNb2RlOiAnc2luZ2xlLXBhZ2UnIHwgJ3BhZ2UtcGVyLWdyb3VwJyB8ICdwYWdlLXBlci1xdWVzdGlvbicgPSAnc2luZ2xlLXBhZ2UnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlVmFsdWUgPSBmb3JtRGF0YS52aWV3TW9kZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZpZXdNb2RlVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID0gdmlld01vZGVWYWx1ZSBhcyAnc2luZ2xlLXBhZ2UnIHwgJ3BhZ2UtcGVyLWdyb3VwJyB8ICdwYWdlLXBlci1xdWVzdGlvbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3TW9kZVZhbHVlICYmIHR5cGVvZiB2aWV3TW9kZVZhbHVlID09PSAnb2JqZWN0JyAmJiAnaWQnIGluIHZpZXdNb2RlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGUgPSAodmlld01vZGVWYWx1ZSBhcyBhbnkpLmlkIGFzICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTZXR0aW5nczogUXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGU6IHZpZXdNb2RlLFxuICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZvcm1EYXRhLnNob3dQcm9ncmVzc0JhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzaG93VGltZXI6IGZvcm1EYXRhLnNob3dUaW1lciA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NlY3Rpb25UaXRsZXM6IGZvcm1EYXRhLnNob3dTZWN0aW9uVGl0bGVzID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNob3dRdWVzdGlvbk51bWJlcnM6IGZvcm1EYXRhLnNob3dRdWVzdGlvbk51bWJlcnMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uOiBmb3JtRGF0YS52YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHN0YXRlIGJ5IHByZXNlcnZpbmcgZXhpc3RpbmcgcXVlc3Rpb24gZGF0YSBhbmQgdXBkYXRpbmcgZGlzcGxheVNldHRpbmdzIGluIHN0YXRlXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlTZXR0aW5ncyBpbiBzdGF0ZSBkaXJlY3RseVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTZXR0aW5nczogbmV3U2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRTdGF0ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9wZW5pbmcgc2V0dGluZ3M6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFByZXZpZXcgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBPcGVuIHByZXZpZXcgZGlhbG9nIHdpdGggcXVlc3Rpb25uYWlyZSB2aWV3ZXJcbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVQcmV2aWV3KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5zZWN0aW9ucygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUodGhpcy5idWlsZGVyU3RhdGUoKSwgdGhpcy52YWx1ZSgpIHx8IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAvLyBBbHdheXMgdXNlIHRoZSBjdXJyZW50IGRpc3BsYXlTZXR0aW5ncyBmcm9tIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSB0byBlbnN1cmUgcHJldmlldyB1c2VzIGxhdGVzdCBzZXR0aW5nc1xuICAgICAgICAgICAgY3VycmVudFZhbHVlLmRpc3BsYXlTZXR0aW5ncyA9IHRoaXMuZGlzcGxheVNldHRpbmdzKCk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aWV3VGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLnByZXZpZXcudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdQcmV2aWV3JztcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVzdGlvbm5haXJlVmlld2VyU2VydmljZS5vcGVuKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJldmlld1RpdGxlLFxuICAgICAgICAgICAgICAgIHN0cnVjdHVyZTogY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgIHByZVBvc3RDb25maWc6IHRoaXMucHJlUG9zdENvbmZpZygpID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGcnLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSByZXN1bHQgaWYgbmVlZGVkIChhbnN3ZXJzLCBzdWJtaXR0ZWQgc3RhdHVzKVxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdRdWVzdGlvbm5haXJlIHByZXZpZXcgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvcGVuaW5nIHByZXZpZXc6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGZ1bGxzY3JlZW4gbW9kZSB1c2luZyB0aGUgZGlyZWN0aXZlXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZnVsbHNjcmVlbiA9IHRoaXMuZnVsbHNjcmVlbkRpcmVjdGl2ZSgpO1xuICAgICAgICBpZiAoZnVsbHNjcmVlbikge1xuICAgICAgICAgICAgYXdhaXQgZnVsbHNjcmVlbi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iLCI8ZGl2IGNsYXNzPVwiYXhtLXF1ZXN0aW9ubmFpcmUtYnVpbGRlclwiIGF4RnVsbHNjcmVlbiAjZnVsbHNjcmVlbj1cImF4RnVsbHNjcmVlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJfX2hlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19oZWFkZXItbGVmdFwiPlxuICAgICAgICAgICAgPCEtLSBMZWZ0IHNpZGUgY2FuIGJlIHVzZWQgZm9yIG90aGVyIGFjdGlvbnMgaW4gdGhlIGZ1dHVyZSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX2hlYWRlci1yaWdodFwiPlxuICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuXG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmFkZC1zZWN0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnQWRkIFNlY3Rpb24nXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCIgKG9uQ2xpY2spPVwiaGFuZGxlQWRkU2VjdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWxheWVyLWdyb3VwXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5zZXR0aW5ncy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ1NldHRpbmdzJ1wiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU2V0dGluZ3MoKVwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1nZWFyXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5wcmV2aWV3LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnUHJldmlldydcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWN0aW9ucygpLmxlbmd0aCA9PT0gMFwiIChvbkNsaWNrKT1cImhhbmRsZVByZXZpZXcoKVwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1leWVcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmZ1bGxzY3JlZW4udGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICdGdWxsIFNjcmVlbidcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUZ1bGxzY3JlZW4oKVwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1leHBhbmRcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgIDwhLS0gRGVzaWduZXIgTW9kZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvbnMtY29udGFpbmVyXCIgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJzZWN0aW9ucygpXCJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiaGFuZGxlU2VjdGlvbkRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLmlkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uXCIgY2RrRHJhZyBbaWRdPVwiJ3NlY3Rpb24tJyArIHNlY3Rpb24uaWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24tZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWdyaXAtdmVydGljYWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24taW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiX19zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19zZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3sgc2VjdGlvbi5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvbi1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuYWRkLXF1ZXN0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2FjY2VudDInXCIgKG9uQ2xpY2spPVwiaGFuZGxlQWRkUXVlc3Rpb25zVG9TZWN0aW9uKHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLXBsdXNcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIFtsb29rXT1cIidibGFuaydcIiBjb2xvcj1cImFjY2VudDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25FZGl0KHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1wZW5jaWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2FuUmVtb3ZlU2VjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBbbG9va109XCInYmxhbmsnXCIgY29sb3I9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25SZW1vdmUoc2VjdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXRyYXNoLWNhblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW1zLWxpc3QgYXgtb3ZlcmZsb3ctYXV0b1wiIGNka0Ryb3BMaXN0IFtpZF09XCInc2VjdGlvbi0nICsgc2VjdGlvbi5pZCArICctaXRlbXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwic2VjdGlvbi5pdGVtc1wiIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cImdldEFsbFNlY3Rpb25Ecm9wTGlzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZUl0ZW1Ecm9wKCRldmVudCwgc2VjdGlvbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxheHAtc3RhdGUtbWVzc2FnZSBpY29uPVwiZmEtbGlnaHQgZmEtaW5ib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZW1wdHktc3RhdGVzLmVtcHR5LXNlY3Rpb24udGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmVtcHR5LXN0YXRlcy5lbXB0eS1zZWN0aW9uLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBzZWN0aW9uLml0ZW1zOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLl9fZGlmZmljdWx0eS1lYXN5XT1cIml0ZW0ucXVlc3Rpb24/LmRpZmZpY3VsdHkgPT09ICdlYXN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLl9fZGlmZmljdWx0eS1tZWRpdW1dPVwiaXRlbS5xdWVzdGlvbj8uZGlmZmljdWx0eSA9PT0gJ21lZGl1bSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5fX2RpZmZpY3VsdHktaGFyZF09XCJpdGVtLnF1ZXN0aW9uPy5kaWZmaWN1bHR5ID09PSAnaGFyZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtcXVlc3Rpb24tY2lyY2xlXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJfX2l0ZW0tdGl0bGVcIj57eyBpdGVtLnF1ZXN0aW9uPy50aXRsZSA/PyAnUXVlc3Rpb24nIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ucXVlc3Rpb24/LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJfX2l0ZW0tZGVzY3JpcHRpb25cIj57eyBpdGVtLnF1ZXN0aW9uPy5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0tbWV0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJfX2l0ZW0tYmFkZ2UgX19yZXF1aXJlZFwiPlJlcXVpcmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmluZ092ZXJyaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJfX2l0ZW0tYmFkZ2VcIj5DdXN0b20gU2NvcmluZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIFtsb29rXT1cIidibGFuaydcIiBjb2xvcj1cImFjY2VudDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlSXRlbUVkaXQoaXRlbSwgc2VjdGlvbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtcGVuY2lsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBbbG9va109XCInYmxhbmsnXCIgY2xhc3M9XCJheC1zbVwiIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUl0ZW1SZW1vdmUoaXRlbSwgc2VjdGlvbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-assessment-management-questionnaire-builder.component-BMR71H5h.mjs","sources":["../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.types.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.component.js"],"sourcesContent":["//#region ---- Imports ----\n//#endregion\n//#region ---- Utility Functions ----\n/**\n * Convert raw value to builder state\n */\nexport function convertValueToState(value) {\n // Handle null/undefined or empty sections\n if (!value || !value.sections || value.sections.length === 0) {\n // Always return at least one default section\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n sections: [defaultSection],\n displaySettings: value?.displaySettings,\n };\n }\n // Handle structure (sections with nested items)\n return {\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id || `section-${sectionIndex}`,\n title: section.title,\n description: section.description,\n order: section.order ?? sectionIndex,\n visibilityCondition: section.visibilityCondition,\n items: (section.items || []).map((item, itemIndex) => ({\n id: item.id || `item-${itemIndex}`,\n questionBankItemId: item.questionBankItemId,\n order: item.order ?? itemIndex,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n isNewlyAdded: false,\n })),\n isNewlyAdded: false,\n })),\n displaySettings: value.displaySettings,\n };\n}\n/**\n * Convert builder state to value for persistence\n */\nexport function convertStateToValue(state, existingValue) {\n const result = {\n sections: state.sections\n .filter((section) => {\n // Drop sections that are NOT newly added AND have no items\n // Keep sections that are newly added OR have items\n const isNewlyAdded = section.isNewlyAdded === true;\n const hasItems = section.items.length > 0;\n return isNewlyAdded || hasItems;\n })\n .map((section) => {\n return {\n id: section.id,\n title: section.title,\n description: section.description,\n order: section.order,\n visibilityCondition: section.visibilityCondition,\n items: section.items.map((item) => ({\n id: item.id,\n questionBankItemId: item.questionBankItemId,\n order: item.order,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n })),\n };\n }),\n };\n // Preserve displaySettings from state first, then from existing value if state doesn't have it\n if (state.displaySettings) {\n result.displaySettings = state.displaySettings;\n }\n else if (existingValue?.displaySettings) {\n result.displaySettings = existingValue.displaySettings;\n }\n return result;\n}\n/**\n * Create a default section\n */\nexport function createDefaultSection() {\n return {\n id: `section-${Date.now()}`,\n title: 'New Section',\n description: undefined,\n order: 0,\n visibilityCondition: undefined,\n items: [],\n isNewlyAdded: true,\n };\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBK0ovQixZQUFZO0FBRVoseUNBQXlDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQW1EO0lBQ25GLDBDQUEwQztJQUMxQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCw2Q0FBNkM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPO1lBQ0gsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQzFCLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZTtTQUMxQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxPQUFPO1FBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxXQUFXLFlBQVksRUFBRTtZQUMzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVk7WUFDcEMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFt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QUFFLGFBQWE7UUFDcEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDUixtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLEtBQUssRUFBRSxFQUFFO1FBQ1QsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBxdWVzdGlvbiBpdGVtIHdpdGhpbiBhIHNlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBzdHJpbmc7XG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHNjb3JpbmdPdmVycmlkZT86IHtcbiAgICAgICAgcG9pbnRzPzogbnVtYmVyO1xuICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfTtcbiAgICBpbnRlcmZhY2VPdmVycmlkZT86IEFYUFdpZGdldE5vZGU7XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcblxuICAgIC8vIFJlbGF0ZWQgcXVlc3Rpb24gZGF0YSAoZnJvbSBleHBvc2UpXG4gICAgcXVlc3Rpb24/OiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBkaWZmaWN1bHR5Pzogc3RyaW5nO1xuICAgICAgICBzY29yaW5nVHlwZT86IHN0cmluZztcbiAgICB9O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgU2VjdGlvbiBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2VjdGlvbiBjb250YWluaW5nIHF1ZXN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICBpdGVtczogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtW107XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlc3Rpb25uYWlyZSBCdWlsZGVyIFN0YXRlIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIE92ZXJhbGwgc3RhdGUgZm9yIHRoZSBxdWVzdGlvbm5haXJlIGJ1aWxkZXIgd2lkZ2V0IChkZXNpZ25lciBtb2RlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUge1xuICAgIHNlY3Rpb25zOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb25bXTtcbiAgICBzZWxlY3RlZEl0ZW1JZD86IHN0cmluZztcbiAgICBzZWxlY3RlZFNlY3Rpb25JZD86IHN0cmluZztcbiAgICBkaXNwbGF5U2V0dGluZ3M/OiBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzO1xufVxuXG4vKipcbiAqIERpc3BsYXkgc2V0dGluZ3MgZm9yIHF1ZXN0aW9ubmFpcmUgdmlld2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncyB7XG4gICAgLyoqXG4gICAgICogVmlldyBtb2RlOiBzaW5nbGUtcGFnZSwgcGFnZS1wZXItZ3JvdXAsIHBhZ2UtcGVyLXF1ZXN0aW9uLCBzaWRlLW1lbnVcbiAgICAgKi9cbiAgICB2aWV3TW9kZT86ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyB8ICdzaWRlLW1lbnUnO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBwcm9ncmVzcyBiYXJcbiAgICAgKi9cbiAgICBzaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3Jlc3MgY2FsY3VsYXRpb24gbW9kZTogYW5zd2VyZWQgb3IgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIHByb2dyZXNzTW9kZT86ICdhbnN3ZXJlZCcgfCAnbmF2aWdhdGlvbic7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRpbWVyXG4gICAgICovXG4gICAgc2hvd1RpbWVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNob3cgc2VjdGlvbiB0aXRsZXNcbiAgICAgKi9cbiAgICBzaG93U2VjdGlvblRpdGxlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHF1ZXN0aW9uIG51bWJlcnNcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25OdW1iZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF1dG8tc2F2ZSBhbnN3ZXJzIGFzIHVzZXIgdHlwZXNcbiAgICAgKi9cbiAgICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHZhbGlkYXRpb24gZXJyb3JzIGlubGluZVxuICAgICAqL1xuICAgIHNob3dWYWxpZGF0aW9uRXJyb3JzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFsbG93IHNraXBwaW5nIHF1ZXN0aW9ucyAoaWYgbm90IHJlcXVpcmVkKVxuICAgICAqL1xuICAgIGFsbG93U2tpcHBpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBxdWVzdGlvbiBjb3VudGVyIChlLmcuLCBcIlF1ZXN0aW9uIDMgb2YgMTBcIilcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25Db3VudGVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlIGJlZm9yZSBhbGxvd2luZyBuYXZpZ2F0aW9uIHRvIG90aGVyIHNlY3Rpb25zL3BhZ2VzXG4gICAgICogV2hlbiB0cnVlLCBuYXZpZ2F0aW9uIGlzIGJsb2NrZWQgaWYgY3VycmVudCBwYWdlIGhhcyB2YWxpZGF0aW9uIGVycm9yc1xuICAgICAqIFdoZW4gZmFsc2UsIG5hdmlnYXRpb24gaXMgYWxsb3dlZCBidXQgdmFsaWRhdGlvbiBlcnJvcnMgYXJlIHN0aWxsIHNob3duXG4gICAgICogRGVmYXVsdDogdHJ1ZVxuICAgICAqL1xuICAgIHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmFsdWUgc3RydWN0dXJlIHN0b3JlZCBpbiBlbnRpdHkgKHNpbXBsaWZpZWQgZm9yIHBlcnNpc3RlbmNlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUge1xuICAgIHNlY3Rpb25zOiBBcnJheTx7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBvcmRlcjogbnVtYmVyO1xuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICBpdGVtczogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogc3RyaW5nO1xuICAgICAgICAgICAgb3JkZXI6IG51bWJlcjtcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlPzoge1xuICAgICAgICAgICAgICAgIHBvaW50cz86IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW50ZXJmYWNlT3ZlcnJpZGU/OiBBWFBXaWRnZXROb2RlO1xuICAgICAgICB9PjtcbiAgICB9PjtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHNldHRpbmdzIGZvciBxdWVzdGlvbm5haXJlIHZpZXdlclxuICAgICAqL1xuICAgIGRpc3BsYXlTZXR0aW5ncz86IFF1ZXN0aW9ubmFpcmVEaXNwbGF5U2V0dGluZ3M7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFV0aWxpdHkgRnVuY3Rpb25zICAgLS0tLVxuXG4vKipcbiAqIENvbnZlcnQgcmF3IHZhbHVlIHRvIGJ1aWxkZXIgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvU3RhdGUodmFsdWU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSB7XG4gICAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIG9yIGVtcHR5IHNlY3Rpb25zXG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc2VjdGlvbnMgfHwgdmFsdWUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEFsd2F5cyByZXR1cm4gYXQgbGVhc3Qgb25lIGRlZmF1bHQgc2VjdGlvblxuICAgICAgICBjb25zdCBkZWZhdWx0U2VjdGlvbiA9IGNyZWF0ZURlZmF1bHRTZWN0aW9uKCk7XG4gICAgICAgIGRlZmF1bHRTZWN0aW9uLm9yZGVyID0gMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlY3Rpb25zOiBbZGVmYXVsdFNlY3Rpb25dLFxuICAgICAgICAgICAgZGlzcGxheVNldHRpbmdzOiB2YWx1ZT8uZGlzcGxheVNldHRpbmdzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzdHJ1Y3R1cmUgKHNlY3Rpb25zIHdpdGggbmVzdGVkIGl0ZW1zKVxuICAgIHJldHVybiB7XG4gICAgICAgIHNlY3Rpb25zOiB2YWx1ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIHNlY3Rpb25JbmRleCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBzZWN0aW9uLmlkIHx8IGBzZWN0aW9uLSR7c2VjdGlvbkluZGV4fWAsXG4gICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIgPz8gc2VjdGlvbkluZGV4LFxuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogc2VjdGlvbi52aXNpYmlsaXR5Q29uZGl0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IChzZWN0aW9uLml0ZW1zIHx8IFtdKS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCB8fCBgaXRlbS0ke2l0ZW1JbmRleH1gLFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQsXG4gICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIgPz8gaXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGl0ZW0uaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IGl0ZW0ucmVxdWlyZWRDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlOiBpdGVtLnNjb3JpbmdPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpc05ld2x5QWRkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaXNOZXdseUFkZGVkOiBmYWxzZSxcbiAgICAgICAgfSkpLFxuICAgICAgICBkaXNwbGF5U2V0dGluZ3M6IHZhbHVlLmRpc3BsYXlTZXR0aW5ncyxcbiAgICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYnVpbGRlciBzdGF0ZSB0byB2YWx1ZSBmb3IgcGVyc2lzdGVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUsIGV4aXN0aW5nVmFsdWU/OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB7XG4gICAgY29uc3QgcmVzdWx0OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlID0ge1xuICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAvLyBEcm9wIHNlY3Rpb25zIHRoYXQgYXJlIE5PVCBuZXdseSBhZGRlZCBBTkQgaGF2ZSBubyBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIEtlZXAgc2VjdGlvbnMgdGhhdCBhcmUgbmV3bHkgYWRkZWQgT1IgaGF2ZSBpdGVtc1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmV3bHlBZGRlZCA9IHNlY3Rpb24uaXNOZXdseUFkZGVkID09PSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0l0ZW1zID0gc2VjdGlvbi5pdGVtcy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTmV3bHlBZGRlZCB8fCBoYXNJdGVtcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHNlY3Rpb24udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbkJhbmtJdGVtSWQ6IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBpdGVtLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogaXRlbS5yZXF1aXJlZENvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZTogaXRlbS5zY29yaW5nT3ZlcnJpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gUHJlc2VydmUgZGlzcGxheVNldHRpbmdzIGZyb20gc3RhdGUgZmlyc3QsIHRoZW4gZnJvbSBleGlzdGluZyB2YWx1ZSBpZiBzdGF0ZSBkb2Vzbid0IGhhdmUgaXRcbiAgICBpZiAoc3RhdGUuZGlzcGxheVNldHRpbmdzKSB7XG4gICAgICAgIHJlc3VsdC5kaXNwbGF5U2V0dGluZ3MgPSBzdGF0ZS5kaXNwbGF5U2V0dGluZ3M7XG4gICAgfSBlbHNlIGlmIChleGlzdGluZ1ZhbHVlPy5kaXNwbGF5U2V0dGluZ3MpIHtcbiAgICAgICAgcmVzdWx0LmRpc3BsYXlTZXR0aW5ncyA9IGV4aXN0aW5nVmFsdWUuZGlzcGxheVNldHRpbmdzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVmYXVsdCBzZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0U2VjdGlvbigpOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBgc2VjdGlvbi0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgdGl0bGU6ICdOZXcgU2VjdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgaXNOZXdseUFkZGVkOiB0cnVlLFxuICAgIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CdkDrag, CdkDragHandle, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPDataSelectorService } from '@acorex/platform/layout/components';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../const';\nimport { AXMQuestionBankItemService } from '../../entities/question-bank-item/question-bank-item.service';\nimport { convertStateToValue, convertValueToState, createDefaultSection, } from './questionnaire-builder.types';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport { AXFullScreenDirective } from '@acorex/cdk/full-screen';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer/questionnaire-viewer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable Questionnaire Builder Component\n * Can be used both in dialog and inline contexts\n */\nexport class AXMQuestionnaireBuilderComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.dataSelectorService = inject(AXPDataSelectorService);\n this.questionBankService = inject(AXMQuestionBankItemService);\n this.entityResolver = inject(AXPEntityDefinitionRegistryService);\n this.dialogService = inject(AXDialogService);\n this.translationService = inject(AXTranslationService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n //#endregion\n //#region ---- Inputs & Outputs ----\n /**\n * Initial value (QuestionnaireBuilderValue)\n */\n this.value = input(null, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n /**\n * Readonly mode\n */\n this.readonly = input(false, ...(ngDevMode ? [{ debugName: \"readonly\" }] : []));\n /**\n * Pre/post config for preview (welcome, review, summary).\n * When provided, passed to the preview dialog.\n */\n this.prePostConfig = input(null, ...(ngDevMode ? [{ debugName: \"prePostConfig\" }] : []));\n /**\n * Value change event\n */\n this.valueChange = output();\n //#endregion\n //#region ---- Class Properties ----\n // Designer state management - always start with at least one default section\n this.builderState = signal({\n sections: [createDefaultSection()],\n }, ...(ngDevMode ? [{ debugName: \"builderState\" }] : []));\n // Selected item tracking\n this.selectedItemId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedItemId\" }] : []));\n this.selectedSectionId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedSectionId\" }] : []));\n // Track if we're making internal updates to prevent effect loops\n this.isInternalUpdate = false;\n // Fullscreen directive reference\n this.fullscreenDirective = viewChild('fullscreen', ...(ngDevMode ? [{ debugName: \"fullscreenDirective\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Get all sections for rendering\n */\n this.sections = computed(() => this.builderState().sections, ...(ngDevMode ? [{ debugName: \"sections\" }] : []));\n /**\n * Check if can remove section (must have at least 1 section)\n */\n this.canRemoveSection = computed(() => this.sections().length > 1, ...(ngDevMode ? [{ debugName: \"canRemoveSection\" }] : []));\n /**\n * Get current display settings from state or default\n */\n this.displaySettings = computed(() => {\n const state = this.builderState();\n if (state.displaySettings) {\n return state.displaySettings;\n }\n // Fallback to value if state doesn't have it\n const currentValue = convertStateToValue(state, this.value() || undefined);\n return currentValue.displaySettings || {\n viewMode: 'single-page',\n showProgressBar: true,\n showTimer: false,\n showSectionTitles: true,\n showQuestionNumbers: true,\n };\n }, ...(ngDevMode ? [{ debugName: \"displaySettings\" }] : []));\n // Track last emitted value to prevent circular updates\n let lastEmittedValue = null;\n // Sync value input to state (only when value changes externally)\n effect(() => {\n const val = this.value();\n if (val !== null && val !== undefined && !this.isInternalUpdate) {\n const currentState = untracked(() => this.builderState());\n const currentValue = convertStateToValue(currentState);\n // Only update if the value actually changed and it's different from what we last emitted\n const valStr = JSON.stringify(val);\n const currentStr = JSON.stringify(currentValue);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n // Update only if:\n // 1. The incoming value is different from current state value\n // 2. AND it's not the value we just emitted (prevent circular updates)\n if (valStr !== currentStr && valStr !== lastEmittedStr) {\n const newState = convertValueToState(val);\n untracked(() => {\n this.builderState.set(newState);\n // Load question details for all items\n this.loadQuestionDetailsForState(newState);\n });\n }\n }\n else if ((val === null || val === undefined) && !this.isInternalUpdate) {\n // If value is null/undefined, ensure we have at least one default section\n const currentState = untracked(() => this.builderState());\n if (currentState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n untracked(() => {\n this.builderState.set({ sections: [defaultSection] });\n });\n }\n }\n });\n // Sync state changes to output\n effect(() => {\n const state = this.builderState();\n const currentValue = this.value();\n const value = convertStateToValue(state, currentValue || undefined);\n // Prevent circular updates\n if (!this.isInternalUpdate) {\n untracked(() => {\n lastEmittedValue = value;\n this.valueChange.emit(value);\n });\n }\n });\n }\n /**\n * Load question details for all items in the state\n */\n async loadQuestionDetailsForState(state) {\n const questionIds = new Set();\n // Collect all question bank item IDs\n state.sections.forEach((section) => {\n section.items.forEach((item) => {\n if (item.questionBankItemId && !item.question) {\n questionIds.add(item.questionBankItemId);\n }\n });\n });\n if (questionIds.size === 0)\n return;\n // Load all questions in parallel\n const questionPromises = Array.from(questionIds).map((id) => this.questionBankService.getOne(id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n // Create a map of question ID to question data\n const questionMap = new Map();\n questions.forEach((q) => {\n if (q) {\n questionMap.set(q.id, q);\n }\n });\n // Update state with question details\n this.builderState.update((currentState) => ({\n ...currentState,\n sections: currentState.sections.map((section) => ({\n ...section,\n items: section.items.map((item) => {\n if (item.question)\n return item; // Already has question data\n const questionData = questionMap.get(item.questionBankItemId);\n if (questionData) {\n return {\n ...item,\n question: {\n id: questionData.id,\n title: questionData.title,\n description: questionData.description,\n difficulty: questionData.difficulty,\n scoringType: questionData.scoringType,\n },\n };\n }\n return item;\n }),\n })),\n }));\n }\n //#endregion\n //#region ---- Section Management ----\n /**\n * Helper method to update state while preventing effect loops\n * Ensures at least one section always exists\n */\n updateState(updater) {\n this.isInternalUpdate = true;\n try {\n this.builderState.update((state) => {\n const updatedState = updater(state);\n // Safety check: ensure at least one section always exists\n if (updatedState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n ...updatedState,\n sections: [defaultSection],\n };\n }\n return updatedState;\n });\n }\n finally {\n // Reset flag after current execution context\n Promise.resolve().then(() => {\n this.isInternalUpdate = false;\n });\n }\n }\n /**\n * Handle adding a new section\n */\n async handleAddSection() {\n try {\n const addTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title') || 'Add Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(addTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: '',\n description: '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n const newSection = createDefaultSection();\n newSection.order = this.sections().length;\n newSection.title = formData.title || 'New Section';\n newSection.description = formData.description || undefined;\n this.updateState((state) => ({\n ...state,\n sections: [...state.sections, newSection],\n }));\n // Scroll to the newly added section after DOM update\n setTimeout(() => {\n const sectionElement = document.getElementById(`section-${newSection.id}`);\n if (sectionElement) {\n sectionElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }, 100);\n }\n }\n catch (error) {\n console.error('Error adding section:', error);\n }\n }\n /**\n * Handle section editing\n */\n async handleSectionEdit(section) {\n try {\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-section.title') || 'Edit Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: section.title || '',\n description: section.description || '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n title: formData.title || s.title,\n description: formData.description !== undefined ? formData.description : s.description,\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error editing section:', error);\n }\n }\n /**\n * Handle section removal\n */\n handleSectionRemove(section) {\n // Don't allow removing the last section - must always have at least one\n if (this.sections().length <= 1) {\n return;\n }\n // Remove the section and update order values\n this.updateState((state) => ({\n ...state,\n sections: state.sections\n .filter((s) => s.id !== section.id)\n .map((s, index) => ({\n ...s,\n order: index,\n })),\n }));\n }\n /**\n * Handle section drop (reordering)\n */\n handleSectionDrop(event) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n // Update order values\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section, index) => ({\n ...section,\n order: index,\n })),\n }));\n }\n }\n //#endregion\n //#region ---- Item Management ----\n /**\n * Handle adding questions to a section\n */\n async handleAddQuestionsToSection(section) {\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const questions = await this.questionBankService.query(e);\n return {\n items: questions.items,\n total: questions.total,\n };\n },\n });\n // Create category tree data source for filtering\n const categoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n const entity = await this.entityResolver.resolve(RootConfig.module.name, RootConfig.entities.questionBankItem.name);\n if (!entity) {\n throw new Error('Entity not found: ' + RootConfig.entities.questionBankItem.name);\n }\n const columns = entity.columns\n ?.filter((column) => entity.properties.some((property) => property.name === column.name))\n .map((column) => {\n const property = entity.properties.find((prop) => prop.name === column.name);\n return {\n name: column.name,\n title: property?.title ?? '',\n visible: column.options?.visible !== false,\n widget: {\n type: column.showAs?.type ?? property?.schema?.interface?.type ?? 'text-editor',\n options: column.showAs?.options ?? property?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n // Translate titles\n const selectQuestionsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.select-questions') || 'Select Questions from Question Bank';\n const categoriesTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.categories') || 'Categories';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n // Open data selector with category filter\n const result = await this.dataSelectorService.openWithCategoryFilter({\n title: selectQuestionsTitle,\n dataSource: dataSource,\n columns: columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: titleLabel },\n { name: 'description', title: descriptionLabel },\n ],\n allowCreate: false,\n }, {\n title: categoriesTitle,\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n });\n // Add selected questions to the section\n if (result?.items && result.items.length > 0) {\n // Load full question details for each selected item\n const questionPromises = result.items.map((item) => this.questionBankService.getOne(item.id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n const newItems = result.items.map((item, index) => {\n const fullQuestion = questions[index];\n return {\n id: AXPDataGenerator.uuid(),\n questionBankItemId: item.id,\n order: section.items.length + index,\n isRequired: false,\n visibilityCondition: undefined,\n requiredCondition: undefined,\n scoringOverride: undefined,\n isNewlyAdded: true,\n question: fullQuestion\n ? {\n id: fullQuestion.id,\n title: fullQuestion.title,\n description: fullQuestion.description,\n difficulty: fullQuestion.difficulty,\n scoringType: fullQuestion.scoringType,\n }\n : {\n id: item.id,\n title: item.title || 'Question',\n description: item.description,\n difficulty: item.difficulty,\n scoringType: item.scoringType,\n },\n };\n });\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n items: [...s.items, ...newItems],\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error loading questions:', error);\n }\n }\n /**\n * Handle item removal\n */\n handleItemRemove(item, sectionId) {\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n // Hard delete - remove item from array\n return {\n ...section,\n items: section.items.filter((i) => i.id !== item.id).map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n /**\n * Handle question item editing (settings)\n */\n async handleItemEdit(item, sectionId) {\n try {\n // Load full question details to get default scoring values\n const questionDetails = item.questionBankItemId\n ? await this.questionBankService.getOne(item.questionBankItemId).catch(() => null)\n : null;\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-question.title') || 'Edit Question Settings';\n const isRequiredLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.is-required.title') || 'Required';\n const visibilityConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.visibility-condition.title') || 'Visibility Condition';\n const requiredConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.required-condition.title') || 'Required Condition';\n const scoringPointsLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-points.title') || 'Scoring Points';\n const scoringWeightLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-weight.title') || 'Scoring Weight';\n // Get default values from question bank item or use existing override values\n const defaultScoringPoints = item.scoringOverride?.points ?? questionDetails?.points ?? '';\n const defaultScoringWeight = item.scoringOverride?.weight ?? questionDetails?.weight ?? '';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n isRequired: item.isRequired ?? false,\n visibilityCondition: item.visibilityCondition || '',\n requiredCondition: item.requiredCondition || '',\n scoringPoints: defaultScoringPoints,\n scoringWeight: defaultScoringWeight,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(isRequiredLabel, (field) => {\n field.path('isRequired');\n field.toggleSwitch();\n })\n .formField(visibilityConditionLabel, (field) => {\n field.path('visibilityCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(requiredConditionLabel, (field) => {\n field.path('requiredCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(scoringPointsLabel, (field) => {\n field.path('scoringPoints');\n field.numberBox({\n placeholder: 'Enter scoring points (optional)',\n });\n })\n .formField(scoringWeightLabel, (field) => {\n field.path('scoringWeight');\n field.numberBox({\n placeholder: 'Enter scoring weight (optional)',\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n return {\n ...section,\n items: section.items.map((i) => {\n if (i.id !== item.id)\n return i;\n // Build scoring override if points or weight are provided\n let scoringOverride = undefined;\n const hasPoints = formData.scoringPoints !== undefined && formData.scoringPoints !== null && formData.scoringPoints !== '';\n const hasWeight = formData.scoringWeight !== undefined && formData.scoringWeight !== null && formData.scoringWeight !== '';\n if (hasPoints || hasWeight) {\n scoringOverride = {};\n if (hasPoints) {\n scoringOverride.points = Number(formData.scoringPoints);\n }\n if (hasWeight) {\n scoringOverride.weight = Number(formData.scoringWeight);\n }\n }\n return {\n ...i,\n isRequired: formData.isRequired ?? false,\n visibilityCondition: formData.visibilityCondition || undefined,\n requiredCondition: formData.requiredCondition || undefined,\n scoringOverride: scoringOverride,\n };\n }),\n };\n }),\n }));\n }\n }\n catch (error) {\n console.error('Error editing question:', error);\n }\n }\n /**\n * Handle item drop (reordering within section or between sections)\n */\n handleItemDrop(event, targetSectionId) {\n if (event.previousContainer === event.container) {\n // Reordering within same section\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== targetSectionId)\n return section;\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n else {\n // Moving item between sections\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n // Update orders for both sections\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id === targetSectionId || section.id === event.previousContainer.id) {\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }\n return section;\n }),\n }));\n }\n }\n /**\n * Get all section drop lists for drag-drop connectivity\n */\n getAllSectionDropLists() {\n return this.sections().map((section) => `section-${section.id}-items`);\n }\n //#endregion\n //#region ---- Display Settings ----\n /**\n * Handle opening display settings dialog\n */\n async handleSettings() {\n try {\n const settingsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title') || 'Display Settings';\n const viewModeLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.title') || 'View Mode';\n const showProgressBarLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-progress-bar.title') || 'Show Progress Bar';\n const showTimerLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-timer.title') || 'Show Timer';\n const showSectionTitlesLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-section-titles.title') || 'Show Section Titles';\n const showQuestionNumbersLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-question-numbers.title') || 'Show Question Numbers';\n const validateBeforeNavigationLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.validate-before-navigation.title') || 'Validate Before Navigation';\n const currentSettings = this.displaySettings();\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(settingsTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n viewMode: currentSettings.viewMode || 'single-page',\n showProgressBar: currentSettings.showProgressBar ?? true,\n showTimer: currentSettings.showTimer ?? false,\n showSectionTitles: currentSettings.showSectionTitles ?? true,\n showQuestionNumbers: currentSettings.showQuestionNumbers ?? true,\n validateBeforeNavigation: currentSettings.validateBeforeNavigation ?? true,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(viewModeLabel, (field) => {\n field.path('viewMode');\n field.selectBox({\n valueField: 'id',\n textField: 'title',\n dataSource: [\n { id: 'single-page', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.single-page' },\n { id: 'page-per-group', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-group' },\n { id: 'page-per-question', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-question' },\n { id: 'side-menu', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.side-menu' },\n ],\n });\n })\n .formField(showProgressBarLabel, (field) => {\n field.path('showProgressBar');\n field.toggleSwitch();\n })\n .formField(showTimerLabel, (field) => {\n field.path('showTimer');\n field.toggleSwitch();\n })\n .formField(showSectionTitlesLabel, (field) => {\n field.path('showSectionTitles');\n field.toggleSwitch();\n })\n .formField(showQuestionNumbersLabel, (field) => {\n field.path('showQuestionNumbers');\n field.toggleSwitch();\n })\n .formField(validateBeforeNavigationLabel, (field) => {\n field.path('validateBeforeNavigation');\n field.toggleSwitch();\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n // Extract viewMode - handle both string and object (from select box)\n let viewMode = 'single-page';\n const viewModeValue = formData.viewMode;\n if (typeof viewModeValue === 'string') {\n viewMode = viewModeValue;\n }\n else if (viewModeValue && typeof viewModeValue === 'object' && 'id' in viewModeValue) {\n viewMode = viewModeValue.id;\n }\n const newSettings = {\n viewMode: viewMode,\n showProgressBar: formData.showProgressBar ?? true,\n showTimer: formData.showTimer ?? false,\n showSectionTitles: formData.showSectionTitles ?? true,\n showQuestionNumbers: formData.showQuestionNumbers ?? true,\n validateBeforeNavigation: formData.validateBeforeNavigation ?? true,\n };\n // Update state by preserving existing question data and updating displaySettings in state\n this.updateState((state) => {\n // Update displaySettings in state directly\n const updatedState = {\n ...state,\n displaySettings: newSettings,\n };\n return updatedState;\n });\n }\n }\n catch (error) {\n console.error('Error opening settings:', error);\n }\n }\n //#endregion\n //#region ---- Preview ----\n /**\n * Open preview dialog with questionnaire viewer\n */\n async handlePreview() {\n if (this.sections().length === 0) {\n return;\n }\n try {\n const currentValue = convertStateToValue(this.builderState(), this.value() || undefined);\n // Always use the current displaySettings from the computed property to ensure preview uses latest settings\n currentValue.displaySettings = this.displaySettings();\n const previewTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title') || 'Preview';\n const result = await this.questionnaireViewerService.open({\n title: previewTitle,\n structure: currentValue,\n prePostConfig: this.prePostConfig() ?? undefined,\n size: 'lg',\n });\n // Handle result if needed (answers, submitted status)\n if (result) {\n console.log('Questionnaire preview result:', result);\n }\n }\n catch (error) {\n console.error('Error opening preview:', error);\n }\n }\n /**\n * Toggle fullscreen mode using the directive\n */\n async handleFullscreen() {\n const fullscreen = this.fullscreenDirective();\n if (fullscreen) {\n await fullscreen.toggle();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireBuilderComponent, isStandalone: true, selector: \"axm-questionnaire-builder\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null }, prePostConfig: { classPropertyName: \"prePostConfig\", publicName: \"prePostConfig\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"fullscreenDirective\", first: true, predicate: [\"fullscreen\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>: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))}.axm-questionnaire-builder .__preview-container .__preview-sections>: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))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;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));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.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: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.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: AXDropdownModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"directive\", type: \n // CDK DragDrop modules\n CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"directive\", type: \n // Fullscreen directive\n AXFullScreenDirective, selector: \"[axFullscreen]\", outputs: [\"fullscreenChange\"], exportAs: [\"axFullscreen\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-builder', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSwitchModule,\n AXLabelModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n // CDK DragDrop modules\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n // Fullscreen directive\n AXFullScreenDirective,\n ], template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>: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))}.axm-questionnaire-builder .__preview-container .__preview-sections>: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))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;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));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;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))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: \"value\", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: \"readonly\", required: false }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: \"prePostConfig\", required: false }] }], valueChange: [{ type: i0.Output, args: [\"valueChange\"] }], fullscreenDirective: [{ type: i0.ViewChild, args: ['fullscreen', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBZSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUs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Q29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhTd2l0Y2hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc3dpdGNoJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0hhbmRsZSwgQ2RrRHJvcExpc3QsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eVByb3BlcnR5LCBBWFBFbnRpdHlUYWJsZUNvbHVtbiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUENhdGVnb3J5VHJlZURhdGFTb3VyY2UsIEFYUERhdGFTZWxlY3RvclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9xdWVzdGlvbi1iYW5rLWl0ZW0vcXVlc3Rpb24tYmFuay1pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW0sXG4gICAgUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uLFxuICAgIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUsXG4gICAgUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSxcbiAgICBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzLFxuICAgIGNvbnZlcnRTdGF0ZVRvVmFsdWUsXG4gICAgY29udmVydFZhbHVlVG9TdGF0ZSxcbiAgICBjcmVhdGVEZWZhdWx0U2VjdGlvbixcbn0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMnO1xuaW1wb3J0IHsgQVhQRGF0YUdlbmVyYXRvciB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWEZ1bGxTY3JlZW5EaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2Nkay9mdWxsLXNjcmVlbic7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlVmlld2VyU2VydmljZSB9IGZyb20gJy4uL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBQcmVQb3N0Q29uZmlnIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnR5cGVzJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFJldXNhYmxlIFF1ZXN0aW9ubmFpcmUgQnVpbGRlciBDb21wb25lbnRcbiAqIENhbiBiZSB1c2VkIGJvdGggaW4gZGlhbG9nIGFuZCBpbmxpbmUgY29udGV4dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS1idWlsZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQVhGb3JtTW9kdWxlLFxuICAgICAgICBBWFN3aXRjaE1vZHVsZSxcbiAgICAgICAgQVhMYWJlbE1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICAvLyBDREsgRHJhZ0Ryb3AgbW9kdWxlc1xuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICAgICAgLy8gRnVsbHNjcmVlbiBkaXJlY3RpdmVcbiAgICAgICAgQVhGdWxsU2NyZWVuRGlyZWN0aXZlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyQ29tcG9uZW50IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGRhdGFTZWxlY3RvclNlcnZpY2UgPSBpbmplY3QoQVhQRGF0YVNlbGVjdG9yU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHF1ZXN0aW9uQmFua1NlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBlbnRpdHlSZXNvbHZlciA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBsYXlvdXRCdWlsZGVyID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAmIE91dHB1dHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHZhbHVlIChRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKVxuICAgICAqL1xuICAgIHZhbHVlID0gaW5wdXQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZG9ubHkgbW9kZVxuICAgICAqL1xuICAgIHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogUHJlL3Bvc3QgY29uZmlnIGZvciBwcmV2aWV3ICh3ZWxjb21lLCByZXZpZXcsIHN1bW1hcnkpLlxuICAgICAqIFdoZW4gcHJvdmlkZWQsIHBhc3NlZCB0byB0aGUgcHJldmlldyBkaWFsb2cuXG4gICAgICovXG4gICAgcHJlUG9zdENvbmZpZyA9IGlucHV0PFByZVBvc3RDb25maWcgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIGNoYW5nZSBldmVudFxuICAgICAqL1xuICAgIHZhbHVlQ2hhbmdlID0gb3V0cHV0PFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWU+KCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2xhc3MgUHJvcGVydGllcyAgIC0tLS1cblxuICAgIC8vIERlc2lnbmVyIHN0YXRlIG1hbmFnZW1lbnQgLSBhbHdheXMgc3RhcnQgd2l0aCBhdCBsZWFzdCBvbmUgZGVmYXVsdCBzZWN0aW9uXG4gICAgcHJvdGVjdGVkIGJ1aWxkZXJTdGF0ZSA9IHNpZ25hbDxRdWVzdGlvbm5haXJlQnVpbGRlclN0YXRlPih7XG4gICAgICAgIHNlY3Rpb25zOiBbY3JlYXRlRGVmYXVsdFNlY3Rpb24oKV0sXG4gICAgfSk7XG5cbiAgICAvLyBTZWxlY3RlZCBpdGVtIHRyYWNraW5nXG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbUlkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZFNlY3Rpb25JZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIC8vIFRyYWNrIGlmIHdlJ3JlIG1ha2luZyBpbnRlcm5hbCB1cGRhdGVzIHRvIHByZXZlbnQgZWZmZWN0IGxvb3BzXG4gICAgcHJpdmF0ZSBpc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG5cbiAgICAvLyBGdWxsc2NyZWVuIGRpcmVjdGl2ZSByZWZlcmVuY2VcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnVsbHNjcmVlbkRpcmVjdGl2ZSA9IHZpZXdDaGlsZDxBWEZ1bGxTY3JlZW5EaXJlY3RpdmU+KCdmdWxsc2NyZWVuJyk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTGlmZWN5Y2xlICAgLS0tLVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIFRyYWNrIGxhc3QgZW1pdHRlZCB2YWx1ZSB0byBwcmV2ZW50IGNpcmN1bGFyIHVwZGF0ZXNcbiAgICAgICAgbGV0IGxhc3RFbWl0dGVkVmFsdWU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsID0gbnVsbDtcblxuICAgICAgICAvLyBTeW5jIHZhbHVlIGlucHV0IHRvIHN0YXRlIChvbmx5IHdoZW4gdmFsdWUgY2hhbmdlcyBleHRlcm5hbGx5KVxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5pc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gdW50cmFja2VkKCgpID0+IHRoaXMuYnVpbGRlclN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUoY3VycmVudFN0YXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIE9ubHkgdXBkYXRlIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkIGFuZCBpdCdzIGRpZmZlcmVudCBmcm9tIHdoYXQgd2UgbGFzdCBlbWl0dGVkXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsU3RyID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RyID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RW1pdHRlZFN0ciA9IGxhc3RFbWl0dGVkVmFsdWUgPyBKU09OLnN0cmluZ2lmeShsYXN0RW1pdHRlZFZhbHVlKSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgb25seSBpZjpcbiAgICAgICAgICAgICAgICAvLyAxLiBUaGUgaW5jb21pbmcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gY3VycmVudCBzdGF0ZSB2YWx1ZVxuICAgICAgICAgICAgICAgIC8vIDIuIEFORCBpdCdzIG5vdCB0aGUgdmFsdWUgd2UganVzdCBlbWl0dGVkIChwcmV2ZW50IGNpcmN1bGFyIHVwZGF0ZXMpXG4gICAgICAgICAgICAgICAgaWYgKHZhbFN0ciAhPT0gY3VycmVudFN0ciAmJiB2YWxTdHIgIT09IGxhc3RFbWl0dGVkU3RyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gY29udmVydFZhbHVlVG9TdGF0ZSh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUuc2V0KG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIExvYWQgcXVlc3Rpb24gZGV0YWlscyBmb3IgYWxsIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRRdWVzdGlvbkRldGFpbHNGb3JTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgJiYgIXRoaXMuaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIG51bGwvdW5kZWZpbmVkLCBlbnN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgZGVmYXVsdCBzZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gdW50cmFja2VkKCgpID0+IHRoaXMuYnVpbGRlclN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTZWN0aW9uID0gY3JlYXRlRGVmYXVsdFNlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNlY3Rpb24ub3JkZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUuc2V0KHsgc2VjdGlvbnM6IFtkZWZhdWx0U2VjdGlvbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3luYyBzdGF0ZSBjaGFuZ2VzIHRvIG91dHB1dFxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmJ1aWxkZXJTdGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0U3RhdGVUb1ZhbHVlKHN0YXRlLCBjdXJyZW50VmFsdWUgfHwgdW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgLy8gUHJldmVudCBjaXJjdWxhciB1cGRhdGVzXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RFbWl0dGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCBxdWVzdGlvbiBkZXRhaWxzIGZvciBhbGwgaXRlbXMgaW4gdGhlIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkUXVlc3Rpb25EZXRhaWxzRm9yU3RhdGUoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25JZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAvLyBDb2xsZWN0IGFsbCBxdWVzdGlvbiBiYW5rIGl0ZW0gSURzXG4gICAgICAgIHN0YXRlLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHNlY3Rpb24uaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCAmJiAhaXRlbS5xdWVzdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkcy5hZGQoaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVlc3Rpb25JZHMuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIHF1ZXN0aW9ucyBpbiBwYXJhbGxlbFxuICAgICAgICBjb25zdCBxdWVzdGlvblByb21pc2VzID0gQXJyYXkuZnJvbShxdWVzdGlvbklkcykubWFwKChpZCkgPT5cbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rU2VydmljZS5nZXRPbmUoaWQpLmNhdGNoKCgpID0+IG51bGwpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChxdWVzdGlvblByb21pc2VzKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBtYXAgb2YgcXVlc3Rpb24gSUQgdG8gcXVlc3Rpb24gZGF0YVxuICAgICAgICBjb25zdCBxdWVzdGlvbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgICAgIHF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9uTWFwLnNldChxLmlkLCBxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHN0YXRlIHdpdGggcXVlc3Rpb24gZGV0YWlsc1xuICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKGN1cnJlbnRTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBjdXJyZW50U3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnF1ZXN0aW9uKSByZXR1cm4gaXRlbTsgLy8gQWxyZWFkeSBoYXMgcXVlc3Rpb24gZGF0YVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRGF0YSA9IHF1ZXN0aW9uTWFwLmdldChpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcXVlc3Rpb25EYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcXVlc3Rpb25EYXRhLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcXVlc3Rpb25EYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiBxdWVzdGlvbkRhdGEuZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IHF1ZXN0aW9uRGF0YS5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgc2VjdGlvbnMgZm9yIHJlbmRlcmluZ1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYnVpbGRlclN0YXRlKCkuc2VjdGlvbnMpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgY2FuIHJlbW92ZSBzZWN0aW9uIChtdXN0IGhhdmUgYXQgbGVhc3QgMSBzZWN0aW9uKVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjYW5SZW1vdmVTZWN0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWN0aW9ucygpLmxlbmd0aCA+IDEpO1xuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgZGlzcGxheSBzZXR0aW5ncyBmcm9tIHN0YXRlIG9yIGRlZmF1bHRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGlzcGxheVNldHRpbmdzID0gY29tcHV0ZWQ8UXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncz4oKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuYnVpbGRlclN0YXRlKCk7XG4gICAgICAgIGlmIChzdGF0ZS5kaXNwbGF5U2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5kaXNwbGF5U2V0dGluZ3M7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmFsbGJhY2sgdG8gdmFsdWUgaWYgc3RhdGUgZG9lc24ndCBoYXZlIGl0XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGUsIHRoaXMudmFsdWUoKSB8fCB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlLmRpc3BsYXlTZXR0aW5ncyB8fCB7XG4gICAgICAgICAgICB2aWV3TW9kZTogJ3NpbmdsZS1wYWdlJyBhcyBjb25zdCxcbiAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAgICAgICAgIHNob3dUaW1lcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93U2VjdGlvblRpdGxlczogdHJ1ZSxcbiAgICAgICAgICAgIHNob3dRdWVzdGlvbk51bWJlcnM6IHRydWUsXG4gICAgICAgIH07XG4gICAgfSk7XG5cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBTZWN0aW9uIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgbWV0aG9kIHRvIHVwZGF0ZSBzdGF0ZSB3aGlsZSBwcmV2ZW50aW5nIGVmZmVjdCBsb29wc1xuICAgICAqIEVuc3VyZXMgYXQgbGVhc3Qgb25lIHNlY3Rpb24gYWx3YXlzIGV4aXN0c1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlU3RhdGUodXBkYXRlcjogKHN0YXRlOiBRdWVzdGlvbm5haXJlQnVpbGRlclN0YXRlKSA9PiBRdWVzdGlvbm5haXJlQnVpbGRlclN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNJbnRlcm5hbFVwZGF0ZSA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFN0YXRlID0gdXBkYXRlcihzdGF0ZSk7XG4gICAgICAgICAgICAgICAgLy8gU2FmZXR5IGNoZWNrOiBlbnN1cmUgYXQgbGVhc3Qgb25lIHNlY3Rpb24gYWx3YXlzIGV4aXN0c1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkU3RhdGUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTZWN0aW9uID0gY3JlYXRlRGVmYXVsdFNlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNlY3Rpb24ub3JkZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udXBkYXRlZFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IFtkZWZhdWx0U2VjdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkU3RhdGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIFJlc2V0IGZsYWcgYWZ0ZXIgY3VycmVudCBleGVjdXRpb24gY29udGV4dFxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBhZGRpbmcgYSBuZXcgc2VjdGlvblxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUFkZFNlY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBhZGRUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuYWRkLXNlY3Rpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdBZGQgU2VjdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGdlbmVyYWw6dGVybXMuY29tbW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVGl0bGUnO1xuXG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgICkgfHwgJ0Rlc2NyaXB0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKGFkZFRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNpemUoJ21kJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDbG9zZUJ1dHRvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh0aXRsZUxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gdGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKGRlc2NyaXB0aW9uTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2Rlc2NyaXB0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubGFyZ2VUZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzZWN0aW9uIGRlc2NyaXB0aW9uIChvcHRpb25hbCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldEFjdGlvbnMoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYW5jZWwoJ0BnZW5lcmFsOmFjdGlvbnMuY2FuY2VsLnRpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1Ym1pdCgnQGdlbmVyYWw6YWN0aW9ucy5zYXZlLnRpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gZGlhbG9nUmVmLmNvbnRleHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGF3YWl0IGRpYWxvZ1JlZi5hY3Rpb24oKTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uICE9PSAnY2FuY2VsJyAmJiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlY3Rpb24gPSBjcmVhdGVEZWZhdWx0U2VjdGlvbigpO1xuICAgICAgICAgICAgICAgIG5ld1NlY3Rpb24ub3JkZXIgPSB0aGlzLnNlY3Rpb25zKCkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIG5ld1NlY3Rpb24udGl0bGUgPSBmb3JtRGF0YS50aXRsZSB8fCAnTmV3IFNlY3Rpb24nO1xuICAgICAgICAgICAgICAgIG5ld1NlY3Rpb24uZGVzY3JpcHRpb24gPSBmb3JtRGF0YS5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBbLi4uc3RhdGUuc2VjdGlvbnMsIG5ld1NlY3Rpb25dLFxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCB0byB0aGUgbmV3bHkgYWRkZWQgc2VjdGlvbiBhZnRlciBET00gdXBkYXRlXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHNlY3Rpb24tJHtuZXdTZWN0aW9uLmlkfWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWRkaW5nIHNlY3Rpb246JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHNlY3Rpb24gZWRpdGluZ1xuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZVNlY3Rpb25FZGl0KHNlY3Rpb246IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZWRpdFRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5lZGl0LXNlY3Rpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdFZGl0IFNlY3Rpb24nO1xuXG4gICAgICAgICAgICBjb25zdCB0aXRsZUxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1RpdGxlJztcblxuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb25MYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24uZGVzY3JpcHRpb24nXG4gICAgICAgICAgICApIHx8ICdEZXNjcmlwdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IGF3YWl0IHRoaXMubGF5b3V0QnVpbGRlclxuICAgICAgICAgICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAgICAgICAgIC5kaWFsb2coKGRpYWxvZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShlZGl0VGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0U2l6ZSgnbWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNlY3Rpb24udGl0bGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHNlY3Rpb24uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh0aXRsZUxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gdGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKGRlc2NyaXB0aW9uTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2Rlc2NyaXB0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubGFyZ2VUZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzZWN0aW9uIGRlc2NyaXB0aW9uIChvcHRpb25hbCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldEFjdGlvbnMoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYW5jZWwoJ0BnZW5lcmFsOmFjdGlvbnMuY2FuY2VsLnRpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1Ym1pdCgnQGdlbmVyYWw6YWN0aW9ucy5zYXZlLnRpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gZGlhbG9nUmVmLmNvbnRleHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGF3YWl0IGRpYWxvZ1JlZi5hY3Rpb24oKTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uICE9PSAnY2FuY2VsJyAmJiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgocykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHMuaWQgPT09IHNlY3Rpb24uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvcm1EYXRhLnRpdGxlIHx8IHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkID8gZm9ybURhdGEuZGVzY3JpcHRpb24gOiBzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlZGl0aW5nIHNlY3Rpb246JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHNlY3Rpb24gcmVtb3ZhbFxuICAgICAqL1xuICAgIGhhbmRsZVNlY3Rpb25SZW1vdmUoc2VjdGlvbjogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIC8vIERvbid0IGFsbG93IHJlbW92aW5nIHRoZSBsYXN0IHNlY3Rpb24gLSBtdXN0IGFsd2F5cyBoYXZlIGF0IGxlYXN0IG9uZVxuICAgICAgICBpZiAodGhpcy5zZWN0aW9ucygpLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgdGhlIHNlY3Rpb24gYW5kIHVwZGF0ZSBvcmRlciB2YWx1ZXNcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+IHMuaWQgIT09IHNlY3Rpb24uaWQpXG4gICAgICAgICAgICAgICAgLm1hcCgocywgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgc2VjdGlvbiBkcm9wIChyZW9yZGVyaW5nKVxuICAgICAqL1xuICAgIGhhbmRsZVNlY3Rpb25Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb25bXT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBvcmRlciB2YWx1ZXNcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgSXRlbSBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGFkZGluZyBxdWVzdGlvbnMgdG8gYSBzZWN0aW9uXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlQWRkUXVlc3Rpb25zVG9TZWN0aW9uKHNlY3Rpb246IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IG5ldyBBWERhdGFTb3VyY2Uoe1xuICAgICAgICAgICAgICAgIGtleTogJ2lkJyxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMjAsXG4gICAgICAgICAgICAgICAgbG9hZDogYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25zID0gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLnF1ZXJ5KGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHF1ZXN0aW9ucy5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBxdWVzdGlvbnMudG90YWwsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgY2F0ZWdvcnkgdHJlZSBkYXRhIHNvdXJjZSBmb3IgZmlsdGVyaW5nXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeVRyZWVEYXRhU291cmNlOiBBWFBDYXRlZ29yeVRyZWVEYXRhU291cmNlID0ge1xuICAgICAgICAgICAgICAgIGxvYWRSb290Tm9kZXM6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlOiAxMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdwYXJlbnRJZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2lzRW1wdHknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudDogaXRlbS5jaGlsZHJlbkNvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvYWRDaGlsZE5vZGVzOiBhc3luYyAocGFyZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnQ6IGl0ZW0uY2hpbGRyZW5Db3VudCB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWFyY2hOb2RlczogYXN5bmMgKHNlYXJjaFZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlOiAxMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZWFyY2hWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZWFyY2hWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnQ6IGl0ZW0uY2hpbGRyZW5Db3VudCB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGVudGl0eTogQVhQRW50aXR5IHwgbnVsbCA9IGF3YWl0IHRoaXMuZW50aXR5UmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgICAgICAgICAgICAgIFJvb3RDb25maWcuZW50aXRpZXMucXVlc3Rpb25CYW5rSXRlbS5uYW1lLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgbm90IGZvdW5kOiAnICsgUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLm5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID1cbiAgICAgICAgICAgICAgICBlbnRpdHkuY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoY29sdW1uOiBBWFBFbnRpdHlUYWJsZUNvbHVtbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eSEucHJvcGVydGllcy5zb21lKChwcm9wZXJ0eTogQVhQRW50aXR5UHJvcGVydHkpID0+IHByb3BlcnR5Lm5hbWUgPT09IGNvbHVtbi5uYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2x1bW46IEFYUEVudGl0eVRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGVudGl0eSEucHJvcGVydGllcy5maW5kKChwcm9wOiBBWFBFbnRpdHlQcm9wZXJ0eSkgPT4gcHJvcC5uYW1lID09PSBjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wZXJ0eT8udGl0bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLm9wdGlvbnM/LnZpc2libGUgIT09IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2x1bW4uc2hvd0FzPy50eXBlID8/IHByb3BlcnR5Py5zY2hlbWE/LmludGVyZmFjZT8udHlwZSA/PyAndGV4dC1lZGl0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBjb2x1bW4uc2hvd0FzPy5vcHRpb25zID8/IHByb3BlcnR5Py5zY2hlbWE/LmludGVyZmFjZT8ub3B0aW9ucyA/PyB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgICAgIC8vIFRyYW5zbGF0ZSB0aXRsZXNcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdFF1ZXN0aW9uc1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuc2VsZWN0LXF1ZXN0aW9ucydcbiAgICAgICAgICAgICkgfHwgJ1NlbGVjdCBRdWVzdGlvbnMgZnJvbSBRdWVzdGlvbiBCYW5rJztcblxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuY2F0ZWdvcmllcydcbiAgICAgICAgICAgICkgfHwgJ0NhdGVnb3JpZXMnO1xuXG4gICAgICAgICAgICBjb25zdCB0aXRsZUxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi50aXRsZScpIHx8ICdUaXRsZSc7XG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kZXNjcmlwdGlvbicpIHx8ICdEZXNjcmlwdGlvbic7XG5cbiAgICAgICAgICAgIC8vIE9wZW4gZGF0YSBzZWxlY3RvciB3aXRoIGNhdGVnb3J5IGZpbHRlclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kYXRhU2VsZWN0b3JTZXJ2aWNlLm9wZW5XaXRoQ2F0ZWdvcnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2VsZWN0UXVlc3Rpb25zVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU6ICdtdWx0aXBsZScsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEZpZWxkczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAndGl0bGUnLCB0aXRsZTogdGl0bGVMYWJlbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnZGVzY3JpcHRpb24nLCB0aXRsZTogZGVzY3JpcHRpb25MYWJlbCB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBhbGxvd0NyZWF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yaWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGNhdGVnb3J5VHJlZURhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnY2F0ZWdvcnlJZHMnLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJPcGVyYXRvcjogJ2NvbnRhaW5zJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICczNTBweCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBzZWxlY3RlZCBxdWVzdGlvbnMgdG8gdGhlIHNlY3Rpb25cbiAgICAgICAgICAgIGlmIChyZXN1bHQ/Lml0ZW1zICYmIHJlc3VsdC5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gTG9hZCBmdWxsIHF1ZXN0aW9uIGRldGFpbHMgZm9yIGVhY2ggc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uUHJvbWlzZXMgPSByZXN1bHQuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rU2VydmljZS5nZXRPbmUoaXRlbS5pZCkuY2F0Y2goKCkgPT4gbnVsbCksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChxdWVzdGlvblByb21pc2VzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW1zOiBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW1bXSA9IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmdWxsUXVlc3Rpb24gPSBxdWVzdGlvbnNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24uaXRlbXMubGVuZ3RoICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV3bHlBZGRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiBmdWxsUXVlc3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGZ1bGxRdWVzdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bGxRdWVzdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZ1bGxRdWVzdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0eTogZnVsbFF1ZXN0aW9uLmRpZmZpY3VsdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdUeXBlOiBmdWxsUXVlc3Rpb24uc2NvcmluZ1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgJ1F1ZXN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZpY3VsdHk6IGl0ZW0uZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IGl0ZW0uc2NvcmluZ1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5pZCA9PT0gc2VjdGlvbi5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogWy4uLnMuaXRlbXMsIC4uLm5ld0l0ZW1zXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcXVlc3Rpb25zOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBpdGVtIHJlbW92YWxcbiAgICAgKi9cbiAgICBoYW5kbGVJdGVtUmVtb3ZlKGl0ZW06IFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbSwgc2VjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlkICE9PSBzZWN0aW9uSWQpIHJldHVybiBzZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgLy8gSGFyZCBkZWxldGUgLSByZW1vdmUgaXRlbSBmcm9tIGFycmF5XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMuZmlsdGVyKChpKSA9PiBpLmlkICE9PSBpdGVtLmlkKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBxdWVzdGlvbiBpdGVtIGVkaXRpbmcgKHNldHRpbmdzKVxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUl0ZW1FZGl0KGl0ZW06IFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbSwgc2VjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIExvYWQgZnVsbCBxdWVzdGlvbiBkZXRhaWxzIHRvIGdldCBkZWZhdWx0IHNjb3JpbmcgdmFsdWVzXG4gICAgICAgICAgICBjb25zdCBxdWVzdGlvbkRldGFpbHMgPSBpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZFxuICAgICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldE9uZShpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgIGNvbnN0IGVkaXRUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuZWRpdC1xdWVzdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0VkaXQgUXVlc3Rpb24gU2V0dGluZ3MnO1xuXG4gICAgICAgICAgICBjb25zdCBpc1JlcXVpcmVkTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5maWVsZHMuaXMtcmVxdWlyZWQudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdSZXF1aXJlZCc7XG5cbiAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlDb25kaXRpb25MYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy52aXNpYmlsaXR5LWNvbmRpdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Zpc2liaWxpdHkgQ29uZGl0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRDb25kaXRpb25MYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5yZXF1aXJlZC1jb25kaXRpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdSZXF1aXJlZCBDb25kaXRpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBzY29yaW5nUG9pbnRzTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5maWVsZHMuc2NvcmluZy1wb2ludHMudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdTY29yaW5nIFBvaW50cyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjb3JpbmdXZWlnaHRMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5zY29yaW5nLXdlaWdodC50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Njb3JpbmcgV2VpZ2h0JztcblxuICAgICAgICAgICAgLy8gR2V0IGRlZmF1bHQgdmFsdWVzIGZyb20gcXVlc3Rpb24gYmFuayBpdGVtIG9yIHVzZSBleGlzdGluZyBvdmVycmlkZSB2YWx1ZXNcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTY29yaW5nUG9pbnRzID0gaXRlbS5zY29yaW5nT3ZlcnJpZGU/LnBvaW50cyA/PyBxdWVzdGlvbkRldGFpbHM/LnBvaW50cyA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTY29yaW5nV2VpZ2h0ID0gaXRlbS5zY29yaW5nT3ZlcnJpZGU/LndlaWdodCA/PyBxdWVzdGlvbkRldGFpbHM/LndlaWdodCA/PyAnJztcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKGVkaXRUaXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRTaXplKCdtZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q2xvc2VCdXR0b24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBpdGVtLmlzUmVxdWlyZWQgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogaXRlbS52aXNpYmlsaXR5Q29uZGl0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uOiBpdGVtLnJlcXVpcmVkQ29uZGl0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdQb2ludHM6IGRlZmF1bHRTY29yaW5nUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdXZWlnaHQ6IGRlZmF1bHRTY29yaW5nV2VpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jb250ZW50KChsYXlvdXRCdWlsZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0QnVpbGRlci5mbGV4KChmbGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXREaXJlY3Rpb24oJ2NvbHVtbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0R2FwKCcxNnB4JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoaXNSZXF1aXJlZExhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdpc1JlcXVpcmVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh2aXNpYmlsaXR5Q29uZGl0aW9uTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Zpc2liaWxpdHlDb25kaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5jdXN0b21XaWRnZXQoJ2NvZGUtZWRpdG9yJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnbWluLWgtNDgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQocmVxdWlyZWRDb25kaXRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgncmVxdWlyZWRDb25kaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5jdXN0b21XaWRnZXQoJ2NvZGUtZWRpdG9yJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnbWluLWgtNDgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoc2NvcmluZ1BvaW50c0xhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzY29yaW5nUG9pbnRzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubnVtYmVyQm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzY29yaW5nIHBvaW50cyAob3B0aW9uYWwpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNjb3JpbmdXZWlnaHRMYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnc2NvcmluZ1dlaWdodCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm51bWJlckJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgc2NvcmluZyB3ZWlnaHQgKG9wdGlvbmFsKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5pZCAhPT0gc2VjdGlvbklkKSByZXR1cm4gc2VjdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uLml0ZW1zLm1hcCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5pZCAhPT0gaXRlbS5pZCkgcmV0dXJuIGk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnVpbGQgc2NvcmluZyBvdmVycmlkZSBpZiBwb2ludHMgb3Igd2VpZ2h0IGFyZSBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcmluZ092ZXJyaWRlOiB7IHBvaW50cz86IG51bWJlcjsgd2VpZ2h0PzogbnVtYmVyIH0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BvaW50cyA9IGZvcm1EYXRhLnNjb3JpbmdQb2ludHMgIT09IHVuZGVmaW5lZCAmJiBmb3JtRGF0YS5zY29yaW5nUG9pbnRzICE9PSBudWxsICYmIGZvcm1EYXRhLnNjb3JpbmdQb2ludHMgIT09ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNXZWlnaHQgPSBmb3JtRGF0YS5zY29yaW5nV2VpZ2h0ICE9PSB1bmRlZmluZWQgJiYgZm9ybURhdGEuc2NvcmluZ1dlaWdodCAhPT0gbnVsbCAmJiBmb3JtRGF0YS5zY29yaW5nV2VpZ2h0ICE9PSAnJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUG9pbnRzIHx8IGhhc1dlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlLnBvaW50cyA9IE51bWJlcihmb3JtRGF0YS5zY29yaW5nUG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNXZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGUud2VpZ2h0ID0gTnVtYmVyKGZvcm1EYXRhLnNjb3JpbmdXZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBmb3JtRGF0YS5pc1JlcXVpcmVkID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogZm9ybURhdGEudmlzaWJpbGl0eUNvbmRpdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogZm9ybURhdGEucmVxdWlyZWRDb25kaXRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlOiBzY29yaW5nT3ZlcnJpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlZGl0aW5nIHF1ZXN0aW9uOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBpdGVtIGRyb3AgKHJlb3JkZXJpbmcgd2l0aGluIHNlY3Rpb24gb3IgYmV0d2VlbiBzZWN0aW9ucylcbiAgICAgKi9cbiAgICBoYW5kbGVJdGVtRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8UXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtW10+LCB0YXJnZXRTZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgLy8gUmVvcmRlcmluZyB3aXRoaW4gc2FtZSBzZWN0aW9uXG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb24uaWQgIT09IHRhcmdldFNlY3Rpb25JZCkgcmV0dXJuIHNlY3Rpb247XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTW92aW5nIGl0ZW0gYmV0d2VlbiBzZWN0aW9uc1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBvcmRlcnMgZm9yIGJvdGggc2VjdGlvbnNcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5pZCA9PT0gdGFyZ2V0U2VjdGlvbklkIHx8IHNlY3Rpb24uaWQgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlY3Rpb247XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHNlY3Rpb24gZHJvcCBsaXN0cyBmb3IgZHJhZy1kcm9wIGNvbm5lY3Rpdml0eVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRBbGxTZWN0aW9uRHJvcExpc3RzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VjdGlvbnMoKS5tYXAoKHNlY3Rpb24pID0+IGBzZWN0aW9uLSR7c2VjdGlvbi5pZH0taXRlbXNgKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRGlzcGxheSBTZXR0aW5ncyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBvcGVuaW5nIGRpc3BsYXkgc2V0dGluZ3MgZGlhbG9nXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5nc1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5zZXR0aW5ncy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0Rpc3BsYXkgU2V0dGluZ3MnO1xuXG4gICAgICAgICAgICBjb25zdCB2aWV3TW9kZUxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVmlldyBNb2RlJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1Byb2dyZXNzQmFyTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXByb2dyZXNzLWJhci50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Nob3cgUHJvZ3Jlc3MgQmFyJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1RpbWVyTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXRpbWVyLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBUaW1lcic7XG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dTZWN0aW9uVGl0bGVzTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXNlY3Rpb24tdGl0bGVzLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBTZWN0aW9uIFRpdGxlcyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dRdWVzdGlvbk51bWJlcnNMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctcXVlc3Rpb24tbnVtYmVycy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Nob3cgUXVlc3Rpb24gTnVtYmVycyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmFsaWRhdGUtYmVmb3JlLW5hdmlnYXRpb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdWYWxpZGF0ZSBCZWZvcmUgTmF2aWdhdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZXR0aW5ncyA9IHRoaXMuZGlzcGxheVNldHRpbmdzKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IGF3YWl0IHRoaXMubGF5b3V0QnVpbGRlclxuICAgICAgICAgICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAgICAgICAgIC5kaWFsb2coKGRpYWxvZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShzZXR0aW5nc1RpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNpemUoJ21kJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDbG9zZUJ1dHRvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlOiBjdXJyZW50U2V0dGluZ3Mudmlld01vZGUgfHwgJ3NpbmdsZS1wYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3NCYXI6IGN1cnJlbnRTZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXIgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGltZXI6IGN1cnJlbnRTZXR0aW5ncy5zaG93VGltZXIgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1NlY3Rpb25UaXRsZXM6IGN1cnJlbnRTZXR0aW5ncy5zaG93U2VjdGlvblRpdGxlcyA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dRdWVzdGlvbk51bWJlcnM6IGN1cnJlbnRTZXR0aW5ncy5zaG93UXVlc3Rpb25OdW1iZXJzID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uOiBjdXJyZW50U2V0dGluZ3MudmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh2aWV3TW9kZUxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd2aWV3TW9kZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnNlbGVjdEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NpbmdsZS1wYWdlJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnNpbmdsZS1wYWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3BhZ2UtcGVyLWdyb3VwJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnBhZ2UtcGVyLWdyb3VwJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3BhZ2UtcGVyLXF1ZXN0aW9uJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnBhZ2UtcGVyLXF1ZXN0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NpZGUtbWVudScsIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52aWV3LW1vZGUub3B0aW9ucy5zaWRlLW1lbnUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93UHJvZ3Jlc3NCYXJMYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnc2hvd1Byb2dyZXNzQmFyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93VGltZXJMYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnc2hvd1RpbWVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93U2VjdGlvblRpdGxlc0xhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93U2VjdGlvblRpdGxlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnRvZ2dsZVN3aXRjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoc2hvd1F1ZXN0aW9uTnVtYmVyc0xhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93UXVlc3Rpb25OdW1iZXJzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCh2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgndmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gRXh0cmFjdCB2aWV3TW9kZSAtIGhhbmRsZSBib3RoIHN0cmluZyBhbmQgb2JqZWN0IChmcm9tIHNlbGVjdCBib3gpXG4gICAgICAgICAgICAgICAgbGV0IHZpZXdNb2RlOiAnc2luZ2xlLXBhZ2UnIHwgJ3BhZ2UtcGVyLWdyb3VwJyB8ICdwYWdlLXBlci1xdWVzdGlvbicgPSAnc2luZ2xlLXBhZ2UnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlVmFsdWUgPSBmb3JtRGF0YS52aWV3TW9kZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZpZXdNb2RlVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID0gdmlld01vZGVWYWx1ZSBhcyAnc2luZ2xlLXBhZ2UnIHwgJ3BhZ2UtcGVyLWdyb3VwJyB8ICdwYWdlLXBlci1xdWVzdGlvbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3TW9kZVZhbHVlICYmIHR5cGVvZiB2aWV3TW9kZVZhbHVlID09PSAnb2JqZWN0JyAmJiAnaWQnIGluIHZpZXdNb2RlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGUgPSAodmlld01vZGVWYWx1ZSBhcyBhbnkpLmlkIGFzICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTZXR0aW5nczogUXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGU6IHZpZXdNb2RlLFxuICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZvcm1EYXRhLnNob3dQcm9ncmVzc0JhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzaG93VGltZXI6IGZvcm1EYXRhLnNob3dUaW1lciA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NlY3Rpb25UaXRsZXM6IGZvcm1EYXRhLnNob3dTZWN0aW9uVGl0bGVzID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNob3dRdWVzdGlvbk51bWJlcnM6IGZvcm1EYXRhLnNob3dRdWVzdGlvbk51bWJlcnMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uOiBmb3JtRGF0YS52YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHN0YXRlIGJ5IHByZXNlcnZpbmcgZXhpc3RpbmcgcXVlc3Rpb24gZGF0YSBhbmQgdXBkYXRpbmcgZGlzcGxheVNldHRpbmdzIGluIHN0YXRlXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlTZXR0aW5ncyBpbiBzdGF0ZSBkaXJlY3RseVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTZXR0aW5nczogbmV3U2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRTdGF0ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9wZW5pbmcgc2V0dGluZ3M6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFByZXZpZXcgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBPcGVuIHByZXZpZXcgZGlhbG9nIHdpdGggcXVlc3Rpb25uYWlyZSB2aWV3ZXJcbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVQcmV2aWV3KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5zZWN0aW9ucygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUodGhpcy5idWlsZGVyU3RhdGUoKSwgdGhpcy52YWx1ZSgpIHx8IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAvLyBBbHdheXMgdXNlIHRoZSBjdXJyZW50IGRpc3BsYXlTZXR0aW5ncyBmcm9tIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSB0byBlbnN1cmUgcHJldmlldyB1c2VzIGxhdGVzdCBzZXR0aW5nc1xuICAgICAgICAgICAgY3VycmVudFZhbHVlLmRpc3BsYXlTZXR0aW5ncyA9IHRoaXMuZGlzcGxheVNldHRpbmdzKCk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aWV3VGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLnByZXZpZXcudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdQcmV2aWV3JztcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVzdGlvbm5haXJlVmlld2VyU2VydmljZS5vcGVuKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJldmlld1RpdGxlLFxuICAgICAgICAgICAgICAgIHN0cnVjdHVyZTogY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgIHByZVBvc3RDb25maWc6IHRoaXMucHJlUG9zdENvbmZpZygpID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGcnLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSByZXN1bHQgaWYgbmVlZGVkIChhbnN3ZXJzLCBzdWJtaXR0ZWQgc3RhdHVzKVxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdRdWVzdGlvbm5haXJlIHByZXZpZXcgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvcGVuaW5nIHByZXZpZXc6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGZ1bGxzY3JlZW4gbW9kZSB1c2luZyB0aGUgZGlyZWN0aXZlXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZnVsbHNjcmVlbiA9IHRoaXMuZnVsbHNjcmVlbkRpcmVjdGl2ZSgpO1xuICAgICAgICBpZiAoZnVsbHNjcmVlbikge1xuICAgICAgICAgICAgYXdhaXQgZnVsbHNjcmVlbi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iLCI8ZGl2IGNsYXNzPVwiYXhtLXF1ZXN0aW9ubmFpcmUtYnVpbGRlclwiIGF4RnVsbHNjcmVlbiAjZnVsbHNjcmVlbj1cImF4RnVsbHNjcmVlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJfX2hlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19oZWFkZXItbGVmdFwiPlxuICAgICAgICAgICAgPCEtLSBMZWZ0IHNpZGUgY2FuIGJlIHVzZWQgZm9yIG90aGVyIGFjdGlvbnMgaW4gdGhlIGZ1dHVyZSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX2hlYWRlci1yaWdodFwiPlxuICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuXG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmFkZC1zZWN0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnQWRkIFNlY3Rpb24nXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCIgKG9uQ2xpY2spPVwiaGFuZGxlQWRkU2VjdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWxheWVyLWdyb3VwXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5zZXR0aW5ncy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ1NldHRpbmdzJ1wiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU2V0dGluZ3MoKVwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1nZWFyXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5wcmV2aWV3LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnUHJldmlldydcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWN0aW9ucygpLmxlbmd0aCA9PT0gMFwiIChvbkNsaWNrKT1cImhhbmRsZVByZXZpZXcoKVwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1leWVcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmZ1bGxzY3JlZW4udGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICdGdWxsIFNjcmVlbidcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUZ1bGxzY3JlZW4oKVwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1leHBhbmRcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgIDwhLS0gRGVzaWduZXIgTW9kZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvbnMtY29udGFpbmVyXCIgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJzZWN0aW9ucygpXCJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiaGFuZGxlU2VjdGlvbkRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLmlkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uXCIgY2RrRHJhZyBbaWRdPVwiJ3NlY3Rpb24tJyArIHNlY3Rpb24uaWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24tZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWdyaXAtdmVydGljYWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24taW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiX19zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19zZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3sgc2VjdGlvbi5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvbi1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuYWRkLXF1ZXN0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2FjY2VudDInXCIgKG9uQ2xpY2spPVwiaGFuZGxlQWRkUXVlc3Rpb25zVG9TZWN0aW9uKHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLXBsdXNcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIFtsb29rXT1cIidibGFuaydcIiBjb2xvcj1cImFjY2VudDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25FZGl0KHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1wZW5jaWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2FuUmVtb3ZlU2VjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBbbG9va109XCInYmxhbmsnXCIgY29sb3I9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25SZW1vdmUoc2VjdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXRyYXNoLWNhblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW1zLWxpc3QgYXgtb3ZlcmZsb3ctYXV0b1wiIGNka0Ryb3BMaXN0IFtpZF09XCInc2VjdGlvbi0nICsgc2VjdGlvbi5pZCArICctaXRlbXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwic2VjdGlvbi5pdGVtc1wiIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cImdldEFsbFNlY3Rpb25Ecm9wTGlzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZUl0ZW1Ecm9wKCRldmVudCwgc2VjdGlvbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxheHAtc3RhdGUtbWVzc2FnZSBpY29uPVwiZmEtbGlnaHQgZmEtaW5ib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZW1wdHktc3RhdGVzLmVtcHR5LXNlY3Rpb24udGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmVtcHR5LXN0YXRlcy5lbXB0eS1zZWN0aW9uLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBzZWN0aW9uLml0ZW1zOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fZHJhZy1oYW5kbGVcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLl9fZGlmZmljdWx0eS1lYXN5XT1cIml0ZW0ucXVlc3Rpb24/LmRpZmZpY3VsdHkgPT09ICdlYXN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLl9fZGlmZmljdWx0eS1tZWRpdW1dPVwiaXRlbS5xdWVzdGlvbj8uZGlmZmljdWx0eSA9PT0gJ21lZGl1bSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5fX2RpZmZpY3VsdHktaGFyZF09XCJpdGVtLnF1ZXN0aW9uPy5kaWZmaWN1bHR5ID09PSAnaGFyZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtcXVlc3Rpb24tY2lyY2xlXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJfX2l0ZW0tdGl0bGVcIj57eyBpdGVtLnF1ZXN0aW9uPy50aXRsZSA/PyAnUXVlc3Rpb24nIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ucXVlc3Rpb24/LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJfX2l0ZW0tZGVzY3JpcHRpb25cIj57eyBpdGVtLnF1ZXN0aW9uPy5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0tbWV0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJfX2l0ZW0tYmFkZ2UgX19yZXF1aXJlZFwiPlJlcXVpcmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmluZ092ZXJyaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJfX2l0ZW0tYmFkZ2VcIj5DdXN0b20gU2NvcmluZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIFtsb29rXT1cIidibGFuaydcIiBjb2xvcj1cImFjY2VudDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlSXRlbUVkaXQoaXRlbSwgc2VjdGlvbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtcGVuY2lsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBbbG9va109XCInYmxhbmsnXCIgY2xhc3M9XCJheC1zbVwiIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUl0ZW1SZW1vdmUoaXRlbSwgc2VjdGlvbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0="],"names":[],"mappings":"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"}
|