vcomply-workflow-engine 2.6.174 → 2.6.176
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/bundles/vcomply-workflow-engine.umd.js +1 -0
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/workflow-program/workflow-program.component.js +2 -1
- package/fesm2015/vcomply-workflow-engine.js +1 -0
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/package.json +2 -2
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts.__ivy_ngcc_bak +0 -83
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts.map +0 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts.map +0 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts.__ivy_ngcc_bak +0 -182
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts.map +0 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts.__ivy_ngcc_bak +0 -65
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts.map +0 -1
- package/lib/confirmation-alert/confirmation-alert.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/confirmation-alert/confirmation-alert.component.d.ts.map +0 -1
- package/lib/create-documents/create-documents.component.d.ts.__ivy_ngcc_bak +0 -36
- package/lib/create-documents/create-documents.component.d.ts.map +0 -1
- package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts.map +0 -1
- package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.map +0 -1
- package/lib/formgroup/cs-radio/cs-radio.component.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/formgroup/cs-radio/cs-radio.component.d.ts.map +0 -1
- package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts.map +0 -1
- package/lib/formgroup/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +0 -31
- package/lib/formgroup/cs-select/cs-select.component.d.ts.map +0 -1
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts.map +0 -1
- package/lib/formgroup/formgroup.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/formgroup/formgroup.module.d.ts.map +0 -1
- package/lib/formgroup/pipes/pascal.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/formgroup/pipes/pascal.pipe.d.ts.map +0 -1
- package/lib/formgroup/select/cs-option/cs-option.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/formgroup/select/cs-option/cs-option.component.d.ts.map +0 -1
- package/lib/formgroup/select/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +0 -34
- package/lib/formgroup/select/cs-select/cs-select.component.d.ts.map +0 -1
- package/lib/formgroup/select/select.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/formgroup/select/select.module.d.ts.map +0 -1
- package/lib/formgroup/select/select.service.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/formgroup/select/select.service.d.ts.map +0 -1
- package/lib/log-an-issue/log-an-issue.component.d.ts.__ivy_ngcc_bak +0 -218
- package/lib/log-an-issue/log-an-issue.component.d.ts.map +0 -1
- package/lib/more-option/more-option.component.d.ts.__ivy_ngcc_bak +0 -25
- package/lib/more-option/more-option.component.d.ts.map +0 -1
- package/lib/pipes/data-type.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/data-type.pipe.d.ts.map +0 -1
- package/lib/pipes/list-mapper.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/list-mapper.pipe.d.ts.map +0 -1
- package/lib/pipes/search.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/search.pipe.d.ts.map +0 -1
- package/lib/pipes/space-breaker.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/space-breaker.pipe.d.ts.map +0 -1
- package/lib/pipes/uncategorized-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/uncategorized-filter.pipe.d.ts.map +0 -1
- package/lib/pipes/user-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/pipes/user-filter.pipe.d.ts.map +0 -1
- package/lib/services/bulk-upload.service.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/services/bulk-upload.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts.__ivy_ngcc_bak +0 -117
- package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts.__ivy_ngcc_bak +0 -46
- package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts.__ivy_ngcc_bak +0 -57
- package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts.__ivy_ngcc_bak +0 -27
- package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts.__ivy_ngcc_bak +0 -28
- package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts.__ivy_ngcc_bak +0 -47
- package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts.__ivy_ngcc_bak +0 -66
- package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts.__ivy_ngcc_bak +0 -185
- package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts.__ivy_ngcc_bak +0 -81
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/device/device.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/device/device.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts.map +0 -1
- package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts.map +0 -1
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts.__ivy_ngcc_bak +0 -20
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts.map +0 -1
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts.map +0 -1
- package/lib/sharedComponents/category-list/category-list.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/category-list/category-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts.__ivy_ngcc_bak +0 -28
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts.__ivy_ngcc_bak +0 -38
- package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts.map +0 -1
- package/lib/sharedComponents/directive/autofocus.directive.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/sharedComponents/directive/autofocus.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/conditional-focus.directive.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/directive/conditional-focus.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/drag-drop.directive.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/directive/drag-drop.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/input-trim.directive.d.ts.__ivy_ngcc_bak +0 -3
- package/lib/sharedComponents/directive/input-trim.directive.d.ts.map +0 -1
- package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts.map +0 -1
- package/lib/sharedComponents/document-section/document-section.component.d.ts.__ivy_ngcc_bak +0 -43
- package/lib/sharedComponents/document-section/document-section.component.d.ts.map +0 -1
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts.__ivy_ngcc_bak +0 -38
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts.map +0 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts.__ivy_ngcc_bak +0 -41
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts.__ivy_ngcc_bak +0 -108
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts.__ivy_ngcc_bak +0 -26
- package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts.__ivy_ngcc_bak +0 -37
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts.__ivy_ngcc_bak +0 -30
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts.__ivy_ngcc_bak +0 -36
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts.__ivy_ngcc_bak +0 -59
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts.__ivy_ngcc_bak +0 -32
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts.map +0 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts.__ivy_ngcc_bak +0 -46
- package/lib/sharedComponents/frequency/frequency.service.d.ts.map +0 -1
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts.__ivy_ngcc_bak +0 -42
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/no-data/no-data.component.d.ts.__ivy_ngcc_bak +0 -14
- package/lib/sharedComponents/no-data/no-data.component.d.ts.map +0 -1
- package/lib/sharedComponents/no-data/no-data.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/no-data/no-data.module.d.ts.map +0 -1
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts.__ivy_ngcc_bak +0 -36
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/array-filter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/array-filter.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/filterPipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/filterPipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/short-merge.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/short-merge.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/pipes/within-data.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/sharedComponents/pipes/within-data.pipe.d.ts.map +0 -1
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts.__ivy_ngcc_bak +0 -119
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts.map +0 -1
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts.__ivy_ngcc_bak +0 -47
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts.__ivy_ngcc_bak +0 -26
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts.map +0 -1
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts.map +0 -1
- package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts.__ivy_ngcc_bak +0 -35
- package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts.map +0 -1
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts.__ivy_ngcc_bak +0 -21
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts.map +0 -1
- package/lib/sharedComponents/v-loader/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/v-loader/loader/loader.component.d.ts.map +0 -1
- package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts.map +0 -1
- package/lib/sharedComponents/v-loader/v-loader.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/sharedComponents/v-loader/v-loader.module.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/action-dialog.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/action-dialog/action-dialog.module.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/active/active.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/action-dialog/active/active.component.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/delete/delete.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/ui-kit/action-dialog/delete/delete.component.d.ts.map +0 -1
- package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts.map +0 -1
- package/lib/ui-kit/click-outside/click-outside.directive.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/click-outside/click-outside.directive.d.ts.map +0 -1
- package/lib/ui-kit/click-outside/click-outside.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/click-outside/click-outside.module.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog-ref.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/dialog/dialog-ref.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog.component.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/ui-kit/dialog/dialog.component.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/dialog/dialog.module.d.ts.map +0 -1
- package/lib/ui-kit/dialog/dialog.service.d.ts.__ivy_ngcc_bak +0 -15
- package/lib/ui-kit/dialog/dialog.service.d.ts.map +0 -1
- package/lib/ui-kit/dialog/insertion.directive.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/ui-kit/dialog/insertion.directive.d.ts.map +0 -1
- package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts.map +0 -1
- package/lib/ui-kit/editor-loader/editor-loader.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/editor-loader/editor-loader.module.d.ts.map +0 -1
- package/lib/ui-kit/format-html.pipe.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/format-html.pipe.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.__ivy_ngcc_bak +0 -11
- package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +0 -33
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/formgroup.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/formgroup/formgroup.module.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts.map +0 -1
- package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts.map +0 -1
- package/lib/ui-kit/line-loader/line-loader.component.d.ts.__ivy_ngcc_bak +0 -6
- package/lib/ui-kit/line-loader/line-loader.component.d.ts.map +0 -1
- package/lib/ui-kit/line-loader/line-loader.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/line-loader/line-loader.module.d.ts.map +0 -1
- package/lib/ui-kit/no-data/no-data.component.d.ts.__ivy_ngcc_bak +0 -18
- package/lib/ui-kit/no-data/no-data.component.d.ts.map +0 -1
- package/lib/ui-kit/no-data/no-data.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/no-data/no-data.module.d.ts.map +0 -1
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts.__ivy_ngcc_bak +0 -23
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts.map +0 -1
- package/lib/ui-kit/pagination/pagination.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/pagination/pagination.module.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover-event.directive.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/ui-kit/popover/popover-event.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover-longpress.directive.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/ui-kit/popover/popover-longpress.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/ui-kit/popover/popover.component.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.directive.d.ts.__ivy_ngcc_bak +0 -16
- package/lib/ui-kit/popover/popover.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/popover/popover.module.d.ts.map +0 -1
- package/lib/ui-kit/popover/popover.service.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/ui-kit/popover/popover.service.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.component.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/ui-kit/popover-hover/popover-hover.component.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/popover-hover/popover-hover.module.d.ts.map +0 -1
- package/lib/ui-kit/popover-hover/popover-hover.service.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/ui-kit/popover-hover/popover-hover.service.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts.map +0 -1
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts.map +0 -1
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts.map +0 -1
- package/lib/ui-kit/snack-bar/snack-bar.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/snack-bar/snack-bar.module.d.ts.map +0 -1
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts.__ivy_ngcc_bak +0 -8
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts.map +0 -1
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts.map +0 -1
- package/lib/ui-kit/tooltip/tooltip.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/ui-kit/tooltip/tooltip.module.d.ts.map +0 -1
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts.__ivy_ngcc_bak +0 -231
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts.map +0 -1
- package/lib/workflow-assessment/workflow-assessment.component.d.ts.__ivy_ngcc_bak +0 -63
- package/lib/workflow-assessment/workflow-assessment.component.d.ts.map +0 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts.__ivy_ngcc_bak +0 -359
- package/lib/workflow-compliance/workflow-compliance.component.d.ts.map +0 -1
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts.__ivy_ngcc_bak +0 -128
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts.map +0 -1
- package/lib/workflow-engine.module.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-engine.module.d.ts.map +0 -1
- package/lib/workflow-engine.service.d.ts.__ivy_ngcc_bak +0 -3
- package/lib/workflow-engine.service.d.ts.map +0 -1
- package/lib/workflow-pagination/workflow-pagination.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/workflow-pagination/workflow-pagination.component.d.ts.map +0 -1
- package/lib/workflow-policy/workflow-policy.component.d.ts.__ivy_ngcc_bak +0 -292
- package/lib/workflow-policy/workflow-policy.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts.__ivy_ngcc_bak +0 -87
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts.__ivy_ngcc_bak +0 -13
- package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts.__ivy_ngcc_bak +0 -19
- package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts.__ivy_ngcc_bak +0 -63
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts.__ivy_ngcc_bak +0 -12
- package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts.__ivy_ngcc_bak +0 -3
- package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts.__ivy_ngcc_bak +0 -34
- package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts.__ivy_ngcc_bak +0 -9
- package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts.__ivy_ngcc_bak +0 -10
- package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts.__ivy_ngcc_bak +0 -25
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts.__ivy_ngcc_bak +0 -2
- package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts.__ivy_ngcc_bak +0 -68
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts.__ivy_ngcc_bak +0 -17
- package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts.map +0 -1
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts.__ivy_ngcc_bak +0 -104
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts.map +0 -1
- package/lib/workflow-program/workflow-program.component.d.ts.__ivy_ngcc_bak +0 -201
- package/lib/workflow-program/workflow-program.component.d.ts.map +0 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts.__ivy_ngcc_bak +0 -107
- package/lib/workflow-risk/workflow-risk.component.d.ts.map +0 -1
- package/lib/workflow-services/add-risk.service.d.ts.__ivy_ngcc_bak +0 -22
- package/lib/workflow-services/add-risk.service.d.ts.map +0 -1
- package/lib/workflow-services/assessment.service.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/workflow-services/assessment.service.d.ts.map +0 -1
- package/lib/workflow-services/auth.service.d.ts.__ivy_ngcc_bak +0 -29
- package/lib/workflow-services/auth.service.d.ts.map +0 -1
- package/lib/workflow-services/frequency.service.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-services/frequency.service.d.ts.map +0 -1
- package/lib/workflow-services/log-issue.service.d.ts.__ivy_ngcc_bak +0 -31
- package/lib/workflow-services/log-issue.service.d.ts.map +0 -1
- package/lib/workflow-services/policy.service.d.ts.__ivy_ngcc_bak +0 -24
- package/lib/workflow-services/policy.service.d.ts.map +0 -1
- package/lib/workflow-services/programs.service.d.ts.__ivy_ngcc_bak +0 -111
- package/lib/workflow-services/programs.service.d.ts.map +0 -1
- package/lib/workflow-services/responsibility.service.d.ts.__ivy_ngcc_bak +0 -42
- package/lib/workflow-services/responsibility.service.d.ts.map +0 -1
- package/lib/workflow-services/token-decoder.service.d.ts.__ivy_ngcc_bak +0 -4
- package/lib/workflow-services/token-decoder.service.d.ts.map +0 -1
- package/lib/workflow-services/ui-kit.service.d.ts.__ivy_ngcc_bak +0 -5
- package/lib/workflow-services/ui-kit.service.d.ts.map +0 -1
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts.__ivy_ngcc_bak +0 -7
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts.map +0 -1
- package/vcomply-workflow-engine.d.ts.__ivy_ngcc_bak +0 -293
- package/vcomply-workflow-engine.d.ts.map +0 -1
|
@@ -1263,6 +1263,7 @@ export class WorkflowProgramComponent {
|
|
|
1263
1263
|
this.isAscentAllowed = this.allowedFeature.isFeatureEnabled('ff_compliance_framework');
|
|
1264
1264
|
this.programSimplifyFlag = this.allowedFeature.isFeatureEnabled('ff_program_simplify');
|
|
1265
1265
|
this.featureflagGroups = this.allowedFeature.isFeatureEnabled("ff_program_groups");
|
|
1266
|
+
this.toolTipData.owner = this.featureflagrole ? "Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>The <strong>Key Power User</strong> and all <b>Power Users</b> will be selected as the Owners of a Program by default." : "Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>The <strong>Key Admin</strong> and all <b>Admin</b> users will be selected as the Owners of a Program by default.";
|
|
1266
1267
|
}
|
|
1267
1268
|
}
|
|
1268
1269
|
WorkflowProgramComponent.decorators = [
|
|
@@ -1299,4 +1300,4 @@ WorkflowProgramComponent.propDecorators = {
|
|
|
1299
1300
|
addToProgramDetails: [{ type: Input }],
|
|
1300
1301
|
orgDetails: [{ type: Input }]
|
|
1301
1302
|
};
|
|
1302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPeEMsTUFBTSxPQUFPLHdCQUF3QjtJQThDbkMsWUFBb0IsRUFBZSxFQUFVLGNBQStCLEVBQVUsV0FBd0IsRUFBUyxZQUF5QixFQUFVLFNBQTRCOztRQUFsSyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBN0N0TCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRXRCLG9CQUFlLEdBQVksS0FBSyxD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LENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUM7SUFDckMsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUN0RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDckYsQ0FBQzs7O1lBaHlDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsMDl1RUFBZ0Q7O2FBRWpEOzs7WUFiUSxXQUFXO1lBS1gsZUFBZTtZQURmLFdBQVc7WUFFWCxZQUFZO1lBUEcsaUJBQWlCOzs7bUJBbUJ0QyxTQUFTLFNBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt5QkFFdEMsU0FBUyxTQUFDLFlBQVk7NEJBQ3RCLE1BQU07NkJBQ04sTUFBTTs0QkFDTixNQUFNO29DQUNOLE1BQU07Z0NBQ04sTUFBTTswQkFDTixNQUFNOzBDQUNOLE1BQU07NkJBQ04sTUFBTTs2Q0FDTixNQUFNO2lDQUVOLEtBQUs7bUJBSUwsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUs7NkJBQ0wsS0FBSztrQ0FDTCxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZ3JhbXNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcHJvZ3JhbXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctcHJvZ3JhbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0YW50cyA9IENPTlNUQU5UUztcclxuICBzaG93Q29uZmlybWF0aW9uOiBhbnk7XHJcbiAgaXNBc2NlbnRBbGxvd2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmb3JtICE6IEVsZW1lbnRSZWY7XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uQWxlcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWZyZXNoRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJlbW92aW5nUm9sZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2FibGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBzY3JvbGxUb0JvdHRvbSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2FuRnJhbWV3b3JrQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwcm9ncmFtU2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEFsbCBJbnB1dCBmaWVsZHNcclxuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwcm9ncmFtSWQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIGFsbG93ZWRGZWF0dXJlITogYW55O1xyXG4gIEBJbnB1dCgpIGFkZFRvUHJvZ3JhbURldGFpbHM6IGFueTtcclxuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XHJcbiAgcGFuZWxUaXRsZURlZmF1bHRSZXZpZXdlciA9IFwiU2VsZWN0IERlZmF1bHQgUmV2aWV3ZXIocylcIjtcclxuICBwYW5lbFRpdGxlT3duZXIgPSBcIlNlbGVjdCBPd25lcihzKVwiO1xyXG4gIHBhbmVsVGl0bGVSZXZpZXdlciA9IFwiU2VsZWN0IFJldmlld2VyKHMpXCI7XHJcbiAgcGFuZWxUaXRsZUFzc2lnbmVlID0gXCJTZWxlY3QgQXNzaWduZWUocylcIjtcclxuICBwYW5lbFRpdGxlQXBwcm92ZXIgPSBcIlNlbGVjdCAgQXBwcm92ZXJcIlxyXG4gIGlzQXBwcm92ZXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzUHJvZ3JhbVNjb3BlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbFRpcERhdGE6IGFueSA9e1xyXG4gICAgb3duZXIgOlwiT3duZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYSBQcm9ncmFtLiBPbmx5IE93bmVycyBjYW4gbWFrZSBjaGFuZ2VzIHRvIGEgUHJvZ3JhbSBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uPGJyPlRoZSA8c3Ryb25nPktleSBBZG1pbjwvc3Ryb25nPiBhbmQgYWxsIDxiPkFkbWluPC9iPiB1c2VycyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBPd25lcnMgb2YgYSBQcm9ncmFtIGJ5IGRlZmF1bHQuXCIsXHJcbiAgICBwcm9ncmFtU2NvcGU6IGBBIFByb2dyYW0gU2NvcGUgY2FuIGJlIHVzZWQgYXMgZm9sbG93czpcclxuICA8bGk+VG8gc3BlY2lmeSB0aGUgZHVyYXRpb24gb2YgdGhlIFByb2dyYW0uPC9saT5cclxuICA8bGk+VG8gcHJlLXNlbGVjdCBjZXJ0YWluIG9wdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSwgdGhlcmVieSBkZWNyZWFzaW5nIHRoZSB0aW1lIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHJlc3BvbnNpYmlsaXR5LjwvbGk+XHJcbiAgPGxpPlRvIGxpbWl0IHRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSwgdGhlcmVieSBtYWtpbmcgaXQgZWFzaWVyIHRvIGNyZWF0ZSBhIHJlc3BvbnNpYmlsaXR5IGFuZCByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZCBvZiBhbiBpbmNvcnJlY3Qgb3B0aW9uIGJlaW5nIHNlbGVjdGVkLjwvbGk+XHJcbiAgICBgXHJcbiAgfVxyXG4gIGJ1c2luZXNzQ3ljbGU6IGFueTtcclxuICBmZWF0dXJlZmxhZ3JvbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmZWF0dXJlZmxhZ0dyb3VwczogYm9vbGVhbiA9ZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLHByaXZhdGUgdWlLaXRTZXJ2aWNlOlVpS2l0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NDeWNsZVwiKSA/PyAne30nKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYnVzaW5lc3NDeWNsZSwgJ2JjJyk7XHJcbiAgIH1cclxuICBwdWJsaWMgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IEZvcm1Db250cm9sKSB7XHJcbiAgICBjb25zdCBpc1doaXRlc3BhY2UgPSAoY29udHJvbC52YWx1ZSB8fCAnJykudHJpbSgpLmxlbmd0aCA9PT0gMDtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSAhaXNXaGl0ZXNwYWNlO1xyXG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyAnd2hpdGVzcGFjZSc6IHRydWUgfTtcclxuICB9XHJcbiAgcHVibGljIGJsYW5rQXJyYXlWYWxpZGF0b3IoY29udHJvbDogRm9ybUNvbnRyb2wpIHtcclxuICAgIGNvbnN0IGlzQmxhbmsgPSBjb250cm9sLnZhbHVlPy5maWx0ZXIoKGVsZTphbnkpPT4gZWxlKT8ubGVuZ3RoID09PSAwO1xyXG4gICAgY29uc3QgaXNWYWxpZCA9ICFpc0JsYW5rO1xyXG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyAnYmxhbmsnOiB0cnVlIH07XHJcbiAgfVxyXG4gbG9hZGVyID0gZmFsc2U7XHJcbiBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiBhY3Rpb25CdXR0b25zID0gW1xyXG4gIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIFByb2dyYW1zJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgeyBidXR0b25UZXh0OiAnVmlldyBQcm9ncmFtJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlld1Byb2dyYW0nIH0sXHJcbl07XHJcbnNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhYDtcclxuY3JlYXRlZFByb2dyYW1JZCA9ICcnO1xyXG4gIGlzT2JqZWN0aXZlVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzTmFtZUV4aXN0czogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgLy9mb3JtIGJvZHkgZm9yIHByb2dyYW0gbWV0YSBkYXRhXHJcbiAgcHJvZ3JhbUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgIHByb2dyYW1fdHlwZTogW3RoaXMucHJvZ3JhbVR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoMyldXSxcclxuICAgIHByb2dyYW1fbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ub1doaXRlc3BhY2VWYWxpZGF0b3JdXSxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb246IFsnJ10sXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6IFsnJ10sXHJcbiAgIC8vIHByb2dyYW1fb2JqZWN0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX3JvbGVzOiBbW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTogW2ZhbHNlXSxcclxuICAgIHByb2dyYW1fb3duZXJzOiBbW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXAgOltbXV0sXHJcbiAgICBwcm9ncmFtX2FwcHJvdmVyOiBbW11dLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFsnUEFTVF9FVkVOVCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiBbdHJ1ZSxbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IFtmYWxzZSxbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgZnJhbWV3b3JrOiBbXSxcclxuICAgIHJjOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTogW1tdXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtbXV0sXHJcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOiBbJ0FMTCddLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogW1tdXSxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiBbJ1NFUVVFTlRJQUwnXSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiBbW11dLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IFtmYWxzZV0sXHJcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IFtmYWxzZV0sXHJcbiAgICBjdXN0b21fZmllbGRzOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9zdGF0ZTogMCxcclxuICB9KTtcclxuXHJcbiAgLy9leGNlcHRpb25hbCBoYW5kbGluZyBvZiBjdXN0b20gZmllbGRzXHJcblxyXG4gICBzaG93QWRkQ3VzdG9tRmllbGQgPSB0cnVlO1xyXG4gIC8vUHJvZ3JhbSBvYmplY3RpdmUgYW5kIGRlc2NyaXBpb24gYXJlIGV4cGxlY3RseSBkZWNsYXJlZCBhcyB0aGV5IGFyZSB1c2luZyBtYXJ4IGVkaXRvciB3aGljaCBkb2VzIG5vdCBzdXBwb3J0cyBSZWFjdGl2ZSBmb3JtcyBiaW5kaW5nXHJcbiAgZWRpdG9yRGF0YSA9IHtcclxuICAgIHByb2dyYW1PYmplY3RpdmU6ICcnLFxyXG4gICAgcHJvZ3JhbURlc2NyaXB0aW9uOiAnJ1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRBc3Nlc3NtZW50ITogYW55O1xyXG5cclxuXHJcblxyXG4gIGN1cnJlbnRVc2VyKCkge1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2UudG9rZW5JbmZvKClcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1lbWJlcl9lbWFpbDogdXNlcj8uZW1haWwsXHJcbiAgICAgIG1lbWJlcl9pZDogdXNlcj8uaWQsXHJcbiAgICAgIG1lbWJlcl9uYW1lOiB1c2VyPy5uYW1lLFxyXG4gICAgICB1c2VyX3JvbGU6IFwiTE9HR0VEX0lOXCIsXHJcbiAgICAgIF9pZDogXCJcIlxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLy9TZXRzIHRoZSB2YWx1ZSBvZiBhIGZvcm0gY29udHJvbFxyXG4gIHNldEZvcm1GaWVsZChjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBpc0Zyb21Gb3JtPzogYm9vbGVhbikge1xyXG4gICAgbGV0IHBhdGNoOiBhbnkgPSB7fTtcclxuICAgIHBhdGNoW2NvbnRyb2xOYW1lXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKHBhdGNoKTtcclxuICAgIHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdPy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBpZihpc0Zyb21Gb3JtICYmIGNvbnRyb2xOYW1lID09PSAncHJvZ3JhbV9vYmplY3RpdmUnICYmICF2YWx1ZS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKS50cmltKCkpIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IGZhbHNlO1xyXG4gICAgZWxzZSB0aGlzLmlzT2JqZWN0aXZlVmFsaWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9SZXR1cm5zIHdlYXRoZXIgdGhlIGZvcm0gaXMgdmFsaWQgb3Igbm90XHJcbiAgZ2V0IGZvcm1WYWxpZCgpIHtcclxuICAgIGlmICh0aGlzLnByb2dyYW1Gb3JtLnZhbGlkICYmIHRoaXMuZWRpdG9yRGF0YT8ucHJvZ3JhbU9iamVjdGl2ZT8ucmVwbGFjZSgvJm5ic3A7L2csICcgJyk/LnRyaW0oKT8ubGVuZ3RoICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnRyb2xzOiBhbnkgPSB7XHJcbiAgICBwcm9ncmFtX25hbWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX25hbWUnKSxcclxuICAgIHByb2dyYW1fdHlwZTp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV90eXBlJyksXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb2JqZWN0aXZlJyksXHJcbiAgICBwcm9ncmFtX3JvbGVzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yb2xlcycpLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVycycpLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVyc19ncm91cCcpLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2FsbF91c2VyX2luX3JvbGUnKSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2FwcHJvdmVyJyksXHJcbiAgICBkZXNjcmlwdGlvbl9hdHRhY2htZW50OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycpLFxyXG4gICAgb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnKSxcclxuICAgIHBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicpLFxyXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JlY3VycmluZ19mcmVxdWVuY3knKSxcclxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnbG9ja19zY29wZV9jaGFuZ2UnKSxcclxuICAgIHJjOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmMnKSxcclxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZXZpZGVuY2VfcmVxdWlyZWQnKSxcclxuICAgIGZyYW1ld29yazogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2ZyYW1ld29yaycpLFxyXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJyksXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2lnbmVlJyksXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnKSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yZXZpZXdlcicpLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vdmVyc2VlcicpLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhIDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnKSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2Vzc21lbnRzJyksXHJcbiAgICBjdXN0b21fZmllbGRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnY3VzdG9tX2ZpZWxkcycpLFxyXG4gICAgaXNBcHByb3ZlckRpc2FibGVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnaXNBcHByb3ZlckRpc2FibGVkJyksXHJcbiAgfVxyXG5cclxuICBsaXN0czogYW55ID0ge1xyXG4gICAgUk9MRVM6IFtdLFxyXG4gICAgT1dORVJTOiBbXSxcclxuICAgIE9XTkVSU19HUk9VUFM6W10sXHJcbiAgICBBUFBST1ZFUlM6W10sXHJcbiAgICBSRVZJRVdFUlM6IFtdLFxyXG4gICAgUkVWSUVXRVJTX0dST1VQOltdLFxyXG4gICAgQVNTSUdORUVTOiBbXSxcclxuICAgIEFTU0lHTkVFU19HUk9VUCA6W10sXHJcbiAgICBERUZBVUxUX0FTU0lHTkVFUzpbXSxcclxuICAgIERFRkFVTFRfQVNTSUdORUVTX0dST1VQOltdLFxyXG4gICAgREVGQVVMVF9SRVZJRVdFUlM6W10sXHJcbiAgICBERUZBVUxUX1JFVklFV0VSU19HUk9VUDpbXSxcclxuICAgIE9WRVJTRUVSUzogW10sXHJcbiAgICBPVkVSU0VFUlNfR1JPVVA6W10sXHJcbiAgICBERUZBVUxUX09WRVJTRUVSUzogW10sXHJcbiAgICBERUZBVUxUX09WRVJTRUVSU19HUk9VUDpbXSxcclxuICAgIFJDOiBbXSxcclxuICAgIE5PTl9SRU1PVkFCTEVfT1dORVJTOiBbXSxcclxuICAgIEFMTF9VU0VSOltdLFxyXG4gICAgQUxMX0dST1VQOltdLFxyXG4gICAgU1lTVEVNX1JPTEVfSURTOltdXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGxpc3RMb2FkaW5nU3RhdGUgPSB7XHJcbiAgICBST0xFUzpmYWxzZSxcclxuICAgIFVTRVJTOmZhbHNlLFxyXG4gICAgR1JPVVA6ZmFsc2UsXHJcbiAgICBSQzpmYWxzZSxcclxuICB9XHJcbiAgc2lkZUVsZW1lbnRzID0gWydST0xFJywnUkMnLCdPV05FUicsJ0FTU0lHTkVFJywnQVBQUk9WRVInLCdERUZBVUxUX0FTU0lHTkVFJywnUkVWSUVXRVInLCdERUZBVUxUX1JFVklFV0VSJywnQVNTRVNTTUVOVCcsJ0ZSQU1FV09SSycsJ09WRVJTRUVSJywnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInLCdERUZBVUxUX09WRVJTRUVSJywnT1ZFUlNFRVInXTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgdGhpcy5wcm9ncmFtVHlwZSk7XHJcbiAgICBpZih0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLmdldFByb2dyYW1EZXRhaWxzKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvblVzZXJzKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XHJcbiAgICB0aGlzLmZldGNoUkMoKTtcclxuICAgIGlmKHRoaXMuYWRkVG9Qcm9ncmFtRGV0YWlscz8uX2lkKSB7XHJcbiAgICAgIHRoaXMubGlzdEFjdGlvbih0aGlzLmFkZFRvUHJvZ3JhbURldGFpbHMsICdGUkFNRVdPUksnKVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbmFibGVmZWF0dXJlKCk7XHJcbiAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7IFxyXG4gIH1cclxuICBnZXQgdmFsaWQoKSB7XHJcbiAgIHJldHVybiB0aGlzLnByb2dyYW1Gb3JtLnZhbGlkXHJcbiAgfVxyXG5cclxuICBhZGRpdGlvbmFsT3B0aW9uOiBhbnkgPSB7Li4uQ09OU1RBTlRTLmFkZGl0aW9uYWxPcHRpb259O1xyXG4gIGFjdGl2ZUxpc3QgPSAnJ1xyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBQb3B1bGF0ZXMgb3B0aW9uYWwgZmllbGRzIHN0YXR1cyBmb3IgdGhlIG9wdGlvbmFsIGZpZWxkc1xyXG4gICAqL1xyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb24pKSB7XHJcbiAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxPcHRpb25ba2V5XSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbltldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uIHRvIGF1dG9tYXRlIGZvcm0gdmFsdWUgY2hhbmdlIGhhbmRuZ1xyXG4gIGZvcm1DaGFuZ2VMaXN0bmVyKCkge1xyXG4gICAgY29uc3QgZmllbGRzID0gT2JqZWN0LmtleXModGhpcy5jb250cm9scyk7XHJcbiAgICBmaWVsZHMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jb250cm9sc1tlbGVdPy52YWx1ZUNoYW5nZXMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4geyB0aGlzLmhhbmRsZUZvcm1GaWVsZENoYW5nZShlbGUsIHJlcykgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZUZvcm1GaWVsZENoYW5nZShjb250cm9sOiBzdHJpbmcsIHBheWxvYWQ/OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoY29udHJvbCkge1xyXG4gICAgICBjYXNlICdwcm9ncmFtX3JvbGVzJzoge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZUxpc3QoZXZ0OiBzdHJpbmcpIHtcclxuICAgIGlmKGV2dCA9PT0gJ0ZSQU1FV09SSycgJiYgIXRoaXMuY2FuRnJhbWV3b3JrQ2hhbmdlKSByZXR1cm47XHJcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSBldnQ7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGxpc3RBY3Rpb24oZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBzeXN0ZW1Sb2xlcyA9IGV2dD8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKTtcclxuICAgICAgICBjb25zdCBwYXRjaFZhbCA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5zeXN0ZW1Sb2xlcywgLi4uZXZ0XSwgJ19pZCcpO1xyXG4gICAgICAgIGlmICghaXNFcXVhbCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXMudmFsdWUuc29ydCgpLCBwYXRjaFZhbC5zb3J0KCkpKSB7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHBhdGNoVmFsKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSQyc6IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInJvbGVcIixldnQpXHJcbiAgICAgICAgY29uc3QgcmMgPSB0aGlzLnNldExpc3QodGhpcy5saXN0cy5SQywgZXZ0LCAnaXRlbV9pZCcpXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJzZXRyY1wiLHJjKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycsIHRoaXMudW5pcXVlQnlQcm9wKHJjLCAnaXRlbV9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPV05FUicgOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVBQUk9WRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTSUdORUUnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlKGV2dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRSc6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlcihldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXIoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIGV2dCk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsIGV2dCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIGV2dD8ubmFtZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb24nLCBldnQ/LmRlc2NyaXB0aW9uKTtcclxuICAgICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uID0gZXZ0Py5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdST0xFJzoge1xyXG4gICAgICAgIGxldCBtc2cgPSAnJztcclxuICAgICAgICBtc2cgPSAnSWYgeW91IGNoYW5nZSB0aGUgcm9sZXMsIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nXHJcbiAgICAgICAgY29uc3Qgcm9sZXMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5faWQgIT09IGV2dD8uX2lkKTtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb24ocm9sZXMsJ1JPTEUnKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHJvbGVzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSQyc6IHtcclxuICAgICAgICBjb25zdCByY3MgPSB0aGlzLmNvbnRyb2xzPy5yYz8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uaXRlbV9pZCAhPT0gZXZ0Py5pdGVtX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCByY3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09XTkVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3duZXJzID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIG93bmVycyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvd25lcnNfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVyc19ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVBQUk9WRVInOntcclxuICAgICAgICBjb25zdCBhcHByb3ZlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgYXBwcm92ZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRV9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUic6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcik7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCByZXZpZXdlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcl9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVInOntcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyX2dyb3VwKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVInOntcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnIDp7XHJcblxyXG4gICAgICAgIGxldCBjdXJyZW50ID0gY2xvbmVEZWVwKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudC5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gZXZ0LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICBjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzID0gY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5maWx0ZXIoKGFzc2Vzc21lbnQ6IGFueSkgPT4gYXNzZXNzbWVudC5pZCAhPT0gZXZ0LmlkKTtcclxuICAgICAgICBpZihjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzLmxlbmd0aCAgPT09IDApICBjdXJyZW50LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKGN1cnJlbnQsICdBU1NFU1NNRU5UJyk7XHJcbiAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdGUkFNRVdPUksnIDp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsIG51bGwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUm9sZShldnQ6IGFueSl7XHJcbiAgICB0aGlzLm9uUmVtb3ZpbmdSb2xlLmVtaXQoZXZ0KTtcclxuICB9XHJcblxyXG5cclxuICAvL2JlbG93IDQgZnVuY3Rpb25zIGNhbiBiZSBlYXNpbHR5IGNvbWJpbmVkIGludG8gb25lIGFzIHRoZXkgZm9sbG93IHNhbWUga2luZCBvZiBwYXR0ZXJuIG9yIGNhbiBiZSBvZmZsb2FkZWQgdG8gYSBleHRlcm5hbCBzZXJ2aWNlXHJcbiAgc2V0RGVmYXVsdEFzc2lnbmVlKGV2dDphbnkpe1xyXG4gICAgaWYoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaWduZWVNYXAgPSAgZXZ0Py51c2Vycz8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRBc3NpZ25lZSA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZTtcclxuICAgIGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSBjdXJyZW50RGVmYXVsdEFzc2lnbmVlLmZpbHRlcigoZWxlOmFueSk9PiBhc3NpZ25lZU1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGN1cnJlbnREZWZhdWx0QXNzaWduZWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0OmFueSx0eXBlOmFueSl7XHJcbiAgIHN3aXRjaCh0eXBlKXtcclxuICAgICBjYXNlICdBU1NJR05FRScgOntcclxuICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgIGNvbnN0IGRlZmF1bHRBc3NpZ25lZSA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZTtcclxuICAgICAgIGNvbnN0IGFzc2lnbmVlID0gZGVmYXVsdEFzc2lnbmVlLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgIGlmKCFhc3NpZ25lZT8ubGVuZ3RoKXtcclxuICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgICB9XHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG5cclxuXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgIH1cclxuICAgICBjYXNlICdBU1NJR05FRV9HUk9VUCc6e1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUC5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWVHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZTtcclxuICAgICAgY29uc3QgYXNzaWduZWVHcm91cCA9IGRlZmF1bHRBc3NpZ25lZUdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgIGlmKCFhc3NpZ25lZUdyb3VwPy5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWVHcm91cCk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG4gIHNldERlZmF1bHRSZXZpZXdlcihldnQ6YW55KXtcclxuICAgIGlmKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXZpZXdlck1hcCA9ICBldnQ/LnVzZXJzPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xyXG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KT0+IHJldmlld2VyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgY3VycmVudERlZmF1bHRSZXZpZXdlcik7XHJcbiAgfVxyXG4gIHNldERlZmF1bHRPdmVyc2VlcihldnQ6YW55KXtcclxuICAgIGlmKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgIH1cclxuICAgIGNvbnN0IG92ZXJzZWVyTWFwID0gIGV2dD8udXNlcnM/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KT0+IG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KT0+IG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgY3VycmVudERlZmF1bHRSZXZpZXdlcik7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyKTtcclxuICB9XHJcbiAgc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0OmFueSx0eXBlOmFueSl7XHJcbiAgIHN3aXRjaCh0eXBlKXtcclxuICAgICBjYXNlICdSRVZJRVdFUicgOntcclxuICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcclxuICAgICAgIGNvbnN0IHJldmlld2VyID0gZGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcik7XHJcblxyXG4gICAgICBicmVhaztcclxuICAgICB9XHJcbiAgICAgY2FzZSAnUkVWSUVXRVJfR1JPVVAnOntcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgIGNvbnN0IHJldmlld2VyR3JvdXAgPSBkZWZhdWx0UmV2aWV3ZXJHcm91cC5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJHcm91cCk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG4gIHNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dDphbnksdHlwZTphbnkpe1xyXG4gICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICBjYXNlICdPVkVSU0VFUicgOntcclxuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gZGVmYXVsdE92ZXJzZWVyLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBkZWZhdWx0RmFpbE92ZXJzZWVyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlckZhaWwgPSBkZWZhdWx0RmFpbE92ZXJzZWVyLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIG92ZXJzZWVyRmFpbCk7XHJcblxyXG4gICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZTtcclxuICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSBkZWZhdWx0T3ZlcnNlZXJHcm91cC5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKVxyXG4gICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyR3JvdXApO1xyXG5cclxuICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsZWRHcm91cCA9IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyRmFpbGVkR3JvdXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIH1cclxuXHJcblxyXG5cclxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMubWFya2FzVG91Y2hlZFNlbGVjdG9yKHR5cGUpXHJcbiAgfVxyXG4gIG1hcmthc1RvdWNoZWRTZWxlY3RvcihmaWVsZE5hbWU6YW55KXtcclxuICAgIGNvbnN0IHR5cGVGaWVsZDphbnkgPSB7XHJcbiAgICAgIFJPTEU6J3Byb2dyYW1fcm9sZXMnLFxyXG4gICAgICBBUFBST1ZFUjoncHJvZ3JhbV9hcHByb3ZlcicsXHJcbiAgICAgIE9XTkVSOidwcm9ncmFtX293bmVycycsXHJcbiAgICAgIE9XTkVSX0dST1VQOidwcm9ncmFtX293bmVyc19ncm91cCdcclxuICAgICB9XHJcbiAgICAgdGhpcy5jb250cm9sc1t0eXBlRmllbGRbZmllbGROYW1lXV0/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGZldGNoUm9sZXMoKSB7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFJvbGVzKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0cy5ST0xFUyA9IHJlcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0U3lzdGVtVmFsID0gdGhpcy5saXN0cz8uUk9MRVM/LmRhdGE/LmZpbHRlcigoZWxlOiBhbnkpID0+IChlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAna2V5IGFkbWluJyB8fCBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nKSk/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5faWQpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKTtcclxuICAgICAgdGhpcy5saXN0cy5TWVNURU1fUk9MRV9JRFMgPSBkZWZhdWx0U3lzdGVtVmFsO1xyXG4gICAgICAgIGlmKHRoaXMubW9kZSAhPT0gJ0VESVQnKXtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgZGVmYXVsdFZhbCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy9mZXRjaCB0aGUgbGlzdCBvZiByZXNwb25zaWJpbGl0aWVzIGNlbnRlclxyXG4gIGZldGNoUkMoKSB7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdHMuUkMgPSByZXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBmZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IHJvbGVJZHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgIC8vIGlmIChmZXRjaEFsbCkge1xyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpc1VzZXJGaW5kID0gcmVzPy5kYXRhPy5zb21lKCAocmVzOiBhbnkpID0+IHJlcz8ubWVtYmVyX2lkID09PSBsb2dnZWRJblVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgICBpZighaXNVc2VyRmluZCkge1xyXG4gICAgICAgICAgICByZXM/LmRhdGE/LnB1c2gobG9nZ2VkSW5Vc2VyKTtcclxuICAgICAgICAgICAgcmVzLnRvdGFsX2l0ZW1zID0gcmVzPy50b3RhbF9pdGVtcyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLk9XTkVSUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuQVBQUk9WRVJTID0gcmVzO1xyXG4gICAgICAgICAgaWYoIXJlcz8uZGF0YT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk/LmluY2x1ZGVzKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0/Lm1lbWJlcl9pZCkpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0T3duZXJzKHJlcz8uZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpe1xyXG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6KHJlczphbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubGlzdHMuT1dORVJTX0dST1VQUyA9IHJlcztcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZHM6IEFycmF5PHN0cmluZz4gID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZS5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKVxyXG4gICAgICAgICBjb25zdCBncm91cERldGFpbHMgPSAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUuZmlsdGVyKChyb2xlSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihyb2xlSWQucm9sZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGlzU2FtZVJvbGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByb2xlSWQucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihyb2xlSWRzLmluY2x1ZGVzKHJvbGUucm9sZUlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBpc1NhbWVSb2xlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmKGlzU2FtZVJvbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb2xlSWQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBncm91cERldGFpbHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0T3duZXJzKHVzZXJMaXN0OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEludXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRPd25lciA9IHVzZXJMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IFsnQURNSU4nLCAnS0VZX0FETUlOJ10uaW5jbHVkZXMoZWxlPy51c2VyX3JvbGUpICYmIGVsZT8ubWVtYmVyX2lkICE9IGxvZ2dlZEludXNlcj8ubWVtYmVyX2lkKTtcclxuICAgIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uW2xvZ2dlZEludXNlcl0sIC4uLmRlZmF1bHRPd25lcl0sICdtZW1iZXJfaWQnKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoT3JnYW5pemF0aW9uVXNlcnMoZGF0YT86IGFueSl7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSB0cnVlO1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbE9yZ1VzZXIoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIHRoaXMubGlzdHMuQUxMX1VTRVIgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0cy5BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0cy5PVkVSU0VFUlMgPSByZXM7XHJcbiAgICAgICAgaWYodGhpcy5tb2RlICE9PSdFRElUJyl7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSByZXM7XHJcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgICAgICAgIGlmKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gcmVzO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICBpZighdGhpcy5jb250cm9scy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJlcztcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgaWYoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSByZXM7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOigpPT57dGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7fVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBmZXRjaE9yZ2FuaXphdGlvbkdyb3VwKGRhdGE/OiBhbnkpe1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaENvbXBsaWFuY2VHcm91cHMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICAgdGhpcy5saXN0cy5BTExfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlNfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSU19HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIGlmKHRoaXMubW9kZSAhPT0nRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgIGVycm9yOihlcnI6YW55KT0+e31cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmaWxlVXBsb2FkVHJhY2tlciA9IHtcclxuICAgIGRlc2NyaXB0aW9uOiBbXSxcclxuICAgIG9iamVjdGl2ZTogW11cclxuICB9XHJcblxyXG4gIHNlbGVjdEZpbGUodHlwZTogYW55LCBmaWxlczogYW55KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlcyh0eXBlLCBmaWxlc1tpXS5maWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGVzKHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvblN0cmluZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKS50b1N0cmluZygpO1xyXG4gICAgY29uc3QgZHVtbXlGaWxlID0ge1xyXG4gICAgICBmaWxlX3VybF9wYXRoOiBgJHtmaWxlPy5uYW1lfWAsXHJcbiAgICAgIG5hbWU6IGAke2ZpbGU/Lm5hbWV9YCxcclxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICBvcmdfZmlsZTogYCR7ZmlsZT8ubmFtZX1gXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gJ0RFU0NSSVBUSU9OJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbLi4uZGVzY3JpcHRpb24sIC4uLltkdW1teUZpbGVdXSlcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzXHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbLi4uZGVzY3JpcHRpb24sIC4uLltkdW1teUZpbGVdXSlcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzXHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUF0dGFjaG1lbnQodHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIGRlc2NyaXB0aW9uKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XHJcbiAgICAgIGxldCBvYmplY3RpdmUgPSB0aGlzLmNvbnRyb2xzPy5vYmplY3RpdmVfYXR0YWNobWVudHM/LnZhbHVlID8/IFtdO1xyXG4gICAgICBpZiAob2JqZWN0aXZlKSB7XHJcbiAgICAgICAgb2JqZWN0aXZlID0gb2JqZWN0aXZlLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIG9iamVjdGl2ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbFJvbGVPd25lcihldnQ6IGFueSkge1xyXG4gICAgLy9uZWVkIHRvIGZldGNoIGFsbCB0aGUgdXNlcnMgZm9yIGFsbCB0aGUgc2VsZWN0ZWQgcm9sZXNcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGxldCByb2xlSWQgPSBbXTtcclxuICAgIGxldCB1c2VyOmFueTtcclxuICAgIGlmKGV2dD8udGFyZ2V0Py5jaGVja2VkKXtcclxuICAgICAgIHJvbGVJZCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICAgIGlmKHRoaXMuZmVhdHVyZWZsYWdHcm91cHMpe1xyXG4gICAgICAgICB1c2VyPXRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOmFueSk9PmVsZT8uX2lkKTtcclxuICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cC52YWx1ZT0gdXNlcjtcclxuXHJcbiAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUgPT0+XCIsIHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUpO1xyXG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYoWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGUucm9sZU5hbWUudG9Mb3dlckNhc2UoKSkgKSB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlPy5faWRcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzPy52YWx1ZSA9PT5cIixyb2xlSWQsICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzPy52YWx1ZSlcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLltsb2dnZWRJblVzZXJdLCAuLi5yZXM/LmRhdGFdLCAnbWVtYmVyX2lkJylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB1c2VyKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVHcm91cHModXNlcikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4ucmVzPy5kYXRhXSwgJ2dyb3VwX2lkJylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCB1c2VyKTtcclxuICAgICAgICB9XHJcbiAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVuaXF1ZUJ5UHJvcChhcnJheTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgIGFycmF5XHJcbiAgICAgICAgLnJlZHVjZShcclxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSxcclxuICAgICAgICAgICAgYWNjXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC52YWx1ZXMoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgIHNhdmVQcm9ncmFtKCl7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgIGxldCBwYXlsb2FkID0gIHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sdGhpcyk7XHJcbiAgICAgIGlmKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnQ1JFQVRFJyl7XHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgICAgICBpZihlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgfSlcclxuICAgfVxyXG4gICBpZihwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBkYXRlUHJvZ3JhbShwYXlsb2FkLCB0aGlzLnByb2dyYW1JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZDtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT57XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXJyPy5lcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0NhdGVnb3J5IGFscmVhZHkgZXhpc3QnKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50KVxyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3UHJvZ3JhbSc6XHJcbiAgICAgICB0aGlzLnZpZXdQcm9ncmFtcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlld1Byb2dyYW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsICs9ICcvcHJvZ3JhbS13b3Jrcm9vbT9pZD0nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsICs9ICcvcHJvZ3JhbS9wcm9ncmFtLXdvcmtyb29tP2lkPScgKyB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuY3JlYXRlZFByb2dyYW1JZCA9PT5cIiwgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkKVxyXG5cclxuICB9XHJcbiAgcmVzZXRGb3JtKCl7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgY29uc3QgIERFRkFVTFRfVkFMVUVTID0ge1xyXG4gICAgcHJvZ3JhbV90eXBlOjEsXHJcbiAgICBwcm9ncmFtX25hbWU6JycsXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uOicnLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czpbXSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOicnLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6W10sXHJcbiAgICBwcm9ncmFtX3JvbGVzOltdLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTpmYWxzZSxcclxuICAgIHByb2dyYW1fb3duZXJzOltdLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6W10sXHJcbiAgICBwcm9ncmFtX2FwcHJvdmVyOltdLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFwiUEFTVF9FVkVOVFwiLFxyXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTpmYWxzZSxcclxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOmZhbHNlLFxyXG4gICAgZnJhbWV3b3JrOltdLFxyXG4gICAgcmM6W10sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW10sXHJcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOiAnQUxMJyxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwOiBbXSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6ICdTRVFVRU5USUFMJyxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiBbXSxcclxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiBmYWxzZSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogZmFsc2UsXHJcbiAgICBjdXN0b21fZmllbGRzOiBbXSxcclxuICAgIHByb2dyYW1fc3RhdGU6IDAsXHJcbiAgIH1cclxuICAgdGhpcy5yZXNldEFkZGl0aW9uYWxPcHRpb24oKTtcclxuICAgdGhpcy5wcm9ncmFtRm9ybS5yZXNldCgpO1xyXG4gICB0aGlzLnByb2dyYW1Gb3JtLnBhdGNoVmFsdWUoREVGQVVMVF9WQUxVRVMpO1xyXG4gICB0aGlzLmVkaXRvckRhdGEgID0ge1xyXG4gICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXHJcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnXHJcbiAgfVxyXG4gIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgdGhpcy5pc05hbWVFeGlzdHMgPSBmYWxzZTtcclxuICAgdGhpcy5mZXRjaFJvbGVzKCk7XHJcbiAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcclxuICAgdGhpcy5mb3JtLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6ICcnLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBwcm9ncmFtIGRldGFpbHMgd2hlbiB1c2VyIGlzIHRyeWluZyB0byBlZGl0IHByb2dyYW1cclxuICAgKi9cclxuICBnZXRQcm9ncmFtRGV0YWlscygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UHJvZ3JhbSh0aGlzLnByb2dyYW1JZCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX25hbWUnLCByZXM/Lm5hbWUpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgcmVzPy5wcm9ncmFtVHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZScsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsX3VzZXJfaW5fcm9sZScsIHJlcz8uYWxsX3VzZXJfaW5fcm9sZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgcmVzPy5kZXNjcmlwdGlvbj8uYXR0YWNobWVudHMpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnLCByZXM/LnByb2dyYW1fb2JqZWN0aXZlPy5hdHRhY2htZW50cyk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicsIHJlcz8uY2FsY3VsYXRlX3Bhc3RfdXBjb21pbmdfZXZlbnQpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kpO1xyXG4gICAgICBpZihyZXM/LnByb2dyYW1fZnJlcXVlbmN5ICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5QUk9HUkFNX0ZSRVFVRU5DWSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLCByZXM/LmxvY2tfc2NvcGUpO1xyXG4gICAgICBpZihyZXM/LmxvY2tfc2NvcGUgJiYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fc3RhdGUnLCByZXM/LnN0YXRlKTtcclxuICAgICAgY29uc3QgcmMgPSByZXMucmNfZGV0YWlscy5tYXAoKGVsZTphbnkpID0+IHtyZXR1cm4gey4uLmVsZSxpdGVtX25hbWUgOiBlbGU/LnJjX25hbWUsaXRlbV9pZDogZWxlPy5yY19pZH19KVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLHJjKTtcclxuICAgICAgaWYocmVzPy5yY19kZXRhaWxzICYmIHJlcz8ucmNfZGV0YWlscz8ubGVuZ3RoICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLCByZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsIHJlcz8uaXNfa2V5X2V2aWRlbmNlKTtcclxuICAgICAgaWYoKHJlcz8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgfHwgcmVzPy5pc19rZXlfZXZpZGVuY2UpICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSl7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgcmVzLmRlZmF1bHRfYXNzaWduZWVfdHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgcmVzLmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGUpO1xyXG5cclxuICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1EZXNjcmlwdGlvbiA9IHJlcy5kZXNjcmlwdGlvbj8udGV4dDtcclxuICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmUgPSByZXMucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQ7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLHsuLi5yZXMuZnJhbWV3b3JrX2RldGFpbHMsLi4ue19pZDpyZXM/LmZyYW1ld29ya19kZXRhaWxzPy5mcmFtZXdvcmtfaWR9fSlcclxuICAgICAgY29uc3Qgcm9sZSA9IHJlcz8ucm9sZXM/Lm1hcCgoZWxlOmFueSkgPT4gIHtyZXR1cm4ge19pZDplbGU/LnJvbGVJZCxyb2xlTmFtZTplbGU/LnJvbGVOYW1lLCBsaWNlbnNlVHlwZTplbGU/LmxpY2Vuc2VUeXBlICxwZXJtaXNzaW9uR3JvdXBOYW1lIDplbGU/LnBlcm1pc3Npb25Hcm91cE5hbWV9fSlcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlKTtcclxuICAgICAgaWYocmVzPy5yb2xlcyAmJiByZXM/LnJvbGVzPy5sZW5ndGggICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZihyZXMuYXNzZXNzbWVudERhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVzLmFzc2Vzc21lbnREYXRhID0gcmVzLmFzc2Vzc21lbnREYXRhLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7Li4uZWxlLCBhc3Nlc3NtZW50SWRzOiBlbGU/LmFzc2Vzc21lbnRzLm1hcCgoYXNzZXNzOmFueSkgPT4geyByZXR1cm4gey4uLmFzc2VzcyxpZDphc3Nlc3M/Ll9pZH19KX19XHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIHJlcy5hc3Nlc3NtZW50RGF0YSk7XHJcbiAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihyZXMuY3VzdG9tX2ZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnY3VzdG9tX2ZpZWxkcycsIHJlcy5jdXN0b21fZmllbGRzKTtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlckRpc2FibGVkID0gcmVzPy5pc0FwcHJvdmVyRGlzYWJsZWQgPz8gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMuaXNBcHByb3ZlckRpc2FibGVkKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57dGhpcy5kaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdChbJ0FQUFJPVkVSJ10pfSw1MDApXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBvcHVsYXRlTWVtYmVycyhyZXMpO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlR3JvdXBzKHJlcyk7XHJcbiAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkdyb3VwKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Vc2VycygpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxucG9wdWxhdGVNZW1iZXJzKHJlczphbnkpe1xyXG4gIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICBjb25zdCBpZHM9IFtcclxuICAgIC4uLm5ldyBTZXQoW1xyXG4gICAgICAuLi4ocmVzPy5vd25lcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5hcHByb3ZlcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5hc3NpZ25lZV9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LnJldmlld2VycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbCA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/Lm92ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbCA/PyBbXSkuZmlsdGVyKChlbGU6YW55KSA9PiBlbGUpLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWwgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbCA/PyBbXSkuZmlsdGVyKChlbGU6YW55KSA9PiBlbGUpXHJcbiAgICAgXSldXHJcbiAgICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldE1lbWViZXJCeUlkcyhpZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OihyZXNwb25zZTphbnkpPT57XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHJlcy5vd25lcnMgJiYgcmVzPy5vd25lcnM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb3duZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/Lm93bmVycy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzLmFwcHJvdmVycyAmJiByZXM/LmFwcHJvdmVycz8ubGVuZ3RoICYmICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hcHByb3ZlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmFzc2lnbmVlX2lkcyAmJiByZXM/LmFzc2lnbmVlX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gYXNzaWduZWU7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LnJldmlld2VycyAmJiByZXM/LnJldmlld2Vycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ucmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXZpZXdlcnM7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJzICYmIHJlcz8uZGVmYXVsdF9yZXZpZXdlcnM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2Vycyk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8ub3ZlcnNlZXJzICYmIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNjID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgY2MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IGNjO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzICYmIChyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoIHx8IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCkpe1xyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENDID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGRlZmF1bHRDQyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWlsQ0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgZmFpbENDKTtcclxuICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgfSlcclxuICAgICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcclxufVxyXG5cclxuXHJcbnBvcHVsYXRlR3JvdXBzKHJlczphbnkpe1xyXG4gIGNvbnN0IGlkcz0gW1xyXG4gICAgLi4ubmV3IFNldChbXHJcbiAgICAgIC4uLihyZXM/Lm93bmVyc19ncm91cCA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmFzc2lnbmVlX2dyb3VwX2lkcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICBdKV1cclxuICAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtYmVyQnlHcm91cHMoaWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDoocmVzcDphbnkpPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcD8uZGF0YTtcclxuICAgICAgICAgICAgaWYocmVzLm93bmVyc19ncm91cCAmJiByZXM/Lm93bmVyc19ncm91cD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3duZXJzX2dyb3VwLmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgb3duZXJzKTtcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzLmFzc2lnbmVlX2dyb3VwX2lkcyAmJiByZXM/LmFzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hc3NpZ25lZV9ncm91cF9pZHMuaW5jbHVkZXMoZWxlPy5ncm91cF9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSBhc3NpZ25lZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzICYmIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMuaW5jbHVkZXMoZWxlPy5ncm91cF9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBBcyBvZiBub3cgZ3JvdXBzIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSByZXZpZXdlciBhbmQgb3ZlcnNlZWVyIGlmIHRoaXMgZ3JvdXAgZmVhdHVyZSBnZXRzIGluY29wZXJhdGVkIGluXHJcbiAgICAgICAgICAvL2Z1dHVyZSBuZWVkIHRvIGFkZCBncm91cCBjb25kaXRpb24gaGVyZSB0byBwcmVwb3B1bGF0ZSB0aGUgZGF0YSB3aGlsZSBlZGl0aW5nLlxyXG4gICAgICAgfSlcclxufVxyXG5cclxuICByZXNldEFkZGl0aW9uYWxPcHRpb24oKSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BUFBST1ZFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTogYW55IHtcclxuICAgIGNvbnN0IGNvZGUgPSBbJ1BST0dSQU1fRlJFUVVFTkNZJywgJ1NDT1BFX0NIQU5HRVMnLCAnUkMnLCAnQVNTSUdORUVTJywgJ1JFVklFV0VSJywgJ09WRVJTRUVSJywgJ0FTU0VTU01FTlQnLCAnRk9STUFURV9FVklERU5DRScsICdDVVNUT01fRklFTERTJ11cclxuICAgIGxldCBpc01vcmVPcHRpb24gPSBmYWxzZTtcclxuICAgIGNvZGUuZm9yRWFjaCggKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldKXtcclxuICAgICAgICBpc01vcmVPcHRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pc1Byb2dyYW1TY29wZSA9IGlzTW9yZU9wdGlvbjtcclxuICB9XHJcbiAgZW5hYmxlZmVhdHVyZSgpe1xyXG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3JvbGVfaW1wcm92ZW1lbnRzJyk7XHJcbiAgICB0aGlzLmlzQXNjZW50QWxsb3dlZCA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfY29tcGxpYW5jZV9mcmFtZXdvcmsnKVxyXG4gICAgdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5Jyk7XHJcbiAgICB0aGlzLmZlYXR1cmVmbGFnR3JvdXBzID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFwiZmZfcHJvZ3JhbV9ncm91cHNcIik7XHJcbiAgfVxyXG5cclxuICBcclxuXHJcbn1cclxuIl19
|
|
1303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPeEMsTUFBTSxPQUFPLHdCQUF3QjtJQThDbkMsWUFBb0IsRUFBZSxFQUFVLGNBQStCLEVBQVUsV0FBd0IsRUFBUyxZQUF5QixFQUFVLFNBQTRCOztRQUFsSyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBN0N0TCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRXRCLG9CQUFlLEdBQVksS0FBSyxD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aXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wcm9ncmFtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UHJvZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RhbnRzID0gQ09OU1RBTlRTO1xyXG4gIHNob3dDb25maXJtYXRpb246IGFueTtcclxuICBpc0FzY2VudEFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGZvcm0gITogRWxlbWVudFJlZjtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdSb2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzYWJsZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHNjcm9sbFRvQm90dG9tITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb2dyYW1TaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gQWxsIElucHV0IGZpZWxkc1xyXG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByb2dyYW1JZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJvZ3JhbVR5cGU6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgYWxsb3dlZEZlYXR1cmUhOiBhbnk7XHJcbiAgQElucHV0KCkgYWRkVG9Qcm9ncmFtRGV0YWlsczogYW55O1xyXG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueTtcclxuICBwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyID0gXCJTZWxlY3QgRGVmYXVsdCBSZXZpZXdlcihzKVwiO1xyXG4gIHBhbmVsVGl0bGVPd25lciA9IFwiU2VsZWN0IE93bmVyKHMpXCI7XHJcbiAgcGFuZWxUaXRsZVJldmlld2VyID0gXCJTZWxlY3QgUmV2aWV3ZXIocylcIjtcclxuICBwYW5lbFRpdGxlQXNzaWduZWUgPSBcIlNlbGVjdCBBc3NpZ25lZShzKVwiO1xyXG4gIHBhbmVsVGl0bGVBcHByb3ZlciA9IFwiU2VsZWN0ICBBcHByb3ZlclwiXHJcbiAgaXNBcHByb3ZlckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQcm9ncmFtU2NvcGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0b29sVGlwRGF0YTogYW55ID17XHJcbiAgICBvd25lciA6XCJPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IEFkbWluPC9zdHJvbmc+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cIixcclxuICAgIHByb2dyYW1TY29wZTogYEEgUHJvZ3JhbSBTY29wZSBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOlxyXG4gIDxsaT5UbyBzcGVjaWZ5IHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS48L2xpPlxyXG4gIDxsaT5UbyBwcmUtc2VsZWN0IGNlcnRhaW4gb3B0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IGRlY3JlYXNpbmcgdGhlIHRpbWUgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkuPC9saT5cclxuICA8bGk+VG8gbGltaXQgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IG1ha2luZyBpdCBlYXNpZXIgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkgYW5kIHJlZHVjaW5nIHRoZSBsaWtlbGlob29kIG9mIGFuIGluY29ycmVjdCBvcHRpb24gYmVpbmcgc2VsZWN0ZWQuPC9saT5cclxuICAgIGBcclxuICB9XHJcbiAgYnVzaW5lc3NDeWNsZTogYW55O1xyXG4gIGZlYXR1cmVmbGFncm9sZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZlYXR1cmVmbGFnR3JvdXBzOiBib29sZWFuID1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgcHJvZ3JhbVNlcnZpY2U6IFByb2dyYW1zU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UscHJpdmF0ZSB1aUtpdFNlcnZpY2U6VWlLaXRTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0N5Y2xlXCIpID8/ICd7fScpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5idXNpbmVzc0N5Y2xlLCAnYmMnKTtcclxuICAgfVxyXG4gIHB1YmxpYyBub1doaXRlc3BhY2VWYWxpZGF0b3IoY29udHJvbDogRm9ybUNvbnRyb2wpIHtcclxuICAgIGNvbnN0IGlzV2hpdGVzcGFjZSA9IChjb250cm9sLnZhbHVlIHx8ICcnKS50cmltKCkubGVuZ3RoID09PSAwO1xyXG4gICAgY29uc3QgaXNWYWxpZCA9ICFpc1doaXRlc3BhY2U7XHJcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7ICd3aGl0ZXNwYWNlJzogdHJ1ZSB9O1xyXG4gIH1cclxuICBwdWJsaWMgYmxhbmtBcnJheVZhbGlkYXRvcihjb250cm9sOiBGb3JtQ29udHJvbCkge1xyXG4gICAgY29uc3QgaXNCbGFuayA9IGNvbnRyb2wudmFsdWU/LmZpbHRlcigoZWxlOmFueSk9PiBlbGUpPy5sZW5ndGggPT09IDA7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzQmxhbms7XHJcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7ICdibGFuayc6IHRydWUgfTtcclxuICB9XHJcbiBsb2FkZXIgPSBmYWxzZTtcclxuIHNob3dTbWlsZXkgPSBmYWxzZTtcclxuIGFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUHJvZ3JhbXMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICB7IGJ1dHRvblRleHQ6ICdWaWV3IFByb2dyYW0nLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3UHJvZ3JhbScgfSxcclxuXTtcclxuc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCFgO1xyXG5jcmVhdGVkUHJvZ3JhbUlkID0gJyc7XHJcbiAgaXNPYmplY3RpdmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNOYW1lRXhpc3RzOiBib29sZWFuID1mYWxzZTtcclxuICAvL2Zvcm0gYm9keSBmb3IgcHJvZ3JhbSBtZXRhIGRhdGFcclxuICBwcm9ncmFtRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgcHJvZ3JhbV90eXBlOiBbdGhpcy5wcm9ncmFtVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCgzKV1dLFxyXG4gICAgcHJvZ3JhbV9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbjogWycnXSxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogWycnXSxcclxuICAgLy8gcHJvZ3JhbV9vYmplY3RpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW1tdXSxcclxuICAgIHByb2dyYW1fcm9sZXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiBbZmFsc2VdLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cCA6W1tdXSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6IFtbXV0sXHJcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogWydQQVNUX0VWRU5UJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIHJlY3VycmluZ19mcmVxdWVuY3k6IFt0cnVlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogW2ZhbHNlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICBmcmFtZXdvcms6IFtdLFxyXG4gICAgcmM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW1tdXSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnQUxMJ10sXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW1tdXSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnU0VRVUVOVElBTCddLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW1tdXSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtbXV0sXHJcbiAgICBldmlkZW5jZV9yZXF1aXJlZDogW2ZhbHNlXSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogW2ZhbHNlXSxcclxuICAgIGN1c3RvbV9maWVsZHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX3N0YXRlOiAwLFxyXG4gIH0pO1xyXG5cclxuICAvL2V4Y2VwdGlvbmFsIGhhbmRsaW5nIG9mIGN1c3RvbSBmaWVsZHNcclxuXHJcbiAgIHNob3dBZGRDdXN0b21GaWVsZCA9IHRydWU7XHJcbiAgLy9Qcm9ncmFtIG9iamVjdGl2ZSBhbmQgZGVzY3JpcGlvbiBhcmUgZXhwbGVjdGx5IGRlY2xhcmVkIGFzIHRoZXkgYXJlIHVzaW5nIG1hcnggZWRpdG9yIHdoaWNoIGRvZXMgbm90IHN1cHBvcnRzIFJlYWN0aXZlIGZvcm1zIGJpbmRpbmdcclxuICBlZGl0b3JEYXRhID0ge1xyXG4gICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXHJcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnXHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFzc2Vzc21lbnQhOiBhbnk7XHJcblxyXG5cclxuXHJcbiAgY3VycmVudFVzZXIoKSB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZS50b2tlbkluZm8oKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbWVtYmVyX2VtYWlsOiB1c2VyPy5lbWFpbCxcclxuICAgICAgbWVtYmVyX2lkOiB1c2VyPy5pZCxcclxuICAgICAgbWVtYmVyX25hbWU6IHVzZXI/Lm5hbWUsXHJcbiAgICAgIHVzZXJfcm9sZTogXCJMT0dHRURfSU5cIixcclxuICAgICAgX2lkOiBcIlwiXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAvL1NldHMgdGhlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sXHJcbiAgc2V0Rm9ybUZpZWxkKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGlzRnJvbUZvcm0/OiBib29sZWFuKSB7XHJcbiAgICBsZXQgcGF0Y2g6IGFueSA9IHt9O1xyXG4gICAgcGF0Y2hbY29udHJvbE5hbWVdID0gdmFsdWU7XHJcbiAgICB0aGlzLnByb2dyYW1Gb3JtLnBhdGNoVmFsdWUocGF0Y2gpO1xyXG4gICAgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIGlmKGlzRnJvbUZvcm0gJiYgY29udHJvbE5hbWUgPT09ICdwcm9ncmFtX29iamVjdGl2ZScgJiYgIXZhbHVlLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKSkgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gZmFsc2U7XHJcbiAgICBlbHNlIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1JldHVybnMgd2VhdGhlciB0aGUgZm9ybSBpcyB2YWxpZCBvciBub3RcclxuICBnZXQgZm9ybVZhbGlkKCkge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbUZvcm0udmFsaWQgJiYgdGhpcy5lZGl0b3JEYXRhPy5wcm9ncmFtT2JqZWN0aXZlPy5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKT8udHJpbSgpPy5sZW5ndGggKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udHJvbHM6IGFueSA9IHtcclxuICAgIHByb2dyYW1fbmFtZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fbmFtZScpLFxyXG4gICAgcHJvZ3JhbV90eXBlOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3R5cGUnKSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vYmplY3RpdmUnKSxcclxuICAgIHByb2dyYW1fcm9sZXM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3JvbGVzJyksXHJcbiAgICBwcm9ncmFtX293bmVyczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzJyksXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJyksXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsX3VzZXJfaW5fcm9sZScpLFxyXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXBwcm92ZXInKSxcclxuICAgIGRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyksXHJcbiAgICBvYmplY3RpdmVfYXR0YWNobWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cycpLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJyksXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScpLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdsb2NrX3Njb3BlX2NoYW5nZScpLFxyXG4gICAgcmM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyYycpLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdldmlkZW5jZV9yZXF1aXJlZCcpLFxyXG4gICAgZnJhbWV3b3JrOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZnJhbWV3b3JrJyksXHJcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnKSxcclxuICAgIHByb2dyYW1fYXNzaWduZWU6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWUnKSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcpLFxyXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTp0aGlzLnByb2dyYW1Gb3JtLmdldCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyJyksXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyJyksXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEgOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScpLFxyXG4gICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzZXNzbWVudHMnKSxcclxuICAgIGN1c3RvbV9maWVsZHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdjdXN0b21fZmllbGRzJyksXHJcbiAgICBpc0FwcHJvdmVyRGlzYWJsZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdpc0FwcHJvdmVyRGlzYWJsZWQnKSxcclxuICB9XHJcblxyXG4gIGxpc3RzOiBhbnkgPSB7XHJcbiAgICBST0xFUzogW10sXHJcbiAgICBPV05FUlM6IFtdLFxyXG4gICAgT1dORVJTX0dST1VQUzpbXSxcclxuICAgIEFQUFJPVkVSUzpbXSxcclxuICAgIFJFVklFV0VSUzogW10sXHJcbiAgICBSRVZJRVdFUlNfR1JPVVA6W10sXHJcbiAgICBBU1NJR05FRVM6IFtdLFxyXG4gICAgQVNTSUdORUVTX0dST1VQIDpbXSxcclxuICAgIERFRkFVTFRfQVNTSUdORUVTOltdLFxyXG4gICAgREVGQVVMVF9BU1NJR05FRVNfR1JPVVA6W10sXHJcbiAgICBERUZBVUxUX1JFVklFV0VSUzpbXSxcclxuICAgIERFRkFVTFRfUkVWSUVXRVJTX0dST1VQOltdLFxyXG4gICAgT1ZFUlNFRVJTOiBbXSxcclxuICAgIE9WRVJTRUVSU19HUk9VUDpbXSxcclxuICAgIERFRkFVTFRfT1ZFUlNFRVJTOiBbXSxcclxuICAgIERFRkFVTFRfT1ZFUlNFRVJTX0dST1VQOltdLFxyXG4gICAgUkM6IFtdLFxyXG4gICAgTk9OX1JFTU9WQUJMRV9PV05FUlM6IFtdLFxyXG4gICAgQUxMX1VTRVI6W10sXHJcbiAgICBBTExfR1JPVVA6W10sXHJcbiAgICBTWVNURU1fUk9MRV9JRFM6W11cclxuICB9XHJcblxyXG5cclxuXHJcbiAgbGlzdExvYWRpbmdTdGF0ZSA9IHtcclxuICAgIFJPTEVTOmZhbHNlLFxyXG4gICAgVVNFUlM6ZmFsc2UsXHJcbiAgICBHUk9VUDpmYWxzZSxcclxuICAgIFJDOmZhbHNlLFxyXG4gIH1cclxuICBzaWRlRWxlbWVudHMgPSBbJ1JPTEUnLCdSQycsJ09XTkVSJywnQVNTSUdORUUnLCdBUFBST1ZFUicsJ0RFRkFVTFRfQVNTSUdORUUnLCdSRVZJRVdFUicsJ0RFRkFVTFRfUkVWSUVXRVInLCdBU1NFU1NNRU5UJywnRlJBTUVXT1JLJywnT1ZFUlNFRVInLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicsJ0RFRkFVTFRfT1ZFUlNFRVInLCdPVkVSU0VFUiddO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCB0aGlzLnByb2dyYW1UeXBlKTtcclxuICAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkdyb3VwKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICAgIHRoaXMuZmV0Y2hSQygpO1xyXG4gICAgaWYodGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzPy5faWQpIHtcclxuICAgICAgdGhpcy5saXN0QWN0aW9uKHRoaXMuYWRkVG9Qcm9ncmFtRGV0YWlscywgJ0ZSQU1FV09SSycpXHJcbiAgICB9XHJcbiAgICB0aGlzLmVuYWJsZWZlYXR1cmUoKTtcclxuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTsgXHJcbiAgfVxyXG4gIGdldCB2YWxpZCgpIHtcclxuICAgcmV0dXJuIHRoaXMucHJvZ3JhbUZvcm0udmFsaWRcclxuICB9XHJcblxyXG4gIGFkZGl0aW9uYWxPcHRpb246IGFueSA9IHsuLi5DT05TVEFOVFMuYWRkaXRpb25hbE9wdGlvbn07XHJcbiAgYWN0aXZlTGlzdCA9ICcnXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqIFBvcHVsYXRlcyBvcHRpb25hbCBmaWVsZHMgc3RhdHVzIGZvciB0aGUgb3B0aW9uYWwgZmllbGRzXHJcbiAgICovXHJcbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcclxuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvbikpIHtcclxuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XHJcbiAgICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxuICB9XHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uW2V2ZW50LmNvZGVdID0gZXZlbnQuY2hlY2tlZDtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZnVuY3Rpb24gdG8gYXV0b21hdGUgZm9ybSB2YWx1ZSBjaGFuZ2UgaGFuZG5nXHJcbiAgZm9ybUNoYW5nZUxpc3RuZXIoKSB7XHJcbiAgICBjb25zdCBmaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKTtcclxuICAgIGZpZWxkcy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnRyb2xzW2VsZV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7IHRoaXMuaGFuZGxlRm9ybUZpZWxkQ2hhbmdlKGVsZSwgcmVzKSB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9ybUZpZWxkQ2hhbmdlKGNvbnRyb2w6IHN0cmluZywgcGF5bG9hZD86IGFueSkge1xyXG4gICAgc3dpdGNoIChjb250cm9sKSB7XHJcbiAgICAgIGNhc2UgJ3Byb2dyYW1fcm9sZXMnOiB7XHJcbiAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2YXRlTGlzdChldnQ6IHN0cmluZykge1xyXG4gICAgaWYoZXZ0ID09PSAnRlJBTUVXT1JLJyAmJiAhdGhpcy5jYW5GcmFtZXdvcmtDaGFuZ2UpIHJldHVybjtcclxuICAgIHRoaXMuYWN0aXZlTGlzdCA9IGV2dDtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbGlzdEFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnUk9MRSc6IHtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHN5c3RlbVJvbGVzID0gZXZ0Py5maWx0ZXIoKGVsZTogYW55KSA9PiAoZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHwgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJykpO1xyXG4gICAgICAgIGNvbnN0IHBhdGNoVmFsID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnN5c3RlbVJvbGVzLCAuLi5ldnRdLCAnX2lkJyk7XHJcbiAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcy52YWx1ZS5zb3J0KCksIHBhdGNoVmFsLnNvcnQoKSkpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcGF0Y2hWYWwpO1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JDJzoge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicm9sZVwiLGV2dClcclxuICAgICAgICBjb25zdCByYyA9IHRoaXMuc2V0TGlzdCh0aGlzLmxpc3RzLlJDLCBldnQsICdpdGVtX2lkJylcclxuICAgICAgICBjb25zb2xlLmxvZyhcInNldHJjXCIscmMpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgdGhpcy51bmlxdWVCeVByb3AocmMsICdpdGVtX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09XTkVSJyA6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBUFBST1ZFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NJR05FRSc6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWUoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVWSUVXRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyKGV2dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2VlcihldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTRVNTTUVOVCc6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2Vzc21lbnRzJywgZXZ0KTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdGUkFNRVdPUksnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgZXZ0KTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9uYW1lJywgZXZ0Py5uYW1lKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbicsIGV2dD8uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSBldnQ/LmRlc2NyaXB0aW9uO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XHJcbiAgICAgICAgbGV0IG1zZyA9ICcnO1xyXG4gICAgICAgIG1zZyA9ICdJZiB5b3UgY2hhbmdlIHRoZSByb2xlcywgYW55IHVuc2F2ZWQgY2hhbmdlcyB3b3VsZCBiZSBsb3N0LidcclxuICAgICAgICBjb25zdCByb2xlcyA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCAhPT0gZXZ0Py5faWQpO1xyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihyb2xlcywnUk9MRScpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcm9sZXMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JDJzoge1xyXG4gICAgICAgIGNvbnN0IHJjcyA9IHRoaXMuY29udHJvbHM/LnJjPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5pdGVtX2lkICE9PSBldnQ/Lml0ZW1faWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycsIHJjcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVInOntcclxuICAgICAgICBjb25zdCBvd25lcnMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgb3duZXJzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPV05FUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG93bmVyc19ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgb3duZXJzX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBUFBST1ZFUic6e1xyXG4gICAgICAgIGNvbnN0IGFwcHJvdmVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCBhcHByb3Zlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTSUdORUUnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZV9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlX2dyb3VwKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUUnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWVfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2VyKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcl9ncm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUic6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUic6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOntcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTRVNTTUVOVCcgOntcclxuXHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBjbG9uZURlZXAodGhpcy5jb250cm9scy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZSk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50LmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeV9pZCA9PSBldnQuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMgPSBjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzLmZpbHRlcigoYXNzZXNzbWVudDogYW55KSA9PiBhc3Nlc3NtZW50LmlkICE9PSBldnQuaWQpO1xyXG4gICAgICAgIGlmKGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMubGVuZ3RoICA9PT0gMCkgIGN1cnJlbnQuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb24oY3VycmVudCwgJ0FTU0VTU01FTlQnKTtcclxuICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0ZSQU1FV09SSycgOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgbnVsbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVSb2xlKGV2dDogYW55KXtcclxuICAgIHRoaXMub25SZW1vdmluZ1JvbGUuZW1pdChldnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vYmVsb3cgNCBmdW5jdGlvbnMgY2FuIGJlIGVhc2lsdHkgY29tYmluZWQgaW50byBvbmUgYXMgdGhleSBmb2xsb3cgc2FtZSBraW5kIG9mIHBhdHRlcm4gb3IgY2FuIGJlIG9mZmxvYWRlZCB0byBhIGV4dGVybmFsIHNlcnZpY2VcclxuICBzZXREZWZhdWx0QXNzaWduZWUoZXZ0OmFueSl7XHJcbiAgICBpZihldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3NpZ25lZU1hcCA9ICBldnQ/LnVzZXJzPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdEFzc2lnbmVlID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xyXG4gICAgY3VycmVudERlZmF1bHRBc3NpZ25lZSA9IGN1cnJlbnREZWZhdWx0QXNzaWduZWUuZmlsdGVyKChlbGU6YW55KT0+IGFzc2lnbmVlTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgY3VycmVudERlZmF1bHRBc3NpZ25lZSk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQ6YW55LHR5cGU6YW55KXtcclxuICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgIGNhc2UgJ0FTU0lHTkVFJyA6e1xyXG4gICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xyXG4gICAgICAgY29uc3QgYXNzaWduZWUgPSBkZWZhdWx0QXNzaWduZWUuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgaWYoIWFzc2lnbmVlPy5sZW5ndGgpe1xyXG4gICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgIH1cclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBhc3NpZ25lZSk7XHJcblxyXG5cclxuICAgICAgYnJlYWs7XHJcbiAgICAgfVxyXG4gICAgIGNhc2UgJ0FTU0lHTkVFX0dST1VQJzp7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRBc3NpZ25lZUdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICBjb25zdCBhc3NpZ25lZUdyb3VwID0gZGVmYXVsdEFzc2lnbmVlR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgaWYoIWFzc2lnbmVlR3JvdXA/Lmxlbmd0aCl7XHJcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZUdyb3VwKTtcclxuICAgICB9XHJcbiAgIH1cclxuICB9XHJcbiAgc2V0RGVmYXVsdFJldmlld2VyKGV2dDphbnkpe1xyXG4gICAgaWYoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJldmlld2VyTWFwID0gIGV2dD8udXNlcnM/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XHJcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpPT4gcmV2aWV3ZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcclxuICB9XHJcbiAgc2V0RGVmYXVsdE92ZXJzZWVyKGV2dDphbnkpe1xyXG4gICAgaWYoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3ZlcnNlZXJNYXAgPSAgZXZ0Py51c2Vycz8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpPT4gb3ZlcnNlZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpPT4gb3ZlcnNlZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIpO1xyXG4gIH1cclxuICBzZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQ6YW55LHR5cGU6YW55KXtcclxuICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgIGNhc2UgJ1JFVklFV0VSJyA6e1xyXG4gICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xyXG4gICAgICAgY29uc3QgcmV2aWV3ZXIgPSBkZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcclxuXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgIH1cclxuICAgICBjYXNlICdSRVZJRVdFUl9HUk9VUCc6e1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUC5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICBjb25zdCBkZWZhdWx0UmV2aWV3ZXJHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZTtcclxuICAgICAgY29uc3QgcmV2aWV3ZXJHcm91cCA9IGRlZmF1bHRSZXZpZXdlckdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlckdyb3VwKTtcclxuICAgICB9XHJcbiAgIH1cclxuICB9XHJcbiAgc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0OmFueSx0eXBlOmFueSl7XHJcbiAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJyA6e1xyXG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSBkZWZhdWx0T3ZlcnNlZXIuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcblxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRGYWlsT3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyRmFpbCA9IGRlZmF1bHRGYWlsT3ZlcnNlZXIuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgb3ZlcnNlZXJGYWlsKTtcclxuXHJcbiAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cCA9IGRlZmF1bHRPdmVyc2Vlckdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJHcm91cCk7XHJcblxyXG4gICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgICBjb25zdCBvdmVyc2VlckZhaWxlZEdyb3VwID0gZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJGYWlsZWRHcm91cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgfVxyXG5cclxuXHJcblxyXG4gIGZpZWxkRGVzZWxlY3Rvcih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlTGlzdCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5tYXJrYXNUb3VjaGVkU2VsZWN0b3IodHlwZSlcclxuICB9XHJcbiAgbWFya2FzVG91Y2hlZFNlbGVjdG9yKGZpZWxkTmFtZTphbnkpe1xyXG4gICAgY29uc3QgdHlwZUZpZWxkOmFueSA9IHtcclxuICAgICAgUk9MRToncHJvZ3JhbV9yb2xlcycsXHJcbiAgICAgIEFQUFJPVkVSOidwcm9ncmFtX2FwcHJvdmVyJyxcclxuICAgICAgT1dORVI6J3Byb2dyYW1fb3duZXJzJyxcclxuICAgICAgT1dORVJfR1JPVVA6J3Byb2dyYW1fb3duZXJzX2dyb3VwJ1xyXG4gICAgIH1cclxuICAgICB0aGlzLmNvbnRyb2xzW3R5cGVGaWVsZFtmaWVsZE5hbWVdXT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSb2xlcygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0Um9sZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RzLlJPTEVTID0gcmVzO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRTeXN0ZW1WYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhPy5maWx0ZXIoKGVsZTogYW55KSA9PiAoZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHwgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJykpO1xyXG4gICAgICB0aGlzLmxpc3RzLlNZU1RFTV9ST0xFX0lEUyA9IGRlZmF1bHRTeXN0ZW1WYWw7XHJcbiAgICAgICAgaWYodGhpcy5tb2RlICE9PSAnRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBkZWZhdWx0VmFsKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAvL2ZldGNoIHRoZSBsaXN0IG9mIHJlc3BvbnNpYmlsaXRpZXMgY2VudGVyXHJcbiAgZmV0Y2hSQygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0cy5SQyA9IHJlcztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCkge1xyXG4gICAgY29uc3QgbG9nZ2VkSW5Vc2VyID0gdGhpcy5jdXJyZW50VXNlcigpO1xyXG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgLy8gaWYgKGZldGNoQWxsKSB7XHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlzVXNlckZpbmQgPSByZXM/LmRhdGE/LnNvbWUoIChyZXM6IGFueSkgPT4gcmVzPy5tZW1iZXJfaWQgPT09IGxvZ2dlZEluVXNlcj8ubWVtYmVyX2lkKTtcclxuICAgICAgICAgIGlmKCFpc1VzZXJGaW5kKSB7XHJcbiAgICAgICAgICAgIHJlcz8uZGF0YT8ucHVzaChsb2dnZWRJblVzZXIpO1xyXG4gICAgICAgICAgICByZXMudG90YWxfaXRlbXMgPSByZXM/LnRvdGFsX2l0ZW1zICsgMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubGlzdHMuT1dORVJTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5BUFBST1ZFUlMgPSByZXM7XHJcbiAgICAgICAgICBpZighcmVzPy5kYXRhPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKT8uaW5jbHVkZXModGhpcy5jb250cm9scy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX2lkKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuY29udHJvbHM/LmFsbF91c2VyX2luX3JvbGU/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHJlcz8uZGF0YSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRPd25lcnMocmVzPy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCl7XHJcbiAgICBjb25zdCByb2xlSWRzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xyXG4gICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlR3JvdXBzKHJvbGVJZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDoocmVzOmFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5PV05FUlNfR1JPVVBTID0gcmVzO1xyXG4gICAgICAgICAgY29uc3Qgcm9sZUlkczogQXJyYXk8c3RyaW5nPiAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlLm1hcCgoZWxlOiBhbnkpID0+IGVsZS5faWQpXHJcbiAgICAgICAgIGNvbnN0IGdyb3VwRGV0YWlscyA9ICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZS5maWx0ZXIoKHJvbGVJZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHJvbGVJZC5yb2xlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBsZXQgaXNTYW1lUm9sZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJvbGVJZC5yb2xlcy5mb3JFYWNoKChyb2xlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKHJvbGVJZHMuaW5jbHVkZXMocm9sZS5yb2xlSWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlzU2FtZVJvbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgaWYoaXNTYW1lUm9sZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvbGVJZDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIGdyb3VwRGV0YWlscyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgfSlcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRPd25lcnModXNlckxpc3Q6IGFueSkge1xyXG4gICAgY29uc3QgbG9nZ2VkSW51c2VyID0gdGhpcy5jdXJyZW50VXNlcigpO1xyXG4gICAgY29uc3QgZGVmYXVsdE93bmVyID0gdXNlckxpc3QuZmlsdGVyKChlbGU6IGFueSkgPT4gWydBRE1JTicsICdLRVlfQURNSU4nXS5pbmNsdWRlcyhlbGU/LnVzZXJfcm9sZSkgJiYgZWxlPy5tZW1iZXJfaWQgIT0gbG9nZ2VkSW51c2VyPy5tZW1iZXJfaWQpO1xyXG4gICAgdGhpcy5saXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5bbG9nZ2VkSW51c2VyXSwgLi4uZGVmYXVsdE93bmVyXSwgJ21lbWJlcl9pZCcpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdGhpcy5saXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmV0Y2hPcmdhbml6YXRpb25Vc2VycyhkYXRhPzogYW55KXtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IHRydWU7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsT3JnVXNlcigpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgdGhpcy5saXN0cy5BTExfVVNFUiA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFUyA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSUyA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICBpZih0aGlzLm1vZGUgIT09J0VESVQnKXtcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICAgICAgICAgaWYoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICBpZighdGhpcy5jb250cm9scy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KCk9Pnt0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTt9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoT3JnYW5pemF0aW9uR3JvdXAoZGF0YT86IGFueSl7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQ29tcGxpYW5jZUdyb3VwcygpLnN1YnNjcmliZSh7XHJcbiAgICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgICB0aGlzLmxpc3RzLkFMTF9HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSU19HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIHRoaXMubGlzdHMuT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xyXG5cclxuICAgICAgICAgaWYodGhpcy5tb2RlICE9PSdFRElUJyl7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgZXJyb3I6KGVycjphbnkpPT57fVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZpbGVVcGxvYWRUcmFja2VyID0ge1xyXG4gICAgZGVzY3JpcHRpb246IFtdLFxyXG4gICAgb2JqZWN0aXZlOiBbXVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0RmlsZSh0eXBlOiBhbnksIGZpbGVzOiBhbnkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKHR5cGUsIGZpbGVzW2ldLmZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZXModHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XHJcbiAgICBjb25zdCBkdW1teUZpbGUgPSB7XHJcbiAgICAgIGZpbGVfdXJsX3BhdGg6IGAke2ZpbGU/Lm5hbWV9YCxcclxuICAgICAgbmFtZTogYCR7ZmlsZT8ubmFtZX1gLFxyXG4gICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgIG9yZ19maWxlOiBgJHtmaWxlPy5uYW1lfWBcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIFsuLi5kZXNjcmlwdGlvbiwgLi4uW2R1bW15RmlsZV1dKVxyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLnVwbG9hZEZpbGVzKGZvcm1EYXRhLCBkZXN0aW5hdGlvblN0cmluZykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBsZXQgZGVzY3JpcHRpb25JbmRleCA9IGRlc2NyaXB0aW9uLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgPT09IHJlcz8ub3JnX2ZpbGUpO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb25bZGVzY3JpcHRpb25JbmRleF0gPSByZXNcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIFsuLi5kZXNjcmlwdGlvbiwgLi4uW2R1bW15RmlsZV1dKVxyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLnVwbG9hZEZpbGVzKGZvcm1EYXRhLCBkZXN0aW5hdGlvblN0cmluZykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBsZXQgZGVzY3JpcHRpb25JbmRleCA9IGRlc2NyaXB0aW9uLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgPT09IHJlcz8ub3JnX2ZpbGUpO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb25bZGVzY3JpcHRpb25JbmRleF0gPSByZXNcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlQXR0YWNobWVudCh0eXBlOiAnREVTQ1JJUFRJT04nIHwgJ09CSkVDVElWRScsIGZpbGU6IGFueSkge1xyXG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcclxuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgIGlmIChkZXNjcmlwdGlvbikge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgZGVzY3JpcHRpb24pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ09CSkVDVElWRScpIHtcclxuICAgICAgbGV0IG9iamVjdGl2ZSA9IHRoaXMuY29udHJvbHM/Lm9iamVjdGl2ZV9hdHRhY2htZW50cz8udmFsdWUgPz8gW107XHJcbiAgICAgIGlmIChvYmplY3RpdmUpIHtcclxuICAgICAgICBvYmplY3RpdmUgPSBvYmplY3RpdmUuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgb2JqZWN0aXZlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0QWxsUm9sZU93bmVyKGV2dDogYW55KSB7XHJcbiAgICAvL25lZWQgdG8gZmV0Y2ggYWxsIHRoZSB1c2VycyBmb3IgYWxsIHRoZSBzZWxlY3RlZCByb2xlc1xyXG4gICAgY29uc3QgbG9nZ2VkSW5Vc2VyID0gdGhpcy5jdXJyZW50VXNlcigpO1xyXG4gICAgbGV0IHJvbGVJZCA9IFtdO1xyXG4gICAgbGV0IHVzZXI6YW55O1xyXG4gICAgaWYoZXZ0Py50YXJnZXQ/LmNoZWNrZWQpe1xyXG4gICAgICAgcm9sZUlkID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xyXG4gICAgICAgaWYodGhpcy5mZWF0dXJlZmxhZ0dyb3Vwcyl7XHJcbiAgICAgICAgIHVzZXI9dGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6YW55KT0+ZWxlPy5faWQpO1xyXG4gICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzX2dyb3VwLnZhbHVlPSB1c2VyO1xyXG5cclxuICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZSA9PT5cIiwgdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZSk7XHJcbiAgICAgIHJvbGVJZCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZihbJ2tleSBhZG1pbicsICdhZG1pbiddLmluY2x1ZGVzKGVsZS5yb2xlTmFtZS50b0xvd2VyQ2FzZSgpKSApIHtcclxuICAgICAgICAgIHJldHVybiBlbGU/Ll9pZFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnM/LnZhbHVlID09PlwiLHJvbGVJZCwgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnM/LnZhbHVlKVxyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVVc2Vycyhyb2xlSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uW2xvZ2dlZEluVXNlcl0sIC4uLnJlcz8uZGF0YV0sICdtZW1iZXJfaWQnKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHVzZXIpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH1cclxuICAgIH0pXHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5yZXM/LmRhdGFdLCAnZ3JvdXBfaWQnKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIHVzZXIpO1xyXG4gICAgICAgIH1cclxuICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGFycmF5IG9mIG9iamVjdCBiYXNlZCBvbiB1bmlxdWUga2V5XHJcbiAgICogQHBhcmFtIGFycmF5XHJcbiAgICogQHBhcmFtIGtleVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcclxuICAgICAgYXJyYXlcclxuICAgICAgICAucmVkdWNlKFxyXG4gICAgICAgICAgKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IChcclxuICAgICAgICAgICAgaXRlbSAmJiBpdGVtW2tleV0gJiYgYWNjLnNldChpdGVtW2tleV0sIGl0ZW0pLFxyXG4gICAgICAgICAgICBhY2NcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBuZXcgTWFwKClcclxuICAgICAgICApXHJcbiAgICAgICAgLnZhbHVlcygpXHJcbiAgICApO1xyXG4gIH1cclxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcbiAgICBpZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudCk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBkYXRhLnB1c2gobGlzdFtpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAgc2F2ZVByb2dyYW0oKXtcclxuICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgbGV0IHBheWxvYWQgPSAgdGhpcy5wcm9ncmFtU2VydmljZS5idWlsZFBheWxvYWQodGhpcy5wcm9ncmFtRm9ybSx0aGlzKTtcclxuICAgICAgaWYocGF5bG9hZCAmJiB0aGlzLm1vZGUgPT09ICdDUkVBVEUnKXtcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5zYXZlUHJvZ3JhbShwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQgPSByZXMuX2lkXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnI6YW55KT0+e1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGVycj8uZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdDYXRlZ29yeSBhbHJlYWR5IGV4aXN0JykpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5pc05hbWVFeGlzdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICB9XHJcbiAgIGlmKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGRhdGVQcm9ncmFtKHBheWxvYWQsIHRoaXMucHJvZ3JhbUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQgPSByZXMuX2lkO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgICAgICBpZihlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQpXHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxyXG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ZpZXdQcm9ncmFtJzpcclxuICAgICAgIHRoaXMudmlld1Byb2dyYW1zKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2aWV3UHJvZ3JhbXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgKz0gJy9wcm9ncmFtLXdvcmtyb29tP2lkPScgKyB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgKz0gJy9wcm9ncmFtL3Byb2dyYW0td29ya3Jvb20/aWQ9JyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5jcmVhdGVkUHJvZ3JhbUlkID09PlwiLCB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQpXHJcblxyXG4gIH1cclxuICByZXNldEZvcm0oKXtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICBjb25zdCAgREVGQVVMVF9WQUxVRVMgPSB7XHJcbiAgICBwcm9ncmFtX3R5cGU6MSxcclxuICAgIHByb2dyYW1fbmFtZTonJyxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb246JycsXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOltdLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6JycsXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czpbXSxcclxuICAgIHByb2dyYW1fcm9sZXM6W10sXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOmZhbHNlLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6W10sXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cDpbXSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6W10sXHJcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogXCJQQVNUX0VWRU5UXCIsXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OmZhbHNlLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6ZmFsc2UsXHJcbiAgICBmcmFtZXdvcms6W10sXHJcbiAgICByYzpbXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWU6IFtdLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOiBbXSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6ICdBTEwnLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogW10sXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtdLFxyXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogJ1NFUVVFTlRJQUwnLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW10sXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcjogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtdLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiBmYWxzZSxcclxuICAgIGN1c3RvbV9maWVsZHM6IFtdLFxyXG4gICAgcHJvZ3JhbV9zdGF0ZTogMCxcclxuICAgfVxyXG4gICB0aGlzLnJlc2V0QWRkaXRpb25hbE9wdGlvbigpO1xyXG4gICB0aGlzLnByb2dyYW1Gb3JtLnJlc2V0KCk7XHJcbiAgIHRoaXMucHJvZ3JhbUZvcm0ucGF0Y2hWYWx1ZShERUZBVUxUX1ZBTFVFUyk7XHJcbiAgIHRoaXMuZWRpdG9yRGF0YSAgPSB7XHJcbiAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcclxuICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJydcclxuICB9XHJcbiAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICB0aGlzLmlzTmFtZUV4aXN0cyA9IGZhbHNlO1xyXG4gICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHRydWUpO1xyXG4gICB0aGlzLmZvcm0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogJycsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHByb2dyYW0gZGV0YWlscyB3aGVuIHVzZXIgaXMgdHJ5aW5nIHRvIGVkaXQgcHJvZ3JhbVxyXG4gICAqL1xyXG4gIGdldFByb2dyYW1EZXRhaWxzKCkge1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRQcm9ncmFtKHRoaXMucHJvZ3JhbUlkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIHJlcz8ubmFtZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCByZXM/LnByb2dyYW1UeXBlKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb2JqZWN0aXZlJywgcmVzPy5wcm9ncmFtX29iamVjdGl2ZT8udGV4dCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhbGxfdXNlcl9pbl9yb2xlJywgcmVzPy5hbGxfdXNlcl9pbl9yb2xlKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCByZXM/LmRlc2NyaXB0aW9uPy5hdHRhY2htZW50cyk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cycsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LmF0dGFjaG1lbnRzKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJywgcmVzPy5jYWxjdWxhdGVfcGFzdF91cGNvbWluZ19ldmVudCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JywgcmVzPy5wcm9ncmFtX2ZyZXF1ZW5jeSk7XHJcbiAgICAgIGlmKHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kgJiYgdGhpcy5tb2RlID09PSAnRURJVCcgJiYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIHJlcz8ubG9ja19zY29wZSk7XHJcbiAgICAgIGlmKHJlcz8ubG9ja19zY29wZSAmJiAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykpIHtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9zdGF0ZScsIHJlcz8uc3RhdGUpO1xyXG4gICAgICBjb25zdCByYyA9IHJlcy5yY19kZXRhaWxzLm1hcCgoZWxlOmFueSkgPT4ge3JldHVybiB7Li4uZWxlLGl0ZW1fbmFtZSA6IGVsZT8ucmNfbmFtZSxpdGVtX2lkOiBlbGU/LnJjX2lkfX0pXHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycscmMpO1xyXG4gICAgICBpZihyZXM/LnJjX2RldGFpbHMgJiYgcmVzPy5yY19kZXRhaWxzPy5sZW5ndGggJiYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsIHJlcz8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJywgcmVzPy5pc19rZXlfZXZpZGVuY2UpO1xyXG4gICAgICBpZigocmVzPy5ldmlkZW5jZV91cGxvYWRfZmxhZyB8fCByZXM/LmlzX2tleV9ldmlkZW5jZSkgJiYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpKXtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uRk9STUFURV9FVklERU5DRSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnLCByZXMuZGVmYXVsdF9hc3NpZ25lZV90eXBlKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnLCByZXMuZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uID0gcmVzLmRlc2NyaXB0aW9uPy50ZXh0O1xyXG4gICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbU9iamVjdGl2ZSA9IHJlcy5wcm9ncmFtX29iamVjdGl2ZT8udGV4dDtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsey4uLnJlcy5mcmFtZXdvcmtfZGV0YWlscywuLi57X2lkOnJlcz8uZnJhbWV3b3JrX2RldGFpbHM/LmZyYW1ld29ya19pZH19KVxyXG4gICAgICBjb25zdCByb2xlID0gcmVzPy5yb2xlcz8ubWFwKChlbGU6YW55KSA9PiAge3JldHVybiB7X2lkOmVsZT8ucm9sZUlkLHJvbGVOYW1lOmVsZT8ucm9sZU5hbWUsIGxpY2Vuc2VUeXBlOmVsZT8ubGljZW5zZVR5cGUgLHBlcm1pc3Npb25Hcm91cE5hbWUgOmVsZT8ucGVybWlzc2lvbkdyb3VwTmFtZX19KVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHJvbGUpO1xyXG4gICAgICBpZihyZXM/LnJvbGVzICYmIHJlcz8ucm9sZXM/Lmxlbmd0aCAgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHJlcy5hc3Nlc3NtZW50RGF0YS5sZW5ndGgpIHtcclxuICAgICAgICByZXMuYXNzZXNzbWVudERhdGEgPSByZXMuYXNzZXNzbWVudERhdGEubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsuLi5lbGUsIGFzc2Vzc21lbnRJZHM6IGVsZT8uYXNzZXNzbWVudHMubWFwKChhc3Nlc3M6YW55KSA9PiB7IHJldHVybiB7Li4uYXNzZXNzLGlkOmFzc2Vzcz8uX2lkfX0pfX1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2Vzc21lbnRzJywgcmVzLmFzc2Vzc21lbnREYXRhKTtcclxuICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKHJlcy5jdXN0b21fZmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdjdXN0b21fZmllbGRzJywgcmVzLmN1c3RvbV9maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0FwcHJvdmVyRGlzYWJsZWQgPSByZXM/LmlzQXBwcm92ZXJEaXNhYmxlZCA/PyBmYWxzZTtcclxuICAgICAgaWYodGhpcy5pc0FwcHJvdmVyRGlzYWJsZWQpe1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCk9Pnt0aGlzLmRpc2FibGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KFsnQVBQUk9WRVInXSl9LDUwMClcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucG9wdWxhdGVNZW1iZXJzKHJlcyk7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVHcm91cHMocmVzKTtcclxuICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uR3JvdXAoKTtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvblVzZXJzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5wb3B1bGF0ZU1lbWJlcnMocmVzOmFueSl7XHJcbiAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gIGNvbnN0IGlkcz0gW1xyXG4gICAgLi4ubmV3IFNldChbXHJcbiAgICAgIC4uLihyZXM/Lm93bmVycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmFwcHJvdmVycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmFzc2lnbmVlX2lkcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8ucmV2aWV3ZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsID8/IFtdKS5maWx0ZXIoKGVsZTphbnkpID0+IGVsZSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbCA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsID8/IFtdKS5maWx0ZXIoKGVsZTphbnkpID0+IGVsZSlcclxuICAgICBdKV1cclxuICAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtZWJlckJ5SWRzKGlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6KHJlc3BvbnNlOmFueSk9PntcclxuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYocmVzLm93bmVycyAmJiByZXM/Lm93bmVycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3duZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIG93bmVycyk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXMuYXBwcm92ZXJzICYmIHJlcz8uYXBwcm92ZXJzPy5sZW5ndGggJiYgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmFwcHJvdmVycy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgYXBwcm92ZXJzKTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVBQUk9WRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8uYXNzaWduZWVfaWRzICYmIHJlcz8uYXNzaWduZWVfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmFzc2lnbmVlX2lkcy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSBhc3NpZ25lZTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzICYmIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8ucmV2aWV3ZXJzICYmIHJlcz8ucmV2aWV3ZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJldmlld2VycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2Vycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJldmlld2VycztcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgJiYgcmVzPy5kZWZhdWx0X3Jldmlld2Vycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXJzKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5vdmVyc2VlcnMgJiYgcmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXInLCBjYyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gY2M7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnMgJiYgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGggfHwgcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbD8ubGVuZ3RoKSl7XHJcbiAgICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0Q0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgZGVmYXVsdENDKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhaWxDQyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBmYWlsQ0MpO1xyXG4gICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICB9KVxyXG4gICAgICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xyXG59XHJcblxyXG5cclxucG9wdWxhdGVHcm91cHMocmVzOmFueSl7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzX2dyb3VwID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxyXG4gICAgIF0pXVxyXG4gICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1iZXJCeUdyb3VwcyhpZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OihyZXNwOmFueSk9PntcclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXNwPy5kYXRhO1xyXG4gICAgICAgICAgICBpZihyZXMub3duZXJzX2dyb3VwICYmIHJlcz8ub3duZXJzX2dyb3VwPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG93bmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5vd25lcnNfZ3JvdXAuaW5jbHVkZXMoZWxlPy5ncm91cF9pZCkpO1xyXG4gICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnMpO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXMuYXNzaWduZWVfZ3JvdXBfaWRzICYmIHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmFzc2lnbmVlX2dyb3VwX2lkcy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IGFzc2lnbmVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgJiYgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEFzIG9mIG5vdyBncm91cHMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHJldmlld2VyIGFuZCBvdmVyc2VlZXIgaWYgdGhpcyBncm91cCBmZWF0dXJlIGdldHMgaW5jb3BlcmF0ZWQgaW5cclxuICAgICAgICAgIC8vZnV0dXJlIG5lZWQgdG8gYWRkIGdyb3VwIGNvbmRpdGlvbiBoZXJlIHRvIHByZXBvcHVsYXRlIHRoZSBkYXRhIHdoaWxlIGVkaXRpbmcuXHJcbiAgICAgICB9KVxyXG59XHJcblxyXG4gIHJlc2V0QWRkaXRpb25hbE9wdGlvbigpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5ST0xFUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9XTkVSUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5TQ09QRV9DSEFOR0VTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SRVZJRVdFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpOiBhbnkge1xyXG4gICAgY29uc3QgY29kZSA9IFsnUFJPR1JBTV9GUkVRVUVOQ1knLCAnU0NPUEVfQ0hBTkdFUycsICdSQycsICdBU1NJR05FRVMnLCAnUkVWSUVXRVInLCAnT1ZFUlNFRVInLCAnQVNTRVNTTUVOVCcsICdGT1JNQVRFX0VWSURFTkNFJywgJ0NVU1RPTV9GSUVMRFMnXVxyXG4gICAgbGV0IGlzTW9yZU9wdGlvbiA9IGZhbHNlO1xyXG4gICAgY29kZS5mb3JFYWNoKCAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0pe1xyXG4gICAgICAgIGlzTW9yZU9wdGlvbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmlzUHJvZ3JhbVNjb3BlID0gaXNNb3JlT3B0aW9uO1xyXG4gIH1cclxuICBlbmFibGVmZWF0dXJlKCl7XHJcbiAgICB0aGlzLmZlYXR1cmVmbGFncm9sZSA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcm9sZV9pbXByb3ZlbWVudHMnKTtcclxuICAgIHRoaXMuaXNBc2NlbnRBbGxvd2VkID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9jb21wbGlhbmNlX2ZyYW1ld29yaycpXHJcbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Byb2dyYW1fc2ltcGxpZnknKTtcclxuICAgIHRoaXMuZmVhdHVyZWZsYWdHcm91cHMgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXCJmZl9wcm9ncmFtX2dyb3Vwc1wiKTtcclxuICAgIHRoaXMudG9vbFRpcERhdGEub3duZXIgPSB0aGlzLmZlYXR1cmVmbGFncm9sZSA/IFwiT3duZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYSBQcm9ncmFtLiBPbmx5IE93bmVycyBjYW4gbWFrZSBjaGFuZ2VzIHRvIGEgUHJvZ3JhbSBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uPGJyPlRoZSA8c3Ryb25nPktleSBQb3dlciBVc2VyPC9zdHJvbmc+IGFuZCBhbGwgPGI+UG93ZXIgVXNlcnM8L2I+IHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cIjpcIk93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LlwiO1xyXG5cclxuICB9XHJcblxyXG4gIFxyXG5cclxufVxyXG4iXX0=
|