vcomply-workflow-engine 3.5.3 → 3.5.4
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/esm2022/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +897 -0
- package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +204 -0
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +1569 -0
- package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +774 -0
- package/esm2022/lib/configurations.mjs +6 -0
- package/esm2022/lib/confirmation-alert/confirmation-alert.component.mjs +28 -0
- package/esm2022/lib/constants/link-responsibility.constants.mjs +9 -0
- package/esm2022/lib/constants/time.constants.mjs +3 -0
- package/esm2022/lib/create-documents/create-documents.component.mjs +145 -0
- package/esm2022/lib/formgroup/cs-checkbox/cs-checkbox.component.mjs +36 -0
- package/esm2022/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
- package/esm2022/lib/formgroup/cs-radio/cs-radio.component.mjs +34 -0
- package/esm2022/lib/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
- package/esm2022/lib/formgroup/cs-select/cs-select.component.mjs +95 -0
- package/esm2022/lib/formgroup/cs-switch/cs-switch.component.mjs +31 -0
- package/esm2022/lib/formgroup/formgroup.module.mjs +56 -0
- package/esm2022/lib/formgroup/pipes/pascal.pipe.mjs +19 -0
- package/esm2022/lib/formgroup/select/cs-option/cs-option.component.mjs +42 -0
- package/esm2022/lib/formgroup/select/cs-select/cs-select.component.mjs +106 -0
- package/esm2022/lib/formgroup/select/select.module.mjs +21 -0
- package/esm2022/lib/formgroup/select/select.service.mjs +48 -0
- package/esm2022/lib/interfaces/categoryList.mjs +2 -0
- package/esm2022/lib/interfaces/confirmation-alert.mjs +2 -0
- package/esm2022/lib/interfaces/issue-data.mjs +2 -0
- package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +1212 -0
- package/esm2022/lib/more-option/more-option.component.mjs +790 -0
- package/esm2022/lib/pipes/data-type.pipe.mjs +16 -0
- package/esm2022/lib/pipes/dom-sanitizer.pipe.mjs +24 -0
- package/esm2022/lib/pipes/filter.pipe.mjs +24 -0
- package/esm2022/lib/pipes/is-read-more.pipe.mjs +21 -0
- package/esm2022/lib/pipes/list-mapper.pipe.mjs +21 -0
- package/esm2022/lib/pipes/pipes.module.mjs +67 -0
- package/esm2022/lib/pipes/search.pipe.mjs +37 -0
- package/esm2022/lib/pipes/space-breaker.pipe.mjs +21 -0
- package/esm2022/lib/pipes/uncategorized-filter.pipe.mjs +21 -0
- package/esm2022/lib/pipes/user-filter.pipe.mjs +30 -0
- package/esm2022/lib/services/bulk-upload.service.mjs +44 -0
- package/esm2022/lib/services/common.service.mjs +41 -0
- package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +265 -0
- package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +73 -0
- package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +83 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.mjs +347 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.mjs +75 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.mjs +124 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.mjs +154 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/build.module.mjs +111 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.mjs +37 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.mjs +74 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.mjs +18 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.mjs +37 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.mjs +37 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.mjs +56 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.mjs +179 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/error.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/question.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/validateStructure.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +104 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.mjs +26 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.mjs +56 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +17 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.mjs +26 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.mjs +101 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.mjs +24 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/move/move.component.mjs +103 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.mjs +23 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.mjs +27 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.mjs +17 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.mjs +49 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.mjs +30 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.mjs +17 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.mjs +31 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.mjs +78 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview.module.mjs +152 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.mjs +19 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.mjs +252 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.mjs +35 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.mjs +61 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.mjs +163 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.mjs +118 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.mjs +23 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +97 -0
- package/esm2022/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +493 -0
- package/esm2022/lib/sharedComponents/assessment-editor/create-assessment.module.mjs +154 -0
- package/esm2022/lib/sharedComponents/assessment-editor/services/editor.service.mjs +635 -0
- package/esm2022/lib/sharedComponents/assessment-editor/services/result-criteria.service.mjs +48 -0
- package/esm2022/lib/sharedComponents/assessment-editor/services/validator.service.mjs +546 -0
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +207 -0
- package/esm2022/lib/sharedComponents/assessment-list/service/assessment.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-list/service/assessment.service.mjs +31 -0
- package/esm2022/lib/sharedComponents/assessment-preview/assessment-preview.module.mjs +113 -0
- package/esm2022/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-preview/date-time/date-time.component.mjs +53 -0
- package/esm2022/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.mjs +24 -0
- package/esm2022/lib/sharedComponents/assessment-preview/device/device.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-preview/page-header/page-header.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-preview/pipes/get-section-order.pipe.mjs +24 -0
- package/esm2022/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +62 -0
- package/esm2022/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-preview/section-details/section-details.component.mjs +20 -0
- package/esm2022/lib/sharedComponents/assessment-preview/select-question/select-question.component.mjs +35 -0
- package/esm2022/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-preview/welcome/welcome.component.mjs +17 -0
- package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +61 -0
- package/esm2022/lib/sharedComponents/audit-category-list/audit-category.model.mjs +2 -0
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +72 -0
- package/esm2022/lib/sharedComponents/bulk-view/bulk-view.component.mjs +75 -0
- package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +84 -0
- package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +166 -0
- package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +92 -0
- package/esm2022/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +315 -0
- package/esm2022/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.mjs +25 -0
- package/esm2022/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +149 -0
- package/esm2022/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.mjs +48 -0
- package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +77 -0
- package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +197 -0
- package/esm2022/lib/sharedComponents/directive/autofocus.directive.mjs +22 -0
- package/esm2022/lib/sharedComponents/directive/conditional-focus.directive.mjs +35 -0
- package/esm2022/lib/sharedComponents/directive/drag-drop.directive.mjs +52 -0
- package/esm2022/lib/sharedComponents/directive/input-trim.directive.mjs +21 -0
- package/esm2022/lib/sharedComponents/directive/scroll-in-view.directive.mjs +35 -0
- package/esm2022/lib/sharedComponents/document-section/document-section.component.mjs +184 -0
- package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +122 -0
- package/esm2022/lib/sharedComponents/floating-bar/floating-bar.module.mjs +20 -0
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +308 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-integration-interfaces.mjs +2 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.mjs +38 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +429 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.mjs +43 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +95 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +297 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +218 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.mjs +36 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +303 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +152 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-due-date/due-date.contant.mjs +21 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +83 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +199 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/lifecycl.constant.mjs +12 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +223 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +170 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +189 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +75 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +214 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +36 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +253 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +213 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +133 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +200 -0
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +573 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +300 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +216 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.mjs +29 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +296 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.mjs +110 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +227 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +213 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +212 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +128 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.mjs +197 -0
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +259 -0
- package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +472 -0
- package/esm2022/lib/sharedComponents/link-program/link-program/program-list-model.mjs +2 -0
- package/esm2022/lib/sharedComponents/link-program/program-integration-interfaces.mjs +2 -0
- package/esm2022/lib/sharedComponents/link-program/restapi.service.mjs +149 -0
- package/esm2022/lib/sharedComponents/link-program/tooltip-validation.pipe.mjs +28 -0
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +221 -0
- package/esm2022/lib/sharedComponents/list-loader/list-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/list-loader/list-loader.module.mjs +18 -0
- package/esm2022/lib/sharedComponents/no-data/no-data.component.mjs +36 -0
- package/esm2022/lib/sharedComponents/no-data/no-data.module.mjs +18 -0
- package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +176 -0
- package/esm2022/lib/sharedComponents/pipes/array-filter.pipe.mjs +18 -0
- package/esm2022/lib/sharedComponents/pipes/filterPipe.mjs +30 -0
- package/esm2022/lib/sharedComponents/pipes/rcTreeToolTip.pipe.mjs +26 -0
- package/esm2022/lib/sharedComponents/pipes/short-merge.pipe.mjs +24 -0
- package/esm2022/lib/sharedComponents/pipes/spaceTrim.pipe.mjs +18 -0
- package/esm2022/lib/sharedComponents/pipes/within-data.pipe.mjs +21 -0
- package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +88 -0
- package/esm2022/lib/sharedComponents/program-listing/program-list-model.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +739 -0
- package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +82 -0
- package/esm2022/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +128 -0
- package/esm2022/lib/sharedComponents/responsibility-centers-list/rc-list.module.mjs +40 -0
- package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +125 -0
- package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +81 -0
- package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +44 -0
- package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +102 -0
- package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +30 -0
- package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +78 -0
- package/esm2022/lib/sharedComponents/table-card-loader/table-card-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +83 -0
- package/esm2022/lib/sharedComponents/v-loader/loader/loader.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/v-loader/v-loader.module.mjs +19 -0
- package/esm2022/lib/ui-kit/action-dialog/action-dialog.module.mjs +21 -0
- package/esm2022/lib/ui-kit/action-dialog/active/active.component.mjs +32 -0
- package/esm2022/lib/ui-kit/action-dialog/deactivate/deactivate.component.mjs +33 -0
- package/esm2022/lib/ui-kit/action-dialog/delete/delete.component.mjs +26 -0
- package/esm2022/lib/ui-kit/action-dialog/duplicate/duplicate.component.mjs +28 -0
- package/esm2022/lib/ui-kit/click-outside/click-outside.directive.mjs +29 -0
- package/esm2022/lib/ui-kit/click-outside/click-outside.module.mjs +22 -0
- package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +3 -0
- package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +14 -0
- package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +11 -0
- package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +88 -0
- package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +20 -0
- package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +58 -0
- package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +16 -0
- package/esm2022/lib/ui-kit/directive/directive.module.mjs +24 -0
- package/esm2022/lib/ui-kit/directive/stop-propagation.directive.mjs +20 -0
- package/esm2022/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.mjs +15 -0
- package/esm2022/lib/ui-kit/editor-loader/editor-loader.module.mjs +22 -0
- package/esm2022/lib/ui-kit/format-html.pipe.mjs +20 -0
- package/esm2022/lib/ui-kit/formgroup/click-outside.directive.mjs +29 -0
- package/esm2022/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.mjs +31 -0
- package/esm2022/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
- package/esm2022/lib/ui-kit/formgroup/cs-radio/cs-radio.component.mjs +30 -0
- package/esm2022/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
- package/esm2022/lib/ui-kit/formgroup/cs-select/cs-select.component.mjs +100 -0
- package/esm2022/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +32 -0
- package/esm2022/lib/ui-kit/formgroup/formgroup.module.mjs +60 -0
- package/esm2022/lib/ui-kit/formgroup/pipes/pascal.pipe.mjs +19 -0
- package/esm2022/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.mjs +24 -0
- package/esm2022/lib/ui-kit/line-loader/line-loader.component.mjs +15 -0
- package/esm2022/lib/ui-kit/line-loader/line-loader.module.mjs +18 -0
- package/esm2022/lib/ui-kit/no-data/no-data.component.mjs +45 -0
- package/esm2022/lib/ui-kit/no-data/no-data.module.mjs +18 -0
- package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +116 -0
- package/esm2022/lib/ui-kit/pagination/pagination.module.mjs +28 -0
- package/esm2022/lib/ui-kit/popover/popover-event.directive.mjs +28 -0
- package/esm2022/lib/ui-kit/popover/popover-longpress.directive.mjs +44 -0
- package/esm2022/lib/ui-kit/popover/popover.component.mjs +138 -0
- package/esm2022/lib/ui-kit/popover/popover.directive.mjs +97 -0
- package/esm2022/lib/ui-kit/popover/popover.module.mjs +23 -0
- package/esm2022/lib/ui-kit/popover/popover.service.mjs +15 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.component.mjs +109 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.directive.mjs +34 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.module.mjs +31 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.service.mjs +14 -0
- package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.component.mjs +43 -0
- package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.module.mjs +18 -0
- package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.mjs +43 -0
- package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.mjs +18 -0
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.component.mjs +51 -0
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -0
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +32 -0
- package/esm2022/lib/ui-kit/time-picker/constants/constant.mjs +5 -0
- package/esm2022/lib/ui-kit/time-picker/time-picker/time-picker.component.mjs +220 -0
- package/esm2022/lib/ui-kit/time-picker/time-picker.module.mjs +24 -0
- package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +156 -0
- package/esm2022/lib/ui-kit/tooltip/tooltip.module.mjs +18 -0
- package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +831 -0
- package/esm2022/lib/workflow/grc-object/grc-object.module.mjs +64 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +95 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.mjs +110 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +118 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes.component.mjs +100 -0
- package/esm2022/lib/workflow/shared/components/attributes/date-picker/date-picker.component.mjs +116 -0
- package/esm2022/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +216 -0
- package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +119 -0
- package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +198 -0
- package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +202 -0
- package/esm2022/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.mjs +191 -0
- package/esm2022/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.mjs +86 -0
- package/esm2022/lib/workflow/shared/components/list-popup/list-popup.component.mjs +209 -0
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +411 -0
- package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +241 -0
- package/esm2022/lib/workflow/shared/components/table-card/table-card.component.mjs +32 -0
- package/esm2022/lib/workflow/shared/components/text-field/text-field.component.mjs +143 -0
- package/esm2022/lib/workflow/shared/components/text-field-icon/text-field-icon.component.mjs +56 -0
- package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +11 -0
- package/esm2022/lib/workflow/shared/constants/field-text.constant.mjs +17 -0
- package/esm2022/lib/workflow/shared/constants/grcObject.constant.mjs +88 -0
- package/esm2022/lib/workflow/shared/constants/link-responsibility.constant.mjs +19 -0
- package/esm2022/lib/workflow/shared/constants/message.contstant.mjs +5 -0
- package/esm2022/lib/workflow/shared/constants/pagination-limits.constant.mjs +6 -0
- package/esm2022/lib/workflow/shared/constants/svg-link.constant.mjs +4 -0
- package/esm2022/lib/workflow/shared/constants/validation-message.constant.mjs +8 -0
- package/esm2022/lib/workflow/shared/interfaces/add-grc.mjs +2 -0
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +310 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/get-selected-value.pipe.mjs +30 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/is-attributes-valid.pipe.mjs +48 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/unique-responsibilities.pipe.mjs +24 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +32 -0
- package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +668 -0
- package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +254 -0
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +3913 -0
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +734 -0
- package/esm2022/lib/workflow-engine.module.mjs +467 -0
- package/esm2022/lib/workflow-engine.service.mjs +14 -0
- package/esm2022/lib/workflow-interfaces/create-policy-form.mjs +2 -0
- package/esm2022/lib/workflow-pagination/workflow-pagination.component.mjs +116 -0
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +1875 -0
- package/esm2022/lib/workflow-program/constants.mjs +51 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +292 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.mjs +43 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.mjs +22 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.mjs +116 -0
- package/esm2022/lib/workflow-program/create-program-ui/checkbox/checkbox.component.mjs +39 -0
- package/esm2022/lib/workflow-program/create-program-ui/create-program-ui.module.mjs +194 -0
- package/esm2022/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.mjs +44 -0
- package/esm2022/lib/workflow-program/create-program-ui/custom-field/custom-field.component.mjs +82 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +267 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.mjs +44 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.mjs +23 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.mjs +23 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +26 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +68 -0
- package/esm2022/lib/workflow-program/create-program-ui/directives/input-trim.directive.mjs +21 -0
- package/esm2022/lib/workflow-program/create-program-ui/file-pill/file-pill.component.mjs +27 -0
- package/esm2022/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +106 -0
- package/esm2022/lib/workflow-program/create-program-ui/form-field/form-field.component.mjs +16 -0
- package/esm2022/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.mjs +30 -0
- package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +166 -0
- package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination.module.mjs +28 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.mjs +16 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +27 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/filter.pipe.mjs +30 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.mjs +16 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/pager.pipe.mjs +21 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.mjs +17 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/search.pipe.mjs +23 -0
- package/esm2022/lib/workflow-program/create-program-ui/role-list/loader/loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +240 -0
- package/esm2022/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.mjs +43 -0
- package/esm2022/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +434 -0
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +1550 -0
- package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +1642 -0
- package/esm2022/lib/workflow-services/add-risk.service.mjs +150 -0
- package/esm2022/lib/workflow-services/assessment.service.mjs +117 -0
- package/esm2022/lib/workflow-services/auth.service.mjs +229 -0
- package/esm2022/lib/workflow-services/frequency.service.mjs +173 -0
- package/esm2022/lib/workflow-services/log-issue.service.mjs +360 -0
- package/esm2022/lib/workflow-services/policy.service.mjs +163 -0
- package/esm2022/lib/workflow-services/programs.service.mjs +319 -0
- package/esm2022/lib/workflow-services/responsibility.service.mjs +293 -0
- package/esm2022/lib/workflow-services/token-decoder.service.mjs +38 -0
- package/esm2022/lib/workflow-services/ui-kit.service.mjs +17 -0
- package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +26 -0
- package/esm2022/public-api.mjs +8 -0
- package/esm2022/vcomply-workflow-engine.mjs +5 -0
- package/fesm2022/vcomply-workflow-engine.mjs +44351 -0
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -0
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +1 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -1
- package/lib/confirmation-alert/confirmation-alert.component.d.ts +1 -1
- package/lib/create-documents/create-documents.component.d.ts +1 -1
- package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
- package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
- package/lib/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
- package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
- package/lib/formgroup/cs-select/cs-select.component.d.ts +1 -1
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
- package/lib/formgroup/select/cs-option/cs-option.component.d.ts +1 -1
- package/lib/formgroup/select/cs-select/cs-select.component.d.ts +1 -1
- package/lib/log-an-issue/log-an-issue.component.d.ts +7 -3
- package/lib/more-option/more-option.component.d.ts +1 -1
- package/lib/services/common.service.d.ts +14 -0
- package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -1
- package/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.d.ts +1 -1
- package/lib/sharedComponents/approval-workflow/approval-workflow.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts +7 -3
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts +8 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts +8 -5
- package/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/device/device.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/section-details/section-details.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts +1 -1
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -1
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +1 -1
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +1 -1
- package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -1
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -1
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts +6 -2
- package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts +1 -1
- package/lib/sharedComponents/directive/autofocus.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/conditional-focus.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/drag-drop.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/input-trim.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts +1 -1
- package/lib/sharedComponents/document-section/document-section.component.d.ts +1 -1
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +1 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +10 -4
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts +9 -5
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts +1 -0
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts +10 -5
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts +1 -1
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -1
- package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -1
- package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -1
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts +1 -1
- package/lib/sharedComponents/no-data/no-data.component.d.ts +1 -1
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -1
- package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -1
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -1
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts +1 -1
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -1
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -1
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -1
- package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts +1 -1
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -1
- package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -1
- package/lib/sharedComponents/table-card-loader/table-card-loader.component.d.ts +1 -1
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/v-loader/loader/loader.component.d.ts +1 -1
- package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/active/active.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/delete/delete.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts +1 -1
- package/lib/ui-kit/click-outside/click-outside.directive.d.ts +1 -1
- package/lib/ui-kit/dialog/dialog-injector.d.ts +2 -2
- package/lib/ui-kit/dialog/dialog.component.d.ts +6 -4
- package/lib/ui-kit/dialog/dialog.service.d.ts +3 -3
- package/lib/ui-kit/dialog/insertion.directive.d.ts +1 -1
- package/lib/ui-kit/directive/stop-propagation.directive.d.ts +1 -1
- package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
- package/lib/ui-kit/line-loader/line-loader.component.d.ts +1 -1
- package/lib/ui-kit/no-data/no-data.component.d.ts +1 -1
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -1
- package/lib/ui-kit/popover/popover-event.directive.d.ts +1 -1
- package/lib/ui-kit/popover/popover-longpress.directive.d.ts +1 -1
- package/lib/ui-kit/popover/popover.component.d.ts +1 -1
- package/lib/ui-kit/popover/popover.directive.d.ts +1 -1
- package/lib/ui-kit/popover-hover/popover-hover.component.d.ts +1 -1
- package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts +1 -1
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts +1 -1
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts +1 -1
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts +1 -1
- package/lib/ui-kit/time-picker/time-picker/time-picker.component.d.ts +1 -1
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/date-picker/date-picker.component.d.ts +1 -1
- package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-object-list/grc-object-list.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +1 -1
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/table-card/table-card.component.d.ts +1 -1
- package/lib/workflow/shared/components/text-field/text-field.component.d.ts +1 -1
- package/lib/workflow/shared/components/text-field-icon/text-field-icon.component.d.ts +1 -1
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -1
- package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -1
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -1
- package/lib/workflow-pagination/workflow-pagination.component.d.ts +1 -1
- package/lib/workflow-policy/workflow-policy.component.d.ts +7 -3
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -1
- package/lib/workflow-program/workflow-program.component.d.ts +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/lib/workflow-services/auth.service.d.ts +0 -1
- package/lib/workflow-services/log-issue.service.d.ts +1 -0
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -1
- package/package.json +5 -12
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
2
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { Injectable, Optional } from '@angular/core';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { retry } from 'rxjs/operators';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "../../../configurations";
|
|
9
|
+
// import { environment } from 'src/environments/environment';
|
|
10
|
+
export class EditorService {
|
|
11
|
+
constructor(http, config) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.currentPageDetails = { pageName: '', pageNumber: 1, pageDescription: '' };
|
|
14
|
+
this.prefixForQuestionName = 'Question_';
|
|
15
|
+
this.activeQuestionIndex = new BehaviorSubject(-5);
|
|
16
|
+
this.activeQuestionStream$ = this.activeQuestionIndex.asObservable();
|
|
17
|
+
this.currentPageNumber = 1;
|
|
18
|
+
this.activeQuestion = 0;
|
|
19
|
+
this.showAddPageOption = true;
|
|
20
|
+
this.showPageDetails = false;
|
|
21
|
+
this.score = {
|
|
22
|
+
defaultScore: 1,
|
|
23
|
+
negativeScore: 0
|
|
24
|
+
};
|
|
25
|
+
this.allPages = [];
|
|
26
|
+
this.stepIdentifier = 'pagescreen'; // this value can be "welcomescreen","thankyouscreen","pagescreen" only
|
|
27
|
+
this.settings = {
|
|
28
|
+
assessmentMode: false,
|
|
29
|
+
defaultScore: 1,
|
|
30
|
+
negativeScoreCriteria: 'FAILED',
|
|
31
|
+
negativeScore: 0,
|
|
32
|
+
weightageEnabled: false,
|
|
33
|
+
settingsEnabled: false
|
|
34
|
+
};
|
|
35
|
+
this.formsPage = {
|
|
36
|
+
version: 2,
|
|
37
|
+
questionRandomize: true,
|
|
38
|
+
anonymousResponse: false,
|
|
39
|
+
hasWelcome: false,
|
|
40
|
+
hasWelcomeDescription: true,
|
|
41
|
+
welcomeText: '',
|
|
42
|
+
hasWelcomeImage: true,
|
|
43
|
+
welcomeImage: '',
|
|
44
|
+
welcomeDescription: '',
|
|
45
|
+
hasThanks: false,
|
|
46
|
+
hasThankyouImage: false,
|
|
47
|
+
thankyouText: '',
|
|
48
|
+
thankyouImage: '',
|
|
49
|
+
hasThankyouDescription: true,
|
|
50
|
+
thankyouDescription: '',
|
|
51
|
+
elements: [],
|
|
52
|
+
pageDetailsList: [],
|
|
53
|
+
customResponseSet: [],
|
|
54
|
+
settings: this.settings,
|
|
55
|
+
responseSegment: this.initializeEmptyResponseSegment()
|
|
56
|
+
};
|
|
57
|
+
this.httpOptions = {
|
|
58
|
+
headers: new HttpHeaders({ 'Content-Type': 'application/json', token: this.getAuthorizationToken() })
|
|
59
|
+
};
|
|
60
|
+
if (config) {
|
|
61
|
+
this.env = config.envConfig;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
initializeEmptyResponseSegment() {
|
|
65
|
+
return {
|
|
66
|
+
title: '',
|
|
67
|
+
description: '',
|
|
68
|
+
maxScore: 10,
|
|
69
|
+
segments: []
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
uploadHandler(formData, destination) {
|
|
73
|
+
return this.http.post(this.env.fileUploadEndPoint + destination, formData);
|
|
74
|
+
//return this.http.post<any>("env" + destination, formData);
|
|
75
|
+
}
|
|
76
|
+
addQuestion(evt, index) {
|
|
77
|
+
switch (evt.trim()) {
|
|
78
|
+
case 'welcome': {
|
|
79
|
+
this.currentPageNumber = -1;
|
|
80
|
+
this.stepIdentifier = 'welcomescreen';
|
|
81
|
+
this.formsPage.hasWelcome = true;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case 'thankyou': {
|
|
85
|
+
this.currentPageNumber = -2;
|
|
86
|
+
this.stepIdentifier = 'thankyouscreen';
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case 'multiple-choice': {
|
|
90
|
+
this.setToPagefromWelcome();
|
|
91
|
+
this.createMultipleChoice(index);
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'checkbox': {
|
|
95
|
+
this.setToPagefromWelcome();
|
|
96
|
+
this.createCheckbox(index);
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case 'star-rating': {
|
|
100
|
+
this.setToPagefromWelcome();
|
|
101
|
+
this.createStarRating(index);
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
case 'single-textbox': {
|
|
105
|
+
this.setToPagefromWelcome();
|
|
106
|
+
this.createSingleTextbox(index);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case 'comment-box': {
|
|
110
|
+
this.setToPagefromWelcome();
|
|
111
|
+
this.createCommentbox(index);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 'matrix-dropdown': {
|
|
115
|
+
this.setToPagefromWelcome();
|
|
116
|
+
this.createMatrixDropdown(index);
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case 'dropdown': {
|
|
120
|
+
this.setToPagefromWelcome();
|
|
121
|
+
this.createDropdown(index);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
case 'slider': {
|
|
125
|
+
this.setToPagefromWelcome();
|
|
126
|
+
this.createSlider(index);
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'rating-scale': {
|
|
130
|
+
this.setToPagefromWelcome();
|
|
131
|
+
this.createRatingScale(index);
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case 'multiple-textbox': {
|
|
135
|
+
this.setToPagefromWelcome();
|
|
136
|
+
this.createMultipleTextbox(index);
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case 'date-time': {
|
|
140
|
+
this.setToPagefromWelcome();
|
|
141
|
+
this.createDateTime(index);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
case 'file-upload': {
|
|
145
|
+
this.setToPagefromWelcome();
|
|
146
|
+
this.createFileUpload(index);
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
case 'ranking': {
|
|
150
|
+
this.setToPagefromWelcome();
|
|
151
|
+
this.createRanking(index);
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
case 'star-rating': {
|
|
155
|
+
this.setToPagefromWelcome();
|
|
156
|
+
this.createStarRating(index);
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
setToPagefromWelcome() {
|
|
162
|
+
if (['thankyouscreen', 'welcomescreen'].includes(this.stepIdentifier)) {
|
|
163
|
+
this.currentPageNumber = this.allPages.length;
|
|
164
|
+
this.stepIdentifier = 'pagescreen';
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Check whether to display Page Details or Add Page tilte option
|
|
169
|
+
*/
|
|
170
|
+
checkForPageDetails() {
|
|
171
|
+
if (this.currentPageDetails === undefined || this.currentPageDetails.pageName === '') {
|
|
172
|
+
this.showAddPageOption = true;
|
|
173
|
+
this.showPageDetails = false;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.showAddPageOption = false;
|
|
177
|
+
this.showPageDetails = true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Creates a question of type multiple choice
|
|
182
|
+
* @param index Index at which question needs to be created
|
|
183
|
+
*/
|
|
184
|
+
createMultipleChoice(index) {
|
|
185
|
+
const element = {
|
|
186
|
+
type: 'multiple-choice', name: ``, page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: this.score.defaultScore },
|
|
187
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
188
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false, visibilityLogic: [], choices: [
|
|
189
|
+
{
|
|
190
|
+
title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false,
|
|
191
|
+
helpingLabel: '', isFailed: false, score: this.score.defaultScore, color: this.generateRandomColor()
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
};
|
|
195
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
196
|
+
this.sortQuestion();
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Creates a question of type checkbox
|
|
200
|
+
* @param index Index at which question needs to be created
|
|
201
|
+
*/
|
|
202
|
+
createCheckbox(index) {
|
|
203
|
+
const element = {
|
|
204
|
+
type: 'checkbox', name: '', page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: this.score.defaultScore },
|
|
205
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
206
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
207
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [{
|
|
208
|
+
title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false,
|
|
209
|
+
helpingLabel: '', isFailed: false, score: this.score.defaultScore, color: this.generateRandomColor()
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
};
|
|
213
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
214
|
+
this.sortQuestion();
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Creates a question of type star rating
|
|
218
|
+
* @param index Index at which question needs to be created
|
|
219
|
+
* [Note]: Rating label type can take 2 values 'specific'/'scale'
|
|
220
|
+
*/
|
|
221
|
+
createStarRating(index) {
|
|
222
|
+
const element = {
|
|
223
|
+
type: 'star-rating', name: '', page: this.currentPageNumber, isRequired: false, title: '', hasDescription: false,
|
|
224
|
+
description: '', hasComments: false, comments: '', randomize: false, hasOther: false, alignment: false, reverse: false,
|
|
225
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', cursorType: 'number',
|
|
226
|
+
cursorColor: '#ff8000', scale: 2, starValue: '', hasRatingLabel: false, ratingLabelType: 'specific',
|
|
227
|
+
scaleRangeFrom: 'Not at all likely',
|
|
228
|
+
scaleRangeTo: 'Extreme Likely', visibilityLogic: [],
|
|
229
|
+
choices: [
|
|
230
|
+
{ title: '', isVisible: true, value: 0, isSelected: false, required: 0, hasHelpingLabel: true, helpingLabel: '' },
|
|
231
|
+
{ title: '', isVisible: true, value: 1, isSelected: false, required: 0, hasHelpingLabel: true, helpingLabel: '' },
|
|
232
|
+
]
|
|
233
|
+
};
|
|
234
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
235
|
+
this.sortQuestion();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Creates a question of type single textbox
|
|
239
|
+
* @param index Index at which question needs to be created
|
|
240
|
+
*/
|
|
241
|
+
createSingleTextbox(index) {
|
|
242
|
+
const element = {
|
|
243
|
+
type: 'single-textbox', name: '', page: this.currentPageNumber,
|
|
244
|
+
hasValidation: false, validationType: '', isRequired: false, hasCharacterLength: false, minCharacterLength: 0,
|
|
245
|
+
maxCharacterLength: 100, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
246
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
247
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
|
|
248
|
+
choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: true, helpingLabel: '' }]
|
|
249
|
+
};
|
|
250
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
251
|
+
this.sortQuestion();
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Creates a question of type comment box
|
|
255
|
+
* @param index Index at which question needs to be created
|
|
256
|
+
*/
|
|
257
|
+
createCommentbox(index) {
|
|
258
|
+
const element = {
|
|
259
|
+
type: 'comment-box', name: '', page: this.currentPageNumber,
|
|
260
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
261
|
+
hasCharacterLength: false, minCharacterLength: 0, maxCharacterLength: 0, randomize: false, hasOther: false,
|
|
262
|
+
otherValue: 'Other', alignment: false, reverse: false, isRespondentAttachment: false, userAttachedFiles: [],
|
|
263
|
+
isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [
|
|
264
|
+
{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '', imageURL: '' },
|
|
265
|
+
]
|
|
266
|
+
};
|
|
267
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
268
|
+
this.sortQuestion();
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Creates a question of type matrix of dropdown
|
|
272
|
+
* @param index Index at which question needs to be created
|
|
273
|
+
*/
|
|
274
|
+
createMatrixDropdown(index) {
|
|
275
|
+
const element = {
|
|
276
|
+
type: 'matrix-dropdown', name: '', page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: 1 },
|
|
277
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
278
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
279
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
|
|
280
|
+
choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }],
|
|
281
|
+
columns: [{
|
|
282
|
+
title: '', value: 1, weight: 0, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '',
|
|
283
|
+
choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }]
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
};
|
|
287
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
288
|
+
this.sortQuestion();
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Creates a question of type dropdown
|
|
292
|
+
* @param index Index at which question needs to be created
|
|
293
|
+
*/
|
|
294
|
+
createDropdown(index) {
|
|
295
|
+
const element = {
|
|
296
|
+
type: 'dropdown', name: '', page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: this.score.defaultScore },
|
|
297
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
298
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
299
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
|
|
300
|
+
choices: [
|
|
301
|
+
{
|
|
302
|
+
title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '',
|
|
303
|
+
isFailed: false, score: this.score.defaultScore, color: this.generateRandomColor()
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
};
|
|
307
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
308
|
+
this.sortQuestion();
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Creates a question of type slider
|
|
312
|
+
* @param index Index at which question needs to be created
|
|
313
|
+
*/
|
|
314
|
+
createSlider(index) {
|
|
315
|
+
const element = {
|
|
316
|
+
type: 'slider', name: '', page: this.currentPageNumber,
|
|
317
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
318
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
319
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
|
|
320
|
+
choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }],
|
|
321
|
+
centerRange: false, adjustScale: false, numericBoxEnabled: false, left: 0, center: 0, right: 100,
|
|
322
|
+
scaleRangeMin: 0, scaleRangeMax: 100, stepSize: 10, startPosition: 0, editorValue: 0
|
|
323
|
+
};
|
|
324
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
325
|
+
this.sortQuestion();
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Creates a question of type matrix rating scale
|
|
329
|
+
* @param index Index at which question needs to be created
|
|
330
|
+
*/
|
|
331
|
+
createRatingScale(index) {
|
|
332
|
+
const element = {
|
|
333
|
+
type: 'rating-scale', name: '', page: this.currentPageNumber,
|
|
334
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
335
|
+
randomize: false, hasOther: false, hasRatingLabel: false, ratingLabelType: '',
|
|
336
|
+
otherValue: 'Other', hasWeight: false, alignment: false, reverse: false,
|
|
337
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
|
|
338
|
+
choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }],
|
|
339
|
+
columns: [{ title: '', value: 1, weight: 0, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }]
|
|
340
|
+
};
|
|
341
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
342
|
+
this.sortQuestion();
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Creates a question of type ranking
|
|
346
|
+
* @param index Index at which question needs to be created
|
|
347
|
+
*/
|
|
348
|
+
createRanking(index) {
|
|
349
|
+
const element = {
|
|
350
|
+
type: 'ranking', name: '', page: this.currentPageNumber,
|
|
351
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
352
|
+
randomize: false, hasOther: false, otherValue: 'Other', hasRatingLabel: false, alignment: false,
|
|
353
|
+
reverse: false, onlyNumber: true, isRespondentAttachment: false, userAttachedFiles: [],
|
|
354
|
+
isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [
|
|
355
|
+
{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' },
|
|
356
|
+
]
|
|
357
|
+
};
|
|
358
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
359
|
+
this.sortQuestion();
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Creates a question of type multiple textbox
|
|
363
|
+
* @param index Index at which question needs to be created
|
|
364
|
+
*/
|
|
365
|
+
createMultipleTextbox(index) {
|
|
366
|
+
const element = {
|
|
367
|
+
type: 'multiple-textbox', name: '',
|
|
368
|
+
page: this.currentPageNumber, isRequired: false, title: '', hasDescription: false, description: '',
|
|
369
|
+
randomize: false, hasOther: false, hasComments: false, comments: '', otherValue: 'Other', hasRatingLabel: false,
|
|
370
|
+
alignment: false, reverse: false, onlyNumber: true, isRespondentAttachment: false, userAttachedFiles: [],
|
|
371
|
+
isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [
|
|
372
|
+
{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' },
|
|
373
|
+
]
|
|
374
|
+
};
|
|
375
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
376
|
+
this.sortQuestion();
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Creates a question of type date/time
|
|
380
|
+
* @param index Index at which question needs to be created
|
|
381
|
+
*/
|
|
382
|
+
createDateTime(index) {
|
|
383
|
+
const element = {
|
|
384
|
+
type: 'date-time', name: '', page: this.currentPageNumber,
|
|
385
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
386
|
+
randomize: false, hasOther: false, otherValue: 'Other', hasRatingLabel: false, alignment: false,
|
|
387
|
+
reverse: false, onlyNumber: true, isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false,
|
|
388
|
+
userComments: '', visibilityLogic: [], hasDate: true, hasTime: false, dateFormat: 'DD/MM/YYYY', timeFormat: 24,
|
|
389
|
+
choices: [
|
|
390
|
+
{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' },
|
|
391
|
+
],
|
|
392
|
+
date: { title: '', value: '' },
|
|
393
|
+
time: { title: '', value: '' }
|
|
394
|
+
};
|
|
395
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
396
|
+
this.sortQuestion();
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Creates a question of type file upload
|
|
400
|
+
* @param index Index at which question needs to be created
|
|
401
|
+
*/
|
|
402
|
+
createFileUpload(index) {
|
|
403
|
+
const element = {
|
|
404
|
+
type: 'file-upload', name: '', page: this.currentPageNumber,
|
|
405
|
+
isRequired: false, title: '', hasInstruction: false, instruction: '', hasDescription: false, description: '',
|
|
406
|
+
hasComments: false, comments: '', randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
407
|
+
fileTypeRestrictions: false, isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '',
|
|
408
|
+
visibilityLogic: [], choices: [
|
|
409
|
+
{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }
|
|
410
|
+
],
|
|
411
|
+
allowedFileTypes: {
|
|
412
|
+
pdf: true,
|
|
413
|
+
doc: true,
|
|
414
|
+
png: true,
|
|
415
|
+
jpg: true,
|
|
416
|
+
gif: true
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
420
|
+
this.sortQuestion();
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Creates a question of type image choice
|
|
424
|
+
* @param index Index at which question needs to be created
|
|
425
|
+
*/
|
|
426
|
+
createImageChoice(index) {
|
|
427
|
+
const element = {
|
|
428
|
+
type: 'image-choice', name: '', page: this.currentPageNumber,
|
|
429
|
+
isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
|
|
430
|
+
randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
|
|
431
|
+
isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '',
|
|
432
|
+
visibilityLogic: [], choices: [
|
|
433
|
+
{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '', imageURL: '' }
|
|
434
|
+
]
|
|
435
|
+
};
|
|
436
|
+
(index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
|
|
437
|
+
this.sortQuestion();
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Creates and adds the question to list of questions if a question's index is undefined
|
|
441
|
+
* @param element Details of question to be created
|
|
442
|
+
*/
|
|
443
|
+
operationOnCreateIfIndexUndefined(element) {
|
|
444
|
+
element.name = this.generateQuestionName(this.formsPage.elements.length + 1),
|
|
445
|
+
this.formsPage.elements.push(element);
|
|
446
|
+
this.setActiveQuestionBasedOnPageLength();
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Creates and adds the question to list of questions if a question's index is present
|
|
450
|
+
* @param element Details of question to be created
|
|
451
|
+
* @param index Index at which question should be created
|
|
452
|
+
*/
|
|
453
|
+
operationOnCreateIfIndexDefined(element, index) {
|
|
454
|
+
element.name = this.generateQuestionName(index + 1);
|
|
455
|
+
this.formsPage.elements.splice(index + 1, 0, element);
|
|
456
|
+
this.activeQuestion = index + 1;
|
|
457
|
+
this.activeQuestionIndex.next(index + 1);
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Sets the active question based on particular page
|
|
461
|
+
*/
|
|
462
|
+
setActiveQuestionBasedOnPageLength() {
|
|
463
|
+
let count = 0;
|
|
464
|
+
for (let i = 1; i <= this.currentPageNumber; i++) {
|
|
465
|
+
count += [...this.formsPage.elements].reduce((counter, currentElement) => (i === currentElement.page ? counter + 1 : counter), 0) - 1;
|
|
466
|
+
}
|
|
467
|
+
this.activeQuestion = count + this.currentPageNumber - 1;
|
|
468
|
+
this.activeQuestionIndex.next(count + this.currentPageNumber - 1);
|
|
469
|
+
// setTimeout(() => {
|
|
470
|
+
// }, 150);
|
|
471
|
+
// this.cdr.detectChanges();
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Sorts the questions based on page number
|
|
475
|
+
*/
|
|
476
|
+
sortQuestion() {
|
|
477
|
+
this.formsPage.elements.sort((a, b) => {
|
|
478
|
+
return a.page - b.page;
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Generates a unique question name for newly added question
|
|
483
|
+
* @param questionIndex Index of question to be created
|
|
484
|
+
*/
|
|
485
|
+
generateQuestionName(questionIndex) {
|
|
486
|
+
const questionNames = this.formsPage.elements.map((a) => a.name);
|
|
487
|
+
if (questionNames.includes(`${this.prefixForQuestionName}${questionIndex}`)) {
|
|
488
|
+
return this.generateQuestionName(questionIndex + 1);
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
const name = 'Question_' + questionIndex.toString();
|
|
492
|
+
return name;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
generateRandomColor() {
|
|
496
|
+
//return '#' + Math.floor(Math.random() * 16777215).toString(16);
|
|
497
|
+
return '#000000';
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Sets the question as active based on the particular index
|
|
501
|
+
* @param index Index of the question to be marked as active question
|
|
502
|
+
*/
|
|
503
|
+
setactiveQuestion(index) {
|
|
504
|
+
this.activeQuestion = index;
|
|
505
|
+
this.activeQuestionIndex.next(index);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Duplicates a question with particular index
|
|
509
|
+
* @param index Index of question to be duplicated
|
|
510
|
+
*/
|
|
511
|
+
copyQuestion(index) {
|
|
512
|
+
this.setactiveQuestion(index + 1);
|
|
513
|
+
const COPY_ELEMENT = JSON.parse(JSON.stringify(this.formsPage.elements[index]));
|
|
514
|
+
if (COPY_ELEMENT.errorArray) {
|
|
515
|
+
delete COPY_ELEMENT.errorArray;
|
|
516
|
+
}
|
|
517
|
+
COPY_ELEMENT.visibilityLogic = [];
|
|
518
|
+
const elementsNames = [];
|
|
519
|
+
this.formsPage.elements.forEach((element) => {
|
|
520
|
+
elementsNames.push(element.name);
|
|
521
|
+
});
|
|
522
|
+
this.checkForSameName(elementsNames, COPY_ELEMENT);
|
|
523
|
+
this.formsPage.elements.splice(index + 1, 0, COPY_ELEMENT);
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Assigns a unique name to the duplicated question
|
|
527
|
+
* @param elementsNames List of question names
|
|
528
|
+
* @param COPY_ELEMENT Details of question duplicated
|
|
529
|
+
*/
|
|
530
|
+
checkForSameName(elementsNames, COPY_ELEMENT) {
|
|
531
|
+
if (elementsNames.includes(COPY_ELEMENT.name)) {
|
|
532
|
+
const COPY_ELEMENT_NAME = COPY_ELEMENT.name.split('_');
|
|
533
|
+
COPY_ELEMENT_NAME[COPY_ELEMENT_NAME.length - 1] = (parseInt(COPY_ELEMENT_NAME[COPY_ELEMENT_NAME.length - 1], 10) + 1).toString();
|
|
534
|
+
COPY_ELEMENT.name = COPY_ELEMENT_NAME.join('_');
|
|
535
|
+
this.checkForSameName(elementsNames, COPY_ELEMENT);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Deletes the question on click of delete button
|
|
540
|
+
* @param index Index of question to be deleted
|
|
541
|
+
*/
|
|
542
|
+
deleteQuestion(index) {
|
|
543
|
+
this.removeLogicFromDependentQuestion(index);
|
|
544
|
+
this.formsPage.elements.splice(index, 1);
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Removes the logic data for a particular question from other questions
|
|
548
|
+
* @param index Index of question whose logic data needs to be removed from other questions
|
|
549
|
+
*/
|
|
550
|
+
removeLogicFromDependentQuestion(index) {
|
|
551
|
+
this.formsPage.elements.forEach((questionElement) => {
|
|
552
|
+
if (questionElement.visibilityLogic.length > 0) {
|
|
553
|
+
questionElement.visibilityLogic = questionElement.visibilityLogic.filter((logic) => logic.questionName !== this.formsPage.elements[index].name);
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Adds a new page
|
|
559
|
+
*/
|
|
560
|
+
addPage() {
|
|
561
|
+
if (this.currentPageNumber === -1 || this.currentPageNumber === -2) {
|
|
562
|
+
//this.currentPageNumber = this.numberOfPages() + 1;
|
|
563
|
+
this.currentPageNumber = this.allPages.length + 1;
|
|
564
|
+
this.allPages.push(this.currentPageNumber);
|
|
565
|
+
this.numberOfPages();
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
this.currentPageNumber = this.allPages.length + 1;
|
|
569
|
+
this.allPages.push(this.currentPageNumber);
|
|
570
|
+
}
|
|
571
|
+
this.stepIdentifier = 'pagescreen';
|
|
572
|
+
this.activeQuestionIndex.next(-10);
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Counts the number of pages in a survey/form
|
|
576
|
+
*/
|
|
577
|
+
numberOfPages() {
|
|
578
|
+
const PAGE_ARRAY = [];
|
|
579
|
+
if (this.formsPage.elements.length !== 0) {
|
|
580
|
+
this.formsPage.elements.forEach((element) => {
|
|
581
|
+
PAGE_ARRAY.push(element.page);
|
|
582
|
+
this.currentPageDetails.pageNumber = element?.page;
|
|
583
|
+
if (this.formsPage.pageDetailsList.length === 0) {
|
|
584
|
+
this.formsPage.pageDetailsList.push(this.currentPageDetails);
|
|
585
|
+
}
|
|
586
|
+
});
|
|
587
|
+
this.allPages = [...new Set(PAGE_ARRAY)];
|
|
588
|
+
}
|
|
589
|
+
else {
|
|
590
|
+
return 0;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
fetchAssessmentData(id) {
|
|
594
|
+
//mode=assessment/fetchQuestionsByAssessmentId&id=61f3f7871c60020009a20543
|
|
595
|
+
return this.http.get("env" + 'assessment/fetchQuestionsByAssessmentId&id=' + id, this.httpOptions).pipe(retry(2));
|
|
596
|
+
}
|
|
597
|
+
saveAssessment(id, payload) {
|
|
598
|
+
return this.http.post("env" + 'assessment/update&id=' + id, payload, this.httpOptions);
|
|
599
|
+
//?mode=assessment/update&id=61f3f7871c60020009a20543
|
|
600
|
+
}
|
|
601
|
+
getAuthorizationToken() {
|
|
602
|
+
const TOKEN = localStorage.getItem('currentUser');
|
|
603
|
+
let currentUser;
|
|
604
|
+
TOKEN !== null ? (currentUser = JSON.parse(TOKEN)) : (currentUser = {});
|
|
605
|
+
return currentUser.token;
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Extracts the text from a particular html content
|
|
609
|
+
* @param s html content from which text needs to be extracted
|
|
610
|
+
*/
|
|
611
|
+
extract(s) {
|
|
612
|
+
const span = document.createElement('span');
|
|
613
|
+
span.innerHTML = s;
|
|
614
|
+
return span.textContent || span.innerText;
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Moves Question to a particular index in an array
|
|
618
|
+
* @param previous Index from which Question should be moved
|
|
619
|
+
* @param next Index before which Question should be moved
|
|
620
|
+
*/
|
|
621
|
+
moveQuestion(previous, next) {
|
|
622
|
+
moveItemInArray(this.formsPage.elements, previous, next);
|
|
623
|
+
}
|
|
624
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorService, deps: [{ token: i1.HttpClient }, { token: i2.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
625
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
626
|
+
}
|
|
627
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorService, decorators: [{
|
|
628
|
+
type: Injectable,
|
|
629
|
+
args: [{
|
|
630
|
+
providedIn: 'root'
|
|
631
|
+
}]
|
|
632
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Configurations, decorators: [{
|
|
633
|
+
type: Optional
|
|
634
|
+
}] }]; } });
|
|
635
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFdkMsOERBQThEO0FBSTlELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLElBQWdCLEVBQWEsTUFBdUI7UUFBcEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUtwQyx1QkFBa0IsR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDL0UsMEJBQXFCLEdBQUcsV0FBVyxDQUFDO1FBQzdCLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pELHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUM5QixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDakIsVUFBSyxHQUFHO1lBQ2IsWUFBWSxFQUFFLENBQUM7WUFDZixh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QUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztNQUdFO0lBQ0YsT0FBTyxDQUFDLENBQVM7UUFDZixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFFBQWEsRUFBRSxJQUFTO1FBQ25DLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQzsrR0E1b0JVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHdUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcclxuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICdzcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yU2VydmljZSB7XHJcbiAgIGVudiAhOmFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnMpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xyXG4gICAgfVxyXG4gIH1cclxuICBjdXJyZW50UGFnZURldGFpbHM6IGFueSA9IHsgcGFnZU5hbWU6ICcnLCBwYWdlTnVtYmVyOiAxLCBwYWdlRGVzY3JpcHRpb246ICcnIH07XHJcbiAgcHJlZml4Rm9yUXVlc3Rpb25OYW1lID0gJ1F1ZXN0aW9uXyc7XHJcbiAgcHVibGljIGFjdGl2ZVF1ZXN0aW9uSW5kZXggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTUpO1xyXG4gIGFjdGl2ZVF1ZXN0aW9uU3RyZWFtJCA9IHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleC5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlciA9IDE7XHJcbiAgcHVibGljIGFjdGl2ZVF1ZXN0aW9uID0gMDtcclxuICBzaG93QWRkUGFnZU9wdGlvbiA9IHRydWU7XHJcbiAgc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgcHVibGljIHNjb3JlID0ge1xyXG4gICAgZGVmYXVsdFNjb3JlOiAxLFxyXG4gICAgbmVnYXRpdmVTY29yZTogMFxyXG4gIH1cclxuICBwdWJsaWMgYWxsUGFnZXM6IGFueSA9IFtdO1xyXG4gIHN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nOyAvLyB0aGlzIHZhbHVlIGNhbiBiZSBcIndlbGNvbWVzY3JlZW5cIixcInRoYW5reW91c2NyZWVuXCIsXCJwYWdlc2NyZWVuXCIgb25seVxyXG4gIGFzc2Vzc21lbnRJZCAhOiBhbnk7XHJcbiAgcHVibGljIHNldHRpbmdzOiBhbnkgPSB7XHJcbiAgICBhc3Nlc3NtZW50TW9kZTogZmFsc2UsXHJcbiAgICBkZWZhdWx0U2NvcmU6IDEsXHJcbiAgICBuZWdhdGl2ZVNjb3JlQ3JpdGVyaWE6ICdGQUlMRUQnLFxyXG4gICAgbmVnYXRpdmVTY29yZTogMCxcclxuICAgIHdlaWdodGFnZUVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgc2V0dGluZ3NFbmFibGVkOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgZm9ybXNQYWdlOiBhbnkgPSB7XHJcbiAgICB2ZXJzaW9uOiAyLFxyXG4gICAgcXVlc3Rpb25SYW5kb21pemU6IHRydWUsXHJcbiAgICBhbm9ueW1vdXNSZXNwb25zZTogZmFsc2UsXHJcbiAgICBoYXNXZWxjb21lOiBmYWxzZSxcclxuICAgIGhhc1dlbGNvbWVEZXNjcmlwdGlvbjogdHJ1ZSxcclxuICAgIHdlbGNvbWVUZXh0OiAnJyxcclxuICAgIGhhc1dlbGNvbWVJbWFnZTogdHJ1ZSxcclxuICAgIHdlbGNvbWVJbWFnZTogJycsXHJcbiAgICB3ZWxjb21lRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaGFzVGhhbmtzOiBmYWxzZSxcclxuICAgIGhhc1RoYW5reW91SW1hZ2U6IGZhbHNlLFxyXG4gICAgdGhhbmt5b3VUZXh0OiAnJyxcclxuICAgIHRoYW5reW91SW1hZ2U6ICcnLFxyXG4gICAgaGFzVGhhbmt5b3VEZXNjcmlwdGlvbjogdHJ1ZSxcclxuICAgIHRoYW5reW91RGVzY3JpcHRpb246ICcnLFxyXG4gICAgZWxlbWVudHM6IFtdLFxyXG4gICAgcGFnZURldGFpbHNMaXN0OiBbXSxcclxuICAgIGN1c3RvbVJlc3BvbnNlU2V0OiBbXSxcclxuICAgIHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxyXG4gICAgcmVzcG9uc2VTZWdtZW50OiB0aGlzLmluaXRpYWxpemVFbXB0eVJlc3BvbnNlU2VnbWVudCgpXHJcbiAgfTtcclxuXHJcbiAgaW5pdGlhbGl6ZUVtcHR5UmVzcG9uc2VTZWdtZW50KCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIG1heFNjb3JlOiAxMCxcclxuICAgICAgc2VnbWVudHM6IFtcclxuXHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEhhbmRsZXIoZm9ybURhdGE6IGFueSwgZGVzdGluYXRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbnYuZmlsZVVwbG9hZEVuZFBvaW50ICsgZGVzdGluYXRpb24sIGZvcm1EYXRhKTtcclxuICAgIC8vcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oXCJlbnZcIiArIGRlc3RpbmF0aW9uLCBmb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBhZGRRdWVzdGlvbihldnQ6IGFueSwgaW5kZXg/OiBudW1iZXIpIHtcclxuICAgIHN3aXRjaCAoZXZ0LnRyaW0oKSkge1xyXG4gICAgICBjYXNlICd3ZWxjb21lJzoge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSAtMTtcclxuICAgICAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3dlbGNvbWVzY3JlZW4nO1xyXG4gICAgICAgIHRoaXMuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3RoYW5reW91Jzoge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSAtMjtcclxuICAgICAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3RoYW5reW91c2NyZWVuJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtdWx0aXBsZS1jaG9pY2UnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTXVsdGlwbGVDaG9pY2UoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZUNoZWNrYm94KGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzdGFyLXJhdGluZyc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdGFyUmF0aW5nKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzaW5nbGUtdGV4dGJveCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTaW5nbGVUZXh0Ym94KGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdjb21tZW50LWJveCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVDb21tZW50Ym94KGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtYXRyaXgtZHJvcGRvd24nOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTWF0cml4RHJvcGRvd24oaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2Ryb3Bkb3duJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZURyb3Bkb3duKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzbGlkZXInOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlU2xpZGVyKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdyYXRpbmctc2NhbGUnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlUmF0aW5nU2NhbGUoaW5kZXgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnbXVsdGlwbGUtdGV4dGJveCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNdWx0aXBsZVRleHRib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVEYXRlVGltZShpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZmlsZS11cGxvYWQnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRmlsZVVwbG9hZChpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAncmFua2luZyc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVSYW5raW5nKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzdGFyLXJhdGluZyc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdGFyUmF0aW5nKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VG9QYWdlZnJvbVdlbGNvbWUoKSB7XHJcbiAgICBpZiAoWyd0aGFua3lvdXNjcmVlbicsICd3ZWxjb21lc2NyZWVuJ10uaW5jbHVkZXModGhpcy5zdGVwSWRlbnRpZmllcikpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IHRoaXMuYWxsUGFnZXMubGVuZ3RoO1xyXG4gICAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgd2hldGhlciB0byBkaXNwbGF5IFBhZ2UgRGV0YWlscyBvciBBZGQgUGFnZSB0aWx0ZSBvcHRpb25cclxuICAgKi9cclxuICBjaGVja0ZvclBhZ2VEZXRhaWxzKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VEZXRhaWxzID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50UGFnZURldGFpbHMucGFnZU5hbWUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuc2hvd0FkZFBhZ2VPcHRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dQYWdlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93QWRkUGFnZU9wdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dQYWdlRGV0YWlscyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG11bHRpcGxlIGNob2ljZVxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlTXVsdGlwbGVDaG9pY2UoaW5kZXg/OiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnbXVsdGlwbGUtY2hvaWNlJywgbmFtZTogYGAsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIG90aGVyQ29uZmlnOiB7IGNvbG9yOiAnIzAwMDAwMCcsIGlzRmFpbGVkOiBmYWxzZSwgc2NvcmU6IHRoaXMuc2NvcmUuZGVmYXVsdFNjb3JlIH0sXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSwgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAgIGhlbHBpbmdMYWJlbDogJycsIGlzRmFpbGVkOiBmYWxzZSwgc2NvcmU6IHRoaXMuc2NvcmUuZGVmYXVsdFNjb3JlLCBjb2xvcjogdGhpcy5nZW5lcmF0ZVJhbmRvbUNvbG9yKClcclxuICAgICAgICB9XVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBjaGVja2JveFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlQ2hlY2tib3goaW5kZXg/OiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnY2hlY2tib3gnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgb3RoZXJDb25maWc6IHsgY29sb3I6ICcjMDAwMDAwJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUgfSxcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLCBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczpcclxuICAgICAgICBbe1xyXG4gICAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgaGVscGluZ0xhYmVsOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUsIGNvbG9yOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKVxyXG4gICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIHN0YXIgcmF0aW5nXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKiBbTm90ZV06IFJhdGluZyBsYWJlbCB0eXBlIGNhbiB0YWtlIDIgdmFsdWVzICdzcGVjaWZpYycvJ3NjYWxlJ1xyXG4gICAqL1xyXG4gIGNyZWF0ZVN0YXJSYXRpbmcoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdzdGFyLXJhdGluZycsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCBjdXJzb3JUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgY3Vyc29yQ29sb3I6ICcjZmY4MDAwJywgc2NhbGU6IDIsIHN0YXJWYWx1ZTogJycsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSwgcmF0aW5nTGFiZWxUeXBlOiAnc3BlY2lmaWMnLFxyXG4gICAgICBzY2FsZVJhbmdlRnJvbTogJ05vdCBhdCBhbGwgbGlrZWx5JyxcclxuICAgICAgc2NhbGVSYW5nZVRvOiAnRXh0cmVtZSBMaWtlbHknLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIGlzVmlzaWJsZTogdHJ1ZSwgdmFsdWU6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIGlzVmlzaWJsZTogdHJ1ZSwgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgc2luZ2xlIHRleHRib3hcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVNpbmdsZVRleHRib3goaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdzaW5nbGUtdGV4dGJveCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBoYXNWYWxpZGF0aW9uOiBmYWxzZSwgdmFsaWRhdGlvblR5cGU6ICcnLCBpc1JlcXVpcmVkOiBmYWxzZSwgaGFzQ2hhcmFjdGVyTGVuZ3RoOiBmYWxzZSwgbWluQ2hhcmFjdGVyTGVuZ3RoOiAwLFxyXG4gICAgICBtYXhDaGFyYWN0ZXJMZW5ndGg6IDEwMCwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJyB9XVxyXG4gICAgfTtcclxuXHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcblxyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGNvbW1lbnQgYm94XHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVDb21tZW50Ym94KGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnY29tbWVudC1ib3gnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlcixcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICBoYXNDaGFyYWN0ZXJMZW5ndGg6IGZhbHNlLCBtaW5DaGFyYWN0ZXJMZW5ndGg6IDAsIG1heENoYXJhY3Rlckxlbmd0aDogMCwgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLFxyXG4gICAgICBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSxcclxuICAgICAgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJywgaW1hZ2VVUkw6ICcnIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG1hdHJpeCBvZiBkcm9wZG93blxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlTWF0cml4RHJvcGRvd24oaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdtYXRyaXgtZHJvcGRvd24nLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgb3RoZXJDb25maWc6IHsgY29sb3I6ICcjMDAwMDAwJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogMSB9LFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGNvbHVtbnM6IFt7XHJcbiAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgd2VpZ2h0OiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycsXHJcbiAgICAgICAgY2hvaWNlczogW3sgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH1dXHJcbiAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBkcm9wZG93blxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlRHJvcGRvd24oaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdkcm9wZG93bicsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBvdGhlckNvbmZpZzogeyBjb2xvcjogJyMwMDAwMDAnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSB9LFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnLFxyXG4gICAgICAgICAgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUsIGNvbG9yOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBzbGlkZXJcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVNsaWRlcihpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ3NsaWRlcicsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGNlbnRlclJhbmdlOiBmYWxzZSwgYWRqdXN0U2NhbGU6IGZhbHNlLCBudW1lcmljQm94RW5hYmxlZDogZmFsc2UsIGxlZnQ6IDAsIGNlbnRlcjogMCwgcmlnaHQ6IDEwMCxcclxuICAgICAgc2NhbGVSYW5nZU1pbjogMCwgc2NhbGVSYW5nZU1heDogMTAwLCBzdGVwU2l6ZTogMTAsIHN0YXJ0UG9zaXRpb246IDAsIGVkaXRvclZhbHVlOiAwXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG1hdHJpeCByYXRpbmcgc2NhbGVcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVJhdGluZ1NjYWxlKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAncmF0aW5nLXNjYWxlJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBoYXNSYXRpbmdMYWJlbDogZmFsc2UsIHJhdGluZ0xhYmVsVHlwZTogJycsXHJcbiAgICAgIG90aGVyVmFsdWU6ICdPdGhlcicsIGhhc1dlaWdodDogZmFsc2UsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLCBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSxcclxuICAgICAgY2hvaWNlczogW3sgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH1dLFxyXG4gICAgICBjb2x1bW5zOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCB3ZWlnaHQ6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSByYW5raW5nXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVSYW5raW5nKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAncmFua2luZycsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgaGFzUmF0aW5nTGFiZWw6IGZhbHNlLCBhbGlnbm1lbnQ6IGZhbHNlLFxyXG4gICAgICByZXZlcnNlOiBmYWxzZSwgb25seU51bWJlcjogdHJ1ZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSxcclxuICAgICAgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9LFxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG11bHRpcGxlIHRleHRib3hcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZU11bHRpcGxlVGV4dGJveChpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ211bHRpcGxlLXRleHRib3gnLCBuYW1lOiAnJyxcclxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsIG90aGVyVmFsdWU6ICdPdGhlcicsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSxcclxuICAgICAgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsIG9ubHlOdW1iZXI6IHRydWUsIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sXHJcbiAgICAgIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBkYXRlL3RpbWVcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZURhdGVUaW1lKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnZGF0ZS10aW1lJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBoYXNSYXRpbmdMYWJlbDogZmFsc2UsIGFsaWdubWVudDogZmFsc2UsXHJcbiAgICAgIHJldmVyc2U6IGZhbHNlLCBvbmx5TnVtYmVyOiB0cnVlLCBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLCBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSxcclxuICAgICAgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgaGFzRGF0ZTogdHJ1ZSwgaGFzVGltZTogZmFsc2UsIGRhdGVGb3JtYXQ6ICdERC9NTS9ZWVlZJywgdGltZUZvcm1hdDogMjQsXHJcbiAgICAgIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9LFxyXG5cclxuICAgICAgXSxcclxuICAgICAgZGF0ZTogeyB0aXRsZTogJycsIHZhbHVlOiAnJyB9LFxyXG4gICAgICB0aW1lOiB7IHRpdGxlOiAnJywgdmFsdWU6ICcnIH1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgZmlsZSB1cGxvYWRcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUZpbGVVcGxvYWQoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdmaWxlLXVwbG9hZCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNJbnN0cnVjdGlvbjogZmFsc2UsIGluc3RydWN0aW9uOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLCByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgICBmaWxlVHlwZVJlc3RyaWN0aW9uczogZmFsc2UsIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLFxyXG4gICAgICB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGFsbG93ZWRGaWxlVHlwZXM6IHtcclxuICAgICAgICBwZGY6IHRydWUsXHJcbiAgICAgICAgZG9jOiB0cnVlLFxyXG4gICAgICAgIHBuZzogdHJ1ZSxcclxuICAgICAgICBqcGc6IHRydWUsXHJcbiAgICAgICAgZ2lmOiB0cnVlXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgaW1hZ2UgY2hvaWNlXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVJbWFnZUNob2ljZShpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ2ltYWdlLWNob2ljZScsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLFxyXG4gICAgICB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycsIGltYWdlVVJMOiAnJyB9XHJcblxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICogQ3JlYXRlcyBhbmQgYWRkcyB0aGUgcXVlc3Rpb24gdG8gbGlzdCBvZiBxdWVzdGlvbnMgaWYgYSBxdWVzdGlvbidzIGluZGV4IGlzIHVuZGVmaW5lZFxyXG4gKiBAcGFyYW0gZWxlbWVudCBEZXRhaWxzIG9mIHF1ZXN0aW9uIHRvIGJlIGNyZWF0ZWRcclxuICovXHJcbiAgb3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQ6IGFueSkge1xyXG5cclxuICAgIGVsZW1lbnQubmFtZSA9IHRoaXMuZ2VuZXJhdGVRdWVzdGlvbk5hbWUodGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMubGVuZ3RoICsgMSksXHJcbiAgICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbiAgICB0aGlzLnNldEFjdGl2ZVF1ZXN0aW9uQmFzZWRPblBhZ2VMZW5ndGgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW5kIGFkZHMgdGhlIHF1ZXN0aW9uIHRvIGxpc3Qgb2YgcXVlc3Rpb25zIGlmIGEgcXVlc3Rpb24ncyBpbmRleCBpcyBwcmVzZW50XHJcbiAgICogQHBhcmFtIGVsZW1lbnQgRGV0YWlscyBvZiBxdWVzdGlvbiB0byBiZSBjcmVhdGVkXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIHNob3VsZCBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgb3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpIHtcclxuXHJcbiAgICBlbGVtZW50Lm5hbWUgPSB0aGlzLmdlbmVyYXRlUXVlc3Rpb25OYW1lKGluZGV4ICsgMSk7XHJcbiAgICB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5zcGxpY2UoaW5kZXggKyAxLCAwLCBlbGVtZW50KTtcclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb24gPSBpbmRleCArIDE7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChpbmRleCArIDEpO1xyXG4gIH1cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgYWN0aXZlIHF1ZXN0aW9uIGJhc2VkIG9uIHBhcnRpY3VsYXIgcGFnZVxyXG4gICAgKi9cclxuICBzZXRBY3RpdmVRdWVzdGlvbkJhc2VkT25QYWdlTGVuZ3RoKCkge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMuY3VycmVudFBhZ2VOdW1iZXI7IGkrKykge1xyXG4gICAgICBjb3VudCArPSBbLi4udGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHNdLnJlZHVjZShcclxuICAgICAgICAoY291bnRlcjogYW55LCBjdXJyZW50RWxlbWVudDogYW55KSA9PiAoaSA9PT0gY3VycmVudEVsZW1lbnQucGFnZSA/IGNvdW50ZXIgKyAxIDogY291bnRlciksIDApIC0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb24gPSBjb3VudCArIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgLSAxO1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoY291bnQgKyB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyIC0gMSk7XHJcblxyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgLy8gfSwgMTUwKTtcclxuICAgIC8vIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiogU29ydHMgdGhlIHF1ZXN0aW9ucyBiYXNlZCBvbiBwYWdlIG51bWJlclxyXG4qL1xyXG4gIHNvcnRRdWVzdGlvbigpIHtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBhLnBhZ2UgLSBiLnBhZ2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgdW5pcXVlIHF1ZXN0aW9uIG5hbWUgZm9yIG5ld2x5IGFkZGVkIHF1ZXN0aW9uXHJcbiAgICogQHBhcmFtIHF1ZXN0aW9uSW5kZXggSW5kZXggb2YgcXVlc3Rpb24gdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGdlbmVyYXRlUXVlc3Rpb25OYW1lKHF1ZXN0aW9uSW5kZXg6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBxdWVzdGlvbk5hbWVzID0gdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMubWFwKChhOiBhbnkpID0+IGEubmFtZSk7XHJcbiAgICBpZiAocXVlc3Rpb25OYW1lcy5pbmNsdWRlcyhgJHt0aGlzLnByZWZpeEZvclF1ZXN0aW9uTmFtZX0ke3F1ZXN0aW9uSW5kZXh9YCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVRdWVzdGlvbk5hbWUocXVlc3Rpb25JbmRleCArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbmFtZSA9ICdRdWVzdGlvbl8nICsgcXVlc3Rpb25JbmRleC50b1N0cmluZygpO1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2VuZXJhdGVSYW5kb21Db2xvcigpIHtcclxuICAgIC8vcmV0dXJuICcjJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2Nzc3MjE1KS50b1N0cmluZygxNik7XHJcbiAgICByZXR1cm4gJyMwMDAwMDAnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2V0cyB0aGUgcXVlc3Rpb24gYXMgYWN0aXZlIGJhc2VkIG9uIHRoZSBwYXJ0aWN1bGFyIGluZGV4XHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcXVlc3Rpb24gdG8gYmUgbWFya2VkIGFzIGFjdGl2ZSBxdWVzdGlvblxyXG4gKi9cclxuICBzZXRhY3RpdmVRdWVzdGlvbihpbmRleD86IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IGluZGV4O1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoaW5kZXgpO1xyXG4gIH1cclxuICAvKipcclxuICogRHVwbGljYXRlcyBhIHF1ZXN0aW9uIHdpdGggcGFydGljdWxhciBpbmRleFxyXG4gKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgcXVlc3Rpb24gdG8gYmUgZHVwbGljYXRlZFxyXG4gKi9cclxuICBjb3B5UXVlc3Rpb24oaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5zZXRhY3RpdmVRdWVzdGlvbihpbmRleCArIDEpO1xyXG4gICAgY29uc3QgQ09QWV9FTEVNRU5UID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1zUGFnZS5lbGVtZW50c1tpbmRleF0pKTtcclxuICAgIGlmIChDT1BZX0VMRU1FTlQuZXJyb3JBcnJheSkge1xyXG4gICAgICBkZWxldGUgQ09QWV9FTEVNRU5ULmVycm9yQXJyYXk7XHJcbiAgICB9XHJcbiAgICBDT1BZX0VMRU1FTlQudmlzaWJpbGl0eUxvZ2ljID0gW107XHJcbiAgICBjb25zdCBlbGVtZW50c05hbWVzOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50c05hbWVzLnB1c2goZWxlbWVudC5uYW1lKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja0ZvclNhbWVOYW1lKGVsZW1lbnRzTmFtZXMsIENPUFlfRUxFTUVOVCk7XHJcbiAgICB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5zcGxpY2UoaW5kZXggKyAxLCAwLCBDT1BZX0VMRU1FTlQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBBc3NpZ25zIGEgdW5pcXVlIG5hbWUgdG8gdGhlIGR1cGxpY2F0ZWQgcXVlc3Rpb25cclxuICAgKiBAcGFyYW0gZWxlbWVudHNOYW1lcyBMaXN0IG9mIHF1ZXN0aW9uIG5hbWVzXHJcbiAgICogQHBhcmFtIENPUFlfRUxFTUVOVCBEZXRhaWxzIG9mIHF1ZXN0aW9uIGR1cGxpY2F0ZWRcclxuICAgKi9cclxuICBjaGVja0ZvclNhbWVOYW1lKGVsZW1lbnRzTmFtZXM6IGFueSwgQ09QWV9FTEVNRU5UOiBhbnkpIHtcclxuICAgIGlmIChlbGVtZW50c05hbWVzLmluY2x1ZGVzKENPUFlfRUxFTUVOVC5uYW1lKSkge1xyXG4gICAgICBjb25zdCBDT1BZX0VMRU1FTlRfTkFNRSA9IENPUFlfRUxFTUVOVC5uYW1lLnNwbGl0KCdfJyk7XHJcbiAgICAgIENPUFlfRUxFTUVOVF9OQU1FW0NPUFlfRUxFTUVOVF9OQU1FLmxlbmd0aCAtIDFdID0gKHBhcnNlSW50KENPUFlfRUxFTUVOVF9OQU1FW0NPUFlfRUxFTUVOVF9OQU1FLmxlbmd0aCAtIDFdLCAxMCkgKyAxKS50b1N0cmluZygpO1xyXG4gICAgICBDT1BZX0VMRU1FTlQubmFtZSA9IENPUFlfRUxFTUVOVF9OQU1FLmpvaW4oJ18nKTtcclxuICAgICAgdGhpcy5jaGVja0ZvclNhbWVOYW1lKGVsZW1lbnRzTmFtZXMsIENPUFlfRUxFTUVOVCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gKiBEZWxldGVzIHRoZSBxdWVzdGlvbiBvbiBjbGljayBvZiBkZWxldGUgYnV0dG9uXHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiBxdWVzdGlvbiB0byBiZSBkZWxldGVkXHJcbiAqL1xyXG4gIGRlbGV0ZVF1ZXN0aW9uKGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMucmVtb3ZlTG9naWNGcm9tRGVwZW5kZW50UXVlc3Rpb24oaW5kZXgpO1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgLyoqXHJcbiAqIFJlbW92ZXMgdGhlIGxvZ2ljIGRhdGEgZm9yIGEgcGFydGljdWxhciBxdWVzdGlvbiBmcm9tIG90aGVyIHF1ZXN0aW9uc1xyXG4gKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgcXVlc3Rpb24gd2hvc2UgbG9naWMgZGF0YSBuZWVkcyB0byBiZSByZW1vdmVkIGZyb20gb3RoZXIgcXVlc3Rpb25zXHJcbiAqL1xyXG4gIHJlbW92ZUxvZ2ljRnJvbURlcGVuZGVudFF1ZXN0aW9uKGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKHF1ZXN0aW9uRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChxdWVzdGlvbkVsZW1lbnQudmlzaWJpbGl0eUxvZ2ljLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBxdWVzdGlvbkVsZW1lbnQudmlzaWJpbGl0eUxvZ2ljID0gcXVlc3Rpb25FbGVtZW50LnZpc2liaWxpdHlMb2dpYy5maWx0ZXIoKGxvZ2ljOiBhbnkpID0+XHJcbiAgICAgICAgICBsb2dpYy5xdWVzdGlvbk5hbWUgIT09IHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzW2luZGV4XS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4qIEFkZHMgYSBuZXcgcGFnZVxyXG4qL1xyXG4gIGFkZFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZU51bWJlciA9PT0gLTEgfHwgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9PT0gLTIpIHtcclxuICAgICAgLy90aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5udW1iZXJPZlBhZ2VzKCkgKyAxO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5hbGxQYWdlcy5sZW5ndGggKyAxO1xyXG4gICAgICB0aGlzLmFsbFBhZ2VzLnB1c2godGhpcy5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICAgIHRoaXMubnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IHRoaXMuYWxsUGFnZXMubGVuZ3RoICsgMTtcclxuICAgICAgdGhpcy5hbGxQYWdlcy5wdXNoKHRoaXMuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICogQ291bnRzIHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gYSBzdXJ2ZXkvZm9ybVxyXG4gICovXHJcbiAgbnVtYmVyT2ZQYWdlcygpOiBhbnkge1xyXG4gICAgY29uc3QgUEFHRV9BUlJBWTogYW55ID0gW107XHJcbiAgICBpZiAodGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIFBBR0VfQVJSQVkucHVzaChlbGVtZW50LnBhZ2UpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VOdW1iZXIgPSBlbGVtZW50Py5wYWdlO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QucHVzaCh0aGlzLmN1cnJlbnRQYWdlRGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbGxQYWdlcyA9IFsuLi5uZXcgU2V0KFBBR0VfQVJSQVkpXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCB0b2tlbjogdGhpcy5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSB9KVxyXG4gIH07XHJcblxyXG4gIGZldGNoQXNzZXNzbWVudERhdGEoaWQ6IHN0cmluZykge1xyXG4gICAgLy9tb2RlPWFzc2Vzc21lbnQvZmV0Y2hRdWVzdGlvbnNCeUFzc2Vzc21lbnRJZCZpZD02MWYzZjc4NzFjNjAwMjAwMDlhMjA1NDNcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFwiZW52XCIgKyAnYXNzZXNzbWVudC9mZXRjaFF1ZXN0aW9uc0J5QXNzZXNzbWVudElkJmlkPScgKyBpZCwgdGhpcy5odHRwT3B0aW9ucykucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBzYXZlQXNzZXNzbWVudChpZDogYW55LCBwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcImVudlwiICsgJ2Fzc2Vzc21lbnQvdXBkYXRlJmlkPScgKyBpZCwgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcclxuICAgIC8vP21vZGU9YXNzZXNzbWVudC91cGRhdGUmaWQ9NjFmM2Y3ODcxYzYwMDIwMDA5YTIwNTQzXHJcbiAgfVxyXG5cclxuICBnZXRBdXRob3JpemF0aW9uVG9rZW4oKSB7XHJcbiAgICBjb25zdCBUT0tFTiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpO1xyXG4gICAgbGV0IGN1cnJlbnRVc2VyO1xyXG4gICAgVE9LRU4gIT09IG51bGwgPyAoY3VycmVudFVzZXIgPSBKU09OLnBhcnNlKFRPS0VOKSkgOiAoY3VycmVudFVzZXIgPSB7fSk7XHJcbiAgICByZXR1cm4gY3VycmVudFVzZXIudG9rZW47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEV4dHJhY3RzIHRoZSB0ZXh0IGZyb20gYSBwYXJ0aWN1bGFyIGh0bWwgY29udGVudFxyXG4gICogQHBhcmFtIHMgaHRtbCBjb250ZW50IGZyb20gd2hpY2ggdGV4dCBuZWVkcyB0byBiZSBleHRyYWN0ZWRcclxuICAqL1xyXG4gIGV4dHJhY3Qoczogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5pbm5lckhUTUwgPSBzO1xyXG4gICAgcmV0dXJuIHNwYW4udGV4dENvbnRlbnQgfHwgc3Bhbi5pbm5lclRleHQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1vdmVzIFF1ZXN0aW9uIHRvIGEgcGFydGljdWxhciBpbmRleCBpbiBhbiBhcnJheVxyXG4gICAqIEBwYXJhbSBwcmV2aW91cyBJbmRleCBmcm9tIHdoaWNoIFF1ZXN0aW9uIHNob3VsZCBiZSBtb3ZlZFxyXG4gICAqIEBwYXJhbSBuZXh0ICBJbmRleCBiZWZvcmUgd2hpY2ggUXVlc3Rpb24gc2hvdWxkIGJlIG1vdmVkXHJcbiAgICovXHJcbiAgbW92ZVF1ZXN0aW9uKHByZXZpb3VzOiBhbnksIG5leHQ6IGFueSkge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLCBwcmV2aW91cywgbmV4dCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|