@ampath-kenya/ngx-openmrs-formentry 2.12.25-beta.0 → 2.12.26-beta
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/.editorconfig +13 -0
- package/.prettierignore +40 -0
- package/.prettierrc +6 -0
- package/.travis.yml +17 -0
- package/README.md +36 -0
- package/angular.json +143 -0
- package/{bundles → dist/ngx-formentry/bundles}/ampath-kenya-ngx-openmrs-formentry.umd.js +4 -2
- package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +1 -0
- package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +2 -0
- package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +1 -0
- package/dist/ngx-formentry/esm2015/form-entry/form-renderer/form-renderer.component.js +655 -0
- package/dist/ngx-formentry/esm5/form-entry/form-renderer/form-renderer.component.js +217 -0
- package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +11271 -0
- package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
- package/{fesm5 → dist/ngx-formentry/fesm5}/ampath-kenya-ngx-openmrs-formentry.js +5 -3
- package/dist/ngx-formentry/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
- package/dist/ngx-formentry/package.json +35 -0
- package/package.json +74 -20
- package/scripts/build.sh +2 -0
- package/target/npmlist.json +1 -0
- package/tsconfig.json +20 -0
- package/tslint.json +96 -0
- package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +0 -1
- package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +0 -2
- package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +0 -1
- package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -653
- package/esm5/form-entry/form-renderer/form-renderer.component.js +0 -215
- package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +0 -11269
- package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
- package/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
- /package/{ampath-kenya-ngx-openmrs-formentry.d.ts → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.d.ts} +0 -0
- /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json} +0 -0
- /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json-e → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json-e} +0 -0
- /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
- /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/diacritics.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/option-list.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/option.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.style.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.component.style.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/file-preview.component.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/question-control.component.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/remote-answer.component.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-container/encounter-container.component.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-pdf-viewer.service.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-view/encounter-viewer.component.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.module.d.ts +0 -0
- /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.service.d.ts +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-control-type.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-array.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-control.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-group.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/control-extensions.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/index.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/value-change.listener.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relation.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relations.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/afe-ng-select.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/appointments-overview/appointments-overview.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/picker-modal/modal.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/pipes/moment.pipe.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/secure.pipe.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/diacritics.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option-list.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.style.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.style.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/file-preview.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/question-control.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/alert-helpers.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/can-generate-alert.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-calculators/can-calculate.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-disable.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-hide.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/data-sources.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/dummy-data-source.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/directives/historical-value-directive.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/error-renderer/error-renderer.component.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/expression-runner/expression-runner.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-entry.module.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/control-relations.factory.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-control.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-node.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.factory.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/question.factory.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/show-messages.factory.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/validation.factory.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-expression-helper-service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-field-helper-service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/js-expression-helper.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/checkbox.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/conditional-validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/decimal-point-validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/file-upload-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/group-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/base-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/data-source.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/date-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/group-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/nested-questions.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-option.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/time-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/js-expression-validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/max-validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/min-validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/models.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/multi-select-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/pair.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/question-base.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/rendering-type.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/repeating-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-option.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/test-order-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-area-input-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-input-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/time-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/ui-select-question.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/validation.model.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/debug-mode.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-errors.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-schema-compiler.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/historical-encounter-data.service.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/utils/messages.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-answered.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-required.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/date.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/future-date-restriction.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/js-expression.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max-date.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min-date.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/required.validator.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/validations.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/encounter.adapter.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs.adapter.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/order.adapter.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/value.adapter.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/public_api.js +0 -0
- /package/{esm2015 → dist/ngx-formentry/esm2015}/shared.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-control-type.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-array.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-control.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-group.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/control-extensions.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/index.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/value-change.listener.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relation.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relations.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/afe-ng-select.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/appointments-overview/appointments-overview.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/picker-modal/modal.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/pipes/moment.pipe.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/secure.pipe.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/diacritics.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option-list.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.style.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.style.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/file-preview.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/question-control.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/alert-helpers.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/can-generate-alert.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-calculators/can-calculate.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-disable.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-hide.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/data-sources.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/dummy-data-source.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/directives/historical-value-directive.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/error-renderer/error-renderer.component.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/expression-runner/expression-runner.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-entry.module.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/control-relations.factory.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-control.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-node.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.factory.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/question.factory.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/show-messages.factory.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/validation.factory.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-expression-helper-service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-field-helper-service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/js-expression-helper.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/checkbox.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/conditional-validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/decimal-point-validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/file-upload-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/group-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/base-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/data-source.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/date-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/group-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/nested-questions.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-option.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/time-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/js-expression-validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/max-validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/min-validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/models.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/multi-select-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/pair.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/question-base.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/rendering-type.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/repeating-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-option.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/test-order-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-area-input-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-input-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/time-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/ui-select-question.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/validation.model.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/debug-mode.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-errors.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-schema-compiler.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/historical-encounter-data.service.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/utils/messages.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-answered.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-required.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/date.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/future-date-restriction.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/js-expression.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max-date.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min-date.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/required.validator.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/validations.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/encounter.adapter.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs.adapter.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/order.adapter.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/value.adapter.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/public_api.js +0 -0
- /package/{esm5 → dist/ngx-formentry/esm5}/shared.module.js +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value-directive.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.css.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/decimal-point-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/time-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/time-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/utils/messages.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
- /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
- /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { Component, Input, Inject } from '@angular/core';
|
|
2
|
+
import 'hammerjs';
|
|
3
|
+
import { DEFAULT_STYLES } from './form-renderer.component.css';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
import { DataSources } from '../data-sources/data-sources';
|
|
6
|
+
import { NodeBase, GroupNode } from '../form-factory/form-node';
|
|
7
|
+
import { AfeFormGroup } from '../../abstract-controls-extension/afe-form-group';
|
|
8
|
+
import { ValidationFactory } from '../form-factory/validation.factory';
|
|
9
|
+
import { FormErrorsService } from '../services/form-errors.service';
|
|
10
|
+
// import { concat, of, Observable, Subject, BehaviorSubject } from 'rxjs';
|
|
11
|
+
// import * as _ from 'lodash';
|
|
12
|
+
// import { debounceTime, distinctUntilChanged, tap, switchMap, catchError, map } from 'rxjs/operators';
|
|
13
|
+
// import { QuestionBase } from '../question-models';
|
|
14
|
+
var FormRendererComponent = /** @class */ (function () {
|
|
15
|
+
// items$: Observable<any[]>;
|
|
16
|
+
// itemsLoading = false;
|
|
17
|
+
// itemsInput$ = new Subject<string>();
|
|
18
|
+
function FormRendererComponent(validationFactory, dataSources, formErrorsService, document) {
|
|
19
|
+
this.validationFactory = validationFactory;
|
|
20
|
+
this.dataSources = dataSources;
|
|
21
|
+
this.formErrorsService = formErrorsService;
|
|
22
|
+
this.document = document;
|
|
23
|
+
this.childComponents = [];
|
|
24
|
+
this.isCollapsed = false;
|
|
25
|
+
this.activeTab = 0;
|
|
26
|
+
}
|
|
27
|
+
FormRendererComponent.prototype.ngOnInit = function () {
|
|
28
|
+
var _this = this;
|
|
29
|
+
this.setUpRemoteSelect();
|
|
30
|
+
this.setUpFileUpload();
|
|
31
|
+
this.setUpDatepickerHolidays();
|
|
32
|
+
if (this.node && this.node.form) {
|
|
33
|
+
var tab = this.node.form.valueProcessingInfo.lastFormTab;
|
|
34
|
+
if (tab && tab !== this.activeTab) {
|
|
35
|
+
this.activeTab = tab;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (this.node && this.node.question.renderingType === 'form') {
|
|
39
|
+
this.formErrorsService.announceErrorField$.subscribe(function (error) {
|
|
40
|
+
_this.scrollToControl(error);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (this.node && this.node.question.renderingType === 'section') {
|
|
44
|
+
this.isCollapsed = !this.node.question.isExpanded;
|
|
45
|
+
}
|
|
46
|
+
if (this.parentComponent) {
|
|
47
|
+
this.parentComponent.addChildComponent(this);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
FormRendererComponent.prototype.addChildComponent = function (child) {
|
|
51
|
+
this.childComponents.push(child);
|
|
52
|
+
};
|
|
53
|
+
FormRendererComponent.prototype.setUpRemoteSelect = function () {
|
|
54
|
+
if (this.node &&
|
|
55
|
+
this.node.question.extras &&
|
|
56
|
+
this.node.question.renderingType === 'remote-select') {
|
|
57
|
+
// let selectQuestion = this.node.form.searchNodeByQuestionId(this.node.question.key)[0];
|
|
58
|
+
this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
|
|
59
|
+
/*
|
|
60
|
+
let defaltValues = of([]);
|
|
61
|
+
if (this.dataSource.resolveSelectedValue(selectQuestion.control.value)) {
|
|
62
|
+
defaltValues = this.dataSource.resolveSelectedValue(selectQuestion.control.value).pipe(
|
|
63
|
+
catchError(() => of([])), // empty list on error
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
this.items$ = concat(
|
|
67
|
+
defaltValues,
|
|
68
|
+
this.itemsInput$.pipe(
|
|
69
|
+
debounceTime(200),
|
|
70
|
+
distinctUntilChanged(),
|
|
71
|
+
tap(() => this.itemsLoading = true),
|
|
72
|
+
switchMap(term => this.dataSource.searchOptions(term).pipe(
|
|
73
|
+
catchError(() => of([])), // empty list on error
|
|
74
|
+
tap(() => {
|
|
75
|
+
this.itemsLoading = false
|
|
76
|
+
})
|
|
77
|
+
))
|
|
78
|
+
)
|
|
79
|
+
);
|
|
80
|
+
*/
|
|
81
|
+
if (this.dataSource && this.node.question.dataSourceOptions) {
|
|
82
|
+
this.dataSource.dataSourceOptions = this.node.question.dataSourceOptions;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
FormRendererComponent.prototype.setUpFileUpload = function () {
|
|
87
|
+
if (this.node &&
|
|
88
|
+
this.node.question.extras &&
|
|
89
|
+
this.node.question.renderingType === 'file') {
|
|
90
|
+
this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
|
|
91
|
+
// console.log('Key', this.node.question);
|
|
92
|
+
// console.log('Data source', this.dataSource);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
FormRendererComponent.prototype.setUpDatepickerHolidays = function () {
|
|
96
|
+
if (this.node && this.node.question && this.node.question.showHolidays) {
|
|
97
|
+
this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
FormRendererComponent.prototype.checkSection = function (node) {
|
|
101
|
+
if (node.question.renderingType === 'section') {
|
|
102
|
+
var groupChildrenHidden_1 = false;
|
|
103
|
+
var allSectionControlsHidden = Object.keys(node.children).every(function (k) {
|
|
104
|
+
var innerNode = node.children[k];
|
|
105
|
+
if (innerNode instanceof GroupNode) {
|
|
106
|
+
groupChildrenHidden_1 = Object.keys(innerNode.children).every(function (i) { return innerNode.children[i].control.hidden; });
|
|
107
|
+
}
|
|
108
|
+
return node.children[k].control.hidden || groupChildrenHidden_1;
|
|
109
|
+
});
|
|
110
|
+
return !allSectionControlsHidden;
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
};
|
|
114
|
+
FormRendererComponent.prototype.clickTab = function (tabNumber) {
|
|
115
|
+
this.activeTab = tabNumber;
|
|
116
|
+
};
|
|
117
|
+
FormRendererComponent.prototype.loadPreviousTab = function () {
|
|
118
|
+
if (!this.isCurrentTabFirst()) {
|
|
119
|
+
this.clickTab(this.activeTab - 1);
|
|
120
|
+
document.body.scrollTop = 0;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
FormRendererComponent.prototype.isCurrentTabFirst = function () {
|
|
124
|
+
return this.activeTab === 0;
|
|
125
|
+
};
|
|
126
|
+
FormRendererComponent.prototype.isCurrentTabLast = function () {
|
|
127
|
+
return this.activeTab === this.node.question['questions'].length - 1;
|
|
128
|
+
};
|
|
129
|
+
FormRendererComponent.prototype.loadNextTab = function () {
|
|
130
|
+
if (!this.isCurrentTabLast()) {
|
|
131
|
+
this.clickTab(this.activeTab + 1);
|
|
132
|
+
document.body.scrollTop = 0;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
FormRendererComponent.prototype.tabSelected = function ($event) {
|
|
136
|
+
this.activeTab = $event;
|
|
137
|
+
this.setPreviousTab();
|
|
138
|
+
};
|
|
139
|
+
FormRendererComponent.prototype.setPreviousTab = function () {
|
|
140
|
+
if (this.node && this.node.form) {
|
|
141
|
+
this.node.form.valueProcessingInfo['lastFormTab'] = this.activeTab;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
FormRendererComponent.prototype.hasErrors = function () {
|
|
145
|
+
return this.node.control.touched && !this.node.control.valid;
|
|
146
|
+
};
|
|
147
|
+
FormRendererComponent.prototype.errors = function () {
|
|
148
|
+
return this.getErrors(this.node);
|
|
149
|
+
};
|
|
150
|
+
FormRendererComponent.prototype.scrollToControl = function (error) {
|
|
151
|
+
var _this = this;
|
|
152
|
+
var tab = +error.split(',')[0];
|
|
153
|
+
var elSelector = error.split(',')[1] + 'id';
|
|
154
|
+
// the tab components
|
|
155
|
+
var tabComponent = this.childComponents[tab];
|
|
156
|
+
this.clickTab(tab);
|
|
157
|
+
setTimeout(function () {
|
|
158
|
+
// expand all sections
|
|
159
|
+
tabComponent.childComponents.forEach(function (section) {
|
|
160
|
+
section.isCollapsed = false;
|
|
161
|
+
setTimeout(function () {
|
|
162
|
+
var element = _this.document.getElementById(elSelector);
|
|
163
|
+
if (element !== null && element.focus) {
|
|
164
|
+
element.focus();
|
|
165
|
+
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
166
|
+
}
|
|
167
|
+
}, 100);
|
|
168
|
+
});
|
|
169
|
+
}, 200);
|
|
170
|
+
};
|
|
171
|
+
FormRendererComponent.prototype.onDateChanged = function (node) {
|
|
172
|
+
// console.log('Node', node);
|
|
173
|
+
this.node = node;
|
|
174
|
+
};
|
|
175
|
+
FormRendererComponent.prototype.upload = function (event) {
|
|
176
|
+
// console.log('Event', event);
|
|
177
|
+
// console.log('Data', this.dataSource);
|
|
178
|
+
};
|
|
179
|
+
FormRendererComponent.prototype.toggleInformation = function (infoId) {
|
|
180
|
+
var e = document.getElementById(infoId);
|
|
181
|
+
if (e.style.display === 'block') {
|
|
182
|
+
e.style.display = 'none';
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
e.style.display = 'block';
|
|
186
|
+
}
|
|
187
|
+
console.log('InfoId', infoId);
|
|
188
|
+
};
|
|
189
|
+
FormRendererComponent.prototype.getErrors = function (node) {
|
|
190
|
+
var errors = node.control.errors;
|
|
191
|
+
if (errors) {
|
|
192
|
+
return this.validationFactory.errors(errors, node.question);
|
|
193
|
+
}
|
|
194
|
+
return [];
|
|
195
|
+
};
|
|
196
|
+
FormRendererComponent.decorators = [
|
|
197
|
+
{ type: Component, args: [{
|
|
198
|
+
selector: 'form-renderer',
|
|
199
|
+
template: "<!--CONTAINERS-->\n<div *ngIf=\"node.question.renderingType === 'form'\">\n <div class=\"dropdown dropdown-tabs forms-dropdown\">\n <a class=\"btn dropdown-toggle\" data-toggle=\"dropdown\">\n <i class=\"fa fa-angle-double-down\"></i>\n </a>\n <ul\n class=\"dropdown-menu dropdown-menu-right forms-dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"dropdownMenu\"\n >\n <li\n *ngFor=\"let question of node.question.questions; let i = index\"\n (click)=\"clickTab(i)\"\n >\n {{ question.label }}\n </li>\n </ul>\n </div>\n <mat-tab-group\n (selectedIndexChange)=\"tabSelected($event)\"\n [selectedIndex]=\"activeTab\"\n >\n <mat-tab\n [label]=\"question.label\"\n *ngFor=\"let question of node.question.questions; let i = index\"\n >\n <div (swipeLeft)=\"loadNextTab()\" (swipeRight)=\"loadPreviousTab()\">\n <form-renderer\n [node]=\"node.children[question.key]\"\n [parentComponent]=\"this\"\n [parentGroup]=\"node.control\"\n ></form-renderer>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <div style=\"text-align: center\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"loadPreviousTab()\"\n [ngClass]=\"{ disabled: isCurrentTabFirst() }\"\n >\n <<\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"loadNextTab()\"\n [ngClass]=\"{ disabled: isCurrentTabLast() }\"\n >\n >>\n </button>\n </div>\n</div>\n<div *ngIf=\"node.question.renderingType === 'page'\">\n <!--<h2>{{node.question.label}}</h2>-->\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n ></form-renderer>\n</div>\n<div *ngIf=\"node.question.renderingType === 'section' && checkSection(node)\">\n <div class=\"panel panel-primary\">\n <div class=\"panel-heading\">\n <button\n type=\"button\"\n class=\"btn btn-primary pull-right\"\n (click)=\"isCollapsed = !isCollapsed\"\n >\n {{ isCollapsed ? 'Show' : 'Hide' }}\n </button>\n {{ node.question.label }}\n </div>\n <div class=\"panel-body\" [collapse]=\"isCollapsed\">\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n ></form-renderer>\n </div>\n </div>\n</div>\n\n<!-- MESSAGES -->\n<div\n *ngIf=\"node.control && node.control.alert && node.control.alert !== ''\"\n class=\"alert alert-warning\"\n>\n <a class=\"close\" data-dismiss=\"alert\">×</a> {{ node.control.alert }}\n</div>\n\n<!--CONTROLS-->\n\n<div\n *ngIf=\"node.question.controlType === 0\"\n class=\"form-group\"\n [formGroup]=\"parentGroup\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--LEAF CONTROL-->\n <div class=\"question-area\">\n <a\n class=\"form-tooltip pull-right\"\n (click)=\"toggleInformation(node.question.extras.id)\"\n data-placement=\"right\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n <i class=\"glyphicon glyphicon-question-sign\" aria-hidden=\"true\"></i>\n </a>\n\n <label\n *ngIf=\"node.question.label\"\n [style.color]=\"hasErrors() ? 'red' : ''\"\n class=\"control-label\"\n [attr.for]=\"node.question.key\"\n >\n {{ node.question.required ? '*' : '' }} {{ node.question.label }}\n </label>\n <div [ngSwitch]=\"node.question.renderingType\">\n <select\n class=\"form-control\"\n *ngSwitchCase=\"'select'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n >\n <option *ngFor=\"let o of node.question.options\" [ngValue]=\"o.value\">\n {{ o.label }}\n </option>\n </select>\n\n <app-file-upload\n *ngSwitchCase=\"'file'\"\n [dataSource]=\"dataSource\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n (fileChanged)=\"upload($event)\"\n >\n </app-file-upload>\n <textarea\n [placeholder]=\"node.question.placeholder\"\n [rows]=\"node.question.rows\"\n class=\"form-control\"\n *ngSwitchCase=\"'textarea'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n >\n </textarea>\n <!--\n <ng-select *ngSwitchCase=\"'remote-select'\" [items]=\"items$ | async\" bindLabel=\"label\" bindValue=\"value\" placeholder=\"{{node.question.placeholder}}\"\n [hideSelected]=\"true\" [loading]=\"itemsLoading\" [typeahead]=\"itemsInput$\" [formControlName]=\"node.question.key\" [id]=\"node.question.key + 'id'\">\n </ng-select>\n -->\n <remote-select\n *ngSwitchCase=\"'remote-select'\"\n [placeholder]=\"node.question.placeholder\"\n tabindex=\"0\"\n [dataSource]=\"dataSource\"\n [componentID]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n ></remote-select>\n <!-- \n <date-time-picker *ngSwitchCase=\"'date'\" [showTime]=\"node.question.showTime\" tabindex=\"0\" [weeks]='node.question.extras.questionOptions.weeksList'\n (onDateChange)=\"onDateChanged(node)\" [showWeeks]=\"node.question.showWeeksAdder\" [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"></date-time-picker>\n -->\n\n <ngx-date-time-picker\n *ngSwitchCase=\"'date'\"\n [showTime]=\"node.question.showTime\"\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [weeks]=\"node.question.extras.questionOptions.weeksList\"\n (onDateChange)=\"onDateChanged(node)\"\n [showWeeks]=\"node.question.showWeeksAdder\"\n [showHolidays]=\"node.question.showHolidays\"\n [dataSource]=\"dataSource\"\n ></ngx-date-time-picker>\n <ngx-time-picker \n *ngSwitchCase=\"'time'\" \n id=\"node.question.key + 'id'\" \n [formControlName]=\"node.question.key\"\n ></ngx-time-picker>\n <ng-select\n *ngSwitchCase=\"'multi-select'\"\n [style.height]=\"'auto'\"\n [style.overflow-x]=\"'hidden'\"\n tabindex=\"0\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [options]=\"node.question.options\"\n [multiple]=\"true\"\n >\n </ng-select>\n <ng-select\n *ngSwitchCase=\"'single-select'\"\n [style.height]=\"auto\"\n tabindex=\"0\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [options]=\"node.question.options\"\n [multiple]=\"false\"\n >\n </ng-select>\n <input\n class=\"form-control\"\n *ngSwitchCase=\"'number'\"\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder\"\n [type]=\"'number'\"\n [id]=\"node.question.key + 'id'\"\n [step]=\"'any'\"\n [min]=\"node.question.extras.questionOptions.min\"\n [max]=\"node.question.extras.questionOptions.max\"\n />\n <input\n class=\"form-control\"\n *ngSwitchCase=\"'decimal'\"\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder\"\n [type]=\"'text'\"\n [id]=\"node.question.key + 'id'\"\n [min]=\"node.question.extras.questionOptions.min\"\n [max]=\"node.question.extras.questionOptions.max\"\n />\n <input\n class=\"form-control\"\n *ngSwitchDefault\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder\"\n [type]=\"node.question.renderingType\"\n [id]=\"node.question.key + 'id'\"\n />\n\n <div *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let o of node.question.options\">\n <label class=\"form-control no-border\">\n <input\n type=\"radio\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [value]=\"o.value\"\n />\n {{ o.label }}\n </label>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'checkbox'\">\n <checkbox\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [options]=\"node.question.options\"\n [selected]=\"node.control.value\"\n ></checkbox>\n </div>\n\n <div\n *ngIf=\"\n node.question.enableHistoricalValue && node.question.historicalDisplay\n \"\n style=\"margin-top: 2px\"\n >\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-xs-9\">\n <span class=\"text-warning\">Previous Value: </span>\n <strong>{{ node.question.historicalDisplay?.text }}</strong>\n <span *ngIf=\"node.question.showHistoricalValueDate\">\n <span> | </span>\n <strong class=\"text-primary\"\n >{{ node.question.historicalDisplay?._date }}\n </strong>\n <span\n class=\"text-primary\"\n *ngIf=\"\n node.question.historicalDisplay &&\n node.question.historicalDisplay._date\n \"\n >\n ({{ node.question.historicalDisplay._date | timeAgo }})</span\n >\n </span>\n </div>\n <button\n type=\"button\"\n [node]=\"node\"\n [name]=\"'historyValue'\"\n class=\"btn btn-primary btn-small col-xs-3\"\n >\n Use Value\n </button>\n </div>\n </div>\n </div>\n <appointments-overview [node]=\"node\"></appointments-overview>\n <div *ngIf=\"hasErrors()\">\n <p *ngFor=\"let e of errors()\">\n <span class=\"text-danger\">{{ e }}</span>\n </p>\n </div>\n </div>\n\n <div\n class=\"question-info col-md-12 col-lg-12 col-sm-12\"\n id=\"{{ node.question.extras.id }}\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n {{ node.question.extras.questionInfo }}\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 1\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--ARRAY CONTROL-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div class=\"well\" style=\"padding: 2px\" *ngSwitchCase=\"'repeating'\">\n <h4 style=\"margin: 2px; font-weight: bold\">{{ node.question.label }}</h4>\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 2px;\n \"\n />\n <div [ngSwitch]=\"node.question.extras.type\">\n <div *ngSwitchCase=\"'testOrder'\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n ></form-renderer>\n <div>{{ child.orderNumber }}</div>\n <button\n type=\"button \"\n class=\"btn btn-sm btn-danger\"\n (click)=\"node.removeAt(i)\"\n >\n Remove\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'obsGroup'\" style=\"margin-bottom: 20px\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n ></form-renderer>\n <button\n type=\"button \"\n class=\"btn btn-sm btn-danger\"\n (click)=\"node.removeAt(i)\"\n >\n Remove\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n </div>\n <button\n type=\"button \"\n class=\"btn btn-primary\"\n (click)=\"node.createChildNode()\"\n >\n Add\n </button>\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 2\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--GROUP-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div *ngSwitchCase=\"'group'\">\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n ></form-renderer>\n </div>\n <div\n *ngSwitchCase=\"'field-set'\"\n style=\"border: 1px solid #eeeeee; padding: 2px; margin: 2px\"\n >\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n ></form-renderer>\n </div>\n </div>\n</div>\n",
|
|
200
|
+
styles: ['../../style/app.css', DEFAULT_STYLES]
|
|
201
|
+
},] },
|
|
202
|
+
];
|
|
203
|
+
FormRendererComponent.ctorParameters = function () { return [
|
|
204
|
+
{ type: ValidationFactory },
|
|
205
|
+
{ type: DataSources },
|
|
206
|
+
{ type: FormErrorsService },
|
|
207
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
|
|
208
|
+
]; };
|
|
209
|
+
FormRendererComponent.propDecorators = {
|
|
210
|
+
parentComponent: [{ type: Input }],
|
|
211
|
+
node: [{ type: Input }],
|
|
212
|
+
parentGroup: [{ type: Input }]
|
|
213
|
+
};
|
|
214
|
+
return FormRendererComponent;
|
|
215
|
+
}());
|
|
216
|
+
export { FormRendererComponent };
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1wYXRoLWtlbnlhL25neC1vcGVubXJzLWZvcm1lbnRyeS8iLCJzb3VyY2VzIjpbImZvcm0tZW50cnkvZm9ybS1yZW5kZXJlci9mb3JtLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBWSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsMkVBQTJFO0FBQzNFLCtCQUErQjtBQUUvQix3R0FBd0c7QUFDeEcscURBQXFEO0FBRXJEO0lBNGNFLDZCQUE2QjtJQUM3Qix3QkFBd0I7SUFDeEIsdUNBQXVDO0lBRXZDLCtCQUNVLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixpQkFBb0MsRUFDbEIsUUFBYTtRQUgvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQWpCbEMsb0JBQWUsR0FBNEIsRUFBRSxDQUFDO1FBTTlDLGdCQUFX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QWM7UUFDOUIsSUFBTSxNQUFNLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFeEMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDWixDQUFDOztnQkFycUJGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLCt4Y0EwYlg7b0JBQ0MsTUFBTSxFQUFFLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDO2lCQUNoRDs7O2dCQXhjUSxpQkFBaUI7Z0JBSGpCLFdBQVc7Z0JBS1gsaUJBQWlCO2dEQTRkckIsTUFBTSxTQUFDLFFBQVE7OztrQ0FwQmpCLEtBQUs7dUJBQ0wsS0FBSzs4QkFDTCxLQUFLOztJQW9PUiw0QkFBQztDQUFBLEFBdHFCRCxJQXNxQkM7U0F2T1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBJbmplY3QsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAnaGFtbWVyanMnO1xuaW1wb3J0IHsgREVGQVVMVF9TVFlMRVMgfSBmcm9tICcuL2Zvcm0tcmVuZGVyZXIuY29tcG9uZW50LmNzcyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRhU291cmNlcyB9IGZyb20gJy4uL2RhdGEtc291cmNlcy9kYXRhLXNvdXJjZXMnO1xuaW1wb3J0IHsgTm9kZUJhc2UsIExlYWZOb2RlLCBHcm91cE5vZGUgfSBmcm9tICcuLi9mb3JtLWZhY3RvcnkvZm9ybS1ub2RlJztcbmltcG9ydCB7IEFmZUZvcm1Hcm91cCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0LWNvbnRyb2xzLWV4dGVuc2lvbi9hZmUtZm9ybS1ncm91cCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRmFjdG9yeSB9IGZyb20gJy4uL2Zvcm0tZmFjdG9yeS92YWxpZGF0aW9uLmZhY3RvcnknO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscy9pbnRlcmZhY2VzL2RhdGEtc291cmNlJztcbmltcG9ydCB7IEZvcm1FcnJvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS1lcnJvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbkdyb3VwIH0gZnJvbSAnLi4vcXVlc3Rpb24tbW9kZWxzL2dyb3VwLXF1ZXN0aW9uJztcbi8vIGltcG9ydCB7IGNvbmNhdCwgb2YsIE9ic2VydmFibGUsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuLy8gaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG4vLyBpbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuLy8gaW1wb3J0IHsgUXVlc3Rpb25CYXNlIH0gZnJvbSAnLi4vcXVlc3Rpb24tbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgPCEtLUNPTlRBSU5FUlMtLT5cbjxkaXYgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdmb3JtJ1wiPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24gZHJvcGRvd24tdGFicyBmb3Jtcy1kcm9wZG93blwiPlxuICAgIDxhIGNsYXNzPVwiYnRuIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLWRvd25cIj48L2k+XG4gICAgPC9hPlxuICAgIDx1bFxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQgZm9ybXMtZHJvcGRvd24tbWVudVwiXG4gICAgICByb2xlPVwibWVudVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIlxuICAgID5cbiAgICAgIDxsaVxuICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAoY2xpY2spPVwiY2xpY2tUYWIoaSlcIlxuICAgICAgPlxuICAgICAgICB7eyBxdWVzdGlvbi5sYWJlbCB9fVxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPG1hdC10YWItZ3JvdXBcbiAgICAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJ0YWJTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICBbc2VsZWN0ZWRJbmRleF09XCJhY3RpdmVUYWJcIlxuICA+XG4gICAgPG1hdC10YWJcbiAgICAgIFtsYWJlbF09XCJxdWVzdGlvbi5sYWJlbFwiXG4gICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgID5cbiAgICAgIDxkaXYgKHN3aXBlTGVmdCk9XCJsb2FkTmV4dFRhYigpXCIgKHN3aXBlUmlnaHQpPVwibG9hZFByZXZpb3VzVGFiKClcIj5cbiAgICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgICAgW3BhcmVudEdyb3VwXT1cIm5vZGUuY29udHJvbFwiXG4gICAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC10YWI+XG4gIDwvbWF0LXRhYi1ncm91cD5cblxuICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwibG9hZFByZXZpb3VzVGFiKClcIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNDdXJyZW50VGFiRmlyc3QoKSB9XCJcbiAgICA+XG4gICAgICAmbHQ7Jmx0O1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgKGNsaWNrKT1cImxvYWROZXh0VGFiKClcIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNDdXJyZW50VGFiTGFzdCgpIH1cIlxuICAgID5cbiAgICAgICZndDsmZ3Q7XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAncGFnZSdcIj5cbiAgPCEtLTxoMj57e25vZGUucXVlc3Rpb24ubGFiZWx9fTwvaDI+LS0+XG4gIDxmb3JtLXJlbmRlcmVyXG4gICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgIFtub2RlXT1cIm5vZGUuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgW3BhcmVudEdyb3VwXT1cInBhcmVudEdyb3VwXCJcbiAgPjwvZm9ybS1yZW5kZXJlcj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3NlY3Rpb24nICYmIGNoZWNrU2VjdGlvbihub2RlKVwiPlxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtcHJpbWFyeVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBwdWxsLXJpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cImlzQ29sbGFwc2VkID0gIWlzQ29sbGFwc2VkXCJcbiAgICAgID5cbiAgICAgICAge3sgaXNDb2xsYXBzZWQgPyAnU2hvdycgOiAnSGlkZScgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAge3sgbm9kZS5xdWVzdGlvbi5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgW2NvbGxhcHNlXT1cImlzQ29sbGFwc2VkXCI+XG4gICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICBbcGFyZW50R3JvdXBdPVwicGFyZW50R3JvdXBcIlxuICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBNRVNTQUdFUyAtLT5cbjxkaXZcbiAgKm5nSWY9XCJub2RlLmNvbnRyb2wgJiYgbm9kZS5jb250cm9sLmFsZXJ0ICYmIG5vZGUuY29udHJvbC5hbGVydCAhPT0gJydcIlxuICBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIlxuPlxuICA8YSBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwiYWxlcnRcIj4mdGltZXM7PC9hPiB7eyBub2RlLmNvbnRyb2wuYWxlcnQgfX1cbjwvZGl2PlxuXG48IS0tQ09OVFJPTFMtLT5cblxuPGRpdlxuICAqbmdJZj1cIm5vZGUucXVlc3Rpb24uY29udHJvbFR5cGUgPT09IDBcIlxuICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICBbZm9ybUdyb3VwXT1cInBhcmVudEdyb3VwXCJcbiAgW2hpZGRlbl09XCJub2RlLmNvbnRyb2wuaGlkZGVuXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogbm9kZS5jb250cm9sLmRpc2FibGVkIH1cIlxuPlxuICA8IS0tTEVBRiBDT05UUk9MLS0+XG4gIDxkaXYgY2xhc3M9XCJxdWVzdGlvbi1hcmVhXCI+XG4gICAgPGFcbiAgICAgIGNsYXNzPVwiZm9ybS10b29sdGlwIHB1bGwtcmlnaHRcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUluZm9ybWF0aW9uKG5vZGUucXVlc3Rpb24uZXh0cmFzLmlkKVwiXG4gICAgICBkYXRhLXBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIG5vZGUucXVlc3Rpb24gJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAhPT0gJycgJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICE9PSAnICdcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgPC9hPlxuXG4gICAgPGxhYmVsXG4gICAgICAqbmdJZj1cIm5vZGUucXVlc3Rpb24ubGFiZWxcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImhhc0Vycm9ycygpID8gJ3JlZCcgOiAnJ1wiXG4gICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgW2F0dHIuZm9yXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICA+XG4gICAgICB7eyBub2RlLnF1ZXN0aW9uLnJlcXVpcmVkID8gJyonIDogJycgfX0ge3sgbm9kZS5xdWVzdGlvbi5sYWJlbCB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlXCI+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3QnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIG5vZGUucXVlc3Rpb24ub3B0aW9uc1wiIFtuZ1ZhbHVlXT1cIm8udmFsdWVcIj5cbiAgICAgICAgICB7eyBvLmxhYmVsIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG5cbiAgICAgIDxhcHAtZmlsZS11cGxvYWRcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidmaWxlJ1wiXG4gICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIChmaWxlQ2hhbmdlZCk9XCJ1cGxvYWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L2FwcC1maWxlLXVwbG9hZD5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwibm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlclwiXG4gICAgICAgIFtyb3dzXT1cIm5vZGUucXVlc3Rpb24ucm93c1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICA+XG4gICAgICA8L3RleHRhcmVhPlxuICAgICAgPCEtLVxuICAgICAgPG5nLXNlbGVjdCAqbmdTd2l0Y2hDYXNlPVwiJ3JlbW90ZS1zZWxlY3QnXCIgW2l0ZW1zXT1cIml0ZW1zJCB8IGFzeW5jXCIgYmluZExhYmVsPVwibGFiZWxcIiBiaW5kVmFsdWU9XCJ2YWx1ZVwiIHBsYWNlaG9sZGVyPVwie3tub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyfX1cIlxuICAgICAgICBbaGlkZVNlbGVjdGVkXT1cInRydWVcIiBbbG9hZGluZ109XCJpdGVtc0xvYWRpbmdcIiAgW3R5cGVhaGVhZF09XCJpdGVtc0lucHV0JFwiIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIiBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCI+XG4gICAgICA8L25nLXNlbGVjdD5cbiAgICAtLT5cbiAgICAgIDxyZW1vdGUtc2VsZWN0XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCIncmVtb3RlLXNlbGVjdCdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwibm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlclwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgICBbY29tcG9uZW50SURdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgPjwvcmVtb3RlLXNlbGVjdD5cbiAgICAgIDwhLS0gIFxuICAgICAgPGRhdGUtdGltZS1waWNrZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiIFtzaG93VGltZV09XCJub2RlLnF1ZXN0aW9uLnNob3dUaW1lXCIgdGFiaW5kZXg9XCIwXCIgW3dlZWtzXT0nbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLndlZWtzTGlzdCdcbiAgICAgICAgKG9uRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2VkKG5vZGUpXCIgW3Nob3dXZWVrc109XCJub2RlLnF1ZXN0aW9uLnNob3dXZWVrc0FkZGVyXCIgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIj48L2RhdGUtdGltZS1waWNrZXI+XG4gIC0tPlxuXG4gICAgICA8bmd4LWRhdGUtdGltZS1waWNrZXJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiXG4gICAgICAgIFtzaG93VGltZV09XCJub2RlLnF1ZXN0aW9uLnNob3dUaW1lXCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbd2Vla3NdPVwibm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLndlZWtzTGlzdFwiXG4gICAgICAgIChvbkRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlZChub2RlKVwiXG4gICAgICAgIFtzaG93V2Vla3NdPVwibm9kZS5xdWVzdGlvbi5zaG93V2Vla3NBZGRlclwiXG4gICAgICAgIFtzaG93SG9saWRheXNdPVwibm9kZS5xdWVzdGlvbi5zaG93SG9saWRheXNcIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgID48L25neC1kYXRlLXRpbWUtcGlja2VyPlxuICAgICAgPG5neC10aW1lLXBpY2tlciAgXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCIgIFxuICAgICAgaWQ9XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIiAgXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgID48L25neC10aW1lLXBpY2tlcj5cbiAgICAgIDxuZy1zZWxlY3RcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zZWxlY3QnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCInYXV0bydcIlxuICAgICAgICBbc3R5bGUub3ZlcmZsb3cteF09XCInaGlkZGVuJ1wiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW29wdGlvbnNdPVwibm9kZS5xdWVzdGlvbi5vcHRpb25zXCJcbiAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgICA8bmctc2VsZWN0XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInc2luZ2xlLXNlbGVjdCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImF1dG9cIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtvcHRpb25zXT1cIm5vZGUucXVlc3Rpb24ub3B0aW9uc1wiXG4gICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICA8L25nLXNlbGVjdD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW3N0ZXBdPVwiJ2FueSdcIlxuICAgICAgICBbbWluXT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5taW5cIlxuICAgICAgICBbbWF4XT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5tYXhcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGVjaW1hbCdcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwibm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlclwiXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbbWluXT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5taW5cIlxuICAgICAgICBbbWF4XT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5tYXhcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGVcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidyYWRpbydcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbyBvZiBub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiby52YWx1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge3sgby5sYWJlbCB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cbiAgICAgICAgPGNoZWNrYm94XG4gICAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwibm9kZS5xdWVzdGlvbi5vcHRpb25zXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwibm9kZS5jb250cm9sLnZhbHVlXCJcbiAgICAgICAgPjwvY2hlY2tib3g+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIG5vZGUucXVlc3Rpb24uZW5hYmxlSGlzdG9yaWNhbFZhbHVlICYmIG5vZGUucXVlc3Rpb24uaGlzdG9yaWNhbERpc3BsYXlcbiAgICAgICAgXCJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAycHhcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC13YXJuaW5nXCI+UHJldmlvdXMgVmFsdWU6IDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5Py50ZXh0IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5zaG93SGlzdG9yaWNhbFZhbHVlRGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPiB8IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwidGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgID57eyBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5Py5fZGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5ICYmXG4gICAgICAgICAgICAgICAgICAgIG5vZGUucXVlc3Rpb24uaGlzdG9yaWNhbERpc3BsYXkuX2RhdGVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKHt7IG5vZGUucXVlc3Rpb24uaGlzdG9yaWNhbERpc3BsYXkuX2RhdGUgfCB0aW1lQWdvIH19KTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiJ2hpc3RvcnlWYWx1ZSdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21hbGwgY29sLXhzLTNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBVc2UgVmFsdWVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFwcG9pbnRtZW50cy1vdmVydmlldyBbbm9kZV09XCJub2RlXCI+PC9hcHBvaW50bWVudHMtb3ZlcnZpZXc+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaGFzRXJyb3JzKClcIj5cbiAgICAgICAgPHAgKm5nRm9yPVwibGV0IGUgb2YgZXJyb3JzKClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3sgZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInF1ZXN0aW9uLWluZm8gY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wtc20tMTJcIlxuICAgICAgaWQ9XCJ7eyBub2RlLnF1ZXN0aW9uLmV4dHJhcy5pZCB9fVwiXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBub2RlLnF1ZXN0aW9uICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gIT09ICcnICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAhPT0gJyAnXG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICAqbmdJZj1cIm5vZGUucXVlc3Rpb24uY29udHJvbFR5cGUgPT09IDFcIlxuICBbaGlkZGVuXT1cIm5vZGUuY29udHJvbC5oaWRkZW5cIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBub2RlLmNvbnRyb2wuZGlzYWJsZWQgfVwiXG4+XG4gIDwhLS1BUlJBWSBDT05UUk9MLS0+XG4gIDxkaXYgW25nU3dpdGNoXT1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3ZWxsXCIgc3R5bGU9XCJwYWRkaW5nOiAycHhcIiAqbmdTd2l0Y2hDYXNlPVwiJ3JlcGVhdGluZydcIj5cbiAgICAgIDxoNCBzdHlsZT1cIm1hcmdpbjogMnB4OyBmb250LXdlaWdodDogYm9sZFwiPnt7IG5vZGUucXVlc3Rpb24ubGFiZWwgfX08L2g0PlxuICAgICAgPGhyXG4gICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMnB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwibm9kZS5xdWVzdGlvbi5leHRyYXMudHlwZVwiPlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIndGVzdE9yZGVyJ1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjaGlsZC5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgICBbbm9kZV09XCJjaGlsZC5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgICAgICAgW3BhcmVudEdyb3VwXT1cImNoaWxkLmNvbnRyb2xcIlxuICAgICAgICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICAgICAgICAgIDxkaXY+e3sgY2hpbGQub3JkZXJOdW1iZXIgfX08L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvbiBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJub2RlLnJlbW92ZUF0KGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPGhyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInb2JzR3JvdXAnXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMHB4XCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGNoaWxkLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgICAgICAgICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgICAgICAgIFtub2RlXT1cImNoaWxkLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICAgICAgICBbcGFyZW50R3JvdXBdPVwiY2hpbGQuY29udHJvbFwiXG4gICAgICAgICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5vZGUucmVtb3ZlQXQoaSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZW1vdmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8aHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0ycHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b24gXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwibm9kZS5jcmVhdGVDaGlsZE5vZGUoKVwiXG4gICAgICA+XG4gICAgICAgIEFkZFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2XG4gICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5jb250cm9sVHlwZSA9PT0gMlwiXG4gIFtoaWRkZW5dPVwibm9kZS5jb250cm9sLmhpZGRlblwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IG5vZGUuY29udHJvbC5kaXNhYmxlZCB9XCJcbj5cbiAgPCEtLUdST1VQLS0+XG4gIDxkaXYgW25nU3dpdGNoXT1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidncm91cCdcIj5cbiAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtub2RlXT1cIm5vZGUuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgIFtwYXJlbnRHcm91cF09XCJub2RlLmNvbnRyb2xcIlxuICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ZpZWxkLXNldCdcIlxuICAgICAgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZWVlZWVlOyBwYWRkaW5nOiAycHg7IG1hcmdpbjogMnB4XCJcbiAgICA+XG4gICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICBbcGFyZW50R3JvdXBdPVwibm9kZS5jb250cm9sXCJcbiAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5gLFxuICBzdHlsZXM6IFsnLi4vLi4vc3R5bGUvYXBwLmNzcycsIERFRkFVTFRfU1RZTEVTXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwdWJsaWMgcGFyZW50Q29tcG9uZW50OiBGb3JtUmVuZGVyZXJDb21wb25lbnQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBub2RlOiBOb2RlQmFzZTtcbiAgQElucHV0KCkgcHVibGljIHBhcmVudEdyb3VwOiBBZmVGb3JtR3JvdXA7XG4gIHB1YmxpYyBjaGlsZENvbXBvbmVudHM6IEZvcm1SZW5kZXJlckNvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyBzaG93VGltZTogYm9vbGVhbjtcbiAgcHVibGljIHNob3dXZWVrczogYm9vbGVhbjtcbiAgcHVibGljIHNob3dIb2xpZGF5czogYm9vbGVhbjtcbiAgcHVibGljIGFjdGl2ZVRhYjogbnVtYmVyO1xuICBwdWJsaWMgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHVibGljIGlzQ29sbGFwc2VkID0gZmFsc2U7XG4gIHB1YmxpYyBhdXRvOiBhbnk7XG5cbiAgLy8gaXRlbXMkOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgLy8gaXRlbXNMb2FkaW5nID0gZmFsc2U7XG4gIC8vIGl0ZW1zSW5wdXQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdmFsaWRhdGlvbkZhY3Rvcnk6IFZhbGlkYXRpb25GYWN0b3J5LFxuICAgIHByaXZhdGUgZGF0YVNvdXJjZXM6IERhdGFTb3VyY2VzLFxuICAgIHByaXZhdGUgZm9ybUVycm9yc1NlcnZpY2U6IEZvcm1FcnJvcnNTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IDA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRVcFJlbW90ZVNlbGVjdCgpO1xuICAgIHRoaXMuc2V0VXBGaWxlVXBsb2FkKCk7XG4gICAgdGhpcy5zZXRVcERhdGVwaWNrZXJIb2xpZGF5cygpO1xuXG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUuZm9ybSkge1xuICAgICAgY29uc3QgdGFiID0gdGhpcy5ub2RlLmZvcm0udmFsdWVQcm9jZXNzaW5nSW5mby5sYXN0Rm9ybVRhYjtcbiAgICAgIGlmICh0YWIgJiYgdGFiICE9PSB0aGlzLmFjdGl2ZVRhYikge1xuICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ2Zvcm0nKSB7XG4gICAgICB0aGlzLmZvcm1FcnJvcnNTZXJ2aWNlLmFubm91bmNlRXJyb3JGaWVsZCQuc3Vic2NyaWJlKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQ29udHJvbChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnc2VjdGlvbicpIHtcbiAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSAhKHRoaXMubm9kZS5xdWVzdGlvbiBhcyBRdWVzdGlvbkdyb3VwKS5pc0V4cGFuZGVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudENvbXBvbmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRDb21wb25lbnQuYWRkQ2hpbGRDb21wb25lbnQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZENoaWxkQ29tcG9uZW50KGNoaWxkOiBGb3JtUmVuZGVyZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLmNoaWxkQ29tcG9uZW50cy5wdXNoKGNoaWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVcFJlbW90ZVNlbGVjdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLm5vZGUgJiZcbiAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5leHRyYXMgJiZcbiAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAncmVtb3RlLXNlbGVjdCdcbiAgICApIHtcbiAgICAgIC8vIGxldCBzZWxlY3RRdWVzdGlvbiA9IHRoaXMubm9kZS5mb3JtLnNlYXJjaE5vZGVCeVF1ZXN0aW9uSWQodGhpcy5ub2RlLnF1ZXN0aW9uLmtleSlbMF07XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2VzLmRhdGFTb3VyY2VzW1xuICAgICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZVxuICAgICAgXTtcbiAgICAgIC8qXG4gICAgICBsZXQgZGVmYWx0VmFsdWVzID0gb2YoW10pO1xuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5yZXNvbHZlU2VsZWN0ZWRWYWx1ZShzZWxlY3RRdWVzdGlvbi5jb250cm9sLnZhbHVlKSkge1xuICAgICAgICBkZWZhbHRWYWx1ZXMgPSB0aGlzLmRhdGFTb3VyY2UucmVzb2x2ZVNlbGVjdGVkVmFsdWUoc2VsZWN0UXVlc3Rpb24uY29udHJvbC52YWx1ZSkucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSksIC8vIGVtcHR5IGxpc3Qgb24gZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXRlbXMkID0gY29uY2F0KFxuICAgICAgICBkZWZhbHRWYWx1ZXMsXG4gICAgICAgIHRoaXMuaXRlbXNJbnB1dCQucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLml0ZW1zTG9hZGluZyA9IHRydWUpLFxuICAgICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMuZGF0YVNvdXJjZS5zZWFyY2hPcHRpb25zKHRlcm0pLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSksIC8vIGVtcHR5IGxpc3Qgb24gZXJyb3JcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXNMb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgICovXG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlICYmIHRoaXMubm9kZS5xdWVzdGlvbi5kYXRhU291cmNlT3B0aW9ucykge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YVNvdXJjZU9wdGlvbnMgPSB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFVwRmlsZVVwbG9hZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLm5vZGUgJiZcbiAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5leHRyYXMgJiZcbiAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnZmlsZSdcbiAgICApIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZXNbXG4gICAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5kYXRhU291cmNlXG4gICAgICBdO1xuICAgICAgLy8gY29uc29sZS5sb2coJ0tleScsIHRoaXMubm9kZS5xdWVzdGlvbik7XG4gICAgICAvLyBjb25zb2xlLmxvZygnRGF0YSBzb3VyY2UnLCB0aGlzLmRhdGFTb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRVcERhdGVwaWNrZXJIb2xpZGF5cygpIHtcbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5xdWVzdGlvbiAmJiB0aGlzLm5vZGUucXVlc3Rpb24uc2hvd0hvbGlkYXlzKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2VzLmRhdGFTb3VyY2VzW1xuICAgICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBjaGVja1NlY3Rpb24obm9kZTogTm9kZUJhc2UpIHtcbiAgICBpZiAobm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnc2VjdGlvbicpIHtcbiAgICAgIGxldCBncm91cENoaWxkcmVuSGlkZGVuID0gZmFsc2U7XG4gICAgICBjb25zdCBhbGxTZWN0aW9uQ29udHJvbHNIaWRkZW4gPSBPYmplY3Qua2V5cyhub2RlLmNoaWxkcmVuKS5ldmVyeSgoaykgPT4ge1xuICAgICAgICBjb25zdCBpbm5lck5vZGUgPSBub2RlLmNoaWxkcmVuW2tdO1xuICAgICAgICBpZiAoaW5uZXJOb2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICAgICAgZ3JvdXBDaGlsZHJlbkhpZGRlbiA9IE9iamVjdC5rZXlzKGlubmVyTm9kZS5jaGlsZHJlbikuZXZlcnkoXG4gICAgICAgICAgICAoaSkgPT4gaW5uZXJOb2RlLmNoaWxkcmVuW2ldLmNvbnRyb2wuaGlkZGVuXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbltrXS5jb250cm9sLmhpZGRlbiB8fCBncm91cENoaWxkcmVuSGlkZGVuO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gIWFsbFNlY3Rpb25Db250cm9sc0hpZGRlbjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xpY2tUYWIodGFiTnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWJOdW1iZXI7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByZXZpb3VzVGFiKCkge1xuICAgIGlmICghdGhpcy5pc0N1cnJlbnRUYWJGaXJzdCgpKSB7XG4gICAgICB0aGlzLmNsaWNrVGFiKHRoaXMuYWN0aXZlVGFiIC0gMSk7XG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQ3VycmVudFRhYkZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYiA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBpc0N1cnJlbnRUYWJMYXN0KCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYiA9PT0gdGhpcy5ub2RlLnF1ZXN0aW9uWydxdWVzdGlvbnMnXS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHVibGljIGxvYWROZXh0VGFiKCkge1xuICAgIGlmICghdGhpcy5pc0N1cnJlbnRUYWJMYXN0KCkpIHtcbiAgICAgIHRoaXMuY2xpY2tUYWIodGhpcy5hY3RpdmVUYWIgKyAxKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG4gIH1cbiAgcHVibGljIHRhYlNlbGVjdGVkKCRldmVudCkge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gJGV2ZW50O1xuICAgIHRoaXMuc2V0UHJldmlvdXNUYWIoKTtcbiAgfVxuICBwdWJsaWMgc2V0UHJldmlvdXNUYWIoKSB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUuZm9ybSkge1xuICAgICAgdGhpcy5ub2RlLmZvcm0udmFsdWVQcm9jZXNzaW5nSW5mb1snbGFzdEZvcm1UYWInXSA9IHRoaXMuYWN0aXZlVGFiO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgaGFzRXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGUuY29udHJvbC50b3VjaGVkICYmICF0aGlzLm5vZGUuY29udHJvbC52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RXJyb3JzKHRoaXMubm9kZSk7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsVG9Db250cm9sKGVycm9yOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWI6IG51bWJlciA9ICtlcnJvci5zcGxpdCgnLCcpWzBdO1xuICAgIGNvbnN0IGVsU2VsZWN0b3IgPSBlcnJvci5zcGxpdCgnLCcpWzFdICsgJ2lkJztcblxuICAgIC8vIHRoZSB0YWIgY29tcG9uZW50c1xuICAgIGNvbnN0IHRhYkNvbXBvbmVudDogRm9ybVJlbmRlcmVyQ29tcG9uZW50ID0gdGhpcy5jaGlsZENvbXBvbmVudHNbdGFiXTtcblxuICAgIHRoaXMuY2xpY2tUYWIodGFiKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gZXhwYW5kIGFsbCBzZWN0aW9uc1xuICAgICAgdGFiQ29tcG9uZW50LmNoaWxkQ29tcG9uZW50cy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgIHNlY3Rpb24uaXNDb2xsYXBzZWQgPSBmYWxzZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsU2VsZWN0b3IpO1xuICAgICAgICAgIGlmIChlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9KTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZUNoYW5nZWQobm9kZTogTGVhZk5vZGUpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnTm9kZScsIG5vZGUpO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBwdWJsaWMgdXBsb2FkKGV2ZW50KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ0V2ZW50JywgZXZlbnQpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdEYXRhJywgdGhpcy5kYXRhU291cmNlKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVJbmZvcm1hdGlvbihpbmZvSWQpIHtcbiAgICBjb25zdCBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5mb0lkKTtcblxuICAgIGlmIChlLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpIHtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnSW5mb0lkJywgaW5mb0lkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JzKG5vZGU6IE5vZGVCYXNlKSB7XG4gICAgY29uc3QgZXJyb3JzOiBhbnkgPSBub2RlLmNvbnRyb2wuZXJyb3JzO1xuXG4gICAgaWYgKGVycm9ycykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbkZhY3RvcnkuZXJyb3JzKGVycm9ycywgbm9kZS5xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|