@piserve-tech/form-submission 1.3.319 → 1.3.320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/assets/icons/close-sidebar-mark-icon.svg +3 -3
- package/assets/icons/copy-icon.svg +5 -5
- package/assets/icons/delete-icon.svg +7 -7
- package/assets/icons/delete-no-outline-icon.svg +7 -7
- package/esm2022/form-fields/aggregate-function/aggregate-function.component.mjs +3 -3
- package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +10 -7
- package/esm2022/form-fields/currency-fields/currency-fields.component.mjs +11 -8
- package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +12 -9
- package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +11 -8
- package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +11 -8
- package/esm2022/form-fields/form-fields.module.mjs +1 -1
- package/esm2022/form-fields/hidden-field/hidden-field.component.mjs +26 -19
- package/esm2022/form-fields/iframe-fields/iframe-fields.component.mjs +21 -21
- package/esm2022/form-fields/location-fields/location-fields.component.mjs +3 -3
- package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +11 -8
- package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +12 -9
- package/esm2022/form-fields/number-fields/number-fields.component.mjs +11 -8
- package/esm2022/form-fields/password-fields/password-fields.component.mjs +11 -8
- package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +11 -8
- package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +12 -9
- package/esm2022/form-fields/section-fields/section-fields.component.mjs +3 -3
- package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +11 -8
- package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +3 -3
- package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +12 -9
- package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +9 -7
- package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +11 -8
- package/esm2022/form-fields/text-fields/text-fields.component.mjs +11 -8
- package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +10 -7
- package/esm2022/form-fields/url-fields/url-fields.component.mjs +11 -8
- package/esm2022/form-submission/form-submission.module.mjs +1 -1
- package/esm2022/form-submission/header/header.component.mjs +3 -3
- package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +3 -3
- package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +3 -3
- package/esm2022/form-submission/save-as-draft/saveDraftModalComponent .mjs +3 -3
- package/esm2022/form-submission/submit-form/submit-form.component.mjs +25 -22
- package/esm2022/lib/form-submission.component.mjs +3 -3
- package/esm2022/lib/form-submission.module.mjs +1 -1
- package/esm2022/models/aggregate.model.mjs +1 -1
- package/esm2022/models/answer.model.mjs +1 -1
- package/esm2022/models/appearance.model.mjs +1 -1
- package/esm2022/models/attachment.model.mjs +1 -1
- package/esm2022/models/defaultAnswerEntry.model.mjs +1 -1
- package/esm2022/models/defaultAnswersModel.model.mjs +1 -1
- package/esm2022/models/defaultQuestionAnswer.model.mjs +1 -1
- package/esm2022/models/elementOptionAPI.model.mjs +1 -1
- package/esm2022/models/elementOptionDB.model.mjs +1 -1
- package/esm2022/models/emitters.model.mjs +1 -1
- package/esm2022/models/formElement.model.mjs +1 -1
- package/esm2022/models/grid.model.mjs +1 -1
- package/esm2022/models/hiddenField.model.mjs +1 -1
- package/esm2022/models/iFrameProperties.model.mjs +1 -1
- package/esm2022/models/multifields.model.mjs +1 -1
- package/esm2022/models/page.model.mjs +1 -1
- package/esm2022/models/publicForm.model.mjs +1 -1
- package/esm2022/models/question.model.mjs +1 -1
- package/esm2022/models/questionGroup.model.mjs +1 -1
- package/esm2022/models/scoring.model.mjs +1 -1
- package/esm2022/models/section.model.mjs +1 -1
- package/esm2022/models/subForm.model.mjs +1 -1
- package/esm2022/models/subformConfiguration.model.mjs +1 -1
- package/esm2022/models/subformPropery.model.mjs +1 -1
- package/esm2022/models/submission.model.mjs +1 -1
- package/esm2022/models/submissionCopyConfig.mopdel.mjs +1 -1
- package/esm2022/models/whenClause.model.mjs +1 -1
- package/esm2022/models/whenClauseCondition.model.mjs +1 -1
- package/esm2022/models/whenClauseElements.model.mjs +1 -1
- package/esm2022/question/card-subform/card-subform.component.mjs +83 -53
- package/esm2022/question/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/question/form-elements/form-elements.component.mjs +3 -3
- package/esm2022/question/inline-multiple-subform/inline-multiple-subform.component.mjs +37 -30
- package/esm2022/question/multifields/multifields.component.mjs +3 -3
- package/esm2022/question/multiple-subform/multiple-subform.component.mjs +3 -3
- package/esm2022/question/question/question.component.mjs +3 -3
- package/esm2022/question/question-group/question-group.component.mjs +3 -3
- package/esm2022/question/recursive-logic/recursive-logic.component.mjs +3 -3
- package/esm2022/question/sub-form/sub-form.component.mjs +3 -3
- package/esm2022/services/aggregate.service.mjs +1 -1
- package/esm2022/services/countryService.mjs +1 -1
- package/esm2022/services/data.service.mjs +1 -1
- package/esm2022/services/form-validation.service.mjs +1 -1
- package/esm2022/services/form.service.mjs +1 -1
- package/esm2022/services/hidden-field.service.mjs +160 -0
- package/esm2022/services/mapper.service.mjs +3 -2
- package/esm2022/services/recaptcha.service.mjs +1 -1
- package/esm2022/services/score.service.mjs +1 -1
- package/esm2022/services/subform-copy.service.mjs +1 -1
- package/esm2022/services/whenClause.service.mjs +1 -1
- package/esm2022/shared/shared.module.mjs +1 -1
- package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +3 -3
- package/fesm2022/piserve-tech-form-submission.mjs +457 -225
- package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
- package/form-fields/check-box-fields/check-box-fields.component.d.ts +3 -1
- package/form-fields/currency-fields/currency-fields.component.d.ts +3 -1
- package/form-fields/date-time-fields/date-time-fields.component.d.ts +3 -1
- package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +3 -1
- package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +3 -1
- package/form-fields/hidden-field/hidden-field.component.d.ts +6 -1
- package/form-fields/mail-fields/mail-fields.component.d.ts +3 -1
- package/form-fields/mobile-fields/mobile-fields.component.d.ts +3 -1
- package/form-fields/number-fields/number-fields.component.d.ts +3 -1
- package/form-fields/password-fields/password-fields.component.d.ts +3 -1
- package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +3 -1
- package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +3 -1
- package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +3 -1
- package/form-fields/slider-fields/slider-fields.component.d.ts +3 -1
- package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +3 -1
- package/form-fields/text-area-fields/text-area-fields.component.d.ts +3 -1
- package/form-fields/text-fields/text-fields.component.d.ts +3 -1
- package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +3 -0
- package/form-fields/url-fields/url-fields.component.d.ts +3 -1
- package/form-submission/submit-form/submit-form.component.d.ts +3 -1
- package/models/hiddenField.model.d.ts +1 -0
- package/package.json +1 -1
- package/question/card-subform/card-subform.component.d.ts +7 -1
- package/question/inline-multiple-subform/inline-multiple-subform.component.d.ts +4 -1
- package/services/hidden-field.service.d.ts +31 -0
|
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
125
125
|
providedIn: 'root',
|
|
126
126
|
}]
|
|
127
127
|
}], ctorParameters: function () { return [{ type: i1.ValidationService }]; } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2Zvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQztJQUU1RDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBQyxJQUFTO1FBQ2pDLDBDQUEwQztRQUMxQyxxQ0FBcUM7UUFFckMsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixZQUFtQixFQUNuQixvQkFBeUIsSUFBSSxFQUNVLEVBQUU7WUFDekMsS0FBSyxJQUFJLE9BQU8sSUFBSSxZQUFZLEVBQUU7Z0JBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7b0JBQ3JDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ2pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7b0JBQ25DLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUV0RCxxREFBcUQ7b0JBQ3JELElBQUksTUFBVyxDQUFDO29CQUNoQixJQUFJLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFO3dCQUMxQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7d0JBQ3pDLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDOUIsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVSxD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QyxHQUFHLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7d0JBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs0QkFBRSxPQUFPLE1BQU0sQ0FBQztxQkFDcEM7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxDQUFDO1FBQzVFLENBQUMsQ0FBQztRQUVGLG1CQUFtQjtRQUNuQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDM0IsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQixxQ0FBcUM7Z0JBQ3JDLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtRQUVELG9DQUFvQztRQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztJQUM1RSxDQUFDOytHQS9JVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtVmFsaWRhdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZSBhbGwgcmVxdWlyZWQgcXVlc3Rpb25zIG9uIGEgcGFnZS5cclxuICAgKiBBc3N1bWVzIHlvdXIgYHBhZ2VgIG9iamVjdCBoYXMgYSBgcGFnZUluZGV4OiBudW1iZXJgIHByb3BlcnR5LlxyXG4gICAqL1xyXG4gIHZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMocGFnZTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSB7XHJcbiAgICAvLyBjbGVhciBhbnkgcHJldmlvdXMgZXJyb3JzIGZvciB0aGlzIHBhZ2VcclxuICAgIC8vIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJBbGwoKTtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChcclxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXSxcclxuICAgICAgc3VibWlzc2lvbkNvbnRleHQ6IGFueSA9IG51bGxcclxuICAgICk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0gPT4ge1xyXG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcclxuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gZWxlbWVudC5lbGVtZW50O1xyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBxdWVzdGlvbi5yZXF1aXJlZDtcclxuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBxdWVzdGlvbi5pZDtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlID0gcXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmVsZW1lbnRUeXBlO1xyXG5cclxuICAgICAgICAgIC8vIHBpY2sgdXAgdGhlIGFuc3dlciAoZWl0aGVyIGluIGEgc3ViZm9ybSBvciBub3JtYWwpXHJcbiAgICAgICAgICBsZXQgYW5zd2VyOiBhbnk7XHJcbiAgICAgICAgICBpZiAoc3VibWlzc2lvbkNvbnRleHQ/LmlzSW5NdWx0aXBsZVN1YmZvcm0pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBzdWJtaXNzaW9uIH0gPSBzdWJtaXNzaW9uQ29udGV4dDtcclxuICAgICAgICAgICAgYW5zd2VyID0gc3VibWlzc2lvbi5hbnN3ZXJzLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGE6IGFueSkgPT4gYS5xdWVzdGlvbklkID09PSBxdWVzdGlvbklkXHJcbiAgICAgICAgICAgICk/LmFuc3dlcjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGFuc3dlciA9IHF1ZXN0aW9uLmFuc3dlcjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID1cclxuICAgICAgICAgICAgYW5zd2VyID09PSBudWxsIHx8XHJcbiAgICAgICAgICAgIGFuc3dlciA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICh0eXBlb2YgYW5zd2VyID09PSAnc3RyaW5nJyAmJiBhbnN3ZXIudHJpbSgpID09PSAnJykgfHxcclxuICAgICAgICAgICAgKHR5cGVvZiBhbnN3ZXIgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKTtcclxuXHJcbiAgICAgICAgICBpZiAocmVxdWlyZWQgJiYgaXNFbXB0eSkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gc3VibWlzc2lvbkNvbnRleHQ/LmlzSW5NdWx0aXBsZVN1YmZvcm1cclxuICAgICAgICAgICAgICA/IGBSZXF1aXJlZCBxdWVzdGlvbiAke3F1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQgaW4gYSBzdWJmb3JtLmBcclxuICAgICAgICAgICAgICA6IGBSZXF1aXJlZCBxdWVzdGlvbiAke3F1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYDtcclxuXHJcbiAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHRoZSBpbnZhbGlkIHF1ZXN0aW9uXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZChcclxuICAgICAgICAgICAgICBxdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgcGFnZS5wYWdlSW5kZXggPz8gMFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIG1lc3NhZ2UgfTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyByZWN1cnNlIGludG8gY2hpbGQgbG9naWNzXHJcbiAgICAgICAgICBpZiAocXVlc3Rpb24uY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgbG9naWMgb2YgcXVlc3Rpb24uY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgICBpZiAoIWxvZ2ljLnNob3dMb2dpYykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIGxvZ2ljLnJvd3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkLCBzdWJtaXNzaW9uQ29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGNvbnN0IHN1YmZvcm0gPSBlbGVtZW50LmVsZW1lbnQ7XHJcblxyXG4gICAgICAgICAgaWYgKHN1YmZvcm0ucHJvcGVydHk/LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3VibWlzc2lvbnMgPSBzdWJmb3JtLnN1Ym1pc3Npb25zIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgaWYgKHN1Ym1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBoYXNSZXF1aXJlZCA9IHN1YmZvcm0ucm93cy5zb21lKChyOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICByLmdyaWQuc29tZShcclxuICAgICAgICAgICAgICAgICAgKGY6IGFueSkgPT4gZi5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nICYmIGYuZWxlbWVudC5yZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChoYXNSZXF1aXJlZCAmJiBzdWJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3ViZm9ybSBcIiR7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmZvcm0udGl0bGUgfHwgJ1VudGl0bGVkJ1xyXG4gICAgICAgICAgICAgICAgfVwiIGlzIG1pc3NpbmcgcmVxdWlyZWQgc3VibWlzc2lvbnMuYDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZChcclxuICAgICAgICAgICAgICAgICAgc3ViZm9ybS5pZCxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgcGFnZS5wYWdlSW5kZXggPz8gMFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBtZXNzYWdlIH07XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAvLyBtYXAgcXVlc3Rpb25zIGFuZCB2YWxpZGF0ZSBvbmx5IGlmIG1vcmUgdGhhbiBvbmUgc3VibWlzc2lvblxyXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICAgICAgICAgICAgICBzdWJmb3JtLnJvd3MuZm9yRWFjaCgocjogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgci5ncmlkLmZvckVhY2goKGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZi5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25NYXAuc2V0KGYuZWxlbWVudC5pZCwgZi5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICBmb3IgKGxldCBzdWJtaXNzaW9uIG9mIHN1Ym1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCByb3cgb2Ygc3ViZm9ybS5yb3dzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNJbk11bHRpcGxlU3ViZm9ybTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uTWFwLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZeKAkGVudHJ5IHN1YmZvcm1cclxuICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIHN1YmZvcm0ucm93cyB8fCBbXSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkKTtcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTl9HUk9VUCcgfHxcclxuICAgICAgICAgICAgZWxlbWVudC5lbnRpdHlUeXBlID09PSAnTVVMVElGSUVMRCcpICYmXHJcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnQucm93c1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcm93IG9mIGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkLCBzdWJtaXNzaW9uQ29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBzdGFydCB2YWxpZGF0aW9uXHJcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBwYWdlLnJvd3MpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgLy8gd2UgYWxyZWFkeSBjYWxsZWQgc2V0SW52YWxpZCBhYm92ZVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiB3ZSBnZXQgaGVyZSwgZXZlcnl0aGluZyBwYXNzZWRcclxuICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2Zvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQztJQUU1RDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBQyxJQUFTO1FBQ2pDLDBDQUEwQztRQUMxQyxxQ0FBcUM7UUFFckMsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixZQUFtQixFQUNuQixvQkFBeUIsSUFBSSxFQUNVLEVBQUU7WUFDekMsS0FBSyxJQUFJLE9BQU8sSUFBSSxZQUFZLEVBQUU7Z0JBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7b0JBQ3JDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ2pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7b0JBQ25DLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUV0RCxxREFBcUQ7b0JBQ3JELElBQUksTUFBVyxDQUFDO29CQUNoQixJQUFJLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFO3dCQUMxQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7d0JBQ3pDLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDOUIsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVSxD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QyxHQUFHLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7d0JBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs0QkFBRSxPQUFPLE1BQU0sQ0FBQztxQkFDcEM7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxDQUFDO1FBQzVFLENBQUMsQ0FBQztRQUVGLG1CQUFtQjtRQUNuQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDM0IsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQixxQ0FBcUM7Z0JBQ3JDLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtRQUVELG9DQUFvQztRQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztJQUM1RSxDQUFDOytHQS9JVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3ZhbGlkYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtVmFsaWRhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSkge31cblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBvbiBhIHBhZ2UuXG4gICAqIEFzc3VtZXMgeW91ciBgcGFnZWAgb2JqZWN0IGhhcyBhIGBwYWdlSW5kZXg6IG51bWJlcmAgcHJvcGVydHkuXG4gICAqL1xuICB2YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKHBhZ2U6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0ge1xuICAgIC8vIGNsZWFyIGFueSBwcmV2aW91cyBlcnJvcnMgZm9yIHRoaXMgcGFnZVxuICAgIC8vIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJBbGwoKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKFxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXSxcbiAgICAgIHN1Ym1pc3Npb25Db250ZXh0OiBhbnkgPSBudWxsXG4gICAgKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBlbGVtZW50LmVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBxdWVzdGlvbi5yZXF1aXJlZDtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvbklkID0gcXVlc3Rpb24uaWQ7XG4gICAgICAgICAgY29uc3QgZWxlbWVudFR5cGUgPSBxdWVzdGlvbi5mb3JtRWxlbWVudD8uZWxlbWVudFR5cGU7XG5cbiAgICAgICAgICAvLyBwaWNrIHVwIHRoZSBhbnN3ZXIgKGVpdGhlciBpbiBhIHN1YmZvcm0gb3Igbm9ybWFsKVxuICAgICAgICAgIGxldCBhbnN3ZXI6IGFueTtcbiAgICAgICAgICBpZiAoc3VibWlzc2lvbkNvbnRleHQ/LmlzSW5NdWx0aXBsZVN1YmZvcm0pIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc3VibWlzc2lvbiB9ID0gc3VibWlzc2lvbkNvbnRleHQ7XG4gICAgICAgICAgICBhbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgICAgICAgKGE6IGFueSkgPT4gYS5xdWVzdGlvbklkID09PSBxdWVzdGlvbklkXG4gICAgICAgICAgICApPy5hbnN3ZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuc3dlciA9IHF1ZXN0aW9uLmFuc3dlcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID1cbiAgICAgICAgICAgIGFuc3dlciA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgYW5zd2VyID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICh0eXBlb2YgYW5zd2VyID09PSAnc3RyaW5nJyAmJiBhbnN3ZXIudHJpbSgpID09PSAnJykgfHxcbiAgICAgICAgICAgICh0eXBlb2YgYW5zd2VyID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgICAgICBpZiAocmVxdWlyZWQgJiYgaXNFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHN1Ym1pc3Npb25Db250ZXh0Py5pc0luTXVsdGlwbGVTdWJmb3JtXG4gICAgICAgICAgICAgID8gYFJlcXVpcmVkIHF1ZXN0aW9uICR7cXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJ9IGlzIG5vdCBhbnN3ZXJlZCBpbiBhIHN1YmZvcm0uYFxuICAgICAgICAgICAgICA6IGBSZXF1aXJlZCBxdWVzdGlvbiAke3F1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYDtcblxuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGludmFsaWQgcXVlc3Rpb25cbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZChcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZCxcbiAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgcGFnZS5wYWdlSW5kZXggPz8gMFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIG1lc3NhZ2UgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyByZWN1cnNlIGludG8gY2hpbGQgbG9naWNzXG4gICAgICAgICAgaWYgKHF1ZXN0aW9uLmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBxdWVzdGlvbi5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAoIWxvZ2ljLnNob3dMb2dpYykgY29udGludWU7XG4gICAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQsIHN1Ym1pc3Npb25Db250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XG4gICAgICAgICAgY29uc3Qgc3ViZm9ybSA9IGVsZW1lbnQuZWxlbWVudDtcblxuICAgICAgICAgIGlmIChzdWJmb3JtLnByb3BlcnR5Py5zdWJGb3JtU3RydWN0dXJlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJtaXNzaW9ucyA9IHN1YmZvcm0uc3VibWlzc2lvbnMgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChzdWJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGhhc1JlcXVpcmVkID0gc3ViZm9ybS5yb3dzLnNvbWUoKHI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICByLmdyaWQuc29tZShcbiAgICAgICAgICAgICAgICAgIChmOiBhbnkpID0+IGYuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJiBmLmVsZW1lbnQucmVxdWlyZWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgaWYgKGhhc1JlcXVpcmVkICYmIHN1Ym1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3ViZm9ybSBcIiR7XG4gICAgICAgICAgICAgICAgICBzdWJmb3JtLnRpdGxlIHx8ICdVbnRpdGxlZCdcbiAgICAgICAgICAgICAgICB9XCIgaXMgbWlzc2luZyByZXF1aXJlZCBzdWJtaXNzaW9ucy5gO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZChcbiAgICAgICAgICAgICAgICAgIHN1YmZvcm0uaWQsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgcGFnZS5wYWdlSW5kZXggPz8gMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIG1lc3NhZ2UgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIG1hcCBxdWVzdGlvbnMgYW5kIHZhbGlkYXRlIG9ubHkgaWYgbW9yZSB0aGFuIG9uZSBzdWJtaXNzaW9uXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgICAgICAgc3ViZm9ybS5yb3dzLmZvckVhY2goKHI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICByLmdyaWQuZm9yRWFjaCgoZjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZi5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uTWFwLnNldChmLmVsZW1lbnQuaWQsIGYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBmb3IgKGxldCBzdWJtaXNzaW9uIG9mIHN1Ym1pc3Npb25zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIHN1YmZvcm0ucm93cykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJbk11bHRpcGxlU3ViZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25NYXAsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNpbmdsZeKAkGVudHJ5IHN1YmZvcm1cbiAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBzdWJmb3JtLnJvd3MgfHwgW10pIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xuICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT05fR1JPVVAnIHx8XG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdNVUxUSUZJRUxEJykgJiZcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnQucm93c1xuICAgICAgICApIHtcbiAgICAgICAgICBmb3IgKGxldCByb3cgb2YgZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkLCBzdWJtaXNzaW9uQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xuICAgIH07XG5cbiAgICAvLyBzdGFydCB2YWxpZGF0aW9uXG4gICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XG4gICAgICAgIC8vIHdlIGFscmVhZHkgY2FsbGVkIHNldEludmFsaWQgYWJvdmVcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBnZXQgaGVyZSwgZXZlcnl0aGluZyBwYXNzZWRcbiAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xuICB9XG59XG4iXX0=
|
|
@@ -329,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
329
329
|
providedIn: 'root',
|
|
330
330
|
}]
|
|
331
331
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DataService }]; } });
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTDlELFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FB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QUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTztTQUNSLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxJQUFJLEdBQThCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtvQkFDckMsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDO29CQUNwQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7d0JBQ3RCLFNBQVMsR0FBRyxXQUFXLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0E3WVUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcclxuICBwcml2YXRlIGFwaVVybDogc3RyaW5nID0gJyc7XHJcbiAgaGVhZGVyOiBhbnkgPSB7fTtcclxuICBwYXJlbnRRdWVzdGlvbnM6IGFueTtcclxuICBzdWJmb3JtRGF0YTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVVybCQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBpVXJsID0gZGF0YTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuaGVhZGVyJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5oZWFkZXIgPSBkYXRhO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5wYXJlbnRRdWVzdGlvbnMkLnN1YnNjcmliZSgocXVlc3Rpb25zKSA9PiB7XHJcbiAgICAgIGlmIChxdWVzdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucyA9IHF1ZXN0aW9ucztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5zdWJmb3JtJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5zdWJmb3JtRGF0YSA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFF1ZXN0aW9ucyhcclxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcclxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsXHJcbiAgICByb3dTZXQ6IG51bWJlciA9IDAsXHJcbiAgICBwcm9ncmVzc2l2ZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgY291bnRyeTogc3RyaW5nID0gJydcclxuICApIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgLnNldCgncGFnZU51bWJlcicsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcclxuICAgICAgLnNldCgncm93U2V0Jywgcm93U2V0LnRvU3RyaW5nKCkpXHJcbiAgICAgIC5zZXQoJ2NvdW50cnknLCBjb3VudHJ5KVxyXG4gICAgICAuc2V0KCdwcm9ncmVzc2l2ZUxvYWRpbmcnLCBwcm9ncmVzc2l2ZUxvYWRpbmcpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfWAsIHtcclxuICAgICAgaGVhZGVycyxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaERhdGFGcm9tRGF0YWJhc2UoZGF0YWJhc2U6IGFueSwgcGFnZU51bWJlcjpudW1iZXI9MCwgcGFnZVNpemU6bnVtYmVyPTEwLCBzZWFyY2hTdHJpbmc6c3RyaW5nPScnLGVuYWJsZVBhZ2luYXRpb246Ym9vbGVhbj1mYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgLnNldCgncGFnZScsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcclxuICAgICAgLnNldCgnc2l6ZScsIHBhZ2VTaXplLnRvU3RyaW5nKCkpXHJcbiAgICAgIC5zZXQoJ2VuYWJsZVBhZ2luYXRpb24nLCBlbmFibGVQYWdpbmF0aW9uLnRvU3RyaW5nKCkpXHJcbiAgICAgIC5zZXQoJ3NlYXJjaEtleScsIHNlYXJjaFN0cmluZyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmFwaVVybH0vYXBpL2xvYWQtZnJvbS1kYmAsIGRhdGFiYXNlLCB7XHJcbiAgICAgIGhlYWRlcnMscGFyYW1zXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZldGNoRGF0YUZyb21Mb29rdXAodGFibGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvbG9va3VwLyR7dGFibGVOYW1lfWApO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hEYXRhRnJvbUV4dGVybmFsQVBJKFxyXG4gICAgYXBpQ29uZmlnOiBhbnksXHJcbiAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyDinIUgQ2hlY2sgaWYgcGFnaW5hdGlvbiBleGlzdHNcclxuICAgIGNvbnN0IGhhc1BhZ2luYXRpb24gPVxyXG4gICAgICBhcGlDb25maWcucGFyYW1zPy5zb21lKChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgPT09ICdQQUdFX0lOREVYJykgJiZcclxuICAgICAgYXBpQ29uZmlnLnBhcmFtcz8uc29tZSgocDogYW55KSA9PiBwLnZhbHVlU291cmNlID09PSAnUEFHRV9TSVpFJyk7XHJcblxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIRUFERVJTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAvLyBoZWxwZXI6IHJlc29sdmUgYSB2YWx1ZSAob3IgdmFsdWVzKSBiYXNlZCBvbiB2YWx1ZVNvdXJjZVxyXG5cclxuICAgIC8vIEFwcGx5IHRvIGhlYWRlcnMgKGFzc3VtaW5nIGBoZWFkZXJzYCBpcyBhbiBIdHRwSGVhZGVycyBpbnN0YW5jZSlcclxuICAgIGlmIChhcGlDb25maWcuaGVhZGVycykge1xyXG4gICAgICBhcGlDb25maWcuaGVhZGVycy5mb3JFYWNoKChoZWFkZXI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghaGVhZGVyLmtleU5hbWUpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSByZXNvbHZlVmFsdWVGcm9tU291cmNlKFxyXG4gICAgICAgICAgaGVhZGVyLnZhbHVlU291cmNlLFxyXG4gICAgICAgICAgaGVhZGVyLmlucHV0VmFsdWUsXHJcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlc1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChoZWFkZXIudmFsdWVTb3VyY2UgPT09ICdTRUxFQ1RFRF9WQUxVRVMnKSB7XHJcbiAgICAgICAgICAvLyBPbmx5IGFkZCBoZWFkZXIgaWYgd2UgaGF2ZSBzZWxlY3RlZCB2YWx1ZXNcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5wdXRWYWx1ZSA9PT0gJ1NJTkdMRV9WQUxVRScpIHtcclxuICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIFN0cmluZyhyYXdWYWx1ZVswXSkpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWRlci5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xyXG4gICAgICAgICAgICAgIC8vIGpvaW4gYnkgY29tbWEgZm9yIGhlYWRlcnMgKGNvbW1vbiBwYXR0ZXJuKVxyXG4gICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgcmF3VmFsdWUuam9pbignLCcpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBmYWxsYmFjazogam9pblxyXG4gICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgcmF3VmFsdWUuam9pbignLCcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gbm8gc2VsZWN0ZWQgdmFsdWVzIC0+IHNraXAgaGVhZGVyXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHNvdXJjZXM6IHNraXAgd2hlbiB1bnJlc29sdmVkXHJcbiAgICAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8gSWYgcmF3VmFsdWUgaXMgYXJyYXkgLT4gam9pbiBieSBjb21tYSAoaGVhZGVycyBleHBlY3Qgc2luZ2xlIHN0cmluZylcclxuICAgICAgICBjb25zdCBoZWFkZXJWYWx1ZSA9IEFycmF5LmlzQXJyYXkocmF3VmFsdWUpXHJcbiAgICAgICAgICA/IHJhd1ZhbHVlLmpvaW4oJywnKVxyXG4gICAgICAgICAgOiBTdHJpbmcocmF3VmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAoaGVhZGVyLmtleU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2F1dGhvcml6YXRpb24nKSB7XHJcbiAgICAgICAgICAvLyBhZGQgQmVhcmVyIG9ubHkgd2hlbiBoZWFkZXJWYWx1ZSBpcyB0cnV0aHkgKGFuZCBub3QgYWxyZWFkeSBwcmVmaXhlZClcclxuICAgICAgICAgIGNvbnN0IHRva2VuID0gaGVhZGVyVmFsdWUuc3RhcnRzV2l0aCgnQmVhcmVyICcpXHJcbiAgICAgICAgICAgID8gaGVhZGVyVmFsdWVcclxuICAgICAgICAgICAgOiBgQmVhcmVyICR7aGVhZGVyVmFsdWV9YDtcclxuICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgdG9rZW4pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIGhlYWRlclZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUEFSQU1TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgLy8gaGVscGVyOiByZXNvbHZlIGEgdmFsdWUgKG9yIHZhbHVlcykgYmFzZWQgb24gdmFsdWVTb3VyY2VcclxuICAgIGZ1bmN0aW9uIHJlc29sdmVWYWx1ZUZyb21Tb3VyY2UoXHJcbiAgICAgIHZhbHVlU291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXHJcbiAgICAgIGlucHV0VmFsdWU6IGFueSxcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXM6IGFueVtdID0gW11cclxuICAgICkge1xyXG4gICAgICBpZiAoIXZhbHVlU291cmNlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHN3aXRjaCAodmFsdWVTb3VyY2UpIHtcclxuICAgICAgICBjYXNlICdMT0NBTF9TVE9SQUdFJzpcclxuICAgICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShpbnB1dFZhbHVlKTsgLy8gc3RyaW5nIG9yIG51bGxcclxuXHJcbiAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcclxuICAgICAgICAgIHJldHVybiBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGlucHV0VmFsdWUpOyAvLyBzdHJpbmcgb3IgbnVsbFxyXG5cclxuICAgICAgICBjYXNlICdDVVNUT01fSU5QVVQnOlxyXG4gICAgICAgIGNhc2UgJ1FVRVNUSU9OJzpcclxuICAgICAgICBjYXNlICdQQUdFX0lOREVYJzpcclxuICAgICAgICBjYXNlICdQQUdFX1NJWkUnOlxyXG4gICAgICAgIGNhc2UgJ1NFQVJDSF9TVFJJTkcnOlxyXG4gICAgICAgICAgLy8gaW5wdXRWYWx1ZSBtYXkgYmUgYSBzaW5nbGUgdmFsdWUgb3IgYW4gYXJyYXkvQ1NWIGRlcGVuZGluZyBvbiB1c2FnZVxyXG4gICAgICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XHJcblxyXG4gICAgICAgIGNhc2UgJ1NFTEVDVEVEX1ZBTFVFUyc6XHJcbiAgICAgICAgICAvLyBGb3IgU0VMRUNURURfVkFMVUVTLCByZXR1cm4gdGhlIHNlbGVjdGVkVmFsdWVzIGFycmF5IChjYWxsZXIgZGVjaWRlcyBTSU5HTEUvQVJSQVkgYmVoYXZpb3IpXHJcbiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShzZWxlY3RlZFZhbHVlcykgPyBzZWxlY3RlZFZhbHVlcyA6IFtdO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCB2YWx1ZVNvdXJjZSBmb3IgcGFyYW1zOiAke3ZhbHVlU291cmNlfWApO1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBVc2FnZTogYnVpbGQgcGFyYW1zIChhc3N1bWluZyBgcGFyYW1zYCBpcyBhbiBIdHRwUGFyYW1zIGluc3RhbmNlKVxyXG4gICAgaWYgKGFwaUNvbmZpZy5wYXJhbXMpIHtcclxuICAgICAgYXBpQ29uZmlnLnBhcmFtcy5mb3JFYWNoKChwYXJhbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFwYXJhbS5rZXlOYW1lKSByZXR1cm47XHJcblxyXG4gICAgICAgIC8vIFJlc29sdmUgcmF3IHZhbHVlIGJhc2VkIG9uIHNvdXJjZVxyXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcclxuICAgICAgICAgIHBhcmFtLnZhbHVlU291cmNlLFxyXG4gICAgICAgICAgcGFyYW0uaW5wdXRWYWx1ZSxcclxuICAgICAgICAgIHNlbGVjdGVkVmFsdWVzXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gSWYgcGFyYW0gZXhwZWN0cyBzZWxlY3RlZCB2YWx1ZXMsIGhhbmRsZSBTSU5HTEVfVkFMVUUgdnMgQVJSQVlfT0ZfVkFMVUVTXHJcbiAgICAgICAgaWYgKHBhcmFtLnZhbHVlU291cmNlID09PSAnU0VMRUNURURfVkFMVUVTJykge1xyXG4gICAgICAgICAgLy8gT25seSBhZGQgaWYgdGhlcmUgYXJlIGFjdHVhbCBzZWxlY3RlZCB2YWx1ZXNcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbS5pbnB1dFZhbHVlID09PSAnU0lOR0xFX1ZBTFVFJykge1xyXG4gICAgICAgICAgICAgIC8vIHNldCB0byBmaXJzdCBzZWxlY3RlZCB2YWx1ZVxyXG4gICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFyYW0ua2V5TmFtZSwgcmF3VmFsdWVbMF0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSB7XHJcbiAgICAgICAgICAgICAgLy8gYXBwZW5kIGVhY2ggc2VsZWN0ZWQgdmFsdWUgYXMgcmVwZWF0ZWQgcGFyYW1cclxuICAgICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCB2YWwpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIGlmIGlucHV0VmFsdWUgbm90IHByb3ZpZGVkLCBkZWZhdWx0IHRvIGFycmF5IGJlaGF2aW9yXHJcbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gaWYgbm8gc2VsZWN0ZWQgdmFsdWVzLCBza2lwIGFkZGluZyB0aGlzIHBhcmFtXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHZhbHVlU291cmNlczogcmF3VmFsdWUgY291bGQgYmUgbnVsbC91bmRlZmluZWQvc3RyaW5nL2FycmF5XHJcbiAgICAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIC8vIHNraXAgYWRkaW5nIHBhcmFtIHdoZW4gdmFsdWUgbm90IGZvdW5kXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBpbnB1dFZhbHVlIGluZGljYXRlcyBhcnJheS1vZi12YWx1ZXMgKGUuZy4sIHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSxcclxuICAgICAgICAvLyBhY2NlcHQgZWl0aGVyIGFuIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xyXG4gICAgICAgIGlmIChwYXJhbS5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJhd1ZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCB2YWwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd1ZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAvLyBzdXBwb3J0IGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdcclxuICAgICAgICAgICAgcmF3VmFsdWVcclxuICAgICAgICAgICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAgICAgICAgIC5tYXAoKHMpID0+IHMudHJpbSgpKVxyXG4gICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgICAgICAgICAuZm9yRWFjaCgodmFsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrOiBjb252ZXJ0IHRvIHN0cmluZyBhbmQgYXBwZW5kXHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGRlZmF1bHQ6IHNldCBzaW5nbGUgdmFsdWVcclxuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBBVEggVkFSSUFCTEVTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIGxldCB1cmwgPSBhcGlDb25maWcudXJsO1xyXG4gICAgaWYgKGFwaUNvbmZpZy5wYXRoVmFyaWFibGVzKSB7XHJcbiAgICAgIGFwaUNvbmZpZy5wYXRoVmFyaWFibGVzLmZvckVhY2goKHBhdGhWYXI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChwYXRoVmFyLmtleU5hbWUpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZVRvQmluZDogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKHBhdGhWYXIudmFsdWVTb3VyY2UpIHtcclxuICAgICAgICAgICAgY2FzZSAnTE9DQUxfU1RPUkFHRSc6XHJcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShwYXRoVmFyLmlucHV0VmFsdWUpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcclxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocGF0aFZhci5pbnB1dFZhbHVlKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ0NVU1RPTV9JTlBVVCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ1FVRVNUSU9OJzpcclxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHBhdGhWYXIuaW5wdXRWYWx1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCB2YWx1ZVNvdXJjZTogJHtwYXRoVmFyLnZhbHVlU291cmNlfWApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh2YWx1ZVRvQmluZCAhPT0gbnVsbCAmJiB2YWx1ZVRvQmluZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGB7JHtwYXRoVmFyLmtleU5hbWV9fWAsIHZhbHVlVG9CaW5kKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRklOQUwgQ0FMTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKFxyXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxyXG4gICAgZm9ybURhdGE6IEZvcm1EYXRhLFxyXG4gICAgcmVDQVBUQ0hBVG9rZW4/OiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAvLyAgICdBdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9uc2A7XHJcbiAgICBpZiAocmVDQVBUQ0hBVG9rZW4pIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZWNhcHRjaGFUb2tlbicsIHJlQ0FQVENIQVRva2VuKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGZvcm1EYXRhLCB7XHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0dGVkRm9ybShcclxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcclxuICAgIHN1Ym1pc3Npb25JZDogc3RyaW5nLFxyXG4gICAgcGFnZU51bWJlcjogbnVtYmVyID0gMSxcclxuICAgIHJvd1NldDogbnVtYmVyID0gMCxcclxuICAgIG5hdmlnYXRlVG8/OiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgLnNldCgncGFnZU51bWJlcicsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcclxuICAgICAgLnNldCgncm93U2V0Jywgcm93U2V0LnRvU3RyaW5nKCkpO1xyXG4gICAgaWYgKG5hdmlnYXRlVG8pIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbmF2aWdhdGVJZCcsIG5hdmlnYXRlVG8pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnBhcmVudFF1ZXN0aW9ucykge1xyXG4gICAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucy5mb3JFYWNoKChxOiBhbnkpID0+IHtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYXJlbnRRdWVzdGlvbnMnLCBxKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgIC8vICAgJ0FjY2VwdC1MYW5ndWFnZSc6IHRoaXMuaGVhZGVyLmFjY2VwdGVkTGFuZ3VhZ2UsXHJcbiAgICAvLyB9KTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXHJcbiAgICAgIGAke3RoaXMuYXBpVXJsfS9hcGkvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9ucy8ke3N1Ym1pc3Npb25JZH1gLFxyXG4gICAgICB7IGhlYWRlcnMsIHBhcmFtcyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybShcclxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcclxuICAgIHN1Ym1pc3Npb25JZDogc3RyaW5nLFxyXG4gICAgZm9ybURhdGE6IEZvcm1EYXRhLFxyXG4gICAgcmVDQVBUQ0hBVG9rZW4/OiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAvLyAgICdBdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9ucy8ke3N1Ym1pc3Npb25JZH1gO1xyXG4gICAgaWYgKHJlQ0FQVENIQVRva2VuKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVjYXB0Y2hhVG9rZW4nLCByZUNBUFRDSEFUb2tlbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KHVybCwgZm9ybURhdGEsIHtcclxuICAgICAgaGVhZGVycyxcclxuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgfSwpO1xyXG4gIH1cclxuXHJcbiAgcHJldmlld0ZpbGUodXJsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAvLyAgICdBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLmhlYWRlci5hY2NlcHRlZExhbmd1YWdlLFxyXG4gICAgLy8gICAnQ29udGVudC1UeXBlJzogdGhpcy5oZWFkZXIuY29udGVudFR5cGUsXHJcbiAgICAvLyAgICdhdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcclxuICAgIC8vICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dGhpcy5oZWFkZXIuYXV0aG9yaXphdGlvbn1gLFxyXG4gICAgLy8gfSk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGZpbGVVcmwgPSB1cmw7XHJcbiAgICBjb25zdCBlbmNvZGVkRmlsZVVybCA9IGVuY29kZVVSSUNvbXBvbmVudChmaWxlVXJsKTtcclxuICAgIGNvbnN0IGZ1bGxVcmwgPSBgP3VybD0ke2VuY29kZWRGaWxlVXJsfWA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KFxyXG4gICAgICB0aGlzLmFwaVVybCArIGAvYXBpL2Nkbi9wcmV2aWV3JHtmdWxsVXJsfWAsXHJcbiAgICAgIG9wdGlvbnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJmb3JtU3VibWlzc2lvbnMoc3ViRm9ybURhdGE6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhc3ViRm9ybURhdGE/Lm1vZHVsZU5hbWUgfHxcclxuICAgICAgIXN1YkZvcm1EYXRhPy5kdXBsaWNhdGVTdWJtaXNzaW9uPy5zb3VyY2VTdWJtaXNzaW9uSWRzXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcclxuXHJcbiAgICAvLyBFeHRyYWN0IGRhdGFcclxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBzdWJGb3JtRGF0YS5tb2R1bGVOYW1lO1xyXG4gICAgY29uc3Qgc3VibWlzc2lvbklkczogc3RyaW5nW10gPVxyXG4gICAgICBzdWJGb3JtRGF0YS5kdXBsaWNhdGVTdWJtaXNzaW9uLnNvdXJjZVN1Ym1pc3Npb25JZHM7XHJcblxyXG4gICAgLy8gQnVpbGQgcXVlcnkgc3RyaW5nXHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHN1Ym1pc3Npb25JZHNcclxuICAgICAgLm1hcCgoaWQpID0+IGBzdWJtaXNzaW9uSWRzPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gKVxyXG4gICAgICAuam9pbignJicpO1xyXG5cclxuICAgIC8vIEZpbmFsIFVSTFxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvJHttb2R1bGVOYW1lfS9zdWJmb3JtLXN1Ym1pc3Npb25zPyR7cXVlcnlQYXJhbXN9YDtcclxuXHJcbiAgICAvLyBOb3cgbWFrZSBBUEkgY2FsbFxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XHJcbiAgICAgIGhlYWRlcnNcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldFNhZmVIZWFkZXJzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gICAgY29uc3Qgc2FmZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyICYmIHR5cGVvZiB0aGlzLmhlYWRlciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXIpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5oZWFkZXJba2V5XTtcclxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBsZXQgaGVhZGVyS2V5ID0ga2V5O1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ2F1dGhVc2VyJykge1xyXG4gICAgICAgICAgICBoZWFkZXJLZXkgPSAnYXV0aC11c2VyJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHNhZmVbaGVhZGVyS2V5XSA9IFN0cmluZyh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNhZmU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTDlELFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FB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QUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTztTQUNSLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxJQUFJLEdBQThCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtvQkFDckMsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDO29CQUNwQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7d0JBQ3RCLFNBQVMsR0FBRyxXQUFXLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0E3WVUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xuICBwcml2YXRlIGFwaVVybDogc3RyaW5nID0gJyc7XG4gIGhlYWRlcjogYW55ID0ge307XG4gIHBhcmVudFF1ZXN0aW9uczogYW55O1xuICBzdWJmb3JtRGF0YTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UpIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVVybCQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmFwaVVybCA9IGRhdGE7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmhlYWRlciQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmhlYWRlciA9IGRhdGE7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnBhcmVudFF1ZXN0aW9ucyQuc3Vic2NyaWJlKChxdWVzdGlvbnMpID0+IHtcbiAgICAgIGlmIChxdWVzdGlvbnMpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbnMgPSBxdWVzdGlvbnM7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnN1YmZvcm0kLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5zdWJmb3JtRGF0YSA9IGRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBnZXRRdWVzdGlvbnMoXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsXG4gICAgcm93U2V0OiBudW1iZXIgPSAwLFxuICAgIHByb2dyZXNzaXZlTG9hZGluZzogYm9vbGVhbiA9IHRydWUsXG4gICAgY291bnRyeTogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgIC5zZXQoJ3BhZ2VOdW1iZXInLCBwYWdlTnVtYmVyLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdyb3dTZXQnLCByb3dTZXQudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ2NvdW50cnknLCBjb3VudHJ5KVxuICAgICAgLnNldCgncHJvZ3Jlc3NpdmVMb2FkaW5nJywgcHJvZ3Jlc3NpdmVMb2FkaW5nKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfWAsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICBmZXRjaERhdGFGcm9tRGF0YWJhc2UoZGF0YWJhc2U6IGFueSwgcGFnZU51bWJlcjpudW1iZXI9MCwgcGFnZVNpemU6bnVtYmVyPTEwLCBzZWFyY2hTdHJpbmc6c3RyaW5nPScnLGVuYWJsZVBhZ2luYXRpb246Ym9vbGVhbj1mYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgncGFnZScsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NpemUnLCBwYWdlU2l6ZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnZW5hYmxlUGFnaW5hdGlvbicsIGVuYWJsZVBhZ2luYXRpb24udG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NlYXJjaEtleScsIHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9sb2FkLWZyb20tZGJgLCBkYXRhYmFzZSwge1xuICAgICAgaGVhZGVycyxwYXJhbXNcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21Mb29rdXAodGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYXBpVXJsfS9hcGkvcHVibGljL2xvb2t1cC8ke3RhYmxlTmFtZX1gKTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21FeHRlcm5hbEFQSShcbiAgICBhcGlDb25maWc6IGFueSxcbiAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIOKchSBDaGVjayBpZiBwYWdpbmF0aW9uIGV4aXN0c1xuICAgIGNvbnN0IGhhc1BhZ2luYXRpb24gPVxuICAgICAgYXBpQ29uZmlnLnBhcmFtcz8uc29tZSgocDogYW55KSA9PiBwLnZhbHVlU291cmNlID09PSAnUEFHRV9JTkRFWCcpICYmXG4gICAgICBhcGlDb25maWcucGFyYW1zPy5zb21lKChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgPT09ICdQQUdFX1NJWkUnKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSEVBREVSUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAvLyBoZWxwZXI6IHJlc29sdmUgYSB2YWx1ZSAob3IgdmFsdWVzKSBiYXNlZCBvbiB2YWx1ZVNvdXJjZVxuXG4gICAgLy8gQXBwbHkgdG8gaGVhZGVycyAoYXNzdW1pbmcgYGhlYWRlcnNgIGlzIGFuIEh0dHBIZWFkZXJzIGluc3RhbmNlKVxuICAgIGlmIChhcGlDb25maWcuaGVhZGVycykge1xuICAgICAgYXBpQ29uZmlnLmhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFoZWFkZXIua2V5TmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgICAgICBoZWFkZXIudmFsdWVTb3VyY2UsXG4gICAgICAgICAgaGVhZGVyLmlucHV0VmFsdWUsXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZXNcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaGVhZGVyLnZhbHVlU291cmNlID09PSAnU0VMRUNURURfVkFMVUVTJykge1xuICAgICAgICAgIC8vIE9ubHkgYWRkIGhlYWRlciBpZiB3ZSBoYXZlIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVyLmlucHV0VmFsdWUgPT09ICdTSU5HTEVfVkFMVUUnKSB7XG4gICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlWzBdKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWRlci5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xuICAgICAgICAgICAgICAvLyBqb2luIGJ5IGNvbW1hIGZvciBoZWFkZXJzIChjb21tb24gcGF0dGVybilcbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCByYXdWYWx1ZS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGpvaW5cbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCByYXdWYWx1ZS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBubyBzZWxlY3RlZCB2YWx1ZXMgLT4gc2tpcCBoZWFkZXJcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHNvdXJjZXM6IHNraXAgd2hlbiB1bnJlc29sdmVkXG4gICAgICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgLy8gSWYgcmF3VmFsdWUgaXMgYXJyYXkgLT4gam9pbiBieSBjb21tYSAoaGVhZGVycyBleHBlY3Qgc2luZ2xlIHN0cmluZylcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWUgPSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKVxuICAgICAgICAgID8gcmF3VmFsdWUuam9pbignLCcpXG4gICAgICAgICAgOiBTdHJpbmcocmF3VmFsdWUpO1xuXG4gICAgICAgIGlmIChoZWFkZXIua2V5TmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYXV0aG9yaXphdGlvbicpIHtcbiAgICAgICAgICAvLyBhZGQgQmVhcmVyIG9ubHkgd2hlbiBoZWFkZXJWYWx1ZSBpcyB0cnV0aHkgKGFuZCBub3QgYWxyZWFkeSBwcmVmaXhlZClcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGhlYWRlclZhbHVlLnN0YXJ0c1dpdGgoJ0JlYXJlciAnKVxuICAgICAgICAgICAgPyBoZWFkZXJWYWx1ZVxuICAgICAgICAgICAgOiBgQmVhcmVyICR7aGVhZGVyVmFsdWV9YDtcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHRva2VuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIGhlYWRlclZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQQVJBTVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIC8vIGhlbHBlcjogcmVzb2x2ZSBhIHZhbHVlIChvciB2YWx1ZXMpIGJhc2VkIG9uIHZhbHVlU291cmNlXG4gICAgZnVuY3Rpb24gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgIHZhbHVlU291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBpbnB1dFZhbHVlOiBhbnksXG4gICAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxuICAgICkge1xuICAgICAgaWYgKCF2YWx1ZVNvdXJjZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgIHN3aXRjaCAodmFsdWVTb3VyY2UpIHtcbiAgICAgICAgY2FzZSAnTE9DQUxfU1RPUkFHRSc6XG4gICAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGlucHV0VmFsdWUpOyAvLyBzdHJpbmcgb3IgbnVsbFxuXG4gICAgICAgIGNhc2UgJ1NFU1NJT05fU1RPUkFHRSc6XG4gICAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaW5wdXRWYWx1ZSk7IC8vIHN0cmluZyBvciBudWxsXG5cbiAgICAgICAgY2FzZSAnQ1VTVE9NX0lOUFVUJzpcbiAgICAgICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgICBjYXNlICdQQUdFX0lOREVYJzpcbiAgICAgICAgY2FzZSAnUEFHRV9TSVpFJzpcbiAgICAgICAgY2FzZSAnU0VBUkNIX1NUUklORyc6XG4gICAgICAgICAgLy8gaW5wdXRWYWx1ZSBtYXkgYmUgYSBzaW5nbGUgdmFsdWUgb3IgYW4gYXJyYXkvQ1NWIGRlcGVuZGluZyBvbiB1c2FnZVxuICAgICAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICAgIGNhc2UgJ1NFTEVDVEVEX1ZBTFVFUyc6XG4gICAgICAgICAgLy8gRm9yIFNFTEVDVEVEX1ZBTFVFUywgcmV0dXJuIHRoZSBzZWxlY3RlZFZhbHVlcyBhcnJheSAoY2FsbGVyIGRlY2lkZXMgU0lOR0xFL0FSUkFZIGJlaGF2aW9yKVxuICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGVjdGVkVmFsdWVzKSA/IHNlbGVjdGVkVmFsdWVzIDogW107XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIHZhbHVlU291cmNlIGZvciBwYXJhbXM6ICR7dmFsdWVTb3VyY2V9YCk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNhZ2U6IGJ1aWxkIHBhcmFtcyAoYXNzdW1pbmcgYHBhcmFtc2AgaXMgYW4gSHR0cFBhcmFtcyBpbnN0YW5jZSlcbiAgICBpZiAoYXBpQ29uZmlnLnBhcmFtcykge1xuICAgICAgYXBpQ29uZmlnLnBhcmFtcy5mb3JFYWNoKChwYXJhbTogYW55KSA9PiB7XG4gICAgICAgIGlmICghcGFyYW0ua2V5TmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlc29sdmUgcmF3IHZhbHVlIGJhc2VkIG9uIHNvdXJjZVxuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHJlc29sdmVWYWx1ZUZyb21Tb3VyY2UoXG4gICAgICAgICAgcGFyYW0udmFsdWVTb3VyY2UsXG4gICAgICAgICAgcGFyYW0uaW5wdXRWYWx1ZSxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlc1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIElmIHBhcmFtIGV4cGVjdHMgc2VsZWN0ZWQgdmFsdWVzLCBoYW5kbGUgU0lOR0xFX1ZBTFVFIHZzIEFSUkFZX09GX1ZBTFVFU1xuICAgICAgICBpZiAocGFyYW0udmFsdWVTb3VyY2UgPT09ICdTRUxFQ1RFRF9WQUxVRVMnKSB7XG4gICAgICAgICAgLy8gT25seSBhZGQgaWYgdGhlcmUgYXJlIGFjdHVhbCBzZWxlY3RlZCB2YWx1ZXNcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkgJiYgcmF3VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdTSU5HTEVfVkFMVUUnKSB7XG4gICAgICAgICAgICAgIC8vIHNldCB0byBmaXJzdCBzZWxlY3RlZCB2YWx1ZVxuICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhcmFtLmtleU5hbWUsIHJhd1ZhbHVlWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpIHtcbiAgICAgICAgICAgICAgLy8gYXBwZW5kIGVhY2ggc2VsZWN0ZWQgdmFsdWUgYXMgcmVwZWF0ZWQgcGFyYW1cbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgaW5wdXRWYWx1ZSBub3QgcHJvdmlkZWQsIGRlZmF1bHQgdG8gYXJyYXkgYmVoYXZpb3JcbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpZiBubyBzZWxlY3RlZCB2YWx1ZXMsIHNraXAgYWRkaW5nIHRoaXMgcGFyYW1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHZhbHVlU291cmNlczogcmF3VmFsdWUgY291bGQgYmUgbnVsbC91bmRlZmluZWQvc3RyaW5nL2FycmF5XG4gICAgICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gc2tpcCBhZGRpbmcgcGFyYW0gd2hlbiB2YWx1ZSBub3QgZm91bmRcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBpbnB1dFZhbHVlIGluZGljYXRlcyBhcnJheS1vZi12YWx1ZXMgKGUuZy4sIHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSxcbiAgICAgICAgLy8gYWNjZXB0IGVpdGhlciBhbiBhcnJheSBvciBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICAgICAgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByYXdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICAgICAgcmF3VmFsdWVcbiAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgLm1hcCgocykgPT4gcy50cmltKCkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgLmZvckVhY2goKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCB2YWwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGNvbnZlcnQgdG8gc3RyaW5nIGFuZCBhcHBlbmRcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRlZmF1bHQ6IHNldCBzaW5nbGUgdmFsdWVcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhcmFtLmtleU5hbWUsIFN0cmluZyhyYXdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBBVEggVkFSSUFCTEVTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBsZXQgdXJsID0gYXBpQ29uZmlnLnVybDtcbiAgICBpZiAoYXBpQ29uZmlnLnBhdGhWYXJpYWJsZXMpIHtcbiAgICAgIGFwaUNvbmZpZy5wYXRoVmFyaWFibGVzLmZvckVhY2goKHBhdGhWYXI6IGFueSkgPT4ge1xuICAgICAgICBpZiAocGF0aFZhci5rZXlOYW1lKSB7XG4gICAgICAgICAgbGV0IHZhbHVlVG9CaW5kOiBhbnkgPSBudWxsO1xuXG4gICAgICAgICAgc3dpdGNoIChwYXRoVmFyLnZhbHVlU291cmNlKSB7XG4gICAgICAgICAgICBjYXNlICdMT0NBTF9TVE9SQUdFJzpcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShwYXRoVmFyLmlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHBhdGhWYXIuaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdDVVNUT01fSU5QVVQnOlxuICAgICAgICAgICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHBhdGhWYXIuaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdmFsdWVTb3VyY2U6ICR7cGF0aFZhci52YWx1ZVNvdXJjZX1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsdWVUb0JpbmQgIT09IG51bGwgJiYgdmFsdWVUb0JpbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoYHske3BhdGhWYXIua2V5TmFtZX19YCwgdmFsdWVUb0JpbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGSU5BTCBDQUxMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XG4gIH1cblxuICBzdWJtaXRGb3JtKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBmb3JtRGF0YTogRm9ybURhdGEsXG4gICAgcmVDQVBUQ0hBVG9rZW4/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcbiAgICAvLyB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9uc2A7XG4gICAgaWYgKHJlQ0FQVENIQVRva2VuKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3JlY2FwdGNoYVRva2VuJywgcmVDQVBUQ0hBVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBmb3JtRGF0YSwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRGb3JtKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBzdWJtaXNzaW9uSWQ6IHN0cmluZyxcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIgPSAxLFxuICAgIHJvd1NldDogbnVtYmVyID0gMCxcbiAgICBuYXZpZ2F0ZVRvPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgIC5zZXQoJ3BhZ2VOdW1iZXInLCBwYWdlTnVtYmVyLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdyb3dTZXQnLCByb3dTZXQudG9TdHJpbmcoKSk7XG4gICAgaWYgKG5hdmlnYXRlVG8pIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ25hdmlnYXRlSWQnLCBuYXZpZ2F0ZVRvKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXJlbnRRdWVzdGlvbnMpIHtcbiAgICAgIHRoaXMucGFyZW50UXVlc3Rpb25zLmZvckVhY2goKHE6IGFueSkgPT4ge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYXJlbnRRdWVzdGlvbnMnLCBxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLmhlYWRlci5hY2NlcHRlZExhbmd1YWdlLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KFxuICAgICAgYCR7dGhpcy5hcGlVcmx9L2FwaS9mb3Jtcy8ke21vZHVsZU5hbWV9L3N1Ym1pc3Npb25zLyR7c3VibWlzc2lvbklkfWAsXG4gICAgICB7IGhlYWRlcnMsIHBhcmFtcyB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm0oXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIHN1Ym1pc3Npb25JZDogc3RyaW5nLFxuICAgIGZvcm1EYXRhOiBGb3JtRGF0YSxcbiAgICByZUNBUFRDSEFUb2tlbj86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9mb3Jtcy8ke21vZHVsZU5hbWV9L3N1Ym1pc3Npb25zLyR7c3VibWlzc2lvbklkfWA7XG4gICAgaWYgKHJlQ0FQVENIQVRva2VuKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3JlY2FwdGNoYVRva2VuJywgcmVDQVBUQ0hBVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KHVybCwgZm9ybURhdGEsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgIH0sKTtcbiAgfVxuXG4gIHByZXZpZXdGaWxlKHVybDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLmhlYWRlci5hY2NlcHRlZExhbmd1YWdlLFxuICAgIC8vICAgJ0NvbnRlbnQtVHlwZSc6IHRoaXMuaGVhZGVyLmNvbnRlbnRUeXBlLFxuICAgIC8vICAgJ2F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dGhpcy5oZWFkZXIuYXV0aG9yaXphdGlvbn1gLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICB9O1xuICAgIGNvbnN0IGZpbGVVcmwgPSB1cmw7XG4gICAgY29uc3QgZW5jb2RlZEZpbGVVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoZmlsZVVybCk7XG4gICAgY29uc3QgZnVsbFVybCA9IGA/dXJsPSR7ZW5jb2RlZEZpbGVVcmx9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KFxuICAgICAgdGhpcy5hcGlVcmwgKyBgL2FwaS9jZG4vcHJldmlldyR7ZnVsbFVybH1gLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBnZXRTdWJmb3JtU3VibWlzc2lvbnMoc3ViRm9ybURhdGE6IGFueSkge1xuICAgIGlmIChcbiAgICAgICFzdWJGb3JtRGF0YT8ubW9kdWxlTmFtZSB8fFxuICAgICAgIXN1YkZvcm1EYXRhPy5kdXBsaWNhdGVTdWJtaXNzaW9uPy5zb3VyY2VTdWJtaXNzaW9uSWRzXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuXG4gICAgLy8gRXh0cmFjdCBkYXRhXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHN1YkZvcm1EYXRhLm1vZHVsZU5hbWU7XG4gICAgY29uc3Qgc3VibWlzc2lvbklkczogc3RyaW5nW10gPVxuICAgICAgc3ViRm9ybURhdGEuZHVwbGljYXRlU3VibWlzc2lvbi5zb3VyY2VTdWJtaXNzaW9uSWRzO1xuXG4gICAgLy8gQnVpbGQgcXVlcnkgc3RyaW5nXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzdWJtaXNzaW9uSWRzXG4gICAgICAubWFwKChpZCkgPT4gYHN1Ym1pc3Npb25JZHM9JHtlbmNvZGVVUklDb21wb25lbnQoaWQpfWApXG4gICAgICAuam9pbignJicpO1xuXG4gICAgLy8gRmluYWwgVVJMXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvJHttb2R1bGVOYW1lfS9zdWJmb3JtLXN1Ym1pc3Npb25zPyR7cXVlcnlQYXJhbXN9YDtcblxuICAgIC8vIE5vdyBtYWtlIEFQSSBjYWxsXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldFNhZmVIZWFkZXJzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHNhZmU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBpZiAodGhpcy5oZWFkZXIgJiYgdHlwZW9mIHRoaXMuaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXIpKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuaGVhZGVyW2tleV07XG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgaGVhZGVyS2V5ID0ga2V5O1xuICAgICAgICAgIGlmIChrZXkgPT09ICdhdXRoVXNlcicpIHtcbiAgICAgICAgICAgIGhlYWRlcktleSA9ICdhdXRoLXVzZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzYWZlW2hlYWRlcktleV0gPSBTdHJpbmcodmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2FmZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./data.service";
|
|
5
|
+
export class HiddenFieldService {
|
|
6
|
+
constructor(dataService) {
|
|
7
|
+
this.dataService = dataService;
|
|
8
|
+
this.hiddenFieldMap = new Map();
|
|
9
|
+
this.hiddenFieldResultsSubject = new BehaviorSubject(null);
|
|
10
|
+
this.hiddenFieldResults$ = this.hiddenFieldResultsSubject.asObservable();
|
|
11
|
+
this.isEdit = false;
|
|
12
|
+
this.subformHiddenFieldsMap = new Map();
|
|
13
|
+
this.user = '';
|
|
14
|
+
this.dataService.header$.subscribe((data) => {
|
|
15
|
+
this.user = data.authUser;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
setEditMode(value) {
|
|
19
|
+
this.isEdit = value;
|
|
20
|
+
}
|
|
21
|
+
getEditMode() {
|
|
22
|
+
return this.isEdit;
|
|
23
|
+
}
|
|
24
|
+
setHiddenField(id, field) {
|
|
25
|
+
this.hiddenFieldMap.set(id, field);
|
|
26
|
+
}
|
|
27
|
+
getHiddenField(id) {
|
|
28
|
+
return this.hiddenFieldMap.get(id);
|
|
29
|
+
}
|
|
30
|
+
getAllHiddenFields() {
|
|
31
|
+
return Array.from(this.hiddenFieldMap.values());
|
|
32
|
+
}
|
|
33
|
+
updateHiddenFieldsOnChange() {
|
|
34
|
+
this.hiddenFieldMap.forEach((hiddenField, id) => {
|
|
35
|
+
const updateOn = hiddenField.formElement?.hiddenField.updateOn;
|
|
36
|
+
// ✅ Only process UPDATE / BOTH
|
|
37
|
+
if (updateOn !== 'UPDATE' && updateOn !== 'BOTH') {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// ✅ Recalculate value
|
|
41
|
+
const result = this.resolveHiddenFieldValue(hiddenField.formElement?.hiddenField);
|
|
42
|
+
// ✅ Emit result
|
|
43
|
+
this.hiddenFieldResultsSubject.next({
|
|
44
|
+
id: id,
|
|
45
|
+
result: result,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
resolveHiddenFieldValue(hiddenField) {
|
|
50
|
+
if (!hiddenField?.valueSource)
|
|
51
|
+
return null;
|
|
52
|
+
switch (hiddenField.valueSource) {
|
|
53
|
+
case 'CUSTOM_INPUT':
|
|
54
|
+
// Directly return the provided value
|
|
55
|
+
return hiddenField.value;
|
|
56
|
+
case 'LOCAL_STORAGE':
|
|
57
|
+
if (hiddenField.key) {
|
|
58
|
+
return localStorage.getItem(hiddenField.key);
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
case 'SESSION_STORAGE':
|
|
62
|
+
if (hiddenField.key) {
|
|
63
|
+
return sessionStorage.getItem(hiddenField.key);
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
case 'PREDEFINED_VARIABLE':
|
|
67
|
+
return this.resolvePredefinedVariable(hiddenField.value);
|
|
68
|
+
default:
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
resolvePredefinedVariable(variable) {
|
|
73
|
+
if (!variable)
|
|
74
|
+
return null;
|
|
75
|
+
const now = new Date();
|
|
76
|
+
switch (variable) {
|
|
77
|
+
case 'CURRENT_DATE':
|
|
78
|
+
return now.toISOString().split('T')[0]; // e.g. "2025-09-29"
|
|
79
|
+
case 'CURRENT_TIME':
|
|
80
|
+
return now.toTimeString().split(' ')[0]; // e.g. "15:42:18"
|
|
81
|
+
case 'CURRENT_DATE_TIME':
|
|
82
|
+
return now.toLocaleString(); // full ISO datetime
|
|
83
|
+
case 'EPOCH_TIME':
|
|
84
|
+
return now.getTime(); // milliseconds since 1970
|
|
85
|
+
case 'YEAR':
|
|
86
|
+
return now.getFullYear();
|
|
87
|
+
case 'MONTH':
|
|
88
|
+
return now.getMonth() + 1; // 1-12
|
|
89
|
+
case 'DAY':
|
|
90
|
+
return now.getDate(); // 1-31
|
|
91
|
+
case 'SUBMITTED_BY':
|
|
92
|
+
return this.user ? this.user : 'Unknown';
|
|
93
|
+
default:
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
extractSubformHiddenFields(subForm) {
|
|
98
|
+
if (!subForm?.rows)
|
|
99
|
+
return;
|
|
100
|
+
const hiddenFields = [];
|
|
101
|
+
subForm.rows.forEach((row) => {
|
|
102
|
+
row.grid?.forEach((item) => {
|
|
103
|
+
const element = item?.element;
|
|
104
|
+
if (element?.formElement?.elementType === 'HIDDEN_FIELD' &&
|
|
105
|
+
item?.show) {
|
|
106
|
+
hiddenFields.push({
|
|
107
|
+
id: element.id,
|
|
108
|
+
config: element.formElement.hiddenField
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
// Store using subform id
|
|
114
|
+
this.subformHiddenFieldsMap.set(subForm.id, hiddenFields);
|
|
115
|
+
}
|
|
116
|
+
updateSubformHiddenFieldsFromCache(subFormId, submission, trigger) {
|
|
117
|
+
const hiddenFields = this.subformHiddenFieldsMap.get(subFormId);
|
|
118
|
+
if (!hiddenFields || !submission?.answers)
|
|
119
|
+
return submission;
|
|
120
|
+
hiddenFields.forEach((field) => {
|
|
121
|
+
const hiddenConfig = field.config;
|
|
122
|
+
if (!hiddenConfig)
|
|
123
|
+
return;
|
|
124
|
+
const updateOn = hiddenConfig.updateOn;
|
|
125
|
+
const shouldUpdate = updateOn === 'BOTH' ||
|
|
126
|
+
(updateOn === 'SAVE' && trigger === 'SAVE') ||
|
|
127
|
+
(updateOn === 'UPDATE' && trigger === 'UPDATE');
|
|
128
|
+
if (!shouldUpdate)
|
|
129
|
+
return;
|
|
130
|
+
// ✅ Resolve value
|
|
131
|
+
const value = this.resolveHiddenFieldValue(hiddenConfig);
|
|
132
|
+
// ✅ Find answer
|
|
133
|
+
const answerObj = submission.answers.find((ans) => ans.questionId === field.id);
|
|
134
|
+
if (answerObj) {
|
|
135
|
+
if (answerObj.answer !== value) {
|
|
136
|
+
answerObj.answer = value;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
submission.answers.push({
|
|
141
|
+
questionId: field.id,
|
|
142
|
+
answer: value,
|
|
143
|
+
maximumPossibleScore: 0,
|
|
144
|
+
show: true,
|
|
145
|
+
required: false,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
return submission;
|
|
150
|
+
}
|
|
151
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldService, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
152
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldService, providedIn: 'root' }); }
|
|
153
|
+
}
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldService, decorators: [{
|
|
155
|
+
type: Injectable,
|
|
156
|
+
args: [{
|
|
157
|
+
providedIn: 'root',
|
|
158
|
+
}]
|
|
159
|
+
}], ctorParameters: function () { return [{ type: i1.DataService }]; } });
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlkZGVuLWZpZWxkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2hpZGRlbi1maWVsZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS3ZDLE1BQU0sT0FBTyxrQkFBa0I7SUFhN0IsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFaNUMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBRWhDLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUc3QyxJQUFJLENBQUMsQ0FBQztRQUNoQix3QkFBbUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEUsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNoQiwyQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUcxRCxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQVUsRUFBRSxLQUFVO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENB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QUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzsrR0FyTVUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBIaWRkZW5GaWVsZFNlcnZpY2Uge1xuICBoaWRkZW5GaWVsZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgcHJpdmF0ZSBoaWRkZW5GaWVsZFJlc3VsdHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XG4gICAgaWQ6IHN0cmluZztcbiAgICByZXN1bHQ6IHN0cmluZztcbiAgfSB8IG51bGw+KG51bGwpO1xuICBoaWRkZW5GaWVsZFJlc3VsdHMkID0gdGhpcy5oaWRkZW5GaWVsZFJlc3VsdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc0VkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJmb3JtSGlkZGVuRmllbGRzTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG5cbiAgdXNlcjogc3RyaW5nID0gJyc7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5oZWFkZXIkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy51c2VyID0gZGF0YS5hdXRoVXNlcjtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEVkaXRNb2RlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0VkaXQgPSB2YWx1ZTtcbiAgfVxuICBcbiAgZ2V0RWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0O1xuICB9XG5cbiAgc2V0SGlkZGVuRmllbGQoaWQ6IHN0cmluZywgZmllbGQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaGlkZGVuRmllbGRNYXAuc2V0KGlkLCBmaWVsZCk7XG4gIH1cblxuICBnZXRIaWRkZW5GaWVsZChpZDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5oaWRkZW5GaWVsZE1hcC5nZXQoaWQpO1xuICB9XG5cbiAgZ2V0QWxsSGlkZGVuRmllbGRzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmhpZGRlbkZpZWxkTWFwLnZhbHVlcygpKTtcbiAgfVxuXG4gIHVwZGF0ZUhpZGRlbkZpZWxkc09uQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZGVuRmllbGRNYXAuZm9yRWFjaCgoaGlkZGVuRmllbGQsIGlkKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVPbiA9IGhpZGRlbkZpZWxkLmZvcm1FbGVtZW50Py5oaWRkZW5GaWVsZC51cGRhdGVPbjtcbiAgICAgIC8vIOKchSBPbmx5IHByb2Nlc3MgVVBEQVRFIC8gQk9USFxuICAgICAgaWYgKHVwZGF0ZU9uICE9PSAnVVBEQVRFJyAmJiB1cGRhdGVPbiAhPT0gJ0JPVEgnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8g4pyFIFJlY2FsY3VsYXRlIHZhbHVlXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlc29sdmVIaWRkZW5GaWVsZFZhbHVlKFxuICAgICAgICBoaWRkZW5GaWVsZC5mb3JtRWxlbWVudD8uaGlkZGVuRmllbGRcbiAgICAgICk7XG5cbiAgICAgIC8vIOKchSBFbWl0IHJlc3VsdFxuICAgICAgdGhpcy5oaWRkZW5GaWVsZFJlc3VsdHNTdWJqZWN0Lm5leHQoe1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXNvbHZlSGlkZGVuRmllbGRWYWx1ZShoaWRkZW5GaWVsZDoge1xuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsO1xuICAgIHZhbHVlU291cmNlOiBzdHJpbmcgfCBudWxsO1xuICAgIGtleTogc3RyaW5nIHwgbnVsbDtcbiAgfSk6IGFueSB7XG4gICAgaWYgKCFoaWRkZW5GaWVsZD8udmFsdWVTb3VyY2UpIHJldHVybiBudWxsO1xuXG4gICAgc3dpdGNoIChoaWRkZW5GaWVsZC52YWx1ZVNvdXJjZSkge1xuICAgICAgY2FzZSAnQ1VTVE9NX0lOUFVUJzpcbiAgICAgICAgLy8gRGlyZWN0bHkgcmV0dXJuIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgICAgICByZXR1cm4gaGlkZGVuRmllbGQudmFsdWU7XG5cbiAgICAgIGNhc2UgJ0xPQ0FMX1NUT1JBR0UnOlxuICAgICAgICBpZiAoaGlkZGVuRmllbGQua2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGhpZGRlbkZpZWxkLmtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNhc2UgJ1NFU1NJT05fU1RPUkFHRSc6XG4gICAgICAgIGlmIChoaWRkZW5GaWVsZC5rZXkpIHtcbiAgICAgICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShoaWRkZW5GaWVsZC5rZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICBjYXNlICdQUkVERUZJTkVEX1ZBUklBQkxFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVByZWRlZmluZWRWYXJpYWJsZShoaWRkZW5GaWVsZC52YWx1ZSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVByZWRlZmluZWRWYXJpYWJsZSh2YXJpYWJsZTogc3RyaW5nIHwgbnVsbCk6IGFueSB7XG4gICAgaWYgKCF2YXJpYWJsZSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgc3dpdGNoICh2YXJpYWJsZSkge1xuICAgICAgY2FzZSAnQ1VSUkVOVF9EQVRFJzpcbiAgICAgICAgcmV0dXJuIG5vdy50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07IC8vIGUuZy4gXCIyMDI1LTA5LTI5XCJcbiAgICAgIGNhc2UgJ0NVUlJFTlRfVElNRSc6XG4gICAgICAgIHJldHVybiBub3cudG9UaW1lU3RyaW5nKCkuc3BsaXQoJyAnKVswXTsgLy8gZS5nLiBcIjE1OjQyOjE4XCJcbiAgICAgIGNhc2UgJ0NVUlJFTlRfREFURV9USU1FJzpcbiAgICAgICAgcmV0dXJuIG5vdy50b0xvY2FsZVN0cmluZygpOyAvLyBmdWxsIElTTyBkYXRldGltZVxuICAgICAgY2FzZSAnRVBPQ0hfVElNRSc6XG4gICAgICAgIHJldHVybiBub3cuZ2V0VGltZSgpOyAvLyBtaWxsaXNlY29uZHMgc2luY2UgMTk3MFxuICAgICAgY2FzZSAnWUVBUic6XG4gICAgICAgIHJldHVybiBub3cuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNhc2UgJ01PTlRIJzpcbiAgICAgICAgcmV0dXJuIG5vdy5nZXRNb250aCgpICsgMTsgLy8gMS0xMlxuICAgICAgY2FzZSAnREFZJzpcbiAgICAgICAgcmV0dXJuIG5vdy5nZXREYXRlKCk7IC8vIDEtMzFcbiAgICAgIGNhc2UgJ1NVQk1JVFRFRF9CWSc6XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXIgPyB0aGlzLnVzZXIgOiAnVW5rbm93bic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuXG5cblxuXG4gIGV4dHJhY3RTdWJmb3JtSGlkZGVuRmllbGRzKHN1YkZvcm06IGFueSk6IHZvaWQge1xuICAgIGlmICghc3ViRm9ybT8ucm93cykgcmV0dXJuO1xuICBcbiAgICBjb25zdCBoaWRkZW5GaWVsZHM6IGFueVtdID0gW107XG4gIFxuICAgIHN1YkZvcm0ucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xuICAgICAgcm93LmdyaWQ/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gaXRlbT8uZWxlbWVudDtcbiAgXG4gICAgICAgIGlmIChcbiAgICAgICAgICBlbGVtZW50Py5mb3JtRWxlbWVudD8uZWxlbWVudFR5cGUgPT09ICdISURERU5fRklFTEQnICYmXG4gICAgICAgICAgaXRlbT8uc2hvd1xuICAgICAgICApIHtcbiAgICAgICAgICBoaWRkZW5GaWVsZHMucHVzaCh7XG4gICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICAgIGNvbmZpZzogZWxlbWVudC5mb3JtRWxlbWVudC5oaWRkZW5GaWVsZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgXG4gICAgLy8gU3RvcmUgdXNpbmcgc3ViZm9ybSBpZFxuICAgIHRoaXMuc3ViZm9ybUhpZGRlbkZpZWxkc01hcC5zZXQoc3ViRm9ybS5pZCwgaGlkZGVuRmllbGRzKTtcbiAgXG4gIH1cblxuXG4gIHVwZGF0ZVN1YmZvcm1IaWRkZW5GaWVsZHNGcm9tQ2FjaGUoXG4gICAgc3ViRm9ybUlkOiBzdHJpbmcsXG4gICAgc3VibWlzc2lvbjogYW55LFxuICAgIHRyaWdnZXI6ICdTQVZFJyB8ICdVUERBVEUnXG4gICk6IGFueSB7XG4gICAgY29uc3QgaGlkZGVuRmllbGRzID0gdGhpcy5zdWJmb3JtSGlkZGVuRmllbGRzTWFwLmdldChzdWJGb3JtSWQpO1xuICBcbiAgICBpZiAoIWhpZGRlbkZpZWxkcyB8fCAhc3VibWlzc2lvbj8uYW5zd2VycykgcmV0dXJuIHN1Ym1pc3Npb247XG4gIFxuICAgIGhpZGRlbkZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICBjb25zdCBoaWRkZW5Db25maWcgPSBmaWVsZC5jb25maWc7XG4gIFxuICAgICAgaWYgKCFoaWRkZW5Db25maWcpIHJldHVybjtcbiAgXG4gICAgICBjb25zdCB1cGRhdGVPbiA9IGhpZGRlbkNvbmZpZy51cGRhdGVPbjtcbiAgXG4gICAgICBjb25zdCBzaG91bGRVcGRhdGUgPVxuICAgICAgICB1cGRhdGVPbiA9PT0gJ0JPVEgnIHx8XG4gICAgICAgICh1cGRhdGVPbiA9PT0gJ1NBVkUnICYmIHRyaWdnZXIgPT09ICdTQVZFJykgfHxcbiAgICAgICAgKHVwZGF0ZU9uID09PSAnVVBEQVRFJyAmJiB0cmlnZ2VyID09PSAnVVBEQVRFJyk7XG4gIFxuICAgICAgaWYgKCFzaG91bGRVcGRhdGUpIHJldHVybjtcbiAgXG4gICAgICAvLyDinIUgUmVzb2x2ZSB2YWx1ZVxuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlc29sdmVIaWRkZW5GaWVsZFZhbHVlKGhpZGRlbkNvbmZpZyk7XG4gIFxuICAgICAgLy8g4pyFIEZpbmQgYW5zd2VyXG4gICAgICBjb25zdCBhbnN3ZXJPYmogPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgKGFuczogYW55KSA9PiBhbnMucXVlc3Rpb25JZCA9PT0gZmllbGQuaWRcbiAgICAgICk7XG4gIFxuICAgICAgaWYgKGFuc3dlck9iaikge1xuICAgICAgICBpZiAoYW5zd2VyT2JqLmFuc3dlciAhPT0gdmFsdWUpIHtcbiAgICAgICAgICBhbnN3ZXJPYmouYW5zd2VyID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1Ym1pc3Npb24uYW5zd2Vycy5wdXNoKHtcbiAgICAgICAgICBxdWVzdGlvbklkOiBmaWVsZC5pZCxcbiAgICAgICAgICBhbnN3ZXI6IHZhbHVlLFxuICAgICAgICAgIG1heGltdW1Qb3NzaWJsZVNjb3JlOiAwLFxuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgcmV0dXJuIHN1Ym1pc3Npb247XG4gIH1cbiAgXG59XG4iXX0=
|