@openmrs/ngx-formentry 3.2.1-pre.245 → 3.2.1-pre.271

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 (415) hide show
  1. package/.editorconfig +13 -0
  2. package/.eslintrc.json +45 -0
  3. package/.prettierignore +40 -0
  4. package/.prettierrc +6 -0
  5. package/.turbo/turbo-build:lib.log +37 -0
  6. package/.yarn/plugins/@yarnpkg/plugin-version.cjs +550 -0
  7. package/.yarn/versions/b206d73c.yml +0 -0
  8. package/README.md +429 -0
  9. package/angular.json +164 -0
  10. package/{components → dist/ngx-formentry/components}/input/text-area.directive.d.ts +1 -0
  11. package/{esm2015/components/afe-ng-select.component.js → dist/ngx-formentry/esm2020/components/afe-ng-select.component.mjs} +4 -4
  12. package/dist/ngx-formentry/esm2020/components/appointments-overview/appointments-overview.component.mjs +116 -0
  13. package/{esm2015/components/check-box/checkbox.component.js → dist/ngx-formentry/esm2020/components/check-box/checkbox.component.mjs} +6 -10
  14. package/{esm2015/components/check-box/checkbox.module.js → dist/ngx-formentry/esm2020/components/check-box/checkbox.module.mjs} +5 -5
  15. package/{esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js → dist/ngx-formentry/esm2020/components/custom-component-wrapper/custom-component-wrapper..module.mjs} +5 -5
  16. package/dist/ngx-formentry/esm2020/components/custom-component-wrapper/custom-component-wrapper.component.mjs +21 -0
  17. package/{esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js → dist/ngx-formentry/esm2020/components/custom-control-wrapper/custom-control-wrapper..module.mjs} +5 -5
  18. package/dist/ngx-formentry/esm2020/components/custom-control-wrapper/custom-control-wrapper.component.mjs +68 -0
  19. package/dist/ngx-formentry/esm2020/components/date-time-picker/date-picker/date-picker.component.mjs +188 -0
  20. package/dist/ngx-formentry/esm2020/components/date-time-picker/date-time-picker.component.mjs +115 -0
  21. package/{esm2015/components/date-time-picker/date-time-picker.module.js → dist/ngx-formentry/esm2020/components/date-time-picker/date-time-picker.module.mjs} +5 -5
  22. package/dist/ngx-formentry/esm2020/components/date-time-picker/picker-modal/modal.component.mjs +25 -0
  23. package/{esm2015/components/date-time-picker/pipes/moment.pipe.js → dist/ngx-formentry/esm2020/components/date-time-picker/pipes/moment.pipe.mjs} +4 -4
  24. package/dist/ngx-formentry/esm2020/components/date-time-picker/time-picker/time-picker.component.mjs +121 -0
  25. package/{esm2015/components/file-upload/file-upload.component.js → dist/ngx-formentry/esm2020/components/file-upload/file-upload.component.mjs} +8 -13
  26. package/{esm2015/components/file-upload/file-upload.module.js → dist/ngx-formentry/esm2020/components/file-upload/file-upload.module.mjs} +5 -5
  27. package/dist/ngx-formentry/esm2020/components/file-upload/secure.pipe.mjs +101 -0
  28. package/{esm2015/components/input/input.directive.js → dist/ngx-formentry/esm2020/components/input/input.directive.mjs} +4 -4
  29. package/{esm2015/components/input/input.module.js → dist/ngx-formentry/esm2020/components/input/input.module.mjs} +5 -5
  30. package/{esm2015/components/input/label.component.js → dist/ngx-formentry/esm2020/components/input/label.component.mjs} +4 -4
  31. package/dist/ngx-formentry/esm2020/components/input/text-area.directive.mjs +58 -0
  32. package/dist/ngx-formentry/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +76 -0
  33. package/{esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js → dist/ngx-formentry/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs} +5 -5
  34. package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs} +5 -5
  35. package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs} +9 -9
  36. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +142 -0
  37. package/{esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs} +5 -11
  38. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +373 -0
  39. package/{esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs} +5 -11
  40. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +342 -0
  41. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs} +5 -11
  42. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +392 -0
  43. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs} +4 -4
  44. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs} +4 -4
  45. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs} +4 -4
  46. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs} +5 -11
  47. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs} +4 -4
  48. package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs} +6 -7
  49. package/{esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs} +4 -4
  50. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +90 -0
  51. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +292 -0
  52. package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs} +6 -10
  53. package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +26 -0
  54. package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs} +4 -4
  55. package/{esm2015/components/ngx-remote-select/ngx-remote-select.component.js → dist/ngx-formentry/esm2020/components/ngx-remote-select/ngx-remote-select.component.mjs} +6 -10
  56. package/{esm2015/components/ngx-remote-select/ngx-remote-select.module.js → dist/ngx-formentry/esm2020/components/ngx-remote-select/ngx-remote-select.module.mjs} +5 -5
  57. package/dist/ngx-formentry/esm2020/components/ngx-tabset/components/ngx-tab-set.component.mjs +72 -0
  58. package/dist/ngx-formentry/esm2020/components/ngx-tabset/components/tab.component.mjs +33 -0
  59. package/{esm2015/components/ngx-tabset/directives/hover-class.directive.js → dist/ngx-formentry/esm2020/components/ngx-tabset/directives/hover-class.directive.mjs} +4 -4
  60. package/{esm2015/components/ngx-tabset/modules/ngx-tabset.module.js → dist/ngx-formentry/esm2020/components/ngx-tabset/modules/ngx-tabset.module.mjs} +5 -5
  61. package/dist/ngx-formentry/esm2020/components/number-input/number-input.component.mjs +248 -0
  62. package/{esm2015/components/number-input/number-input.module.js → dist/ngx-formentry/esm2020/components/number-input/number-input.module.mjs} +5 -5
  63. package/{esm2015/components/number-input/number.directive.js → dist/ngx-formentry/esm2020/components/number-input/number.directive.mjs} +4 -4
  64. package/dist/ngx-formentry/esm2020/components/radio-button/radio.component.mjs +96 -0
  65. package/{esm2015/components/radio-button/radio.module.js → dist/ngx-formentry/esm2020/components/radio-button/radio.module.mjs} +5 -5
  66. package/{esm2015/components/select/optgroup.directive.js → dist/ngx-formentry/esm2020/components/select/optgroup.directive.mjs} +4 -4
  67. package/{esm2015/components/select/option.directive.js → dist/ngx-formentry/esm2020/components/select/option.directive.mjs} +4 -4
  68. package/dist/ngx-formentry/esm2020/components/select/select.component.mjs +182 -0
  69. package/{esm2015/components/select/select.module.js → dist/ngx-formentry/esm2020/components/select/select.module.mjs} +5 -5
  70. package/{esm2015/form-entry/data-sources/data-sources.js → dist/ngx-formentry/esm2020/form-entry/data-sources/data-sources.mjs} +4 -4
  71. package/{esm2015/form-entry/directives/collapse.directive.js → dist/ngx-formentry/esm2020/form-entry/directives/collapse.directive.mjs} +5 -5
  72. package/{esm2015/form-entry/directives/historical-value.directive.js → dist/ngx-formentry/esm2020/form-entry/directives/historical-value.directive.mjs} +4 -4
  73. package/dist/ngx-formentry/esm2020/form-entry/error-renderer/error-renderer.component.mjs +53 -0
  74. package/{esm2015/form-entry/expression-runner/expression-runner.js → dist/ngx-formentry/esm2020/form-entry/expression-runner/expression-runner.mjs} +6 -6
  75. package/{esm2015/form-entry/form-entry.module.js → dist/ngx-formentry/esm2020/form-entry/form-entry.module.mjs} +5 -5
  76. package/{esm2015/form-entry/form-factory/control-relations.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/control-relations.factory.mjs} +4 -4
  77. package/dist/ngx-formentry/esm2020/form-entry/form-factory/form-control.service.mjs +118 -0
  78. package/{esm2015/form-entry/form-factory/form.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form.factory.mjs} +4 -4
  79. package/{esm2015/form-entry/form-factory/hiders-disablers.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/hiders-disablers.factory.mjs} +4 -4
  80. package/dist/ngx-formentry/esm2020/form-entry/form-factory/question.factory.mjs +1000 -0
  81. package/{esm2015/form-entry/form-factory/show-messages.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/show-messages.factory.mjs} +4 -4
  82. package/{esm2015/form-entry/form-factory/validation.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/validation.factory.mjs} +4 -4
  83. package/dist/ngx-formentry/esm2020/form-entry/form-renderer/form-renderer.component.mjs +263 -0
  84. package/{esm2015/form-entry/helpers/historical-expression-helper-service.js → dist/ngx-formentry/esm2020/form-entry/helpers/historical-expression-helper-service.mjs} +4 -4
  85. package/{esm2015/form-entry/helpers/historical-field-helper-service.js → dist/ngx-formentry/esm2020/form-entry/helpers/historical-field-helper-service.mjs} +4 -4
  86. package/{esm2015/form-entry/helpers/js-expression-helper.js → dist/ngx-formentry/esm2020/form-entry/helpers/js-expression-helper.mjs} +7 -11
  87. package/{esm2015/form-entry/pipes/time-ago.pipe.js → dist/ngx-formentry/esm2020/form-entry/pipes/time-ago.pipe.mjs} +4 -4
  88. package/{esm2015/form-entry/services/debug-mode.service.js → dist/ngx-formentry/esm2020/form-entry/services/debug-mode.service.mjs} +4 -4
  89. package/{esm2015/form-entry/services/form-errors.service.js → dist/ngx-formentry/esm2020/form-entry/services/form-errors.service.mjs} +4 -4
  90. package/{esm2015/form-entry/services/form-schema-compiler.service.js → dist/ngx-formentry/esm2020/form-entry/services/form-schema-compiler.service.mjs} +4 -4
  91. package/{esm2015/form-entry/services/historical-encounter-data.service.js → dist/ngx-formentry/esm2020/form-entry/services/historical-encounter-data.service.mjs} +4 -4
  92. package/dist/ngx-formentry/esm2020/form-entry/value-adapters/diagnosis.adapter.mjs +144 -0
  93. package/dist/ngx-formentry/esm2020/form-entry/value-adapters/encounter.adapter.mjs +186 -0
  94. package/dist/ngx-formentry/esm2020/form-entry/value-adapters/obs-adapter-helper.mjs +533 -0
  95. package/{esm2015/form-entry/value-adapters/obs.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/obs.adapter.mjs} +4 -4
  96. package/{esm2015/form-entry/value-adapters/order.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/order.adapter.mjs} +4 -4
  97. package/{esm2015/form-entry/value-adapters/patient-identifier.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/patient-identifier.adapter.mjs} +4 -4
  98. package/{esm2015/form-entry/value-adapters/person-attribute.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/person-attribute.adapter.mjs} +4 -4
  99. package/{esm2015/shared.module.js → dist/ngx-formentry/esm2020/shared.module.mjs} +5 -5
  100. package/dist/ngx-formentry/fesm2015/openmrs-ngx-formentry.mjs +14718 -0
  101. package/dist/ngx-formentry/fesm2015/openmrs-ngx-formentry.mjs.map +1 -0
  102. package/{fesm2015/openmrs-ngx-formentry.js → dist/ngx-formentry/fesm2020/openmrs-ngx-formentry.mjs} +546 -699
  103. package/dist/ngx-formentry/fesm2020/openmrs-ngx-formentry.mjs.map +1 -0
  104. package/dist/ngx-formentry/package.json +48 -0
  105. package/package.json +92 -26
  106. package/proxy.conf.json +6 -0
  107. package/scripts/build.sh +2 -0
  108. package/tsconfig.json +29 -0
  109. package/turbo.json +18 -0
  110. package/bundles/openmrs-ngx-formentry.umd.js +0 -16636
  111. package/bundles/openmrs-ngx-formentry.umd.js.map +0 -1
  112. package/esm2015/components/appointments-overview/appointments-overview.component.js +0 -121
  113. package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +0 -24
  114. package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +0 -74
  115. package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +0 -192
  116. package/esm2015/components/date-time-picker/date-time-picker.component.js +0 -120
  117. package/esm2015/components/date-time-picker/picker-modal/modal.component.js +0 -31
  118. package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +0 -125
  119. package/esm2015/components/file-upload/secure.pipe.js +0 -101
  120. package/esm2015/components/input/text-area.directive.js +0 -54
  121. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +0 -81
  122. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +0 -149
  123. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +0 -378
  124. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +0 -348
  125. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +0 -399
  126. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +0 -96
  127. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +0 -298
  128. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +0 -27
  129. package/esm2015/components/ngx-tabset/components/ngx-tab-set.component.js +0 -76
  130. package/esm2015/components/ngx-tabset/components/tab.component.js +0 -37
  131. package/esm2015/components/number-input/number-input.component.js +0 -252
  132. package/esm2015/components/radio-button/radio.component.js +0 -102
  133. package/esm2015/components/select/select.component.js +0 -187
  134. package/esm2015/form-entry/error-renderer/error-renderer.component.js +0 -57
  135. package/esm2015/form-entry/form-factory/form-control.service.js +0 -119
  136. package/esm2015/form-entry/form-factory/question.factory.js +0 -1001
  137. package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -270
  138. package/esm2015/form-entry/value-adapters/diagnosis.adapter.js +0 -140
  139. package/esm2015/form-entry/value-adapters/encounter.adapter.js +0 -187
  140. package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +0 -536
  141. package/fesm2015/openmrs-ngx-formentry.js.map +0 -1
  142. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
  143. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
  144. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
  145. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
  146. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
  147. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
  148. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
  149. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
  150. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
  151. /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
  152. /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
  153. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
  154. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
  155. /package/{components → dist/ngx-formentry/components}/custom-component-wrapper/custom-component-wrapper..module.d.ts +0 -0
  156. /package/{components → dist/ngx-formentry/components}/custom-component-wrapper/custom-component-wrapper.component.d.ts +0 -0
  157. /package/{components → dist/ngx-formentry/components}/custom-control-wrapper/custom-control-wrapper..module.d.ts +0 -0
  158. /package/{components → dist/ngx-formentry/components}/custom-control-wrapper/custom-control-wrapper.component.d.ts +0 -0
  159. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
  160. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
  161. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
  162. /package/{components → dist/ngx-formentry/components}/date-time-picker/index.d.ts +0 -0
  163. /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
  164. /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
  165. /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
  166. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
  167. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
  168. /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
  169. /package/{components → dist/ngx-formentry/components}/input/input.directive.d.ts +0 -0
  170. /package/{components → dist/ngx-formentry/components}/input/input.module.d.ts +0 -0
  171. /package/{components → dist/ngx-formentry/components}/input/label.component.d.ts +0 -0
  172. /package/{components → dist/ngx-formentry/components}/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +0 -0
  173. /package/{components → dist/ngx-formentry/components}/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +0 -0
  174. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.d.ts +0 -0
  175. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.d.ts +0 -0
  176. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.d.ts +0 -0
  177. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.d.ts +0 -0
  178. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.d.ts +0 -0
  179. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +0 -0
  180. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +0 -0
  181. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +0 -0
  182. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +0 -0
  183. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +0 -0
  184. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +0 -0
  185. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +0 -0
  186. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +0 -0
  187. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.d.ts +0 -0
  188. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +0 -0
  189. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker.animations.d.ts +0 -0
  190. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +0 -0
  191. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +0 -0
  192. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +0 -0
  193. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +0 -0
  194. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +0 -0
  195. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/timer.component.d.ts +0 -0
  196. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-config.class.d.ts +0 -0
  197. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-container.component.d.ts +0 -0
  198. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-ref.class.d.ts +0 -0
  199. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog.module.d.ts +0 -0
  200. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +0 -0
  201. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/utils/index.d.ts +0 -0
  202. /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/utils/object.utils.d.ts +0 -0
  203. /package/{components → dist/ngx-formentry/components}/ngx-remote-select/ngx-remote-select.component.d.ts +0 -0
  204. /package/{components → dist/ngx-formentry/components}/ngx-remote-select/ngx-remote-select.module.d.ts +0 -0
  205. /package/{components → dist/ngx-formentry/components}/ngx-tabset/components/ngx-tab-set.component.d.ts +0 -0
  206. /package/{components → dist/ngx-formentry/components}/ngx-tabset/components/tab.component.d.ts +0 -0
  207. /package/{components → dist/ngx-formentry/components}/ngx-tabset/directives/hover-class.directive.d.ts +0 -0
  208. /package/{components → dist/ngx-formentry/components}/ngx-tabset/modules/ngx-tabset.module.d.ts +0 -0
  209. /package/{components → dist/ngx-formentry/components}/number-input/number-input.component.d.ts +0 -0
  210. /package/{components → dist/ngx-formentry/components}/number-input/number-input.module.d.ts +0 -0
  211. /package/{components → dist/ngx-formentry/components}/number-input/number.directive.d.ts +0 -0
  212. /package/{components → dist/ngx-formentry/components}/radio-button/radio.component.d.ts +0 -0
  213. /package/{components → dist/ngx-formentry/components}/radio-button/radio.module.d.ts +0 -0
  214. /package/{components → dist/ngx-formentry/components}/select/optgroup.directive.d.ts +0 -0
  215. /package/{components → dist/ngx-formentry/components}/select/option.directive.d.ts +0 -0
  216. /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
  217. /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
  218. /package/{esm2015/abstract-controls-extension/afe-control-type.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-control-type.mjs} +0 -0
  219. /package/{esm2015/abstract-controls-extension/afe-form-array.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-array.mjs} +0 -0
  220. /package/{esm2015/abstract-controls-extension/afe-form-control.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-control.mjs} +0 -0
  221. /package/{esm2015/abstract-controls-extension/afe-form-group.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-group.mjs} +0 -0
  222. /package/{esm2015/abstract-controls-extension/control-extensions.js → dist/ngx-formentry/esm2020/abstract-controls-extension/control-extensions.mjs} +0 -0
  223. /package/{esm2015/abstract-controls-extension/index.js → dist/ngx-formentry/esm2020/abstract-controls-extension/index.mjs} +0 -0
  224. /package/{esm2015/abstract-controls-extension/value-change.listener.js → dist/ngx-formentry/esm2020/abstract-controls-extension/value-change.listener.mjs} +0 -0
  225. /package/{esm2015/change-tracking/control-relation.js → dist/ngx-formentry/esm2020/change-tracking/control-relation.mjs} +0 -0
  226. /package/{esm2015/change-tracking/control-relations.js → dist/ngx-formentry/esm2020/change-tracking/control-relations.mjs} +0 -0
  227. /package/{esm2015/components/date-time-picker/index.js → dist/ngx-formentry/esm2020/components/date-time-picker/index.mjs} +0 -0
  228. /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs} +0 -0
  229. /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs} +0 -0
  230. /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs} +0 -0
  231. /package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs} +0 -0
  232. /package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-config.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs} +0 -0
  233. /package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs} +0 -0
  234. /package/{esm2015/components/ngx-pick-datetime/lib/utils/index.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/utils/index.mjs} +0 -0
  235. /package/{esm2015/components/ngx-pick-datetime/lib/utils/object.utils.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/utils/object.utils.mjs} +0 -0
  236. /package/{esm2015/form-entry/control-alerts/alert-helpers.js → dist/ngx-formentry/esm2020/form-entry/control-alerts/alert-helpers.mjs} +0 -0
  237. /package/{esm2015/form-entry/control-alerts/can-generate-alert.js → dist/ngx-formentry/esm2020/form-entry/control-alerts/can-generate-alert.mjs} +0 -0
  238. /package/{esm2015/form-entry/control-calculators/can-calculate.js → dist/ngx-formentry/esm2020/form-entry/control-calculators/can-calculate.mjs} +0 -0
  239. /package/{esm2015/form-entry/control-hiders-disablers/can-disable.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/can-disable.mjs} +0 -0
  240. /package/{esm2015/form-entry/control-hiders-disablers/can-hide.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/can-hide.mjs} +0 -0
  241. /package/{esm2015/form-entry/control-hiders-disablers/disabler-helper.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/disabler-helper.mjs} +0 -0
  242. /package/{esm2015/form-entry/control-hiders-disablers/hider-helpers.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/hider-helpers.mjs} +0 -0
  243. /package/{esm2015/form-entry/data-sources/dummy-data-source.js → dist/ngx-formentry/esm2020/form-entry/data-sources/dummy-data-source.mjs} +0 -0
  244. /package/{esm2015/form-entry/directives/collapse-animations.js → dist/ngx-formentry/esm2020/form-entry/directives/collapse-animations.mjs} +0 -0
  245. /package/{esm2015/form-entry/form-factory/form-node.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form-node.mjs} +0 -0
  246. /package/{esm2015/form-entry/form-factory/form.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form.mjs} +0 -0
  247. /package/{esm2015/form-entry/form-factory/index.js → dist/ngx-formentry/esm2020/form-entry/form-factory/index.mjs} +0 -0
  248. /package/{esm2015/form-entry/helpers/risk-dataset-table.js → dist/ngx-formentry/esm2020/form-entry/helpers/risk-dataset-table.mjs} +0 -0
  249. /package/{esm2015/form-entry/question-models/checkbox.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/checkbox.model.mjs} +0 -0
  250. /package/{esm2015/form-entry/question-models/conditional-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/conditional-validation.model.mjs} +0 -0
  251. /package/{esm2015/form-entry/question-models/custom-control-question.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/custom-control-question.model.mjs} +0 -0
  252. /package/{esm2015/form-entry/question-models/date-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/date-question.mjs} +0 -0
  253. /package/{esm2015/form-entry/question-models/date-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/date-validation.model.mjs} +0 -0
  254. /package/{esm2015/form-entry/question-models/diagnosis-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/diagnosis-question.mjs} +0 -0
  255. /package/{esm2015/form-entry/question-models/file-upload-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/file-upload-question.mjs} +0 -0
  256. /package/{esm2015/form-entry/question-models/group-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/group-question.mjs} +0 -0
  257. /package/{esm2015/form-entry/question-models/interfaces/base-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/base-options.mjs} +0 -0
  258. /package/{esm2015/form-entry/question-models/interfaces/checkbox-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/checkbox-options.mjs} +0 -0
  259. /package/{esm2015/form-entry/question-models/interfaces/data-source.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/data-source.mjs} +0 -0
  260. /package/{esm2015/form-entry/question-models/interfaces/date-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/date-question-options.mjs} +0 -0
  261. /package/{esm2015/form-entry/question-models/interfaces/diagnosis-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/diagnosis-question-options.mjs} +0 -0
  262. /package/{esm2015/form-entry/question-models/interfaces/file-upload-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/file-upload-question-options.mjs} +0 -0
  263. /package/{esm2015/form-entry/question-models/interfaces/group-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/group-question-options.mjs} +0 -0
  264. /package/{esm2015/form-entry/question-models/interfaces/multi-select-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/multi-select-options.mjs} +0 -0
  265. /package/{esm2015/form-entry/question-models/interfaces/nested-questions.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/nested-questions.mjs} +0 -0
  266. /package/{esm2015/form-entry/question-models/interfaces/radio-button-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/radio-button-options.mjs} +0 -0
  267. /package/{esm2015/form-entry/question-models/interfaces/repeating-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/repeating-question-options.mjs} +0 -0
  268. /package/{esm2015/form-entry/question-models/interfaces/select-option.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/select-option.mjs} +0 -0
  269. /package/{esm2015/form-entry/question-models/interfaces/select-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/select-question-options.mjs} +0 -0
  270. /package/{esm2015/form-entry/question-models/interfaces/test-order-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/test-order-question-options.mjs} +0 -0
  271. /package/{esm2015/form-entry/question-models/interfaces/text-area-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/text-area-question-options.mjs} +0 -0
  272. /package/{esm2015/form-entry/question-models/interfaces/text-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/text-question-options.mjs} +0 -0
  273. /package/{esm2015/form-entry/question-models/interfaces/ui-select-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/ui-select-question-options.mjs} +0 -0
  274. /package/{esm2015/form-entry/question-models/js-expression-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/js-expression-validation.model.mjs} +0 -0
  275. /package/{esm2015/form-entry/question-models/max-length-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/max-length-validation.model.mjs} +0 -0
  276. /package/{esm2015/form-entry/question-models/max-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/max-validation.model.mjs} +0 -0
  277. /package/{esm2015/form-entry/question-models/min-length-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/min-length-validation.model.mjs} +0 -0
  278. /package/{esm2015/form-entry/question-models/min-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/min-validation.model.mjs} +0 -0
  279. /package/{esm2015/form-entry/question-models/models.js → dist/ngx-formentry/esm2020/form-entry/question-models/models.mjs} +0 -0
  280. /package/{esm2015/form-entry/question-models/multi-select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/multi-select-question.mjs} +0 -0
  281. /package/{esm2015/form-entry/question-models/pair.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/pair.model.mjs} +0 -0
  282. /package/{esm2015/form-entry/question-models/question-base.js → dist/ngx-formentry/esm2020/form-entry/question-models/question-base.mjs} +0 -0
  283. /package/{esm2015/form-entry/question-models/radio-button.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/radio-button.model.mjs} +0 -0
  284. /package/{esm2015/form-entry/question-models/rendering-type.js → dist/ngx-formentry/esm2020/form-entry/question-models/rendering-type.mjs} +0 -0
  285. /package/{esm2015/form-entry/question-models/repeating-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/repeating-question.mjs} +0 -0
  286. /package/{esm2015/form-entry/question-models/select-option.js → dist/ngx-formentry/esm2020/form-entry/question-models/select-option.mjs} +0 -0
  287. /package/{esm2015/form-entry/question-models/select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/select-question.mjs} +0 -0
  288. /package/{esm2015/form-entry/question-models/test-order-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/test-order-question.mjs} +0 -0
  289. /package/{esm2015/form-entry/question-models/text-area-input-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/text-area-input-question.mjs} +0 -0
  290. /package/{esm2015/form-entry/question-models/text-input-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/text-input-question.mjs} +0 -0
  291. /package/{esm2015/form-entry/question-models/ui-select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/ui-select-question.mjs} +0 -0
  292. /package/{esm2015/form-entry/question-models/validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/validation.model.mjs} +0 -0
  293. /package/{esm2015/form-entry/validators/conditional-answered.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/conditional-answered.validator.mjs} +0 -0
  294. /package/{esm2015/form-entry/validators/conditional-required.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/conditional-required.validator.mjs} +0 -0
  295. /package/{esm2015/form-entry/validators/date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/date.validator.mjs} +0 -0
  296. /package/{esm2015/form-entry/validators/future-date-restriction.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/future-date-restriction.validator.mjs} +0 -0
  297. /package/{esm2015/form-entry/validators/js-expression.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/js-expression.validator.mjs} +0 -0
  298. /package/{esm2015/form-entry/validators/max-date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max-date.validator.mjs} +0 -0
  299. /package/{esm2015/form-entry/validators/max-length.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max-length.validator.mjs} +0 -0
  300. /package/{esm2015/form-entry/validators/max.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max.validator.mjs} +0 -0
  301. /package/{esm2015/form-entry/validators/min-date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min-date.validator.mjs} +0 -0
  302. /package/{esm2015/form-entry/validators/min-length.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min-length.validator.mjs} +0 -0
  303. /package/{esm2015/form-entry/validators/min.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min.validator.mjs} +0 -0
  304. /package/{esm2015/form-entry/validators/required.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/required.validator.mjs} +0 -0
  305. /package/{esm2015/form-entry/validators/validations.js → dist/ngx-formentry/esm2020/form-entry/validators/validations.mjs} +0 -0
  306. /package/{esm2015/form-entry/value-adapters/value.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/value.adapter.mjs} +0 -0
  307. /package/{esm2015/lib/index.js → dist/ngx-formentry/esm2020/lib/index.mjs} +0 -0
  308. /package/{esm2015/openmrs-ngx-formentry.js → dist/ngx-formentry/esm2020/openmrs-ngx-formentry.mjs} +0 -0
  309. /package/{esm2015/public_api.js → dist/ngx-formentry/esm2020/public_api.mjs} +0 -0
  310. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
  311. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
  312. /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
  313. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
  314. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
  315. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
  316. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
  317. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
  318. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
  319. /package/{form-entry → dist/ngx-formentry/form-entry}/directives/collapse-animations.d.ts +0 -0
  320. /package/{form-entry → dist/ngx-formentry/form-entry}/directives/collapse.directive.d.ts +0 -0
  321. /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value.directive.d.ts +0 -0
  322. /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
  323. /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
  324. /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
  325. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
  326. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
  327. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
  328. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
  329. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
  330. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
  331. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/index.d.ts +0 -0
  332. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
  333. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
  334. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
  335. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
  336. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
  337. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
  338. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
  339. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/risk-dataset-table.d.ts +0 -0
  340. /package/{form-entry → dist/ngx-formentry/form-entry}/pipes/time-ago.pipe.d.ts +0 -0
  341. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
  342. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
  343. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/custom-control-question.model.d.ts +0 -0
  344. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
  345. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
  346. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/diagnosis-question.d.ts +0 -0
  347. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
  348. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
  349. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
  350. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
  351. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
  352. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
  353. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/diagnosis-question-options.d.ts +0 -0
  354. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
  355. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
  356. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
  357. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
  358. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/radio-button-options.d.ts +0 -0
  359. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
  360. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
  361. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
  362. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
  363. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
  364. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
  365. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
  366. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
  367. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-length-validation.model.d.ts +0 -0
  368. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
  369. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-length-validation.model.d.ts +0 -0
  370. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
  371. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
  372. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
  373. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
  374. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
  375. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/radio-button.model.d.ts +0 -0
  376. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
  377. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
  378. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
  379. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
  380. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
  381. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
  382. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
  383. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
  384. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
  385. /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
  386. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
  387. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
  388. /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
  389. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
  390. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
  391. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
  392. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
  393. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
  394. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
  395. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-length.validator.d.ts +0 -0
  396. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
  397. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
  398. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-length.validator.d.ts +0 -0
  399. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
  400. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
  401. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
  402. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/diagnosis.adapter.d.ts +0 -0
  403. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
  404. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
  405. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
  406. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
  407. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/patient-identifier.adapter.d.ts +0 -0
  408. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
  409. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
  410. /package/{lib → dist/ngx-formentry/lib}/index.d.ts +0 -0
  411. /package/{openmrs-ngx-formentry.d.ts → dist/ngx-formentry/openmrs-ngx-formentry.d.ts} +0 -0
  412. /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
  413. /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
  414. /package/{styles → dist/ngx-formentry/styles}/ngx-formentry.css +0 -0
  415. /package/{styles → dist/ngx-formentry/styles}/picker.min.css +0 -0
@@ -0,0 +1,392 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Optional, ViewChild } from '@angular/core';
2
+ import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';
3
+ import { Subject } from 'rxjs';
4
+ import { DateTimeAdapter } from './adapter/date-time-adapter.class';
5
+ import { OwlCalendarComponent } from './calendar.component';
6
+ import { OwlDateTimeIntl } from './date-time-picker-intl.service';
7
+ import { owlDateTimePickerAnimations } from './date-time-picker.animations';
8
+ import { OwlTimerComponent } from './timer.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./date-time-picker-intl.service";
11
+ import * as i2 from "./adapter/date-time-adapter.class";
12
+ import * as i3 from "./calendar.component";
13
+ import * as i4 from "./timer.component";
14
+ import * as i5 from "@angular/cdk/a11y";
15
+ import * as i6 from "@angular/common";
16
+ export class OwlDateTimeContainerComponent {
17
+ constructor(cdRef, elmRef, pickerIntl, dateTimeAdapter) {
18
+ this.cdRef = cdRef;
19
+ this.elmRef = elmRef;
20
+ this.pickerIntl = pickerIntl;
21
+ this.dateTimeAdapter = dateTimeAdapter;
22
+ this.activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')
23
+ /**
24
+ * Stream emits when try to hide picker
25
+ * */
26
+ this.hidePicker$ = new Subject();
27
+ /**
28
+ * Stream emits when try to confirm the selected value
29
+ * */
30
+ this.confirmSelected$ = new Subject();
31
+ this.pickerOpened$ = new Subject();
32
+ }
33
+ get owlDTContainerClass() {
34
+ return true;
35
+ }
36
+ get owlDTPopupContainerClass() {
37
+ return this.picker.pickerMode === 'popup';
38
+ }
39
+ get owlDTDialogContainerClass() {
40
+ return this.picker.pickerMode === 'dialog';
41
+ }
42
+ get owlDTInlineContainerClass() {
43
+ return this.picker.pickerMode === 'inline';
44
+ }
45
+ get owlDTContainerDisabledClass() {
46
+ return this.picker.disabled;
47
+ }
48
+ get owlDTContainerId() {
49
+ return this.picker.id;
50
+ }
51
+ get owlDTContainerAnimation() {
52
+ return this.picker.pickerMode === 'inline' ? '' : 'enter';
53
+ }
54
+ handleContainerAnimationDone(event) {
55
+ const toState = event.toState;
56
+ if (toState === 'enter') {
57
+ this.pickerOpened$.next();
58
+ }
59
+ }
60
+ get hidePickerStream() {
61
+ return this.hidePicker$.asObservable();
62
+ }
63
+ get confirmSelectedStream() {
64
+ return this.confirmSelected$.asObservable();
65
+ }
66
+ get pickerOpenedStream() {
67
+ return this.pickerOpened$.asObservable();
68
+ }
69
+ get pickerMoment() {
70
+ return this._clamPickerMoment;
71
+ }
72
+ set pickerMoment(value) {
73
+ if (value) {
74
+ this._clamPickerMoment = this.dateTimeAdapter.clampDate(value, this.picker.minDateTime, this.picker.maxDateTime);
75
+ }
76
+ this.cdRef.markForCheck();
77
+ }
78
+ get pickerType() {
79
+ return this.picker.pickerType;
80
+ }
81
+ get cancelLabel() {
82
+ return this.pickerIntl.cancelBtnLabel;
83
+ }
84
+ get setLabel() {
85
+ return this.pickerIntl.setBtnLabel;
86
+ }
87
+ /**
88
+ * The range 'from' label
89
+ * */
90
+ get fromLabel() {
91
+ return this.pickerIntl.rangeFromLabel;
92
+ }
93
+ /**
94
+ * The range 'to' label
95
+ * */
96
+ get toLabel() {
97
+ return this.pickerIntl.rangeToLabel;
98
+ }
99
+ /**
100
+ * The range 'from' formatted value
101
+ * */
102
+ get fromFormattedValue() {
103
+ const value = this.picker.selecteds[0];
104
+ return value
105
+ ? this.dateTimeAdapter.format(value, this.picker.formatString)
106
+ : '';
107
+ }
108
+ /**
109
+ * The range 'to' formatted value
110
+ * */
111
+ get toFormattedValue() {
112
+ const value = this.picker.selecteds[1];
113
+ return value
114
+ ? this.dateTimeAdapter.format(value, this.picker.formatString)
115
+ : '';
116
+ }
117
+ /**
118
+ * Cases in which the control buttons show in the picker
119
+ * 1) picker mode is 'dialog'
120
+ * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'
121
+ * */
122
+ get showControlButtons() {
123
+ return (this.picker.pickerMode === 'dialog' ||
124
+ (this.picker.pickerType !== 'calendar' &&
125
+ this.picker.pickerMode !== 'inline'));
126
+ }
127
+ get containerElm() {
128
+ return this.elmRef.nativeElement;
129
+ }
130
+ ngAfterContentInit() {
131
+ this.initPicker();
132
+ }
133
+ ngAfterViewInit() {
134
+ this.focusPicker();
135
+ }
136
+ dateSelected(date) {
137
+ let result;
138
+ if (this.picker.isInSingleMode) {
139
+ result = this.dateSelectedInSingleMode(date);
140
+ if (result) {
141
+ this.pickerMoment = result;
142
+ this.picker.select(result);
143
+ }
144
+ else {
145
+ // we close the picker when result is null and pickerType is calendar.
146
+ if (this.pickerType === 'calendar') {
147
+ this.hidePicker$.next(null);
148
+ }
149
+ }
150
+ return;
151
+ }
152
+ if (this.picker.isInRangeMode) {
153
+ result = this.dateSelectedInRangeMode(date);
154
+ if (result) {
155
+ this.pickerMoment = result[this.activeSelectedIndex];
156
+ this.picker.select(result);
157
+ }
158
+ }
159
+ }
160
+ timeSelected(time) {
161
+ this.pickerMoment = this.dateTimeAdapter.clone(time);
162
+ if (!this.picker.dateTimeChecker(this.pickerMoment)) {
163
+ return;
164
+ }
165
+ if (this.picker.isInSingleMode) {
166
+ this.picker.select(this.pickerMoment);
167
+ return;
168
+ }
169
+ if (this.picker.isInRangeMode) {
170
+ const selecteds = [...this.picker.selecteds];
171
+ // check if the 'from' is after 'to' or 'to'is before 'from'
172
+ // In this case, we set both the 'from' and 'to' the same value
173
+ if ((this.activeSelectedIndex === 0 &&
174
+ selecteds[1] &&
175
+ this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) ===
176
+ 1) ||
177
+ (this.activeSelectedIndex === 1 &&
178
+ selecteds[0] &&
179
+ this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)) {
180
+ selecteds[0] = this.pickerMoment;
181
+ selecteds[1] = this.pickerMoment;
182
+ }
183
+ else {
184
+ selecteds[this.activeSelectedIndex] = this.pickerMoment;
185
+ }
186
+ this.picker.select(selecteds);
187
+ }
188
+ }
189
+ /**
190
+ * Handle click on cancel button
191
+ */
192
+ onCancelClicked(event) {
193
+ this.hidePicker$.next(null);
194
+ event.preventDefault();
195
+ return;
196
+ }
197
+ /**
198
+ * Handle click on set button
199
+ */
200
+ onSetClicked(event) {
201
+ if (!this.picker.dateTimeChecker(this.pickerMoment)) {
202
+ this.hidePicker$.next(null);
203
+ event.preventDefault();
204
+ return;
205
+ }
206
+ this.confirmSelected$.next(event);
207
+ event.preventDefault();
208
+ return;
209
+ }
210
+ /**
211
+ * Handle click on inform radio group
212
+ */
213
+ handleClickOnInfoGroup(event, index) {
214
+ this.setActiveSelectedIndex(index);
215
+ event.preventDefault();
216
+ event.stopPropagation();
217
+ }
218
+ /**
219
+ * Handle click on inform radio group
220
+ */
221
+ handleKeydownOnInfoGroup(event, next, index) {
222
+ switch (event.keyCode) {
223
+ case DOWN_ARROW:
224
+ case RIGHT_ARROW:
225
+ case UP_ARROW:
226
+ case LEFT_ARROW:
227
+ next.focus();
228
+ this.setActiveSelectedIndex(index === 0 ? 1 : 0);
229
+ event.preventDefault();
230
+ event.stopPropagation();
231
+ break;
232
+ case SPACE:
233
+ this.setActiveSelectedIndex(index);
234
+ event.preventDefault();
235
+ event.stopPropagation();
236
+ break;
237
+ default:
238
+ return;
239
+ }
240
+ }
241
+ /**
242
+ * Set the value of activeSelectedIndex
243
+ */
244
+ setActiveSelectedIndex(index) {
245
+ if (this.picker.selectMode === 'range' &&
246
+ this.activeSelectedIndex !== index) {
247
+ this.activeSelectedIndex = index;
248
+ const selected = this.picker.selecteds[this.activeSelectedIndex];
249
+ if (this.picker.selecteds && selected) {
250
+ this.pickerMoment = this.dateTimeAdapter.clone(selected);
251
+ }
252
+ }
253
+ return;
254
+ }
255
+ initPicker() {
256
+ this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();
257
+ this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;
258
+ }
259
+ /**
260
+ * Select calendar date in single mode,
261
+ * it returns null when date is not selected.
262
+ */
263
+ dateSelectedInSingleMode(date) {
264
+ if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {
265
+ return null;
266
+ }
267
+ return this.updateAndCheckCalendarDate(date);
268
+ }
269
+ /**
270
+ * Select dates in range Mode
271
+ */
272
+ dateSelectedInRangeMode(date) {
273
+ let from = this.picker.selecteds[0];
274
+ let to = this.picker.selecteds[1];
275
+ const result = this.updateAndCheckCalendarDate(date);
276
+ if (!result) {
277
+ return null;
278
+ }
279
+ // if the given calendar day is after or equal to 'from',
280
+ // set ths given date as 'to'
281
+ // otherwise, set it as 'from' and set 'to' to null
282
+ if (this.picker.selectMode === 'range') {
283
+ if (this.picker.selecteds &&
284
+ this.picker.selecteds.length &&
285
+ !to &&
286
+ from &&
287
+ this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0) {
288
+ to = result;
289
+ this.activeSelectedIndex = 1;
290
+ }
291
+ else {
292
+ from = result;
293
+ to = null;
294
+ this.activeSelectedIndex = 0;
295
+ }
296
+ }
297
+ else if (this.picker.selectMode === 'rangeFrom') {
298
+ from = result;
299
+ // if the from value is after the to value, set the to value as null
300
+ if (to && this.dateTimeAdapter.compare(from, to) > 0) {
301
+ to = null;
302
+ }
303
+ }
304
+ else if (this.picker.selectMode === 'rangeTo') {
305
+ to = result;
306
+ // if the from value is after the to value, set the from value as null
307
+ if (from && this.dateTimeAdapter.compare(from, to) > 0) {
308
+ from = null;
309
+ }
310
+ }
311
+ return [from, to];
312
+ }
313
+ /**
314
+ * Update the given calendar date's time and check if it is valid
315
+ * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',
316
+ * we need to update the given calendar date's time before selecting it.
317
+ * if it is valid, return the updated dateTime
318
+ * if it is not valid, return null
319
+ */
320
+ updateAndCheckCalendarDate(date) {
321
+ let result;
322
+ // if the picker is 'both', update the calendar date's time value
323
+ if (this.picker.pickerType === 'both') {
324
+ result = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(date), this.dateTimeAdapter.getMonth(date), this.dateTimeAdapter.getDate(date), this.dateTimeAdapter.getHours(this.pickerMoment), this.dateTimeAdapter.getMinutes(this.pickerMoment), this.dateTimeAdapter.getSeconds(this.pickerMoment));
325
+ result = this.dateTimeAdapter.clampDate(result, this.picker.minDateTime, this.picker.maxDateTime);
326
+ }
327
+ else {
328
+ result = this.dateTimeAdapter.clone(date);
329
+ }
330
+ // check the updated dateTime
331
+ return this.picker.dateTimeChecker(result) ? result : null;
332
+ }
333
+ /**
334
+ * Focus to the picker
335
+ * */
336
+ focusPicker() {
337
+ if (this.picker.pickerMode === 'inline') {
338
+ return;
339
+ }
340
+ if (this.calendar) {
341
+ this.calendar.focusActiveCell();
342
+ }
343
+ else if (this.timer) {
344
+ this.timer.focus();
345
+ }
346
+ }
347
+ }
348
+ OwlDateTimeContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: OwlDateTimeContainerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.OwlDateTimeIntl }, { token: i2.DateTimeAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Component });
349
+ OwlDateTimeContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: OwlDateTimeContainerComponent, selector: "ofe-owl-date-time-container", host: { listeners: { "@transformPicker.done": "handleContainerAnimationDone($event)" }, properties: { "class.owl-dt-container": "this.owlDTContainerClass", "class.owl-dt-popup-container": "this.owlDTPopupContainerClass", "class.owl-dt-dialog-container": "this.owlDTDialogContainerClass", "class.owl-dt-inline-container": "this.owlDTInlineContainerClass", "class.owl-dt-container-disabled": "this.owlDTContainerDisabledClass", "attr.id": "this.owlDTContainerId", "@transformPicker": "this.owlDTContainerAnimation" } }, viewQueries: [{ propertyName: "calendar", first: true, predicate: OwlCalendarComponent, descendants: true }, { propertyName: "timer", first: true, predicate: OwlTimerComponent, descendants: true }], exportAs: ["owlDateTimeContainer"], ngImport: i0, template: "<div\n [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n [@fadeInPicker]=\"picker.pickerMode === 'inline' ? '' : 'enter'\"\n class=\"owl-dt-container-inner\"\n>\n <ofe-owl-date-time-calendar\n *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerMoment)]=\"pickerMoment\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"\n ></ofe-owl-date-time-calendar>\n <ofe-owl-date-time-timer\n *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n class=\"owl-dt-container-row\"\n [pickerMoment]=\"pickerMoment\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n ></ofe-owl-date-time-timer>\n <div\n *ngIf=\"picker.isInRangeMode\"\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\"\n >\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 0 }\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n #from\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{\n fromFormattedValue\n }}</span>\n </span>\n </div>\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 1 }\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n #to\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n\n <div\n *ngIf=\"showControlButtons\"\n class=\"owl-dt-container-buttons owl-dt-container-row\"\n >\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onCancelClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ cancelLabel }}\n </span>\n </button>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onSetClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ setLabel }}\n </span>\n </button>\n </div>\n</div>\n", styles: [""], components: [{ type: i3.OwlCalendarComponent, selector: "ofe-owl-date-time-calendar", inputs: ["minDate", "maxDate", "pickerMoment", "selected", "selecteds", "dateFilter", "firstDayOfWeek", "selectMode", "startView", "hideOtherMonths"], outputs: ["pickerMomentChange", "selectedChange", "userSelection", "yearSelected", "monthSelected"], exportAs: ["owlDateTimeCalendar"] }, { type: i4.OwlTimerComponent, selector: "ofe-owl-date-time-timer", inputs: ["pickerMoment", "minDateTime", "maxDateTime", "showSecondsTimer", "hour12Timer", "stepHour", "stepMinute", "stepSecond"], outputs: ["selectedChange"], exportAs: ["owlDateTimeTimer"] }], directives: [{ type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
350
+ owlDateTimePickerAnimations.transformPicker,
351
+ owlDateTimePickerAnimations.fadeInPicker
352
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: OwlDateTimeContainerComponent, decorators: [{
354
+ type: Component,
355
+ args: [{ exportAs: 'owlDateTimeContainer', selector: 'ofe-owl-date-time-container', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
356
+ owlDateTimePickerAnimations.transformPicker,
357
+ owlDateTimePickerAnimations.fadeInPicker
358
+ ], template: "<div\n [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n [@fadeInPicker]=\"picker.pickerMode === 'inline' ? '' : 'enter'\"\n class=\"owl-dt-container-inner\"\n>\n <ofe-owl-date-time-calendar\n *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerMoment)]=\"pickerMoment\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"\n ></ofe-owl-date-time-calendar>\n <ofe-owl-date-time-timer\n *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n class=\"owl-dt-container-row\"\n [pickerMoment]=\"pickerMoment\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n ></ofe-owl-date-time-timer>\n <div\n *ngIf=\"picker.isInRangeMode\"\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\"\n >\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 0 }\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n #from\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{\n fromFormattedValue\n }}</span>\n </span>\n </div>\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 1 }\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n #to\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n\n <div\n *ngIf=\"showControlButtons\"\n class=\"owl-dt-container-buttons owl-dt-container-row\"\n >\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onCancelClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ cancelLabel }}\n </span>\n </button>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onSetClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ setLabel }}\n </span>\n </button>\n </div>\n</div>\n", styles: [""] }]
359
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.OwlDateTimeIntl }, { type: i2.DateTimeAdapter, decorators: [{
360
+ type: Optional
361
+ }] }]; }, propDecorators: { calendar: [{
362
+ type: ViewChild,
363
+ args: [OwlCalendarComponent, { static: false }]
364
+ }], timer: [{
365
+ type: ViewChild,
366
+ args: [OwlTimerComponent, { static: false }]
367
+ }], owlDTContainerClass: [{
368
+ type: HostBinding,
369
+ args: ['class.owl-dt-container']
370
+ }], owlDTPopupContainerClass: [{
371
+ type: HostBinding,
372
+ args: ['class.owl-dt-popup-container']
373
+ }], owlDTDialogContainerClass: [{
374
+ type: HostBinding,
375
+ args: ['class.owl-dt-dialog-container']
376
+ }], owlDTInlineContainerClass: [{
377
+ type: HostBinding,
378
+ args: ['class.owl-dt-inline-container']
379
+ }], owlDTContainerDisabledClass: [{
380
+ type: HostBinding,
381
+ args: ['class.owl-dt-container-disabled']
382
+ }], owlDTContainerId: [{
383
+ type: HostBinding,
384
+ args: ['attr.id']
385
+ }], owlDTContainerAnimation: [{
386
+ type: HostBinding,
387
+ args: ['@transformPicker']
388
+ }], handleContainerAnimationDone: [{
389
+ type: HostListener,
390
+ args: ['@transformPicker.done', ['$event']]
391
+ }] } });
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtcGljay1kYXRldGltZS9saWIvZGF0ZS10aW1lL2RhdGUtdGltZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbmd4LXBpY2stZGF0ZXRpbWUvbGliL2RhdGUtdGltZS9kYXRlLXRpbWUtcGlja2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFhdEQsTUFBTSxPQUFPLDZCQUE2QjtJQThKeEMsWUFDVSxLQUF3QixFQUN4QixNQUFr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QjtnQkFJWSx3QkFBd0I7c0JBQXhFLFdBQVc7dUJBQUMsOEJBQThCO2dCQUt2Qyx5QkFBeUI7c0JBRDVCLFdBQVc7dUJBQUMsK0JBQStCO2dCQU14Qyx5QkFBeUI7c0JBRDVCLFdBQVc7dUJBQUMsK0JBQStCO2dCQU14QywyQkFBMkI7c0JBRDlCLFdBQVc7dUJBQUMsaUNBQWlDO2dCQUtsQixnQkFBZ0I7c0JBQTNDLFdBQVc7dUJBQUMsU0FBUztnQkFJZSx1QkFBdUI7c0JBQTNELFdBQVc7dUJBQUMsa0JBQWtCO2dCQUt4Qiw0QkFBNEI7c0JBRGxDLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBET1dOX0FSUk9XLFxuICBMRUZUX0FSUk9XLFxuICBSSUdIVF9BUlJPVyxcbiAgU1BBQ0UsXG4gIFVQX0FSUk9XXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlci9kYXRlLXRpbWUtYWRhcHRlci5jbGFzcyc7XG5pbXBvcnQgeyBPd2xDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IE93bERhdGVUaW1lLCBQaWNrZXJUeXBlIH0gZnJvbSAnLi9kYXRlLXRpbWUuY2xhc3MnO1xuaW1wb3J0IHsgT3dsRGF0ZVRpbWVJbnRsIH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLWludGwuc2VydmljZSc7XG5pbXBvcnQgeyBvd2xEYXRlVGltZVBpY2tlckFuaW1hdGlvbnMgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXIuYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBPd2xUaW1lckNvbXBvbmVudCB9IGZyb20gJy4vdGltZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIGV4cG9ydEFzOiAnb3dsRGF0ZVRpbWVDb250YWluZXInLFxuICBzZWxlY3RvcjogJ29mZS1vd2wtZGF0ZS10aW1lLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXRpbWUtcGlja2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtdGltZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgb3dsRGF0ZVRpbWVQaWNrZXJBbmltYXRpb25zLnRyYW5zZm9ybVBpY2tlcixcbiAgICBvd2xEYXRlVGltZVBpY2tlckFuaW1hdGlvbnMuZmFkZUluUGlja2VyXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3dsRGF0ZVRpbWVDb250YWluZXJDb21wb25lbnQ8VD5cbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChPd2xDYWxlbmRhckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNhbGVuZGFyOiBPd2xDYWxlbmRhckNvbXBvbmVudDxUPjtcblxuICBAVmlld0NoaWxkKE93bFRpbWVyQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgdGltZXI6IE93bFRpbWVyQ29tcG9uZW50PFQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3dsLWR0LWNvbnRhaW5lcicpIGdldCBvd2xEVENvbnRhaW5lckNsYXNzKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vd2wtZHQtcG9wdXAtY29udGFpbmVyJykgZ2V0IG93bERUUG9wdXBDb250YWluZXJDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXIucGlja2VyTW9kZSA9PT0gJ3BvcHVwJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3dsLWR0LWRpYWxvZy1jb250YWluZXInKVxuICBnZXQgb3dsRFREaWFsb2dDb250YWluZXJDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXIucGlja2VyTW9kZSA9PT0gJ2RpYWxvZyc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm93bC1kdC1pbmxpbmUtY29udGFpbmVyJylcbiAgZ2V0IG93bERUSW5saW5lQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VyLnBpY2tlck1vZGUgPT09ICdpbmxpbmUnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vd2wtZHQtY29udGFpbmVyLWRpc2FibGVkJylcbiAgZ2V0IG93bERUQ29udGFpbmVyRGlzYWJsZWRDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXIuZGlzYWJsZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBnZXQgb3dsRFRDb250YWluZXJJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXIuaWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ0B0cmFuc2Zvcm1QaWNrZXInKSBnZXQgb3dsRFRDb250YWluZXJBbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VyLnBpY2tlck1vZGUgPT09ICdpbmxpbmUnID8gJycgOiAnZW50ZXInO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignQHRyYW5zZm9ybVBpY2tlci5kb25lJywgWyckZXZlbnQnXSlcbiAgcHVibGljIGhhbmRsZUNvbnRhaW5lckFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdG9TdGF0ZSA9IGV2ZW50LnRvU3RhdGU7XG4gICAgaWYgKHRvU3RhdGUgPT09ICdlbnRlcicpIHtcbiAgICAgIHRoaXMucGlja2VyT3BlbmVkJC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHBpY2tlcjogT3dsRGF0ZVRpbWU8VD47XG4gIHB1YmxpYyBhY3RpdmVTZWxlY3RlZEluZGV4ID0gMDsgLy8gVGhlIGN1cnJlbnQgYWN0aXZlIFNlbGVjdGVkSW5kZXggaW4gcmFuZ2Ugc2VsZWN0IG1vZGUgKDA6ICdmcm9tJywgMTogJ3RvJylcblxuICAvKipcbiAgICogU3RyZWFtIGVtaXRzIHdoZW4gdHJ5IHRvIGhpZGUgcGlja2VyXG4gICAqICovXG4gIHByaXZhdGUgaGlkZVBpY2tlciQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgZ2V0IGhpZGVQaWNrZXJTdHJlYW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5oaWRlUGlja2VyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gZW1pdHMgd2hlbiB0cnkgdG8gY29uZmlybSB0aGUgc2VsZWN0ZWQgdmFsdWVcbiAgICogKi9cbiAgcHJpdmF0ZSBjb25maXJtU2VsZWN0ZWQkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGdldCBjb25maXJtU2VsZWN0ZWRTdHJlYW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwaWNrZXJPcGVuZWQkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGdldCBwaWNrZXJPcGVuZWRTdHJlYW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXJPcGVuZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHBpY2tlciBtb21lbnQuIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCB0aW1lIHBlcmlvZCBpcyBzaG93biBhbmQgd2hpY2ggZGF0ZSBpc1xuICAgKiBoaWdobGlnaHRlZCB3aGVuIHVzaW5nIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIF9jbGFtUGlja2VyTW9tZW50OiBUO1xuXG4gIGdldCBwaWNrZXJNb21lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYW1QaWNrZXJNb21lbnQ7XG4gIH1cblxuICBzZXQgcGlja2VyTW9tZW50KHZhbHVlOiBUKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9jbGFtUGlja2VyTW9tZW50ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuY2xhbXBEYXRlKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5waWNrZXIubWluRGF0ZVRpbWUsXG4gICAgICAgIHRoaXMucGlja2VyLm1heERhdGVUaW1lXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHBpY2tlclR5cGUoKTogUGlja2VyVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VyLnBpY2tlclR5cGU7XG4gIH1cblxuICBnZXQgY2FuY2VsTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXJJbnRsLmNhbmNlbEJ0bkxhYmVsO1xuICB9XG5cbiAgZ2V0IHNldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VySW50bC5zZXRCdG5MYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmFuZ2UgJ2Zyb20nIGxhYmVsXG4gICAqICovXG4gIGdldCBmcm9tTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXJJbnRsLnJhbmdlRnJvbUxhYmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByYW5nZSAndG8nIGxhYmVsXG4gICAqICovXG4gIGdldCB0b0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VySW50bC5yYW5nZVRvTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJhbmdlICdmcm9tJyBmb3JtYXR0ZWQgdmFsdWVcbiAgICogKi9cbiAgZ2V0IGZyb21Gb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5waWNrZXIuc2VsZWN0ZWRzWzBdO1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgPyB0aGlzLmRhdGVUaW1lQWRhcHRlci5mb3JtYXQodmFsdWUsIHRoaXMucGlja2VyLmZvcm1hdFN0cmluZylcbiAgICAgIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJhbmdlICd0bycgZm9ybWF0dGVkIHZhbHVlXG4gICAqICovXG4gIGdldCB0b0Zvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnBpY2tlci5zZWxlY3RlZHNbMV07XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICA/IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdCh2YWx1ZSwgdGhpcy5waWNrZXIuZm9ybWF0U3RyaW5nKVxuICAgICAgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXNlcyBpbiB3aGljaCB0aGUgY29udHJvbCBidXR0b25zIHNob3cgaW4gdGhlIHBpY2tlclxuICAgKiAxKSBwaWNrZXIgbW9kZSBpcyAnZGlhbG9nJ1xuICAgKiAyKSBwaWNrZXIgdHlwZSBpcyBOT1QgJ2NhbGVuZGFyJyBhbmQgdGhlIHBpY2tlciBtb2RlIGlzIE5PVCAnaW5saW5lJ1xuICAgKiAqL1xuICBnZXQgc2hvd0NvbnRyb2xCdXR0b25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnBpY2tlci5waWNrZXJNb2RlID09PSAnZGlhbG9nJyB8fFxuICAgICAgKHRoaXMucGlja2VyLnBpY2tlclR5cGUgIT09ICdjYWxlbmRhcicgJiZcbiAgICAgICAgdGhpcy5waWNrZXIucGlja2VyTW9kZSAhPT0gJ2lubGluZScpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb250YWluZXJFbG0oKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsbVJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbG1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBwaWNrZXJJbnRsOiBPd2xEYXRlVGltZUludGwsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkYXRlVGltZUFkYXB0ZXI6IERhdGVUaW1lQWRhcHRlcjxUPlxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c1BpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIGRhdGVTZWxlY3RlZChkYXRlOiBUKTogdm9pZCB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIGlmICh0aGlzLnBpY2tlci5pc0luU2luZ2xlTW9kZSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5kYXRlU2VsZWN0ZWRJblNpbmdsZU1vZGUoZGF0ZSk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMucGlja2VyTW9tZW50ID0gcmVzdWx0O1xuICAgICAgICB0aGlzLnBpY2tlci5zZWxlY3QocmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdlIGNsb3NlIHRoZSBwaWNrZXIgd2hlbiByZXN1bHQgaXMgbnVsbCBhbmQgcGlja2VyVHlwZSBpcyBjYWxlbmRhci5cbiAgICAgICAgaWYgKHRoaXMucGlja2VyVHlwZSA9PT0gJ2NhbGVuZGFyJykge1xuICAgICAgICAgIHRoaXMuaGlkZVBpY2tlciQubmV4dChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBpY2tlci5pc0luUmFuZ2VNb2RlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLmRhdGVTZWxlY3RlZEluUmFuZ2VNb2RlKGRhdGUpO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnBpY2tlck1vbWVudCA9IHJlc3VsdFt0aGlzLmFjdGl2ZVNlbGVjdGVkSW5kZXhdO1xuICAgICAgICB0aGlzLnBpY2tlci5zZWxlY3QocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGltZVNlbGVjdGVkKHRpbWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnBpY2tlck1vbWVudCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNsb25lKHRpbWUpO1xuXG4gICAgaWYgKCF0aGlzLnBpY2tlci5kYXRlVGltZUNoZWNrZXIodGhpcy5waWNrZXJNb21lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGlja2VyLmlzSW5TaW5nbGVNb2RlKSB7XG4gICAgICB0aGlzLnBpY2tlci5zZWxlY3QodGhpcy5waWNrZXJNb21lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBpY2tlci5pc0luUmFuZ2VNb2RlKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZHMgPSBbLi4udGhpcy5waWNrZXIuc2VsZWN0ZWRzXTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlICdmcm9tJyBpcyBhZnRlciAndG8nIG9yICd0bydpcyBiZWZvcmUgJ2Zyb20nXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNldCBib3RoIHRoZSAnZnJvbScgYW5kICd0bycgdGhlIHNhbWUgdmFsdWVcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMCAmJlxuICAgICAgICAgIHNlbGVjdGVkc1sxXSAmJlxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNvbXBhcmUodGhpcy5waWNrZXJNb21lbnQsIHNlbGVjdGVkc1sxXSkgPT09XG4gICAgICAgICAgICAxKSB8fFxuICAgICAgICAodGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ID09PSAxICYmXG4gICAgICAgICAgc2VsZWN0ZWRzWzBdICYmXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuY29tcGFyZSh0aGlzLnBpY2tlck1vbWVudCwgc2VsZWN0ZWRzWzBdKSA9PT0gLTEpXG4gICAgICApIHtcbiAgICAgICAgc2VsZWN0ZWRzWzBdID0gdGhpcy5waWNrZXJNb21lbnQ7XG4gICAgICAgIHNlbGVjdGVkc1sxXSA9IHRoaXMucGlja2VyTW9tZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRzW3RoaXMuYWN0aXZlU2VsZWN0ZWRJbmRleF0gPSB0aGlzLnBpY2tlck1vbWVudDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5waWNrZXIuc2VsZWN0KHNlbGVjdGVkcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiBjYW5jZWwgYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgb25DYW5jZWxDbGlja2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVQaWNrZXIkLm5leHQobnVsbCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNsaWNrIG9uIHNldCBidXR0b25cbiAgICovXG4gIHB1YmxpYyBvblNldENsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5waWNrZXIuZGF0ZVRpbWVDaGVja2VyKHRoaXMucGlja2VyTW9tZW50KSkge1xuICAgICAgdGhpcy5oaWRlUGlja2VyJC5uZXh0KG51bGwpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpcm1TZWxlY3RlZCQubmV4dChldmVudCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNsaWNrIG9uIGluZm9ybSByYWRpbyBncm91cFxuICAgKi9cbiAgcHVibGljIGhhbmRsZUNsaWNrT25JbmZvR3JvdXAoZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2V0QWN0aXZlU2VsZWN0ZWRJbmRleChpbmRleCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgY2xpY2sgb24gaW5mb3JtIHJhZGlvIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlS2V5ZG93bk9uSW5mb0dyb3VwKGV2ZW50OiBhbnksIG5leHQ6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgY2FzZSBSSUdIVF9BUlJPVzpcbiAgICAgIGNhc2UgVVBfQVJST1c6XG4gICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgIG5leHQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVTZWxlY3RlZEluZGV4KGluZGV4ID09PSAwID8gMSA6IDApO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlU2VsZWN0ZWRJbmRleChpbmRleCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHZhbHVlIG9mIGFjdGl2ZVNlbGVjdGVkSW5kZXhcbiAgICovXG4gIHByaXZhdGUgc2V0QWN0aXZlU2VsZWN0ZWRJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5waWNrZXIuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlJyAmJlxuICAgICAgdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ICE9PSBpbmRleFxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG5cbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5waWNrZXIuc2VsZWN0ZWRzW3RoaXMuYWN0aXZlU2VsZWN0ZWRJbmRleF07XG4gICAgICBpZiAodGhpcy5waWNrZXIuc2VsZWN0ZWRzICYmIHNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMucGlja2VyTW9tZW50ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuY2xvbmUoc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIGluaXRQaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5waWNrZXJNb21lbnQgPSB0aGlzLnBpY2tlci5zdGFydEF0IHx8IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLm5vdygpO1xuICAgIHRoaXMuYWN0aXZlU2VsZWN0ZWRJbmRleCA9IHRoaXMucGlja2VyLnNlbGVjdE1vZGUgPT09ICdyYW5nZVRvJyA/IDEgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBjYWxlbmRhciBkYXRlIGluIHNpbmdsZSBtb2RlLFxuICAgKiBpdCByZXR1cm5zIG51bGwgd2hlbiBkYXRlIGlzIG5vdCBzZWxlY3RlZC5cbiAgICovXG4gIHByaXZhdGUgZGF0ZVNlbGVjdGVkSW5TaW5nbGVNb2RlKGRhdGU6IFQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmlzU2FtZURheShkYXRlLCB0aGlzLnBpY2tlci5zZWxlY3RlZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUFuZENoZWNrQ2FsZW5kYXJEYXRlKGRhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBkYXRlcyBpbiByYW5nZSBNb2RlXG4gICAqL1xuICBwcml2YXRlIGRhdGVTZWxlY3RlZEluUmFuZ2VNb2RlKGRhdGU6IFQpOiBUW10gfCBudWxsIHtcbiAgICBsZXQgZnJvbSA9IHRoaXMucGlja2VyLnNlbGVjdGVkc1swXTtcbiAgICBsZXQgdG8gPSB0aGlzLnBpY2tlci5zZWxlY3RlZHNbMV07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnVwZGF0ZUFuZENoZWNrQ2FsZW5kYXJEYXRlKGRhdGUpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBnaXZlbiBjYWxlbmRhciBkYXkgaXMgYWZ0ZXIgb3IgZXF1YWwgdG8gJ2Zyb20nLFxuICAgIC8vIHNldCB0aHMgZ2l2ZW4gZGF0ZSBhcyAndG8nXG4gICAgLy8gb3RoZXJ3aXNlLCBzZXQgaXQgYXMgJ2Zyb20nIGFuZCBzZXQgJ3RvJyB0byBudWxsXG4gICAgaWYgKHRoaXMucGlja2VyLnNlbGVjdE1vZGUgPT09ICdyYW5nZScpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5waWNrZXIuc2VsZWN0ZWRzICYmXG4gICAgICAgIHRoaXMucGlja2VyLnNlbGVjdGVkcy5sZW5ndGggJiZcbiAgICAgICAgIXRvICYmXG4gICAgICAgIGZyb20gJiZcbiAgICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKHJlc3VsdCwgZnJvbSkgPj0gMFxuICAgICAgKSB7XG4gICAgICAgIHRvID0gcmVzdWx0O1xuICAgICAgICB0aGlzLmFjdGl2ZVNlbGVjdGVkSW5kZXggPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJvbSA9IHJlc3VsdDtcbiAgICAgICAgdG8gPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZVNlbGVjdGVkSW5kZXggPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5waWNrZXIuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlRnJvbScpIHtcbiAgICAgIGZyb20gPSByZXN1bHQ7XG5cbiAgICAgIC8vIGlmIHRoZSBmcm9tIHZhbHVlIGlzIGFmdGVyIHRoZSB0byB2YWx1ZSwgc2V0IHRoZSB0byB2YWx1ZSBhcyBudWxsXG4gICAgICBpZiAodG8gJiYgdGhpcy5kYXRlVGltZUFkYXB0ZXIuY29tcGFyZShmcm9tLCB0bykgPiAwKSB7XG4gICAgICAgIHRvID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGlja2VyLnNlbGVjdE1vZGUgPT09ICdyYW5nZVRvJykge1xuICAgICAgdG8gPSByZXN1bHQ7XG5cbiAgICAgIC8vIGlmIHRoZSBmcm9tIHZhbHVlIGlzIGFmdGVyIHRoZSB0byB2YWx1ZSwgc2V0IHRoZSBmcm9tIHZhbHVlIGFzIG51bGxcbiAgICAgIGlmIChmcm9tICYmIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNvbXBhcmUoZnJvbSwgdG8pID4gMCkge1xuICAgICAgICBmcm9tID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gW2Zyb20sIHRvXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGdpdmVuIGNhbGVuZGFyIGRhdGUncyB0aW1lIGFuZCBjaGVjayBpZiBpdCBpcyB2YWxpZFxuICAgKiBCZWNhdXNlIHRoZSBjYWxlbmRhciBkYXRlIGhhcyAwMDowMDowMCBhcyBkZWZhdWx0IHRpbWUsIGlmIHRoZSBwaWNrZXIgdHlwZSBpcyAnYm90aCcsXG4gICAqIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBnaXZlbiBjYWxlbmRhciBkYXRlJ3MgdGltZSBiZWZvcmUgc2VsZWN0aW5nIGl0LlxuICAgKiBpZiBpdCBpcyB2YWxpZCwgcmV0dXJuIHRoZSB1cGRhdGVkIGRhdGVUaW1lXG4gICAqIGlmIGl0IGlzIG5vdCB2YWxpZCwgcmV0dXJuIG51bGxcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQW5kQ2hlY2tDYWxlbmRhckRhdGUoZGF0ZTogVCk6IFQge1xuICAgIGxldCByZXN1bHQ7XG5cbiAgICAvLyBpZiB0aGUgcGlja2VyIGlzICdib3RoJywgdXBkYXRlIHRoZSBjYWxlbmRhciBkYXRlJ3MgdGltZSB2YWx1ZVxuICAgIGlmICh0aGlzLnBpY2tlci5waWNrZXJUeXBlID09PSAnYm90aCcpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIoZGF0ZSksXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldE1vbnRoKGRhdGUpLFxuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXREYXRlKGRhdGUpLFxuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRIb3Vycyh0aGlzLnBpY2tlck1vbWVudCksXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldE1pbnV0ZXModGhpcy5waWNrZXJNb21lbnQpLFxuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRTZWNvbmRzKHRoaXMucGlja2VyTW9tZW50KVxuICAgICAgKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNsYW1wRGF0ZShcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICB0aGlzLnBpY2tlci5taW5EYXRlVGltZSxcbiAgICAgICAgdGhpcy5waWNrZXIubWF4RGF0ZVRpbWVcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNsb25lKGRhdGUpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIHRoZSB1cGRhdGVkIGRhdGVUaW1lXG4gICAgcmV0dXJuIHRoaXMucGlja2VyLmRhdGVUaW1lQ2hlY2tlcihyZXN1bHQpID8gcmVzdWx0IDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1cyB0byB0aGUgcGlja2VyXG4gICAqICovXG4gIHByaXZhdGUgZm9jdXNQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VyLnBpY2tlck1vZGUgPT09ICdpbmxpbmUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXIpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuZm9jdXNBY3RpdmVDZWxsKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICB0aGlzLnRpbWVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtjZGtUcmFwRm9jdXNdPVwicGlja2VyLnBpY2tlck1vZGUgIT09ICdpbmxpbmUnXCJcbiAgW0BmYWRlSW5QaWNrZXJdPVwicGlja2VyLnBpY2tlck1vZGUgPT09ICdpbmxpbmUnID8gJycgOiAnZW50ZXInXCJcbiAgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLWlubmVyXCJcbj5cbiAgPG9mZS1vd2wtZGF0ZS10aW1lLWNhbGVuZGFyXG4gICAgKm5nSWY9XCJwaWNrZXJUeXBlID09PSAnYm90aCcgfHwgcGlja2VyVHlwZSA9PT0gJ2NhbGVuZGFyJ1wiXG4gICAgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLXJvd1wiXG4gICAgW2ZpcnN0RGF5T2ZXZWVrXT1cInBpY2tlci5maXJzdERheU9mV2Vla1wiXG4gICAgWyhwaWNrZXJNb21lbnQpXT1cInBpY2tlck1vbWVudFwiXG4gICAgW3NlbGVjdGVkXT1cInBpY2tlci5zZWxlY3RlZFwiXG4gICAgW3NlbGVjdGVkc109XCJwaWNrZXIuc2VsZWN0ZWRzXCJcbiAgICBbc2VsZWN0TW9kZV09XCJwaWNrZXIuc2VsZWN0TW9kZVwiXG4gICAgW21pbkRhdGVdPVwicGlja2VyLm1pbkRhdGVUaW1lXCJcbiAgICBbbWF4RGF0ZV09XCJwaWNrZXIubWF4RGF0ZVRpbWVcIlxuICAgIFtkYXRlRmlsdGVyXT1cInBpY2tlci5kYXRlVGltZUZpbHRlclwiXG4gICAgW3N0YXJ0Vmlld109XCJwaWNrZXIuc3RhcnRWaWV3XCJcbiAgICBbaGlkZU90aGVyTW9udGhzXT1cInBpY2tlci5oaWRlT3RoZXJNb250aHNcIlxuICAgICh5ZWFyU2VsZWN0ZWQpPVwicGlja2VyLnNlbGVjdFllYXIoJGV2ZW50KVwiXG4gICAgKG1vbnRoU2VsZWN0ZWQpPVwicGlja2VyLnNlbGVjdE1vbnRoKCRldmVudClcIlxuICAgIChzZWxlY3RlZENoYW5nZSk9XCJkYXRlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gID48L29mZS1vd2wtZGF0ZS10aW1lLWNhbGVuZGFyPlxuICA8b2ZlLW93bC1kYXRlLXRpbWUtdGltZXJcbiAgICAqbmdJZj1cInBpY2tlclR5cGUgPT09ICdib3RoJyB8fCBwaWNrZXJUeXBlID09PSAndGltZXInXCJcbiAgICBjbGFzcz1cIm93bC1kdC1jb250YWluZXItcm93XCJcbiAgICBbcGlja2VyTW9tZW50XT1cInBpY2tlck1vbWVudFwiXG4gICAgW21pbkRhdGVUaW1lXT1cInBpY2tlci5taW5EYXRlVGltZVwiXG4gICAgW21heERhdGVUaW1lXT1cInBpY2tlci5tYXhEYXRlVGltZVwiXG4gICAgW3Nob3dTZWNvbmRzVGltZXJdPVwicGlja2VyLnNob3dTZWNvbmRzVGltZXJcIlxuICAgIFtob3VyMTJUaW1lcl09XCJwaWNrZXIuaG91cjEyVGltZXJcIlxuICAgIFtzdGVwSG91cl09XCJwaWNrZXIuc3RlcEhvdXJcIlxuICAgIFtzdGVwTWludXRlXT1cInBpY2tlci5zdGVwTWludXRlXCJcbiAgICBbc3RlcFNlY29uZF09XCJwaWNrZXIuc3RlcFNlY29uZFwiXG4gICAgKHNlbGVjdGVkQ2hhbmdlKT1cInRpbWVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgPjwvb2ZlLW93bC1kYXRlLXRpbWUtdGltZXI+XG4gIDxkaXZcbiAgICAqbmdJZj1cInBpY2tlci5pc0luUmFuZ2VNb2RlXCJcbiAgICByb2xlPVwicmFkaW9ncm91cFwiXG4gICAgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLWluZm8gb3dsLWR0LWNvbnRhaW5lci1yb3dcIlxuICA+XG4gICAgPGRpdlxuICAgICAgcm9sZT1cInJhZGlvXCJcbiAgICAgIFt0YWJpbmRleF09XCJhY3RpdmVTZWxlY3RlZEluZGV4ID09PSAwID8gMCA6IC0xXCJcbiAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJhY3RpdmVTZWxlY3RlZEluZGV4ID09PSAwXCJcbiAgICAgIGNsYXNzPVwib3dsLWR0LWNvbnRyb2wgb3dsLWR0LWNvbnRhaW5lci1yYW5nZSBvd2wtZHQtY29udGFpbmVyLWZyb21cIlxuICAgICAgW25nQ2xhc3NdPVwieyAnb3dsLWR0LWNvbnRhaW5lci1pbmZvLWFjdGl2ZSc6IGFjdGl2ZVNlbGVjdGVkSW5kZXggPT09IDAgfVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2tPbkluZm9Hcm91cCgkZXZlbnQsIDApXCJcbiAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleWRvd25PbkluZm9Hcm91cCgkZXZlbnQsIHRvLCAwKVwiXG4gICAgICAjZnJvbVxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwib3dsLWR0LWNvbnRyb2wtY29udGVudCBvd2wtZHQtY29udGFpbmVyLXJhbmdlLWNvbnRlbnRcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLWluZm8tbGFiZWxcIj57eyBmcm9tTGFiZWwgfX06PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250YWluZXItaW5mby12YWx1ZVwiPnt7XG4gICAgICAgICAgZnJvbUZvcm1hdHRlZFZhbHVlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJyYWRpb1wiXG4gICAgICBbdGFiaW5kZXhdPVwiYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMSA/IDAgOiAtMVwiXG4gICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMVwiXG4gICAgICBjbGFzcz1cIm93bC1kdC1jb250cm9sIG93bC1kdC1jb250YWluZXItcmFuZ2Ugb3dsLWR0LWNvbnRhaW5lci10b1wiXG4gICAgICBbbmdDbGFzc109XCJ7ICdvd2wtZHQtY29udGFpbmVyLWluZm8tYWN0aXZlJzogYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMSB9XCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGlja09uSW5mb0dyb3VwKCRldmVudCwgMSlcIlxuICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bk9uSW5mb0dyb3VwKCRldmVudCwgZnJvbSwgMSlcIlxuICAgICAgI3RvXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJvd2wtZHQtY29udHJvbC1jb250ZW50IG93bC1kdC1jb250YWluZXItcmFuZ2UtY29udGVudFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250YWluZXItaW5mby1sYWJlbFwiPnt7IHRvTGFiZWwgfX06PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250YWluZXItaW5mby12YWx1ZVwiPnt7IHRvRm9ybWF0dGVkVmFsdWUgfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3dDb250cm9sQnV0dG9uc1wiXG4gICAgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLWJ1dHRvbnMgb3dsLWR0LWNvbnRhaW5lci1yb3dcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJvd2wtZHQtY29udHJvbCBvd2wtZHQtY29udHJvbC1idXR0b24gb3dsLWR0LWNvbnRhaW5lci1jb250cm9sLWJ1dHRvblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAoY2xpY2spPVwib25DYW5jZWxDbGlja2VkKCRldmVudClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwib3dsLWR0LWNvbnRyb2wtY29udGVudCBvd2wtZHQtY29udHJvbC1idXR0b24tY29udGVudFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICB7eyBjYW5jZWxMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwib3dsLWR0LWNvbnRyb2wgb3dsLWR0LWNvbnRyb2wtYnV0dG9uIG93bC1kdC1jb250YWluZXItY29udHJvbC1idXR0b25cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgKGNsaWNrKT1cIm9uU2V0Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm93bC1kdC1jb250cm9sLWNvbnRlbnQgb3dsLWR0LWNvbnRyb2wtYnV0dG9uLWNvbnRlbnRcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgID5cbiAgICAgICAge3sgc2V0TGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==