@ohioepa/oepa-ui-lib 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/lib/account-search-input/account-search-input.component.mjs +147 -0
- package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +151 -0
- package/esm2022/lib/action-btn/action-btn.component.mjs +70 -0
- package/esm2022/lib/action-btn/oepa-action-event.mjs +2 -0
- package/esm2022/lib/action-btn/oepa-action.mjs +2 -0
- package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +21 -0
- package/esm2022/lib/address/address.component.mjs +174 -0
- package/esm2022/lib/address/oepa-address.service.mjs +64 -0
- package/esm2022/lib/address/oepa-form-address.mjs +2 -0
- package/esm2022/lib/blank/blank.component.mjs +14 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +33 -0
- package/esm2022/lib/checkbox-input/checkbox-input.component.mjs +41 -0
- package/esm2022/lib/comment-modal/comment-modal.component.mjs +56 -0
- package/esm2022/lib/common-forms.module.mjs +291 -0
- package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +120 -0
- package/esm2022/lib/contact/contact.component.mjs +102 -0
- package/esm2022/lib/contact/oepa-form-contact.mjs +2 -0
- package/esm2022/lib/date-input/date-input.component.mjs +52 -0
- package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +68 -0
- package/esm2022/lib/datepicker/datepicker.component.mjs +131 -0
- package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +70 -0
- package/esm2022/lib/document/document-editor/document-editor.component.mjs +225 -0
- package/esm2022/lib/document/document-event-entity-type.mjs +7 -0
- package/esm2022/lib/document/document-event-type.mjs +7 -0
- package/esm2022/lib/document/document-event.mjs +2 -0
- package/esm2022/lib/document/document-group/document-group.component.mjs +210 -0
- package/esm2022/lib/document/document-part/document-part.component.mjs +19 -0
- package/esm2022/lib/document/document-part-editor/document-part-editor.component.mjs +296 -0
- package/esm2022/lib/document/document-placeholder-modal/document-placeholder-modal.component.mjs +49 -0
- package/esm2022/lib/document/document-section/document-section.component.mjs +226 -0
- package/esm2022/lib/document/document.service.mjs +325 -0
- package/esm2022/lib/document/group-modal/group-modal.component.mjs +46 -0
- package/esm2022/lib/document/part-modal/part-modal.component.mjs +48 -0
- package/esm2022/lib/document/portal-document-class.mjs +2 -0
- package/esm2022/lib/document/portal-document-group.mjs +2 -0
- package/esm2022/lib/document/portal-document-part.mjs +2 -0
- package/esm2022/lib/document/portal-document-placeholder.mjs +2 -0
- package/esm2022/lib/document/portal-document-section.mjs +2 -0
- package/esm2022/lib/document/portal-document-text.mjs +2 -0
- package/esm2022/lib/document/portal-document-type.mjs +2 -0
- package/esm2022/lib/document/portal-document.mjs +2 -0
- package/esm2022/lib/document/portal-email-attachment-type.mjs +2 -0
- package/esm2022/lib/document/portal-email-attachment.mjs +2 -0
- package/esm2022/lib/document/portal-email-filter.mjs +2 -0
- package/esm2022/lib/document/portal-email.mjs +2 -0
- package/esm2022/lib/document/section-modal/section-modal.component.mjs +46 -0
- package/esm2022/lib/dual-list-box/array.pipes.mjs +71 -0
- package/esm2022/lib/dual-list-box/dual-list-box.component.mjs +339 -0
- package/esm2022/lib/dual-list-box/items-moved-event.mjs +2 -0
- package/esm2022/lib/dual-list-box/list-box-item.mjs +2 -0
- package/esm2022/lib/ebiz-address/ebiz-address.component.mjs +62 -0
- package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +216 -0
- package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +38 -0
- package/esm2022/lib/edoc-attachment/edocument-attachment-metadata.mjs +2 -0
- package/esm2022/lib/edoc-attachment/edocument-attachment.mjs +2 -0
- package/esm2022/lib/edoc-attachment/edocument-reference.mjs +2 -0
- package/esm2022/lib/entity/entity.service.mjs +104 -0
- package/esm2022/lib/entity/organization-create-modal/organization-create-modal.component.mjs +307 -0
- package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs +127 -0
- package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs +304 -0
- package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +316 -0
- package/esm2022/lib/entity/person-search-input/person-search-input.component.mjs +129 -0
- package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +311 -0
- package/esm2022/lib/entity/place-create-modal/place-create-modal.component.mjs +14 -0
- package/esm2022/lib/entity/place-search-input/place-search-input.component.mjs +126 -0
- package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +216 -0
- package/esm2022/lib/esri-map/esri-map.component.mjs +416 -0
- package/esm2022/lib/file-upload/file-upload.component.mjs +148 -0
- package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +143 -0
- package/esm2022/lib/lynx-image-upload/lynx.service.mjs +47 -0
- package/esm2022/lib/masks/oepa-create-integer-mask.mjs +39 -0
- package/esm2022/lib/masks/oepa-integer-mask-args.mjs +2 -0
- package/esm2022/lib/message/message.component.mjs +19 -0
- package/esm2022/lib/message/oepa-message-type.mjs +7 -0
- package/esm2022/lib/message/oepa-message.mjs +31 -0
- package/esm2022/lib/message-list/message-list.component.mjs +24 -0
- package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +137 -0
- package/esm2022/lib/notes-modal/notes-modal.component.mjs +177 -0
- package/esm2022/lib/notes-modal/oepa-note-result.mjs +2 -0
- package/esm2022/lib/notes-modal/oepa-note.mjs +2 -0
- package/esm2022/lib/numeric-input/numeric-input.component.mjs +50 -0
- package/esm2022/lib/numeric-input.directive.mjs +76 -0
- package/esm2022/lib/oepa-error-message/oepa-error-message.component.mjs +39 -0
- package/esm2022/lib/oepa-forms.service.mjs +199 -0
- package/esm2022/lib/oepa-images.mjs +59 -0
- package/esm2022/lib/oepa-wait-message/oepa-wait-message.component.mjs +29 -0
- package/esm2022/lib/ohio-lat-long/ohio-lat-long.component.mjs +176 -0
- package/esm2022/lib/parameter/parameter.mjs +2 -0
- package/esm2022/lib/parameter/parameter.service.mjs +47 -0
- package/esm2022/lib/params-help-button/params-help-button.component.mjs +42 -0
- package/esm2022/lib/phone-number/phone-number.component.mjs +44 -0
- package/esm2022/lib/pin-modal/oepa-attestation.mjs +2 -0
- package/esm2022/lib/pin-modal/oepa-pin.mjs +2 -0
- package/esm2022/lib/pin-modal/oepa-pin.service.mjs +54 -0
- package/esm2022/lib/pin-modal/oepa-security-question.mjs +2 -0
- package/esm2022/lib/pin-modal/pin-modal.component.mjs +186 -0
- package/esm2022/lib/progress-indicator/progress-info.mjs +2 -0
- package/esm2022/lib/select-input/select-input.component.mjs +96 -0
- package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +63 -0
- package/esm2022/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.mjs +54 -0
- package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.mjs +2 -0
- package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.mjs +190 -0
- package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +89 -0
- package/esm2022/lib/start-end-timepicker/start-end-timepicker.component.mjs +126 -0
- package/esm2022/lib/table/oepa-p-column.mjs +2 -0
- package/esm2022/lib/table/oepa-table-cell-classname.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-click-event.mjs +2 -0
- package/esm2022/lib/table/oepa-table-cell-colspan.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-hidden.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-icon-classname.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-img-src.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-inner-html.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-input-component.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-not-selectable.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-value.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell.mjs +2 -0
- package/esm2022/lib/table/oepa-table-column.mjs +2 -0
- package/esm2022/lib/table/oepa-table-config.mjs +2 -0
- package/esm2022/lib/table/oepa-table-filter.mjs +2 -0
- package/esm2022/lib/table/oepa-table-filtering.directive.mjs +57 -0
- package/esm2022/lib/table/oepa-table-header.mjs +2 -0
- package/esm2022/lib/table/oepa-table-page-info.mjs +2 -0
- package/esm2022/lib/table/oepa-table-popover.mjs +2 -0
- package/esm2022/lib/table/oepa-table-row.mjs +2 -0
- package/esm2022/lib/table/oepa-table-sort-criterion.mjs +2 -0
- package/esm2022/lib/table/oepa-table-sorting.directive.mjs +57 -0
- package/esm2022/lib/table/oepa-table.mjs +2 -0
- package/esm2022/lib/table/p-table/p-table.component.mjs +826 -0
- package/esm2022/lib/table/table-data-cell/table-data-cell-click-event.mjs +2 -0
- package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +60 -0
- package/esm2022/lib/table/table-export.service.mjs +57 -0
- package/esm2022/lib/table/table-header-cell/table-header-cell.component.mjs +61 -0
- package/esm2022/lib/table/table.component.mjs +793 -0
- package/esm2022/lib/table/table.service.mjs +112 -0
- package/esm2022/lib/template-confirmation-modal/template-confirmation-modal.component.mjs +46 -0
- package/esm2022/lib/text-area-input/text-area-input.component.mjs +48 -0
- package/esm2022/lib/text-input/text-input.component.mjs +48 -0
- package/esm2022/lib/timeout-modal/timeout-modal.component.mjs +31 -0
- package/esm2022/lib/timepicker/timepicker.component.mjs +48 -0
- package/esm2022/lib/validation/form-validator.mjs +2 -0
- package/esm2022/lib/validation/validation.service.mjs +134 -0
- package/esm2022/lib/yes-no/yes-no.component.mjs +44 -0
- package/esm2022/lib/yes-no-boolean/yes-no.component.mjs +44 -0
- package/esm2022/lib/yes-no-other-input/yes-no-other-input.component.mjs +41 -0
- package/esm2022/lib/zip-code/zip-code.component.mjs +42 -0
- package/esm2022/ohioepa-oepa-ui-lib.mjs +5 -0
- package/esm2022/public-api.mjs +142 -0
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +10720 -0
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/account-search-input/account-search-input.component.d.ts +36 -0
- package/lib/account-search-modal/account-search-modal.component.d.ts +40 -0
- package/lib/action-btn/action-btn.component.d.ts +34 -0
- package/lib/action-btn/oepa-action-event.d.ts +19 -0
- package/lib/action-btn/oepa-action.d.ts +13 -0
- package/lib/action-btn-modal/action-btn-modal.component.d.ts +12 -0
- package/lib/address/address.component.d.ts +43 -0
- package/lib/address/oepa-address.service.d.ts +28 -0
- package/lib/address/oepa-form-address.d.ts +19 -0
- package/lib/blank/blank.component.d.ts +8 -0
- package/lib/checkbox/checkbox.component.d.ts +15 -0
- package/lib/checkbox-input/checkbox-input.component.d.ts +17 -0
- package/lib/comment-modal/comment-modal.component.d.ts +22 -0
- package/lib/common-forms.module.d.ts +104 -0
- package/lib/confirmation-modal/confirmation-modal.component.d.ts +49 -0
- package/lib/contact/contact.component.d.ts +33 -0
- package/lib/contact/oepa-form-contact.d.ts +58 -0
- package/lib/date-input/date-input.component.d.ts +18 -0
- package/lib/date-input-modal/date-input-modal.component.d.ts +25 -0
- package/lib/datepicker/datepicker.component.d.ts +28 -0
- package/lib/daterangepicker/daterangepicker.component.d.ts +22 -0
- package/lib/document/document-editor/document-editor.component.d.ts +34 -0
- package/lib/document/document-event-entity-type.d.ts +5 -0
- package/lib/document/document-event-type.d.ts +5 -0
- package/lib/document/document-event.d.ts +9 -0
- package/lib/document/document-group/document-group.component.d.ts +38 -0
- package/lib/document/document-part/document-part.component.d.ts +10 -0
- package/lib/document/document-part-editor/document-part-editor.component.d.ts +46 -0
- package/lib/document/document-placeholder-modal/document-placeholder-modal.component.d.ts +19 -0
- package/lib/document/document-section/document-section.component.d.ts +37 -0
- package/lib/document/document.service.d.ts +90 -0
- package/lib/document/group-modal/group-modal.component.d.ts +20 -0
- package/lib/document/part-modal/part-modal.component.d.ts +20 -0
- package/lib/document/portal-document-class.d.ts +10 -0
- package/lib/document/portal-document-group.d.ts +15 -0
- package/lib/document/portal-document-part.d.ts +22 -0
- package/lib/document/portal-document-placeholder.d.ts +12 -0
- package/lib/document/portal-document-section.d.ts +13 -0
- package/lib/document/portal-document-text.d.ts +7 -0
- package/lib/document/portal-document-type.d.ts +15 -0
- package/lib/document/portal-document.d.ts +27 -0
- package/lib/document/portal-email-attachment-type.d.ts +6 -0
- package/lib/document/portal-email-attachment.d.ts +12 -0
- package/lib/document/portal-email-filter.d.ts +12 -0
- package/lib/document/portal-email.d.ts +18 -0
- package/lib/document/section-modal/section-modal.component.d.ts +20 -0
- package/lib/dual-list-box/array.pipes.d.ts +36 -0
- package/lib/dual-list-box/dual-list-box.component.d.ts +91 -0
- package/lib/dual-list-box/items-moved-event.d.ts +11 -0
- package/lib/dual-list-box/list-box-item.d.ts +7 -0
- package/lib/ebiz-address/ebiz-address.component.d.ts +23 -0
- package/lib/edoc-attachment/edoc-attachment.component.d.ts +44 -0
- package/lib/edoc-attachment/edoc-attachment.service.d.ts +16 -0
- package/lib/edoc-attachment/edocument-attachment-metadata.d.ts +16 -0
- package/lib/edoc-attachment/edocument-attachment.d.ts +12 -0
- package/lib/edoc-attachment/edocument-reference.d.ts +5 -0
- package/lib/entity/entity.service.d.ts +31 -0
- package/lib/entity/organization-create-modal/organization-create-modal.component.d.ts +53 -0
- package/lib/entity/organization-search-input/organization-search-input.component.d.ts +34 -0
- package/lib/entity/organization-search-modal/organization-search-modal.component.d.ts +56 -0
- package/lib/entity/person-create-modal/person-create-modal.component.d.ts +53 -0
- package/lib/entity/person-search-input/person-search-input.component.d.ts +34 -0
- package/lib/entity/person-search-modal/person-search-modal.component.d.ts +56 -0
- package/lib/entity/place-create-modal/place-create-modal.component.d.ts +8 -0
- package/lib/entity/place-search-input/place-search-input.component.d.ts +34 -0
- package/lib/entity/place-search-modal/place-search-modal.component.d.ts +41 -0
- package/lib/esri-map/esri-map.component.d.ts +41 -0
- package/lib/file-upload/file-upload.component.d.ts +37 -0
- package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +36 -0
- package/lib/lynx-image-upload/lynx.service.d.ts +16 -0
- package/lib/masks/oepa-create-integer-mask.d.ts +8 -0
- package/lib/masks/oepa-integer-mask-args.d.ts +5 -0
- package/lib/message/message.component.d.ts +10 -0
- package/lib/message/oepa-message-type.d.ts +5 -0
- package/lib/message/oepa-message.d.ts +7 -0
- package/lib/message-list/message-list.component.d.ts +11 -0
- package/lib/multi-file-upload/multi-file-upload.component.d.ts +36 -0
- package/lib/notes-modal/notes-modal.component.d.ts +50 -0
- package/lib/notes-modal/oepa-note-result.d.ts +10 -0
- package/lib/notes-modal/oepa-note.d.ts +13 -0
- package/lib/numeric-input/numeric-input.component.d.ts +20 -0
- package/lib/numeric-input.directive.d.ts +19 -0
- package/lib/oepa-error-message/oepa-error-message.component.d.ts +9 -0
- package/lib/oepa-forms.service.d.ts +28 -0
- package/lib/oepa-images.d.ts +53 -0
- package/lib/oepa-wait-message/oepa-wait-message.component.d.ts +9 -0
- package/lib/ohio-lat-long/ohio-lat-long.component.d.ts +63 -0
- package/lib/parameter/parameter.d.ts +7 -0
- package/lib/parameter/parameter.service.d.ts +18 -0
- package/lib/params-help-button/params-help-button.component.d.ts +15 -0
- package/lib/phone-number/phone-number.component.d.ts +19 -0
- package/lib/pin-modal/oepa-attestation.d.ts +10 -0
- package/lib/pin-modal/oepa-pin.d.ts +26 -0
- package/lib/pin-modal/oepa-pin.service.d.ts +38 -0
- package/lib/pin-modal/oepa-security-question.d.ts +8 -0
- package/lib/pin-modal/pin-modal.component.d.ts +46 -0
- package/lib/progress-indicator/progress-info.d.ts +4 -0
- package/lib/select-input/select-input.component.d.ts +27 -0
- package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +23 -0
- package/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.d.ts +18 -0
- package/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.d.ts +10 -0
- package/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.d.ts +51 -0
- package/lib/shopping-cart/shopping-cart.service.d.ts +44 -0
- package/lib/start-end-timepicker/start-end-timepicker.component.d.ts +29 -0
- package/lib/table/oepa-p-column.d.ts +4 -0
- package/lib/table/oepa-table-cell-classname.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-click-event.d.ts +15 -0
- package/lib/table/oepa-table-cell-colspan.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-hidden.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-icon-classname.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-img-src.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-inner-html.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-input-component.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-not-selectable.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-value.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell.d.ts +66 -0
- package/lib/table/oepa-table-column.d.ts +71 -0
- package/lib/table/oepa-table-config.d.ts +72 -0
- package/lib/table/oepa-table-filter.d.ts +10 -0
- package/lib/table/oepa-table-filtering.directive.d.ts +17 -0
- package/lib/table/oepa-table-header.d.ts +9 -0
- package/lib/table/oepa-table-page-info.d.ts +22 -0
- package/lib/table/oepa-table-popover.d.ts +28 -0
- package/lib/table/oepa-table-row.d.ts +84 -0
- package/lib/table/oepa-table-sort-criterion.d.ts +4 -0
- package/lib/table/oepa-table-sorting.directive.d.ts +16 -0
- package/lib/table/oepa-table.d.ts +42 -0
- package/lib/table/p-table/p-table.component.d.ts +155 -0
- package/lib/table/table-data-cell/table-data-cell-click-event.d.ts +5 -0
- package/lib/table/table-data-cell/table-data-cell.component.d.ts +23 -0
- package/lib/table/table-export.service.d.ts +33 -0
- package/lib/table/table-header-cell/table-header-cell.component.d.ts +24 -0
- package/lib/table/table.component.d.ts +144 -0
- package/lib/table/table.service.d.ts +28 -0
- package/lib/template-confirmation-modal/template-confirmation-modal.component.d.ts +19 -0
- package/lib/text-area-input/text-area-input.component.d.ts +19 -0
- package/lib/text-input/text-input.component.d.ts +19 -0
- package/lib/timeout-modal/timeout-modal.component.d.ts +13 -0
- package/lib/timepicker/timepicker.component.d.ts +17 -0
- package/lib/validation/form-validator.d.ts +10 -0
- package/lib/validation/validation.service.d.ts +16 -0
- package/lib/yes-no/yes-no.component.d.ts +19 -0
- package/lib/yes-no-boolean/yes-no.component.d.ts +19 -0
- package/lib/yes-no-other-input/yes-no-other-input.component.d.ts +18 -0
- package/lib/zip-code/zip-code.component.d.ts +19 -0
- package/ohioepa-oepa-ui-lib-1.1.0.tgz +0 -0
- package/package.json +25 -0
- package/public-api.d.ts +138 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { EMPTY, Observable } from 'rxjs';
|
|
3
|
+
import { catchError, mergeMap, map } from 'rxjs/operators';
|
|
4
|
+
import { PlaceSearchModalComponent } from '../place-search-modal/place-search-modal.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ohioepa/oepa-common-lib";
|
|
7
|
+
import * as i2 from "ngx-bootstrap/modal";
|
|
8
|
+
import * as i3 from "../entity.service";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@angular/forms";
|
|
11
|
+
import * as i6 from "ngx-bootstrap/typeahead";
|
|
12
|
+
export class PlaceSearchInputComponent {
|
|
13
|
+
idService;
|
|
14
|
+
modalService;
|
|
15
|
+
entityService;
|
|
16
|
+
nameSearch = '';
|
|
17
|
+
nameSource;
|
|
18
|
+
componentId = '';
|
|
19
|
+
errorMessage = '';
|
|
20
|
+
searching = false;
|
|
21
|
+
group;
|
|
22
|
+
placeID = '';
|
|
23
|
+
field = '';
|
|
24
|
+
title = 'Place';
|
|
25
|
+
errorMessageAddendum = '';
|
|
26
|
+
rowLayout = false;
|
|
27
|
+
placeSelected = new EventEmitter();
|
|
28
|
+
constructor(idService, modalService, entityService) {
|
|
29
|
+
this.idService = idService;
|
|
30
|
+
this.modalService = modalService;
|
|
31
|
+
this.entityService = entityService;
|
|
32
|
+
this.nameSource = new Observable((observer) => {
|
|
33
|
+
observer.next(this.group.get(this.field)?.value);
|
|
34
|
+
}).pipe(mergeMap((token) => this.searchPlaces(token)));
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.componentId = this.idService.getComponentId(this.group);
|
|
38
|
+
if (this.placeID) {
|
|
39
|
+
const filter = {
|
|
40
|
+
id: this.placeID
|
|
41
|
+
};
|
|
42
|
+
this.searching = true;
|
|
43
|
+
this.entityService.searchPlaces(filter).subscribe(placeList => {
|
|
44
|
+
if (placeList && placeList.length == 1) {
|
|
45
|
+
this.loadPlaceInForm(placeList[0]);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.errorMessage = 'An initialization error occurred: Zero or multiple places wih id: ' + this.placeID;
|
|
49
|
+
}
|
|
50
|
+
this.searching = false;
|
|
51
|
+
}, err => {
|
|
52
|
+
this.searching = false;
|
|
53
|
+
this.errorMessage = 'An initialization error occurred: ' + err;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
this.group.get(this.field)?.valueChanges.subscribe(value => {
|
|
57
|
+
if (!value || value === '') {
|
|
58
|
+
this.placeSelected.emit(undefined);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
onPlaceSelect(e) {
|
|
63
|
+
if (e.item) {
|
|
64
|
+
this.loadPlaceInForm(e.item);
|
|
65
|
+
this.placeSelected.emit(e.item);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
loadPlaceInForm(place) {
|
|
69
|
+
let data = {};
|
|
70
|
+
data[this.field] = (place.name || '') + ' (' + place.id + ')';
|
|
71
|
+
if (place) {
|
|
72
|
+
this.group.patchValue(data);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
searchPlaces(token) {
|
|
76
|
+
this.errorMessage = '';
|
|
77
|
+
this.searching = true;
|
|
78
|
+
const filter = {
|
|
79
|
+
name: isNaN(token) ? token : undefined,
|
|
80
|
+
id: isNaN(token) ? undefined : token
|
|
81
|
+
};
|
|
82
|
+
return this.entityService.searchPlaces(filter).pipe(map((places) => {
|
|
83
|
+
this.searching = false;
|
|
84
|
+
return places;
|
|
85
|
+
}), catchError(err => {
|
|
86
|
+
this.searching = false;
|
|
87
|
+
this.errorMessage = 'An initialization error occurred: ' + err;
|
|
88
|
+
return EMPTY;
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
advancedSearch() {
|
|
92
|
+
let modal = this.modalService.show(PlaceSearchModalComponent, { class: 'modal-xl', ignoreBackdropClick: true });
|
|
93
|
+
modal.content.onPlaceSelected.subscribe(place => {
|
|
94
|
+
this.loadPlaceInForm(place);
|
|
95
|
+
this.placeSelected.emit(place);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PlaceSearchInputComponent, deps: [{ token: i1.OepaComponentIdService }, { token: i2.BsModalService }, { token: i3.EntityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PlaceSearchInputComponent, selector: "oepa-place-search-input", inputs: { group: "group", placeID: "placeID", field: "field", title: "title", errorMessageAddendum: "errorMessageAddendum", rowLayout: "rowLayout" }, outputs: { placeSelected: "placeSelected" }, ngImport: i0, template: "<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #placeTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' +\n model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\"\n [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID', 'col-sm-8': rowLayout}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onPlaceSelect($event)\" [id]=\"componentId + '_PlaceSearch'\"\n [typeaheadItemTemplate]=\"placeTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Place\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n {{errorMessageAddendum}}</small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.TypeaheadDirective, selector: "[typeahead]", inputs: ["typeahead", "typeaheadMinLength", "adaptivePosition", "isAnimated", "typeaheadWaitMs", "typeaheadOptionsLimit", "typeaheadOptionField", "typeaheadGroupField", "typeaheadOrderBy", "typeaheadAsync", "typeaheadLatinize", "typeaheadSingleWords", "typeaheadWordDelimiters", "typeaheadMultipleSearch", "typeaheadMultipleSearchDelimiters", "typeaheadPhraseDelimiters", "typeaheadItemTemplate", "optionsListTemplate", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadHideResultsOnBlur", "typeaheadSelectFirstItem", "typeaheadIsFirstItemActive", "container", "dropup"], outputs: ["typeaheadLoading", "typeaheadNoResults", "typeaheadOnSelect", "typeaheadOnPreview", "typeaheadOnBlur"], exportAs: ["bs-typeahead"] }] });
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PlaceSearchInputComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: 'oepa-place-search-input', template: "<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #placeTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' +\n model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\"\n [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID', 'col-sm-8': rowLayout}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onPlaceSelect($event)\" [id]=\"componentId + '_PlaceSearch'\"\n [typeaheadItemTemplate]=\"placeTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Place\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n {{errorMessageAddendum}}</small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>" }]
|
|
104
|
+
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }, { type: i2.BsModalService }, { type: i3.EntityService }], propDecorators: { group: [{
|
|
105
|
+
type: Input,
|
|
106
|
+
args: ['group']
|
|
107
|
+
}], placeID: [{
|
|
108
|
+
type: Input,
|
|
109
|
+
args: ['placeID']
|
|
110
|
+
}], field: [{
|
|
111
|
+
type: Input,
|
|
112
|
+
args: ['field']
|
|
113
|
+
}], title: [{
|
|
114
|
+
type: Input,
|
|
115
|
+
args: ['title']
|
|
116
|
+
}], errorMessageAddendum: [{
|
|
117
|
+
type: Input,
|
|
118
|
+
args: ['errorMessageAddendum']
|
|
119
|
+
}], rowLayout: [{
|
|
120
|
+
type: Input,
|
|
121
|
+
args: ['rowLayout']
|
|
122
|
+
}], placeSelected: [{
|
|
123
|
+
type: Output,
|
|
124
|
+
args: ['placeSelected']
|
|
125
|
+
}] } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utc2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZW50aXR5L3BsYWNlLXNlYXJjaC1pbnB1dC9wbGFjZS1zZWFyY2gtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvcGxhY2Utc2VhcmNoLWlucHV0L3BsYWNlLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7OztBQU8vRixNQUFNLE9BQU8seUJBQXlCO0lBZ0JoQjtJQUNWO0lBQ0E7SUFqQlYsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNoQixVQUFVLENBQTBCO0lBQ3BDLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixTQUFTLEdBQVksS0FBSyxDQUFDO0lBRVgsS0FBSyxDQUFhO0lBQ2hCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDdkIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixLQUFLLEdBQVcsT0FBTyxDQUFDO0lBQ1Qsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFYixhQUFhLEdBQTRCLElBQUksWUFBWSxFQUFhLENBQUM7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QyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTFGUSx5QkFBeUI7NEZBQXpCLHlCQUF5QixrUUNqQnRDLG1pREF3Qk07OzRGRFBPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7b0pBV25CLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDSSxPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0EsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNFLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDaUIsb0JBQW9CO3NCQUFsRCxLQUFLO3VCQUFDLHNCQUFzQjtnQkFDVCxTQUFTO3NCQUE1QixLQUFLO3VCQUFDLFdBQVc7Z0JBRU8sYUFBYTtzQkFBckMsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHlwZWFoZWFkTWF0Y2ggfSBmcm9tICduZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWVyZ2VNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPRVBBUGxhY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcbmltcG9ydCB7IE9FUEFFbnRpdHlGaWx0ZXIgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcbmltcG9ydCB7IFBsYWNlU2VhcmNoTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1zZWFyY2gtbW9kYWwvcGxhY2Utc2VhcmNoLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtcGxhY2Utc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VTZWFyY2hJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG5hbWVTZWFyY2ggPSAnJztcbiAgbmFtZVNvdXJjZTogT2JzZXJ2YWJsZTxPRVBBUGxhY2VbXT47XG4gIGNvbXBvbmVudElkOiBzdHJpbmcgPSAnJztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgc2VhcmNoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdncm91cCcpIGdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoJ3BsYWNlSUQnKSBwbGFjZUlEOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCdmaWVsZCcpIGZpZWxkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCd0aXRsZScpIHRpdGxlOiBzdHJpbmcgPSAnUGxhY2UnO1xuICBASW5wdXQoJ2Vycm9yTWVzc2FnZUFkZGVuZHVtJykgZXJyb3JNZXNzYWdlQWRkZW5kdW0gPSAnJztcbiAgQElucHV0KCdyb3dMYXlvdXQnKSByb3dMYXlvdXQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCdwbGFjZVNlbGVjdGVkJykgcGxhY2VTZWxlY3RlZDogRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlOiBFbnRpdHlTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm5hbWVTb3VyY2UgPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLmdyb3VwLmdldCh0aGlzLmZpZWxkKT8udmFsdWUpO1xuICAgICAgfSkucGlwZShtZXJnZU1hcCgodG9rZW46IGFueSkgPT4gdGhpcy5zZWFyY2hQbGFjZXModG9rZW4pKSk7XG4gICAgIH1cblxuICAgICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICAgIGlmICh0aGlzLnBsYWNlSUQpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyOiBPRVBBRW50aXR5RmlsdGVyID0ge1xuICAgICAgICAgIGlkOiB0aGlzLnBsYWNlSURcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hQbGFjZXMoZmlsdGVyKS5zdWJzY3JpYmUocGxhY2VMaXN0ID0+IHtcbiAgICAgICAgICBpZiAocGxhY2VMaXN0ICYmIHBsYWNlTGlzdC5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkUGxhY2VJbkZvcm0ocGxhY2VMaXN0WzBdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQW4gaW5pdGlhbGl6YXRpb24gZXJyb3Igb2NjdXJyZWQ6IFplcm8gb3IgbXVsdGlwbGUgcGxhY2VzIHdpaCBpZDogJyArIHRoaXMucGxhY2VJRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0FuIGluaXRpYWxpemF0aW9uIGVycm9yIG9jY3VycmVkOiAnICsgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMuZmllbGQpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICB0aGlzLnBsYWNlU2VsZWN0ZWQuZW1pdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIFxuICAgIHB1YmxpYyBvblBsYWNlU2VsZWN0KGU6IFR5cGVhaGVhZE1hdGNoKSB7XG4gICAgICBpZiAoZS5pdGVtKSB7XG4gICAgICAgIHRoaXMubG9hZFBsYWNlSW5Gb3JtKGUuaXRlbSk7XG4gICAgICAgIHRoaXMucGxhY2VTZWxlY3RlZC5lbWl0KGUuaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICBcbiAgICBwcml2YXRlIGxvYWRQbGFjZUluRm9ybShwbGFjZTogT0VQQVBsYWNlKSB7XG4gICAgICBsZXQgZGF0YTogYW55ID0ge307XG4gICAgICBkYXRhW3RoaXMuZmllbGRdID0gKHBsYWNlLm5hbWUgfHwgJycpICsgJyAoJyArIHBsYWNlLmlkICsgJyknO1xuICAgICAgaWYgKHBsYWNlKSB7XG4gICAgICAgIHRoaXMuZ3JvdXAucGF0Y2hWYWx1ZShkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIHByaXZhdGUgc2VhcmNoUGxhY2VzKHRva2VuOiBhbnkpOiBPYnNlcnZhYmxlPE9FUEFQbGFjZVtdPiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgZmlsdGVyOiBPRVBBRW50aXR5RmlsdGVyID0ge1xuICAgICAgICBuYW1lOiBpc05hTih0b2tlbikgPyB0b2tlbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgaWQ6IGlzTmFOKHRva2VuKSA/IHVuZGVmaW5lZCA6IHRva2VuXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHlTZXJ2aWNlLnNlYXJjaFBsYWNlcyhmaWx0ZXIpLnBpcGUoXG4gICAgICAgIG1hcCgocGxhY2VzKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gcGxhY2VzO1xuICAgICAgICB9KSwgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQW4gaW5pdGlhbGl6YXRpb24gZXJyb3Igb2NjdXJyZWQ6ICcgKyBlcnI7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIFxuICAgIHB1YmxpYyBhZHZhbmNlZFNlYXJjaCgpIHtcbiAgICAgIGxldCBtb2RhbCA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coUGxhY2VTZWFyY2hNb2RhbENvbXBvbmVudCwge2NsYXNzOiAnbW9kYWwteGwnLGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWV9KTtcbiAgICAgICg8UGxhY2VTZWFyY2hNb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5vblBsYWNlU2VsZWN0ZWQuc3Vic2NyaWJlKHBsYWNlID0+IHtcbiAgICAgICAgdGhpcy5sb2FkUGxhY2VJbkZvcm0ocGxhY2UpO1xuICAgICAgICB0aGlzLnBsYWNlU2VsZWN0ZWQuZW1pdChwbGFjZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiIGNsYXNzPVwiZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsncm93IHRleHQtcmlnaHQnOiByb3dMYXlvdXR9XCI+XG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZVRlbXBsYXRlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICA8aDU+e3sgKG1vZGVsLm5hbWUgfHwgJycpICtcbiAgICAgICAgICAgIChtb2RlbC5hZGRyZXNzTGlzdCAmJiBtb2RlbC5hZGRyZXNzTGlzdFswXSA/ICgnIC0gJyArIG1vZGVsLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3MuYWRkcmVzc0xpbmUxICsgJywgJyArXG4gICAgICAgICAgICBtb2RlbC5hZGRyZXNzTGlzdFswXS5hZGRyZXNzLmNpdHlcbiAgICAgICAgICAgICsgbW9kZWwuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcy5zdGF0ZSkgOiAnJykgKyAnICgnICsgbW9kZWwuaWQgKyAnKScgfX08L2g1PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsnY29sLXNtLTQgY29sLWZvcm0tbGFiZWwnOiByb3dMYXlvdXR9XCI+XG4gICAgICAgIHt7dGl0bGV9fVxuICAgICAgICA8c3BhbiAqbmdJZj1cInNlYXJjaGluZ1wiPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj48L3NwYW4+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiYWR2YW5jZWRTZWFyY2goKVwiPkFkdmFuY2VkIFNlYXJjaDwvYT5cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydjb2wtc20tOCc6IHJvd0xheW91dH1cIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOmdyb3VwLmNvbnRyb2xzW2ZpZWxkXT8uc3RhdHVzID09PSAnSU5WQUxJRCcsICdjb2wtc20tOCc6IHJvd0xheW91dH1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZFwiIFt0eXBlYWhlYWRdPVwibmFtZVNvdXJjZVwiIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgKHR5cGVhaGVhZE9uU2VsZWN0KT1cIm9uUGxhY2VTZWxlY3QoJGV2ZW50KVwiIFtpZF09XCJjb21wb25lbnRJZCArICdfUGxhY2VTZWFyY2gnXCJcbiAgICAgICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwicGxhY2VUZW1wbGF0ZVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwiM1wiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFBsYWNlXCI+XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e3RpdGxlfX0gaXMgcmVxdWlyZWRcbiAgICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlQWRkZW5kdW19fTwvc21hbGw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgIHt7ZXJyb3JNZXNzYWdlfX1cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { Component, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "ngx-bootstrap/modal";
|
|
5
|
+
import * as i3 from "../../oepa-forms.service";
|
|
6
|
+
import * as i4 from "../entity.service";
|
|
7
|
+
import * as i5 from "@angular/common";
|
|
8
|
+
import * as i6 from "ngx-mask";
|
|
9
|
+
import * as i7 from "ngx-bootstrap/accordion";
|
|
10
|
+
import * as i8 from "../../address/address.component";
|
|
11
|
+
import * as i9 from "../../table/table.component";
|
|
12
|
+
export class PlaceSearchModalComponent {
|
|
13
|
+
fb;
|
|
14
|
+
bsModalRef;
|
|
15
|
+
formService;
|
|
16
|
+
entityService;
|
|
17
|
+
modalFormGroup;
|
|
18
|
+
errorMessage = '';
|
|
19
|
+
inProgressMsg = '';
|
|
20
|
+
filter;
|
|
21
|
+
selectedPlace;
|
|
22
|
+
openSearchCriteria = true;
|
|
23
|
+
tableData = [];
|
|
24
|
+
tableHeader;
|
|
25
|
+
tableConfig = {
|
|
26
|
+
rowsPerPage: 5,
|
|
27
|
+
classNames: ['table-striped', 'table-bordered', 'table-sm']
|
|
28
|
+
};
|
|
29
|
+
onPlaceSelected = new EventEmitter();
|
|
30
|
+
constructor(fb, bsModalRef, formService, entityService) {
|
|
31
|
+
this.fb = fb;
|
|
32
|
+
this.bsModalRef = bsModalRef;
|
|
33
|
+
this.formService = formService;
|
|
34
|
+
this.entityService = entityService;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.createForm();
|
|
38
|
+
}
|
|
39
|
+
createForm() {
|
|
40
|
+
this.modalFormGroup = this.fb.group({
|
|
41
|
+
id: '',
|
|
42
|
+
secondaryID: '',
|
|
43
|
+
name: '',
|
|
44
|
+
address: this.fb.group(this.formService.buildAddressFormWithCountry({ state: 'OH' })),
|
|
45
|
+
areaCode: '',
|
|
46
|
+
phoneNumber: '',
|
|
47
|
+
extension: ''
|
|
48
|
+
});
|
|
49
|
+
this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);
|
|
50
|
+
}
|
|
51
|
+
getFilterFromForm() {
|
|
52
|
+
let filter = {
|
|
53
|
+
id: this.modalFormGroup.get('id')?.value,
|
|
54
|
+
secondaryID: this.modalFormGroup.get('secondaryID')?.value,
|
|
55
|
+
name: this.modalFormGroup.get('name')?.value,
|
|
56
|
+
address: this.modalFormGroup.get('address')?.get('line1')?.value,
|
|
57
|
+
city: this.modalFormGroup.get('address')?.get('city')?.value,
|
|
58
|
+
state: this.modalFormGroup.get('address')?.get('state')?.value,
|
|
59
|
+
zipCode: this.modalFormGroup.get('address')?.get('postalCode')?.value,
|
|
60
|
+
foreignState: this.modalFormGroup.get('address')?.get('foreignState')?.value,
|
|
61
|
+
country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),
|
|
62
|
+
phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,
|
|
63
|
+
phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,
|
|
64
|
+
phoneExtension: this.modalFormGroup.get('extension')?.value,
|
|
65
|
+
};
|
|
66
|
+
return filter;
|
|
67
|
+
}
|
|
68
|
+
filterIsEmpty(filter) {
|
|
69
|
+
let empty = true;
|
|
70
|
+
if (filter.id && filter.id.length > 0) {
|
|
71
|
+
empty = false;
|
|
72
|
+
}
|
|
73
|
+
if (filter.secondaryID && filter.secondaryID.length > 0) {
|
|
74
|
+
empty = false;
|
|
75
|
+
}
|
|
76
|
+
if (filter.name && filter.name.length > 0) {
|
|
77
|
+
empty = false;
|
|
78
|
+
}
|
|
79
|
+
if (filter.address && filter.address.length > 0) {
|
|
80
|
+
empty = false;
|
|
81
|
+
}
|
|
82
|
+
if (filter.city && filter.city.length > 0) {
|
|
83
|
+
empty = false;
|
|
84
|
+
}
|
|
85
|
+
if (filter.zipCode && filter.zipCode.length > 0) {
|
|
86
|
+
empty = false;
|
|
87
|
+
}
|
|
88
|
+
if (filter.country && filter.country.length > 0) {
|
|
89
|
+
empty = false;
|
|
90
|
+
}
|
|
91
|
+
if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {
|
|
92
|
+
empty = false;
|
|
93
|
+
}
|
|
94
|
+
if (filter.phoneNumber && filter.phoneNumber.length > 0) {
|
|
95
|
+
empty = false;
|
|
96
|
+
}
|
|
97
|
+
if (filter.phoneExtension && filter.phoneExtension.length > 0) {
|
|
98
|
+
empty = false;
|
|
99
|
+
}
|
|
100
|
+
return empty;
|
|
101
|
+
}
|
|
102
|
+
submitSearch() {
|
|
103
|
+
this.errorMessage = '';
|
|
104
|
+
let filter = this.getFilterFromForm();
|
|
105
|
+
if (this.filterIsEmpty(filter)) {
|
|
106
|
+
this.errorMessage = 'Please specify search criteria';
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.inProgressMsg = 'Searching...';
|
|
110
|
+
this.tableData = [];
|
|
111
|
+
this.buildTableHeader();
|
|
112
|
+
this.entityService.searchPlaces(filter).subscribe(places => {
|
|
113
|
+
this.inProgressMsg = '';
|
|
114
|
+
if (places && places.length > 0) {
|
|
115
|
+
this.openSearchCriteria = false;
|
|
116
|
+
places.forEach(place => {
|
|
117
|
+
let row = this.convertPlaceToTableRow(place);
|
|
118
|
+
this.tableData.push(row);
|
|
119
|
+
this.tableData = this.tableData.slice();
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.openSearchCriteria = true;
|
|
124
|
+
this.errorMessage = 'No places found matching search criteria. Please use the Places application to create a new place.';
|
|
125
|
+
}
|
|
126
|
+
}, err => {
|
|
127
|
+
this.inProgressMsg = '';
|
|
128
|
+
this.errorMessage = 'Search Failed: ' + err;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
buildTableHeader() {
|
|
132
|
+
this.tableHeader = {
|
|
133
|
+
columns: [
|
|
134
|
+
{ title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },
|
|
135
|
+
{ title: 'ID', id: 'id', sort: 'none', filterable: true },
|
|
136
|
+
{ title: 'Name', id: 'name', sort: 'none', filterable: true },
|
|
137
|
+
{ title: 'Secondary ID', id: 'secondaryID', sort: 'none', filterable: true },
|
|
138
|
+
{ title: 'Address', id: 'address', sort: 'none', filterable: true },
|
|
139
|
+
{ title: 'City', id: 'city', sort: 'none', filterable: true },
|
|
140
|
+
]
|
|
141
|
+
};
|
|
142
|
+
if (this.modalFormGroup.get('address')?.get('country')?.value === 'USA') {
|
|
143
|
+
this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true });
|
|
144
|
+
this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true });
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true });
|
|
148
|
+
this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true });
|
|
149
|
+
this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });
|
|
150
|
+
}
|
|
151
|
+
this.tableHeader.columns.push({ title: 'Phone', id: 'phone', sort: 'none', filterable: true });
|
|
152
|
+
}
|
|
153
|
+
convertPlaceToTableRow(place) {
|
|
154
|
+
let secondaryIDs = '';
|
|
155
|
+
let secondaryIDDescList = [];
|
|
156
|
+
if (place.secondaryIDList && place.secondaryIDList.length > 0) {
|
|
157
|
+
place.secondaryIDList.forEach(secondaryID => {
|
|
158
|
+
const matchDesc = secondaryIDDescList.find((desc) => {
|
|
159
|
+
return desc === secondaryID.description;
|
|
160
|
+
});
|
|
161
|
+
if (!matchDesc && secondaryID.endDate === null) {
|
|
162
|
+
secondaryIDDescList.push(secondaryID.description || '');
|
|
163
|
+
secondaryIDs += secondaryID.description + ', ';
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
secondaryIDs = secondaryIDs.slice(0, secondaryIDs.length - 2);
|
|
167
|
+
}
|
|
168
|
+
let cells = [
|
|
169
|
+
{ id: 'id', value: place.id },
|
|
170
|
+
{ id: 'name', value: place.name },
|
|
171
|
+
{ id: 'secondaryID', value: secondaryIDs },
|
|
172
|
+
{ id: 'address', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.addressLine1 : '' },
|
|
173
|
+
{ id: 'city', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.city : '' },
|
|
174
|
+
];
|
|
175
|
+
if (this.modalFormGroup.get('address')?.get('country')?.value === 'USA') {
|
|
176
|
+
cells.push({ id: 'state', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.state : '' });
|
|
177
|
+
cells.push({ id: 'zipCode', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.zip : '' });
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
cells.push({ id: 'foreignState', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.foreignState : '' });
|
|
181
|
+
cells.push({ id: 'foreignZip', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.foreignZip : '' });
|
|
182
|
+
cells.push({ id: 'country', value: place.addressList && place.addressList.length > 0 ? this.formService.getCountryName(place.addressList[0].address?.country || '') : '' });
|
|
183
|
+
}
|
|
184
|
+
cells.push({ id: 'phone', value: place.phoneNumberList && place.phoneNumberList.length > 0 && place.phoneNumberList[0].phoneNumber ? place.phoneNumberList[0].phoneNumber.phoneNumber?.replace(/^(\d{0,3})(\d{0,3})(\d{0,4})/, '($1) $2-$3') : '' });
|
|
185
|
+
return {
|
|
186
|
+
cells: cells,
|
|
187
|
+
dataSource: place,
|
|
188
|
+
selectable: true
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
resetSearch() {
|
|
192
|
+
this.openSearchCriteria = true;
|
|
193
|
+
this.modalFormGroup.reset();
|
|
194
|
+
this.modalFormGroup.controls['address'].get('country')?.setValue('USA');
|
|
195
|
+
this.tableData = [];
|
|
196
|
+
}
|
|
197
|
+
onRowSelect(event) {
|
|
198
|
+
this.selectedPlace = event[0].dataSource;
|
|
199
|
+
}
|
|
200
|
+
save() {
|
|
201
|
+
this.onPlaceSelected.emit(this.selectedPlace);
|
|
202
|
+
this.bsModalRef.hide();
|
|
203
|
+
}
|
|
204
|
+
getModalFormGroup(name) {
|
|
205
|
+
return this.modalFormGroup.controls[name];
|
|
206
|
+
}
|
|
207
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PlaceSearchModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.BsModalRef }, { token: i3.OepaFormsService }, { token: i4.EntityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
208
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PlaceSearchModalComponent, selector: "oepa-place-search-modal", outputs: { onPlaceSelected: "onPlaceSelected" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"form-group\">\n <label>Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group\">\n <label>Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Place List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: i7.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i7.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: i8.AddressComponent, selector: "oepa-address", inputs: ["group", "showValidation", "addressOneLabel", "addressTwoLabel", "cityLabel", "stateLabel", "zipCodeLabel", "disableState", "isSearch", "hideLine2", "line1MaxLength", "line2MaxLength", "cityMaxLength", "foreignStateLabel", "foreignZipLabel", "countryLabel", "sameAsGroup", "sameAsLabel", "sameAsChecked"] }, { kind: "component", type: i9.TableComponent, selector: "oepa-table", inputs: ["tableId", "config", "complexHeader", "header", "customBtnLabel", "customBtnVisible", "customBtnEnabled", "data", "totalRow"], outputs: ["cellClicked", "actionClicked", "rowSelected", "customBtnClicked"] }] });
|
|
209
|
+
}
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PlaceSearchModalComponent, decorators: [{
|
|
211
|
+
type: Component,
|
|
212
|
+
args: [{ selector: 'oepa-place-search-modal', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"form-group\">\n <label>Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group\">\n <label>Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Place List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>" }]
|
|
213
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.BsModalRef }, { type: i3.OepaFormsService }, { type: i4.EntityService }], propDecorators: { onPlaceSelected: [{
|
|
214
|
+
type: Output
|
|
215
|
+
}] } });
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utc2VhcmNoLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZW50aXR5L3BsYWNlLXNlYXJjaC1tb2RhbC9wbGFjZS1zZWFyY2gtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvcGxhY2Utc2VhcmNoLW1vZGFsL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZ0J4RSxNQUFNLE9BQU8seUJBQXlCO0lBaUJoQjtJQUF3QjtJQUNsQztJQUNBO0lBbEJILGNBQWMsQ0FBYTtJQUMzQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFvQjtJQUMxQixhQUFhLENBQXdCO0lBQ3JDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUUxQixTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUNwQyxXQUFXLENBQW1CO0lBQzlCLFdBQVcsR0FBb0I7UUFDcEMsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDO0tBQzlELENBQUM7SUFFUSxlQUFlLEdBQTRCLElBQUksWUFBWSxFQUFhLENBQUM7SUFFakYsWUFBb0IsRUFBZSxFQUFTLFVBQXNCLEVBQ3hELFdBQTZCLEVBQzdCLGFBQTRCO1FBRmxCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3hELGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVwQyxDQUFDO0lBRUgsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2xDLEVBQUUsRUFBRSxFQUFFO1lBQ04sV0FBVyxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsRUFBRTtZQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDcEYsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksTUFBTSxHQUFxQjtZQUM3QixFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSztZQUN4QyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztZQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSztZQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUs7WUFDaEUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1lBQzVELEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUM5RCxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUs7WUFDckUsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLO1lBQzVFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ25HLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1lBQ3pELFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLO1lBQzFELGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLO1NBQzVELENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQXdCO1FBQzVDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hELEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVELEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUQsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLGdDQUFnQyxDQUFDO1lBQ3JELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3JCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxvR0FBb0csQ0FBQztZQUMzSCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0ssZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsT0FBTyxFQUFFO2dCQUNMLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7Z0JBQzVGLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtnQkFDekQsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO2dCQUM3RCxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0JBQzVFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtnQkFDbkUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO2FBRWhFO1NBQ0osQ0FBQztRQUVGLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLEVBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUM5RixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNyRyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQzVHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3hHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBQ1Msc0JBQXNCLENBQUMsS0FBZ0I7UUFDM0MsSUFBSSxZQUFZLEdBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksbUJBQW1CLEdBQWUsRUFBRSxDQUFDO1FBQ3pDLElBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUMsQ0FBQztZQUM1RCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUEsRUFBRTtnQkFDekMsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2xELE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLE9BQU8sS0FBRyxJQUFJLEVBQUMsQ0FBQztvQkFDekMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3hELFlBQVksSUFBSSxXQUFXLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQztnQkFDakQsQ0FBQztZQUVILENBQUMsQ0FBQyxDQUFBO1lBQ0YsWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksS0FBSyxHQUFhO1lBQ3BCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM3QixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDMUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUgsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FHcEgsQ0FBQztRQUNGLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLEVBQUMsQ0FBQztZQUN0RSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNqSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuSSxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQy9JLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQzNJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzlLLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsOEJBQThCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFdFAsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQTtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDM0MsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBYyxDQUFDO0lBQ3pELENBQUM7d0dBN01VLHlCQUF5Qjs0RkFBekIseUJBQXlCLGdIQ2hCdEMsa3RLQXVHTTs7NEZEdkZPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7b0tBbUIzQixlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgT0VQQVBsYWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT0VQQUVudGl0eUZpbHRlciB9IGZyb20gJ0BvaGlvZXBhL29lcGEtZWJpei1saWInO1xuaW1wb3J0IHsgT2VwYVRhYmxlUm93IH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1yb3cnO1xuaW1wb3J0IHsgT2VwYVRhYmxlSGVhZGVyIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgT2VwYUZvcm1zU2VydmljZSB9IGZyb20gJy4uLy4uL29lcGEtZm9ybXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtcGxhY2Utc2VhcmNoLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VTZWFyY2hNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBtb2RhbEZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBpblByb2dyZXNzTXNnOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZpbHRlciE6IE9FUEFFbnRpdHlGaWx0ZXI7XG4gIHB1YmxpYyBzZWxlY3RlZFBsYWNlOiBPRVBBUGxhY2UgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBvcGVuU2VhcmNoQ3JpdGVyaWEgPSB0cnVlO1xuXG4gIHB1YmxpYyB0YWJsZURhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHVibGljIHRhYmxlSGVhZGVyITogT2VwYVRhYmxlSGVhZGVyO1xuICBwdWJsaWMgdGFibGVDb25maWc6IE9lcGFUYWJsZUNvbmZpZyA9IHtcbiAgICByb3dzUGVyUGFnZTogNSxcbiAgICBjbGFzc05hbWVzOiBbJ3RhYmxlLXN0cmlwZWQnLCAndGFibGUtYm9yZGVyZWQnLCAndGFibGUtc20nXVxufTtcblxuQE91dHB1dCgpIG9uUGxhY2VTZWxlY3RlZDogRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogT2VwYUZvcm1zU2VydmljZSxcbiAgICBwcml2YXRlIGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2UpIHsgXG5cbiAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogJycsXG4gICAgICBzZWNvbmRhcnlJRDogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFkZHJlc3M6IHRoaXMuZmIuZ3JvdXAodGhpcy5mb3JtU2VydmljZS5idWlsZEFkZHJlc3NGb3JtV2l0aENvdW50cnkoeyBzdGF0ZTogJ09IJ30pKSxcbiAgICAgIGFyZWFDb2RlOiAnJyxcbiAgICAgIHBob25lTnVtYmVyOiAnJyxcbiAgICAgIGV4dGVuc2lvbjogJydcbiAgICB9KTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdzdGF0ZScpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tRm9ybSgpOiBPRVBBRW50aXR5RmlsdGVyIHtcbiAgICBsZXQgZmlsdGVyOiBPRVBBRW50aXR5RmlsdGVyID0ge1xuICAgICAgaWQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdpZCcpPy52YWx1ZSxcbiAgICAgIHNlY29uZGFyeUlEOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnc2Vjb25kYXJ5SUQnKT8udmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnbmFtZScpPy52YWx1ZSxcbiAgICAgIGFkZHJlc3M6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnbGluZTEnKT8udmFsdWUsXG4gICAgICBjaXR5OiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NpdHknKT8udmFsdWUsXG4gICAgICBzdGF0ZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdzdGF0ZScpPy52YWx1ZSxcbiAgICAgIHppcENvZGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgncG9zdGFsQ29kZScpPy52YWx1ZSxcbiAgICAgIGZvcmVpZ25TdGF0ZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdmb3JlaWduU3RhdGUnKT8udmFsdWUsXG4gICAgICBjb3VudHJ5OiB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlDb2RlKHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSksXG4gICAgICBwaG9uZUFyZWFDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYXJlYUNvZGUnKT8udmFsdWUsXG4gICAgICBwaG9uZU51bWJlcjogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Bob25lTnVtYmVyJyk/LnZhbHVlLFxuICAgICAgcGhvbmVFeHRlbnNpb246IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdleHRlbnNpb24nKT8udmFsdWUsXG4gICAgfTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJJc0VtcHR5KGZpbHRlcjogT0VQQUVudGl0eUZpbHRlcik6IGJvb2xlYW4ge1xuICAgIGxldCBlbXB0eSA9IHRydWU7XG4gICAgaWYgKGZpbHRlci5pZCAmJiBmaWx0ZXIuaWQubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5zZWNvbmRhcnlJRCAmJiBmaWx0ZXIuc2Vjb25kYXJ5SUQubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5uYW1lICYmIGZpbHRlci5uYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuYWRkcmVzcyAmJiBmaWx0ZXIuYWRkcmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLmNpdHkgJiYgZmlsdGVyLmNpdHkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci56aXBDb2RlICYmIGZpbHRlci56aXBDb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuY291bnRyeSAmJiBmaWx0ZXIuY291bnRyeS5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZmlsdGVyLnBob25lQXJlYUNvZGUgJiYgZmlsdGVyLnBob25lQXJlYUNvZGUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZU51bWJlciAmJiBmaWx0ZXIucGhvbmVOdW1iZXIubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZUV4dGVuc2lvbiAmJiBmaWx0ZXIucGhvbmVFeHRlbnNpb24ubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdFNlYXJjaCgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGxldCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21Gb3JtKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdQbGVhc2Ugc3BlY2lmeSBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluUHJvZ3Jlc3NNc2cgPSAnU2VhcmNoaW5nLi4uJztcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICAgIHRoaXMuYnVpbGRUYWJsZUhlYWRlcigpO1xuICAgIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hQbGFjZXMoZmlsdGVyKS5zdWJzY3JpYmUocGxhY2VzID0+IHtcbiAgICAgIHRoaXMuaW5Qcm9ncmVzc01zZyA9ICcnO1xuICAgICAgaWYgKHBsYWNlcyAmJiBwbGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hDcml0ZXJpYSA9IGZhbHNlO1xuICAgICAgICBwbGFjZXMuZm9yRWFjaChwbGFjZSA9PiB7XG4gICAgICAgICAgbGV0IHJvdyA9IHRoaXMuY29udmVydFBsYWNlVG9UYWJsZVJvdyhwbGFjZSk7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaChyb3cpO1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGEuc2xpY2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ05vIHBsYWNlcyBmb3VuZCBtYXRjaGluZyBzZWFyY2ggY3JpdGVyaWEuIFBsZWFzZSB1c2UgdGhlIFBsYWNlcyBhcHBsaWNhdGlvbiB0byBjcmVhdGUgYSBuZXcgcGxhY2UuJztcbiAgICAgIH1cbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5pblByb2dyZXNzTXNnID0gJyc7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdTZWFyY2ggRmFpbGVkOiAnICsgZXJyO1xuICAgIH0pO1xuICB9XG5wcml2YXRlIGJ1aWxkVGFibGVIZWFkZXIoKXtcbiAgICB0aGlzLnRhYmxlSGVhZGVyID0ge1xuICAgICAgY29sdW1uczogW1xuICAgICAgICAgIHsgdGl0bGU6ICcnLCBpZDogJ3NlbGVjdCcsIHNvcnQ6ICdub25lJywgc2luZ2xlU2VsZWN0Q29sdW1uOiB0cnVlLCBjbGFzc05hbWU6ICdzZWxlY3QtY29sJyB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdJRCcsIGlkOiAnaWQnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnTmFtZScsIGlkOiAnbmFtZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdTZWNvbmRhcnkgSUQnLCBpZDogJ3NlY29uZGFyeUlEJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyB0aXRsZTogJ0FkZHJlc3MnLCBpZDogJ2FkZHJlc3MnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnQ2l0eScsIGlkOiAnY2l0eScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIFxuICAgICAgXVxuICB9O1xuICBcbiAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1N0YXRlJywgaWQ6ICdzdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdaaXAgQ29kZScsIGlkOiAnemlwQ29kZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduU3RhdGUnLCBpZDogJ2ZvcmVpZ25TdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduWmlwJywgaWQ6ICdmb3JlaWduWmlwJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0pXG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ2NvdW50cnknLCBpZDogJ2NvdW50cnknLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG4gIH1cbiAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1Bob25lJywgaWQ6ICdwaG9uZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KTtcbn1cbiAgcHJpdmF0ZSBjb252ZXJ0UGxhY2VUb1RhYmxlUm93KHBsYWNlOiBPRVBBUGxhY2UpOiBPZXBhVGFibGVSb3cge1xuICAgICAgbGV0IHNlY29uZGFyeUlEczpzdHJpbmc9Jyc7XG4gICAgICBsZXQgc2Vjb25kYXJ5SUREZXNjTGlzdDpBcnJheTxzdHJpbmc+PVtdO1xuICAgICAgaWYocGxhY2Uuc2Vjb25kYXJ5SURMaXN0ICYmIHBsYWNlLnNlY29uZGFyeUlETGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgcGxhY2Uuc2Vjb25kYXJ5SURMaXN0LmZvckVhY2goc2Vjb25kYXJ5SUQ9PnsgXG4gICAgICAgICAgY29uc3QgbWF0Y2hEZXNjID0gc2Vjb25kYXJ5SUREZXNjTGlzdC5maW5kKChkZXNjKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVzYyA9PT0gc2Vjb25kYXJ5SUQuZGVzY3JpcHRpb247XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoIW1hdGNoRGVzYyAmJiBzZWNvbmRhcnlJRC5lbmREYXRlPT09bnVsbCl7XG4gICAgICAgICAgICAgIHNlY29uZGFyeUlERGVzY0xpc3QucHVzaChzZWNvbmRhcnlJRC5kZXNjcmlwdGlvbiB8fCAnJyk7XG4gICAgICAgICAgICAgIHNlY29uZGFyeUlEcyArPSBzZWNvbmRhcnlJRC5kZXNjcmlwdGlvbisnLCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICB9KVxuICAgICAgICBzZWNvbmRhcnlJRHMgPSBzZWNvbmRhcnlJRHMuc2xpY2UoMCwgc2Vjb25kYXJ5SURzLmxlbmd0aC0yKTtcbiAgICAgIH1cbiAgICAgIGxldCBjZWxsczpBcnJheTxhbnk+PSBbXG4gICAgICAgIHsgaWQ6ICdpZCcsIHZhbHVlOiBwbGFjZS5pZCB9LFxuICAgICAgICB7IGlkOiAnbmFtZScsIHZhbHVlOiBwbGFjZS5uYW1lIH0sXG4gICAgICAgIHsgaWQ6ICdzZWNvbmRhcnlJRCcsIHZhbHVlOiBzZWNvbmRhcnlJRHMgfSxcbiAgICAgICAgeyBpZDogJ2FkZHJlc3MnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmFkZHJlc3NMaW5lMSAgOiAnJyB9LFxuICAgICAgICB7IGlkOiAnY2l0eScsIHZhbHVlOiBwbGFjZS5hZGRyZXNzTGlzdCAmJiBwbGFjZS5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gcGxhY2UuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uY2l0eSAgOiAnJyB9LFxuICAgICAgIFxuICAgICAgICBcbiAgICAgIF07XG4gICAgICBpZih0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09ICdVU0EnKXtcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnc3RhdGUnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnN0YXRlICA6ICcnIH0pXG4gICAgICAgIGNlbGxzLnB1c2goeyBpZDogJ3ppcENvZGUnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnppcCAgOiAnJyB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblN0YXRlJywgdmFsdWU6IHBsYWNlLmFkZHJlc3NMaXN0ICYmIHBsYWNlLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBwbGFjZS5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduU3RhdGUgIDogJycgfSlcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblppcCcsIHZhbHVlOiBwbGFjZS5hZGRyZXNzTGlzdCAmJiBwbGFjZS5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gcGxhY2UuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uZm9yZWlnblppcCAgOiAnJyB9KVxuICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdjb3VudHJ5JywgdmFsdWU6IHBsYWNlLmFkZHJlc3NMaXN0ICYmIHBsYWNlLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlOYW1lKHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmNvdW50cnkgfHwgJycpICA6ICcnIH0pXG4gICAgICB9XG4gICAgICBjZWxscy5wdXNoKHsgaWQ6ICdwaG9uZScsIHZhbHVlOiBwbGFjZS5waG9uZU51bWJlckxpc3QgJiYgcGxhY2UucGhvbmVOdW1iZXJMaXN0Lmxlbmd0aCA+IDAgJiYgcGxhY2UucGhvbmVOdW1iZXJMaXN0WzBdLnBob25lTnVtYmVyID8gcGxhY2UucGhvbmVOdW1iZXJMaXN0WzBdLnBob25lTnVtYmVyLnBob25lTnVtYmVyPy5yZXBsYWNlKC9eKFxcZHswLDN9KShcXGR7MCwzfSkoXFxkezAsNH0pLywgJygkMSkgJDItJDMnKSA6ICcnIH0pXG4gICAgICBcbiAgICByZXR1cm4ge1xuICAgICAgY2VsbHM6IGNlbGxzLFxuICAgICAgZGF0YVNvdXJjZTogcGxhY2UsXG4gICAgICBzZWxlY3RhYmxlOiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMub3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5tb2RhbEZvcm1Hcm91cC5jb250cm9sc1snYWRkcmVzcyddLmdldCgnY291bnRyeScpPy5zZXRWYWx1ZSgnVVNBJyk7XG4gICAgdGhpcy50YWJsZURhdGEgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd1NlbGVjdChldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFBsYWNlID0gZXZlbnRbMF0uZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCkge1xuICAgIHRoaXMub25QbGFjZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFBsYWNlKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIGdldE1vZGFsRm9ybUdyb3VwKG5hbWU6IHN0cmluZykgOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdIGFzIEZvcm1Hcm91cDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPkFkdmFuY2VkIFBsYWNlIFNlYXJjaDwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+XG4gICAgICAgIFxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8YWNjb3JkaW9uPlxuICAgICAgICAgICAgPGFjY29yZGlvbi1ncm91cCBwYW5lbENsYXNzPVwicGFuZWwtaW5mb1wiICNzZWFyY2hHcm91cCBbaXNPcGVuXT1cIm9wZW5TZWFyY2hDcml0ZXJpYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgYWNjb3JkaW9uLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmxvYXQteHMtcmlnaHQgYmlcIiBpZD1cInBsYWNlU2VhcmNoQ3JpdGVyaWFcIiBuYW1lPVwicGxhY2VTZWFyY2hDcml0ZXJpYVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYmktY2hldnJvbi1kb3duJzogc2VhcmNoR3JvdXA/LmlzT3BlbiwgJ2JpLWNoZXZyb24tcmlnaHQnOiAhc2VhcmNoR3JvdXA/LmlzT3Blbn1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlBsYWNlIFNlYXJjaCBDcml0ZXJpYTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm1vZGFsRm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5QbGFjZSBJRDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5OTk5OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlSURJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cImlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlBsYWNlIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlTmFtZUlucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5TZWNvbmRhcnkgSUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInNlY29uZGFyeUlESW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRhcnlJRFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxvZXBhLWFkZHJlc3MgW2dyb3VwXT1cImdldE1vZGFsRm9ybUdyb3VwKCdhZGRyZXNzJylcIiBbaXNTZWFyY2hdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3NPbmVMYWJlbD1cIkFkZHJlc3NcIiBbaGlkZUxpbmUyXT1cInRydWVcIj48L29lcGEtYWRkcmVzcz5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+QXJlYSBDb2RlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYXJlYUNvZGVJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cImFyZWFDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+UGhvbmUgTnVtYmVyPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTktOTk5OVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaG9uZU51bWJlcklucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVOdW1iZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5FeHRlbnNpb248L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgbWFzaz1cIjk5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZXh0ZW5zaW9uSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJleHRlbnNpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5Qcm9ncmVzc01zZ1wiPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWluUHJvZ3Jlc3NNc2dcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMlwiIGlkPVwic3VibWl0U2VhcmNoQnRuXCIgKGNsaWNrKT1cInN1Ym1pdFNlYXJjaCgpXCI+U2VhcmNoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwicmVzZXRTZWFyY2hCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwicmVzZXRTZWFyY2goKVwiPlJlc2V0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9hY2NvcmRpb24tZ3JvdXA+XG4gICAgICAgIDwvYWNjb3JkaW9uPlxuICAgIDxkaXYgKm5nSWY9XCJ0YWJsZURhdGEgJiYgdGFibGVEYXRhLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8Yj5QbGFjZSBMaXN0Jm5ic3A7PC9iPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+e3t0YWJsZURhdGEubGVuZ3RofX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8b2VwYS10YWJsZSB0YWJsZUlkPVwicGxhY2VTZWFyY2hUYWJsZVwiIFtjb25maWddPVwidGFibGVDb25maWdcIiBbZGF0YV09XCJ0YWJsZURhdGFcIiBbaGVhZGVyXT1cInRhYmxlSGVhZGVyXCIgKHJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0KCRldmVudClcIj5cbiAgICAgICAgICAgIDwvb2VwYS10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgZC1ibG9ja1wiPlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgICAgICAgICAge3tlcnJvck1lc3NhZ2V9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5Qcm9ncmVzc01zZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiPlxuICAgICAgICAgICAge3tpblByb2dyZXNzTXNnfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0yXCJcbiAgICAgICAgICAgICAgICBpZD1cIlNhdmVQbGFjZUJ0blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFBsYWNlIHx8IGluUHJvZ3Jlc3NNc2dcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwiQ2FuY2VsUGF5bWVudEJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|