@elderbyte/ngx-starter 14.3.0 → 14.3.3

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 (293) hide show
  1. package/esm2020/lib/common/data/data-context/data-context-base.mjs +1 -1
  2. package/esm2020/lib/common/data/data-context/data-context-continuable-paged.mjs +1 -1
  3. package/esm2020/lib/common/data/data-context/data-context-simple.mjs +1 -1
  4. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  5. package/esm2020/lib/common/forms/elder-form-field-control.mjs +139 -0
  6. package/esm2020/lib/common/forms/form-field-base.component.mjs +3 -3
  7. package/esm2020/lib/common/forms/multi-model-base.component.mjs +3 -3
  8. package/esm2020/lib/common/forms/public_api.mjs +2 -1
  9. package/esm2020/lib/common/forms/template-composite-control.mjs +3 -3
  10. package/esm2020/lib/common/forms/value-accessor-base.mjs +3 -3
  11. package/esm2020/lib/common/http/http-client-builder.service.mjs +3 -3
  12. package/esm2020/lib/common/http/http-client-pristine.mjs +3 -3
  13. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  14. package/esm2020/lib/common/http/transfer/http-data-transfer.mjs +1 -1
  15. package/esm2020/lib/common/public_api.mjs +1 -2
  16. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  17. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  18. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  19. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  20. package/esm2020/lib/components/auditing/elder-audit.module.mjs +4 -4
  21. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  22. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +4 -4
  23. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  24. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  25. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
  26. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  27. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  28. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  29. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  30. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  31. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  32. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  33. package/esm2020/lib/components/containers/elder-containers.module.mjs +4 -4
  34. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  35. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  36. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  37. package/esm2020/lib/components/csv/elder-csv.module.mjs +4 -4
  38. package/esm2020/lib/components/currency/elder-currency.module.mjs +4 -4
  39. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +3 -3
  40. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  41. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  42. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  43. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  44. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  45. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  46. package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +63 -0
  47. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +56 -13
  48. package/esm2020/lib/components/data-view/base/elder-data-view-options-provider.mjs +44 -0
  49. package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +42 -0
  50. package/esm2020/lib/components/data-view/base/public_api.mjs +6 -0
  51. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  52. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  53. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  54. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  55. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  56. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  57. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +16 -30
  58. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  59. package/esm2020/lib/components/data-view/public_api.mjs +2 -2
  60. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  61. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  62. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  63. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  64. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  65. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  66. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +12 -46
  67. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  68. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  69. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  70. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  71. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  72. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +4 -4
  73. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  74. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  75. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +7 -7
  76. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  77. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  78. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  79. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  80. package/esm2020/lib/components/errors/elder-error.module.mjs +4 -4
  81. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  82. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  83. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  84. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +4 -4
  85. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  86. package/esm2020/lib/components/files/elder-file-select.directive.mjs +3 -3
  87. package/esm2020/lib/components/files/elder-file.module.mjs +4 -4
  88. package/esm2020/lib/components/files/file-select/file-select.component.mjs +3 -3
  89. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  90. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  91. package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  92. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  93. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  94. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  95. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
  96. package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
  97. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  98. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -13
  99. package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +3 -3
  100. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  101. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +3 -3
  102. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +3 -3
  103. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  104. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  105. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  106. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  107. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  108. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
  109. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +3 -3
  110. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +3 -3
  111. package/esm2020/lib/components/forms/elder-forms.module.mjs +4 -4
  112. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +6 -6
  113. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +4 -4
  114. package/esm2020/lib/components/forms/search/elder-search.module.mjs +4 -4
  115. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +4 -4
  116. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  117. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +3 -3
  118. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +4 -4
  119. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +3 -3
  120. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  121. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  122. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  123. package/esm2020/lib/components/headers/elder-header.module.mjs +4 -4
  124. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +3 -3
  125. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  126. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +4 -4
  127. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  128. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  129. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +4 -4
  130. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  131. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  132. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  133. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  134. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  135. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  136. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +4 -4
  137. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +3 -3
  138. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
  139. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  140. package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +119 -0
  141. package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +137 -0
  142. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +22 -10
  143. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +3 -3
  144. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  145. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +58 -32
  146. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  147. package/esm2020/lib/components/iframes/iframe.service.mjs +6 -8
  148. package/esm2020/lib/components/iframes/typed-event-message.mjs +42 -0
  149. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +7 -5
  150. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  151. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +7 -7
  152. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  153. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +4 -4
  154. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  155. package/esm2020/lib/components/labels/elder-labels.module.mjs +4 -4
  156. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  157. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  158. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +5 -5
  159. package/esm2020/lib/components/measures/elder-measures.module.mjs +8 -8
  160. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  161. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  162. package/esm2020/lib/components/measures/elder-unit.service.mjs +3 -3
  163. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +3 -3
  164. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  165. package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +4 -4
  166. package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +3 -3
  167. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
  168. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  169. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  170. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +4 -4
  171. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  172. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  173. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  174. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  175. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  176. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -4
  177. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  178. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  179. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  180. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  181. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +4 -4
  182. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +4 -4
  183. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  184. package/esm2020/lib/components/panels/elder-panel.module.mjs +4 -4
  185. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  186. package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +5 -5
  187. package/esm2020/lib/components/select/auto/elder-select-first-util.mjs +1 -1
  188. package/esm2020/lib/components/select/elder-select-base.mjs +3 -3
  189. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +6 -6
  190. package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  191. package/esm2020/lib/components/select/elder-select-value.directive.mjs +3 -3
  192. package/esm2020/lib/components/select/elder-select.module.mjs +8 -8
  193. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +3 -3
  194. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
  195. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +23 -28
  196. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  197. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +419 -0
  198. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  199. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  200. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +4 -4
  201. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +3 -3
  202. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +3 -3
  203. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  204. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  205. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  206. package/esm2020/lib/components/shell/elder-shell.module.mjs +4 -4
  207. package/esm2020/lib/components/shell/elder-shell.service.mjs +3 -3
  208. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
  209. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +13 -13
  210. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  211. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  212. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  213. package/esm2020/lib/components/tabs/elder-tab.module.mjs +4 -4
  214. package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  215. package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +3 -3
  216. package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +3 -3
  217. package/esm2020/lib/components/theme/elder-theme.directive.mjs +4 -4
  218. package/esm2020/lib/components/theme/elder-theme.module.mjs +4 -4
  219. package/esm2020/lib/components/theme/elder-theme.service.mjs +3 -3
  220. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  221. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
  222. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  223. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
  224. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  225. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
  226. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
  227. package/esm2020/lib/components/time/elder-time.module.mjs +8 -8
  228. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
  229. package/esm2020/lib/components/toasts/elder-toast.module.mjs +4 -4
  230. package/esm2020/lib/components/toasts/elder-toast.service.mjs +9 -9
  231. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  232. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  233. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  234. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  235. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +4 -4
  236. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +3 -3
  237. package/esm2020/lib/features/kafent/access-token-provider.mjs +3 -3
  238. package/esm2020/lib/features/kafent/kafent-config.mjs +3 -3
  239. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +3 -3
  240. package/esm2020/lib/features/kafent/kafent-event.service.mjs +3 -3
  241. package/esm2020/lib/features/kafent/kafent.module.mjs +4 -4
  242. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  243. package/esm2020/lib/pipes/bytes.pipe.mjs +3 -3
  244. package/esm2020/lib/pipes/elder-pipes.module.mjs +10 -10
  245. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +3 -3
  246. package/esm2020/lib/pipes/elder-round.pipe.mjs +3 -3
  247. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  248. package/esm2020/lib/pipes/elder-truncate.pipe.mjs +3 -3
  249. package/esm2020/lib/pipes/iso-duration.pipe.mjs +3 -3
  250. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  251. package/esm2020/lib/pipes/iso-interval.pipe.mjs +3 -3
  252. package/esm2020/lib/pipes/time-ago.pipe.mjs +3 -3
  253. package/esm2020/lib/pipes/time-duration.pipe.mjs +3 -3
  254. package/esm2020/lib/pipes/weight.pipe.mjs +3 -3
  255. package/fesm2015/elderbyte-ngx-starter.mjs +2717 -2204
  256. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  257. package/fesm2020/elderbyte-ngx-starter.mjs +2472 -1962
  258. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  259. package/lib/common/data/data-context/data-context-base.d.ts +1 -1
  260. package/lib/common/forms/elder-form-field-control.d.ts +86 -0
  261. package/lib/common/forms/public_api.d.ts +1 -0
  262. package/lib/common/public_api.d.ts +0 -1
  263. package/lib/components/data-view/base/data-view-options-provider-binding.d.ts +39 -0
  264. package/lib/components/data-view/base/elder-data-view-base.d.ts +29 -6
  265. package/lib/{common/rxjs/lazy-behavior-subject.d.ts → components/data-view/base/elder-data-view-options-provider.d.ts} +20 -20
  266. package/lib/components/data-view/base/elder-data-view-options.d.ts +33 -0
  267. package/lib/components/data-view/base/public_api.d.ts +5 -0
  268. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +4 -6
  269. package/lib/components/data-view/public_api.d.ts +1 -1
  270. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +5 -19
  271. package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +66 -0
  272. package/lib/components/iframes/data-view/data-view-iframe-adapter.directive.d.ts +62 -0
  273. package/lib/components/iframes/elder-iframe.module.d.ts +14 -10
  274. package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +28 -10
  275. package/lib/components/iframes/iframe.service.d.ts +3 -3
  276. package/lib/components/iframes/typed-event-message.d.ts +26 -0
  277. package/lib/components/measures/directives/elder-unit-select.directive.d.ts +1 -1
  278. package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +1 -1
  279. package/lib/components/select/auto/elder-select-first-util.d.ts +1 -1
  280. package/lib/components/select/elder-select.module.d.ts +3 -3
  281. package/lib/components/select/popup/selection-model-popup.directive.d.ts +5 -13
  282. package/lib/components/select/{elder-select → single/elder-select}/elder-select.component.d.ts +3 -3
  283. package/package.json +3 -2
  284. package/src/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.scss +0 -0
  285. package/src/lib/components/select/{elder-select → single/elder-select}/elder-select.component.scss +0 -0
  286. package/esm2020/lib/common/rxjs/lazy-behavior-subject.mjs +0 -59
  287. package/esm2020/lib/common/rxjs/public_api.mjs +0 -2
  288. package/esm2020/lib/components/data-view/base/elder-data-view-base.module.mjs +0 -18
  289. package/esm2020/lib/components/iframes/iframe-message.mjs +0 -2
  290. package/esm2020/lib/components/select/elder-select/elder-select.component.mjs +0 -411
  291. package/lib/common/rxjs/public_api.d.ts +0 -1
  292. package/lib/components/data-view/base/elder-data-view-base.module.d.ts +0 -9
  293. package/lib/components/iframes/iframe-message.d.ts +0 -5
@@ -207,9 +207,9 @@ export class ElderBlobViewerComponent {
207
207
  });
208
208
  }
209
209
  }
210
- ElderBlobViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderBlobViewerComponent, deps: [{ token: i1.HttpClientPristine }, { token: i2.DomSanitizer }, { token: i3.ElderToastService }], target: i0.ɵɵFactoryTarget.Component });
211
- ElderBlobViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ElderBlobViewerComponent, selector: "elder-blob-viewer", inputs: { displayUnknownAsText: "displayUnknownAsText", blob: "blob", blobUrl: "blobUrl", url: "url", mimeType: "mimeType" }, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"document-viewer\" fxFill>\n\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n\n <!-- Video -->\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.mimeType.isVideo\" fxFill>\n <video class=\"video\"\n controls autoplay loop\n\n >\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\">\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.mimeType.isAudio\" fxFill>\n <audio class=\"audio\"\n controls autoplay loop\n >\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\">\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\" fxFill>\n <img class=\"cover\" fxFlex\n [src]=\"blobContext.safeUrl\" alt=\"blob image\"/>\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.displayEmbedded\" fxFill>\n <div style=\"width: 100%;height: 100%\">\n <embed class=\"embedded\" [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" width=\"100%\" height=\"100%\">\n </div>\n </div>\n\n <!-- Plain Text -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.displayAsText\" fxFill>\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\" wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.cantDisplay\" fxFill>\n <p>Cant display {{blobContext.mimeType.value}}!</p>\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\n <p>No Document.</p>\n </div>\n </ng-container>\n\n\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color:#dedede;color:#1f1e1e}.video,.audio{width:100%;height:auto}.embedded{width:100%;height:100%}.cover{-o-object-fit:scale-down;object-fit:scale-down;width:100%;height:auto;overflow:hidden}.document-content{font-family:Courier,monospace;font-size:14px;background-color:#575757;color:#ccc;outline:none;resize:none;width:100%;height:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-radius:0;box-shadow:0 2px 14px #000;border-top:1px solid #FFF;border-bottom:1px solid #FFF}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderBlobViewerComponent, decorators: [{
210
+ ElderBlobViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderBlobViewerComponent, deps: [{ token: i1.HttpClientPristine }, { token: i2.DomSanitizer }, { token: i3.ElderToastService }], target: i0.ɵɵFactoryTarget.Component });
211
+ ElderBlobViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ElderBlobViewerComponent, selector: "elder-blob-viewer", inputs: { displayUnknownAsText: "displayUnknownAsText", blob: "blob", blobUrl: "blobUrl", url: "url", mimeType: "mimeType" }, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"document-viewer\" fxFill>\n\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n\n <!-- Video -->\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.mimeType.isVideo\" fxFill>\n <video class=\"video\"\n controls autoplay loop\n\n >\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\">\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.mimeType.isAudio\" fxFill>\n <audio class=\"audio\"\n controls autoplay loop\n >\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\">\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\" fxFill>\n <img class=\"cover\" fxFlex\n [src]=\"blobContext.safeUrl\" alt=\"blob image\"/>\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.displayEmbedded\" fxFill>\n <div style=\"width: 100%;height: 100%\">\n <embed class=\"embedded\" [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" width=\"100%\" height=\"100%\">\n </div>\n </div>\n\n <!-- Plain Text -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.displayAsText\" fxFill>\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\" wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.cantDisplay\" fxFill>\n <p>Cant display {{blobContext.mimeType.value}}!</p>\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\n <p>No Document.</p>\n </div>\n </ng-container>\n\n\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color:#dedede;color:#1f1e1e}.video,.audio{width:100%;height:auto}.embedded{width:100%;height:100%}.cover{-o-object-fit:scale-down;object-fit:scale-down;width:100%;height:auto;overflow:hidden}.document-content{font-family:Courier,monospace;font-size:14px;background-color:#575757;color:#ccc;outline:none;resize:none;width:100%;height:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-radius:0;box-shadow:0 2px 14px #000;border-top:1px solid #FFF;border-bottom:1px solid #FFF}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderBlobViewerComponent, decorators: [{
213
213
  type: Component,
214
214
  args: [{ selector: 'elder-blob-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"document-viewer\" fxFill>\n\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n\n <!-- Video -->\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.mimeType.isVideo\" fxFill>\n <video class=\"video\"\n controls autoplay loop\n\n >\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\">\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.mimeType.isAudio\" fxFill>\n <audio class=\"audio\"\n controls autoplay loop\n >\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\">\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\" fxFill>\n <img class=\"cover\" fxFlex\n [src]=\"blobContext.safeUrl\" alt=\"blob image\"/>\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.displayEmbedded\" fxFill>\n <div style=\"width: 100%;height: 100%\">\n <embed class=\"embedded\" [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" width=\"100%\" height=\"100%\">\n </div>\n </div>\n\n <!-- Plain Text -->\n <div fxLayout=\"column\" *ngIf=\"blobContext.displayAsText\" fxFill>\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\" wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"blobContext.cantDisplay\" fxFill>\n <p>Cant display {{blobContext.mimeType.value}}!</p>\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\n <p>No Document.</p>\n </div>\n </ng-container>\n\n\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color:#dedede;color:#1f1e1e}.video,.audio{width:100%;height:auto}.embedded{width:100%;height:100%}.cover{-o-object-fit:scale-down;object-fit:scale-down;width:100%;height:auto;overflow:hidden}.document-content{font-family:Courier,monospace;font-size:14px;background-color:#575757;color:#ccc;outline:none;resize:none;width:100%;height:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-radius:0;box-shadow:0 2px 14px #000;border-top:1px solid #FFF;border-bottom:1px solid #FFF}\n"] }]
215
215
  }], ctorParameters: function () { return [{ type: i1.HttpClientPristine }, { type: i2.DomSanitizer }, { type: i3.ElderToastService }]; }, propDecorators: { displayUnknownAsText: [{
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
223
223
  }], mimeType: [{
224
224
  type: Input
225
225
  }] } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9ibG9iLXZpZXdlci9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2Jsb2Itdmlld2VyL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFNUQsTUFBTSxXQUFXO0lBZ0JmLFlBQ2tCLE9BQWdCLEVBQ2hCLFFBQXNCLEVBQ3RCLE9BQWUsSUFBSTtRQUZuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUVyQyxDQUFDO0lBbkJNLE1BQU0sQ0FBQyxRQUFRLENBQ3BCLElBQVksRUFDWixRQUFzQjtRQUV0QixPQUFPLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQ25CLE9BQWdCLEVBQ2hCLFFBQXNCO1FBRXRCLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBU0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO2VBQzlDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM3QixDQUFDO0NBRUY7QUFFRCxNQUFNLFlBQVk7SUFZaEIsWUFDa0IsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7SUFDMUIsQ0FBQztJQVZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBZ0I7UUFDbEMsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCxPQUFPLFlBQVksQ0FBQyxZQUFZLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBTUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2RCxDQUFDOztBQXhDc0IseUJBQVksR0FBRyxJQUFJLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBa0RyRixNQUFNLE9BQU8sd0JBQXdCO0lBa0JuQzs7OztnRkFJNEU7SUFFNUUsWUFDVSxZQUFnQyxFQUNoQyxZQUEwQixFQUMxQixZQUErQjtRQUYvQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQW1CO1FBekJ6Qzs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFjLElBQUksQ0FBQyxDQUFDO1FBR3JELFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDL0MsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbEMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBWWpDLENBQUM7SUFFTjs7OztnRkFJNEU7SUFFckUsUUFBUTtRQUNiLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FDdEQsQ0FBQyxTQUFTLENBQ1QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFOzs7T0FHRztJQUNILElBQ1csb0JBQW9CLENBQUMsYUFBc0I7UUFFcEQsMkJBQTJCO1FBQzNCLGdFQUFnRTtRQUNoRSw2REFBNkQ7UUFFN0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNXLElBQUksQ0FBQyxJQUFVO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ1csT0FBTyxDQUFDLE9BQWdCO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ1csR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ1csUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztnRkFJNEU7SUFHcEUsVUFBVSxDQUFDLElBQVU7UUFFM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUNYLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUN2QyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVUsRUFBRSxRQUFzQjtRQUNwRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUNkLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FDWCxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FDckMsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFnQjtRQUVwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FDWCxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FDdkMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLFFBQVEsQ0FBQyxXQUF3QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBVTtRQUN0QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8sd0JBQXdCLENBQUMsR0FBVztRQUMxQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLFVBQVUsQ0FBQyxXQUFtQixFQUFFLFFBQXNCO1FBRTVELElBQUksQ0FBQyxRQUFRLENBQ1gsV0FBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQzdDLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDeEMsSUFBSSxDQUFDLEVBQUU7WUFDTCxJQUFJLENBQUMsUUFBUSxDQUNYLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUNyQyxDQUFDO1FBQ0osQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FDWCxXQUFXLENBQUMsUUFBUSxDQUFDLDZCQUE2QixFQUFFLFFBQVEsQ0FBQyxDQUM5RCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBc0I7UUFFN0MsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEYsOEVBQThFO1FBQzlFLG9FQUFvRTtRQUNwRSx3RkFBd0Y7UUFFeEYsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3hDLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7O3FIQTFNVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qix1TENwR3JDLGltRUE4REE7MkZEc0NhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTtvS0FnRXBDLG9CQUFvQjtzQkFEOUIsS0FBSztnQkFlSyxJQUFJO3NCQURkLEtBQUs7Z0JBVUssT0FBTztzQkFEakIsS0FBSztnQkFXSyxHQUFHO3NCQURiLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QmxvYlVybH0gZnJvbSAnLi4vYmxvYi11cmwnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0h0dHBDbGllbnRQcmlzdGluZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2h0dHAvaHR0cC1jbGllbnQtcHJpc3RpbmUnO1xuaW1wb3J0IHtFbGRlclRvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vdG9hc3RzL2VsZGVyLXRvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY2xhc3MgQmxvYkNvbnRleHQge1xuXG4gIHB1YmxpYyBzdGF0aWMgdGV4dEJsb2IoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIG1pbWVUeXBlOiBCbG9iTWltZVR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBCbG9iQ29udGV4dChudWxsLCBtaW1lVHlwZSwgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNhZmVVcmwoXG4gICAgc2FmZVVybDogU2FmZVVybCxcbiAgICBtaW1lVHlwZTogQmxvYk1pbWVUeXBlLFxuICApOiBCbG9iQ29udGV4dCB7XG4gICAgcmV0dXJuIG5ldyBCbG9iQ29udGV4dChzYWZlVXJsLCBtaW1lVHlwZSwgbnVsbCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FmZVVybDogU2FmZVVybCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGV4dDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUFzVGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRleHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbnREaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5QXNUZXh0ICYmICF0aGlzLmRpc3BsYXlFbWJlZGRlZFxuICAgICAgJiYgIXRoaXMubWltZVR5cGUuaXNBdWRpbyAmJiAhdGhpcy5taW1lVHlwZS5pc0ltYWdlICYmICF0aGlzLm1pbWVUeXBlLmlzVmlkZW87XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlFbWJlZGRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taW1lVHlwZS5pc1BkZjtcbiAgfVxuXG59XG5cbmNsYXNzIEJsb2JNaW1lVHlwZSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPQ1RFVF9TVFJFQU0gPSBuZXcgQmxvYk1pbWVUeXBlKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTtcblxuICBwdWJsaWMgc3RhdGljIHBhcnNlKG1pbWVUeXBlOiBzdHJpbmcpOiBCbG9iTWltZVR5cGUge1xuICAgIGlmIChtaW1lVHlwZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iTWltZVR5cGUobWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQmxvYk1pbWVUeXBlLk9DVEVUX1NUUkVBTTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ1xuICApIHsgIH1cblxuICBwdWJsaWMgZ2V0IGlzT2N0ZXRTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmlkZW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndmlkZW8vJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW1hZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXVkaW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXVkaW8vJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSnNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9qc29uJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUGRmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL3BkZicpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1RleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCB0aGlzLmlzSnNvbjtcbiAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWJsb2Itdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJCbG9iVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYmxvYkNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCbG9iQ29udGV4dD4obnVsbCk7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF91cmwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW1lVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9kaXNwbGF5VW5rbm93bkFzVGV4dCA9IGZhbHNlO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cFByaXN0aW5lOiBIdHRwQ2xpZW50UHJpc3RpbmUsXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogRWxkZXJUb2FzdFNlcnZpY2VcbiAgKSB7ICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3VybCQsIHRoaXMuX21pbWVUeXBlJF0pLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIoKFt1cmwsIG1pbWVUeXBlXSkgPT4gISF1cmwpLFxuICAgICAgbWFwKChbdXJsLCBtaW1lVHlwZV0pID0+IEJsb2JVcmwuZnJvbSh1cmwsIG1pbWVUeXBlKSlcbiAgICApLnN1YnNjcmliZShcbiAgICAgIGJsb2JVcmwgPT4gdGhpcy5ibG9iVXJsID0gYmxvYlVybFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gZGlzcGxheSB1bmtub3duIGJsb2JzIGFzIHRleHQuIChpLmUuIG1pbWUtdHlwZSBpcyBvY3RldC1zdHJlYW0pXG4gICAqIEBwYXJhbSB1bmtub3duQXNUZXh0XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlVbmtub3duQXNUZXh0KHVua25vd25Bc1RleHQ6IGJvb2xlYW4pIHtcblxuICAgIC8vIFRPRE8gRklYIFJBQ0UgQ09ORElUSU9OOlxuICAgIC8vICAgIFNpbmNlIHRoaXMgcHJvcGVydHkgaXMgbm90IHJlYWN0aXZlLCBpdCBtdXN0IGJlIHNldCBmaXJzdC5cbiAgICAvLyAgICBPdGhlcndpc2UsIGl0IHdpbGwgc3RpbGwgYmUgZmFsc2UsIGV2ZW4gaWYgc2V0IHRvIHRydWUhXG5cbiAgICB0aGlzLl9kaXNwbGF5VW5rbm93bkFzVGV4dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh1bmtub3duQXNUZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBpbiBtZW1vcnkgYmxvYiB0byBkaXNwbGF5LlxuICAgKiBAcGFyYW0gYmxvYlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBibG9iKGJsb2I6IEJsb2IpIHtcbiAgICB0aGlzLmhhbmRsZUJsb2IoYmxvYik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgYmxvYi11cmwgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JVcmxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYlVybChibG9iVXJsOiBCbG9iVXJsKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iVXJsKGJsb2JVcmwpO1xuICB9XG5cblxuICAvKipcbiAgICogU2V0IGEgdXJsIHRvIGRpc3BsYXkuIFJlcXVpcmVzIHRoZSBtaW1lVHlwZSB0byBiZSBzZXQgYXN3ZWxsLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3VybCQubmV4dCh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWltZS10eXBlIGZvciB0aGUgdXJsIHRvIGRpc3BsYXkuIE9ubHkgY29uc2lkZXJlZCBpZiB1cmwgaXMgc2V0LlxuICAgKiBAcGFyYW0gbWltZVR5cGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWltZVR5cGUobWltZVR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuX21pbWVUeXBlJC5uZXh0KG1pbWVUeXBlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgcHJpdmF0ZSBoYW5kbGVCbG9iKGJsb2I6IEJsb2IpOiB2b2lkIHtcblxuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tQmxvYihibG9iKTtcbiAgICBjb25zdCBtaW1lVHlwZSA9IEJsb2JNaW1lVHlwZS5wYXJzZShibG9iLnR5cGUpO1xuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMudGV4dENvbnRleHQoYmxvYiwgbWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICBCbG9iQ29udGV4dC5zYWZlVXJsKHNhZmVVcmwsIG1pbWVUeXBlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRleHRDb250ZXh0KGJsb2I6IEJsb2IsIG1pbWVUeXBlOiBCbG9iTWltZVR5cGUpOiB2b2lkIHtcbiAgICBibG9iLnRleHQoKS50aGVuKFxuICAgICAgdGV4dCA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQmxvYlVybChibG9iVXJsOiBCbG9iVXJsKTogdm9pZCB7XG5cbiAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5jcmVhdGVTYWZlVXJsRnJvbURhdGFVcmwoYmxvYlVybC51cmwpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gQmxvYk1pbWVUeXBlLnBhcnNlKGJsb2JVcmwubWltZVR5cGUpO1xuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMubG9hZEFzVGV4dChibG9iVXJsLnVybCwgbWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICBCbG9iQ29udGV4dC5zYWZlVXJsKHNhZmVVcmwsIG1pbWVUeXBlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRCbG9iKGJsb2JDb250ZXh0OiBCbG9iQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuYmxvYkNvbnRleHQkLm5leHQoYmxvYkNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbUJsb2IoYmxvYjogQmxvYik6IFNhZmVVcmwge1xuICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoYmxvYlVybCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNhZmVVcmxGcm9tRGF0YVVybCh1cmw6IHN0cmluZyk6IFNhZmVVcmwge1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nLCBtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogdm9pZCB7XG5cbiAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IoJ0xvYWRpbmcuLi4nLCBtaW1lVHlwZSlcbiAgICApO1xuXG4gICAgdGhpcy5kb3dubG9hZEFzVGV4dChwcmlzdGluZVVybCkuc3Vic2NyaWJlKFxuICAgICAgdGV4dCA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5uZXh0QmxvYihcbiAgICAgICAgICBCbG9iQ29udGV4dC50ZXh0QmxvYignRmFpbGVkIHRvIGRvd25sb2FkIGNvbnRlbnQhJywgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLndhcm4oJ0ZhaWxlZCB0byBkb3dubG9hZCBjb250ZW50IScsIGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBjYW4gPSBtaW1lVHlwZS5pc1RleHQgfHwgKHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0ICYmIG1pbWVUeXBlLmlzT2N0ZXRTdHJlYW0pO1xuXG4gICAgLy8gVE9ETyBfZGlzcGxheVVua25vd25Bc1RleHQgbWlnaHQgYmUgbnVsbCBkdWUgcmFjZSBjb25kaXRpb24gc2VlIHRvZG8gYWJvdmUuXG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ2NhbkRpc3BsYXlBc1RleHQoJyArIG1pbWVUeXBlLnZhbHVlICsgJykgLS0+ICdcbiAgICAvLyAgKyBjYW4gKyAnIC0tLT4gdGhpcy5fZGlzcGxheVVua25vd25Bc1RleHQ6JyArIHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0LCBtaW1lVHlwZSk7XG5cbiAgICByZXR1cm4gY2FuO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwUHJpc3RpbmUuZ2V0KHByaXN0aW5lVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0J1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cImRvY3VtZW50LXZpZXdlclwiIGZ4RmlsbD5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYmxvYkNvbnRleHQkIHwgYXN5bmMgYXMgYmxvYkNvbnRleHRcIj5cblxuICAgIDwhLS0gVmlkZW8gLS0+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgKm5nSWY9XCJibG9iQ29udGV4dC5taW1lVHlwZS5pc1ZpZGVvXCIgZnhGaWxsPlxuICAgICAgPHZpZGVvIGNsYXNzPVwidmlkZW9cIlxuICAgICAgICAgICAgIGNvbnRyb2xzIGF1dG9wbGF5IGxvb3BcblxuICAgICAgPlxuICAgICAgICA8c291cmNlIFtzcmNdPVwiYmxvYkNvbnRleHQuc2FmZVVybFwiIFt0eXBlXT1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLnZhbHVlXCI+XG4gICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUw1IHZpZGVvLlxuICAgICAgPC92aWRlbz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQXVkaW8gLS0+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgKm5nSWY9XCJibG9iQ29udGV4dC5taW1lVHlwZS5pc0F1ZGlvXCIgZnhGaWxsPlxuICAgICAgPGF1ZGlvIGNsYXNzPVwiYXVkaW9cIlxuICAgICAgICAgICAgIGNvbnRyb2xzIGF1dG9wbGF5IGxvb3BcbiAgICAgID5cbiAgICAgICAgPHNvdXJjZSBbc3JjXT1cImJsb2JDb250ZXh0LnNhZmVVcmxcIiBbdHlwZV09XCJibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZVwiPlxuICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBhdWRpby5cbiAgICAgIDwvYXVkaW8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEltYWdlIC0tPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiAqbmdJZj1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLmlzSW1hZ2VcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIiBmeEZpbGw+XG4gICAgICA8aW1nIGNsYXNzPVwiY292ZXJcIiBmeEZsZXhcbiAgICAgICAgICAgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgYWx0PVwiYmxvYiBpbWFnZVwiLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRW1iZWRkZWQgKFBERnMgZXRjKSAtLT5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJibG9iQ29udGV4dC5kaXNwbGF5RW1iZWRkZWRcIiBmeEZpbGw+XG4gICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlXCI+XG4gICAgICAgIDxlbWJlZCBjbGFzcz1cImVtYmVkZGVkXCIgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgW3R5cGVdPVwiYmxvYkNvbnRleHQubWltZVR5cGUudmFsdWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUGxhaW4gVGV4dCAtLT5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJibG9iQ29udGV4dC5kaXNwbGF5QXNUZXh0XCIgZnhGaWxsPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzPVwiZG9jdW1lbnQtY29udGVudFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQ29udGVudFwiXG4gICAgICAgIFt2YWx1ZV09XCJibG9iQ29udGV4dC50ZXh0XCIgd3JhcD1cIm9mZlwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiICpuZ0lmPVwiYmxvYkNvbnRleHQuY2FudERpc3BsYXlcIiBmeEZpbGw+XG4gICAgICA8cD5DYW50IGRpc3BsYXkge3tibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZX19ITwvcD5cbiAgICA8L2Rpdj5cblxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShibG9iQ29udGV4dCQgfCBhc3luYylcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZpbGw+XG4gICAgICA8cD5ObyBEb2N1bWVudC48L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG5cbjwvZGl2PlxuIl19
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9ibG9iLXZpZXdlci9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2Jsb2Itdmlld2VyL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFNUQsTUFBTSxXQUFXO0lBZ0JmLFlBQ2tCLE9BQWdCLEVBQ2hCLFFBQXNCLEVBQ3RCLE9BQWUsSUFBSTtRQUZuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUVyQyxDQUFDO0lBbkJNLE1BQU0sQ0FBQyxRQUFRLENBQ3BCLElBQVksRUFDWixRQUFzQjtRQUV0QixPQUFPLElBQUksV0FBVyxDQUFDLElB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QyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBc0I7UUFFN0MsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEYsOEVBQThFO1FBQzlFLG9FQUFvRTtRQUNwRSx3RkFBd0Y7UUFFeEYsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3hDLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7O3FIQTFNVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qix1TENwR3JDLGltRUE4REE7MkZEc0NhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTtvS0FnRXBDLG9CQUFvQjtzQkFEOUIsS0FBSztnQkFlSyxJQUFJO3NCQURkLEtBQUs7Z0JBVUssT0FBTztzQkFEakIsS0FBSztnQkFXSyxHQUFHO3NCQURiLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QmxvYlVybH0gZnJvbSAnLi4vYmxvYi11cmwnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0h0dHBDbGllbnRQcmlzdGluZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2h0dHAvaHR0cC1jbGllbnQtcHJpc3RpbmUnO1xuaW1wb3J0IHtFbGRlclRvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vdG9hc3RzL2VsZGVyLXRvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY2xhc3MgQmxvYkNvbnRleHQge1xuXG4gIHB1YmxpYyBzdGF0aWMgdGV4dEJsb2IoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIG1pbWVUeXBlOiBCbG9iTWltZVR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBCbG9iQ29udGV4dChudWxsLCBtaW1lVHlwZSwgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNhZmVVcmwoXG4gICAgc2FmZVVybDogU2FmZVVybCxcbiAgICBtaW1lVHlwZTogQmxvYk1pbWVUeXBlLFxuICApOiBCbG9iQ29udGV4dCB7XG4gICAgcmV0dXJuIG5ldyBCbG9iQ29udGV4dChzYWZlVXJsLCBtaW1lVHlwZSwgbnVsbCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FmZVVybDogU2FmZVVybCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGV4dDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUFzVGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRleHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbnREaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5QXNUZXh0ICYmICF0aGlzLmRpc3BsYXlFbWJlZGRlZFxuICAgICAgJiYgIXRoaXMubWltZVR5cGUuaXNBdWRpbyAmJiAhdGhpcy5taW1lVHlwZS5pc0ltYWdlICYmICF0aGlzLm1pbWVUeXBlLmlzVmlkZW87XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlFbWJlZGRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taW1lVHlwZS5pc1BkZjtcbiAgfVxuXG59XG5cbmNsYXNzIEJsb2JNaW1lVHlwZSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPQ1RFVF9TVFJFQU0gPSBuZXcgQmxvYk1pbWVUeXBlKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTtcblxuICBwdWJsaWMgc3RhdGljIHBhcnNlKG1pbWVUeXBlOiBzdHJpbmcpOiBCbG9iTWltZVR5cGUge1xuICAgIGlmIChtaW1lVHlwZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iTWltZVR5cGUobWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQmxvYk1pbWVUeXBlLk9DVEVUX1NUUkVBTTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ1xuICApIHsgIH1cblxuICBwdWJsaWMgZ2V0IGlzT2N0ZXRTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmlkZW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndmlkZW8vJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW1hZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXVkaW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXVkaW8vJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSnNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9qc29uJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUGRmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL3BkZicpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1RleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCB0aGlzLmlzSnNvbjtcbiAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWJsb2Itdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJCbG9iVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYmxvYkNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCbG9iQ29udGV4dD4obnVsbCk7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF91cmwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW1lVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kaXNwbGF5VW5rbm93bkFzVGV4dCA9IGZhbHNlO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cFByaXN0aW5lOiBIdHRwQ2xpZW50UHJpc3RpbmUsXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogRWxkZXJUb2FzdFNlcnZpY2VcbiAgKSB7ICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3VybCQsIHRoaXMuX21pbWVUeXBlJF0pLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIoKFt1cmwsIG1pbWVUeXBlXSkgPT4gISF1cmwpLFxuICAgICAgbWFwKChbdXJsLCBtaW1lVHlwZV0pID0+IEJsb2JVcmwuZnJvbSh1cmwsIG1pbWVUeXBlKSlcbiAgICApLnN1YnNjcmliZShcbiAgICAgIGJsb2JVcmwgPT4gdGhpcy5ibG9iVXJsID0gYmxvYlVybFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gZGlzcGxheSB1bmtub3duIGJsb2JzIGFzIHRleHQuIChpLmUuIG1pbWUtdHlwZSBpcyBvY3RldC1zdHJlYW0pXG4gICAqIEBwYXJhbSB1bmtub3duQXNUZXh0XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlVbmtub3duQXNUZXh0KHVua25vd25Bc1RleHQ6IGJvb2xlYW4pIHtcblxuICAgIC8vIFRPRE8gRklYIFJBQ0UgQ09ORElUSU9OOlxuICAgIC8vICAgIFNpbmNlIHRoaXMgcHJvcGVydHkgaXMgbm90IHJlYWN0aXZlLCBpdCBtdXN0IGJlIHNldCBmaXJzdC5cbiAgICAvLyAgICBPdGhlcndpc2UsIGl0IHdpbGwgc3RpbGwgYmUgZmFsc2UsIGV2ZW4gaWYgc2V0IHRvIHRydWUhXG5cbiAgICB0aGlzLl9kaXNwbGF5VW5rbm93bkFzVGV4dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh1bmtub3duQXNUZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBpbiBtZW1vcnkgYmxvYiB0byBkaXNwbGF5LlxuICAgKiBAcGFyYW0gYmxvYlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBibG9iKGJsb2I6IEJsb2IpIHtcbiAgICB0aGlzLmhhbmRsZUJsb2IoYmxvYik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgYmxvYi11cmwgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JVcmxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYlVybChibG9iVXJsOiBCbG9iVXJsKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iVXJsKGJsb2JVcmwpO1xuICB9XG5cblxuICAvKipcbiAgICogU2V0IGEgdXJsIHRvIGRpc3BsYXkuIFJlcXVpcmVzIHRoZSBtaW1lVHlwZSB0byBiZSBzZXQgYXN3ZWxsLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3VybCQubmV4dCh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWltZS10eXBlIGZvciB0aGUgdXJsIHRvIGRpc3BsYXkuIE9ubHkgY29uc2lkZXJlZCBpZiB1cmwgaXMgc2V0LlxuICAgKiBAcGFyYW0gbWltZVR5cGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWltZVR5cGUobWltZVR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuX21pbWVUeXBlJC5uZXh0KG1pbWVUeXBlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgcHJpdmF0ZSBoYW5kbGVCbG9iKGJsb2I6IEJsb2IpOiB2b2lkIHtcblxuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tQmxvYihibG9iKTtcbiAgICBjb25zdCBtaW1lVHlwZSA9IEJsb2JNaW1lVHlwZS5wYXJzZShibG9iLnR5cGUpO1xuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMudGV4dENvbnRleHQoYmxvYiwgbWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICBCbG9iQ29udGV4dC5zYWZlVXJsKHNhZmVVcmwsIG1pbWVUeXBlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRleHRDb250ZXh0KGJsb2I6IEJsb2IsIG1pbWVUeXBlOiBCbG9iTWltZVR5cGUpOiB2b2lkIHtcbiAgICBibG9iLnRleHQoKS50aGVuKFxuICAgICAgdGV4dCA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQmxvYlVybChibG9iVXJsOiBCbG9iVXJsKTogdm9pZCB7XG5cbiAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5jcmVhdGVTYWZlVXJsRnJvbURhdGFVcmwoYmxvYlVybC51cmwpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gQmxvYk1pbWVUeXBlLnBhcnNlKGJsb2JVcmwubWltZVR5cGUpO1xuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMubG9hZEFzVGV4dChibG9iVXJsLnVybCwgbWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICBCbG9iQ29udGV4dC5zYWZlVXJsKHNhZmVVcmwsIG1pbWVUeXBlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRCbG9iKGJsb2JDb250ZXh0OiBCbG9iQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuYmxvYkNvbnRleHQkLm5leHQoYmxvYkNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbUJsb2IoYmxvYjogQmxvYik6IFNhZmVVcmwge1xuICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoYmxvYlVybCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNhZmVVcmxGcm9tRGF0YVVybCh1cmw6IHN0cmluZyk6IFNhZmVVcmwge1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nLCBtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogdm9pZCB7XG5cbiAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IoJ0xvYWRpbmcuLi4nLCBtaW1lVHlwZSlcbiAgICApO1xuXG4gICAgdGhpcy5kb3dubG9hZEFzVGV4dChwcmlzdGluZVVybCkuc3Vic2NyaWJlKFxuICAgICAgdGV4dCA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5uZXh0QmxvYihcbiAgICAgICAgICBCbG9iQ29udGV4dC50ZXh0QmxvYignRmFpbGVkIHRvIGRvd25sb2FkIGNvbnRlbnQhJywgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLndhcm4oJ0ZhaWxlZCB0byBkb3dubG9hZCBjb250ZW50IScsIGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBjYW4gPSBtaW1lVHlwZS5pc1RleHQgfHwgKHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0ICYmIG1pbWVUeXBlLmlzT2N0ZXRTdHJlYW0pO1xuXG4gICAgLy8gVE9ETyBfZGlzcGxheVVua25vd25Bc1RleHQgbWlnaHQgYmUgbnVsbCBkdWUgcmFjZSBjb25kaXRpb24gc2VlIHRvZG8gYWJvdmUuXG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ2NhbkRpc3BsYXlBc1RleHQoJyArIG1pbWVUeXBlLnZhbHVlICsgJykgLS0+ICdcbiAgICAvLyAgKyBjYW4gKyAnIC0tLT4gdGhpcy5fZGlzcGxheVVua25vd25Bc1RleHQ6JyArIHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0LCBtaW1lVHlwZSk7XG5cbiAgICByZXR1cm4gY2FuO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwUHJpc3RpbmUuZ2V0KHByaXN0aW5lVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0J1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cImRvY3VtZW50LXZpZXdlclwiIGZ4RmlsbD5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYmxvYkNvbnRleHQkIHwgYXN5bmMgYXMgYmxvYkNvbnRleHRcIj5cblxuICAgIDwhLS0gVmlkZW8gLS0+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgKm5nSWY9XCJibG9iQ29udGV4dC5taW1lVHlwZS5pc1ZpZGVvXCIgZnhGaWxsPlxuICAgICAgPHZpZGVvIGNsYXNzPVwidmlkZW9cIlxuICAgICAgICAgICAgIGNvbnRyb2xzIGF1dG9wbGF5IGxvb3BcblxuICAgICAgPlxuICAgICAgICA8c291cmNlIFtzcmNdPVwiYmxvYkNvbnRleHQuc2FmZVVybFwiIFt0eXBlXT1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLnZhbHVlXCI+XG4gICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUw1IHZpZGVvLlxuICAgICAgPC92aWRlbz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQXVkaW8gLS0+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgKm5nSWY9XCJibG9iQ29udGV4dC5taW1lVHlwZS5pc0F1ZGlvXCIgZnhGaWxsPlxuICAgICAgPGF1ZGlvIGNsYXNzPVwiYXVkaW9cIlxuICAgICAgICAgICAgIGNvbnRyb2xzIGF1dG9wbGF5IGxvb3BcbiAgICAgID5cbiAgICAgICAgPHNvdXJjZSBbc3JjXT1cImJsb2JDb250ZXh0LnNhZmVVcmxcIiBbdHlwZV09XCJibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZVwiPlxuICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBhdWRpby5cbiAgICAgIDwvYXVkaW8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEltYWdlIC0tPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiAqbmdJZj1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLmlzSW1hZ2VcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIiBmeEZpbGw+XG4gICAgICA8aW1nIGNsYXNzPVwiY292ZXJcIiBmeEZsZXhcbiAgICAgICAgICAgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgYWx0PVwiYmxvYiBpbWFnZVwiLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRW1iZWRkZWQgKFBERnMgZXRjKSAtLT5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJibG9iQ29udGV4dC5kaXNwbGF5RW1iZWRkZWRcIiBmeEZpbGw+XG4gICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlXCI+XG4gICAgICAgIDxlbWJlZCBjbGFzcz1cImVtYmVkZGVkXCIgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgW3R5cGVdPVwiYmxvYkNvbnRleHQubWltZVR5cGUudmFsdWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUGxhaW4gVGV4dCAtLT5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJibG9iQ29udGV4dC5kaXNwbGF5QXNUZXh0XCIgZnhGaWxsPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzPVwiZG9jdW1lbnQtY29udGVudFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQ29udGVudFwiXG4gICAgICAgIFt2YWx1ZV09XCJibG9iQ29udGV4dC50ZXh0XCIgd3JhcD1cIm9mZlwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiICpuZ0lmPVwiYmxvYkNvbnRleHQuY2FudERpc3BsYXlcIiBmeEZpbGw+XG4gICAgICA8cD5DYW50IGRpc3BsYXkge3tibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZX19ITwvcD5cbiAgICA8L2Rpdj5cblxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShibG9iQ29udGV4dCQgfCBhc3luYylcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZpbGw+XG4gICAgICA8cD5ObyBEb2N1bWVudC48L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG5cbjwvZGl2PlxuIl19
@@ -82,9 +82,9 @@ export class ElderFileDropZoneDirective {
82
82
  }
83
83
  }
84
84
  }
85
- ElderFileDropZoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileDropZoneDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
86
- ElderFileDropZoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderFileDropZoneDirective, selector: "[elderFileDropZone]", inputs: { dragOverClass: "dragOverClass" }, outputs: { elderFileDropZoneChange: "elderFileDropZoneChange" }, host: { listeners: { "dragover": "onDragOver($event)", "dragend": "onDragEnd($event)", "dragleave": "onDragEnd($event)", "drop": "onDrop($event)" } }, ngImport: i0 });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileDropZoneDirective, decorators: [{
85
+ ElderFileDropZoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileDropZoneDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
86
+ ElderFileDropZoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderFileDropZoneDirective, selector: "[elderFileDropZone]", inputs: { dragOverClass: "dragOverClass" }, outputs: { elderFileDropZoneChange: "elderFileDropZoneChange" }, host: { listeners: { "dragover": "onDragOver($event)", "dragend": "onDragEnd($event)", "dragleave": "onDragEnd($event)", "drop": "onDrop($event)" } }, ngImport: i0 });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileDropZoneDirective, decorators: [{
88
88
  type: Directive,
89
89
  args: [{
90
90
  selector: '[elderFileDropZone]'
@@ -121,9 +121,9 @@ export class ElderFileSelectDirective {
121
121
  return files;
122
122
  }
123
123
  }
124
- ElderFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileSelectDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
125
- ElderFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderFileSelectDirective, selector: "[elderFileSelect]", inputs: { elderFileSelect: "elderFileSelect", elderFileSelectMultiple: "elderFileSelectMultiple" }, outputs: { elderFileSelectChange: "elderFileSelectChange", elderSingleFileSelectChange: "elderSingleFileSelectChange" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileSelectDirective, decorators: [{
124
+ ElderFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileSelectDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
125
+ ElderFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderFileSelectDirective, selector: "[elderFileSelect]", inputs: { elderFileSelect: "elderFileSelect", elderFileSelectMultiple: "elderFileSelectMultiple" }, outputs: { elderFileSelectChange: "elderFileSelectChange", elderSingleFileSelectChange: "elderSingleFileSelectChange" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileSelectDirective, decorators: [{
127
127
  type: Directive,
128
128
  args: [{
129
129
  selector: '[elderFileSelect]'
@@ -20,8 +20,8 @@ export { ElderBlobViewerComponent } from './blob-viewer/elder-blob-viewer.compon
20
20
  export { BlobUrl } from './blob-url';
21
21
  export class ElderFileModule {
22
22
  }
23
- ElderFileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- ElderFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: ElderFileModule, declarations: [ElderFileSelectComponent,
23
+ ElderFileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
+ ElderFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderFileModule, declarations: [ElderFileSelectComponent,
25
25
  ElderFileUploadComponent,
26
26
  ElderFileSelectDirective,
27
27
  ElderFileDropZoneDirective,
@@ -34,12 +34,12 @@ ElderFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
34
34
  ElderFileSelectDirective,
35
35
  ElderFileDropZoneDirective,
36
36
  ElderBlobViewerComponent] });
37
- ElderFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileModule, imports: [CommonModule,
37
+ ElderFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileModule, imports: [CommonModule,
38
38
  FlexLayoutModule, MatListModule,
39
39
  MatButtonModule, MatIconModule,
40
40
  MatProgressBarModule,
41
41
  ElderPipesModule] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileModule, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileModule, decorators: [{
43
43
  type: NgModule,
44
44
  args: [{
45
45
  imports: [
@@ -36,9 +36,9 @@ export class ElderFileSelectComponent {
36
36
  this.filesChange.next(files);
37
37
  }
38
38
  }
39
- ElderFileSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
- ElderFileSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ElderFileSelectComponent, selector: "elder-file-select, ebs-file-select", inputs: { multiple: "multiple", accept: "accept", icon: "icon", color: "color" }, outputs: { filesChange: "filesChange" }, ngImport: i0, template: "\n\n<button mat-icon-button type=\"button\"\n [elderFileSelect]=\"accept\"\n [elderFileSelectMultiple]=\"multiple\"\n (elderFileSelectChange)=\"fileInputChanged($event)\"\n>\n <mat-icon [color]=\"color\">{{icon}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.ElderFileSelectDirective, selector: "[elderFileSelect]", inputs: ["elderFileSelect", "elderFileSelectMultiple"], outputs: ["elderFileSelectChange", "elderSingleFileSelectChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileSelectComponent, decorators: [{
39
+ ElderFileSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
+ ElderFileSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ElderFileSelectComponent, selector: "elder-file-select, ebs-file-select", inputs: { multiple: "multiple", accept: "accept", icon: "icon", color: "color" }, outputs: { filesChange: "filesChange" }, ngImport: i0, template: "\n\n<button mat-icon-button type=\"button\"\n [elderFileSelect]=\"accept\"\n [elderFileSelectMultiple]=\"multiple\"\n (elderFileSelectChange)=\"fileInputChanged($event)\"\n>\n <mat-icon [color]=\"color\">{{icon}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.ElderFileSelectDirective, selector: "[elderFileSelect]", inputs: ["elderFileSelect", "elderFileSelectMultiple"], outputs: ["elderFileSelectChange", "elderSingleFileSelectChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileSelectComponent, decorators: [{
42
42
  type: Component,
43
43
  args: [{ selector: 'elder-file-select, ebs-file-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<button mat-icon-button type=\"button\"\n [elderFileSelect]=\"accept\"\n [elderFileSelectMultiple]=\"multiple\"\n (elderFileSelectChange)=\"fileInputChanged($event)\"\n>\n <mat-icon [color]=\"color\">{{icon}}</mat-icon>\n</button>\n" }]
44
44
  }], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
@@ -58,9 +58,9 @@ export class ElderFileUploadComponent {
58
58
  return forkJoin(this.uploadProgress.values());
59
59
  }
60
60
  }
61
- ElderFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
- ElderFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ElderFileUploadComponent, selector: "elder-file-upload, ebs-file-upload", inputs: { files: "files", multiple: "multiple", accept: "accept", uploadClient: "uploadClient" }, ngImport: i0, template: "\n\n<div fxLayout=\"column\">\n\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n *ngIf=\"uploadClient\" (click)=\"startUpload($event)\" [disabled]=\"files.size === 0\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n\n <elder-file-select\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n (filesChange)=\"files = $event\"\n ></elder-file-select>\n\n </div>\n\n <mat-list>\n <h2 mat-subheader>Selected Files ({{files.size}})</h2>\n <mat-list-item *ngFor=\"let file of files\">\n <mat-icon mat-list-icon>attach_file</mat-icon>\n <h4 mat-line>{{file.name}}</h4>\n <p mat-line> {{file.size | bytes}} - {{file.lastModified | timeAgo}}</p>\n\n <mat-progress-bar *ngIf=\"(transferOf(file)?.state$ | async) as state\"\n [color]=\"(state.hasFailed ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\">\n </mat-progress-bar>\n\n </mat-list-item>\n </mat-list>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "component", type: i3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "directive", type: i3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i3.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8.ElderFileSelectComponent, selector: "elder-file-select, ebs-file-select", inputs: ["multiple", "accept", "icon", "color"], outputs: ["filesChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.BytesPipe, name: "bytes" }, { kind: "pipe", type: i10.TimeAgoPipe, name: "timeAgo" }] });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFileUploadComponent, decorators: [{
61
+ ElderFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
+ ElderFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ElderFileUploadComponent, selector: "elder-file-upload, ebs-file-upload", inputs: { files: "files", multiple: "multiple", accept: "accept", uploadClient: "uploadClient" }, ngImport: i0, template: "\n\n<div fxLayout=\"column\">\n\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n *ngIf=\"uploadClient\" (click)=\"startUpload($event)\" [disabled]=\"files.size === 0\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n\n <elder-file-select\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n (filesChange)=\"files = $event\"\n ></elder-file-select>\n\n </div>\n\n <mat-list>\n <h2 mat-subheader>Selected Files ({{files.size}})</h2>\n <mat-list-item *ngFor=\"let file of files\">\n <mat-icon mat-list-icon>attach_file</mat-icon>\n <h4 mat-line>{{file.name}}</h4>\n <p mat-line> {{file.size | bytes}} - {{file.lastModified | timeAgo}}</p>\n\n <mat-progress-bar *ngIf=\"(transferOf(file)?.state$ | async) as state\"\n [color]=\"(state.hasFailed ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\">\n </mat-progress-bar>\n\n </mat-list-item>\n </mat-list>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "component", type: i3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "directive", type: i3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i3.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8.ElderFileSelectComponent, selector: "elder-file-select, ebs-file-select", inputs: ["multiple", "accept", "icon", "color"], outputs: ["filesChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.BytesPipe, name: "bytes" }, { kind: "pipe", type: i10.TimeAgoPipe, name: "timeAgo" }] });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFileUploadComponent, decorators: [{
64
64
  type: Component,
65
65
  args: [{ selector: 'elder-file-upload, ebs-file-upload', template: "\n\n<div fxLayout=\"column\">\n\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n *ngIf=\"uploadClient\" (click)=\"startUpload($event)\" [disabled]=\"files.size === 0\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n\n <elder-file-select\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n (filesChange)=\"files = $event\"\n ></elder-file-select>\n\n </div>\n\n <mat-list>\n <h2 mat-subheader>Selected Files ({{files.size}})</h2>\n <mat-list-item *ngFor=\"let file of files\">\n <mat-icon mat-list-icon>attach_file</mat-icon>\n <h4 mat-line>{{file.name}}</h4>\n <p mat-line> {{file.size | bytes}} - {{file.lastModified | timeAgo}}</p>\n\n <mat-progress-bar *ngIf=\"(transferOf(file)?.state$ | async) as state\"\n [color]=\"(state.hasFailed ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\">\n </mat-progress-bar>\n\n </mat-list-item>\n </mat-list>\n\n</div>\n" }]
66
66
  }], ctorParameters: function () { return []; }, propDecorators: { files: [{
@@ -40,9 +40,9 @@ export class ElderClipboardService {
40
40
  return copiedEvent.pipe(first());
41
41
  }
42
42
  }
43
- ElderClipboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
- ElderClipboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClipboardService, providedIn: 'root' });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClipboardService, decorators: [{
43
+ ElderClipboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
+ ElderClipboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClipboardService, providedIn: 'root' });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClipboardService, decorators: [{
46
46
  type: Injectable,
47
47
  args: [{
48
48
  providedIn: 'root'
@@ -23,9 +23,9 @@ export class ElderClassHostBindingBase {
23
23
  return this._enabled;
24
24
  }
25
25
  }
26
- ElderClassHostBindingBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClassHostBindingBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
27
- ElderClassHostBindingBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderClassHostBindingBase, host: { properties: { "class": "this.elementClass" } }, ngImport: i0 });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClassHostBindingBase, decorators: [{
26
+ ElderClassHostBindingBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClassHostBindingBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
27
+ ElderClassHostBindingBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderClassHostBindingBase, host: { properties: { "class": "this.elementClass" } }, ngImport: i0 });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClassHostBindingBase, decorators: [{
29
29
  type: Directive
30
30
  }], ctorParameters: function () { return [{ type: undefined }, { type: undefined }]; }, propDecorators: { elementClass: [{
31
31
  type: HostBinding,
@@ -16,9 +16,9 @@ export class ElderClipboardPutDirective {
16
16
  this.elderClipboardService.writeText(this.payload.toString()).subscribe(copied => this.clipboardCopied.emit(this.payload));
17
17
  }
18
18
  }
19
- ElderClipboardPutDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClipboardPutDirective, deps: [{ token: i1.ElderClipboardService }], target: i0.ɵɵFactoryTarget.Directive });
20
- ElderClipboardPutDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: { payload: ["elderClipboardPut", "payload"] }, outputs: { clipboardCopied: "clipboardCopied" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderClipboardPutDirective, decorators: [{
19
+ ElderClipboardPutDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClipboardPutDirective, deps: [{ token: i1.ElderClipboardService }], target: i0.ɵɵFactoryTarget.Directive });
20
+ ElderClipboardPutDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: { payload: ["elderClipboardPut", "payload"] }, outputs: { clipboardCopied: "clipboardCopied" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderClipboardPutDirective, decorators: [{
22
22
  type: Directive,
23
23
  args: [{
24
24
  selector: '[elderClipboardPut]'
@@ -29,9 +29,9 @@ export class ElderDelayedFocusDirective {
29
29
  }
30
30
  }
31
31
  }
32
- ElderDelayedFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderDelayedFocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
33
- ElderDelayedFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderDelayedFocusDirective, selector: "[elderDelayedFocus]", inputs: { elderDelayedFocus: "elderDelayedFocus" }, ngImport: i0 });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderDelayedFocusDirective, decorators: [{
32
+ ElderDelayedFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDelayedFocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
33
+ ElderDelayedFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderDelayedFocusDirective, selector: "[elderDelayedFocus]", inputs: { elderDelayedFocus: "elderDelayedFocus" }, ngImport: i0 });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDelayedFocusDirective, decorators: [{
35
35
  type: Directive,
36
36
  args: [{
37
37
  selector: '[elderDelayedFocus]'
@@ -21,9 +21,9 @@ export class ElderFormFieldDenseDirective extends ElderClassHostBindingBase {
21
21
  this.enabled = coerceBooleanProperty(enabled);
22
22
  }
23
23
  }
24
- ElderFormFieldDenseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldDenseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
- ElderFormFieldDenseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: { elderDense: "elderDense" }, usesInheritance: true, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldDenseDirective, decorators: [{
24
+ ElderFormFieldDenseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldDenseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
+ ElderFormFieldDenseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: { elderDense: "elderDense" }, usesInheritance: true, ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldDenseDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: 'mat-form-field[elderDense]',
@@ -52,9 +52,9 @@ export class ElderFormFieldLabelDirective {
52
52
  }
53
53
  }
54
54
  }
55
- ElderFormFieldLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldLabelDirective, deps: [{ token: i1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive });
56
- ElderFormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "enabled && isReadonlyInput()" } }, ngImport: i0 });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldLabelDirective, decorators: [{
55
+ ElderFormFieldLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldLabelDirective, deps: [{ token: i1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive });
56
+ ElderFormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "enabled && isReadonlyInput()" } }, ngImport: i0 });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldLabelDirective, decorators: [{
58
58
  type: Directive,
59
59
  args: [{
60
60
  selector: 'mat-form-field[elderFormFieldLabel]',
@@ -21,9 +21,9 @@ export class ElderFormFieldNoHintDirective extends ElderClassHostBindingBase {
21
21
  this.enabled = coerceBooleanProperty(enabled);
22
22
  }
23
23
  }
24
- ElderFormFieldNoHintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldNoHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
- ElderFormFieldNoHintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderFormFieldNoHintDirective, selector: "mat-form-field[elderNoHint]", inputs: { elderNoHint: "elderNoHint" }, usesInheritance: true, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldNoHintDirective, decorators: [{
24
+ ElderFormFieldNoHintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldNoHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
+ ElderFormFieldNoHintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderFormFieldNoHintDirective, selector: "mat-form-field[elderNoHint]", inputs: { elderNoHint: "elderNoHint" }, usesInheritance: true, ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldNoHintDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: 'mat-form-field[elderNoHint]'
@@ -21,9 +21,9 @@ export class ElderFormFieldNoSpinnerDirective extends ElderClassHostBindingBase
21
21
  this.enabled = coerceBooleanProperty(enabled);
22
22
  }
23
23
  }
24
- ElderFormFieldNoSpinnerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldNoSpinnerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
- ElderFormFieldNoSpinnerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: { elderNoSpinner: "elderNoSpinner" }, usesInheritance: true, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormFieldNoSpinnerDirective, decorators: [{
24
+ ElderFormFieldNoSpinnerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldNoSpinnerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
+ ElderFormFieldNoSpinnerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: { elderNoSpinner: "elderNoSpinner" }, usesInheritance: true, ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormFieldNoSpinnerDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: 'input[elderNoSpinner]'
@@ -43,9 +43,9 @@ export * from './elder-input-pattern.directive';
43
43
  */
44
44
  export class ElderTouchedDirectiveLegacy extends ElderTouchedDirective {
45
45
  }
46
- ElderTouchedDirectiveLegacy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTouchedDirectiveLegacy, deps: null, target: i0.ɵɵFactoryTarget.Directive });
47
- ElderTouchedDirectiveLegacy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderTouchedDirectiveLegacy, selector: "[touched]", usesInheritance: true, ngImport: i0 });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTouchedDirectiveLegacy, decorators: [{
46
+ ElderTouchedDirectiveLegacy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTouchedDirectiveLegacy, deps: null, target: i0.ɵɵFactoryTarget.Directive });
47
+ ElderTouchedDirectiveLegacy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderTouchedDirectiveLegacy, selector: "[touched]", usesInheritance: true, ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTouchedDirectiveLegacy, decorators: [{
49
49
  type: Directive,
50
50
  args: [{ selector: '[touched]' }]
51
51
  }] });
@@ -54,9 +54,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
54
54
  */
55
55
  export class ElderPlugParentFormDirectiveLegacy extends ElderPlugParentFormDirective {
56
56
  }
57
- ElderPlugParentFormDirectiveLegacy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPlugParentFormDirectiveLegacy, deps: null, target: i0.ɵɵFactoryTarget.Directive });
58
- ElderPlugParentFormDirectiveLegacy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderPlugParentFormDirectiveLegacy, selector: "[plugParentForm]", usesInheritance: true, ngImport: i0 });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPlugParentFormDirectiveLegacy, decorators: [{
57
+ ElderPlugParentFormDirectiveLegacy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPlugParentFormDirectiveLegacy, deps: null, target: i0.ɵɵFactoryTarget.Directive });
58
+ ElderPlugParentFormDirectiveLegacy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderPlugParentFormDirectiveLegacy, selector: "[plugParentForm]", usesInheritance: true, ngImport: i0 });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPlugParentFormDirectiveLegacy, decorators: [{
60
60
  type: Directive,
61
61
  args: [{ selector: '[plugParentForm]' }]
62
62
  }] });
@@ -65,16 +65,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
65
65
  */
66
66
  export class ElderStopEventPropagationDirectiveLegacy extends ElderStopEventPropagationDirective {
67
67
  }
68
- ElderStopEventPropagationDirectiveLegacy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderStopEventPropagationDirectiveLegacy, deps: null, target: i0.ɵɵFactoryTarget.Directive });
69
- ElderStopEventPropagationDirectiveLegacy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderStopEventPropagationDirectiveLegacy, selector: "[ebsStopEventPropagation]", usesInheritance: true, ngImport: i0 });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderStopEventPropagationDirectiveLegacy, decorators: [{
68
+ ElderStopEventPropagationDirectiveLegacy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderStopEventPropagationDirectiveLegacy, deps: null, target: i0.ɵɵFactoryTarget.Directive });
69
+ ElderStopEventPropagationDirectiveLegacy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderStopEventPropagationDirectiveLegacy, selector: "[ebsStopEventPropagation]", usesInheritance: true, ngImport: i0 });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderStopEventPropagationDirectiveLegacy, decorators: [{
71
71
  type: Directive,
72
72
  args: [{ selector: '[ebsStopEventPropagation]' }]
73
73
  }] });
74
74
  export class ElderFormsDirectivesModule {
75
75
  }
76
- ElderFormsDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormsDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
77
- ElderFormsDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: ElderFormsDirectivesModule, declarations: [ElderDelayedFocusDirective,
76
+ ElderFormsDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormsDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
77
+ ElderFormsDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderFormsDirectivesModule, declarations: [ElderDelayedFocusDirective,
78
78
  ElderTouchedDirective, ElderTouchedDirectiveLegacy, ElderPlugParentFormDirective, ElderPlugParentFormDirectiveLegacy, ElderStopEventPropagationDirective, ElderStopEventPropagationDirectiveLegacy, ElderMinDirective,
79
79
  ElderMaxDirective,
80
80
  ElderFormFieldLabelDirective,
@@ -103,8 +103,8 @@ ElderFormsDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.
103
103
  ElderTabFocusTrapDirective,
104
104
  ElderFormFieldNoHintDirective,
105
105
  ElderInputPatternDirective] });
106
- ElderFormsDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormsDirectivesModule, imports: [CommonModule, MatFormFieldModule] });
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderFormsDirectivesModule, decorators: [{
106
+ ElderFormsDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormsDirectivesModule, imports: [CommonModule, MatFormFieldModule] });
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderFormsDirectivesModule, decorators: [{
108
108
  type: NgModule,
109
109
  args: [{
110
110
  imports: [CommonModule, MatFormFieldModule],
@@ -58,9 +58,9 @@ export class ElderInputPatternDirective {
58
58
  return true;
59
59
  }
60
60
  }
61
- ElderInputPatternDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderInputPatternDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
62
- ElderInputPatternDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderInputPatternDirective, selector: "textarea[elderInputPattern],input[elderInputPattern]", inputs: { elderInputPattern: "elderInputPattern" }, host: { listeners: { "beforeinput": "onBeforeInput($event)", "paste": "onPasteEvent($event)" } }, ngImport: i0 });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderInputPatternDirective, decorators: [{
61
+ ElderInputPatternDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderInputPatternDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
62
+ ElderInputPatternDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderInputPatternDirective, selector: "textarea[elderInputPattern],input[elderInputPattern]", inputs: { elderInputPattern: "elderInputPattern" }, host: { listeners: { "beforeinput": "onBeforeInput($event)", "paste": "onPasteEvent($event)" } }, ngImport: i0 });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderInputPatternDirective, decorators: [{
64
64
  type: Directive,
65
65
  args: [{
66
66
  selector: 'textarea[elderInputPattern],input[elderInputPattern]'
@@ -79,9 +79,9 @@ export class ElderKeyEventDirective {
79
79
  }
80
80
  }
81
81
  }
82
- ElderKeyEventDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderKeyEventDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
83
- ElderKeyEventDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: { keyFilter: ["elderKeyEventFilter", "keyFilter"], keyDown: ["elderKeyEventDown", "keyDown"], includeChildren: ["elderKeyEventChildren", "includeChildren"], callback: ["elderKeyEventCallback", "callback"] }, outputs: { keyEvent: "onElderKeyEvent" }, host: { listeners: { "window:keyup": "keyupEvent($event)", "window:keydown": "keydownEvent($event)" } }, ngImport: i0 });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderKeyEventDirective, decorators: [{
82
+ ElderKeyEventDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderKeyEventDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
83
+ ElderKeyEventDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: { keyFilter: ["elderKeyEventFilter", "keyFilter"], keyDown: ["elderKeyEventDown", "keyDown"], includeChildren: ["elderKeyEventChildren", "includeChildren"], callback: ["elderKeyEventCallback", "callback"] }, outputs: { keyEvent: "onElderKeyEvent" }, host: { listeners: { "window:keyup": "keyupEvent($event)", "window:keydown": "keydownEvent($event)" } }, ngImport: i0 });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderKeyEventDirective, decorators: [{
85
85
  type: Directive,
86
86
  args: [{
87
87
  selector: '[elderKeyEvent]'
@@ -16,14 +16,14 @@ export class ElderMaxDirective {
16
16
  return this._validator(control);
17
17
  }
18
18
  }
19
- ElderMaxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderMaxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
- ElderMaxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderMaxDirective, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, providers: [
19
+ ElderMaxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMaxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
+ ElderMaxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderMaxDirective, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, providers: [
21
21
  { provide: NG_VALIDATORS,
22
22
  useExisting: forwardRef(() => ElderMaxDirective),
23
23
  multi: true
24
24
  }
25
25
  ], ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderMaxDirective, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMaxDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: '[max][formControlName],[max][formControl],[max][ngModel]',
@@ -16,14 +16,14 @@ export class ElderMinDirective {
16
16
  return this._validator(control);
17
17
  }
18
18
  }
19
- ElderMinDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderMinDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
- ElderMinDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderMinDirective, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, providers: [
19
+ ElderMinDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMinDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
+ ElderMinDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderMinDirective, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, providers: [
21
21
  { provide: NG_VALIDATORS,
22
22
  useExisting: forwardRef(() => ElderMinDirective),
23
23
  multi: true
24
24
  }
25
25
  ], ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderMinDirective, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMinDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: '[min][formControlName],[min][formControl],[min][ngModel]',
@@ -77,9 +77,9 @@ export class ElderNextFocusableDirective {
77
77
  return true;
78
78
  }
79
79
  }
80
- ElderNextFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderNextFocusableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
81
- ElderNextFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderNextFocusableDirective, selector: "[elderNextFocusable]", inputs: { nextElement: ["elderNextFocusable", "nextElement"], enabled: ["elderNextFocusableEnabled", "enabled"], nextElements: ["elderNextElements", "nextElements"] }, host: { listeners: { "keydown": "onKeyDown($event)" } }, exportAs: ["elderNextFocusable"], ngImport: i0 });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderNextFocusableDirective, decorators: [{
80
+ ElderNextFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderNextFocusableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
81
+ ElderNextFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderNextFocusableDirective, selector: "[elderNextFocusable]", inputs: { nextElement: ["elderNextFocusable", "nextElement"], enabled: ["elderNextFocusableEnabled", "enabled"], nextElements: ["elderNextElements", "nextElements"] }, host: { listeners: { "keydown": "onKeyDown($event)" } }, exportAs: ["elderNextFocusable"], ngImport: i0 });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderNextFocusableDirective, decorators: [{
83
83
  type: Directive,
84
84
  args: [{
85
85
  selector: '[elderNextFocusable]',
@@ -9,15 +9,15 @@ import * as i0 from "@angular/core";
9
9
  */
10
10
  export class ElderPlugParentFormDirective {
11
11
  }
12
- ElderPlugParentFormDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPlugParentFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
- ElderPlugParentFormDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderPlugParentFormDirective, selector: "[elderPlugParentForm]", providers: [
12
+ ElderPlugParentFormDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPlugParentFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
+ ElderPlugParentFormDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderPlugParentFormDirective, selector: "[elderPlugParentForm]", providers: [
14
14
  {
15
15
  provide: ControlContainer,
16
16
  useFactory: provideForm,
17
17
  deps: [NgForm]
18
18
  }
19
19
  ], ngImport: i0 });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPlugParentFormDirective, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPlugParentFormDirective, decorators: [{
21
21
  type: Directive,
22
22
  args: [{
23
23
  selector: '[elderPlugParentForm]',