@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.
Files changed (438) hide show
  1. package/.editorconfig +13 -0
  2. package/.prettierignore +40 -0
  3. package/.prettierrc +6 -0
  4. package/.travis.yml +17 -0
  5. package/README.md +36 -0
  6. package/angular.json +143 -0
  7. package/{bundles → dist/ngx-formentry/bundles}/ampath-kenya-ngx-openmrs-formentry.umd.js +4 -2
  8. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +1 -0
  9. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +2 -0
  10. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +1 -0
  11. package/dist/ngx-formentry/esm2015/form-entry/form-renderer/form-renderer.component.js +655 -0
  12. package/dist/ngx-formentry/esm5/form-entry/form-renderer/form-renderer.component.js +217 -0
  13. package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +11271 -0
  14. package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  15. package/{fesm5 → dist/ngx-formentry/fesm5}/ampath-kenya-ngx-openmrs-formentry.js +5 -3
  16. package/dist/ngx-formentry/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  17. package/dist/ngx-formentry/package.json +35 -0
  18. package/package.json +74 -20
  19. package/scripts/build.sh +2 -0
  20. package/target/npmlist.json +1 -0
  21. package/tsconfig.json +20 -0
  22. package/tslint.json +96 -0
  23. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +0 -1
  24. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +0 -2
  25. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +0 -1
  26. package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -653
  27. package/esm5/form-entry/form-renderer/form-renderer.component.js +0 -215
  28. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +0 -11269
  29. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
  30. package/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
  31. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
  32. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
  33. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
  34. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
  35. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
  36. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
  37. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
  38. /package/{ampath-kenya-ngx-openmrs-formentry.d.ts → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.d.ts} +0 -0
  39. /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json} +0 -0
  40. /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json-e → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json-e} +0 -0
  41. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
  42. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
  43. /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
  44. /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
  45. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
  46. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
  47. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
  48. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
  49. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
  50. /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
  51. /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
  52. /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
  53. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
  54. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
  55. /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
  56. /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.component.d.ts +0 -0
  57. /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.module.d.ts +0 -0
  58. /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.component.d.ts +0 -0
  59. /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.module.d.ts +0 -0
  60. /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.component.d.ts +0 -0
  61. /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.module.d.ts +0 -0
  62. /package/{components → dist/ngx-formentry/components}/select/diacritics.d.ts +0 -0
  63. /package/{components → dist/ngx-formentry/components}/select/option-list.d.ts +0 -0
  64. /package/{components → dist/ngx-formentry/components}/select/option.d.ts +0 -0
  65. /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.d.ts +0 -0
  66. /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.style.d.ts +0 -0
  67. /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
  68. /package/{components → dist/ngx-formentry/components}/select/select.component.style.d.ts +0 -0
  69. /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
  70. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/file-preview.component.d.ts +0 -0
  71. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/question-control.component.d.ts +0 -0
  72. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/remote-answer.component.d.ts +0 -0
  73. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-container/encounter-container.component.d.ts +0 -0
  74. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-pdf-viewer.service.d.ts +0 -0
  75. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-view/encounter-viewer.component.d.ts +0 -0
  76. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.module.d.ts +0 -0
  77. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.service.d.ts +0 -0
  78. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-control-type.js +0 -0
  79. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-array.js +0 -0
  80. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-control.js +0 -0
  81. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-group.js +0 -0
  82. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/control-extensions.js +0 -0
  83. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/index.js +0 -0
  84. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/value-change.listener.js +0 -0
  85. /package/{esm2015 → dist/ngx-formentry/esm2015}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
  86. /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relation.js +0 -0
  87. /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relations.js +0 -0
  88. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/afe-ng-select.component.js +0 -0
  89. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/appointments-overview/appointments-overview.component.js +0 -0
  90. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.component.js +0 -0
  91. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.module.js +0 -0
  92. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
  93. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.component.js +0 -0
  94. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.module.js +0 -0
  95. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/picker-modal/modal.component.js +0 -0
  96. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/pipes/moment.pipe.js +0 -0
  97. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
  98. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.component.js +0 -0
  99. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.module.js +0 -0
  100. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/secure.pipe.js +0 -0
  101. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
  102. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
  103. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
  104. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
  105. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.component.js +0 -0
  106. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.module.js +0 -0
  107. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/diacritics.js +0 -0
  108. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option-list.js +0 -0
  109. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option.js +0 -0
  110. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.js +0 -0
  111. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.style.js +0 -0
  112. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.js +0 -0
  113. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.style.js +0 -0
  114. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.module.js +0 -0
  115. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/file-preview.component.js +0 -0
  116. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/question-control.component.js +0 -0
  117. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
  118. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
  119. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
  120. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
  121. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.module.js +0 -0
  122. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.service.js +0 -0
  123. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/alert-helpers.js +0 -0
  124. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/can-generate-alert.js +0 -0
  125. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-calculators/can-calculate.js +0 -0
  126. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-disable.js +0 -0
  127. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-hide.js +0 -0
  128. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
  129. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
  130. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/data-sources.js +0 -0
  131. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/dummy-data-source.js +0 -0
  132. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/directives/historical-value-directive.js +0 -0
  133. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/error-renderer/error-renderer.component.js +0 -0
  134. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/expression-runner/expression-runner.js +0 -0
  135. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-entry.module.js +0 -0
  136. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/control-relations.factory.js +0 -0
  137. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-control.service.js +0 -0
  138. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-node.js +0 -0
  139. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.factory.js +0 -0
  140. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.js +0 -0
  141. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
  142. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/question.factory.js +0 -0
  143. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/show-messages.factory.js +0 -0
  144. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/validation.factory.js +0 -0
  145. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
  146. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-expression-helper-service.js +0 -0
  147. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-field-helper-service.js +0 -0
  148. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/js-expression-helper.js +0 -0
  149. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/checkbox.model.js +0 -0
  150. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/conditional-validation.model.js +0 -0
  151. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-question.js +0 -0
  152. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-validation.model.js +0 -0
  153. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/decimal-point-validation.model.js +0 -0
  154. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/file-upload-question.js +0 -0
  155. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/group-question.js +0 -0
  156. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/base-options.js +0 -0
  157. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
  158. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/data-source.js +0 -0
  159. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/date-question-options.js +0 -0
  160. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
  161. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/group-question-options.js +0 -0
  162. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
  163. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/nested-questions.js +0 -0
  164. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
  165. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-option.js +0 -0
  166. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-question-options.js +0 -0
  167. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
  168. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
  169. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-question-options.js +0 -0
  170. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/time-question-options.js +0 -0
  171. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
  172. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/js-expression-validation.model.js +0 -0
  173. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/max-validation.model.js +0 -0
  174. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/min-validation.model.js +0 -0
  175. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/models.js +0 -0
  176. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/multi-select-question.js +0 -0
  177. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/pair.model.js +0 -0
  178. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/question-base.js +0 -0
  179. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/rendering-type.js +0 -0
  180. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/repeating-question.js +0 -0
  181. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-option.js +0 -0
  182. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-question.js +0 -0
  183. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/test-order-question.js +0 -0
  184. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-area-input-question.js +0 -0
  185. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-input-question.js +0 -0
  186. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/time-question.js +0 -0
  187. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/ui-select-question.js +0 -0
  188. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/validation.model.js +0 -0
  189. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/debug-mode.service.js +0 -0
  190. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-errors.service.js +0 -0
  191. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-schema-compiler.service.js +0 -0
  192. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/historical-encounter-data.service.js +0 -0
  193. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/utils/messages.js +0 -0
  194. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-answered.validator.js +0 -0
  195. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-required.validator.js +0 -0
  196. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/date.validator.js +0 -0
  197. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/future-date-restriction.validator.js +0 -0
  198. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/js-expression.validator.js +0 -0
  199. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max-date.validator.js +0 -0
  200. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max.validator.js +0 -0
  201. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min-date.validator.js +0 -0
  202. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min.validator.js +0 -0
  203. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/required.validator.js +0 -0
  204. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/validations.js +0 -0
  205. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/encounter.adapter.js +0 -0
  206. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
  207. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs.adapter.js +0 -0
  208. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/order.adapter.js +0 -0
  209. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
  210. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/value.adapter.js +0 -0
  211. /package/{esm2015 → dist/ngx-formentry/esm2015}/public_api.js +0 -0
  212. /package/{esm2015 → dist/ngx-formentry/esm2015}/shared.module.js +0 -0
  213. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-control-type.js +0 -0
  214. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-array.js +0 -0
  215. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-control.js +0 -0
  216. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-group.js +0 -0
  217. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/control-extensions.js +0 -0
  218. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/index.js +0 -0
  219. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/value-change.listener.js +0 -0
  220. /package/{esm5 → dist/ngx-formentry/esm5}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
  221. /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relation.js +0 -0
  222. /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relations.js +0 -0
  223. /package/{esm5 → dist/ngx-formentry/esm5}/components/afe-ng-select.component.js +0 -0
  224. /package/{esm5 → dist/ngx-formentry/esm5}/components/appointments-overview/appointments-overview.component.js +0 -0
  225. /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.component.js +0 -0
  226. /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.module.js +0 -0
  227. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
  228. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.component.js +0 -0
  229. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.module.js +0 -0
  230. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/picker-modal/modal.component.js +0 -0
  231. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/pipes/moment.pipe.js +0 -0
  232. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
  233. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.component.js +0 -0
  234. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.module.js +0 -0
  235. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/secure.pipe.js +0 -0
  236. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
  237. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
  238. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
  239. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
  240. /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.component.js +0 -0
  241. /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.module.js +0 -0
  242. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/diacritics.js +0 -0
  243. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option-list.js +0 -0
  244. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option.js +0 -0
  245. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.js +0 -0
  246. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.style.js +0 -0
  247. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.js +0 -0
  248. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.style.js +0 -0
  249. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.module.js +0 -0
  250. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/file-preview.component.js +0 -0
  251. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/question-control.component.js +0 -0
  252. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
  253. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
  254. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
  255. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
  256. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.module.js +0 -0
  257. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.service.js +0 -0
  258. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/alert-helpers.js +0 -0
  259. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/can-generate-alert.js +0 -0
  260. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-calculators/can-calculate.js +0 -0
  261. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-disable.js +0 -0
  262. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-hide.js +0 -0
  263. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
  264. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
  265. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/data-sources.js +0 -0
  266. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/dummy-data-source.js +0 -0
  267. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/directives/historical-value-directive.js +0 -0
  268. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/error-renderer/error-renderer.component.js +0 -0
  269. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/expression-runner/expression-runner.js +0 -0
  270. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-entry.module.js +0 -0
  271. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/control-relations.factory.js +0 -0
  272. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-control.service.js +0 -0
  273. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-node.js +0 -0
  274. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.factory.js +0 -0
  275. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.js +0 -0
  276. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
  277. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/question.factory.js +0 -0
  278. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/show-messages.factory.js +0 -0
  279. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/validation.factory.js +0 -0
  280. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
  281. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-expression-helper-service.js +0 -0
  282. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-field-helper-service.js +0 -0
  283. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/js-expression-helper.js +0 -0
  284. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/checkbox.model.js +0 -0
  285. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/conditional-validation.model.js +0 -0
  286. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-question.js +0 -0
  287. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-validation.model.js +0 -0
  288. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/decimal-point-validation.model.js +0 -0
  289. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/file-upload-question.js +0 -0
  290. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/group-question.js +0 -0
  291. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/base-options.js +0 -0
  292. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
  293. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/data-source.js +0 -0
  294. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/date-question-options.js +0 -0
  295. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
  296. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/group-question-options.js +0 -0
  297. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
  298. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/nested-questions.js +0 -0
  299. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
  300. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-option.js +0 -0
  301. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-question-options.js +0 -0
  302. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
  303. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
  304. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-question-options.js +0 -0
  305. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/time-question-options.js +0 -0
  306. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
  307. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/js-expression-validation.model.js +0 -0
  308. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/max-validation.model.js +0 -0
  309. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/min-validation.model.js +0 -0
  310. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/models.js +0 -0
  311. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/multi-select-question.js +0 -0
  312. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/pair.model.js +0 -0
  313. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/question-base.js +0 -0
  314. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/rendering-type.js +0 -0
  315. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/repeating-question.js +0 -0
  316. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-option.js +0 -0
  317. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-question.js +0 -0
  318. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/test-order-question.js +0 -0
  319. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-area-input-question.js +0 -0
  320. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-input-question.js +0 -0
  321. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/time-question.js +0 -0
  322. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/ui-select-question.js +0 -0
  323. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/validation.model.js +0 -0
  324. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/debug-mode.service.js +0 -0
  325. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-errors.service.js +0 -0
  326. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-schema-compiler.service.js +0 -0
  327. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/historical-encounter-data.service.js +0 -0
  328. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/utils/messages.js +0 -0
  329. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-answered.validator.js +0 -0
  330. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-required.validator.js +0 -0
  331. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/date.validator.js +0 -0
  332. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/future-date-restriction.validator.js +0 -0
  333. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/js-expression.validator.js +0 -0
  334. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max-date.validator.js +0 -0
  335. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max.validator.js +0 -0
  336. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min-date.validator.js +0 -0
  337. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min.validator.js +0 -0
  338. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/required.validator.js +0 -0
  339. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/validations.js +0 -0
  340. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/encounter.adapter.js +0 -0
  341. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
  342. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs.adapter.js +0 -0
  343. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/order.adapter.js +0 -0
  344. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
  345. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/value.adapter.js +0 -0
  346. /package/{esm5 → dist/ngx-formentry/esm5}/public_api.js +0 -0
  347. /package/{esm5 → dist/ngx-formentry/esm5}/shared.module.js +0 -0
  348. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
  349. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
  350. /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
  351. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
  352. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
  353. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
  354. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
  355. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
  356. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
  357. /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value-directive.d.ts +0 -0
  358. /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
  359. /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
  360. /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
  361. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
  362. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
  363. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
  364. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
  365. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
  366. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
  367. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
  368. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
  369. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
  370. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.css.d.ts +0 -0
  371. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
  372. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
  373. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
  374. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
  375. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
  376. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
  377. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
  378. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
  379. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/decimal-point-validation.model.d.ts +0 -0
  380. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
  381. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
  382. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
  383. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
  384. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
  385. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
  386. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
  387. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
  388. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
  389. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
  390. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
  391. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
  392. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
  393. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
  394. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
  395. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
  396. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/time-question-options.d.ts +0 -0
  397. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
  398. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
  399. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
  400. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
  401. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
  402. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
  403. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
  404. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
  405. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
  406. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
  407. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
  408. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
  409. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
  410. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
  411. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
  412. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/time-question.d.ts +0 -0
  413. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
  414. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
  415. /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
  416. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
  417. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
  418. /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
  419. /package/{form-entry → dist/ngx-formentry/form-entry}/utils/messages.d.ts +0 -0
  420. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
  421. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
  422. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
  423. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
  424. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
  425. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
  426. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
  427. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
  428. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
  429. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
  430. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
  431. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
  432. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
  433. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
  434. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
  435. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
  436. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
  437. /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
  438. /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
@@ -0,0 +1,655 @@
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
+ export class FormRendererComponent {
15
+ // items$: Observable<any[]>;
16
+ // itemsLoading = false;
17
+ // itemsInput$ = new Subject<string>();
18
+ constructor(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
+ ngOnInit() {
28
+ this.setUpRemoteSelect();
29
+ this.setUpFileUpload();
30
+ this.setUpDatepickerHolidays();
31
+ if (this.node && this.node.form) {
32
+ const tab = this.node.form.valueProcessingInfo.lastFormTab;
33
+ if (tab && tab !== this.activeTab) {
34
+ this.activeTab = tab;
35
+ }
36
+ }
37
+ if (this.node && this.node.question.renderingType === 'form') {
38
+ this.formErrorsService.announceErrorField$.subscribe((error) => {
39
+ this.scrollToControl(error);
40
+ });
41
+ }
42
+ if (this.node && this.node.question.renderingType === 'section') {
43
+ this.isCollapsed = !this.node.question.isExpanded;
44
+ }
45
+ if (this.parentComponent) {
46
+ this.parentComponent.addChildComponent(this);
47
+ }
48
+ }
49
+ addChildComponent(child) {
50
+ this.childComponents.push(child);
51
+ }
52
+ setUpRemoteSelect() {
53
+ if (this.node &&
54
+ this.node.question.extras &&
55
+ this.node.question.renderingType === 'remote-select') {
56
+ // let selectQuestion = this.node.form.searchNodeByQuestionId(this.node.question.key)[0];
57
+ this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
58
+ /*
59
+ let defaltValues = of([]);
60
+ if (this.dataSource.resolveSelectedValue(selectQuestion.control.value)) {
61
+ defaltValues = this.dataSource.resolveSelectedValue(selectQuestion.control.value).pipe(
62
+ catchError(() => of([])), // empty list on error
63
+ );
64
+ }
65
+ this.items$ = concat(
66
+ defaltValues,
67
+ this.itemsInput$.pipe(
68
+ debounceTime(200),
69
+ distinctUntilChanged(),
70
+ tap(() => this.itemsLoading = true),
71
+ switchMap(term => this.dataSource.searchOptions(term).pipe(
72
+ catchError(() => of([])), // empty list on error
73
+ tap(() => {
74
+ this.itemsLoading = false
75
+ })
76
+ ))
77
+ )
78
+ );
79
+ */
80
+ if (this.dataSource && this.node.question.dataSourceOptions) {
81
+ this.dataSource.dataSourceOptions = this.node.question.dataSourceOptions;
82
+ }
83
+ }
84
+ }
85
+ setUpFileUpload() {
86
+ if (this.node &&
87
+ this.node.question.extras &&
88
+ this.node.question.renderingType === 'file') {
89
+ this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
90
+ // console.log('Key', this.node.question);
91
+ // console.log('Data source', this.dataSource);
92
+ }
93
+ }
94
+ setUpDatepickerHolidays() {
95
+ if (this.node && this.node.question && this.node.question.showHolidays) {
96
+ this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
97
+ }
98
+ }
99
+ checkSection(node) {
100
+ if (node.question.renderingType === 'section') {
101
+ let groupChildrenHidden = false;
102
+ const allSectionControlsHidden = Object.keys(node.children).every((k) => {
103
+ const innerNode = node.children[k];
104
+ if (innerNode instanceof GroupNode) {
105
+ groupChildrenHidden = Object.keys(innerNode.children).every((i) => innerNode.children[i].control.hidden);
106
+ }
107
+ return node.children[k].control.hidden || groupChildrenHidden;
108
+ });
109
+ return !allSectionControlsHidden;
110
+ }
111
+ return true;
112
+ }
113
+ clickTab(tabNumber) {
114
+ this.activeTab = tabNumber;
115
+ }
116
+ loadPreviousTab() {
117
+ if (!this.isCurrentTabFirst()) {
118
+ this.clickTab(this.activeTab - 1);
119
+ document.body.scrollTop = 0;
120
+ }
121
+ }
122
+ isCurrentTabFirst() {
123
+ return this.activeTab === 0;
124
+ }
125
+ isCurrentTabLast() {
126
+ return this.activeTab === this.node.question['questions'].length - 1;
127
+ }
128
+ loadNextTab() {
129
+ if (!this.isCurrentTabLast()) {
130
+ this.clickTab(this.activeTab + 1);
131
+ document.body.scrollTop = 0;
132
+ }
133
+ }
134
+ tabSelected($event) {
135
+ this.activeTab = $event;
136
+ this.setPreviousTab();
137
+ }
138
+ setPreviousTab() {
139
+ if (this.node && this.node.form) {
140
+ this.node.form.valueProcessingInfo['lastFormTab'] = this.activeTab;
141
+ }
142
+ }
143
+ hasErrors() {
144
+ return this.node.control.touched && !this.node.control.valid;
145
+ }
146
+ errors() {
147
+ return this.getErrors(this.node);
148
+ }
149
+ scrollToControl(error) {
150
+ const tab = +error.split(',')[0];
151
+ const elSelector = error.split(',')[1] + 'id';
152
+ // the tab components
153
+ const tabComponent = this.childComponents[tab];
154
+ this.clickTab(tab);
155
+ setTimeout(() => {
156
+ // expand all sections
157
+ tabComponent.childComponents.forEach((section) => {
158
+ section.isCollapsed = false;
159
+ setTimeout(() => {
160
+ const element = this.document.getElementById(elSelector);
161
+ if (element !== null && element.focus) {
162
+ element.focus();
163
+ element.scrollIntoView({ behavior: 'smooth', block: 'center' });
164
+ }
165
+ }, 100);
166
+ });
167
+ }, 200);
168
+ }
169
+ onDateChanged(node) {
170
+ // console.log('Node', node);
171
+ this.node = node;
172
+ }
173
+ upload(event) {
174
+ // console.log('Event', event);
175
+ // console.log('Data', this.dataSource);
176
+ }
177
+ toggleInformation(infoId) {
178
+ const e = document.getElementById(infoId);
179
+ if (e.style.display === 'block') {
180
+ e.style.display = 'none';
181
+ }
182
+ else {
183
+ e.style.display = 'block';
184
+ }
185
+ console.log('InfoId', infoId);
186
+ }
187
+ getErrors(node) {
188
+ const errors = node.control.errors;
189
+ if (errors) {
190
+ return this.validationFactory.errors(errors, node.question);
191
+ }
192
+ return [];
193
+ }
194
+ }
195
+ FormRendererComponent.decorators = [
196
+ { type: Component, args: [{
197
+ selector: 'form-renderer',
198
+ template: `<!--CONTAINERS-->
199
+ <div *ngIf="node.question.renderingType === 'form'">
200
+ <div class="dropdown dropdown-tabs forms-dropdown">
201
+ <a class="btn dropdown-toggle" data-toggle="dropdown">
202
+ <i class="fa fa-angle-double-down"></i>
203
+ </a>
204
+ <ul
205
+ class="dropdown-menu dropdown-menu-right forms-dropdown-menu"
206
+ role="menu"
207
+ aria-labelledby="dropdownMenu"
208
+ >
209
+ <li
210
+ *ngFor="let question of node.question.questions; let i = index"
211
+ (click)="clickTab(i)"
212
+ >
213
+ {{ question.label }}
214
+ </li>
215
+ </ul>
216
+ </div>
217
+ <mat-tab-group
218
+ (selectedIndexChange)="tabSelected($event)"
219
+ [selectedIndex]="activeTab"
220
+ >
221
+ <mat-tab
222
+ [label]="question.label"
223
+ *ngFor="let question of node.question.questions; let i = index"
224
+ >
225
+ <div (swipeLeft)="loadNextTab()" (swipeRight)="loadPreviousTab()">
226
+ <form-renderer
227
+ [node]="node.children[question.key]"
228
+ [parentComponent]="this"
229
+ [parentGroup]="node.control"
230
+ ></form-renderer>
231
+ </div>
232
+ </mat-tab>
233
+ </mat-tab-group>
234
+
235
+ <div style="text-align: center">
236
+ <button
237
+ type="button"
238
+ class="btn btn-default"
239
+ (click)="loadPreviousTab()"
240
+ [ngClass]="{ disabled: isCurrentTabFirst() }"
241
+ >
242
+ &lt;&lt;
243
+ </button>
244
+ <button
245
+ type="button"
246
+ class="btn btn-default"
247
+ (click)="loadNextTab()"
248
+ [ngClass]="{ disabled: isCurrentTabLast() }"
249
+ >
250
+ &gt;&gt;
251
+ </button>
252
+ </div>
253
+ </div>
254
+ <div *ngIf="node.question.renderingType === 'page'">
255
+ <!--<h2>{{node.question.label}}</h2>-->
256
+ <form-renderer
257
+ *ngFor="let question of node.question.questions"
258
+ [parentComponent]="this"
259
+ [node]="node.children[question.key]"
260
+ [parentGroup]="parentGroup"
261
+ ></form-renderer>
262
+ </div>
263
+ <div *ngIf="node.question.renderingType === 'section' && checkSection(node)">
264
+ <div class="panel panel-primary">
265
+ <div class="panel-heading">
266
+ <button
267
+ type="button"
268
+ class="btn btn-primary pull-right"
269
+ (click)="isCollapsed = !isCollapsed"
270
+ >
271
+ {{ isCollapsed ? 'Show' : 'Hide' }}
272
+ </button>
273
+ {{ node.question.label }}
274
+ </div>
275
+ <div class="panel-body" [collapse]="isCollapsed">
276
+ <form-renderer
277
+ *ngFor="let question of node.question.questions"
278
+ [parentComponent]="this"
279
+ [node]="node.children[question.key]"
280
+ [parentGroup]="parentGroup"
281
+ ></form-renderer>
282
+ </div>
283
+ </div>
284
+ </div>
285
+
286
+ <!-- MESSAGES -->
287
+ <div
288
+ *ngIf="node.control && node.control.alert && node.control.alert !== ''"
289
+ class="alert alert-warning"
290
+ >
291
+ <a class="close" data-dismiss="alert">&times;</a> {{ node.control.alert }}
292
+ </div>
293
+
294
+ <!--CONTROLS-->
295
+
296
+ <div
297
+ *ngIf="node.question.controlType === 0"
298
+ class="form-group"
299
+ [formGroup]="parentGroup"
300
+ [hidden]="node.control.hidden"
301
+ [ngClass]="{ disabled: node.control.disabled }"
302
+ >
303
+ <!--LEAF CONTROL-->
304
+ <div class="question-area">
305
+ <a
306
+ class="form-tooltip pull-right"
307
+ (click)="toggleInformation(node.question.extras.id)"
308
+ data-placement="right"
309
+ *ngIf="
310
+ node.question &&
311
+ node.question.extras.questionInfo &&
312
+ node.question.extras.questionInfo !== '' &&
313
+ node.question.extras.questionInfo !== ' '
314
+ "
315
+ >
316
+ <i class="glyphicon glyphicon-question-sign" aria-hidden="true"></i>
317
+ </a>
318
+
319
+ <label
320
+ *ngIf="node.question.label"
321
+ [style.color]="hasErrors() ? 'red' : ''"
322
+ class="control-label"
323
+ [attr.for]="node.question.key"
324
+ >
325
+ {{ node.question.required ? '*' : '' }} {{ node.question.label }}
326
+ </label>
327
+ <div [ngSwitch]="node.question.renderingType">
328
+ <select
329
+ class="form-control"
330
+ *ngSwitchCase="'select'"
331
+ [formControlName]="node.question.key"
332
+ [id]="node.question.key + 'id'"
333
+ >
334
+ <option *ngFor="let o of node.question.options" [ngValue]="o.value">
335
+ {{ o.label }}
336
+ </option>
337
+ </select>
338
+
339
+ <app-file-upload
340
+ *ngSwitchCase="'file'"
341
+ [dataSource]="dataSource"
342
+ [formControlName]="node.question.key"
343
+ [id]="node.question.key + 'id'"
344
+ (fileChanged)="upload($event)"
345
+ >
346
+ </app-file-upload>
347
+ <textarea
348
+ [placeholder]="node.question.placeholder"
349
+ [rows]="node.question.rows"
350
+ class="form-control"
351
+ *ngSwitchCase="'textarea'"
352
+ [formControlName]="node.question.key"
353
+ [id]="node.question.key + 'id'"
354
+ >
355
+ </textarea>
356
+ <!--
357
+ <ng-select *ngSwitchCase="'remote-select'" [items]="items$ | async" bindLabel="label" bindValue="value" placeholder="{{node.question.placeholder}}"
358
+ [hideSelected]="true" [loading]="itemsLoading" [typeahead]="itemsInput$" [formControlName]="node.question.key" [id]="node.question.key + 'id'">
359
+ </ng-select>
360
+ -->
361
+ <remote-select
362
+ *ngSwitchCase="'remote-select'"
363
+ [placeholder]="node.question.placeholder"
364
+ tabindex="0"
365
+ [dataSource]="dataSource"
366
+ [componentID]="node.question.key + 'id'"
367
+ [formControlName]="node.question.key"
368
+ [id]="node.question.key + 'id'"
369
+ ></remote-select>
370
+ <!--
371
+ <date-time-picker *ngSwitchCase="'date'" [showTime]="node.question.showTime" tabindex="0" [weeks]='node.question.extras.questionOptions.weeksList'
372
+ (onDateChange)="onDateChanged(node)" [showWeeks]="node.question.showWeeksAdder" [formControlName]="node.question.key"
373
+ [id]="node.question.key + 'id'"></date-time-picker>
374
+ -->
375
+
376
+ <ngx-date-time-picker
377
+ *ngSwitchCase="'date'"
378
+ [showTime]="node.question.showTime"
379
+ [id]="node.question.key + 'id'"
380
+ [formControlName]="node.question.key"
381
+ [weeks]="node.question.extras.questionOptions.weeksList"
382
+ (onDateChange)="onDateChanged(node)"
383
+ [showWeeks]="node.question.showWeeksAdder"
384
+ [showHolidays]="node.question.showHolidays"
385
+ [dataSource]="dataSource"
386
+ ></ngx-date-time-picker>
387
+ <ngx-time-picker
388
+ *ngSwitchCase="'time'"
389
+ id="node.question.key + 'id'"
390
+ [formControlName]="node.question.key"
391
+ ></ngx-time-picker>
392
+ <ng-select
393
+ *ngSwitchCase="'multi-select'"
394
+ [style.height]="'auto'"
395
+ [style.overflow-x]="'hidden'"
396
+ tabindex="0"
397
+ [formControlName]="node.question.key"
398
+ [id]="node.question.key + 'id'"
399
+ [options]="node.question.options"
400
+ [multiple]="true"
401
+ >
402
+ </ng-select>
403
+ <ng-select
404
+ *ngSwitchCase="'single-select'"
405
+ [style.height]="auto"
406
+ tabindex="0"
407
+ [formControlName]="node.question.key"
408
+ [id]="node.question.key + 'id'"
409
+ [options]="node.question.options"
410
+ [multiple]="false"
411
+ >
412
+ </ng-select>
413
+ <input
414
+ class="form-control"
415
+ *ngSwitchCase="'number'"
416
+ [formControlName]="node.question.key"
417
+ [attr.placeholder]="node.question.placeholder"
418
+ [type]="'number'"
419
+ [id]="node.question.key + 'id'"
420
+ [step]="'any'"
421
+ [min]="node.question.extras.questionOptions.min"
422
+ [max]="node.question.extras.questionOptions.max"
423
+ />
424
+ <input
425
+ class="form-control"
426
+ *ngSwitchCase="'decimal'"
427
+ [formControlName]="node.question.key"
428
+ [attr.placeholder]="node.question.placeholder"
429
+ [type]="'text'"
430
+ [id]="node.question.key + 'id'"
431
+ [min]="node.question.extras.questionOptions.min"
432
+ [max]="node.question.extras.questionOptions.max"
433
+ />
434
+ <input
435
+ class="form-control"
436
+ *ngSwitchDefault
437
+ [formControlName]="node.question.key"
438
+ [attr.placeholder]="node.question.placeholder"
439
+ [type]="node.question.renderingType"
440
+ [id]="node.question.key + 'id'"
441
+ />
442
+
443
+ <div *ngSwitchCase="'radio'">
444
+ <div *ngFor="let o of node.question.options">
445
+ <label class="form-control no-border">
446
+ <input
447
+ type="radio"
448
+ [formControlName]="node.question.key"
449
+ [id]="node.question.key + 'id'"
450
+ [value]="o.value"
451
+ />
452
+ {{ o.label }}
453
+ </label>
454
+ </div>
455
+ </div>
456
+
457
+ <div *ngSwitchCase="'checkbox'">
458
+ <checkbox
459
+ [id]="node.question.key + 'id'"
460
+ [formControlName]="node.question.key"
461
+ [options]="node.question.options"
462
+ [selected]="node.control.value"
463
+ ></checkbox>
464
+ </div>
465
+
466
+ <div
467
+ *ngIf="
468
+ node.question.enableHistoricalValue && node.question.historicalDisplay
469
+ "
470
+ style="margin-top: 2px"
471
+ >
472
+ <div class="container-fluid">
473
+ <div class="row">
474
+ <div class="col-xs-9">
475
+ <span class="text-warning">Previous Value: </span>
476
+ <strong>{{ node.question.historicalDisplay?.text }}</strong>
477
+ <span *ngIf="node.question.showHistoricalValueDate">
478
+ <span> | </span>
479
+ <strong class="text-primary"
480
+ >{{ node.question.historicalDisplay?._date }}
481
+ </strong>
482
+ <span
483
+ class="text-primary"
484
+ *ngIf="
485
+ node.question.historicalDisplay &&
486
+ node.question.historicalDisplay._date
487
+ "
488
+ >
489
+ ({{ node.question.historicalDisplay._date | timeAgo }})</span
490
+ >
491
+ </span>
492
+ </div>
493
+ <button
494
+ type="button"
495
+ [node]="node"
496
+ [name]="'historyValue'"
497
+ class="btn btn-primary btn-small col-xs-3"
498
+ >
499
+ Use Value
500
+ </button>
501
+ </div>
502
+ </div>
503
+ </div>
504
+ <appointments-overview [node]="node"></appointments-overview>
505
+ <div *ngIf="hasErrors()">
506
+ <p *ngFor="let e of errors()">
507
+ <span class="text-danger">{{ e }}</span>
508
+ </p>
509
+ </div>
510
+ </div>
511
+
512
+ <div
513
+ class="question-info col-md-12 col-lg-12 col-sm-12"
514
+ id="{{ node.question.extras.id }}"
515
+ *ngIf="
516
+ node.question &&
517
+ node.question.extras.questionInfo &&
518
+ node.question.extras.questionInfo !== '' &&
519
+ node.question.extras.questionInfo !== ' '
520
+ "
521
+ >
522
+ {{ node.question.extras.questionInfo }}
523
+ </div>
524
+ </div>
525
+ </div>
526
+ <div
527
+ *ngIf="node.question.controlType === 1"
528
+ [hidden]="node.control.hidden"
529
+ [ngClass]="{ disabled: node.control.disabled }"
530
+ >
531
+ <!--ARRAY CONTROL-->
532
+ <div [ngSwitch]="node.question.renderingType">
533
+ <div class="well" style="padding: 2px" *ngSwitchCase="'repeating'">
534
+ <h4 style="margin: 2px; font-weight: bold">{{ node.question.label }}</h4>
535
+ <hr
536
+ style="
537
+ margin-left: -2px;
538
+ margin-right: -2px;
539
+ margin-bottom: 4px;
540
+ margin-top: 8px;
541
+ border-width: 2px;
542
+ "
543
+ />
544
+ <div [ngSwitch]="node.question.extras.type">
545
+ <div *ngSwitchCase="'testOrder'">
546
+ <div *ngFor="let child of node.children; let i = index">
547
+ <form-renderer
548
+ *ngFor="let question of child.question.questions"
549
+ [parentComponent]="this"
550
+ [node]="child.children[question.key]"
551
+ [parentGroup]="child.control"
552
+ ></form-renderer>
553
+ <div>{{ child.orderNumber }}</div>
554
+ <button
555
+ type="button "
556
+ class="btn btn-sm btn-danger"
557
+ (click)="node.removeAt(i)"
558
+ >
559
+ Remove
560
+ </button>
561
+ <br />
562
+ <hr
563
+ style="
564
+ margin-left: -2px;
565
+ margin-right: -2px;
566
+ margin-bottom: 4px;
567
+ margin-top: 8px;
568
+ border-width: 1px;
569
+ "
570
+ />
571
+ </div>
572
+ </div>
573
+
574
+ <div *ngSwitchCase="'obsGroup'" style="margin-bottom: 20px">
575
+ <div *ngFor="let child of node.children; let i = index">
576
+ <form-renderer
577
+ *ngFor="let question of child.question.questions"
578
+ [parentComponent]="this"
579
+ [node]="child.children[question.key]"
580
+ [parentGroup]="child.control"
581
+ ></form-renderer>
582
+ <button
583
+ type="button "
584
+ class="btn btn-sm btn-danger"
585
+ (click)="node.removeAt(i)"
586
+ >
587
+ Remove
588
+ </button>
589
+ <br />
590
+ <hr
591
+ style="
592
+ margin-left: -2px;
593
+ margin-right: -2px;
594
+ margin-bottom: 4px;
595
+ margin-top: 8px;
596
+ border-width: 1px;
597
+ "
598
+ />
599
+ </div>
600
+ </div>
601
+ </div>
602
+ <button
603
+ type="button "
604
+ class="btn btn-primary"
605
+ (click)="node.createChildNode()"
606
+ >
607
+ Add
608
+ </button>
609
+ </div>
610
+ </div>
611
+ </div>
612
+ <div
613
+ *ngIf="node.question.controlType === 2"
614
+ [hidden]="node.control.hidden"
615
+ [ngClass]="{ disabled: node.control.disabled }"
616
+ >
617
+ <!--GROUP-->
618
+ <div [ngSwitch]="node.question.renderingType">
619
+ <div *ngSwitchCase="'group'">
620
+ <form-renderer
621
+ *ngFor="let question of node.question.questions"
622
+ [parentComponent]="this"
623
+ [node]="node.children[question.key]"
624
+ [parentGroup]="node.control"
625
+ ></form-renderer>
626
+ </div>
627
+ <div
628
+ *ngSwitchCase="'field-set'"
629
+ style="border: 1px solid #eeeeee; padding: 2px; margin: 2px"
630
+ >
631
+ <form-renderer
632
+ *ngFor="let question of node.question.questions"
633
+ [parentComponent]="this"
634
+ [node]="node.children[question.key]"
635
+ [parentGroup]="node.control"
636
+ ></form-renderer>
637
+ </div>
638
+ </div>
639
+ </div>
640
+ `,
641
+ styles: ['../../style/app.css', DEFAULT_STYLES]
642
+ },] },
643
+ ];
644
+ FormRendererComponent.ctorParameters = () => [
645
+ { type: ValidationFactory },
646
+ { type: DataSources },
647
+ { type: FormErrorsService },
648
+ { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
649
+ ];
650
+ FormRendererComponent.propDecorators = {
651
+ parentComponent: [{ type: Input }],
652
+ node: [{ type: Input }],
653
+ parentGroup: [{ type: Input }]
654
+ };
655
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1wYXRoLWtlbnlhL25neC1vcGVubXJzLWZvcm1lbnRyeS8iLCJzb3VyY2VzIjpbImZvcm0tZW50cnkvZm9ybS1yZW5kZXJlci9mb3JtLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBWSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsMkVBQTJFO0FBQzNFLCtCQUErQjtBQUUvQix3R0FBd0c7QUFDeEcscURBQXFEO0FBaWNyRCxNQUFNO0lBYUosNkJBQTZCO0lBQzdCLHdCQUF3QjtJQUN4Qix1Q0FBdUM7SUFFdkMsWUFDVSxpQkFBb0MsRUFDcEMsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ2xCLFFBQWE7UUFIL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFqQmxDLG9CQUFlLEdBQTRCLEVBQUUsQ0FBQztRQU05Qyxn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QUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzs7O1lBcnFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTBiWDtnQkFDQyxNQUFNLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxjQUFjLENBQUM7YUFDaEQ7OztZQXhjUSxpQkFBaUI7WUFIakIsV0FBVztZQUtYLGlCQUFpQjs0Q0E0ZHJCLE1BQU0sU0FBQyxRQUFROzs7OEJBcEJqQixLQUFLO21CQUNMLEtBQUs7MEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgSW5qZWN0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgJ2hhbW1lcmpzJztcbmltcG9ydCB7IERFRkFVTFRfU1RZTEVTIH0gZnJvbSAnLi9mb3JtLXJlbmRlcmVyLmNvbXBvbmVudC5jc3MnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YVNvdXJjZXMgfSBmcm9tICcuLi9kYXRhLXNvdXJjZXMvZGF0YS1zb3VyY2VzJztcbmltcG9ydCB7IE5vZGVCYXNlLCBMZWFmTm9kZSwgR3JvdXBOb2RlIH0gZnJvbSAnLi4vZm9ybS1mYWN0b3J5L2Zvcm0tbm9kZSc7XG5pbXBvcnQgeyBBZmVGb3JtR3JvdXAgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tZ3JvdXAnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkZhY3RvcnkgfSBmcm9tICcuLi9mb3JtLWZhY3RvcnkvdmFsaWRhdGlvbi5mYWN0b3J5JztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMvaW50ZXJmYWNlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBGb3JtRXJyb3JzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm0tZXJyb3JzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25Hcm91cCB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscy9ncm91cC1xdWVzdGlvbic7XG4vLyBpbXBvcnQgeyBjb25jYXQsIG9mLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbi8vIGltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuLy8gaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwLCBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbi8vIGltcG9ydCB7IFF1ZXN0aW9uQmFzZSB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tcmVuZGVyZXInLFxuICB0ZW1wbGF0ZTogYDwhLS1DT05UQUlORVJTLS0+XG48ZGl2ICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnZm9ybSdcIj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGRyb3Bkb3duLXRhYnMgZm9ybXMtZHJvcGRvd25cIj5cbiAgICA8YSBjbGFzcz1cImJ0biBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvdWJsZS1kb3duXCI+PC9pPlxuICAgIDwvYT5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0IGZvcm1zLWRyb3Bkb3duLW1lbnVcIlxuICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51XCJcbiAgICA+XG4gICAgICA8bGlcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgKGNsaWNrKT1cImNsaWNrVGFiKGkpXCJcbiAgICAgID5cbiAgICAgICAge3sgcXVlc3Rpb24ubGFiZWwgfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxtYXQtdGFiLWdyb3VwXG4gICAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwidGFiU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgW3NlbGVjdGVkSW5kZXhdPVwiYWN0aXZlVGFiXCJcbiAgPlxuICAgIDxtYXQtdGFiXG4gICAgICBbbGFiZWxdPVwicXVlc3Rpb24ubGFiZWxcIlxuICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICA+XG4gICAgICA8ZGl2IChzd2lwZUxlZnQpPVwibG9hZE5leHRUYWIoKVwiIChzd2lwZVJpZ2h0KT1cImxvYWRQcmV2aW91c1RhYigpXCI+XG4gICAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgIFtwYXJlbnRHcm91cF09XCJub2RlLmNvbnRyb2xcIlxuICAgICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG5cbiAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgKGNsaWNrKT1cImxvYWRQcmV2aW91c1RhYigpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzQ3VycmVudFRhYkZpcnN0KCkgfVwiXG4gICAgPlxuICAgICAgJmx0OyZsdDtcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIChjbGljayk9XCJsb2FkTmV4dFRhYigpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzQ3VycmVudFRhYkxhc3QoKSB9XCJcbiAgICA+XG4gICAgICAmZ3Q7Jmd0O1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3BhZ2UnXCI+XG4gIDwhLS08aDI+e3tub2RlLnF1ZXN0aW9uLmxhYmVsfX08L2gyPi0tPlxuICA8Zm9ybS1yZW5kZXJlclxuICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgIFtwYXJlbnRHcm91cF09XCJwYXJlbnRHcm91cFwiXG4gID48L2Zvcm0tcmVuZGVyZXI+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdzZWN0aW9uJyAmJiBjaGVja1NlY3Rpb24obm9kZSlcIj5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLXByaW1hcnlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHVsbC1yaWdodFwiXG4gICAgICAgIChjbGljayk9XCJpc0NvbGxhcHNlZCA9ICFpc0NvbGxhcHNlZFwiXG4gICAgICA+XG4gICAgICAgIHt7IGlzQ29sbGFwc2VkID8gJ1Nob3cnIDogJ0hpZGUnIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIHt7IG5vZGUucXVlc3Rpb24ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiIFtjb2xsYXBzZV09XCJpc0NvbGxhcHNlZFwiPlxuICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgW3BhcmVudEdyb3VwXT1cInBhcmVudEdyb3VwXCJcbiAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gTUVTU0FHRVMgLS0+XG48ZGl2XG4gICpuZ0lmPVwibm9kZS5jb250cm9sICYmIG5vZGUuY29udHJvbC5hbGVydCAmJiBub2RlLmNvbnRyb2wuYWxlcnQgIT09ICcnXCJcbiAgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nXCJcbj5cbiAgPGEgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cImFsZXJ0XCI+JnRpbWVzOzwvYT4ge3sgbm9kZS5jb250cm9sLmFsZXJ0IH19XG48L2Rpdj5cblxuPCEtLUNPTlRST0xTLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmNvbnRyb2xUeXBlID09PSAwXCJcbiAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgW2Zvcm1Hcm91cF09XCJwYXJlbnRHcm91cFwiXG4gIFtoaWRkZW5dPVwibm9kZS5jb250cm9sLmhpZGRlblwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IG5vZGUuY29udHJvbC5kaXNhYmxlZCB9XCJcbj5cbiAgPCEtLUxFQUYgQ09OVFJPTC0tPlxuICA8ZGl2IGNsYXNzPVwicXVlc3Rpb24tYXJlYVwiPlxuICAgIDxhXG4gICAgICBjbGFzcz1cImZvcm0tdG9vbHRpcCBwdWxsLXJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVJbmZvcm1hdGlvbihub2RlLnF1ZXN0aW9uLmV4dHJhcy5pZClcIlxuICAgICAgZGF0YS1wbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBub2RlLnF1ZXN0aW9uICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gIT09ICcnICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAhPT0gJyAnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvYT5cblxuICAgIDxsYWJlbFxuICAgICAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmxhYmVsXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJoYXNFcnJvcnMoKSA/ICdyZWQnIDogJydcIlxuICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgIFthdHRyLmZvcl09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgPlxuICAgICAge3sgbm9kZS5xdWVzdGlvbi5yZXF1aXJlZCA/ICcqJyA6ICcnIH19IHt7IG5vZGUucXVlc3Rpb24ubGFiZWwgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZVwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgID5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbyBvZiBub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIiBbbmdWYWx1ZV09XCJvLnZhbHVlXCI+XG4gICAgICAgICAge3sgby5sYWJlbCB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuXG4gICAgICA8YXBwLWZpbGUtdXBsb2FkXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZmlsZSdcIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICAoZmlsZUNoYW5nZWQpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbcm93c109XCJub2RlLnF1ZXN0aW9uLnJvd3NcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgPlxuICAgICAgPC90ZXh0YXJlYT5cbiAgICAgIDwhLS1cbiAgICAgIDxuZy1zZWxlY3QgKm5nU3dpdGNoQ2FzZT1cIidyZW1vdGUtc2VsZWN0J1wiIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiIGJpbmRMYWJlbD1cImxhYmVsXCIgYmluZFZhbHVlPVwidmFsdWVcIiBwbGFjZWhvbGRlcj1cInt7bm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlcn19XCJcbiAgICAgICAgW2hpZGVTZWxlY3RlZF09XCJ0cnVlXCIgW2xvYWRpbmddPVwiaXRlbXNMb2FkaW5nXCIgIFt0eXBlYWhlYWRdPVwiaXRlbXNJbnB1dCRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCIgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiPlxuICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgLS0+XG4gICAgICA8cmVtb3RlLXNlbGVjdFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3JlbW90ZS1zZWxlY3QnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2NvbXBvbmVudElEXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgID48L3JlbW90ZS1zZWxlY3Q+XG4gICAgICA8IS0tICBcbiAgICAgIDxkYXRlLXRpbWUtcGlja2VyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbc2hvd1RpbWVdPVwibm9kZS5xdWVzdGlvbi5zaG93VGltZVwiIHRhYmluZGV4PVwiMFwiIFt3ZWVrc109J25vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy53ZWVrc0xpc3QnXG4gICAgICAgIChvbkRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlZChub2RlKVwiIFtzaG93V2Vla3NdPVwibm9kZS5xdWVzdGlvbi5zaG93V2Vla3NBZGRlclwiIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCI+PC9kYXRlLXRpbWUtcGlja2VyPlxuICAtLT5cblxuICAgICAgPG5neC1kYXRlLXRpbWUtcGlja2VyXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIlxuICAgICAgICBbc2hvd1RpbWVdPVwibm9kZS5xdWVzdGlvbi5zaG93VGltZVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW3dlZWtzXT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy53ZWVrc0xpc3RcIlxuICAgICAgICAob25EYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZWQobm9kZSlcIlxuICAgICAgICBbc2hvd1dlZWtzXT1cIm5vZGUucXVlc3Rpb24uc2hvd1dlZWtzQWRkZXJcIlxuICAgICAgICBbc2hvd0hvbGlkYXlzXT1cIm5vZGUucXVlc3Rpb24uc2hvd0hvbGlkYXlzXCJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICA+PC9uZ3gtZGF0ZS10aW1lLXBpY2tlcj5cbiAgICAgIDxuZ3gtdGltZS1waWNrZXIgIFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiICBcbiAgICAgIGlkPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCIgIFxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICA+PC9uZ3gtdGltZS1waWNrZXI+XG4gICAgICA8bmctc2VsZWN0XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiJ2F1dG8nXCJcbiAgICAgICAgW3N0eWxlLm92ZXJmbG93LXhdPVwiJ2hpZGRlbidcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtvcHRpb25zXT1cIm5vZGUucXVlc3Rpb24ub3B0aW9uc1wiXG4gICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgIDwvbmctc2VsZWN0PlxuICAgICAgPG5nLXNlbGVjdFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3NpbmdsZS1zZWxlY3QnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJhdXRvXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbb3B0aW9uc109XCJub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwibm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlclwiXG4gICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtzdGVwXT1cIidhbnknXCJcbiAgICAgICAgW21pbl09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWluXCJcbiAgICAgICAgW21heF09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWF4XCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RlY2ltYWwnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW21pbl09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWluXCJcbiAgICAgICAgW21heF09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWF4XCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3R5cGVdPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlXCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG8gb2Ygbm9kZS5xdWVzdGlvbi5vcHRpb25zXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLWJvcmRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm8udmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHt7IG8ubGFiZWwgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XG4gICAgICAgIDxjaGVja2JveFxuICAgICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm5vZGUucXVlc3Rpb24ub3B0aW9uc1wiXG4gICAgICAgICAgW3NlbGVjdGVkXT1cIm5vZGUuY29udHJvbC52YWx1ZVwiXG4gICAgICAgID48L2NoZWNrYm94PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBub2RlLnF1ZXN0aW9uLmVuYWJsZUhpc3RvcmljYWxWYWx1ZSAmJiBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5XG4gICAgICAgIFwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMnB4XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2FybmluZ1wiPlByZXZpb3VzIFZhbHVlOiA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheT8udGV4dCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5vZGUucXVlc3Rpb24uc2hvd0hpc3RvcmljYWxWYWx1ZURhdGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj4gfCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICA+e3sgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheT8uX2RhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheSAmJlxuICAgICAgICAgICAgICAgICAgICBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5Ll9kYXRlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICh7eyBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5Ll9kYXRlIHwgdGltZUFnbyB9fSk8L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidoaXN0b3J5VmFsdWUnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtYWxsIGNvbC14cy0zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgVXNlIFZhbHVlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHBvaW50bWVudHMtb3ZlcnZpZXcgW25vZGVdPVwibm9kZVwiPjwvYXBwb2ludG1lbnRzLW92ZXJ2aWV3PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc0Vycm9ycygpXCI+XG4gICAgICAgIDxwICpuZ0Zvcj1cImxldCBlIG9mIGVycm9ycygpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPnt7IGUgfX08L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJxdWVzdGlvbi1pbmZvIGNvbC1tZC0xMiBjb2wtbGctMTIgY29sLXNtLTEyXCJcbiAgICAgIGlkPVwie3sgbm9kZS5xdWVzdGlvbi5leHRyYXMuaWQgfX1cIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgbm9kZS5xdWVzdGlvbiAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICE9PSAnJyAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gIT09ICcgJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXZcbiAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmNvbnRyb2xUeXBlID09PSAxXCJcbiAgW2hpZGRlbl09XCJub2RlLmNvbnRyb2wuaGlkZGVuXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogbm9kZS5jb250cm9sLmRpc2FibGVkIH1cIlxuPlxuICA8IS0tQVJSQVkgQ09OVFJPTC0tPlxuICA8ZGl2IFtuZ1N3aXRjaF09XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwid2VsbFwiIHN0eWxlPVwicGFkZGluZzogMnB4XCIgKm5nU3dpdGNoQ2FzZT1cIidyZXBlYXRpbmcnXCI+XG4gICAgICA8aDQgc3R5bGU9XCJtYXJnaW46IDJweDsgZm9udC13ZWlnaHQ6IGJvbGRcIj57eyBub2RlLnF1ZXN0aW9uLmxhYmVsIH19PC9oND5cbiAgICAgIDxoclxuICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogLTJweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgICAgICBcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgW25nU3dpdGNoXT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnR5cGVcIj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3Rlc3RPcmRlcidcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgY2hpbGQucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgICAgW25vZGVdPVwiY2hpbGQuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgICAgICAgIFtwYXJlbnRHcm91cF09XCJjaGlsZC5jb250cm9sXCJcbiAgICAgICAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLm9yZGVyTnVtYmVyIH19PC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b24gXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibm9kZS5yZW1vdmVBdChpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ29ic0dyb3VwJ1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweFwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjaGlsZC5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgICBbbm9kZV09XCJjaGlsZC5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgICAgICAgW3BhcmVudEdyb3VwXT1cImNoaWxkLmNvbnRyb2xcIlxuICAgICAgICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvbiBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJub2RlLnJlbW92ZUF0KGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPGhyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uIFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGUuY3JlYXRlQ2hpbGROb2RlKClcIlxuICAgICAgPlxuICAgICAgICBBZGRcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICAqbmdJZj1cIm5vZGUucXVlc3Rpb24uY29udHJvbFR5cGUgPT09IDJcIlxuICBbaGlkZGVuXT1cIm5vZGUuY29udHJvbC5oaWRkZW5cIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBub2RlLmNvbnRyb2wuZGlzYWJsZWQgfVwiXG4+XG4gIDwhLS1HUk9VUC0tPlxuICA8ZGl2IFtuZ1N3aXRjaF09XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGVcIj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZ3JvdXAnXCI+XG4gICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICBbcGFyZW50R3JvdXBdPVwibm9kZS5jb250cm9sXCJcbiAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIidmaWVsZC1zZXQnXCJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTsgcGFkZGluZzogMnB4OyBtYXJnaW46IDJweFwiXG4gICAgPlxuICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgW3BhcmVudEdyb3VwXT1cIm5vZGUuY29udHJvbFwiXG4gICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbJy4uLy4uL3N0eWxlL2FwcC5jc3MnLCBERUZBVUxUX1NUWUxFU11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybVJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIHBhcmVudENvbXBvbmVudDogRm9ybVJlbmRlcmVyQ29tcG9uZW50O1xuICBASW5wdXQoKSBwdWJsaWMgbm9kZTogTm9kZUJhc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBwYXJlbnRHcm91cDogQWZlRm9ybUdyb3VwO1xuICBwdWJsaWMgY2hpbGRDb21wb25lbnRzOiBGb3JtUmVuZGVyZXJDb21wb25lbnRbXSA9IFtdO1xuICBwdWJsaWMgc2hvd1RpbWU6IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93V2Vla3M6IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93SG9saWRheXM6IGJvb2xlYW47XG4gIHB1YmxpYyBhY3RpdmVUYWI6IG51bWJlcjtcbiAgcHVibGljIGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHB1YmxpYyBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuICBwdWJsaWMgYXV0bzogYW55O1xuXG4gIC8vIGl0ZW1zJDogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIC8vIGl0ZW1zTG9hZGluZyA9IGZhbHNlO1xuICAvLyBpdGVtc0lucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZhbGlkYXRpb25GYWN0b3J5OiBWYWxpZGF0aW9uRmFjdG9yeSxcbiAgICBwcml2YXRlIGRhdGFTb3VyY2VzOiBEYXRhU291cmNlcyxcbiAgICBwcml2YXRlIGZvcm1FcnJvcnNTZXJ2aWNlOiBGb3JtRXJyb3JzU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSAwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0VXBSZW1vdGVTZWxlY3QoKTtcbiAgICB0aGlzLnNldFVwRmlsZVVwbG9hZCgpO1xuICAgIHRoaXMuc2V0VXBEYXRlcGlja2VySG9saWRheXMoKTtcblxuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmZvcm0pIHtcbiAgICAgIGNvbnN0IHRhYiA9IHRoaXMubm9kZS5mb3JtLnZhbHVlUHJvY2Vzc2luZ0luZm8ubGFzdEZvcm1UYWI7XG4gICAgICBpZiAodGFiICYmIHRhYiAhPT0gdGhpcy5hY3RpdmVUYWIpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdmb3JtJykge1xuICAgICAgdGhpcy5mb3JtRXJyb3JzU2VydmljZS5hbm5vdW5jZUVycm9yRmllbGQkLnN1YnNjcmliZSgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NvbnRyb2woZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3NlY3Rpb24nKSB7XG4gICAgICB0aGlzLmlzQ29sbGFwc2VkID0gISh0aGlzLm5vZGUucXVlc3Rpb24gYXMgUXVlc3Rpb25Hcm91cCkuaXNFeHBhbmRlZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucGFyZW50Q29tcG9uZW50LmFkZENoaWxkQ29tcG9uZW50KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRDaGlsZENvbXBvbmVudChjaGlsZDogRm9ybVJlbmRlcmVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5jaGlsZENvbXBvbmVudHMucHVzaChjaGlsZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXBSZW1vdGVTZWxlY3QoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub2RlICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZXh0cmFzICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3JlbW90ZS1zZWxlY3QnXG4gICAgKSB7XG4gICAgICAvLyBsZXQgc2VsZWN0UXVlc3Rpb24gPSB0aGlzLm5vZGUuZm9ybS5zZWFyY2hOb2RlQnlRdWVzdGlvbklkKHRoaXMubm9kZS5xdWVzdGlvbi5rZXkpWzBdO1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlcy5kYXRhU291cmNlc1tcbiAgICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VcbiAgICAgIF07XG4gICAgICAvKlxuICAgICAgbGV0IGRlZmFsdFZhbHVlcyA9IG9mKFtdKTtcbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UucmVzb2x2ZVNlbGVjdGVkVmFsdWUoc2VsZWN0UXVlc3Rpb24uY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgZGVmYWx0VmFsdWVzID0gdGhpcy5kYXRhU291cmNlLnJlc29sdmVTZWxlY3RlZFZhbHVlKHNlbGVjdFF1ZXN0aW9uLmNvbnRyb2wudmFsdWUpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLCAvLyBlbXB0eSBsaXN0IG9uIGVycm9yXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLml0ZW1zJCA9IGNvbmNhdChcbiAgICAgICAgZGVmYWx0VmFsdWVzLFxuICAgICAgICB0aGlzLml0ZW1zSW5wdXQkLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5pdGVtc0xvYWRpbmcgPSB0cnVlKSxcbiAgICAgICAgICBzd2l0Y2hNYXAodGVybSA9PiB0aGlzLmRhdGFTb3VyY2Uuc2VhcmNoT3B0aW9ucyh0ZXJtKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLCAvLyBlbXB0eSBsaXN0IG9uIGVycm9yXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLml0ZW1zTG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICAqL1xuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAmJiB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGFTb3VyY2VPcHRpb25zID0gdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRVcEZpbGVVcGxvYWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub2RlICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZXh0cmFzICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ2ZpbGUnXG4gICAgKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2VzLmRhdGFTb3VyY2VzW1xuICAgICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZVxuICAgICAgXTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdLZXknLCB0aGlzLm5vZGUucXVlc3Rpb24pO1xuICAgICAgLy8gY29uc29sZS5sb2coJ0RhdGEgc291cmNlJywgdGhpcy5kYXRhU291cmNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VXBEYXRlcGlja2VySG9saWRheXMoKSB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUucXVlc3Rpb24gJiYgdGhpcy5ub2RlLnF1ZXN0aW9uLnNob3dIb2xpZGF5cykge1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlcy5kYXRhU291cmNlc1tcbiAgICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgY2hlY2tTZWN0aW9uKG5vZGU6IE5vZGVCYXNlKSB7XG4gICAgaWYgKG5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3NlY3Rpb24nKSB7XG4gICAgICBsZXQgZ3JvdXBDaGlsZHJlbkhpZGRlbiA9IGZhbHNlO1xuICAgICAgY29uc3QgYWxsU2VjdGlvbkNvbnRyb2xzSGlkZGVuID0gT2JqZWN0LmtleXMobm9kZS5jaGlsZHJlbikuZXZlcnkoKGspID0+IHtcbiAgICAgICAgY29uc3QgaW5uZXJOb2RlID0gbm9kZS5jaGlsZHJlbltrXTtcbiAgICAgICAgaWYgKGlubmVyTm9kZSBpbnN0YW5jZW9mIEdyb3VwTm9kZSkge1xuICAgICAgICAgIGdyb3VwQ2hpbGRyZW5IaWRkZW4gPSBPYmplY3Qua2V5cyhpbm5lck5vZGUuY2hpbGRyZW4pLmV2ZXJ5KFxuICAgICAgICAgICAgKGkpID0+IGlubmVyTm9kZS5jaGlsZHJlbltpXS5jb250cm9sLmhpZGRlblxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW5ba10uY29udHJvbC5oaWRkZW4gfHwgZ3JvdXBDaGlsZHJlbkhpZGRlbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICFhbGxTZWN0aW9uQ29udHJvbHNIaWRkZW47XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNsaWNrVGFiKHRhYk51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiTnVtYmVyO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcmV2aW91c1RhYigpIHtcbiAgICBpZiAoIXRoaXMuaXNDdXJyZW50VGFiRmlyc3QoKSkge1xuICAgICAgdGhpcy5jbGlja1RhYih0aGlzLmFjdGl2ZVRhYiAtIDEpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0N1cnJlbnRUYWJGaXJzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVUYWIgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgaXNDdXJyZW50VGFiTGFzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVUYWIgPT09IHRoaXMubm9kZS5xdWVzdGlvblsncXVlc3Rpb25zJ10ubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkTmV4dFRhYigpIHtcbiAgICBpZiAoIXRoaXMuaXNDdXJyZW50VGFiTGFzdCgpKSB7XG4gICAgICB0aGlzLmNsaWNrVGFiKHRoaXMuYWN0aXZlVGFiICsgMSk7XG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICB9XG4gIHB1YmxpYyB0YWJTZWxlY3RlZCgkZXZlbnQpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9ICRldmVudDtcbiAgICB0aGlzLnNldFByZXZpb3VzVGFiKCk7XG4gIH1cbiAgcHVibGljIHNldFByZXZpb3VzVGFiKCkge1xuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmZvcm0pIHtcbiAgICAgIHRoaXMubm9kZS5mb3JtLnZhbHVlUHJvY2Vzc2luZ0luZm9bJ2xhc3RGb3JtVGFiJ10gPSB0aGlzLmFjdGl2ZVRhYjtcbiAgICB9XG4gIH1cbiAgcHVibGljIGhhc0Vycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlLmNvbnRyb2wudG91Y2hlZCAmJiAhdGhpcy5ub2RlLmNvbnRyb2wudmFsaWQ7XG4gIH1cblxuICBwdWJsaWMgZXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLmdldEVycm9ycyh0aGlzLm5vZGUpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvQ29udHJvbChlcnJvcjogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFiOiBudW1iZXIgPSArZXJyb3Iuc3BsaXQoJywnKVswXTtcbiAgICBjb25zdCBlbFNlbGVjdG9yID0gZXJyb3Iuc3BsaXQoJywnKVsxXSArICdpZCc7XG5cbiAgICAvLyB0aGUgdGFiIGNvbXBvbmVudHNcbiAgICBjb25zdCB0YWJDb21wb25lbnQ6IEZvcm1SZW5kZXJlckNvbXBvbmVudCA9IHRoaXMuY2hpbGRDb21wb25lbnRzW3RhYl07XG5cbiAgICB0aGlzLmNsaWNrVGFiKHRhYik7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIGV4cGFuZCBhbGwgc2VjdGlvbnNcbiAgICAgIHRhYkNvbXBvbmVudC5jaGlsZENvbXBvbmVudHMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICBzZWN0aW9uLmlzQ29sbGFwc2VkID0gZmFsc2U7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbFNlbGVjdG9yKTtcbiAgICAgICAgICBpZiAoZWxlbWVudCAhPT0gbnVsbCAmJiBlbGVtZW50LmZvY3VzKSB7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgICAgfSk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGVDaGFuZ2VkKG5vZGU6IExlYWZOb2RlKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ05vZGUnLCBub2RlKTtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICB9XG5cbiAgcHVibGljIHVwbG9hZChldmVudCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdFdmVudCcsIGV2ZW50KTtcbiAgICAvLyBjb25zb2xlLmxvZygnRGF0YScsIHRoaXMuZGF0YVNvdXJjZSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlSW5mb3JtYXRpb24oaW5mb0lkKSB7XG4gICAgY29uc3QgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGluZm9JZCk7XG5cbiAgICBpZiAoZS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snKSB7XG4gICAgICBlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0luZm9JZCcsIGluZm9JZCk7XG4gIH1cblxuICBwcml2YXRlIGdldEVycm9ycyhub2RlOiBOb2RlQmFzZSkge1xuICAgIGNvbnN0IGVycm9yczogYW55ID0gbm9kZS5jb250cm9sLmVycm9ycztcblxuICAgIGlmIChlcnJvcnMpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25GYWN0b3J5LmVycm9ycyhlcnJvcnMsIG5vZGUucXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19