@dsivd/prestations-ng 17.10.9 → 18.0.0-beta.10
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/CHANGELOG.md +2478 -2466
- package/CONTRIBUTING.md +66 -66
- package/ESLINT_MIGRATION_GUIDE.md +19 -33
- package/MODULES.md +88 -88
- package/MULTI_ETAPES.md +9 -9
- package/README.md +25 -24
- package/README_COMMON.md +10 -10
- package/UPGRADING_V12.md +36 -36
- package/UPGRADING_V13.md +3 -3
- package/UPGRADING_V14.md +2 -2
- package/UPGRADING_V15.md +4 -4
- package/UPGRADING_V16.md +38 -38
- package/UPGRADING_V17.md +51 -51
- package/UPGRADING_V18.md +596 -8
- package/UPGRADING_V8.md +5 -5
- package/abstract-page-component.d.ts +1 -1
- package/dsivd-prestations-ng-18.0.0-beta.10.tgz +0 -0
- package/fesm2022/dsivd-prestations-ng.mjs +903 -868
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-checkables/foehn-checkable-group.component.d.ts +1 -1
- package/foehn-checkables/foehn-checkables.module.d.ts +6 -7
- package/foehn-date-picker/date-picker.helper.d.ts +1 -1
- package/foehn-icons/abstract-icon-component.d.ts +1 -1
- package/foehn-input/foehn-input-string.component.d.ts +1 -1
- package/foehn-input/foehn-input.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
- package/foehn-navigation/abstract-foehn-navigation.component.d.ts +1 -1
- package/foehn-table/foehn-table.component.d.ts +1 -6
- package/foehn-upload/abstract-foehn-uploader.component.d.ts +1 -2
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +1 -3
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +1 -1
- package/index.d.ts +1 -1
- package/index.html +1 -1
- package/package.json +15 -17
- package/prestations-ng-core.module.d.ts +5 -4
- package/sdk-appinfo/application-info.service.d.ts +1 -0
- package/sdk-drafts/drafts.module.d.ts +7 -8
- package/sdk-support-alert/support-alert.module.d.ts +2 -3
- package/dsivd-prestations-ng-17.10.9.tgz +0 -0
- package/esm2022/abstract-page-component.mjs +0 -232
- package/esm2022/directives/currency-formatter.directive.mjs +0 -143
- package/esm2022/directives/formatter.module.mjs +0 -37
- package/esm2022/directives/iban-formatter.directive.mjs +0 -29
- package/esm2022/directives/ide-formatter.directive.mjs +0 -37
- package/esm2022/directives/ndc-formatter.directive.mjs +0 -75
- package/esm2022/dsivd-prestations-ng.mjs +0 -5
- package/esm2022/foehn-address/address.type.mjs +0 -10
- package/esm2022/foehn-address/foehn-address.module.mjs +0 -55
- package/esm2022/foehn-address/foehn-display-address.component.mjs +0 -69
- package/esm2022/foehn-address/foehn-input-address.component.mjs +0 -498
- package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +0 -66
- package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +0 -56
- package/esm2022/foehn-agenda/calendar.type.mjs +0 -3
- package/esm2022/foehn-agenda/current-week.type.mjs +0 -4
- package/esm2022/foehn-agenda/day-slots.type.mjs +0 -3
- package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +0 -75
- package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +0 -242
- package/esm2022/foehn-agenda/foehn-agenda.component.mjs +0 -95
- package/esm2022/foehn-agenda/foehn-agenda.module.mjs +0 -62
- package/esm2022/foehn-agenda/pagination-week.type.mjs +0 -3
- package/esm2022/foehn-agenda/selected-slot.type.mjs +0 -3
- package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +0 -684
- package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +0 -40
- package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +0 -28
- package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +0 -40
- package/esm2022/foehn-boolean/foehn-boolean.module.mjs +0 -33
- package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +0 -177
- package/esm2022/foehn-breadcrumb/breadcrumb.mjs +0 -5
- package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +0 -106
- package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +0 -20
- package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +0 -291
- package/esm2022/foehn-checkables/foehn-checkables.module.mjs +0 -68
- package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +0 -37
- package/esm2022/foehn-checkables/foehn-radio.component.mjs +0 -64
- package/esm2022/foehn-checkables/foehn-select.component.mjs +0 -55
- package/esm2022/foehn-checkables/form-select-option-group.mjs +0 -3
- package/esm2022/foehn-checkables/form-select-option.mjs +0 -3
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal-content.mjs +0 -7
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +0 -40
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +0 -19
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +0 -53
- package/esm2022/foehn-date-picker/date-picker-navigation.helper.mjs +0 -168
- package/esm2022/foehn-date-picker/date-picker.helper.mjs +0 -132
- package/esm2022/foehn-date-picker/day-month.type.mjs +0 -3
- package/esm2022/foehn-date-picker/focused-day.type.mjs +0 -3
- package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +0 -392
- package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +0 -40
- package/esm2022/foehn-date-picker/month-year.type.mjs +0 -3
- package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +0 -97
- package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +0 -36
- package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +0 -84
- package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +0 -20
- package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +0 -37
- package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +0 -32
- package/esm2022/foehn-dropdown-menu/dropdown-menu-group.type.mjs +0 -3
- package/esm2022/foehn-dropdown-menu/dropdown-menu-item.type.mjs +0 -6
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +0 -212
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +0 -21
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +0 -113
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +0 -32
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.type.mjs +0 -3
- package/esm2022/foehn-footer/foehn-footer.component.mjs +0 -130
- package/esm2022/foehn-footer/foehn-footer.module.mjs +0 -19
- package/esm2022/foehn-footer/footer-link.type.mjs +0 -3
- package/esm2022/foehn-form/foehn-form.component.mjs +0 -136
- package/esm2022/foehn-form/foehn-form.module.mjs +0 -32
- package/esm2022/foehn-form/register-ng-model.service.mjs +0 -23
- package/esm2022/foehn-growl/foehn-growl.component.mjs +0 -45
- package/esm2022/foehn-growl/foehn-growl.module.mjs +0 -18
- package/esm2022/foehn-growl/growl-broker.service.mjs +0 -37
- package/esm2022/foehn-growl/growl-message.mjs +0 -9
- package/esm2022/foehn-growl/growl-types.mjs +0 -7
- package/esm2022/foehn-header/foehn-header.component.mjs +0 -159
- package/esm2022/foehn-header/foehn-header.module.mjs +0 -40
- package/esm2022/foehn-header/foehn-skip-link.component.mjs +0 -51
- package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +0 -44
- package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +0 -20
- package/esm2022/foehn-help-modal/foehn-help-modal.type.mjs +0 -2
- package/esm2022/foehn-icons/abstract-icon-component.mjs +0 -12
- package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-check.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-search.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-times.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-user.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icons.module.mjs +0 -139
- package/esm2022/foehn-input/foehn-input-email.component.mjs +0 -74
- package/esm2022/foehn-input/foehn-input-hidden.component.mjs +0 -54
- package/esm2022/foehn-input/foehn-input-number.component.mjs +0 -319
- package/esm2022/foehn-input/foehn-input-password.component.mjs +0 -51
- package/esm2022/foehn-input/foehn-input-phone.component.mjs +0 -99
- package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +0 -116
- package/esm2022/foehn-input/foehn-input-string.component.mjs +0 -27
- package/esm2022/foehn-input/foehn-input-text.component.mjs +0 -69
- package/esm2022/foehn-input/foehn-input-textarea.component.mjs +0 -97
- package/esm2022/foehn-input/foehn-input.component.mjs +0 -418
- package/esm2022/foehn-input/foehn-input.module.mjs +0 -98
- package/esm2022/foehn-input/pattern.const.mjs +0 -16
- package/esm2022/foehn-input-date/foehn-input-date.component.mjs +0 -163
- package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +0 -201
- package/esm2022/foehn-input-time/foehn-input-time.component.mjs +0 -89
- package/esm2022/foehn-list/foehn-list.component.mjs +0 -127
- package/esm2022/foehn-list/foehn-list.module.mjs +0 -19
- package/esm2022/foehn-list/page-change-event.mjs +0 -3
- package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +0 -122
- package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +0 -31
- package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +0 -87
- package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +0 -25
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs +0 -2
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs +0 -3
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +0 -161
- package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +0 -38
- package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +0 -58
- package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +0 -67
- package/esm2022/foehn-misc/foehn-abbr.component.mjs +0 -15
- package/esm2022/foehn-misc/foehn-misc.module.mjs +0 -17
- package/esm2022/foehn-modal/foehn-modal.component.mjs +0 -94
- package/esm2022/foehn-modal/foehn-modal.module.mjs +0 -21
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +0 -287
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +0 -40
- package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +0 -114
- package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +0 -32
- package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +0 -55
- package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +0 -67
- package/esm2022/foehn-navigation/foehn-navigation.module.mjs +0 -37
- package/esm2022/foehn-navigation/foehn-navigation.service.mjs +0 -322
- package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +0 -26
- package/esm2022/foehn-notfound/foehn-notfound.component.mjs +0 -61
- package/esm2022/foehn-notfound/foehn-notfound.module.mjs +0 -20
- package/esm2022/foehn-page/foehn-page-counter.component.mjs +0 -31
- package/esm2022/foehn-page/foehn-page-expiration-timer/current-session-expiration.mjs +0 -3
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +0 -68
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +0 -53
- package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +0 -175
- package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +0 -29
- package/esm2022/foehn-page/foehn-page-modal.component.mjs +0 -54
- package/esm2022/foehn-page/foehn-page-modal.service.mjs +0 -38
- package/esm2022/foehn-page/foehn-page.component.mjs +0 -223
- package/esm2022/foehn-page/foehn-page.module.mjs +0 -101
- package/esm2022/foehn-page/foehn-page.service.mjs +0 -54
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +0 -52
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +0 -23
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +0 -32
- package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +0 -98
- package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +0 -20
- package/esm2022/foehn-recap-section/foehn-recap-section.type.mjs +0 -2
- package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +0 -50
- package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +0 -18
- package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +0 -56
- package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +0 -20
- package/esm2022/foehn-table/foehn-table-column-configuration.mjs +0 -3
- package/esm2022/foehn-table/foehn-table-page-change-event.mjs +0 -3
- package/esm2022/foehn-table/foehn-table.component.mjs +0 -190
- package/esm2022/foehn-table/foehn-table.module.mjs +0 -40
- package/esm2022/foehn-table/row-element.type.mjs +0 -3
- package/esm2022/foehn-table/tableSort.mjs +0 -3
- package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +0 -242
- package/esm2022/foehn-upload/document-reference.mjs +0 -6
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +0 -116
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs +0 -6
- package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +0 -199
- package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +0 -40
- package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +0 -250
- package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +0 -40
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +0 -125
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.type.mjs +0 -6
- package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +0 -163
- package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +0 -178
- package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +0 -44
- package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +0 -83
- package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +0 -21
- package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +0 -66
- package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +0 -7
- package/esm2022/foehn-upload/page-upload-limit.service.mjs +0 -80
- package/esm2022/foehn-upload/pending-upload.type.mjs +0 -3
- package/esm2022/foehn-upload/uploader.helper.mjs +0 -329
- package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +0 -21
- package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +0 -19
- package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +0 -96
- package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +0 -19
- package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +0 -29
- package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +0 -18
- package/esm2022/form-error.mjs +0 -2
- package/esm2022/form-post-response.mjs +0 -10
- package/esm2022/gesdem/gesdem-error-handler.service.mjs +0 -85
- package/esm2022/gesdem/gesdem-event.service.mjs +0 -38
- package/esm2022/gesdem/gesdem-handler.service.mjs +0 -201
- package/esm2022/gesdem/gesdem-loader.guard.mjs +0 -25
- package/esm2022/gesdem/gesdem-statut-utils.mjs +0 -25
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +0 -170
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +0 -227
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +0 -62
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +0 -97
- package/esm2022/gesdem-action-recovery/reprise-info.mjs +0 -4
- package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +0 -241
- package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +0 -36
- package/esm2022/gesdem-error/gesdem-error.component.mjs +0 -96
- package/esm2022/gesdem-error/gesdem-error.module.mjs +0 -36
- package/esm2022/global.const.mjs +0 -5
- package/esm2022/helpers/demande.helper.mjs +0 -19
- package/esm2022/helpers/object.helper.mjs +0 -124
- package/esm2022/i18n-form.mjs +0 -7
- package/esm2022/pipes/currency.pipe.mjs +0 -18
- package/esm2022/pipes/date.pipe.mjs +0 -43
- package/esm2022/pipes/formatIde.pipe.mjs +0 -22
- package/esm2022/pipes/pipes.module.mjs +0 -18
- package/esm2022/prestations-ng-core.module.mjs +0 -31
- package/esm2022/public_api.mjs +0 -288
- package/esm2022/refinf/model/address-type-light.mjs +0 -3
- package/esm2022/refinf/model/canton.mjs +0 -3
- package/esm2022/refinf/model/district.mjs +0 -3
- package/esm2022/refinf/model/municipality.mjs +0 -3
- package/esm2022/refinf/model/place-of-origin.mjs +0 -3
- package/esm2022/refinf/model/postal-locality.mjs +0 -3
- package/esm2022/sdk-appinfo/application-info.mjs +0 -22
- package/esm2022/sdk-appinfo/application-info.service.mjs +0 -146
- package/esm2022/sdk-currency/currency.helper.mjs +0 -34
- package/esm2022/sdk-date/date.helper.mjs +0 -109
- package/esm2022/sdk-dictionary/default-dictionary.mjs +0 -312
- package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +0 -16
- package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +0 -28
- package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +0 -122
- package/esm2022/sdk-drafts/draft.model.mjs +0 -2
- package/esm2022/sdk-drafts/drafts-container.component.mjs +0 -99
- package/esm2022/sdk-drafts/drafts.module.mjs +0 -47
- package/esm2022/sdk-drafts/drafts.service.mjs +0 -51
- package/esm2022/sdk-epayment/model/EPaymentParameters.mjs +0 -2
- package/esm2022/sdk-epayment/pending-payment/pending-payment.component.mjs +0 -24
- package/esm2022/sdk-epayment/sdk-epayment.component.mjs +0 -76
- package/esm2022/sdk-epayment/sdk-epayment.module.mjs +0 -23
- package/esm2022/sdk-epayment/sdk-epayment.service.mjs +0 -51
- package/esm2022/sdk-events-logger/sdk-event-type.mjs +0 -14
- package/esm2022/sdk-events-logger/sdk-event.mjs +0 -3
- package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +0 -43
- package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +0 -113
- package/esm2022/sdk-recaptcha/recaptcha.service.mjs +0 -180
- package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +0 -75
- package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +0 -19
- package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +0 -62
- package/esm2022/sdk-redirect/redirect.component.mjs +0 -55
- package/esm2022/sdk-redirect/sdk-redirect.module.mjs +0 -19
- package/esm2022/sdk-session-info/session-info-data.mjs +0 -6
- package/esm2022/sdk-session-info/session-info-with-application.service.mjs +0 -68
- package/esm2022/sdk-session-info/session-info.service.mjs +0 -50
- package/esm2022/sdk-statistics/sdk-statistics.service.mjs +0 -74
- package/esm2022/sdk-support-alert/support-alert-container.component.mjs +0 -49
- package/esm2022/sdk-support-alert/support-alert.component.mjs +0 -32
- package/esm2022/sdk-support-alert/support-alert.model.mjs +0 -7
- package/esm2022/sdk-support-alert/support-alert.module.mjs +0 -21
- package/esm2022/sdk-support-alert/support-alert.service.mjs +0 -139
- package/esm2022/service-locator.mjs +0 -4
- package/esm2022/supported-browser.mjs +0 -2
- package/esm2022/validation/validation-handler.service.mjs +0 -44
- /package/{public_api.d.ts → public-api.d.ts} +0 -0
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { catchError, finalize, tap } from 'rxjs/operators';
|
|
4
|
-
import { FoehnFormComponent } from '../../foehn-form/foehn-form.component';
|
|
5
|
-
import { GrowlType } from '../../foehn-growl/growl-types';
|
|
6
|
-
import { SdkEventType } from '../../sdk-events-logger/sdk-event-type';
|
|
7
|
-
import { SdkRecaptchaComponent } from '../../sdk-recaptcha/sdk-recaptcha.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../gesdem-action-recovery.service";
|
|
10
|
-
import * as i2 from "../../foehn-growl/growl-broker.service";
|
|
11
|
-
import * as i3 from "../../foehn-confirm-modal/foehn-confirm-modal.service";
|
|
12
|
-
import * as i4 from "../../validation/validation-handler.service";
|
|
13
|
-
import * as i5 from "../../sdk-appinfo/application-info.service";
|
|
14
|
-
import * as i6 from "../../gesdem/gesdem-handler.service";
|
|
15
|
-
import * as i7 from "../../sdk-dictionary/sdk-dictionary.service";
|
|
16
|
-
import * as i8 from "@angular/router";
|
|
17
|
-
import * as i9 from "../../sdk-events-logger/sdk-events-logger.service";
|
|
18
|
-
import * as i10 from "@angular/common";
|
|
19
|
-
import * as i11 from "../../foehn-input/foehn-input-text.component";
|
|
20
|
-
import * as i12 from "../../foehn-form/foehn-form.component";
|
|
21
|
-
import * as i13 from "../../sdk-recaptcha/sdk-recaptcha.component";
|
|
22
|
-
export class GesdemActionRecoveryLoginComponent {
|
|
23
|
-
constructor(recoveryService, growlService, confirmModalService, validationHandler, applicationInfoService, gesDemHandlerService, dictionaryService, router, route, eventsLoggerService) {
|
|
24
|
-
this.recoveryService = recoveryService;
|
|
25
|
-
this.growlService = growlService;
|
|
26
|
-
this.confirmModalService = confirmModalService;
|
|
27
|
-
this.validationHandler = validationHandler;
|
|
28
|
-
this.applicationInfoService = applicationInfoService;
|
|
29
|
-
this.gesDemHandlerService = gesDemHandlerService;
|
|
30
|
-
this.dictionaryService = dictionaryService;
|
|
31
|
-
this.router = router;
|
|
32
|
-
this.route = route;
|
|
33
|
-
this.eventsLoggerService = eventsLoggerService;
|
|
34
|
-
this.missingRecoveryInfos = false;
|
|
35
|
-
this.alreadyTransferred = false;
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
this.otpRecipient = null;
|
|
39
|
-
this.missingRecoveryInfos = false;
|
|
40
|
-
this.applicationInfoService.currentEtapeInfo
|
|
41
|
-
.pipe(tap(currentEtape => {
|
|
42
|
-
if (currentEtape.reprisePossible) {
|
|
43
|
-
this.startRecovery();
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.confirmModalService
|
|
47
|
-
.openConfirmModal({
|
|
48
|
-
title: this.dictionaryService.getKeySync('gesdem-action-recovery-login.expired-session.title'),
|
|
49
|
-
htmlContent: this.dictionaryService.getKeySync('gesdem-action-recovery-login.expired-session.label'),
|
|
50
|
-
okButtonLabel: this.dictionaryService.getKeySync('gesdem-action-recovery-login.expired-session.ok-button'),
|
|
51
|
-
showCancelButton: false,
|
|
52
|
-
closeable: false
|
|
53
|
-
})
|
|
54
|
-
.then(() => {
|
|
55
|
-
// redirect to prestation's home (with window.location to reset the app)
|
|
56
|
-
window.location.href = '';
|
|
57
|
-
},
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
59
|
-
() => { });
|
|
60
|
-
}
|
|
61
|
-
}))
|
|
62
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
63
|
-
.subscribe();
|
|
64
|
-
}
|
|
65
|
-
validateOtp() {
|
|
66
|
-
this.eventsLoggerService.addEvent(SdkEventType.RECOVERY_LOGIN_STARTED);
|
|
67
|
-
if (!this.route.snapshot.queryParams.reCaptchaByPassUUID &&
|
|
68
|
-
!this.recoveryService.hasCaptchaToken()) {
|
|
69
|
-
this.loginForm.reset();
|
|
70
|
-
this.validationHandler.shouldDisplayErrors(true);
|
|
71
|
-
this.validationHandler.updateErrors([
|
|
72
|
-
{
|
|
73
|
-
name: 'recaptcha',
|
|
74
|
-
code: 'recaptcha',
|
|
75
|
-
message: 'Captcha invalide'
|
|
76
|
-
}
|
|
77
|
-
]);
|
|
78
|
-
this.eventsLoggerService.addEvent(SdkEventType.RECOVERY_LOGIN_FAILED);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
this.recoveryService
|
|
82
|
-
.checkRecoveryPassword(this.reference, this.otp)
|
|
83
|
-
.pipe(finalize(() => (this.otp = null)))
|
|
84
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
85
|
-
.subscribe(isPasswordValid => {
|
|
86
|
-
const errors = [];
|
|
87
|
-
if (isPasswordValid) {
|
|
88
|
-
this.eventsLoggerService.addEvent(SdkEventType.RECOVERY_LOGIN_SUCCESS);
|
|
89
|
-
this.gesDemHandlerService
|
|
90
|
-
.retrieve(this.reference, null)
|
|
91
|
-
// eslint-disable-next-line rxjs/no-nested-subscribe,rxjs-angular/prefer-async-pipe
|
|
92
|
-
.subscribe((response) => {
|
|
93
|
-
if (response) {
|
|
94
|
-
this.growlService.addWithTypeAndTimeToDisplayInSeconds(GrowlType.SUCCESS, this.dictionaryService.getKeySync('gesdem-action-recovery-login.save.label', {
|
|
95
|
-
date: this.gesDemHandlerService
|
|
96
|
-
.lastResponse.meta
|
|
97
|
-
.initialisationDateTime
|
|
98
|
-
}), 10);
|
|
99
|
-
}
|
|
100
|
-
const prefix = !!this.gesDemHandlerService.prefix
|
|
101
|
-
?.length
|
|
102
|
-
? `/${this.gesDemHandlerService.prefix}`
|
|
103
|
-
: '';
|
|
104
|
-
this.router.navigateByUrl(`${prefix}/${this.reference}`);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
this.eventsLoggerService.addEvent(SdkEventType.RECOVERY_LOGIN_FAILED);
|
|
109
|
-
if (isPasswordValid === false) {
|
|
110
|
-
errors.push({
|
|
111
|
-
name: 'otp',
|
|
112
|
-
code: 'INVALIDOTP',
|
|
113
|
-
message: this.dictionaryService.getKeySync('gesdem-action-recovery-login.invalid-otp.label')
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
errors.push({
|
|
118
|
-
name: 'recaptcha',
|
|
119
|
-
code: 'recaptcha',
|
|
120
|
-
message: 'Captcha invalide'
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
this.loginForm.reset();
|
|
124
|
-
this.validationHandler.shouldDisplayErrors(true);
|
|
125
|
-
this.validationHandler.updateErrors(errors);
|
|
126
|
-
this.recaptchaComponent?.grecaptcha?.reset();
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
startRecovery() {
|
|
131
|
-
this.recoveryService
|
|
132
|
-
.startRecovery(this.reference)
|
|
133
|
-
.pipe(catchError((response) => {
|
|
134
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
135
|
-
const { error, status } = response;
|
|
136
|
-
this.missingRecoveryInfos =
|
|
137
|
-
status === 404 &&
|
|
138
|
-
error &&
|
|
139
|
-
JSON.parse(error).code === 'ACTION_RECOVERY_NOT_FOUND';
|
|
140
|
-
this.alreadyTransferred =
|
|
141
|
-
status === 409 &&
|
|
142
|
-
error &&
|
|
143
|
-
JSON.parse(error).code === 'ACTION_ALREADY_TRANSFERRED';
|
|
144
|
-
if (!this.missingRecoveryInfos &&
|
|
145
|
-
!this.alreadyTransferred) {
|
|
146
|
-
this.growlService.addWithType(GrowlType.DANGER, this.dictionaryService.getKeySync('gesdem-action-recovery-login.password-generation-failed.label'));
|
|
147
|
-
}
|
|
148
|
-
return throwError(() => true);
|
|
149
|
-
}))
|
|
150
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
151
|
-
.subscribe(otpRecipient => (this.otpRecipient = otpRecipient));
|
|
152
|
-
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GesdemActionRecoveryLoginComponent, deps: [{ token: i1.GesdemActionRecoveryService }, { token: i2.GrowlBrokerService }, { token: i3.FoehnConfirmModalService }, { token: i4.ValidationHandlerService }, { token: i5.ApplicationInfoService }, { token: i6.GesdemHandlerService }, { token: i7.SdkDictionaryService }, { token: i8.Router }, { token: i8.ActivatedRoute }, { token: i9.SdkEventsLoggerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: { reference: "reference", redirectTarget: "redirectTarget" }, viewQueries: [{ propertyName: "loginForm", first: true, predicate: FoehnFormComponent, descendants: true }, { propertyName: "recaptchaComponent", first: true, predicate: SdkRecaptchaComponent, descendants: true }], ngImport: i0, template: "<div class=\"container mt-5\">\n <div class=\"alert alert-danger\" *ngIf=\"missingRecoveryInfos\">\n Vous n'avez pas indiqu\u00E9 d'informations de contact pour la reprise de\n cette demande, merci de contacter le support.\n </div>\n <div class=\"alert alert-danger\" *ngIf=\"alreadyTransferred\">\n La demande que vous essayez de reprendre a d\u00E9j\u00E0 \u00E9t\u00E9 transmise, elle\n n'est plus modifiable.\n </div>\n\n <foehn-form [shouldDisplayAlertSummary]=\"false\" *ngIf=\"otpRecipient\">\n <div class=\"row\">\n <div class=\"col-md-8\">\n <foehn-input-text\n [label]=\"\n 'Veuillez saisir le code envoy\u00E9 par SMS au num\u00E9ro ' +\n otpRecipient\n \"\n [(model)]=\"otp\"\n name=\"otp\"\n [required]=\"true\"\n ></foehn-input-text>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n Pour obtenir un nouveau code, vous devez recliquer sur le\n <a [href]=\"redirectTarget\">lien</a>\n de reprise de la demande\n </div>\n </div>\n\n <br />\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n <captcha></captcha>\n\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-dark float-end\"\n (click)=\"validateOtp()\"\n >\n Suivant\n </button>\n </div>\n </div>\n </foehn-form>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i12.FoehnFormComponent, selector: "foehn-form", inputs: ["shouldDisplayAlertSummary"] }, { kind: "component", type: i13.SdkRecaptchaComponent, selector: "captcha" }] }); }
|
|
155
|
-
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GesdemActionRecoveryLoginComponent, decorators: [{
|
|
157
|
-
type: Component,
|
|
158
|
-
args: [{ selector: 'gesdem-action-recovery-login', template: "<div class=\"container mt-5\">\n <div class=\"alert alert-danger\" *ngIf=\"missingRecoveryInfos\">\n Vous n'avez pas indiqu\u00E9 d'informations de contact pour la reprise de\n cette demande, merci de contacter le support.\n </div>\n <div class=\"alert alert-danger\" *ngIf=\"alreadyTransferred\">\n La demande que vous essayez de reprendre a d\u00E9j\u00E0 \u00E9t\u00E9 transmise, elle\n n'est plus modifiable.\n </div>\n\n <foehn-form [shouldDisplayAlertSummary]=\"false\" *ngIf=\"otpRecipient\">\n <div class=\"row\">\n <div class=\"col-md-8\">\n <foehn-input-text\n [label]=\"\n 'Veuillez saisir le code envoy\u00E9 par SMS au num\u00E9ro ' +\n otpRecipient\n \"\n [(model)]=\"otp\"\n name=\"otp\"\n [required]=\"true\"\n ></foehn-input-text>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n Pour obtenir un nouveau code, vous devez recliquer sur le\n <a [href]=\"redirectTarget\">lien</a>\n de reprise de la demande\n </div>\n </div>\n\n <br />\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n <captcha></captcha>\n\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-dark float-end\"\n (click)=\"validateOtp()\"\n >\n Suivant\n </button>\n </div>\n </div>\n </foehn-form>\n</div>\n" }]
|
|
159
|
-
}], ctorParameters: () => [{ type: i1.GesdemActionRecoveryService }, { type: i2.GrowlBrokerService }, { type: i3.FoehnConfirmModalService }, { type: i4.ValidationHandlerService }, { type: i5.ApplicationInfoService }, { type: i6.GesdemHandlerService }, { type: i7.SdkDictionaryService }, { type: i8.Router }, { type: i8.ActivatedRoute }, { type: i9.SdkEventsLoggerService }], propDecorators: { reference: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], redirectTarget: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], loginForm: [{
|
|
164
|
-
type: ViewChild,
|
|
165
|
-
args: [FoehnFormComponent]
|
|
166
|
-
}], recaptchaComponent: [{
|
|
167
|
-
type: ViewChild,
|
|
168
|
-
args: [SdkRecaptchaComponent]
|
|
169
|
-
}] } });
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1sb2dpbi9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUkxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVVwRixNQUFNLE9BQU8sa0NBQWtDO0lBa0IzQyxZQUNZLGVBQTRDLEVBQzVDLFlBQWdDLEVBQ2hDLG1CQUE2QyxFQUM3QyxpQkFBMkMsRUFDM0Msc0JBQThDLEVBQzlDLG9CQUEwQyxFQUMxQyxpQkFBdUMsRUFDdkMsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLG1CQUEy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QkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyw0QkFBNEIsQ0FBQztZQUU1RCxJQUNJLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtnQkFDMUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQzFCLENBQUM7Z0JBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQ3pCLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQzdCLCtEQUErRCxDQUNsRSxDQUNKLENBQUM7WUFDTixDQUFDO1lBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0w7WUFDRCwwREFBMEQ7YUFDekQsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQzsrR0FoTVEsa0NBQWtDO21HQUFsQyxrQ0FBa0MscUxBT2hDLGtCQUFrQixxRkFHbEIscUJBQXFCLGdEQ2xDcEMsa3VEQW1EQTs7NEZEM0JhLGtDQUFrQztrQkFOOUMsU0FBUzsrQkFFSSw4QkFBOEI7aVpBTXhDLFNBQVM7c0JBRFIsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJN0Isa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuQ29uZmlybU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWNvbmZpcm0tbW9kYWwvZm9laG4tY29uZmlybS1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWZvcm0vZm9laG4tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3Jvd2xUeXBlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtdHlwZXMnO1xuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBTZGtFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9zZGstZXZlbnRzLWxvZ2dlci9zZGstZXZlbnQtdHlwZSc7XG5pbXBvcnQgeyBTZGtFdmVudHNMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWV2ZW50cy1sb2dnZXIvc2RrLWV2ZW50cy1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZGtSZWNhcHRjaGFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZGstcmVjYXB0Y2hhL3Nkay1yZWNhcHRjaGEuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtQWN0aW9uUmVjb3ZlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHZXNkZW1BY3Rpb25SZWNvdmVyeUxvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKVxuICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICByZWRpcmVjdFRhcmdldDogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZChGb2VobkZvcm1Db21wb25lbnQpXG4gICAgbG9naW5Gb3JtOiBGb2VobkZvcm1Db21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKFNka1JlY2FwdGNoYUNvbXBvbmVudClcbiAgICByZWNhcHRjaGFDb21wb25lbnQ6IFNka1JlY2FwdGNoYUNvbXBvbmVudDtcblxuICAgIG1pc3NpbmdSZWNvdmVyeUluZm9zID0gZmFsc2U7XG4gICAgYWxyZWFkeVRyYW5zZmVycmVkID0gZmFsc2U7XG4gICAgb3RwUmVjaXBpZW50OiBzdHJpbmc7XG4gICAgb3RwOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWNvdmVyeVNlcnZpY2U6IEdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBncm93bFNlcnZpY2U6IEdyb3dsQnJva2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maXJtTW9kYWxTZXJ2aWNlOiBGb2VobkNvbmZpcm1Nb2RhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmFsaWRhdGlvbkhhbmRsZXI6IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc0RlbUhhbmRsZXJTZXJ2aWNlOiBHZXNkZW1IYW5kbGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGV2ZW50c0xvZ2dlclNlcnZpY2U6IFNka0V2ZW50c0xvZ2dlclNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdHBSZWNpcGllbnQgPSBudWxsO1xuICAgICAgICB0aGlzLm1pc3NpbmdSZWNvdmVyeUluZm9zID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5jdXJyZW50RXRhcGVJbmZvXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoY3VycmVudEV0YXBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdGFwZS5yZXByaXNlUG9zc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRSZWNvdmVyeSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maXJtTW9kYWxTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9wZW5Db25maXJtTW9kYWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4uZXhwaXJlZC1zZXNzaW9uLnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sQ29udGVudDogdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4uZXhwaXJlZC1zZXNzaW9uLmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBva0J1dHRvbkxhYmVsOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luLmV4cGlyZWQtc2Vzc2lvbi5vay1idXR0b24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VhYmxlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIHByZXN0YXRpb24ncyBob21lICh3aXRoIHdpbmRvdy5sb2NhdGlvbiB0byByZXNldCB0aGUgYXBwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHZhbGlkYXRlT3RwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50c0xvZ2dlclNlcnZpY2UuYWRkRXZlbnQoU2RrRXZlbnRUeXBlLlJFQ09WRVJZX0xPR0lOX1NUQVJURUQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnJlQ2FwdGNoYUJ5UGFzc1VVSUQgJiZcbiAgICAgICAgICAgICF0aGlzLnJlY292ZXJ5U2VydmljZS5oYXNDYXB0Y2hhVG9rZW4oKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyLnNob3VsZERpc3BsYXlFcnJvcnModHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyLnVwZGF0ZUVycm9ycyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVjYXB0Y2hhJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ3JlY2FwdGNoYScsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdDYXB0Y2hhIGludmFsaWRlJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0xvZ2dlclNlcnZpY2UuYWRkRXZlbnQoXG4gICAgICAgICAgICAgICAgU2RrRXZlbnRUeXBlLlJFQ09WRVJZX0xPR0lOX0ZBSUxFRFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWNvdmVyeVNlcnZpY2VcbiAgICAgICAgICAgIC5jaGVja1JlY292ZXJ5UGFzc3dvcmQodGhpcy5yZWZlcmVuY2UsIHRoaXMub3RwKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMub3RwID0gbnVsbCkpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZShpc1Bhc3N3b3JkVmFsaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChpc1Bhc3N3b3JkVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudHNMb2dnZXJTZXJ2aWNlLmFkZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgU2RrRXZlbnRUeXBlLlJFQ09WRVJZX0xPR0lOX1NVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXNEZW1IYW5kbGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJldHJpZXZlKHRoaXMucmVmZXJlbmNlLCBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tbmVzdGVkLXN1YnNjcmliZSxyeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlQW5kVGltZVRvRGlzcGxheUluU2Vjb25kcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3dsVHlwZS5TVUNDRVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luLnNhdmUubGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogdGhpcy5nZXNEZW1IYW5kbGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxhc3RSZXNwb25zZS5tZXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5pdGlhbGlzYXRpb25EYXRlVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPSAhIXRoaXMuZ2VzRGVtSGFuZGxlclNlcnZpY2UucHJlZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYC8ke3RoaXMuZ2VzRGVtSGFuZGxlclNlcnZpY2UucHJlZml4fWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVmaXh9LyR7dGhpcy5yZWZlcmVuY2V9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50c0xvZ2dlclNlcnZpY2UuYWRkRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBTZGtFdmVudFR5cGUuUkVDT1ZFUllfTE9HSU5fRkFJTEVEXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1Bhc3N3b3JkVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ290cCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ0lOVkFMSURPVFAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4uaW52YWxpZC1vdHAubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlY2FwdGNoYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ3JlY2FwdGNoYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0NhcHRjaGEgaW52YWxpZGUnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXIuc2hvdWxkRGlzcGxheUVycm9ycyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uSGFuZGxlci51cGRhdGVFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNhcHRjaGFDb21wb25lbnQ/LmdyZWNhcHRjaGE/LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydFJlY292ZXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlY292ZXJ5U2VydmljZVxuICAgICAgICAgICAgLnN0YXJ0UmVjb3ZlcnkodGhpcy5yZWZlcmVuY2UpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChyZXNwb25zZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9yLCBzdGF0dXMgfTogYW55ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWlzc2luZ1JlY292ZXJ5SW5mb3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID09PSA0MDQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGVycm9yKS5jb2RlID09PSAnQUNUSU9OX1JFQ09WRVJZX05PVF9GT1VORCc7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbHJlYWR5VHJhbnNmZXJyZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID09PSA0MDkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGVycm9yKS5jb2RlID09PSAnQUNUSU9OX0FMUkVBRFlfVFJBTlNGRVJSRUQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLm1pc3NpbmdSZWNvdmVyeUluZm9zICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5hbHJlYWR5VHJhbnNmZXJyZWRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm93bFR5cGUuREFOR0VSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4ucGFzc3dvcmQtZ2VuZXJhdGlvbi1mYWlsZWQubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRydWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKG90cFJlY2lwaWVudCA9PiAodGhpcy5vdHBSZWNpcGllbnQgPSBvdHBSZWNpcGllbnQpKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyIG10LTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJtaXNzaW5nUmVjb3ZlcnlJbmZvc1wiPlxuICAgICAgICBWb3VzIG4nYXZleiBwYXMgaW5kaXF1w6kgZCdpbmZvcm1hdGlvbnMgZGUgY29udGFjdCBwb3VyIGxhIHJlcHJpc2UgZGVcbiAgICAgICAgY2V0dGUgZGVtYW5kZSwgbWVyY2kgZGUgY29udGFjdGVyIGxlIHN1cHBvcnQuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiICpuZ0lmPVwiYWxyZWFkeVRyYW5zZmVycmVkXCI+XG4gICAgICAgIExhIGRlbWFuZGUgcXVlIHZvdXMgZXNzYXlleiBkZSByZXByZW5kcmUgYSBkw6lqw6Agw6l0w6kgdHJhbnNtaXNlLCBlbGxlXG4gICAgICAgIG4nZXN0IHBsdXMgbW9kaWZpYWJsZS5cbiAgICA8L2Rpdj5cblxuICAgIDxmb2Vobi1mb3JtIFtzaG91bGREaXNwbGF5QWxlcnRTdW1tYXJ5XT1cImZhbHNlXCIgKm5nSWY9XCJvdHBSZWNpcGllbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ1ZldWlsbGV6IHNhaXNpciBsZSBjb2RlIGVudm95w6kgcGFyIFNNUyBhdSBudW3DqXJvICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgb3RwUmVjaXBpZW50XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm90cFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJvdHBcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICBQb3VyIG9idGVuaXIgdW4gbm91dmVhdSBjb2RlLCB2b3VzIGRldmV6IHJlY2xpcXVlciBzdXIgbGVcbiAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJyZWRpcmVjdFRhcmdldFwiPmxpZW48L2E+XG4gICAgICAgICAgICAgICAgZGUgcmVwcmlzZSBkZSBsYSBkZW1hbmRlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGJyIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XG4gICAgICAgICAgICAgICAgPGNhcHRjaGE+PC9jYXB0Y2hhPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cIm5leHRCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhcmsgZmxvYXQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlT3RwKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU3VpdmFudFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZm9laG4tZm9ybT5cbjwvZGl2PlxuIl19
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { NavigationStart } from '@angular/router';
|
|
3
|
-
import { combineLatest, merge, of } from 'rxjs';
|
|
4
|
-
import { distinctUntilChanged, filter, first, map, switchMap, tap } from 'rxjs/operators';
|
|
5
|
-
import { FoehnFormComponent } from '../../foehn-form/foehn-form.component';
|
|
6
|
-
import { SdkEventType } from '../../sdk-events-logger/sdk-event-type';
|
|
7
|
-
import { RepriseInfo } from '../reprise-info';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../gesdem-action-recovery.service";
|
|
10
|
-
import * as i2 from "../../validation/validation-handler.service";
|
|
11
|
-
import * as i3 from "../../foehn-page/foehn-page.service";
|
|
12
|
-
import * as i4 from "../../gesdem/gesdem-event.service";
|
|
13
|
-
import * as i5 from "../../gesdem/gesdem-handler.service";
|
|
14
|
-
import * as i6 from "../../sdk-appinfo/application-info.service";
|
|
15
|
-
import * as i7 from "../../sdk-session-info/session-info.service";
|
|
16
|
-
import * as i8 from "@angular/router";
|
|
17
|
-
import * as i9 from "../../sdk-events-logger/sdk-events-logger.service";
|
|
18
|
-
import * as i10 from "../../sdk-dictionary/sdk-dictionary.service";
|
|
19
|
-
import * as i11 from "@angular/common";
|
|
20
|
-
import * as i12 from "../../foehn-input/foehn-input-text.component";
|
|
21
|
-
import * as i13 from "../../foehn-input/foehn-input-email.component";
|
|
22
|
-
import * as i14 from "../../foehn-input/foehn-input-phone.component";
|
|
23
|
-
import * as i15 from "../../foehn-icons/foehn-icon-pencil.component";
|
|
24
|
-
import * as i16 from "../../foehn-form/foehn-form.component";
|
|
25
|
-
import * as i17 from "../../foehn-modal/foehn-modal.component";
|
|
26
|
-
import * as i18 from "../../sdk-dictionary/sdk-dictionary.pipe";
|
|
27
|
-
import * as i19 from "../../pipes/date.pipe";
|
|
28
|
-
export class GesdemActionRecoveryRegistrationComponent {
|
|
29
|
-
constructor(actionRecoveryService, validationHandler, foehnPageService, gesdemEventService, gesdemService, appInfoService, sessionInfoService, router, eventsLoggerService, dictionaryService) {
|
|
30
|
-
this.actionRecoveryService = actionRecoveryService;
|
|
31
|
-
this.validationHandler = validationHandler;
|
|
32
|
-
this.foehnPageService = foehnPageService;
|
|
33
|
-
this.gesdemEventService = gesdemEventService;
|
|
34
|
-
this.gesdemService = gesdemService;
|
|
35
|
-
this.appInfoService = appInfoService;
|
|
36
|
-
this.sessionInfoService = sessionInfoService;
|
|
37
|
-
this.router = router;
|
|
38
|
-
this.eventsLoggerService = eventsLoggerService;
|
|
39
|
-
this.dictionaryService = dictionaryService;
|
|
40
|
-
this.dispatchFormErrors = false;
|
|
41
|
-
this.triggerOnPageChange = false;
|
|
42
|
-
this.model = new RepriseInfo();
|
|
43
|
-
this.mailSent = false;
|
|
44
|
-
this.isVisible = false;
|
|
45
|
-
this.currentInfoReprise = merge(of(undefined), this.gesdemEventService.formInitializationObservable()).pipe(map(() => this.gesdemService.lastResponse?.meta?.infoReprise));
|
|
46
|
-
this.currentEtapeInfo = this.appInfoService.currentEtapeInfo;
|
|
47
|
-
}
|
|
48
|
-
get isModalVisible() {
|
|
49
|
-
return this.isVisible;
|
|
50
|
-
}
|
|
51
|
-
get reference() {
|
|
52
|
-
return this.gesdemService.lastResponse?.meta?.reference;
|
|
53
|
-
}
|
|
54
|
-
ngOnInit() {
|
|
55
|
-
this.isConnectedCyber = this.sessionInfoService.data.pipe(map(sessionInfo => !!sessionInfo && !!sessionInfo.context));
|
|
56
|
-
const isConnectedIamAcv = this.sessionInfoService.data.pipe(map(sessionInfo => !!sessionInfo && !sessionInfo.context));
|
|
57
|
-
this.canContinueLater = combineLatest([
|
|
58
|
-
this.currentEtapeInfo,
|
|
59
|
-
this.isConnectedCyber,
|
|
60
|
-
isConnectedIamAcv
|
|
61
|
-
]).pipe(map(([currentEtapeInfo, isConnectedCyber, connectedIamAcv]) => this.canContinueLaterForEtape(currentEtapeInfo, isConnectedCyber, connectedIamAcv)));
|
|
62
|
-
this.modalTriggerLabel = combineLatest([
|
|
63
|
-
this.currentInfoReprise.pipe(map(repriseInfo => !!repriseInfo), distinctUntilChanged()),
|
|
64
|
-
this.isConnectedCyber,
|
|
65
|
-
this.dictionaryService.getCurrentLanguageCode()
|
|
66
|
-
]).pipe(switchMap(([hasInfoReprise, isConnectedCyber]) => {
|
|
67
|
-
if (isConnectedCyber) {
|
|
68
|
-
return this.dictionaryService.getKey(this.continueLaterConnectedLabel);
|
|
69
|
-
}
|
|
70
|
-
if (hasInfoReprise) {
|
|
71
|
-
return this.dictionaryService.getKey(this.continueLaterAlreadyRegisteredLabel);
|
|
72
|
-
}
|
|
73
|
-
return this.dictionaryService.getKey(this.continueLaterLabel);
|
|
74
|
-
}));
|
|
75
|
-
if (this.triggerOnPageChange) {
|
|
76
|
-
let recoverySuggested = false;
|
|
77
|
-
this.triggerAutomaticallySub = combineLatest([
|
|
78
|
-
this.canContinueLater.pipe(first()),
|
|
79
|
-
this.currentInfoReprise.pipe(map(repriseInfo => !!repriseInfo), distinctUntilChanged()),
|
|
80
|
-
this.isConnectedCyber,
|
|
81
|
-
this.router.events.pipe(filter(e => e instanceof NavigationStart))
|
|
82
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
83
|
-
]).subscribe(([canContinueLater, hasInfoReprise, isConnectedCyber]) => {
|
|
84
|
-
if (isConnectedCyber) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const hasBeenSaved = !!this.gesdemService.lastResponse?.meta?.reference;
|
|
88
|
-
if (canContinueLater &&
|
|
89
|
-
!hasInfoReprise &&
|
|
90
|
-
hasBeenSaved &&
|
|
91
|
-
!recoverySuggested) {
|
|
92
|
-
// stop listening to router event of type NavigationStart, since we will trigger one on next line
|
|
93
|
-
this.triggerAutomaticallySub.unsubscribe();
|
|
94
|
-
// prevent navigation to next page
|
|
95
|
-
this.router.navigate([]);
|
|
96
|
-
this.openModal(false);
|
|
97
|
-
recoverySuggested = true;
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
ngOnDestroy() {
|
|
103
|
-
this.triggerAutomaticallySub?.unsubscribe();
|
|
104
|
-
}
|
|
105
|
-
saveAndOpenModal() {
|
|
106
|
-
this.clearErrors();
|
|
107
|
-
this.gesdemEventService
|
|
108
|
-
.formSentObservable()
|
|
109
|
-
.pipe(first(), filter(resp => !!resp.meta.reference), switchMap(() => this.isConnectedCyber))
|
|
110
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
111
|
-
.subscribe(isConnectedCyber => {
|
|
112
|
-
this.openModal(isConnectedCyber);
|
|
113
|
-
});
|
|
114
|
-
this.foehnPageService.requestFormSave();
|
|
115
|
-
}
|
|
116
|
-
openModal(isConnectedCyber) {
|
|
117
|
-
this.clearErrors();
|
|
118
|
-
this.mailSent = false;
|
|
119
|
-
this.isVisible = true;
|
|
120
|
-
this.eventsLoggerService.addEvent(SdkEventType.RECOVERY_MODAL_OPENED);
|
|
121
|
-
if (!isConnectedCyber) {
|
|
122
|
-
combineLatest([
|
|
123
|
-
this.actionRecoveryService.getDefaultRecoveryValue(this.reference),
|
|
124
|
-
this.currentInfoReprise
|
|
125
|
-
]) // eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
126
|
-
.subscribe(([defaultRepriseInfo, currentRepriseInfo]) => {
|
|
127
|
-
this.model = currentRepriseInfo || defaultRepriseInfo;
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
this.model = null;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
close() {
|
|
135
|
-
this.clearErrors();
|
|
136
|
-
this.updateVisibilityStatus(false);
|
|
137
|
-
}
|
|
138
|
-
sendAndClose() {
|
|
139
|
-
this.actionRecoveryService
|
|
140
|
-
.registerForRecovery(this.reference, this.model)
|
|
141
|
-
.pipe(tap(formRecoveryErrors => {
|
|
142
|
-
this.form.reset();
|
|
143
|
-
this.validationHandler.shouldDisplayErrors(true);
|
|
144
|
-
if (this.dispatchFormErrors) {
|
|
145
|
-
this.validationHandler.updateErrors([
|
|
146
|
-
...formRecoveryErrors,
|
|
147
|
-
...this.gesdemService.lastResponse.errors
|
|
148
|
-
]);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
this.validationHandler.updateErrors(formRecoveryErrors);
|
|
152
|
-
}
|
|
153
|
-
this.form.focusFirstInError();
|
|
154
|
-
const registrationSuccessfull = !formRecoveryErrors.length;
|
|
155
|
-
this.mailSent = registrationSuccessfull;
|
|
156
|
-
if (registrationSuccessfull) {
|
|
157
|
-
this.eventsLoggerService.addEvent(SdkEventType.RECOVERY_REGISTERED);
|
|
158
|
-
// the form could have been updated by the backend on recovery registration
|
|
159
|
-
this.gesdemService
|
|
160
|
-
.retrieve(this.reference, null, this.dispatchFormErrors)
|
|
161
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
162
|
-
.subscribe();
|
|
163
|
-
}
|
|
164
|
-
}))
|
|
165
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
166
|
-
.subscribe();
|
|
167
|
-
}
|
|
168
|
-
updateVisibilityStatus(status) {
|
|
169
|
-
// Store the previous value to handle transitions from one state to another.
|
|
170
|
-
const wasOpen = this.isVisible;
|
|
171
|
-
// In case the modal is closed by another mean.
|
|
172
|
-
this.isVisible = status;
|
|
173
|
-
// Focus back on the trigger. No need for a setTimeout as the trigger should still be in the DOM.
|
|
174
|
-
// Only does it when the modal is closed from a open state to avoid to set
|
|
175
|
-
// the focus when the page loads.
|
|
176
|
-
if (wasOpen && !this.isVisible && this.modalTrigger) {
|
|
177
|
-
this.modalTrigger.nativeElement.focus();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
getPluralMarker(count) {
|
|
181
|
-
return this.dictionaryService.getPluralMarkerSync(count);
|
|
182
|
-
}
|
|
183
|
-
canContinueLaterForEtape(currentEtapeInfo, isConnectedCyber, isConnectedIamAcv) {
|
|
184
|
-
if (isConnectedIamAcv) {
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
// If not connected, take the "reprisePossible" flag from CatPrest
|
|
188
|
-
// into account.
|
|
189
|
-
if (!isConnectedCyber) {
|
|
190
|
-
return currentEtapeInfo && currentEtapeInfo.reprisePossible;
|
|
191
|
-
}
|
|
192
|
-
// If connected, only display the button if the current step if the initial
|
|
193
|
-
// step.
|
|
194
|
-
return (currentEtapeInfo &&
|
|
195
|
-
currentEtapeInfo.idMetierEtape ===
|
|
196
|
-
currentEtapeInfo.idMetierPrestation);
|
|
197
|
-
}
|
|
198
|
-
clearErrors() {
|
|
199
|
-
if (!this.dispatchFormErrors) {
|
|
200
|
-
this.validationHandler.shouldDisplayErrors(true);
|
|
201
|
-
this.validationHandler.updateErrors([]);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GesdemActionRecoveryRegistrationComponent, deps: [{ token: i1.GesdemActionRecoveryService }, { token: i2.ValidationHandlerService }, { token: i3.FoehnPageService }, { token: i4.GesdemEventService }, { token: i5.GesdemHandlerService }, { token: i6.ApplicationInfoService }, { token: i7.SessionInfo }, { token: i8.Router }, { token: i9.SdkEventsLoggerService }, { token: i10.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
205
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GesdemActionRecoveryRegistrationComponent, selector: "gesdem-action-recovery-registration", inputs: { dispatchFormErrors: "dispatchFormErrors", continueLaterLabel: "continueLaterLabel", continueLaterAlreadyRegisteredLabel: "continueLaterAlreadyRegisteredLabel", continueLaterConnectedLabel: "continueLaterConnectedLabel", triggerOnPageChange: "triggerOnPageChange" }, viewQueries: [{ propertyName: "modalTrigger", first: true, predicate: ["modalTrigger"], descendants: true }, { propertyName: "form", first: true, predicate: FoehnFormComponent, descendants: true }], ngImport: i0, template: "<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pe-0 ps-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n [innerHTML]=\"modalTriggerLabel | async\"\n (click)=\"saveAndOpenModal()\"\n #modalTrigger\n></button>\n\n<ng-container *ngIf=\"currentInfoReprise | async as currentInfo\">\n <div\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.current-info.preview'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></div>\n</ng-container>\n\n<foehn-modal\n *ngIf=\"currentEtapeInfo | async as etapeInfo\"\n id=\"action-recovery-registration-modal\"\n [modalSize]=\"!(isConnectedCyber | async) ? 'modal-lg' : 'modal-md'\"\n [modalHeaderText]=\"\n 'gesdem-action-recovery-registration.modalHeaderText' | fromDictionary\n \"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"!!(isConnectedCyber | async)\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info'\n | fromDictionary\n \"\n ></span>\n\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n <foehn-icon-pencil\n class=\"h3\"\n aria-hidden=\"true\"\n [title]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></foehn-icon-pencil>\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></span>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"!(isConnectedCyber | async)\">\n <ng-container\n *ngIf=\"\n currentInfoReprise | async as currentInfo;\n else noCurrentInfo\n \"\n >\n <div\n class=\"alert alert-info\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info'\n | fromDictionary\n : {\n lastRegistration:\n (currentInfo.lastUpdate | displayDate),\n draftDemRetentionDaysPublic:\n etapeInfo.draftDemRetentionDaysPublic?.toString(),\n plural: getPluralMarker(\n etapeInfo.draftDemRetentionDaysPublic\n )\n }\n \"\n ></div>\n\n <div\n class=\"alert alert-info\"\n *ngIf=\"mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.info.sent'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n recoveryMobile: currentInfo.mobile,\n draftDemRetentionDaysPublic:\n etapeInfo.draftDemRetentionDaysPublic?.toString(),\n plural: getPluralMarker(\n etapeInfo.draftDemRetentionDaysPublic\n )\n }\n \"\n ></div>\n </ng-container>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-email\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.email.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.email.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.email\"\n name=\"email\"\n [required]=\"true\"\n ></foehn-input-email>\n\n <foehn-input-phone\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.mobile.label'\n | fromDictionary\n \"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n [required]=\"true\"\n ></foehn-input-phone>\n\n <foehn-input-text\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.referenceInterne\"\n name=\"referenceInterne\"\n [required]=\"false\"\n ></foehn-input-text>\n </foehn-form>\n </ng-container>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ms-md-auto me-md-2 mb-2 mt-2\">\n <button\n id=\"continueLaterModalCancelButton\"\n type=\"button\"\n (click)=\"close()\"\n class=\"btn btn-secondary w-100\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.cancel.button'\n | fromDictionary\n \"\n ></button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ms-md-0 me-md-2 mb-2 mt-2\"\n >\n <button\n id=\"continueLaterModalSaveButton\"\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.save.button'\n | fromDictionary\n \"\n ></button>\n </div>\n </div>\n </div>\n</foehn-modal>\n\n<ng-template #noCurrentInfo>\n <div\n class=\"alert alert-info\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic: (\n currentEtapeInfo | async\n ).draftDemRetentionDaysPublic?.toString(),\n plural: getPluralMarker(\n (currentEtapeInfo | async)\n .draftDemRetentionDaysPublic\n )\n }\n \"\n ></div>\n</ng-template>\n", styles: [".no-text-transform{text-transform:none;cursor:pointer}:host ::ng-deep foehn-icon-pencil .svg-inline--fa{color:#4a4a4b!important;margin-right:10px}\n"], dependencies: [{ kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i12.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i13.FoehnInputEmailComponent, selector: "foehn-input-email" }, { kind: "component", type: i14.FoehnInputPhoneComponent, selector: "foehn-input-phone", inputs: ["acceptInternational", "acceptMobilePhone", "acceptPhone"] }, { kind: "component", type: i15.FoehnIconPencilComponent, selector: "foehn-icon-pencil" }, { kind: "component", type: i16.FoehnFormComponent, selector: "foehn-form", inputs: ["shouldDisplayAlertSummary"] }, { kind: "component", type: i17.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.SdkDictionaryPipe, name: "fromDictionary" }, { kind: "pipe", type: i19.DisplayDatePipe, name: "displayDate" }] }); }
|
|
206
|
-
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GesdemActionRecoveryRegistrationComponent, decorators: [{
|
|
208
|
-
type: Component,
|
|
209
|
-
args: [{ selector: 'gesdem-action-recovery-registration', template: "<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pe-0 ps-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n [innerHTML]=\"modalTriggerLabel | async\"\n (click)=\"saveAndOpenModal()\"\n #modalTrigger\n></button>\n\n<ng-container *ngIf=\"currentInfoReprise | async as currentInfo\">\n <div\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.current-info.preview'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></div>\n</ng-container>\n\n<foehn-modal\n *ngIf=\"currentEtapeInfo | async as etapeInfo\"\n id=\"action-recovery-registration-modal\"\n [modalSize]=\"!(isConnectedCyber | async) ? 'modal-lg' : 'modal-md'\"\n [modalHeaderText]=\"\n 'gesdem-action-recovery-registration.modalHeaderText' | fromDictionary\n \"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"!!(isConnectedCyber | async)\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info'\n | fromDictionary\n \"\n ></span>\n\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n <foehn-icon-pencil\n class=\"h3\"\n aria-hidden=\"true\"\n [title]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></foehn-icon-pencil>\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></span>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"!(isConnectedCyber | async)\">\n <ng-container\n *ngIf=\"\n currentInfoReprise | async as currentInfo;\n else noCurrentInfo\n \"\n >\n <div\n class=\"alert alert-info\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info'\n | fromDictionary\n : {\n lastRegistration:\n (currentInfo.lastUpdate | displayDate),\n draftDemRetentionDaysPublic:\n etapeInfo.draftDemRetentionDaysPublic?.toString(),\n plural: getPluralMarker(\n etapeInfo.draftDemRetentionDaysPublic\n )\n }\n \"\n ></div>\n\n <div\n class=\"alert alert-info\"\n *ngIf=\"mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.info.sent'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n recoveryMobile: currentInfo.mobile,\n draftDemRetentionDaysPublic:\n etapeInfo.draftDemRetentionDaysPublic?.toString(),\n plural: getPluralMarker(\n etapeInfo.draftDemRetentionDaysPublic\n )\n }\n \"\n ></div>\n </ng-container>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-email\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.email.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.email.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.email\"\n name=\"email\"\n [required]=\"true\"\n ></foehn-input-email>\n\n <foehn-input-phone\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.mobile.label'\n | fromDictionary\n \"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n [required]=\"true\"\n ></foehn-input-phone>\n\n <foehn-input-text\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.referenceInterne\"\n name=\"referenceInterne\"\n [required]=\"false\"\n ></foehn-input-text>\n </foehn-form>\n </ng-container>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ms-md-auto me-md-2 mb-2 mt-2\">\n <button\n id=\"continueLaterModalCancelButton\"\n type=\"button\"\n (click)=\"close()\"\n class=\"btn btn-secondary w-100\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.cancel.button'\n | fromDictionary\n \"\n ></button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ms-md-0 me-md-2 mb-2 mt-2\"\n >\n <button\n id=\"continueLaterModalSaveButton\"\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.save.button'\n | fromDictionary\n \"\n ></button>\n </div>\n </div>\n </div>\n</foehn-modal>\n\n<ng-template #noCurrentInfo>\n <div\n class=\"alert alert-info\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic: (\n currentEtapeInfo | async\n ).draftDemRetentionDaysPublic?.toString(),\n plural: getPluralMarker(\n (currentEtapeInfo | async)\n .draftDemRetentionDaysPublic\n )\n }\n \"\n ></div>\n</ng-template>\n", styles: [".no-text-transform{text-transform:none;cursor:pointer}:host ::ng-deep foehn-icon-pencil .svg-inline--fa{color:#4a4a4b!important;margin-right:10px}\n"] }]
|
|
210
|
-
}], ctorParameters: () => [{ type: i1.GesdemActionRecoveryService }, { type: i2.ValidationHandlerService }, { type: i3.FoehnPageService }, { type: i4.GesdemEventService }, { type: i5.GesdemHandlerService }, { type: i6.ApplicationInfoService }, { type: i7.SessionInfo }, { type: i8.Router }, { type: i9.SdkEventsLoggerService }, { type: i10.SdkDictionaryService }], propDecorators: { dispatchFormErrors: [{
|
|
211
|
-
type: Input
|
|
212
|
-
}], continueLaterLabel: [{
|
|
213
|
-
type: Input
|
|
214
|
-
}], continueLaterAlreadyRegisteredLabel: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], continueLaterConnectedLabel: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}], triggerOnPageChange: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], modalTrigger: [{
|
|
221
|
-
type: ViewChild,
|
|
222
|
-
args: ['modalTrigger']
|
|
223
|
-
}], form: [{
|
|
224
|
-
type: ViewChild,
|
|
225
|
-
args: [FoehnFormComponent]
|
|
226
|
-
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24vZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24vZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzFFLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEtBQUssRUFDTCxHQUFHLEVBQ0gsU0FBUyxFQUNULEdBQUcsRUFDTixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUt0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVE5QyxNQUFNLE9BQU8seUNBQXlDO0lBb0NsRCxZQUNZLHFCQUFrRCxFQUNsRCxpQkFBMkMsRUFD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U0FBUzt1QkFBQyxjQUFjO2dCQUl6QixJQUFJO3NCQURILFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBmaXJzdCxcbiAgICBtYXAsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWZvcm0vZm9laG4tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV0YXBlSW5mbyB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRXZlbnRUeXBlIH0gZnJvbSAnLi4vLi4vc2RrLWV2ZW50cy1sb2dnZXIvc2RrLWV2ZW50LXR5cGUnO1xuaW1wb3J0IHsgU2RrRXZlbnRzTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1ldmVudHMtbG9nZ2VyL3Nkay1ldmVudHMtbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi8uLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtQWN0aW9uUmVjb3ZlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcHJpc2VJbmZvIH0gZnJvbSAnLi4vcmVwcmlzZS1pbmZvJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHZXNkZW1BY3Rpb25SZWNvdmVyeVJlZ2lzdHJhdGlvbkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBASW5wdXQoKVxuICAgIGRpc3BhdGNoRm9ybUVycm9ycyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBjb250aW51ZUxhdGVyTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY29udGludWVMYXRlckFscmVhZHlSZWdpc3RlcmVkTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY29udGludWVMYXRlckNvbm5lY3RlZExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHRyaWdnZXJPblBhZ2VDaGFuZ2UgPSBmYWxzZTtcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsVHJpZ2dlcicpXG4gICAgbW9kYWxUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChGb2VobkZvcm1Db21wb25lbnQpXG4gICAgZm9ybTogRm9laG5Gb3JtQ29tcG9uZW50O1xuXG4gICAgbW9kZWwgPSBuZXcgUmVwcmlzZUluZm8oKTtcbiAgICBtYWlsU2VudCA9IGZhbHNlO1xuXG4gICAgY2FuQ29udGludWVMYXRlcjogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBpc0Nvbm5lY3RlZEN5YmVyOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGN1cnJlbnRJbmZvUmVwcmlzZTogT2JzZXJ2YWJsZTxSZXByaXNlSW5mbz47XG4gICAgY3VycmVudEV0YXBlSW5mbzogT2JzZXJ2YWJsZTxFdGFwZUluZm8+O1xuICAgIHRyaWdnZXJBdXRvbWF0aWNhbGx5U3ViOiBTdWJzY3JpcHRpb247XG4gICAgbW9kYWxUcmlnZ2VyTGFiZWw6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25SZWNvdmVyeVNlcnZpY2U6IEdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2YWxpZGF0aW9uSGFuZGxlcjogVmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtRXZlbnRTZXJ2aWNlOiBHZXNkZW1FdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbkluZm9TZXJ2aWNlOiBTZXNzaW9uSW5mbyxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBldmVudHNMb2dnZXJTZXJ2aWNlOiBTZGtFdmVudHNMb2dnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmZvUmVwcmlzZSA9IG1lcmdlKFxuICAgICAgICAgICAgb2YodW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvbk9ic2VydmFibGUoKVxuICAgICAgICApLnBpcGUobWFwKCgpID0+IHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2U/Lm1ldGE/LmluZm9SZXByaXNlKSk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RXRhcGVJbmZvID0gdGhpcy5hcHBJbmZvU2VydmljZS5jdXJyZW50RXRhcGVJbmZvO1xuICAgIH1cblxuICAgIGdldCBpc01vZGFsVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCByZWZlcmVuY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2U/Lm1ldGE/LnJlZmVyZW5jZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZEN5YmVyID0gdGhpcy5zZXNzaW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKHNlc3Npb25JbmZvID0+ICEhc2Vzc2lvbkluZm8gJiYgISFzZXNzaW9uSW5mby5jb250ZXh0KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkSWFtQWN2ID0gdGhpcy5zZXNzaW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKHNlc3Npb25JbmZvID0+ICEhc2Vzc2lvbkluZm8gJiYgIXNlc3Npb25JbmZvLmNvbnRleHQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jYW5Db250aW51ZUxhdGVyID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRFdGFwZUluZm8sXG4gICAgICAgICAgICB0aGlzLmlzQ29ubmVjdGVkQ3liZXIsXG4gICAgICAgICAgICBpc0Nvbm5lY3RlZElhbUFjdlxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbY3VycmVudEV0YXBlSW5mbywgaXNDb25uZWN0ZWRDeWJlciwgY29ubmVjdGVkSWFtQWN2XSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNhbkNvbnRpbnVlTGF0ZXJGb3JFdGFwZShcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV0YXBlSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgaXNDb25uZWN0ZWRDeWJlcixcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkSWFtQWN2XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubW9kYWxUcmlnZ2VyTGFiZWwgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZm9SZXByaXNlLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlcHJpc2VJbmZvID0+ICEhcmVwcmlzZUluZm8pLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLmlzQ29ubmVjdGVkQ3liZXIsXG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZUNvZGUoKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbaGFzSW5mb1JlcHJpc2UsIGlzQ29ubmVjdGVkQ3liZXJdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQ29ubmVjdGVkQ3liZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250aW51ZUxhdGVyQ29ubmVjdGVkTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhhc0luZm9SZXByaXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGludWVMYXRlckFscmVhZHlSZWdpc3RlcmVkTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5KHRoaXMuY29udGludWVMYXRlckxhYmVsKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlck9uUGFnZUNoYW5nZSkge1xuICAgICAgICAgICAgbGV0IHJlY292ZXJ5U3VnZ2VzdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJBdXRvbWF0aWNhbGx5U3ViID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5Db250aW51ZUxhdGVyLnBpcGUoZmlyc3QoKSksXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5mb1JlcHJpc2UucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlcHJpc2VJbmZvID0+ICEhcmVwcmlzZUluZm8pLFxuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29ubmVjdGVkQ3liZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgXSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChbY2FuQ29udGludWVMYXRlciwgaGFzSW5mb1JlcHJpc2UsIGlzQ29ubmVjdGVkQ3liZXJdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0Nvbm5lY3RlZEN5YmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNCZWVuU2F2ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgISF0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlPy5tZXRhPy5yZWZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbkNvbnRpbnVlTGF0ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFoYXNJbmZvUmVwcmlzZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmVlblNhdmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhcmVjb3ZlcnlTdWdnZXN0ZWRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdG9wIGxpc3RlbmluZyB0byByb3V0ZXIgZXZlbnQgb2YgdHlwZSBOYXZpZ2F0aW9uU3RhcnQsIHNpbmNlIHdlIHdpbGwgdHJpZ2dlciBvbmUgb24gbmV4dCBsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJBdXRvbWF0aWNhbGx5U3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IG5hdmlnYXRpb24gdG8gbmV4dCBwYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyeVN1Z2dlc3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudHJpZ2dlckF1dG9tYXRpY2FsbHlTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgc2F2ZUFuZE9wZW5Nb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhckVycm9ycygpO1xuICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZVxuICAgICAgICAgICAgLmZvcm1TZW50T2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihyZXNwID0+ICEhcmVzcC5tZXRhLnJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaXNDb25uZWN0ZWRDeWJlcilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoaXNDb25uZWN0ZWRDeWJlciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoaXNDb25uZWN0ZWRDeWJlcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvZWhuUGFnZVNlcnZpY2UucmVxdWVzdEZvcm1TYXZlKCk7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKGlzQ29ubmVjdGVkQ3liZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhckVycm9ycygpO1xuICAgICAgICB0aGlzLm1haWxTZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmV2ZW50c0xvZ2dlclNlcnZpY2UuYWRkRXZlbnQoU2RrRXZlbnRUeXBlLlJFQ09WRVJZX01PREFMX09QRU5FRCk7XG5cbiAgICAgICAgaWYgKCFpc0Nvbm5lY3RlZEN5YmVyKSB7XG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblJlY292ZXJ5U2VydmljZS5nZXREZWZhdWx0UmVjb3ZlcnlWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEluZm9SZXByaXNlXG4gICAgICAgICAgICBdKSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW2RlZmF1bHRSZXByaXNlSW5mbywgY3VycmVudFJlcHJpc2VJbmZvXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gY3VycmVudFJlcHJpc2VJbmZvIHx8IGRlZmF1bHRSZXByaXNlSW5mbztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJFcnJvcnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5U3RhdHVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBzZW5kQW5kQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uUmVjb3ZlcnlTZXJ2aWNlXG4gICAgICAgICAgICAucmVnaXN0ZXJGb3JSZWNvdmVyeSh0aGlzLnJlZmVyZW5jZSwgdGhpcy5tb2RlbClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcChmb3JtUmVjb3ZlcnlFcnJvcnMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uSGFuZGxlci5zaG91bGREaXNwbGF5RXJyb3JzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNwYXRjaEZvcm1FcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXIudXBkYXRlRXJyb3JzKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5mb3JtUmVjb3ZlcnlFcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uSGFuZGxlci51cGRhdGVFcnJvcnMoZm9ybVJlY292ZXJ5RXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5mb2N1c0ZpcnN0SW5FcnJvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvblN1Y2Nlc3NmdWxsID0gIWZvcm1SZWNvdmVyeUVycm9ycy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFpbFNlbnQgPSByZWdpc3RyYXRpb25TdWNjZXNzZnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uU3VjY2Vzc2Z1bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRzTG9nZ2VyU2VydmljZS5hZGRFdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGtFdmVudFR5cGUuUkVDT1ZFUllfUkVHSVNURVJFRFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGNvdWxkIGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBiYWNrZW5kIG9uIHJlY292ZXJ5IHJlZ2lzdHJhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXNkZW1TZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJldHJpZXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEZvcm1FcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmlzaWJpbGl0eVN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIHZhbHVlIHRvIGhhbmRsZSB0cmFuc2l0aW9ucyBmcm9tIG9uZSBzdGF0ZSB0byBhbm90aGVyLlxuICAgICAgICBjb25zdCB3YXNPcGVuID0gdGhpcy5pc1Zpc2libGU7XG5cbiAgICAgICAgLy8gSW4gY2FzZSB0aGUgbW9kYWwgaXMgY2xvc2VkIGJ5IGFub3RoZXIgbWVhbi5cbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBzdGF0dXM7XG5cbiAgICAgICAgLy8gRm9jdXMgYmFjayBvbiB0aGUgdHJpZ2dlci4gTm8gbmVlZCBmb3IgYSBzZXRUaW1lb3V0IGFzIHRoZSB0cmlnZ2VyIHNob3VsZCBzdGlsbCBiZSBpbiB0aGUgRE9NLlxuICAgICAgICAvLyBPbmx5IGRvZXMgaXQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkIGZyb20gYSBvcGVuIHN0YXRlIHRvIGF2b2lkIHRvIHNldFxuICAgICAgICAvLyB0aGUgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy5cbiAgICAgICAgaWYgKHdhc09wZW4gJiYgIXRoaXMuaXNWaXNpYmxlICYmIHRoaXMubW9kYWxUcmlnZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsVHJpZ2dlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQbHVyYWxNYXJrZXIoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldFBsdXJhbE1hcmtlclN5bmMoY291bnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuQ29udGludWVMYXRlckZvckV0YXBlKFxuICAgICAgICBjdXJyZW50RXRhcGVJbmZvOiBFdGFwZUluZm8sXG4gICAgICAgIGlzQ29ubmVjdGVkQ3liZXI6IGJvb2xlYW4sXG4gICAgICAgIGlzQ29ubmVjdGVkSWFtQWN2OiBib29sZWFuXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0Nvbm5lY3RlZElhbUFjdikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgbm90IGNvbm5lY3RlZCwgdGFrZSB0aGUgXCJyZXByaXNlUG9zc2libGVcIiBmbGFnIGZyb20gQ2F0UHJlc3RcbiAgICAgICAgLy8gaW50byBhY2NvdW50LlxuICAgICAgICBpZiAoIWlzQ29ubmVjdGVkQ3liZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50RXRhcGVJbmZvICYmIGN1cnJlbnRFdGFwZUluZm8ucmVwcmlzZVBvc3NpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgY29ubmVjdGVkLCBvbmx5IGRpc3BsYXkgdGhlIGJ1dHRvbiBpZiB0aGUgY3VycmVudCBzdGVwIGlmIHRoZSBpbml0aWFsXG4gICAgICAgIC8vIHN0ZXAuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvICYmXG4gICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyRXRhcGUgPT09XG4gICAgICAgICAgICAgICAgY3VycmVudEV0YXBlSW5mby5pZE1ldGllclByZXN0YXRpb25cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyRXJyb3JzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzcGF0Y2hGb3JtRXJyb3JzKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyLnNob3VsZERpc3BsYXlFcnJvcnModHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyLnVwZGF0ZUVycm9ycyhbXSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgaWQ9XCJjb250aW51ZUxhdGVyQnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBwZS0wIHBzLTAgbm8tdGV4dC10cmFuc2Zvcm1cIlxuICAgICpuZ0lmPVwiY2FuQ29udGludWVMYXRlciB8IGFzeW5jXCJcbiAgICBbaW5uZXJIVE1MXT1cIm1vZGFsVHJpZ2dlckxhYmVsIHwgYXN5bmNcIlxuICAgIChjbGljayk9XCJzYXZlQW5kT3Blbk1vZGFsKClcIlxuICAgICNtb2RhbFRyaWdnZXJcbj48L2J1dHRvbj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRJbmZvUmVwcmlzZSB8IGFzeW5jIGFzIGN1cnJlbnRJbmZvXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LXJlZ2lzdHJhdGlvbi5jdXJyZW50LWluZm8ucHJldmlldydcbiAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyeU1haWw6IGN1cnJlbnRJbmZvLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVnaXN0cmF0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRJbmZvLmxhc3RVcGRhdGUgfCBkaXNwbGF5RGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxmb2Vobi1tb2RhbFxuICAgICpuZ0lmPVwiY3VycmVudEV0YXBlSW5mbyB8IGFzeW5jIGFzIGV0YXBlSW5mb1wiXG4gICAgaWQ9XCJhY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLW1vZGFsXCJcbiAgICBbbW9kYWxTaXplXT1cIiEoaXNDb25uZWN0ZWRDeWJlciB8IGFzeW5jKSA/ICdtb2RhbC1sZycgOiAnbW9kYWwtbWQnXCJcbiAgICBbbW9kYWxIZWFkZXJUZXh0XT1cIlxuICAgICAgICAnZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24ubW9kYWxIZWFkZXJUZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgXCJcbiAgICBbaXNNb2RhbFZpc2libGVdPVwiaXNNb2RhbFZpc2libGVcIlxuICAgIChpc01vZGFsVmlzaWJsZUNoYW5nZSk9XCJ1cGRhdGVWaXNpYmlsaXR5U3RhdHVzKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIShpc0Nvbm5lY3RlZEN5YmVyIHwgYXN5bmMpXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LXJlZ2lzdHJhdGlvbi5jb25uZWN0ZWQuaW5mbydcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICA8YSBocmVmPVwiLzEwMDAwMi9kZW1hbmRlcy9zZWFyY2gvTUlORS9JTklUSUFMXCI+XG4gICAgICAgICAgICA8Zm9laG4taWNvbi1wZW5jaWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cImgzXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLmNvbm5lY3RlZC5pbmZvLmRyYWZ0LWxpbmstdGV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvZm9laG4taWNvbi1wZW5jaWw+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LXJlZ2lzdHJhdGlvbi5jb25uZWN0ZWQuaW5mby5kcmFmdC1saW5rLXRleHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGlzQ29ubmVjdGVkQ3liZXIgfCBhc3luYylcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjdXJyZW50SW5mb1JlcHJpc2UgfCBhc3luYyBhcyBjdXJyZW50SW5mbztcbiAgICAgICAgICAgICAgICBlbHNlIG5vQ3VycmVudEluZm9cbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIW1haWxTZW50XCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24ubm90LWNvbm5lY3RlZC5jdXJyZW50LWluZm8nXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlZ2lzdHJhdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRJbmZvLmxhc3RVcGRhdGUgfCBkaXNwbGF5RGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnREZW1SZXRlbnRpb25EYXlzUHVibGljOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGFwZUluZm8uZHJhZnREZW1SZXRlbnRpb25EYXlzUHVibGljPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbDogZ2V0UGx1cmFsTWFya2VyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGFwZUluZm8uZHJhZnREZW1SZXRlbnRpb25EYXlzUHVibGljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWFpbFNlbnRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LXJlZ2lzdHJhdGlvbi5ub3QtY29ubmVjdGVkLmluZm8uc2VudCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyeU1haWw6IGN1cnJlbnRJbmZvLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5TW9iaWxlOiBjdXJyZW50SW5mby5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnREZW1SZXRlbnRpb25EYXlzUHVibGljOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGFwZUluZm8uZHJhZnREZW1SZXRlbnRpb25EYXlzUHVibGljPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbDogZ2V0UGx1cmFsTWFya2VyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGFwZUluZm8uZHJhZnREZW1SZXRlbnRpb25EYXlzUHVibGljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxmb2Vobi1mb3JtICpuZ0lmPVwiIW1haWxTZW50XCIgW3Nob3VsZERpc3BsYXlBbGVydFN1bW1hcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgIDxmb2Vobi1pbnB1dC1lbWFpbFxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLm5vdC1jb25uZWN0ZWQuZW1haWwubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LXJlZ2lzdHJhdGlvbi5ub3QtY29ubmVjdGVkLmVtYWlsLmhlbHAtdGV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsLmVtYWlsXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LWVtYWlsPlxuXG4gICAgICAgICAgICA8Zm9laG4taW5wdXQtcGhvbmVcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LXJlZ2lzdHJhdGlvbi5ub3QtY29ubmVjdGVkLm1vYmlsZS5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFthY2NlcHRJbnRlcm5hdGlvbmFsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFthY2NlcHRNb2JpbGVQaG9uZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYWNjZXB0UGhvbmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsLm1vYmlsZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtcGhvbmU+XG5cbiAgICAgICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1yZWdpc3RyYXRpb24ubm90LWNvbm5lY3RlZC5yZWZlcmVuY2UtaW50ZXJuZS5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLm5vdC1jb25uZWN0ZWQucmVmZXJlbmNlLWludGVybmUuaGVscC10ZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWwucmVmZXJlbmNlSW50ZXJuZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInJlZmVyZW5jZUludGVybmVcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuICAgICAgICA8L2ZvZWhuLWZvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IG1vZGFsLWZvb3RlciBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLW1kLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy1tZC1hdXRvIG1lLW1kLTIgbWItMiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cImNvbnRpbnVlTGF0ZXJNb2RhbENhbmNlbEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLmNhbmNlbC5idXR0b24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIShpc0Nvbm5lY3RlZEN5YmVyIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLW1kLTAgbWUtbWQtMiBtYi0yIG10LTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb250aW51ZUxhdGVyTW9kYWxTYXZlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kQW5kQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbWFpbFNlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLnNhdmUuYnV0dG9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2ZvZWhuLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI25vQ3VycmVudEluZm8+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgJ2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktcmVnaXN0cmF0aW9uLm5vdC1jb25uZWN0ZWQubm90LXJlZ2lzdGVyZWQuaW5mbydcbiAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFmdERlbVJldGVudGlvbkRheXNQdWJsaWM6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFdGFwZUluZm8gfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICApLmRyYWZ0RGVtUmV0ZW50aW9uRGF5c1B1YmxpYz8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsOiBnZXRQbHVyYWxNYXJrZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudEV0YXBlSW5mbyB8IGFzeW5jKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kcmFmdERlbVJldGVudGlvbkRheXNQdWJsaWNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICA+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|