@hmcts/ccd-case-ui-toolkit 7.0.20 → 7.0.21-CVE-fix
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app.config.mjs +93 -0
- package/esm2022/lib/components/banners/alert/alert-icon-class.pipe.mjs +25 -0
- package/esm2022/lib/components/banners/alert/alert.component.mjs +94 -0
- package/esm2022/lib/components/banners/alert/alert.module.mjs +32 -0
- package/esm2022/lib/components/banners/banners.module.mjs +32 -0
- package/esm2022/lib/components/banners/notification-banner/notification-banner.component.mjs +119 -0
- package/esm2022/lib/components/banners/notification-banner/notification-banner.module.mjs +19 -0
- package/esm2022/lib/components/body/body.component.mjs +20 -0
- package/esm2022/lib/components/body/body.module.mjs +20 -0
- package/esm2022/lib/components/footer/footer.component.mjs +109 -0
- package/esm2022/lib/components/footer/footers.module.mjs +25 -0
- package/esm2022/lib/components/form/date-input/date-input.component.mjs +342 -0
- package/esm2022/lib/components/form/form.module.mjs +29 -0
- package/esm2022/lib/components/header/header-bar/header-bar.component.mjs +98 -0
- package/esm2022/lib/components/header/headers.module.mjs +25 -0
- package/esm2022/lib/components/header/navigation/navigation-item.component.mjs +44 -0
- package/esm2022/lib/components/header/navigation/navigation.component.mjs +25 -0
- package/esm2022/lib/components/header/phase/phase.component.mjs +48 -0
- package/esm2022/lib/components/tabs/tab.component.mjs +31 -0
- package/esm2022/lib/components/tabs/tabs.component.mjs +82 -0
- package/esm2022/lib/components/tabs/tabs.module.mjs +38 -0
- package/esm2022/lib/shared/commons/address-validation-constants.mjs +13 -0
- package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +19 -0
- package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +46 -0
- package/esm2022/lib/shared/commons/constants.mjs +13 -0
- package/esm2022/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +42 -0
- package/esm2022/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +35 -0
- package/esm2022/lib/shared/components/activity/activity.component.mjs +158 -0
- package/esm2022/lib/shared/components/activity/activity.module.mjs +55 -0
- package/esm2022/lib/shared/components/case-editor/case-access-utils/index.mjs +105 -0
- package/esm2022/lib/shared/components/case-editor/case-create/case-create.component.mjs +95 -0
- package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +463 -0
- package/esm2022/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +131 -0
- package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +140 -0
- package/esm2022/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +70 -0
- package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +779 -0
- package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +560 -0
- package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +118 -0
- package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +96 -0
- package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +82 -0
- package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +166 -0
- package/esm2022/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +84 -0
- package/esm2022/lib/shared/components/case-editor/domain/confirmation.model.mjs +25 -0
- package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +9 -0
- package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +7 -0
- package/esm2022/lib/shared/components/case-editor/domain/wizard-page.model.mjs +33 -0
- package/esm2022/lib/shared/components/case-editor/domain/wizard.model.mjs +55 -0
- package/esm2022/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +98 -0
- package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +19 -0
- package/esm2022/lib/shared/components/case-editor/services/case-worker.service.mjs +35 -0
- package/esm2022/lib/shared/components/case-editor/services/case.notifier.mjs +53 -0
- package/esm2022/lib/shared/components/case-editor/services/cases.service.mjs +302 -0
- package/esm2022/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +42 -0
- package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +153 -0
- package/esm2022/lib/shared/components/case-editor/services/event-trigger.service.mjs +18 -0
- package/esm2022/lib/shared/components/case-editor/services/judicial-worker.service.mjs +35 -0
- package/esm2022/lib/shared/components/case-editor/services/page-validation.service.mjs +54 -0
- package/esm2022/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +40 -0
- package/esm2022/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +117 -0
- package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +215 -0
- package/esm2022/lib/shared/components/case-header/case-header.component.mjs +64 -0
- package/esm2022/lib/shared/components/case-header/case-header.module.mjs +25 -0
- package/esm2022/lib/shared/components/case-history/case-history.component.mjs +252 -0
- package/esm2022/lib/shared/components/case-history/case-history.module.mjs +36 -0
- package/esm2022/lib/shared/components/case-history/domain/case-history.model.mjs +37 -0
- package/esm2022/lib/shared/components/case-history/services/case-history.service.mjs +43 -0
- package/esm2022/lib/shared/components/case-list/case-list.component.mjs +373 -0
- package/esm2022/lib/shared/components/case-list/case-list.module.mjs +31 -0
- package/esm2022/lib/shared/components/case-list-filters/case-list-filters.component.mjs +56 -0
- package/esm2022/lib/shared/components/case-list-filters/case-list-filters.module.mjs +39 -0
- package/esm2022/lib/shared/components/case-timeline/case-timeline.component.mjs +115 -0
- package/esm2022/lib/shared/components/case-timeline/case-timeline.module.mjs +32 -0
- package/esm2022/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +251 -0
- package/esm2022/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +310 -0
- package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +74 -0
- package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +155 -0
- package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +710 -0
- package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +60 -0
- package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +255 -0
- package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +210 -0
- package/esm2022/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +49 -0
- package/esm2022/lib/shared/components/case-viewer/case-view/case-view.component.mjs +106 -0
- package/esm2022/lib/shared/components/case-viewer/case-viewer.component.mjs +136 -0
- package/esm2022/lib/shared/components/case-viewer/case-viewer.module.mjs +98 -0
- package/esm2022/lib/shared/components/case-viewer/printer/case-printer.component.mjs +116 -0
- package/esm2022/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +61 -0
- package/esm2022/lib/shared/components/case-viewer/services/case.resolver.mjs +141 -0
- package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +70 -0
- package/esm2022/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +11 -0
- package/esm2022/lib/shared/components/create-case-filters/create-case-filters.component.mjs +288 -0
- package/esm2022/lib/shared/components/create-case-filters/create-case-filters.module.mjs +44 -0
- package/esm2022/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +59 -0
- package/esm2022/lib/shared/components/dialogs/dialogs.module.mjs +51 -0
- package/esm2022/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +61 -0
- package/esm2022/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +59 -0
- package/esm2022/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +63 -0
- package/esm2022/lib/shared/components/error/callback-errors.component.mjs +147 -0
- package/esm2022/lib/shared/components/error/domain/error-context.mjs +5 -0
- package/esm2022/lib/shared/components/error/errors.module.mjs +33 -0
- package/esm2022/lib/shared/components/error-message/error-message.component.mjs +44 -0
- package/esm2022/lib/shared/components/error-message/error-message.module.mjs +41 -0
- package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +61 -0
- package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +55 -0
- package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +111 -0
- package/esm2022/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +69 -0
- package/esm2022/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +60 -0
- package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +55 -0
- package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +97 -0
- package/esm2022/lib/shared/components/event-start/event-start.component.mjs +55 -0
- package/esm2022/lib/shared/components/event-start/event-start.module.mjs +71 -0
- package/esm2022/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +31 -0
- package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +177 -0
- package/esm2022/lib/shared/components/event-trigger/event-trigger.component.mjs +117 -0
- package/esm2022/lib/shared/components/event-trigger/event-trigger.module.mjs +37 -0
- package/esm2022/lib/shared/components/loading-spinner/loading-spinner.component.mjs +25 -0
- package/esm2022/lib/shared/components/loading-spinner/loading-spinner.module.mjs +29 -0
- package/esm2022/lib/shared/components/pagination/pagination.component.mjs +261 -0
- package/esm2022/lib/shared/components/pagination/pagination.module.mjs +26 -0
- package/esm2022/lib/shared/components/palette/address/address-option.model.mjs +23 -0
- package/esm2022/lib/shared/components/palette/address/write-address-field.component.mjs +287 -0
- package/esm2022/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +30 -0
- package/esm2022/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +44 -0
- package/esm2022/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +84 -0
- package/esm2022/lib/shared/components/palette/base-field/field-read-label.component.mjs +85 -0
- package/esm2022/lib/shared/components/palette/base-field/field-read.component.mjs +89 -0
- package/esm2022/lib/shared/components/palette/base-field/field-write.component.mjs +77 -0
- package/esm2022/lib/shared/components/palette/base-field/payment-field.component.mjs +37 -0
- package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +182 -0
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.mjs +48 -0
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.mjs +49 -0
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +356 -0
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +155 -0
- package/esm2022/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +93 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +191 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +302 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +208 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +169 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +224 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +311 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +202 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +355 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +268 -0
- package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +516 -0
- package/esm2022/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +43 -0
- package/esm2022/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +43 -0
- package/esm2022/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +111 -0
- package/esm2022/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +79 -0
- package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +255 -0
- package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +704 -0
- package/esm2022/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +32 -0
- package/esm2022/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +125 -0
- package/esm2022/lib/shared/components/palette/collection/collection-create-checker.service.mjs +42 -0
- package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +78 -0
- package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs +449 -0
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +380 -0
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +50 -0
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +75 -0
- package/esm2022/lib/shared/components/palette/complex/read-complex-field.component.mjs +70 -0
- package/esm2022/lib/shared/components/palette/complex/write-complex-field.component.mjs +173 -0
- package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +25 -0
- package/esm2022/lib/shared/components/palette/date/write-date-container-field.component.mjs +33 -0
- package/esm2022/lib/shared/components/palette/date/write-date-field.component.mjs +77 -0
- package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +314 -0
- package/esm2022/lib/shared/components/palette/document/document-url.pipe.mjs +25 -0
- package/esm2022/lib/shared/components/palette/document/file-upload-progress.guard.mjs +31 -0
- package/esm2022/lib/shared/components/palette/document/file-upload-state.service.mjs +17 -0
- package/esm2022/lib/shared/components/palette/document/read-document-field.component.mjs +87 -0
- package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +404 -0
- package/esm2022/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +18 -0
- package/esm2022/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +36 -0
- package/esm2022/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +125 -0
- package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +43 -0
- package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +147 -0
- package/esm2022/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +25 -0
- package/esm2022/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +42 -0
- package/esm2022/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +125 -0
- package/esm2022/lib/shared/components/palette/email/read-email-field.component.mjs +35 -0
- package/esm2022/lib/shared/components/palette/email/write-email-field.component.mjs +74 -0
- package/esm2022/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +23 -0
- package/esm2022/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +26 -0
- package/esm2022/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +107 -0
- package/esm2022/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +18 -0
- package/esm2022/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +26 -0
- package/esm2022/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +96 -0
- package/esm2022/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +16 -0
- package/esm2022/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +98 -0
- package/esm2022/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +225 -0
- package/esm2022/lib/shared/components/palette/history/event-log/event-log.component.mjs +72 -0
- package/esm2022/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +48 -0
- package/esm2022/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +253 -0
- package/esm2022/lib/shared/components/palette/label/label-field.component.mjs +50 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +112 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +194 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +543 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +214 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +287 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +69 -0
- package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +208 -0
- package/esm2022/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +67 -0
- package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +169 -0
- package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +138 -0
- package/esm2022/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +27 -0
- package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +237 -0
- package/esm2022/lib/shared/components/palette/markdown/markdown-component.module.mjs +29 -0
- package/esm2022/lib/shared/components/palette/markdown/markdown.component.mjs +44 -0
- package/esm2022/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +127 -0
- package/esm2022/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +49 -0
- package/esm2022/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +79 -0
- package/esm2022/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +45 -0
- package/esm2022/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +127 -0
- package/esm2022/lib/shared/components/palette/number/read-number-field.component.mjs +24 -0
- package/esm2022/lib/shared/components/palette/number/write-number-field.component.mjs +74 -0
- package/esm2022/lib/shared/components/palette/order-summary/fee-value.model.mjs +4 -0
- package/esm2022/lib/shared/components/palette/order-summary/fee.model.mjs +8 -0
- package/esm2022/lib/shared/components/palette/order-summary/order-summary.model.mjs +6 -0
- package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +73 -0
- package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +44 -0
- package/esm2022/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +44 -0
- package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +87 -0
- package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +91 -0
- package/esm2022/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +53 -0
- package/esm2022/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +34 -0
- package/esm2022/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +396 -0
- package/esm2022/lib/shared/components/palette/palette.module.mjs +291 -0
- package/esm2022/lib/shared/components/palette/palette.service.mjs +153 -0
- package/esm2022/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +24 -0
- package/esm2022/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +22 -0
- package/esm2022/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +74 -0
- package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +43 -0
- package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +149 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +66 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +61 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +292 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +330 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +23 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +164 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +77 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +111 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +201 -0
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +106 -0
- package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +24 -0
- package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +45 -0
- package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +125 -0
- package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +22 -0
- package/esm2022/lib/shared/components/palette/text/read-text-field.component.mjs +24 -0
- package/esm2022/lib/shared/components/palette/text/write-text-field.component.mjs +78 -0
- package/esm2022/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +24 -0
- package/esm2022/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +89 -0
- package/esm2022/lib/shared/components/palette/unsupported-field.component.mjs +17 -0
- package/esm2022/lib/shared/components/palette/utils/dash.pipe.mjs +16 -0
- package/esm2022/lib/shared/components/palette/utils/date.pipe.mjs +133 -0
- package/esm2022/lib/shared/components/palette/utils/field-label.pipe.mjs +30 -0
- package/esm2022/lib/shared/components/palette/utils/first-error.pipe.mjs +62 -0
- package/esm2022/lib/shared/components/palette/utils/is-compound.pipe.mjs +43 -0
- package/esm2022/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +22 -0
- package/esm2022/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +32 -0
- package/esm2022/lib/shared/components/palette/utils/is-read-only.pipe.mjs +22 -0
- package/esm2022/lib/shared/components/palette/utils/utils.module.mjs +71 -0
- package/esm2022/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +34 -0
- package/esm2022/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +36 -0
- package/esm2022/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +102 -0
- package/esm2022/lib/shared/components/palette/yes-no/yes-no.service.mjs +50 -0
- package/esm2022/lib/shared/components/search-filters/domain/search-input.model.mjs +15 -0
- package/esm2022/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +62 -0
- package/esm2022/lib/shared/components/search-filters/search-filters.component.mjs +337 -0
- package/esm2022/lib/shared/components/search-filters/search-filters.module.mjs +44 -0
- package/esm2022/lib/shared/components/search-result/search-result.component.mjs +834 -0
- package/esm2022/lib/shared/components/search-result/search-result.module.mjs +46 -0
- package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +494 -0
- package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +42 -0
- package/esm2022/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +169 -0
- package/esm2022/lib/shared/directives/conditional-show/conditional-show.module.mjs +33 -0
- package/esm2022/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +201 -0
- package/esm2022/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +17 -0
- package/esm2022/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +48 -0
- package/esm2022/lib/shared/directives/focus-element/focus-element.directive.mjs +38 -0
- package/esm2022/lib/shared/directives/focus-element/focus-element.module.mjs +21 -0
- package/esm2022/lib/shared/directives/substitutor/label-substitutor.directive.mjs +88 -0
- package/esm2022/lib/shared/directives/substitutor/label-substitutor.module.mjs +30 -0
- package/esm2022/lib/shared/directives/substitutor/services/placeholder.service.mjs +209 -0
- package/esm2022/lib/shared/domain/activity/activity.model.mjs +17 -0
- package/esm2022/lib/shared/domain/addresses/address.model.mjs +11 -0
- package/esm2022/lib/shared/domain/alert/alert.model.mjs +5 -0
- package/esm2022/lib/shared/domain/case-details.model.mjs +13 -0
- package/esm2022/lib/shared/domain/case-event-data.model.mjs +11 -0
- package/esm2022/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +8 -0
- package/esm2022/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +10 -0
- package/esm2022/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +10 -0
- package/esm2022/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +124 -0
- package/esm2022/lib/shared/domain/case-flag/flag-type.model.mjs +37 -0
- package/esm2022/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +18 -0
- package/esm2022/lib/shared/domain/case-view/case-event-trigger.model.mjs +34 -0
- package/esm2022/lib/shared/domain/case-view/case-print-document.model.mjs +6 -0
- package/esm2022/lib/shared/domain/case-view/case-tab.model.mjs +17 -0
- package/esm2022/lib/shared/domain/case-view/case-view-event.model.mjs +16 -0
- package/esm2022/lib/shared/domain/case-view/case-view-trigger.model.mjs +7 -0
- package/esm2022/lib/shared/domain/case-view/case-view.model.mjs +27 -0
- package/esm2022/lib/shared/domain/definition/access-control-list.model.mjs +8 -0
- package/esm2022/lib/shared/domain/definition/banner.model.mjs +8 -0
- package/esm2022/lib/shared/domain/definition/case-event.model.mjs +11 -0
- package/esm2022/lib/shared/domain/definition/case-field.model.mjs +216 -0
- package/esm2022/lib/shared/domain/definition/case-state.model.mjs +7 -0
- package/esm2022/lib/shared/domain/definition/case-type-lite.model.mjs +10 -0
- package/esm2022/lib/shared/domain/definition/case-type.model.mjs +20 -0
- package/esm2022/lib/shared/domain/definition/event-case-field.model.mjs +6 -0
- package/esm2022/lib/shared/domain/definition/field-type.model.mjs +30 -0
- package/esm2022/lib/shared/domain/definition/fixed-list-item.model.mjs +6 -0
- package/esm2022/lib/shared/domain/definition/jurisdiction.model.mjs +8 -0
- package/esm2022/lib/shared/domain/document/document-data.model.mjs +27 -0
- package/esm2022/lib/shared/domain/draft.model.mjs +16 -0
- package/esm2022/lib/shared/domain/http/http-error.model.mjs +43 -0
- package/esm2022/lib/shared/domain/organisation/organisation-converter.mjs +42 -0
- package/esm2022/lib/shared/domain/pagination-metadata.model.mjs +5 -0
- package/esm2022/lib/shared/domain/profile/profile.model.mjs +33 -0
- package/esm2022/lib/shared/domain/search/field.model.mjs +17 -0
- package/esm2022/lib/shared/domain/search/search-result-view-column.model.mjs +9 -0
- package/esm2022/lib/shared/domain/search/search-result-view-item.model.mjs +18 -0
- package/esm2022/lib/shared/domain/search/search-result-view.model.mjs +26 -0
- package/esm2022/lib/shared/domain/search/sorting/sort-parameters.mjs +9 -0
- package/esm2022/lib/shared/domain/workbasket/workbasket-input.model.mjs +11 -0
- package/esm2022/lib/shared/fixture/case-field-builder.mjs +67 -0
- package/esm2022/lib/shared/pipes/case-reference/case-reference.pipe.mjs +33 -0
- package/esm2022/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +31 -0
- package/esm2022/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +32 -0
- package/esm2022/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +27 -0
- package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +39 -0
- package/esm2022/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +173 -0
- package/esm2022/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +31 -0
- package/esm2022/lib/shared/pipes/complex/fields-filter.pipe.mjs +105 -0
- package/esm2022/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +16 -0
- package/esm2022/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +28 -0
- package/esm2022/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +28 -0
- package/esm2022/lib/shared/pipes/pipes.module.mjs +64 -0
- package/esm2022/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +24 -0
- package/esm2022/lib/shared/services/activity/activity.polling.service.mjs +122 -0
- package/esm2022/lib/shared/services/activity/activity.service.mjs +85 -0
- package/esm2022/lib/shared/services/addresses/addresses.service.mjs +65 -0
- package/esm2022/lib/shared/services/alert/alert.service.mjs +157 -0
- package/esm2022/lib/shared/services/auth/auth.service.mjs +35 -0
- package/esm2022/lib/shared/services/banners/banners.service.mjs +35 -0
- package/esm2022/lib/shared/services/browser/browser.service.mjs +24 -0
- package/esm2022/lib/shared/services/case-fields/case-field.service.mjs +34 -0
- package/esm2022/lib/shared/services/case-fields/format-translator.service.mjs +242 -0
- package/esm2022/lib/shared/services/case-file-view/case-file-view.service.mjs +48 -0
- package/esm2022/lib/shared/services/case-flag/case-flag-refdata.service.mjs +104 -0
- package/esm2022/lib/shared/services/common-data-service/common-data-service.mjs +29 -0
- package/esm2022/lib/shared/services/definitions/definitions.module.mjs +19 -0
- package/esm2022/lib/shared/services/definitions/definitions.service.mjs +32 -0
- package/esm2022/lib/shared/services/document-management/document-management.service.mjs +114 -0
- package/esm2022/lib/shared/services/draft/draft.service.mjs +89 -0
- package/esm2022/lib/shared/services/error/error-notifier.service.mjs +16 -0
- package/esm2022/lib/shared/services/eventStatusService/event-status.service.mjs +21 -0
- package/esm2022/lib/shared/services/fields/fields.purger.mjs +304 -0
- package/esm2022/lib/shared/services/fields/fields.utils.mjs +615 -0
- package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +91 -0
- package/esm2022/lib/shared/services/form/form-error.service.mjs +46 -0
- package/esm2022/lib/shared/services/form/form-validators.service.mjs +56 -0
- package/esm2022/lib/shared/services/form/form-value.service.mjs +552 -0
- package/esm2022/lib/shared/services/http/http-error.service.mjs +67 -0
- package/esm2022/lib/shared/services/http/http.service.mjs +95 -0
- package/esm2022/lib/shared/services/jurisdiction/jurisdiction.service.mjs +36 -0
- package/esm2022/lib/shared/services/loading/loading.module.mjs +22 -0
- package/esm2022/lib/shared/services/loading/loading.service.mjs +35 -0
- package/esm2022/lib/shared/services/navigation/navigation-notifier.service.mjs +16 -0
- package/esm2022/lib/shared/services/order/order.service.mjs +37 -0
- package/esm2022/lib/shared/services/organisation/organisation.service.mjs +57 -0
- package/esm2022/lib/shared/services/profile/profile.notifier.mjs +17 -0
- package/esm2022/lib/shared/services/profile/profile.service.mjs +36 -0
- package/esm2022/lib/shared/services/request/request.options.builder.mjs +61 -0
- package/esm2022/lib/shared/services/router/router-helper.service.mjs +20 -0
- package/esm2022/lib/shared/services/search/search.service.mjs +96 -0
- package/esm2022/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +71 -0
- package/esm2022/lib/shared/services/session/session-storage.service.mjs +34 -0
- package/esm2022/lib/shared/services/utils/retry/retry.service.mjs +87 -0
- package/esm2022/lib/shared/services/window/window.service.mjs +40 -0
- package/esm2022/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +57 -0
- package/esm2022/lib/shared/test/test-route-snapshot-builder.mjs +38 -0
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +36099 -0
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -0
- package/lib/shared/components/case-editor/case-editor.module.d.ts +0 -25
- package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
- package/lib/shared/components/case-header/case-header.module.d.ts +0 -8
- package/lib/shared/components/case-header/case-header.module.d.ts.map +1 -1
- package/lib/shared/components/case-history/case-history.module.d.ts +0 -12
- package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
- package/lib/shared/components/case-list/case-list.module.d.ts +0 -11
- package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +0 -11
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts +0 -11
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts +0 -36
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
- package/lib/shared/components/pagination/pagination.module.d.ts +0 -8
- package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
- package/lib/shared/components/palette/address/write-address-field.component.d.ts +1 -2
- package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +0 -1
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +1 -2
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts +1 -2
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +0 -10
- package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.module.d.ts +0 -148
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/components/search-filters/search-filters.module.d.ts +0 -11
- package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
- package/lib/shared/components/search-result/search-result.module.d.ts +0 -15
- package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +0 -10
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
- package/package.json +5 -11
- package/esm2020/lib/app.config.mjs +0 -45
- package/esm2020/lib/components/banners/alert/alert-icon-class.pipe.mjs +0 -25
- package/esm2020/lib/components/banners/alert/alert.component.mjs +0 -95
- package/esm2020/lib/components/banners/alert/alert.module.mjs +0 -32
- package/esm2020/lib/components/banners/banners.module.mjs +0 -32
- package/esm2020/lib/components/banners/notification-banner/notification-banner.component.mjs +0 -120
- package/esm2020/lib/components/banners/notification-banner/notification-banner.module.mjs +0 -19
- package/esm2020/lib/components/body/body.component.mjs +0 -20
- package/esm2020/lib/components/body/body.module.mjs +0 -20
- package/esm2020/lib/components/footer/footer.component.mjs +0 -105
- package/esm2020/lib/components/footer/footers.module.mjs +0 -25
- package/esm2020/lib/components/form/date-input/date-input.component.mjs +0 -331
- package/esm2020/lib/components/form/form.module.mjs +0 -29
- package/esm2020/lib/components/header/header-bar/header-bar.component.mjs +0 -97
- package/esm2020/lib/components/header/headers.module.mjs +0 -25
- package/esm2020/lib/components/header/navigation/navigation-item.component.mjs +0 -41
- package/esm2020/lib/components/header/navigation/navigation.component.mjs +0 -24
- package/esm2020/lib/components/header/phase/phase.component.mjs +0 -45
- package/esm2020/lib/components/tabs/tab.component.mjs +0 -28
- package/esm2020/lib/components/tabs/tabs.component.mjs +0 -79
- package/esm2020/lib/components/tabs/tabs.module.mjs +0 -38
- package/esm2020/lib/shared/commons/address-validation-constants.mjs +0 -13
- package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +0 -19
- package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +0 -47
- package/esm2020/lib/shared/commons/constants.mjs +0 -13
- package/esm2020/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +0 -39
- package/esm2020/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +0 -33
- package/esm2020/lib/shared/components/activity/activity.component.mjs +0 -151
- package/esm2020/lib/shared/components/activity/activity.module.mjs +0 -55
- package/esm2020/lib/shared/components/case-editor/case-access-utils/index.mjs +0 -105
- package/esm2020/lib/shared/components/case-editor/case-create/case-create.component.mjs +0 -87
- package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +0 -432
- package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +0 -125
- package/esm2020/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +0 -135
- package/esm2020/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +0 -69
- package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +0 -751
- package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +0 -542
- package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +0 -213
- package/esm2020/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +0 -86
- package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +0 -80
- package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +0 -153
- package/esm2020/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +0 -77
- package/esm2020/lib/shared/components/case-editor/domain/confirmation.model.mjs +0 -21
- package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +0 -4
- package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +0 -3
- package/esm2020/lib/shared/components/case-editor/domain/wizard-page.model.mjs +0 -26
- package/esm2020/lib/shared/components/case-editor/domain/wizard.model.mjs +0 -54
- package/esm2020/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +0 -93
- package/esm2020/lib/shared/components/case-editor/services/case-flag-state.service.mjs +0 -19
- package/esm2020/lib/shared/components/case-editor/services/case-worker.service.mjs +0 -32
- package/esm2020/lib/shared/components/case-editor/services/case.notifier.mjs +0 -51
- package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +0 -294
- package/esm2020/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +0 -41
- package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +0 -143
- package/esm2020/lib/shared/components/case-editor/services/event-trigger.service.mjs +0 -20
- package/esm2020/lib/shared/components/case-editor/services/judicial-worker.service.mjs +0 -32
- package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +0 -53
- package/esm2020/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +0 -39
- package/esm2020/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +0 -117
- package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +0 -209
- package/esm2020/lib/shared/components/case-header/case-header.component.mjs +0 -61
- package/esm2020/lib/shared/components/case-header/case-header.module.mjs +0 -33
- package/esm2020/lib/shared/components/case-history/case-history.component.mjs +0 -242
- package/esm2020/lib/shared/components/case-history/case-history.module.mjs +0 -64
- package/esm2020/lib/shared/components/case-history/domain/case-history.model.mjs +0 -29
- package/esm2020/lib/shared/components/case-history/services/case-history.service.mjs +0 -40
- package/esm2020/lib/shared/components/case-list/case-list.component.mjs +0 -362
- package/esm2020/lib/shared/components/case-list/case-list.module.mjs +0 -47
- package/esm2020/lib/shared/components/case-list-filters/case-list-filters.component.mjs +0 -52
- package/esm2020/lib/shared/components/case-list-filters/case-list-filters.module.mjs +0 -64
- package/esm2020/lib/shared/components/case-timeline/case-timeline.component.mjs +0 -109
- package/esm2020/lib/shared/components/case-timeline/case-timeline.module.mjs +0 -52
- package/esm2020/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +0 -247
- package/esm2020/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +0 -298
- package/esm2020/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +0 -72
- package/esm2020/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +0 -141
- package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +0 -681
- package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +0 -58
- package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +0 -241
- package/esm2020/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +0 -199
- package/esm2020/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +0 -47
- package/esm2020/lib/shared/components/case-viewer/case-view/case-view.component.mjs +0 -98
- package/esm2020/lib/shared/components/case-viewer/case-viewer.component.mjs +0 -128
- package/esm2020/lib/shared/components/case-viewer/case-viewer.module.mjs +0 -191
- package/esm2020/lib/shared/components/case-viewer/printer/case-printer.component.mjs +0 -110
- package/esm2020/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +0 -60
- package/esm2020/lib/shared/components/case-viewer/services/case.resolver.mjs +0 -131
- package/esm2020/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +0 -64
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +0 -8
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters.component.mjs +0 -275
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters.module.mjs +0 -44
- package/esm2020/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +0 -57
- package/esm2020/lib/shared/components/dialogs/dialogs.module.mjs +0 -51
- package/esm2020/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +0 -59
- package/esm2020/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +0 -57
- package/esm2020/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +0 -61
- package/esm2020/lib/shared/components/error/callback-errors.component.mjs +0 -148
- package/esm2020/lib/shared/components/error/domain/error-context.mjs +0 -3
- package/esm2020/lib/shared/components/error/errors.module.mjs +0 -33
- package/esm2020/lib/shared/components/error-message/error-message.component.mjs +0 -43
- package/esm2020/lib/shared/components/error-message/error-message.module.mjs +0 -41
- package/esm2020/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +0 -59
- package/esm2020/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +0 -53
- package/esm2020/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +0 -104
- package/esm2020/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +0 -68
- package/esm2020/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +0 -58
- package/esm2020/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +0 -53
- package/esm2020/lib/shared/components/event-start/event-guard/event-start.guard.mjs +0 -94
- package/esm2020/lib/shared/components/event-start/event-start.component.mjs +0 -49
- package/esm2020/lib/shared/components/event-start/event-start.module.mjs +0 -71
- package/esm2020/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +0 -29
- package/esm2020/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +0 -168
- package/esm2020/lib/shared/components/event-trigger/event-trigger.component.mjs +0 -111
- package/esm2020/lib/shared/components/event-trigger/event-trigger.module.mjs +0 -37
- package/esm2020/lib/shared/components/loading-spinner/loading-spinner.component.mjs +0 -27
- package/esm2020/lib/shared/components/loading-spinner/loading-spinner.module.mjs +0 -29
- package/esm2020/lib/shared/components/pagination/pagination.component.mjs +0 -262
- package/esm2020/lib/shared/components/pagination/pagination.module.mjs +0 -35
- package/esm2020/lib/shared/components/palette/address/address-option.model.mjs +0 -21
- package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +0 -282
- package/esm2020/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +0 -31
- package/esm2020/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +0 -44
- package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +0 -83
- package/esm2020/lib/shared/components/palette/base-field/field-read-label.component.mjs +0 -86
- package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +0 -85
- package/esm2020/lib/shared/components/palette/base-field/field-write.component.mjs +0 -74
- package/esm2020/lib/shared/components/palette/base-field/payment-field.component.mjs +0 -35
- package/esm2020/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +0 -171
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.mjs +0 -48
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.mjs +0 -48
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +0 -340
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +0 -153
- package/esm2020/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +0 -94
- package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +0 -190
- package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +0 -288
- package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +0 -207
- package/esm2020/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +0 -165
- package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +0 -219
- package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +0 -306
- package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +0 -200
- package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +0 -343
- package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +0 -267
- package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +0 -510
- package/esm2020/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +0 -41
- package/esm2020/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +0 -41
- package/esm2020/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +0 -109
- package/esm2020/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +0 -77
- package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +0 -246
- package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +0 -686
- package/esm2020/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +0 -32
- package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +0 -122
- package/esm2020/lib/shared/components/palette/collection/collection-create-checker.service.mjs +0 -42
- package/esm2020/lib/shared/components/palette/collection/read-collection-field.component.mjs +0 -81
- package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +0 -443
- package/esm2020/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +0 -379
- package/esm2020/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +0 -53
- package/esm2020/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +0 -78
- package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +0 -73
- package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +0 -171
- package/esm2020/lib/shared/components/palette/date/read-date-field.component.mjs +0 -28
- package/esm2020/lib/shared/components/palette/date/write-date-container-field.component.mjs +0 -33
- package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +0 -76
- package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +0 -309
- package/esm2020/lib/shared/components/palette/document/document-url.pipe.mjs +0 -24
- package/esm2020/lib/shared/components/palette/document/file-upload-progress.guard.mjs +0 -29
- package/esm2020/lib/shared/components/palette/document/file-upload-state.service.mjs +0 -16
- package/esm2020/lib/shared/components/palette/document/read-document-field.component.mjs +0 -81
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +0 -383
- package/esm2020/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +0 -18
- package/esm2020/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +0 -36
- package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +0 -124
- package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +0 -43
- package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +0 -145
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +0 -25
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +0 -42
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +0 -124
- package/esm2020/lib/shared/components/palette/email/read-email-field.component.mjs +0 -35
- package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +0 -73
- package/esm2020/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +0 -23
- package/esm2020/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +0 -26
- package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +0 -106
- package/esm2020/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +0 -18
- package/esm2020/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +0 -26
- package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +0 -95
- package/esm2020/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +0 -16
- package/esm2020/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +0 -97
- package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +0 -225
- package/esm2020/lib/shared/components/palette/history/event-log/event-log.component.mjs +0 -72
- package/esm2020/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +0 -45
- package/esm2020/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +0 -242
- package/esm2020/lib/shared/components/palette/label/label-field.component.mjs +0 -50
- package/esm2020/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +0 -108
- package/esm2020/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +0 -189
- package/esm2020/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +0 -530
- package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +0 -204
- package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +0 -280
- package/esm2020/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +0 -66
- package/esm2020/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +0 -201
- package/esm2020/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +0 -22
- package/esm2020/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +0 -163
- package/esm2020/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +0 -132
- package/esm2020/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +0 -27
- package/esm2020/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +0 -229
- package/esm2020/lib/shared/components/palette/markdown/markdown-component.module.mjs +0 -40
- package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +0 -43
- package/esm2020/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +0 -123
- package/esm2020/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +0 -47
- package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +0 -78
- package/esm2020/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +0 -45
- package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +0 -126
- package/esm2020/lib/shared/components/palette/number/read-number-field.component.mjs +0 -24
- package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +0 -73
- package/esm2020/lib/shared/components/palette/order-summary/fee-value.model.mjs +0 -3
- package/esm2020/lib/shared/components/palette/order-summary/fee.model.mjs +0 -4
- package/esm2020/lib/shared/components/palette/order-summary/order-summary.model.mjs +0 -3
- package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +0 -73
- package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +0 -43
- package/esm2020/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +0 -44
- package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +0 -83
- package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +0 -87
- package/esm2020/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +0 -56
- package/esm2020/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +0 -33
- package/esm2020/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +0 -384
- package/esm2020/lib/shared/components/palette/palette.module.mjs +0 -738
- package/esm2020/lib/shared/components/palette/palette.service.mjs +0 -155
- package/esm2020/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +0 -24
- package/esm2020/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +0 -22
- package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +0 -73
- package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +0 -42
- package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +0 -144
- package/esm2020/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +0 -64
- package/esm2020/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +0 -60
- package/esm2020/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +0 -281
- package/esm2020/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +0 -327
- package/esm2020/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +0 -22
- package/esm2020/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +0 -164
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +0 -74
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +0 -107
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +0 -201
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +0 -101
- package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +0 -21
- package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +0 -38
- package/esm2020/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +0 -121
- package/esm2020/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +0 -22
- package/esm2020/lib/shared/components/palette/text/read-text-field.component.mjs +0 -24
- package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +0 -77
- package/esm2020/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +0 -24
- package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +0 -87
- package/esm2020/lib/shared/components/palette/unsupported-field.component.mjs +0 -17
- package/esm2020/lib/shared/components/palette/utils/dash.pipe.mjs +0 -16
- package/esm2020/lib/shared/components/palette/utils/date.pipe.mjs +0 -132
- package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +0 -29
- package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +0 -59
- package/esm2020/lib/shared/components/palette/utils/is-compound.pipe.mjs +0 -43
- package/esm2020/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +0 -21
- package/esm2020/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +0 -31
- package/esm2020/lib/shared/components/palette/utils/is-read-only.pipe.mjs +0 -21
- package/esm2020/lib/shared/components/palette/utils/utils.module.mjs +0 -71
- package/esm2020/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +0 -34
- package/esm2020/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +0 -34
- package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +0 -100
- package/esm2020/lib/shared/components/palette/yes-no/yes-no.service.mjs +0 -50
- package/esm2020/lib/shared/components/search-filters/domain/search-input.model.mjs +0 -10
- package/esm2020/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +0 -58
- package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +0 -326
- package/esm2020/lib/shared/components/search-filters/search-filters.module.mjs +0 -71
- package/esm2020/lib/shared/components/search-result/search-result.component.mjs +0 -815
- package/esm2020/lib/shared/components/search-result/search-result.module.mjs +0 -82
- package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +0 -479
- package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +0 -67
- package/esm2020/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +0 -164
- package/esm2020/lib/shared/directives/conditional-show/conditional-show.module.mjs +0 -33
- package/esm2020/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +0 -200
- package/esm2020/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +0 -19
- package/esm2020/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +0 -47
- package/esm2020/lib/shared/directives/focus-element/focus-element.directive.mjs +0 -36
- package/esm2020/lib/shared/directives/focus-element/focus-element.module.mjs +0 -21
- package/esm2020/lib/shared/directives/substitutor/label-substitutor.directive.mjs +0 -82
- package/esm2020/lib/shared/directives/substitutor/label-substitutor.module.mjs +0 -30
- package/esm2020/lib/shared/directives/substitutor/services/placeholder.service.mjs +0 -200
- package/esm2020/lib/shared/domain/activity/activity.model.mjs +0 -10
- package/esm2020/lib/shared/domain/addresses/address.model.mjs +0 -13
- package/esm2020/lib/shared/domain/alert/alert.model.mjs +0 -3
- package/esm2020/lib/shared/domain/case-details.model.mjs +0 -4
- package/esm2020/lib/shared/domain/case-event-data.model.mjs +0 -4
- package/esm2020/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +0 -3
- package/esm2020/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +0 -4
- package/esm2020/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +0 -7
- package/esm2020/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +0 -117
- package/esm2020/lib/shared/domain/case-flag/flag-type.model.mjs +0 -28
- package/esm2020/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +0 -10
- package/esm2020/lib/shared/domain/case-view/case-event-trigger.model.mjs +0 -23
- package/esm2020/lib/shared/domain/case-view/case-print-document.model.mjs +0 -3
- package/esm2020/lib/shared/domain/case-view/case-tab.model.mjs +0 -12
- package/esm2020/lib/shared/domain/case-view/case-view-event.model.mjs +0 -4
- package/esm2020/lib/shared/domain/case-view/case-view-trigger.model.mjs +0 -3
- package/esm2020/lib/shared/domain/case-view/case-view.model.mjs +0 -17
- package/esm2020/lib/shared/domain/definition/access-control-list.model.mjs +0 -3
- package/esm2020/lib/shared/domain/definition/banner.model.mjs +0 -3
- package/esm2020/lib/shared/domain/definition/case-event.model.mjs +0 -3
- package/esm2020/lib/shared/domain/definition/case-field.model.mjs +0 -198
- package/esm2020/lib/shared/domain/definition/case-state.model.mjs +0 -3
- package/esm2020/lib/shared/domain/definition/case-type-lite.model.mjs +0 -5
- package/esm2020/lib/shared/domain/definition/case-type.model.mjs +0 -12
- package/esm2020/lib/shared/domain/definition/event-case-field.model.mjs +0 -4
- package/esm2020/lib/shared/domain/definition/field-type.model.mjs +0 -22
- package/esm2020/lib/shared/domain/definition/fixed-list-item.model.mjs +0 -3
- package/esm2020/lib/shared/domain/definition/jurisdiction.model.mjs +0 -3
- package/esm2020/lib/shared/domain/document/document-data.model.mjs +0 -14
- package/esm2020/lib/shared/domain/draft.model.mjs +0 -11
- package/esm2020/lib/shared/domain/http/http-error.model.mjs +0 -34
- package/esm2020/lib/shared/domain/organisation/organisation-converter.mjs +0 -42
- package/esm2020/lib/shared/domain/pagination-metadata.model.mjs +0 -3
- package/esm2020/lib/shared/domain/profile/profile.model.mjs +0 -29
- package/esm2020/lib/shared/domain/search/field.model.mjs +0 -11
- package/esm2020/lib/shared/domain/search/search-result-view-column.model.mjs +0 -3
- package/esm2020/lib/shared/domain/search/search-result-view-item.model.mjs +0 -12
- package/esm2020/lib/shared/domain/search/search-result-view.model.mjs +0 -23
- package/esm2020/lib/shared/domain/search/sorting/sort-parameters.mjs +0 -7
- package/esm2020/lib/shared/domain/workbasket/workbasket-input.model.mjs +0 -5
- package/esm2020/lib/shared/fixture/case-field-builder.mjs +0 -69
- package/esm2020/lib/shared/pipes/case-reference/case-reference.pipe.mjs +0 -33
- package/esm2020/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +0 -29
- package/esm2020/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +0 -32
- package/esm2020/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +0 -29
- package/esm2020/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +0 -39
- package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +0 -173
- package/esm2020/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +0 -31
- package/esm2020/lib/shared/pipes/complex/fields-filter.pipe.mjs +0 -105
- package/esm2020/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +0 -16
- package/esm2020/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +0 -27
- package/esm2020/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +0 -27
- package/esm2020/lib/shared/pipes/pipes.module.mjs +0 -64
- package/esm2020/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +0 -24
- package/esm2020/lib/shared/services/activity/activity.polling.service.mjs +0 -114
- package/esm2020/lib/shared/services/activity/activity.service.mjs +0 -82
- package/esm2020/lib/shared/services/addresses/addresses.service.mjs +0 -63
- package/esm2020/lib/shared/services/alert/alert.service.mjs +0 -142
- package/esm2020/lib/shared/services/auth/auth.service.mjs +0 -33
- package/esm2020/lib/shared/services/banners/banners.service.mjs +0 -33
- package/esm2020/lib/shared/services/browser/browser.service.mjs +0 -24
- package/esm2020/lib/shared/services/case-fields/case-field.service.mjs +0 -34
- package/esm2020/lib/shared/services/case-fields/format-translator.service.mjs +0 -242
- package/esm2020/lib/shared/services/case-file-view/case-file-view.service.mjs +0 -46
- package/esm2020/lib/shared/services/case-flag/case-flag-refdata.service.mjs +0 -102
- package/esm2020/lib/shared/services/common-data-service/common-data-service.mjs +0 -28
- package/esm2020/lib/shared/services/definitions/definitions.module.mjs +0 -19
- package/esm2020/lib/shared/services/definitions/definitions.service.mjs +0 -30
- package/esm2020/lib/shared/services/document-management/document-management.service.mjs +0 -112
- package/esm2020/lib/shared/services/draft/draft.service.mjs +0 -86
- package/esm2020/lib/shared/services/error/error-notifier.service.mjs +0 -18
- package/esm2020/lib/shared/services/eventStatusService/event-status.service.mjs +0 -21
- package/esm2020/lib/shared/services/fields/fields.purger.mjs +0 -303
- package/esm2020/lib/shared/services/fields/fields.utils.mjs +0 -615
- package/esm2020/lib/shared/services/form/field-type-sanitiser.mjs +0 -91
- package/esm2020/lib/shared/services/form/form-error.service.mjs +0 -46
- package/esm2020/lib/shared/services/form/form-validators.service.mjs +0 -56
- package/esm2020/lib/shared/services/form/form-value.service.mjs +0 -551
- package/esm2020/lib/shared/services/http/http-error.service.mjs +0 -65
- package/esm2020/lib/shared/services/http/http.service.mjs +0 -93
- package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +0 -34
- package/esm2020/lib/shared/services/loading/loading.module.mjs +0 -22
- package/esm2020/lib/shared/services/loading/loading.service.mjs +0 -37
- package/esm2020/lib/shared/services/navigation/navigation-notifier.service.mjs +0 -18
- package/esm2020/lib/shared/services/order/order.service.mjs +0 -39
- package/esm2020/lib/shared/services/organisation/organisation.service.mjs +0 -54
- package/esm2020/lib/shared/services/profile/profile.notifier.mjs +0 -19
- package/esm2020/lib/shared/services/profile/profile.service.mjs +0 -34
- package/esm2020/lib/shared/services/request/request.options.builder.mjs +0 -61
- package/esm2020/lib/shared/services/router/router-helper.service.mjs +0 -20
- package/esm2020/lib/shared/services/search/search.service.mjs +0 -89
- package/esm2020/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +0 -71
- package/esm2020/lib/shared/services/session/session-storage.service.mjs +0 -34
- package/esm2020/lib/shared/services/utils/retry/retry.service.mjs +0 -86
- package/esm2020/lib/shared/services/window/window.service.mjs +0 -40
- package/esm2020/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +0 -53
- package/esm2020/lib/shared/test/test-route-snapshot-builder.mjs +0 -40
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +0 -38542
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +0 -35578
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
- /package/{esm2020 → esm2022}/hmcts-ccd-case-ui-toolkit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/domain/notification-banner-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/notification-banner-style.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/notification-banner-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/body/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/footer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/date-input/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/header/header-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/header/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/header/navigation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/header/phase/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/tabs/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/commons/case-edit-data/case-edit-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/commons/case-edit-data/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/activity/activity-banner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/activity/activity-icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/activity/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-create/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-confirm/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-page/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-submit/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-event-completion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-progress/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-params.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-states.enum.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/editor.routing.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-editor/services/wizard-factory.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-header/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-history/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-list-filters/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-timeline/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-basic-access-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-success/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-event-trigger/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-full-access-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-reject/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-success/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/printer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/printer/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/viewer.routing.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/create-case-filters/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/dialogs/delete-or-cancel-dialog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/dialogs/document-dialog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/dialogs/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/dialogs/remove-dialog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/dialogs/save-or-discard-dialog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/error/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/error/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/error-message/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/event-start/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/event-start-state-machine-context.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/event-start-states-enum.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/event-start/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/event-trigger/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/helpers/init-dialog-helper.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/loading-spinner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/pagination/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/address/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/base-field/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/base-field/palette-context.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/case-flag-state.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/language.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-summary-list-display-mode.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-step.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-location-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/case-link/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/collection/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/complex/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/complex/sort-order.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/date/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/datetime-picker/datetime-picker-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/datetime-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/document/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-multi-select-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-radio-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/email/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/fixed-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/fixed-radio-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/history/event-log/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/history/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/judicial-user/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/label/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/markdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/money-gbp/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/multi-select-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/number/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/order-summary/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/organisation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/payment/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/phone-uk/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/__mocks__/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/query-create-context.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/text/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/text-area/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/waystopay/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/palette/yes-no/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/search-filters/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/search-filters/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/search-result/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/components/workbasket-filters/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/condition-parser.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/condition.peg.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/focus-element/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/substitutor/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/directives/substitutor/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/activity/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/addresses/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/alert/alert-level.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/alert/alert-status-params.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-edit/case-edit.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-edit/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/case-file-view-sort-columns.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-flag/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/access-types.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/case-view-event-ids.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/challenged-access-request.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/review-specific-access-request.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/role-assignment-response.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/role-request.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/service-org-response.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/case-view/specific-access-request.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/definition/display-context-enum.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/definition/field-type-enum.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/definition/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/document/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/error-message.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/http/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/jurisdiction/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/jurisdiction/judicial-user.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/order/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/order/orderable.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/organisation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/organisation/simple-organisation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/predicate.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/profile/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/search/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/search/sorting/search-result-view-item-comparator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/sort-order.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/user/user-details.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/user/user-info.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/Task.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/TaskPayload.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/case-worker.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/judicial-worker.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/task-response.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/task-search-parameter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/wa-service-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/domain/workbasket/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/fixture/shared.test.fixture.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/case-reference/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/case-title/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/complex/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/generic/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/link-cases-from-reason-code/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/pipes/link-cases-reason-code/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/activity/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/addresses/address-parser.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/addresses/address-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/addresses/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/auth/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/banners/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/browser/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/case-fields/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/case-file-view/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/case-flag/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/case-flag/refdata-case-flag-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/definitions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/document-management/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/draft/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/error/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/eventStatusService/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/fields/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/http/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/jurisdiction/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/loading/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/navigation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/navigation/navigation-origin.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/order/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/organisation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/profile/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/request/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/search/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/session/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/utils/retry/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/window/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/services/workbasket/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FieldsUtils } from '../fields';
|
|
3
|
+
import { FieldTypeSanitiser } from './field-type-sanitiser';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./field-type-sanitiser";
|
|
6
|
+
export class FormValueService {
|
|
7
|
+
fieldTypeSanitiser;
|
|
8
|
+
/**
|
|
9
|
+
* Gets value of a field based on fieldKey which is a dot separated reference to value and collection index.
|
|
10
|
+
* There are two exceptions:
|
|
11
|
+
* 1) In case of a multiselect being identified as a leaf a '---LABEL' suffix is appended to the key and values of that key are returned
|
|
12
|
+
* form= { 'list': ['code1', 'code2'],
|
|
13
|
+
* 'list---LABEL': ['label1', 'label2'] },
|
|
14
|
+
* fieldKey=list,
|
|
15
|
+
* colIndex=0,
|
|
16
|
+
* value=label1, label2
|
|
17
|
+
* 2) In case of a collection of simple fields is identified as a leaf all values are joined seperated by a comma
|
|
18
|
+
* form= { 'collection': [{ 'value': 'value1' }, { 'value': 'value2' }] }
|
|
19
|
+
* fieldKey=collection
|
|
20
|
+
* colIndex=1
|
|
21
|
+
* value=value1, value2
|
|
22
|
+
*
|
|
23
|
+
* Other examples:
|
|
24
|
+
* 1) simple field reference: form={ 'PersonFirstName': 'John' }, fieldKey=PersonFirstName, value=John
|
|
25
|
+
* 2) complex field reference:
|
|
26
|
+
* form= { complex1': { 'simple11': 'value11', 'simple12': 'value12', 'complex2': { 'simple21': 'value21' } }},
|
|
27
|
+
* fieldKey=complex1.complex2.simple21
|
|
28
|
+
* colIndex=0,
|
|
29
|
+
* value=value21
|
|
30
|
+
* 3) complex field with collection field with complex field reference:
|
|
31
|
+
* form= { 'complex1': {
|
|
32
|
+
* 'collection1': [
|
|
33
|
+
* { 'value': {
|
|
34
|
+
* 'complex2': {
|
|
35
|
+
* 'simple1': 'value1',
|
|
36
|
+
* 'complex3': {
|
|
37
|
+
* 'complex4': {
|
|
38
|
+
* 'simple2': 'value12'
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* },
|
|
44
|
+
* { 'value': {
|
|
45
|
+
* 'complex2': {
|
|
46
|
+
* 'simple1': 'value2',
|
|
47
|
+
* 'complex3': {
|
|
48
|
+
* 'complex4': {
|
|
49
|
+
* 'simple2': 'value21'
|
|
50
|
+
* }
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* },
|
|
55
|
+
* { 'value': {
|
|
56
|
+
* 'complex2': {
|
|
57
|
+
* 'simple1': 'value3',
|
|
58
|
+
* 'complex3': {
|
|
59
|
+
* 'complex4': {
|
|
60
|
+
* 'simple2': 'value31'
|
|
61
|
+
* }
|
|
62
|
+
* }
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* }
|
|
66
|
+
* ]}}
|
|
67
|
+
* fieldKey=complex1.collection1.complex2.complex3.complex4.simple2
|
|
68
|
+
* colIndex=2,
|
|
69
|
+
* value=value21
|
|
70
|
+
* 4) collection of complex types
|
|
71
|
+
* form= { 'collection1': [
|
|
72
|
+
* { 'value': {'complex1': {
|
|
73
|
+
* 'simple1': 'value11',
|
|
74
|
+
* 'complex2': {
|
|
75
|
+
* 'complex3': {
|
|
76
|
+
* 'simple2': 'value12'
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* }}
|
|
80
|
+
* },
|
|
81
|
+
* { 'value': {'complex1': {
|
|
82
|
+
* 'simple1': 'value21',
|
|
83
|
+
* 'complex2': {
|
|
84
|
+
* 'complex3': {
|
|
85
|
+
* 'simple2': 'value22'
|
|
86
|
+
* }
|
|
87
|
+
* }
|
|
88
|
+
* }}
|
|
89
|
+
* },
|
|
90
|
+
* { 'value': {'complex1': {
|
|
91
|
+
* 'simple1': 'value31',
|
|
92
|
+
* 'complex2': {
|
|
93
|
+
* 'complex3': {
|
|
94
|
+
* 'simple2': 'value32'
|
|
95
|
+
* }
|
|
96
|
+
* }
|
|
97
|
+
* }}
|
|
98
|
+
* }
|
|
99
|
+
* ]}
|
|
100
|
+
* fieldKey=collection1.complex1.complex2.complex3.simple2
|
|
101
|
+
* colIndex=2
|
|
102
|
+
* value=value32
|
|
103
|
+
*
|
|
104
|
+
* If key is pointing at a complex or collection leaf (not simple, collection of simple or multiselect types) then undefined is returned.
|
|
105
|
+
* Also no key referring a leaf that is contained within collection will contain index number. The index is passed as an argument to the
|
|
106
|
+
* method.
|
|
107
|
+
*/
|
|
108
|
+
static getFieldValue(form, fieldKey, colIndex) {
|
|
109
|
+
const fieldIds = fieldKey.split('.');
|
|
110
|
+
const currentFieldId = fieldIds[0];
|
|
111
|
+
const currentForm = form[currentFieldId];
|
|
112
|
+
if (FieldsUtils.isMultiSelectValue(currentForm)) {
|
|
113
|
+
return form[currentFieldId + FieldsUtils.LABEL_SUFFIX].join(', ');
|
|
114
|
+
}
|
|
115
|
+
else if (FieldsUtils.isCollectionOfSimpleTypes(currentForm)) {
|
|
116
|
+
return currentForm.map(fieldValue => fieldValue['value']).join(', ');
|
|
117
|
+
}
|
|
118
|
+
else if (FieldsUtils.isCollection(currentForm)) {
|
|
119
|
+
return this.getFieldValue(currentForm[colIndex]['value'], fieldIds.slice(1).join('.'), colIndex);
|
|
120
|
+
}
|
|
121
|
+
else if (FieldsUtils.isNonEmptyObject(currentForm)) {
|
|
122
|
+
return this.getFieldValue(currentForm, fieldIds.slice(1).join('.'), colIndex);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return currentForm;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* A recursive method to remove anything with a `---LABEL` suffix.
|
|
130
|
+
* @param data The data to recurse through and remove MultiSelect labels.
|
|
131
|
+
*/
|
|
132
|
+
static removeMultiSelectLabels(data) {
|
|
133
|
+
if (data && typeof data === 'object') {
|
|
134
|
+
if (Array.isArray(data)) {
|
|
135
|
+
for (const item of data) {
|
|
136
|
+
FormValueService.removeMultiSelectLabels(item);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const keys = Object.keys(data);
|
|
141
|
+
for (const key of keys) {
|
|
142
|
+
// Have we found one a MultiSelect label?
|
|
143
|
+
if (key.indexOf(FieldsUtils.LABEL_SUFFIX) > 0) {
|
|
144
|
+
// If so, remove it.
|
|
145
|
+
delete data[key];
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
FormValueService.removeMultiSelectLabels(data[key]);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
static isReadOnly(field) {
|
|
155
|
+
return field.display_context ? field.display_context.toUpperCase() === 'READONLY' : false;
|
|
156
|
+
}
|
|
157
|
+
static isOptional(field) {
|
|
158
|
+
return field.display_context ? field.display_context.toUpperCase() === 'OPTIONAL' : false;
|
|
159
|
+
}
|
|
160
|
+
static isLabel(field) {
|
|
161
|
+
if (field.field_type) {
|
|
162
|
+
return field.field_type.type === 'Label';
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
static isEmptyData(data) {
|
|
169
|
+
if (data) {
|
|
170
|
+
let allEmpty = true;
|
|
171
|
+
for (const prop of Object.keys(data)) {
|
|
172
|
+
const value = data[prop];
|
|
173
|
+
if (value) {
|
|
174
|
+
if (typeof (value) === 'object') {
|
|
175
|
+
allEmpty = allEmpty && this.isEmptyData(value);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
allEmpty = false;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return allEmpty;
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Should we clear out optional, empty, complex objects?
|
|
188
|
+
* @param clearEmpty False property if we simply want to skip it.
|
|
189
|
+
* @param data The data to assess for "emptiness".
|
|
190
|
+
* @param field The CaseField that will tell us if this is optional.
|
|
191
|
+
*/
|
|
192
|
+
static clearOptionalEmpty(clearEmpty, data, field) {
|
|
193
|
+
if (clearEmpty) {
|
|
194
|
+
return FormValueService.isOptional(field) && FormValueService.isEmptyData(data);
|
|
195
|
+
}
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
constructor(fieldTypeSanitiser) {
|
|
199
|
+
this.fieldTypeSanitiser = fieldTypeSanitiser;
|
|
200
|
+
}
|
|
201
|
+
sanitise(rawValue) {
|
|
202
|
+
return this.sanitiseObject(rawValue);
|
|
203
|
+
}
|
|
204
|
+
sanitiseCaseReference(reference) {
|
|
205
|
+
// strip non digits
|
|
206
|
+
const s = reference.replace(/[\D]/g, '');
|
|
207
|
+
if (s.length > 16) {
|
|
208
|
+
return s.substr(s.length - 16, 16);
|
|
209
|
+
}
|
|
210
|
+
return s;
|
|
211
|
+
}
|
|
212
|
+
filterCurrentPageFields(caseFields, editForm) {
|
|
213
|
+
const cloneForm = JSON.parse(JSON.stringify(editForm));
|
|
214
|
+
Object.keys(cloneForm['data']).forEach((key) => {
|
|
215
|
+
if (caseFields.findIndex((element) => element.id === key) < 0) {
|
|
216
|
+
delete cloneForm['data'][key];
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
return cloneForm;
|
|
220
|
+
}
|
|
221
|
+
sanitiseDynamicLists(caseFields, editForm) {
|
|
222
|
+
return this.fieldTypeSanitiser.sanitiseLists(caseFields, editForm.data);
|
|
223
|
+
}
|
|
224
|
+
sanitiseObject(rawObject) {
|
|
225
|
+
if (!rawObject) {
|
|
226
|
+
return rawObject;
|
|
227
|
+
}
|
|
228
|
+
let sanitisedObject = {};
|
|
229
|
+
const documentFieldKeys = ['document_url', 'document_binary_url', 'document_filename'];
|
|
230
|
+
for (const key in rawObject) {
|
|
231
|
+
// If the key is one of documentFieldKeys, it means the field is of Document type. If the value of any of these
|
|
232
|
+
// properties is null, the entire sanitised object to be returned should be null
|
|
233
|
+
if (documentFieldKeys.indexOf(key) > -1 && rawObject[key] === null) {
|
|
234
|
+
sanitisedObject = null;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
else if ('CaseReference' === key) {
|
|
238
|
+
sanitisedObject[key] = this.sanitiseValue(this.sanitiseCaseReference(String(rawObject[key])));
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
sanitisedObject[key] = this.sanitiseValue(rawObject[key]);
|
|
242
|
+
if (Array.isArray(sanitisedObject[key])) {
|
|
243
|
+
// If the 'sanitised' array is empty, whereas the original array had 1 or more items
|
|
244
|
+
// delete the property from the sanatised object
|
|
245
|
+
if (sanitisedObject[key].length === 0 && rawObject[key].length > 0) {
|
|
246
|
+
delete sanitisedObject[key];
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return sanitisedObject;
|
|
252
|
+
}
|
|
253
|
+
sanitiseArray(rawArray) {
|
|
254
|
+
if (!rawArray) {
|
|
255
|
+
return rawArray;
|
|
256
|
+
}
|
|
257
|
+
rawArray.forEach(item => {
|
|
258
|
+
if (item && item.hasOwnProperty('value')) {
|
|
259
|
+
item.value = this.sanitiseValue(item.value);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
// Filter the array to ensure only truthy values are returned; double-bang operator returns the boolean true/false
|
|
263
|
+
// association of a value. In addition, if the array contains items with a "value" object property, return only
|
|
264
|
+
// those whose value object contains non-empty values, including for any descendant objects
|
|
265
|
+
return rawArray
|
|
266
|
+
.filter(item => !!item)
|
|
267
|
+
.filter(item => item.hasOwnProperty('value') ? FieldsUtils.containsNonEmptyValues(item.value) : true);
|
|
268
|
+
}
|
|
269
|
+
sanitiseValue(rawValue) {
|
|
270
|
+
if (Array.isArray(rawValue)) {
|
|
271
|
+
return this.sanitiseArray(rawValue);
|
|
272
|
+
}
|
|
273
|
+
switch (typeof rawValue) {
|
|
274
|
+
case 'object':
|
|
275
|
+
return this.sanitiseObject(rawValue);
|
|
276
|
+
case 'string':
|
|
277
|
+
return rawValue.trim();
|
|
278
|
+
case 'number':
|
|
279
|
+
return String(rawValue);
|
|
280
|
+
default:
|
|
281
|
+
return rawValue;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
clearNonCaseFields(data, caseFields) {
|
|
285
|
+
for (const dataKey in data) {
|
|
286
|
+
if (!caseFields.find(cf => cf.id === dataKey)) {
|
|
287
|
+
delete data[dataKey];
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// TODO refactor so that this and remove unnecessary fields have a common iterator that applies functions to each node visited
|
|
292
|
+
removeNullLabels(data, caseFields) {
|
|
293
|
+
if (data && caseFields && caseFields.length > 0) {
|
|
294
|
+
// check if there is any data at the top level of the form that's not in the caseFields
|
|
295
|
+
for (const field of caseFields) {
|
|
296
|
+
if (field.field_type) {
|
|
297
|
+
switch (field.field_type.type) {
|
|
298
|
+
case 'Label':
|
|
299
|
+
// Delete any labels that are null
|
|
300
|
+
if ((data[field.id] === null) || (data[field.id] === '')) {
|
|
301
|
+
delete data[field.id];
|
|
302
|
+
}
|
|
303
|
+
break;
|
|
304
|
+
case 'Complex':
|
|
305
|
+
// Recurse and remove anything unnecessary from within a complex field.
|
|
306
|
+
this.removeNullLabels(data[field.id], field.field_type.complex_fields);
|
|
307
|
+
break;
|
|
308
|
+
case 'Collection':
|
|
309
|
+
// Get hold of the collection.
|
|
310
|
+
const collection = data[field.id];
|
|
311
|
+
// Check if we actually have a collection to work with.
|
|
312
|
+
if (collection && Array.isArray(collection)) {
|
|
313
|
+
// If this is a collection of complex object, we need to iterate through
|
|
314
|
+
// and clear them out.
|
|
315
|
+
if (field.field_type.collection_field_type.type === 'Complex') {
|
|
316
|
+
// Iterate through the elements and remove any unnecessary fields within.
|
|
317
|
+
for (const item of collection) {
|
|
318
|
+
this.removeNullLabels(item, field.field_type.collection_field_type.complex_fields);
|
|
319
|
+
this.removeNullLabels(item.value, field.field_type.collection_field_type.complex_fields);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
break;
|
|
324
|
+
default:
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// TODO refactor so that this and remove unnecessary fields have a common iterator that applies functions to each node visited
|
|
332
|
+
removeEmptyDocuments(data, caseFields) {
|
|
333
|
+
if (data && caseFields && caseFields.length > 0) {
|
|
334
|
+
// check if there is any data at the top level of the form that's not in the caseFields
|
|
335
|
+
for (const field of caseFields) {
|
|
336
|
+
if (field.field_type) {
|
|
337
|
+
switch (field.field_type.type) {
|
|
338
|
+
case 'Complex':
|
|
339
|
+
// Recurse and remove any empty documents from within a complex field.
|
|
340
|
+
this.removeEmptyDocuments(data[field.id], field.field_type.complex_fields);
|
|
341
|
+
break;
|
|
342
|
+
case 'Collection':
|
|
343
|
+
// Get hold of the collection.
|
|
344
|
+
const collection = data[field.id];
|
|
345
|
+
// Check if we actually have a collection to work with.
|
|
346
|
+
if (collection && Array.isArray(collection)) {
|
|
347
|
+
// If this is a collection of complex object, we need to iterate through
|
|
348
|
+
// and clear out empty documents
|
|
349
|
+
if (field.field_type.collection_field_type.type === 'Complex') {
|
|
350
|
+
// Iterate through the elements and remove any empty documents within.
|
|
351
|
+
for (const item of collection) {
|
|
352
|
+
this.removeEmptyDocuments(item, field.field_type.collection_field_type.complex_fields);
|
|
353
|
+
this.removeEmptyDocuments(item.value, field.field_type.collection_field_type.complex_fields);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
break;
|
|
358
|
+
case 'Document':
|
|
359
|
+
// Ensure this is executed only if the Document field is NOT hidden and is empty of data; hidden Document
|
|
360
|
+
// fields are handled by the filterRawFormValues() function in CaseEditSubmit component
|
|
361
|
+
if (field.hidden !== true && FormValueService.isEmptyData(data[field.id])) {
|
|
362
|
+
delete data[field.id];
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
default:
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Clear out unnecessary fields from a data object, based on an array of CaseFields.
|
|
374
|
+
* This method is recursive and will call itself if it encounters particular field types.
|
|
375
|
+
*
|
|
376
|
+
* @param data The object to be tidied up.
|
|
377
|
+
* @param caseFields The CaseFields that need to be cleaned up.
|
|
378
|
+
* @param clearEmpty Whether or not we should clear out empty, optional, complex objects.
|
|
379
|
+
* @param clearNonCase Whether or not we should clear out non-case fields at the top level.
|
|
380
|
+
*/
|
|
381
|
+
removeUnnecessaryFields(data, caseFields, clearEmpty = false, clearNonCase = false, fromPreviousPage = false, currentPageCaseFields = []) {
|
|
382
|
+
if (data && caseFields && caseFields.length > 0) {
|
|
383
|
+
// check if there is any data at the top level of the form that's not in the caseFields
|
|
384
|
+
if (clearNonCase) {
|
|
385
|
+
this.clearNonCaseFields(data, caseFields);
|
|
386
|
+
}
|
|
387
|
+
for (const field of caseFields) {
|
|
388
|
+
if (!FormValueService.isLabel(field) && FormValueService.isReadOnly(field)) {
|
|
389
|
+
// Retain anything that is readonly and not a label.
|
|
390
|
+
continue;
|
|
391
|
+
}
|
|
392
|
+
if (field.hidden === true && field.display_context !== 'HIDDEN' && field.display_context !== 'HIDDEN_TEMP' && field.id !== 'caseLinks' && !field.retain_hidden_value) {
|
|
393
|
+
// Delete anything that is hidden (that is NOT readonly), and that
|
|
394
|
+
// hasn't had its display_context overridden to make it hidden.
|
|
395
|
+
delete data[field.id];
|
|
396
|
+
}
|
|
397
|
+
else if (field.field_type) {
|
|
398
|
+
switch (field.field_type.type) {
|
|
399
|
+
case 'Label':
|
|
400
|
+
// Delete any labels.
|
|
401
|
+
delete data[field.id];
|
|
402
|
+
break;
|
|
403
|
+
case 'Document':
|
|
404
|
+
if (FormValueService.isEmptyData(data[field.id])) {
|
|
405
|
+
delete data[field.id];
|
|
406
|
+
}
|
|
407
|
+
break;
|
|
408
|
+
case 'Complex':
|
|
409
|
+
this.removeUnnecessaryFields(data[field.id], field.field_type.complex_fields, clearEmpty);
|
|
410
|
+
// Also remove any optional complex objects that are completely empty.
|
|
411
|
+
// EUI-4244: Ritesh's fix, passing true instead of clearEmpty.
|
|
412
|
+
if (FormValueService.clearOptionalEmpty(true, data[field.id], field)) {
|
|
413
|
+
delete data[field.id];
|
|
414
|
+
}
|
|
415
|
+
if (data[field.id] && FormValueService.isEmptyData(data[field.id]) && fromPreviousPage
|
|
416
|
+
&& currentPageCaseFields.findIndex((cField) => cField.id === field.id) === -1) {
|
|
417
|
+
delete data[field.id];
|
|
418
|
+
}
|
|
419
|
+
break;
|
|
420
|
+
case 'Collection':
|
|
421
|
+
// Check for valid collection data
|
|
422
|
+
this.removeInvalidCollectionData(data, field);
|
|
423
|
+
// Get hold of the collection.
|
|
424
|
+
const collection = data[field.id];
|
|
425
|
+
// Check if we actually have a collection to work with.
|
|
426
|
+
if (collection && Array.isArray(collection)) {
|
|
427
|
+
// If this is a collection of complex object, we need to iterate through
|
|
428
|
+
// and clear them out.
|
|
429
|
+
if (field.field_type.collection_field_type.type === 'Complex') {
|
|
430
|
+
// Iterate through the elements and remove any unnecessary fields within.
|
|
431
|
+
for (const item of collection) {
|
|
432
|
+
this.removeUnnecessaryFields(item, field.field_type.collection_field_type.complex_fields, clearEmpty);
|
|
433
|
+
this.removeUnnecessaryFields(item.value, field.field_type.collection_field_type.complex_fields, false);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
break;
|
|
438
|
+
default:
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
// Clear out any MultiSelect labels.
|
|
445
|
+
FormValueService.removeMultiSelectLabels(data);
|
|
446
|
+
}
|
|
447
|
+
removeInvalidCollectionData(data, field) {
|
|
448
|
+
if (data[field.id] && data[field.id].length > 0) {
|
|
449
|
+
for (const objCollection of data[field.id]) {
|
|
450
|
+
if (Object.keys(objCollection).length === 1 && Object.keys(objCollection).indexOf('id') > -1) {
|
|
451
|
+
data[field.id] = [];
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Remove any empty collection fields where a value of greater than zero is specified in the field's {@link FieldType}
|
|
458
|
+
* `min` attribute.
|
|
459
|
+
*
|
|
460
|
+
* @param data The object tree of form values on which to perform the removal
|
|
461
|
+
* @param caseFields The list of underlying {@link CaseField} domain model objects for each field
|
|
462
|
+
*/
|
|
463
|
+
removeEmptyCollectionsWithMinValidation(data, caseFields) {
|
|
464
|
+
if (data && caseFields && caseFields.length > 0) {
|
|
465
|
+
for (const field of caseFields) {
|
|
466
|
+
if (field.field_type.type === 'Collection' && typeof field.field_type.min === 'number' && field.field_type.min > 0 &&
|
|
467
|
+
data[field.id] && Array.isArray(data[field.id]) && data[field.id].length === 0) {
|
|
468
|
+
delete data[field.id];
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Remove from the top level of the form data any case fields of a given type or types that are not intended to be
|
|
475
|
+
* persisted. This function is intended to remove "special" case field types from the data, such as FlagLauncher or
|
|
476
|
+
* ComponentLauncher fields.
|
|
477
|
+
*
|
|
478
|
+
* @param data The object tree of form values on which to perform the removal at the top level only
|
|
479
|
+
* @param caseFields The list of underlying {@link CaseField} domain model objects for each field
|
|
480
|
+
* @param types An array of one or more field types
|
|
481
|
+
*/
|
|
482
|
+
removeCaseFieldsOfType(data, caseFields, types) {
|
|
483
|
+
if (data && caseFields && caseFields.length > 0 && types.length > 0) {
|
|
484
|
+
const caseFieldsToRemove = caseFields.filter(caseField => FieldsUtils.isCaseFieldOfType(caseField, types));
|
|
485
|
+
for (const caseField of caseFieldsToRemove) {
|
|
486
|
+
delete data[caseField.id];
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Re-populate the form data from the values held in the case fields. This is necessary in order to pick up, for
|
|
492
|
+
* each `Flags` field, any flag details data not currently present.
|
|
493
|
+
*
|
|
494
|
+
* `Flags` fields may be contained in other `CaseField` instances, either as a sub-field of a Complex field, or
|
|
495
|
+
* fields in a collection (or sub-fields of Complex fields in a collection). Therefore, it is necessary to
|
|
496
|
+
* iterate through all `CaseField`s.
|
|
497
|
+
*
|
|
498
|
+
* @param data The object tree of form values on which to perform the data population
|
|
499
|
+
* @param caseFields The list of underlying {@link CaseField} domain model objects for each field
|
|
500
|
+
*/
|
|
501
|
+
repopulateFormDataFromCaseFieldValues(data, caseFields) {
|
|
502
|
+
if (data && caseFields && caseFields.length > 0 &&
|
|
503
|
+
caseFields.findIndex(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher'])) > -1) {
|
|
504
|
+
// Ignore the FlagLauncher CaseField because it does not hold any values
|
|
505
|
+
caseFields.filter(caseField => !FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']))
|
|
506
|
+
.forEach(caseField => {
|
|
507
|
+
// Ensure that the data object is populated for all CaseField keys it contains, even if for a given
|
|
508
|
+
// CaseField key, the data object has a falsy value (hence the use of hasOwnProperty() for the check below)
|
|
509
|
+
// See https://tools.hmcts.net/jira/browse/EUI-7377
|
|
510
|
+
if (data.hasOwnProperty(caseField.id) && caseField.value) {
|
|
511
|
+
// Create new object for the CaseField ID within the data object, if necessary (i.e. if the current value
|
|
512
|
+
// is falsy); populate from the corresponding CaseField
|
|
513
|
+
if (!data[caseField.id]) {
|
|
514
|
+
data[caseField.id] = {};
|
|
515
|
+
Object.keys(caseField.value).forEach((key) => data[caseField.id][key] = caseField.value[key]);
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
// Copy all values from the corresponding CaseField; this ensures all nested flag data (for example, a
|
|
519
|
+
// Flags field within a Complex field or a collection of Complex fields) is copied across
|
|
520
|
+
Object.keys(data[caseField.id]).forEach((key) => {
|
|
521
|
+
if (caseField.value.hasOwnProperty(key)) {
|
|
522
|
+
data[caseField.id][key] = caseField.value[key];
|
|
523
|
+
}
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Populate the linked cases from the data held in its corresponding CaseField.
|
|
532
|
+
*
|
|
533
|
+
* @param data The object tree of form values on which to perform the data population
|
|
534
|
+
* @param caseFields The list of underlying {@link CaseField} domain model objects for each field
|
|
535
|
+
*/
|
|
536
|
+
populateLinkedCasesDetailsFromCaseFields(data, caseFields) {
|
|
537
|
+
if (data && caseFields && caseFields.length > 0) {
|
|
538
|
+
caseFields.filter(caseField => !FieldsUtils.isCaseFieldOfType(caseField, ['ComponentLauncher']))
|
|
539
|
+
.forEach(caseField => {
|
|
540
|
+
if (data.hasOwnProperty('caseLinks') && caseField.value) {
|
|
541
|
+
data[caseField.id] = caseField.value;
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
static ɵfac = function FormValueService_Factory(t) { return new (t || FormValueService)(i0.ɵɵinject(i1.FieldTypeSanitiser)); };
|
|
547
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormValueService, factory: FormValueService.ɵfac });
|
|
548
|
+
}
|
|
549
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormValueService, [{
|
|
550
|
+
type: Injectable
|
|
551
|
+
}], function () { return [{ type: i1.FieldTypeSanitiser }]; }, null); })();
|
|
552
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWx1ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc1RCxNQUFNLE9BQU8sZ0JBQWdCO0lBOExFO0lBN0w3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUdHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVE7UUFDbEQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25FO2FBQU0sSUFBSSxXQUFXLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0QsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFB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Ozt1RkFBaEIsZ0JBQWdCO2NBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENhc2VGaWVsZCwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uL2ZpZWxkcyc7XG5pbXBvcnQgeyBGaWVsZFR5cGVTYW5pdGlzZXIgfSBmcm9tICcuL2ZpZWxkLXR5cGUtc2FuaXRpc2VyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1WYWx1ZVNlcnZpY2Uge1xuICAvKipcbiAgICogR2V0cyB2YWx1ZSBvZiBhIGZpZWxkIGJhc2VkIG9uIGZpZWxkS2V5IHdoaWNoIGlzIGEgZG90IHNlcGFyYXRlZCByZWZlcmVuY2UgdG8gdmFsdWUgYW5kIGNvbGxlY3Rpb24gaW5kZXguXG4gICAqIFRoZXJlIGFyZSB0d28gZXhjZXB0aW9uczpcbiAgICogMSkgSW4gY2FzZSBvZiBhIG11bHRpc2VsZWN0IGJlaW5nIGlkZW50aWZpZWQgYXMgYSBsZWFmIGEgJy0tLUxBQkVMJyBzdWZmaXggaXMgYXBwZW5kZWQgdG8gdGhlIGtleSBhbmQgdmFsdWVzIG9mIHRoYXQga2V5IGFyZSByZXR1cm5lZFxuICAgKiAgICAgIGZvcm09IHsgJ2xpc3QnOiBbJ2NvZGUxJywgJ2NvZGUyJ10sXG4gICAqICAgICAgICAgICAgICAnbGlzdC0tLUxBQkVMJzogWydsYWJlbDEnLCAnbGFiZWwyJ10gfSxcbiAgICogICAgICBmaWVsZEtleT1saXN0LFxuICAgKiAgICAgIGNvbEluZGV4PTAsXG4gICAqICAgICAgdmFsdWU9bGFiZWwxLCBsYWJlbDJcbiAgICogMikgSW4gY2FzZSBvZiBhIGNvbGxlY3Rpb24gb2Ygc2ltcGxlIGZpZWxkcyBpcyBpZGVudGlmaWVkIGFzIGEgbGVhZiBhbGwgdmFsdWVzIGFyZSBqb2luZWQgc2VwZXJhdGVkIGJ5IGEgY29tbWFcbiAgICogICAgICBmb3JtPSB7ICdjb2xsZWN0aW9uJzogW3sgJ3ZhbHVlJzogJ3ZhbHVlMScgfSwgeyAndmFsdWUnOiAndmFsdWUyJyB9XSB9XG4gICAqICAgICAgZmllbGRLZXk9Y29sbGVjdGlvblxuICAgKiAgICAgIGNvbEluZGV4PTFcbiAgICogICAgICB2YWx1ZT12YWx1ZTEsIHZhbHVlMlxuICAgKlxuICAgKiBPdGhlciBleGFtcGxlczpcbiAgICogMSkgc2ltcGxlIGZpZWxkIHJlZmVyZW5jZTogZm9ybT17ICdQZXJzb25GaXJzdE5hbWUnOiAnSm9obicgfSwgZmllbGRLZXk9UGVyc29uRmlyc3ROYW1lLCB2YWx1ZT1Kb2huXG4gICAqIDIpIGNvbXBsZXggZmllbGQgcmVmZXJlbmNlOlxuICAgKiAgICAgIGZvcm09IHsgY29tcGxleDEnOiB7ICdzaW1wbGUxMSc6ICd2YWx1ZTExJywgJ3NpbXBsZTEyJzogJ3ZhbHVlMTInLCAnY29tcGxleDInOiB7ICdzaW1wbGUyMSc6ICd2YWx1ZTIxJyB9IH19LFxuICAgKiAgICAgIGZpZWxkS2V5PWNvbXBsZXgxLmNvbXBsZXgyLnNpbXBsZTIxXG4gICAqICAgICAgY29sSW5kZXg9MCxcbiAgICogICAgICB2YWx1ZT12YWx1ZTIxXG4gICAqIDMpIGNvbXBsZXggZmllbGQgd2l0aCBjb2xsZWN0aW9uIGZpZWxkIHdpdGggY29tcGxleCBmaWVsZCByZWZlcmVuY2U6XG4gICAqICAgICAgZm9ybT0geyAnY29tcGxleDEnOiB7XG4gICAqICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24xJzogW1xuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUxJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDQnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMTInXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMicsXG4gICAqICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXg0Jzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTIxJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTMnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4NCc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUzMSdcbiAgICogICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgIF19fVxuICAgKiAgICAgIGZpZWxkS2V5PWNvbXBsZXgxLmNvbGxlY3Rpb24xLmNvbXBsZXgyLmNvbXBsZXgzLmNvbXBsZXg0LnNpbXBsZTJcbiAgICogICAgICBjb2xJbmRleD0yLFxuICAgKiAgICAgIHZhbHVlPXZhbHVlMjFcbiAgICogNCkgY29sbGVjdGlvbiBvZiBjb21wbGV4IHR5cGVzXG4gICAqICAgICAgZm9ybT0geyAnY29sbGVjdGlvbjEnOiBbXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7J2NvbXBsZXgxJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUxMScsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTEyJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAqICAgICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHsnY29tcGxleDEnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTIxJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMjInXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzogeydjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMzEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUzMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAqICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICBdfVxuICAgKiAgICAgIGZpZWxkS2V5PWNvbGxlY3Rpb24xLmNvbXBsZXgxLmNvbXBsZXgyLmNvbXBsZXgzLnNpbXBsZTJcbiAgICogICAgICBjb2xJbmRleD0yXG4gICAqICAgICAgdmFsdWU9dmFsdWUzMlxuICAgKlxuICAgKiBJZiBrZXkgaXMgcG9pbnRpbmcgYXQgYSBjb21wbGV4IG9yIGNvbGxlY3Rpb24gbGVhZiAobm90IHNpbXBsZSwgY29sbGVjdGlvbiBvZiBzaW1wbGUgb3IgbXVsdGlzZWxlY3QgdHlwZXMpIHRoZW4gdW5kZWZpbmVkIGlzIHJldHVybmVkLlxuICAgKiBBbHNvIG5vIGtleSByZWZlcnJpbmcgYSBsZWFmIHRoYXQgaXMgY29udGFpbmVkIHdpdGhpbiBjb2xsZWN0aW9uIHdpbGwgY29udGFpbiBpbmRleCBudW1iZXIuIFRoZSBpbmRleCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlXG4gICAqIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmllbGRWYWx1ZShmb3JtLCBmaWVsZEtleSwgY29sSW5kZXgpIHtcbiAgICBjb25zdCBmaWVsZElkcyA9IGZpZWxkS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3QgY3VycmVudEZpZWxkSWQgPSBmaWVsZElkc1swXTtcbiAgICBjb25zdCBjdXJyZW50Rm9ybSA9IGZvcm1bY3VycmVudEZpZWxkSWRdO1xuICAgIGlmIChGaWVsZHNVdGlscy5pc011bHRpU2VsZWN0VmFsdWUoY3VycmVudEZvcm0pKSB7XG4gICAgICByZXR1cm4gZm9ybVtjdXJyZW50RmllbGRJZCArIEZpZWxkc1V0aWxzLkxBQkVMX1NVRkZJWF0uam9pbignLCAnKTtcbiAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzQ29sbGVjdGlvbk9mU2ltcGxlVHlwZXMoY3VycmVudEZvcm0pKSB7XG4gICAgICByZXR1cm4gY3VycmVudEZvcm0ubWFwKGZpZWxkVmFsdWUgPT4gZmllbGRWYWx1ZVsndmFsdWUnXSkuam9pbignLCAnKTtcbiAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzQ29sbGVjdGlvbihjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoY3VycmVudEZvcm1bY29sSW5kZXhdWyd2YWx1ZSddLCBmaWVsZElkcy5zbGljZSgxKS5qb2luKCcuJyksIGNvbEluZGV4KTtcbiAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoY3VycmVudEZvcm0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFZhbHVlKGN1cnJlbnRGb3JtLCBmaWVsZElkcy5zbGljZSgxKS5qb2luKCcuJyksIGNvbEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN1cnJlbnRGb3JtO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gcmVtb3ZlIGFueXRoaW5nIHdpdGggYSBgLS0tTEFCRUxgIHN1ZmZpeC5cbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gcmVjdXJzZSB0aHJvdWdoIGFuZCByZW1vdmUgTXVsdGlTZWxlY3QgbGFiZWxzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZW1vdmVNdWx0aVNlbGVjdExhYmVscyhkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhKSB7XG4gICAgICAgICAgRm9ybVZhbHVlU2VydmljZS5yZW1vdmVNdWx0aVNlbGVjdExhYmVscyhpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgIC8vIEhhdmUgd2UgZm91bmQgb25lIGEgTXVsdGlTZWxlY3QgbGFiZWw/XG4gICAgICAgICAgaWYgKGtleS5pbmRleE9mKEZpZWxkc1V0aWxzLkxBQkVMX1NVRkZJWCkgPiAwKSB7XG4gICAgICAgICAgICAvLyBJZiBzbywgcmVtb3ZlIGl0LlxuICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgRm9ybVZhbHVlU2VydmljZS5yZW1vdmVNdWx0aVNlbGVjdExhYmVscyhkYXRhW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzUmVhZE9ubHkoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZC5kaXNwbGF5X2NvbnRleHQgPyBmaWVsZC5kaXNwbGF5X2NvbnRleHQudG9VcHBlckNhc2UoKSA9PT0gJ1JFQURPTkxZJyA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNPcHRpb25hbChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLmRpc3BsYXlfY29udGV4dCA/IGZpZWxkLmRpc3BsYXlfY29udGV4dC50b1VwcGVyQ2FzZSgpID09PSAnT1BUSU9OQUwnIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0xhYmVsKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICBpZiAoZmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgcmV0dXJuIGZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0xhYmVsJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzRW1wdHlEYXRhKGRhdGE6IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBsZXQgYWxsRW1wdHkgPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKGRhdGEpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtwcm9wXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYWxsRW1wdHkgPSBhbGxFbXB0eSAmJiB0aGlzLmlzRW1wdHlEYXRhKHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxsRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhbGxFbXB0eTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2hvdWxkIHdlIGNsZWFyIG91dCBvcHRpb25hbCwgZW1wdHksIGNvbXBsZXggb2JqZWN0cz9cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgRmFsc2UgcHJvcGVydHkgaWYgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC5cbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gYXNzZXNzIGZvciBcImVtcHRpbmVzc1wiLlxuICAgKiBAcGFyYW0gZmllbGQgVGhlIENhc2VGaWVsZCB0aGF0IHdpbGwgdGVsbCB1cyBpZiB0aGlzIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgY2xlYXJPcHRpb25hbEVtcHR5KGNsZWFyRW1wdHk6IGJvb2xlYW4sIGRhdGE6IG9iamVjdCwgZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIGlmIChjbGVhckVtcHR5KSB7XG4gICAgICByZXR1cm4gRm9ybVZhbHVlU2VydmljZS5pc09wdGlvbmFsKGZpZWxkKSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkVHlwZVNhbml0aXNlcjogRmllbGRUeXBlU2FuaXRpc2VyKSB7XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpc2UocmF3VmFsdWU6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpc2VPYmplY3QocmF3VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXNlQ2FzZVJlZmVyZW5jZShyZWZlcmVuY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gc3RyaXAgbm9uIGRpZ2l0c1xuICAgIGNvbnN0IHM6IHN0cmluZyA9IHJlZmVyZW5jZS5yZXBsYWNlKC9bXFxEXS9nLCAnJyk7XG4gICAgaWYgKHMubGVuZ3RoID4gMTYpIHtcbiAgICAgIHJldHVybiBzLnN1YnN0cihzLmxlbmd0aCAtIDE2LCAxNik7XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cbiAgcHVibGljIGZpbHRlckN1cnJlbnRQYWdlRmllbGRzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBlZGl0Rm9ybTogYW55KTogYW55IHtcbiAgICBjb25zdCBjbG9uZUZvcm0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVkaXRGb3JtKSk7XG4gICAgT2JqZWN0LmtleXMoY2xvbmVGb3JtWydkYXRhJ10pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGNhc2VGaWVsZHMuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50LmlkID09PSBrZXkpIDwgMCkge1xuICAgICAgICBkZWxldGUgY2xvbmVGb3JtWydkYXRhJ11ba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmVGb3JtO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXNlRHluYW1pY0xpc3RzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBlZGl0Rm9ybTogYW55KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZFR5cGVTYW5pdGlzZXIuc2FuaXRpc2VMaXN0cyhjYXNlRmllbGRzLCBlZGl0Rm9ybS5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VPYmplY3QocmF3T2JqZWN0OiBvYmplY3QpOiBvYmplY3Qge1xuICAgIGlmICghcmF3T2JqZWN0KSB7XG4gICAgICByZXR1cm4gcmF3T2JqZWN0O1xuICAgIH1cblxuICAgIGxldCBzYW5pdGlzZWRPYmplY3QgPSB7fTtcbiAgICBjb25zdCBkb2N1bWVudEZpZWxkS2V5cyA9IFsnZG9jdW1lbnRfdXJsJywgJ2RvY3VtZW50X2JpbmFyeV91cmwnLCAnZG9jdW1lbnRfZmlsZW5hbWUnXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdPYmplY3QpIHtcbiAgICAgIC8vIElmIHRoZSBrZXkgaXMgb25lIG9mIGRvY3VtZW50RmllbGRLZXlzLCBpdCBtZWFucyB0aGUgZmllbGQgaXMgb2YgRG9jdW1lbnQgdHlwZS4gSWYgdGhlIHZhbHVlIG9mIGFueSBvZiB0aGVzZVxuICAgICAgLy8gcHJvcGVydGllcyBpcyBudWxsLCB0aGUgZW50aXJlIHNhbml0aXNlZCBvYmplY3QgdG8gYmUgcmV0dXJuZWQgc2hvdWxkIGJlIG51bGxcbiAgICAgIGlmIChkb2N1bWVudEZpZWxkS2V5cy5pbmRleE9mKGtleSkgPiAtMSAmJiByYXdPYmplY3Rba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3QgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoJ0Nhc2VSZWZlcmVuY2UnID09PSBrZXkpIHtcbiAgICAgICAgc2FuaXRpc2VkT2JqZWN0W2tleV0gPSB0aGlzLnNhbml0aXNlVmFsdWUodGhpcy5zYW5pdGlzZUNhc2VSZWZlcmVuY2UoU3RyaW5nKHJhd09iamVjdFtrZXldKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2FuaXRpc2VkT2JqZWN0W2tleV0gPSB0aGlzLnNhbml0aXNlVmFsdWUocmF3T2JqZWN0W2tleV0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzYW5pdGlzZWRPYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgJ3Nhbml0aXNlZCcgYXJyYXkgaXMgZW1wdHksIHdoZXJlYXMgdGhlIG9yaWdpbmFsIGFycmF5IGhhZCAxIG9yIG1vcmUgaXRlbXNcbiAgICAgICAgICAvLyBkZWxldGUgdGhlIHByb3BlcnR5IGZyb20gdGhlIHNhbmF0aXNlZCBvYmplY3RcbiAgICAgICAgICBpZiAoc2FuaXRpc2VkT2JqZWN0W2tleV0ubGVuZ3RoID09PSAwICYmIHJhd09iamVjdFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzYW5pdGlzZWRPYmplY3Rba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXNlZE9iamVjdDtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VBcnJheShyYXdBcnJheTogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFyYXdBcnJheSkge1xuICAgICAgcmV0dXJuIHJhd0FycmF5O1xuICAgIH1cblxuICAgIHJhd0FycmF5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLnNhbml0aXNlVmFsdWUoaXRlbS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBGaWx0ZXIgdGhlIGFycmF5IHRvIGVuc3VyZSBvbmx5IHRydXRoeSB2YWx1ZXMgYXJlIHJldHVybmVkOyBkb3VibGUtYmFuZyBvcGVyYXRvciByZXR1cm5zIHRoZSBib29sZWFuIHRydWUvZmFsc2VcbiAgICAvLyBhc3NvY2lhdGlvbiBvZiBhIHZhbHVlLiBJbiBhZGRpdGlvbiwgaWYgdGhlIGFycmF5IGNvbnRhaW5zIGl0ZW1zIHdpdGggYSBcInZhbHVlXCIgb2JqZWN0IHByb3BlcnR5LCByZXR1cm4gb25seVxuICAgIC8vIHRob3NlIHdob3NlIHZhbHVlIG9iamVjdCBjb250YWlucyBub24tZW1wdHkgdmFsdWVzLCBpbmNsdWRpbmcgZm9yIGFueSBkZXNjZW5kYW50IG9iamVjdHNcbiAgICByZXR1cm4gcmF3QXJyYXlcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSA/IEZpZWxkc1V0aWxzLmNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMoaXRlbS52YWx1ZSkgOiB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VWYWx1ZShyYXdWYWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXNlQXJyYXkocmF3VmFsdWUpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZW9mIHJhd1ZhbHVlKSB7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGlzZU9iamVjdChyYXdWYWx1ZSk7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gcmF3VmFsdWUudHJpbSgpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhyYXdWYWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyTm9uQ2FzZUZpZWxkcyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgZm9yIChjb25zdCBkYXRhS2V5IGluIGRhdGEpIHtcbiAgICAgIGlmICghY2FzZUZpZWxkcy5maW5kKGNmID0+IGNmLmlkID09PSBkYXRhS2V5KSkge1xuICAgICAgICBkZWxldGUgZGF0YVtkYXRhS2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUT0RPIHJlZmFjdG9yIHNvIHRoYXQgdGhpcyBhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IGZpZWxkcyBoYXZlIGEgY29tbW9uIGl0ZXJhdG9yIHRoYXQgYXBwbGllcyBmdW5jdGlvbnMgdG8gZWFjaCBub2RlIHZpc2l0ZWRcbiAgcHVibGljIHJlbW92ZU51bGxMYWJlbHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSkge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdMYWJlbCc6XG4gICAgICAgICAgICAgIC8vIERlbGV0ZSBhbnkgbGFiZWxzIHRoYXQgYXJlIG51bGxcbiAgICAgICAgICAgICAgaWYgKChkYXRhW2ZpZWxkLmlkXSA9PT0gbnVsbCkgfHwgKGRhdGFbZmllbGQuaWRdID09PSAnJykpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgICAgICAgLy8gUmVjdXJzZSBhbmQgcmVtb3ZlIGFueXRoaW5nIHVubmVjZXNzYXJ5IGZyb20gd2l0aGluIGEgY29tcGxleCBmaWVsZC5cbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdWxsTGFiZWxzKGRhdGFbZmllbGQuaWRdLCBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgLy8gR2V0IGhvbGQgb2YgdGhlIGNvbGxlY3Rpb24uXG4gICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhIGNvbGxlY3Rpb24gdG8gd29yayB3aXRoLlxuICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgY29tcGxleCBvYmplY3QsIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNsZWFyIHRoZW0gb3V0LlxuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIHJlbW92ZSBhbnkgdW5uZWNlc3NhcnkgZmllbGRzIHdpdGhpbi5cbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTnVsbExhYmVscyhpdGVtLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTnVsbExhYmVscyhpdGVtLnZhbHVlLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIFRPRE8gcmVmYWN0b3Igc28gdGhhdCB0aGlzIGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgZmllbGRzIGhhdmUgYSBjb21tb24gaXRlcmF0b3IgdGhhdCBhcHBsaWVzIGZ1bmN0aW9ucyB0byBlYWNoIG5vZGUgdmlzaXRlZFxuICBwdWJsaWMgcmVtb3ZlRW1wdHlEb2N1bWVudHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSkge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgICAgICAgLy8gUmVjdXJzZSBhbmQgcmVtb3ZlIGFueSBlbXB0eSBkb2N1bWVudHMgZnJvbSB3aXRoaW4gYSBjb21wbGV4IGZpZWxkLlxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGRhdGFbZmllbGQuaWRdLCBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgLy8gR2V0IGhvbGQgb2YgdGhlIGNvbGxlY3Rpb24uXG4gICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhIGNvbGxlY3Rpb24gdG8gd29yayB3aXRoLlxuICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgY29tcGxleCBvYmplY3QsIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNsZWFyIG91dCBlbXB0eSBkb2N1bWVudHNcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGFuZCByZW1vdmUgYW55IGVtcHR5IGRvY3VtZW50cyB3aXRoaW4uXG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGl0ZW0sIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eURvY3VtZW50cyhpdGVtLnZhbHVlLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRG9jdW1lbnQnOlxuICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhpcyBpcyBleGVjdXRlZCBvbmx5IGlmIHRoZSBEb2N1bWVudCBmaWVsZCBpcyBOT1QgaGlkZGVuIGFuZCBpcyBlbXB0eSBvZiBkYXRhOyBoaWRkZW4gRG9jdW1lbnRcbiAgICAgICAgICAgICAgLy8gZmllbGRzIGFyZSBoYW5kbGVkIGJ5IHRoZSBmaWx0ZXJSYXdGb3JtVmFsdWVzKCkgZnVuY3Rpb24gaW4gQ2FzZUVkaXRTdWJtaXQgY29tcG9uZW50XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5oaWRkZW4gIT09IHRydWUgJiYgRm9ybVZhbHVlU2VydmljZS5pc0VtcHR5RGF0YShkYXRhW2ZpZWxkLmlkXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENsZWFyIG91dCB1bm5lY2Vzc2FyeSBmaWVsZHMgZnJvbSBhIGRhdGEgb2JqZWN0LCBiYXNlZCBvbiBhbiBhcnJheSBvZiBDYXNlRmllbGRzLlxuICAgKiBUaGlzIG1ldGhvZCBpcyByZWN1cnNpdmUgYW5kIHdpbGwgY2FsbCBpdHNlbGYgaWYgaXQgZW5jb3VudGVycyBwYXJ0aWN1bGFyIGZpZWxkIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRvIGJlIHRpZGllZCB1cC5cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIENhc2VGaWVsZHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAuXG4gICAqIEBwYXJhbSBjbGVhckVtcHR5IFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBjbGVhciBvdXQgZW1wdHksIG9wdGlvbmFsLCBjb21wbGV4IG9iamVjdHMuXG4gICAqIEBwYXJhbSBjbGVhck5vbkNhc2UgV2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGNsZWFyIG91dCBub24tY2FzZSBmaWVsZHMgYXQgdGhlIHRvcCBsZXZlbC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBjbGVhckVtcHR5ID0gZmFsc2UsIGNsZWFyTm9uQ2FzZSA9IGZhbHNlLFxuICAgIGZyb21QcmV2aW91c1BhZ2UgPSBmYWxzZSwgY3VycmVudFBhZ2VDYXNlRmllbGRzID0gW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IGRhdGEgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgZm9ybSB0aGF0J3Mgbm90IGluIHRoZSBjYXNlRmllbGRzXG4gICAgICBpZiAoY2xlYXJOb25DYXNlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJOb25DYXNlRmllbGRzKGRhdGEsIGNhc2VGaWVsZHMpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmICghRm9ybVZhbHVlU2VydmljZS5pc0xhYmVsKGZpZWxkKSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzUmVhZE9ubHkoZmllbGQpKSB7XG4gICAgICAgICAgLy8gUmV0YWluIGFueXRoaW5nIHRoYXQgaXMgcmVhZG9ubHkgYW5kIG5vdCBhIGxhYmVsLlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZC5oaWRkZW4gPT09IHRydWUgJiYgZmllbGQuZGlzcGxheV9jb250ZXh0ICE9PSAnSElEREVOJyAmJiBmaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09ICdISURERU5fVEVNUCcgJiYgZmllbGQuaWQgIT09ICdjYXNlTGlua3MnICYmICFmaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlKSB7XG4gICAgICAgICAgLy8gRGVsZXRlIGFueXRoaW5nIHRoYXQgaXMgaGlkZGVuICh0aGF0IGlzIE5PVCByZWFkb25seSksIGFuZCB0aGF0XG4gICAgICAgICAgLy8gaGFzbid0IGhhZCBpdHMgZGlzcGxheV9jb250ZXh0IG92ZXJyaWRkZW4gdG8gbWFrZSBpdCBoaWRkZW4uXG4gICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkX3R5cGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnTGFiZWwnOlxuICAgICAgICAgICAgICAvLyBEZWxldGUgYW55IGxhYmVscy5cbiAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0RvY3VtZW50JzpcbiAgICAgICAgICAgICAgaWYgKEZvcm1WYWx1ZVNlcnZpY2UuaXNFbXB0eURhdGEoZGF0YVtmaWVsZC5pZF0pKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29tcGxleCc6XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoZGF0YVtmaWVsZC5pZF0sIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGNsZWFyRW1wdHkpO1xuICAgICAgICAgICAgICAvLyBBbHNvIHJlbW92ZSBhbnkgb3B0aW9uYWwgY29tcGxleCBvYmplY3RzIHRoYXQgYXJlIGNvbXBsZXRlbHkgZW1wdHkuXG4gICAgICAgICAgICAgIC8vIEVVSS00MjQ0OiBSaXRlc2gncyBmaXgsIHBhc3NpbmcgdHJ1ZSBpbnN0ZWFkIG9mIGNsZWFyRW1wdHkuXG4gICAgICAgICAgICAgIGlmIChGb3JtVmFsdWVTZXJ2aWNlLmNsZWFyT3B0aW9uYWxFbXB0eSh0cnVlLCBkYXRhW2ZpZWxkLmlkXSwgZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkYXRhW2ZpZWxkLmlkXSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGFbZmllbGQuaWRdKSAmJiBmcm9tUHJldmlvdXNQYWdlXG4gICAgICAgICAgICAgICAgJiYgY3VycmVudFBhZ2VDYXNlRmllbGRzLmZpbmRJbmRleCgoY0ZpZWxkOiBhbnkpID0+IGNGaWVsZC5pZCA9PT0gZmllbGQuaWQpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgdmFsaWQgY29sbGVjdGlvbiBkYXRhXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlSW52YWxpZENvbGxlY3Rpb25EYXRhKGRhdGEsIGZpZWxkKTtcbiAgICAgICAgICAgICAgLy8gR2V0IGhvbGQgb2YgdGhlIGNvbGxlY3Rpb24uXG4gICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhIGNvbGxlY3Rpb24gdG8gd29yayB3aXRoLlxuICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgY29tcGxleCBvYmplY3QsIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNsZWFyIHRoZW0gb3V0LlxuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIHJlbW92ZSBhbnkgdW5uZWNlc3NhcnkgZmllbGRzIHdpdGhpbi5cbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoaXRlbSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGNsZWFyRW1wdHkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGl0ZW0udmFsdWUsIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgb3V0IGFueSBNdWx0aVNlbGVjdCBsYWJlbHMuXG4gICAgRm9ybVZhbHVlU2VydmljZS5yZW1vdmVNdWx0aVNlbGVjdExhYmVscyhkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVJbnZhbGlkQ29sbGVjdGlvbkRhdGEoZGF0YTogb2JqZWN0LCBmaWVsZDogQ2FzZUZpZWxkKSB7XG4gICAgaWYgKGRhdGFbZmllbGQuaWRdICYmIGRhdGFbZmllbGQuaWRdLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgb2JqQ29sbGVjdGlvbiBvZiBkYXRhW2ZpZWxkLmlkXSkge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMob2JqQ29sbGVjdGlvbikubGVuZ3RoID09PSAxICYmIE9iamVjdC5rZXlzKG9iakNvbGxlY3Rpb24pLmluZGV4T2YoJ2lkJykgPiAtMSkge1xuICAgICAgICAgIGRhdGFbZmllbGQuaWRdID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFueSBlbXB0eSBjb2xsZWN0aW9uIGZpZWxkcyB3aGVyZSBhIHZhbHVlIG9mIGdyZWF0ZXIgdGhhbiB6ZXJvIGlzIHNwZWNpZmllZCBpbiB0aGUgZmllbGQncyB7QGxpbmsgRmllbGRUeXBlfVxuICAgKiBgbWluYCBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdHJlZSBvZiBmb3JtIHZhbHVlcyBvbiB3aGljaCB0byBwZXJmb3JtIHRoZSByZW1vdmFsXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBsaXN0IG9mIHVuZGVybHlpbmcge0BsaW5rIENhc2VGaWVsZH0gZG9tYWluIG1vZGVsIG9iamVjdHMgZm9yIGVhY2ggZmllbGRcbiAgICovXG4gIHB1YmxpYyByZW1vdmVFbXB0eUNvbGxlY3Rpb25zV2l0aE1pblZhbGlkYXRpb24oZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGNhc2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbGxlY3Rpb24nICYmIHR5cGVvZiBmaWVsZC5maWVsZF90eXBlLm1pbiA9PT0gJ251bWJlcicgJiYgZmllbGQuZmllbGRfdHlwZS5taW4gPiAwICYmXG4gICAgICAgICAgZGF0YVtmaWVsZC5pZF0gJiYgQXJyYXkuaXNBcnJheShkYXRhW2ZpZWxkLmlkXSkgJiYgZGF0YVtmaWVsZC5pZF0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBmcm9tIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGZvcm0gZGF0YSBhbnkgY2FzZSBmaWVsZHMgb2YgYSBnaXZlbiB0eXBlIG9yIHR5cGVzIHRoYXQgYXJlIG5vdCBpbnRlbmRlZCB0byBiZVxuICAgKiBwZXJzaXN0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIFwic3BlY2lhbFwiIGNhc2UgZmllbGQgdHlwZXMgZnJvbSB0aGUgZGF0YSwgc3VjaCBhcyBGbGFnTGF1bmNoZXIgb3JcbiAgICogQ29tcG9uZW50TGF1bmNoZXIgZmllbGRzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgcmVtb3ZhbCBhdCB0aGUgdG9wIGxldmVsIG9ubHlcbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKiBAcGFyYW0gdHlwZXMgQW4gYXJyYXkgb2Ygb25lIG9yIG1vcmUgZmllbGQgdHlwZXNcbiAgICovXG4gIHB1YmxpYyByZW1vdmVDYXNlRmllbGRzT2ZUeXBlKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIHR5cGVzOiBGaWVsZFR5cGVFbnVtW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCAmJiB0eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjYXNlRmllbGRzVG9SZW1vdmUgPSBjYXNlRmllbGRzLmZpbHRlcihjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCB0eXBlcykpO1xuICAgICAgZm9yIChjb25zdCBjYXNlRmllbGQgb2YgY2FzZUZpZWxkc1RvUmVtb3ZlKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhW2Nhc2VGaWVsZC5pZF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXBvcHVsYXRlIHRoZSBmb3JtIGRhdGEgZnJvbSB0aGUgdmFsdWVzIGhlbGQgaW4gdGhlIGNhc2UgZmllbGRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBwaWNrIHVwLCBmb3JcbiAgICogZWFjaCBgRmxhZ3NgIGZpZWxkLCBhbnkgZmxhZyBkZXRhaWxzIGRhdGEgbm90IGN1cnJlbnRseSBwcmVzZW50LlxuICAgKlxuICAgKiBgRmxhZ3NgIGZpZWxkcyBtYXkgYmUgY29udGFpbmVkIGluIG90aGVyIGBDYXNlRmllbGRgIGluc3RhbmNlcywgZWl0aGVyIGFzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCBmaWVsZCwgb3JcbiAgICogZmllbGRzIGluIGEgY29sbGVjdGlvbiAob3Igc3ViLWZpZWxkcyBvZiBDb21wbGV4IGZpZWxkcyBpbiBhIGNvbGxlY3Rpb24pLiBUaGVyZWZvcmUsIGl0IGlzIG5lY2Vzc2FyeSB0b1xuICAgKiBpdGVyYXRlIHRocm91Z2ggYWxsIGBDYXNlRmllbGRgcy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0cmVlIG9mIGZvcm0gdmFsdWVzIG9uIHdoaWNoIHRvIHBlcmZvcm0gdGhlIGRhdGEgcG9wdWxhdGlvblxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgbGlzdCBvZiB1bmRlcmx5aW5nIHtAbGluayBDYXNlRmllbGR9IGRvbWFpbiBtb2RlbCBvYmplY3RzIGZvciBlYWNoIGZpZWxkXG4gICAqL1xuICBwdWJsaWMgcmVwb3B1bGF0ZUZvcm1EYXRhRnJvbUNhc2VGaWVsZFZhbHVlcyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogdm9pZCB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDAgJiZcbiAgICAgIGNhc2VGaWVsZHMuZmluZEluZGV4KGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKSA+IC0xKSB7XG4gICAgICAvLyBJZ25vcmUgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgYmVjYXVzZSBpdCBkb2VzIG5vdCBob2xkIGFueSB2YWx1ZXNcbiAgICAgIGNhc2VGaWVsZHMuZmlsdGVyKGNhc2VGaWVsZCA9PiAhRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0ZsYWdMYXVuY2hlciddKSlcbiAgICAgICAgLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZGF0YSBvYmplY3QgaXMgcG9wdWxhdGVkIGZvciBhbGwgQ2FzZUZpZWxkIGtleXMgaXQgY29udGFpbnMsIGV2ZW4gaWYgZm9yIGEgZ2l2ZW5cbiAgICAgICAgICAvLyBDYXNlRmllbGQga2V5LCB0aGUgZGF0YSBvYmplY3QgaGFzIGEgZmFsc3kgdmFsdWUgKGhlbmNlIHRoZSB1c2Ugb2YgaGFzT3duUHJvcGVydHkoKSBmb3IgdGhlIGNoZWNrIGJlbG93KVxuICAgICAgICAgIC8vIFNlZSBodHRwczovL3Rvb2xzLmhtY3RzLm5ldC9qaXJhL2Jyb3dzZS9FVUktNzM3N1xuICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGNhc2VGaWVsZC5pZCkgJiYgY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyBDcmVhdGUgbmV3IG9iamVjdCBmb3IgdGhlIENhc2VGaWVsZCBJRCB3aXRoaW4gdGhlIGRhdGEgb2JqZWN0LCBpZiBuZWNlc3NhcnkgKGkuZS4gaWYgdGhlIGN1cnJlbnQgdmFsdWVcbiAgICAgICAgICAgIC8vIGlzIGZhbHN5KTsgcG9wdWxhdGUgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBDYXNlRmllbGRcbiAgICAgICAgICAgIGlmICghZGF0YVtjYXNlRmllbGQuaWRdKSB7XG4gICAgICAgICAgICAgIGRhdGFbY2FzZUZpZWxkLmlkXSA9IHt9O1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjYXNlRmllbGQudmFsdWUpLmZvckVhY2goKGtleSkgPT4gZGF0YVtjYXNlRmllbGQuaWRdW2tleV0gPSBjYXNlRmllbGQudmFsdWVba2V5XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBDb3B5IGFsbCB2YWx1ZXMgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBDYXNlRmllbGQ7IHRoaXMgZW5zdXJlcyBhbGwgbmVzdGVkIGZsYWcgZGF0YSAoZm9yIGV4YW1wbGUsIGFcbiAgICAgICAgICAgICAgLy8gRmxhZ3MgZmllbGQgd2l0aGluIGEgQ29tcGxleCBmaWVsZCBvciBhIGNvbGxlY3Rpb24gb2YgQ29tcGxleCBmaWVsZHMpIGlzIGNvcGllZCBhY3Jvc3NcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZGF0YVtjYXNlRmllbGQuaWRdKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FzZUZpZWxkLnZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgIGRhdGFbY2FzZUZpZWxkLmlkXVtrZXldID0gY2FzZUZpZWxkLnZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQb3B1bGF0ZSB0aGUgbGlua2VkIGNhc2VzIGZyb20gdGhlIGRhdGEgaGVsZCBpbiBpdHMgY29ycmVzcG9uZGluZyBDYXNlRmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdHJlZSBvZiBmb3JtIHZhbHVlcyBvbiB3aGljaCB0byBwZXJmb3JtIHRoZSBkYXRhIHBvcHVsYXRpb25cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHBvcHVsYXRlTGlua2VkQ2FzZXNEZXRhaWxzRnJvbUNhc2VGaWVsZHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjYXNlRmllbGRzLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydDb21wb25lbnRMYXVuY2hlciddKSlcbiAgICAgICAgLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eSgnY2FzZUxpbmtzJykgJiYgY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhW2Nhc2VGaWVsZC5pZF0gPSBjYXNlRmllbGQudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|