@vendure/admin-ui 2.1.0-next.0 → 2.1.0-next.1

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 (402) hide show
  1. package/core/common/generated-types.d.ts +1741 -1706
  2. package/core/common/version.d.ts +1 -1
  3. package/core/data/providers/base-data.service.d.ts +1 -3
  4. package/core/providers/data-table/data-table-filter-collection.d.ts +10 -6
  5. package/core/providers/data-table/data-table-filter.d.ts +16 -2
  6. package/core/providers/local-storage/local-storage.service.d.ts +4 -0
  7. package/core/public_api.d.ts +4 -0
  8. package/core/shared/components/data-table-2/data-table2.component.d.ts +6 -2
  9. package/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.d.ts +25 -0
  10. package/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +29 -0
  11. package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +34 -0
  12. package/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.d.ts +9 -0
  13. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  14. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +1 -1
  15. package/core/shared/shared.module.d.ts +14 -11
  16. package/esm2022/catalog/catalog.module.mjs +4 -4
  17. package/esm2022/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +3 -3
  18. package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +3 -3
  19. package/esm2022/catalog/components/asset-list/asset-list.component.mjs +3 -3
  20. package/esm2022/catalog/components/assets/assets.component.mjs +3 -3
  21. package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +3 -3
  22. package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +3 -3
  23. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +3 -3
  24. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +3 -3
  25. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +3 -3
  26. package/esm2022/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +3 -3
  27. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +5 -4
  28. package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +3 -3
  29. package/esm2022/catalog/components/collection-tree/collection-tree.component.mjs +3 -3
  30. package/esm2022/catalog/components/collection-tree/collection-tree.service.mjs +3 -3
  31. package/esm2022/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +3 -3
  32. package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +3 -3
  33. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +3 -3
  34. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +3 -3
  35. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +5 -4
  36. package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +3 -3
  37. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +3 -3
  38. package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +3 -3
  39. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +3 -3
  40. package/esm2022/catalog/components/product-list/product-list.component.mjs +5 -10
  41. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +3 -3
  42. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +3 -3
  43. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +5 -10
  44. package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +3 -3
  45. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +3 -3
  46. package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +3 -3
  47. package/esm2022/catalog/components/stock-location-detail/stock-location-detail.component.mjs +3 -3
  48. package/esm2022/catalog/components/stock-location-list/stock-location-list.component.mjs +5 -10
  49. package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +3 -3
  50. package/esm2022/catalog/components/variant-price-detail/variant-price-detail.component.mjs +3 -3
  51. package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +3 -3
  52. package/esm2022/catalog/providers/routing/product-variants-resolver.mjs +3 -3
  53. package/esm2022/core/app.component.mjs +3 -3
  54. package/esm2022/core/app.component.module.mjs +4 -4
  55. package/esm2022/core/common/base-list.component.mjs +6 -6
  56. package/esm2022/core/common/generated-types.mjs +1 -1
  57. package/esm2022/core/common/version.mjs +2 -2
  58. package/esm2022/core/components/alerts/alerts.component.mjs +3 -3
  59. package/esm2022/core/components/app-shell/app-shell.component.mjs +3 -3
  60. package/esm2022/core/components/base-nav/base-nav.component.mjs +3 -3
  61. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +3 -3
  62. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +3 -3
  63. package/esm2022/core/components/main-nav/main-nav.component.mjs +3 -3
  64. package/esm2022/core/components/notification/notification.component.mjs +3 -3
  65. package/esm2022/core/components/overlay-host/overlay-host.component.mjs +3 -3
  66. package/esm2022/core/components/settings-nav/settings-nav.component.mjs +3 -3
  67. package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +3 -3
  68. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +3 -3
  69. package/esm2022/core/components/user-menu/user-menu.component.mjs +3 -3
  70. package/esm2022/core/core.module.mjs +4 -4
  71. package/esm2022/core/data/data.module.mjs +6 -5
  72. package/esm2022/core/data/providers/base-data.service.mjs +7 -9
  73. package/esm2022/core/data/providers/data.service.mjs +3 -3
  74. package/esm2022/core/data/providers/fetch-adapter.mjs +3 -3
  75. package/esm2022/core/data/providers/interceptor.mjs +3 -3
  76. package/esm2022/core/data/server-config.mjs +3 -3
  77. package/esm2022/core/providers/alerts/alerts.service.mjs +3 -3
  78. package/esm2022/core/providers/auth/auth.service.mjs +3 -3
  79. package/esm2022/core/providers/breadcrumb/breadcrumb.service.mjs +3 -3
  80. package/esm2022/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +3 -3
  81. package/esm2022/core/providers/channel/channel.service.mjs +3 -3
  82. package/esm2022/core/providers/component-registry/component-registry.service.mjs +3 -3
  83. package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +3 -3
  84. package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +3 -3
  85. package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +3 -3
  86. package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +3 -3
  87. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +77 -29
  88. package/esm2022/core/providers/data-table/data-table-filter.mjs +31 -13
  89. package/esm2022/core/providers/guard/auth.guard.mjs +3 -3
  90. package/esm2022/core/providers/health-check/health-check.service.mjs +3 -3
  91. package/esm2022/core/providers/i18n/custom-message-format-compiler.mjs +3 -3
  92. package/esm2022/core/providers/i18n/i18n.service.mjs +3 -3
  93. package/esm2022/core/providers/job-queue/job-queue.service.mjs +3 -3
  94. package/esm2022/core/providers/local-storage/local-storage.service.mjs +4 -4
  95. package/esm2022/core/providers/modal/modal.service.mjs +3 -3
  96. package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +3 -3
  97. package/esm2022/core/providers/notification/notification.service.mjs +3 -3
  98. package/esm2022/core/providers/overlay-host/overlay-host.service.mjs +3 -3
  99. package/esm2022/core/providers/page/page.service.mjs +3 -3
  100. package/esm2022/core/public_api.mjs +5 -1
  101. package/esm2022/core/shared/components/action-bar/action-bar.component.mjs +9 -9
  102. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +3 -3
  103. package/esm2022/core/shared/components/address-form/address-form.component.mjs +3 -3
  104. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +3 -3
  105. package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +3 -3
  106. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +3 -3
  107. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +3 -3
  108. package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +3 -3
  109. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +3 -3
  110. package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +3 -3
  111. package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +3 -3
  112. package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +3 -3
  113. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +3 -3
  114. package/esm2022/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +3 -3
  115. package/esm2022/core/shared/components/card/card.component.mjs +6 -6
  116. package/esm2022/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +4 -4
  117. package/esm2022/core/shared/components/channel-badge/channel-badge.component.mjs +3 -3
  118. package/esm2022/core/shared/components/chart/chart.component.mjs +3 -3
  119. package/esm2022/core/shared/components/chip/chip.component.mjs +3 -3
  120. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +3 -3
  121. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +4 -4
  122. package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +3 -3
  123. package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +3 -3
  124. package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +3 -3
  125. package/esm2022/core/shared/components/customer-label/customer-label.component.mjs +3 -3
  126. package/esm2022/core/shared/components/data-table/data-table-column.component.mjs +3 -3
  127. package/esm2022/core/shared/components/data-table/data-table.component.mjs +3 -3
  128. package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +3 -3
  129. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +3 -3
  130. package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +3 -3
  131. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +36 -22
  132. package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +3 -3
  133. package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +5 -5
  134. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +69 -0
  135. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +78 -0
  136. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +79 -0
  137. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +20 -0
  138. package/esm2022/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +3 -3
  139. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +50 -35
  140. package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +3 -3
  141. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +3 -3
  142. package/esm2022/core/shared/components/dropdown/dropdown-item.directive.mjs +3 -3
  143. package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +3 -3
  144. package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +3 -3
  145. package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +3 -3
  146. package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +3 -3
  147. package/esm2022/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +3 -3
  148. package/esm2022/core/shared/components/entity-info/entity-info.component.mjs +3 -3
  149. package/esm2022/core/shared/components/extension-host/extension-host.component.mjs +3 -3
  150. package/esm2022/core/shared/components/extension-host/extension-host.service.mjs +3 -3
  151. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +3 -3
  152. package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +4 -4
  153. package/esm2022/core/shared/components/focal-point-control/focal-point-control.component.mjs +3 -3
  154. package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +3 -3
  155. package/esm2022/core/shared/components/form-field/form-field.component.mjs +3 -3
  156. package/esm2022/core/shared/components/form-item/form-item.component.mjs +3 -3
  157. package/esm2022/core/shared/components/formatted-address/formatted-address.component.mjs +3 -3
  158. package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +3 -3
  159. package/esm2022/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +3 -3
  160. package/esm2022/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +3 -3
  161. package/esm2022/core/shared/components/labeled-data/labeled-data.component.mjs +3 -3
  162. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +4 -4
  163. package/esm2022/core/shared/components/language-selector/language-selector.component.mjs +3 -3
  164. package/esm2022/core/shared/components/localized-text/localized-text.component.mjs +3 -3
  165. package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +3 -3
  166. package/esm2022/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +3 -3
  167. package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +3 -3
  168. package/esm2022/core/shared/components/modal-dialog/dialog-title.directive.mjs +3 -3
  169. package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +3 -3
  170. package/esm2022/core/shared/components/object-tree/object-tree.component.mjs +3 -3
  171. package/esm2022/core/shared/components/order-state-label/order-state-label.component.mjs +3 -3
  172. package/esm2022/core/shared/components/page/page.component.mjs +3 -3
  173. package/esm2022/core/shared/components/page-block/page-block.component.mjs +3 -3
  174. package/esm2022/core/shared/components/page-body/page-body.component.mjs +3 -3
  175. package/esm2022/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +3 -3
  176. package/esm2022/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +3 -3
  177. package/esm2022/core/shared/components/page-entity-info/page-entity-info.component.mjs +3 -3
  178. package/esm2022/core/shared/components/page-header/page-header.component.mjs +3 -3
  179. package/esm2022/core/shared/components/page-header-description/page-header-description.component.mjs +3 -3
  180. package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +4 -4
  181. package/esm2022/core/shared/components/page-title/page-title.component.mjs +3 -3
  182. package/esm2022/core/shared/components/pagination-controls/pagination-controls.component.mjs +3 -3
  183. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +3 -3
  184. package/esm2022/core/shared/components/product-search-input/product-search-input.component.mjs +3 -3
  185. package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +3 -3
  186. package/esm2022/core/shared/components/radio-card/radio-card-fieldset.component.mjs +3 -3
  187. package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +3 -3
  188. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +3 -3
  189. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +3 -3
  190. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +3 -3
  191. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +3 -3
  192. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +3 -3
  193. package/esm2022/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +3 -3
  194. package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +3 -3
  195. package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +3 -3
  196. package/esm2022/core/shared/components/simple-dialog/simple-dialog.component.mjs +3 -3
  197. package/esm2022/core/shared/components/split-view/split-view.component.mjs +3 -3
  198. package/esm2022/core/shared/components/split-view/split-view.directive.mjs +6 -6
  199. package/esm2022/core/shared/components/status-badge/status-badge.component.mjs +3 -3
  200. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +3 -3
  201. package/esm2022/core/shared/components/table-row-action/table-row-action.component.mjs +3 -3
  202. package/esm2022/core/shared/components/tag-selector/tag-selector.component.mjs +4 -4
  203. package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +3 -3
  204. package/esm2022/core/shared/components/title-input/title-input.component.mjs +3 -3
  205. package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +3 -3
  206. package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +4 -4
  207. package/esm2022/core/shared/directives/disabled.directive.mjs +3 -3
  208. package/esm2022/core/shared/directives/if-default-channel-active.directive.mjs +3 -3
  209. package/esm2022/core/shared/directives/if-directive-base.mjs +3 -3
  210. package/esm2022/core/shared/directives/if-multichannel.directive.mjs +3 -3
  211. package/esm2022/core/shared/directives/if-permissions.directive.mjs +3 -3
  212. package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +3 -3
  213. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +3 -3
  214. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +3 -3
  215. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +3 -3
  216. package/esm2022/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +3 -3
  217. package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +3 -3
  218. package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +3 -3
  219. package/esm2022/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +3 -3
  220. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +3 -3
  221. package/esm2022/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +3 -3
  222. package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +3 -3
  223. package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +3 -3
  224. package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +3 -3
  225. package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +3 -3
  226. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +3 -3
  227. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +3 -3
  228. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +3 -3
  229. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +3 -3
  230. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +3 -3
  231. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +9 -9
  232. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +3 -3
  233. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +3 -3
  234. package/esm2022/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +3 -3
  235. package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +3 -3
  236. package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +3 -3
  237. package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +3 -3
  238. package/esm2022/core/shared/pipes/asset-preview.pipe.mjs +3 -3
  239. package/esm2022/core/shared/pipes/channel-label.pipe.mjs +3 -3
  240. package/esm2022/core/shared/pipes/custom-field-description.pipe.mjs +3 -3
  241. package/esm2022/core/shared/pipes/custom-field-label.pipe.mjs +3 -3
  242. package/esm2022/core/shared/pipes/duration.pipe.mjs +3 -3
  243. package/esm2022/core/shared/pipes/file-size.pipe.mjs +3 -3
  244. package/esm2022/core/shared/pipes/has-permission.pipe.mjs +3 -3
  245. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +3 -3
  246. package/esm2022/core/shared/pipes/locale-currency-name.pipe.mjs +3 -3
  247. package/esm2022/core/shared/pipes/locale-currency.pipe.mjs +3 -3
  248. package/esm2022/core/shared/pipes/locale-date.pipe.mjs +3 -3
  249. package/esm2022/core/shared/pipes/locale-language-name.pipe.mjs +3 -3
  250. package/esm2022/core/shared/pipes/locale-region-name.pipe.mjs +3 -3
  251. package/esm2022/core/shared/pipes/sentence-case.pipe.mjs +3 -3
  252. package/esm2022/core/shared/pipes/sort.pipe.mjs +3 -3
  253. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +3 -3
  254. package/esm2022/core/shared/pipes/string-to-color.pipe.mjs +3 -3
  255. package/esm2022/core/shared/pipes/time-ago.pipe.mjs +3 -3
  256. package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +3 -3
  257. package/esm2022/core/shared/shared.module.mjs +18 -7
  258. package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +3 -3
  259. package/esm2022/customer/components/address-card/address-card.component.mjs +3 -3
  260. package/esm2022/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +3 -3
  261. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +3 -3
  262. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +3 -3
  263. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +3 -3
  264. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +5 -4
  265. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +3 -3
  266. package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +3 -3
  267. package/esm2022/customer/components/customer-history/customer-history.component.mjs +3 -3
  268. package/esm2022/customer/components/customer-list/customer-list.component.mjs +28 -27
  269. package/esm2022/customer/components/customer-status-label/customer-status-label.component.mjs +3 -3
  270. package/esm2022/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +3 -3
  271. package/esm2022/customer/customer.module.mjs +4 -4
  272. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +3 -3
  273. package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +3 -3
  274. package/esm2022/dashboard/dashboard.module.mjs +4 -4
  275. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +7 -7
  276. package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +3 -3
  277. package/esm2022/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +7 -7
  278. package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +7 -7
  279. package/esm2022/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +7 -7
  280. package/esm2022/login/components/login/login.component.mjs +3 -3
  281. package/esm2022/login/login.module.mjs +4 -4
  282. package/esm2022/login/providers/login.guard.mjs +3 -3
  283. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
  284. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +5 -4
  285. package/esm2022/marketing/marketing.module.mjs +4 -4
  286. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +3 -3
  287. package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +3 -3
  288. package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +3 -3
  289. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +3 -3
  290. package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +3 -3
  291. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +3 -3
  292. package/esm2022/order/components/fulfillment-card/fulfillment-card.component.mjs +3 -3
  293. package/esm2022/order/components/fulfillment-detail/fulfillment-detail.component.mjs +3 -3
  294. package/esm2022/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +3 -3
  295. package/esm2022/order/components/line-fulfillment/line-fulfillment.component.mjs +3 -3
  296. package/esm2022/order/components/line-refunds/line-refunds.component.mjs +3 -3
  297. package/esm2022/order/components/modification-detail/modification-detail.component.mjs +3 -3
  298. package/esm2022/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +3 -3
  299. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +3 -3
  300. package/esm2022/order/components/order-data-table/order-total-column.component.mjs +3 -3
  301. package/esm2022/order/components/order-detail/order-detail.component.mjs +3 -3
  302. package/esm2022/order/components/order-editor/order-editor.component.mjs +3 -3
  303. package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +3 -3
  304. package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +3 -3
  305. package/esm2022/order/components/order-history/order-history.component.mjs +3 -3
  306. package/esm2022/order/components/order-list/order-list.component.mjs +5 -4
  307. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +3 -3
  308. package/esm2022/order/components/order-process-graph/order-process-edge.component.mjs +3 -3
  309. package/esm2022/order/components/order-process-graph/order-process-graph.component.mjs +3 -3
  310. package/esm2022/order/components/order-process-graph/order-process-node.component.mjs +3 -3
  311. package/esm2022/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +3 -3
  312. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +3 -3
  313. package/esm2022/order/components/order-table/order-table.component.mjs +3 -3
  314. package/esm2022/order/components/payment-detail/payment-detail.component.mjs +3 -3
  315. package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +3 -3
  316. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +3 -3
  317. package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +3 -3
  318. package/esm2022/order/components/select-address-dialog/select-address-dialog.component.mjs +3 -3
  319. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +3 -3
  320. package/esm2022/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +3 -3
  321. package/esm2022/order/components/seller-orders-card/seller-orders-card.component.mjs +3 -3
  322. package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +3 -3
  323. package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +3 -3
  324. package/esm2022/order/order.module.mjs +4 -4
  325. package/esm2022/order/providers/order-transition.service.mjs +3 -3
  326. package/esm2022/order/providers/routing/order-resolver.mjs +3 -3
  327. package/esm2022/order/providers/routing/order.guard.mjs +3 -3
  328. package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +3 -3
  329. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +3 -3
  330. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +5 -4
  331. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +3 -3
  332. package/esm2022/settings/components/channel-list/channel-list.component.mjs +5 -4
  333. package/esm2022/settings/components/country-detail/country-detail.component.mjs +3 -3
  334. package/esm2022/settings/components/country-list/country-list.component.mjs +6 -5
  335. package/esm2022/settings/components/global-settings/global-settings.component.mjs +3 -3
  336. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +3 -3
  337. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +5 -4
  338. package/esm2022/settings/components/permission-grid/permission-grid.component.mjs +3 -3
  339. package/esm2022/settings/components/profile/profile.component.mjs +3 -3
  340. package/esm2022/settings/components/role-detail/role-detail.component.mjs +3 -3
  341. package/esm2022/settings/components/role-list/role-list.component.mjs +5 -4
  342. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +3 -3
  343. package/esm2022/settings/components/seller-list/seller-list.component.mjs +5 -4
  344. package/esm2022/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +3 -3
  345. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +3 -3
  346. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +5 -4
  347. package/esm2022/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +3 -3
  348. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +3 -3
  349. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +5 -4
  350. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +3 -3
  351. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +5 -4
  352. package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +3 -3
  353. package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +3 -3
  354. package/esm2022/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +3 -3
  355. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +3 -3
  356. package/esm2022/settings/components/zone-list/zone-list.component.mjs +5 -4
  357. package/esm2022/settings/components/zone-member-list/zone-member-controls.directive.mjs +3 -3
  358. package/esm2022/settings/components/zone-member-list/zone-member-list-header.directive.mjs +3 -3
  359. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +3 -3
  360. package/esm2022/settings/providers/routing/profile-resolver.mjs +3 -3
  361. package/esm2022/settings/settings.module.mjs +4 -4
  362. package/esm2022/system/components/health-check/health-check.component.mjs +3 -3
  363. package/esm2022/system/components/job-list/job-list.component.mjs +3 -3
  364. package/esm2022/system/components/job-state-label/job-state-label.component.mjs +3 -3
  365. package/esm2022/system/system.module.mjs +4 -4
  366. package/fesm2022/vendure-admin-ui-catalog.mjs +117 -130
  367. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  368. package/fesm2022/vendure-admin-ui-core.mjs +1036 -739
  369. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  370. package/fesm2022/vendure-admin-ui-customer.mjs +68 -66
  371. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  372. package/fesm2022/vendure-admin-ui-dashboard.mjs +41 -41
  373. package/fesm2022/vendure-admin-ui-login.mjs +10 -10
  374. package/fesm2022/vendure-admin-ui-login.mjs.map +1 -1
  375. package/fesm2022/vendure-admin-ui-marketing.mjs +11 -10
  376. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  377. package/fesm2022/vendure-admin-ui-order.mjs +128 -127
  378. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  379. package/fesm2022/vendure-admin-ui-settings.mjs +114 -104
  380. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  381. package/fesm2022/vendure-admin-ui-system.mjs +13 -13
  382. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  383. package/package.json +45 -45
  384. package/static/i18n-messages/ar.json +789 -777
  385. package/static/i18n-messages/cs.json +13 -1
  386. package/static/i18n-messages/de.json +13 -1
  387. package/static/i18n-messages/en.json +13 -1
  388. package/static/i18n-messages/es.json +13 -1
  389. package/static/i18n-messages/fr.json +13 -1
  390. package/static/i18n-messages/he.json +13 -1
  391. package/static/i18n-messages/it.json +13 -1
  392. package/static/i18n-messages/pl.json +13 -1
  393. package/static/i18n-messages/pt_BR.json +13 -1
  394. package/static/i18n-messages/pt_PT.json +13 -1
  395. package/static/i18n-messages/ru.json +13 -1
  396. package/static/i18n-messages/uk.json +13 -1
  397. package/static/i18n-messages/zh_Hans.json +13 -1
  398. package/static/i18n-messages/zh_Hant.json +13 -1
  399. package/static/styles/global/_overrides.scss +4 -0
  400. package/static/styles/theme/dark.scss +1 -0
  401. package/static/styles/theme/default.scss +1 -0
  402. package/static/theme.min.css +1 -1
@@ -9,16 +9,17 @@ import * as i3 from "@angular/common";
9
9
  import * as i4 from "@angular/forms";
10
10
  import * as i5 from "@angular/cdk/a11y";
11
11
  import * as i6 from "../currency-input/currency-input.component";
12
- import * as i7 from "../form-field/form-field-control.directive";
13
- import * as i8 from "../dropdown/dropdown.component";
14
- import * as i9 from "../dropdown/dropdown-menu.component";
15
- import * as i10 from "../dropdown/dropdown-trigger.directive";
16
- import * as i11 from "../dropdown/dropdown-item.directive";
17
- import * as i12 from "../datetime-picker/datetime-picker.component";
18
- import * as i13 from "../data-table-filter-label/data-table-filter-label.component";
19
- import * as i14 from "./custom-filter-component.directive";
20
- import * as i15 from "../localized-text/localized-text.component";
21
- import * as i16 from "@ngx-translate/core";
12
+ import * as i7 from "../form-field/form-field.component";
13
+ import * as i8 from "../form-field/form-field-control.directive";
14
+ import * as i9 from "../dropdown/dropdown.component";
15
+ import * as i10 from "../dropdown/dropdown-menu.component";
16
+ import * as i11 from "../dropdown/dropdown-trigger.directive";
17
+ import * as i12 from "../dropdown/dropdown-item.directive";
18
+ import * as i13 from "../datetime-picker/datetime-picker.component";
19
+ import * as i14 from "../data-table-filter-label/data-table-filter-label.component";
20
+ import * as i15 from "./custom-filter-component.directive";
21
+ import * as i16 from "../localized-text/localized-text.component";
22
+ import * as i17 from "@ngx-translate/core";
22
23
  export class DataTableFiltersComponent {
23
24
  set customComponentHost(content) {
24
25
  this._customComponentHost = content;
@@ -53,6 +54,17 @@ export class DataTableFiltersComponent {
53
54
  }
54
55
  selectFilter(filter, value) {
55
56
  this.selectedFilter = filter;
57
+ if (filter.isId()) {
58
+ this.formControl = new FormGroup({
59
+ operator: new FormControl(value?.operator ?? 'eq'),
60
+ term: new FormControl(value?.term ?? ''),
61
+ }, control => {
62
+ if (!control.value.term) {
63
+ return { noSelection: true };
64
+ }
65
+ return null;
66
+ });
67
+ }
56
68
  if (filter.isText()) {
57
69
  this.formControl = new FormGroup({
58
70
  operator: new FormControl(value?.operator ?? 'contains'),
@@ -69,7 +81,7 @@ export class DataTableFiltersComponent {
69
81
  operator: new FormControl(value?.operator ?? 'gt'),
70
82
  amount: new FormControl(value?.amount ?? ''),
71
83
  }, control => {
72
- if (!control.value.amount) {
84
+ if (control.value.amount == null) {
73
85
  return { noSelection: true };
74
86
  }
75
87
  return null;
@@ -83,14 +95,18 @@ export class DataTableFiltersComponent {
83
95
  }
84
96
  else if (filter.isDateRange()) {
85
97
  this.formControl = new FormGroup({
98
+ mode: new FormControl('relative'),
99
+ relativeValue: new FormControl(value?.relativeValue ?? 30),
100
+ relativeUnit: new FormControl(value?.relativeUnit ?? 'day'),
86
101
  start: new FormControl(value?.start ?? null),
87
102
  end: new FormControl(value?.end ?? null),
88
103
  }, control => {
89
104
  const val = control.value;
90
- if (val.start && val.end && val.start > val.end) {
105
+ const mode = val.mode;
106
+ if (mode === 'range' && val.start && val.end && val.start > val.end) {
91
107
  return { invalidRange: true };
92
108
  }
93
- if (!val.start && !val.end) {
109
+ if (mode === 'range' && !val.start && !val.end) {
94
110
  return { noSelection: true };
95
111
  }
96
112
  return null;
@@ -115,25 +131,18 @@ export class DataTableFiltersComponent {
115
131
  value = !!this.formControl.value;
116
132
  break;
117
133
  case 'dateRange': {
118
- let dateOperators;
134
+ const mode = this.formControl.value.mode ?? 'relative';
135
+ const relativeValue = this.formControl.value.relativeValue ?? 30;
136
+ const relativeUnit = this.formControl.value.relativeUnit ?? 'day';
119
137
  const start = this.formControl.value.start ?? undefined;
120
138
  const end = this.formControl.value.end ?? undefined;
121
- if (start && end) {
122
- dateOperators = {
123
- between: { start, end },
124
- };
125
- }
126
- else if (start) {
127
- dateOperators = {
128
- after: start,
129
- };
130
- }
131
- else {
132
- dateOperators = {
133
- before: end,
134
- };
135
- }
136
- value = { start, end };
139
+ value = {
140
+ mode,
141
+ relativeValue,
142
+ relativeUnit,
143
+ start,
144
+ end,
145
+ };
137
146
  break;
138
147
  }
139
148
  case 'number':
@@ -154,6 +163,12 @@ export class DataTableFiltersComponent {
154
163
  term: this.formControl.value.term,
155
164
  };
156
165
  break;
166
+ case 'id':
167
+ value = {
168
+ operator: this.formControl.value.operator,
169
+ term: this.formControl.value.term,
170
+ };
171
+ break;
157
172
  case 'custom':
158
173
  value = this.customComponent?.instance.formControl.value;
159
174
  this.formControl.setValue(value);
@@ -178,12 +193,12 @@ export class DataTableFiltersComponent {
178
193
  this.filters.removeActiveFilterAtIndex(index);
179
194
  }
180
195
  }
181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DataTableFiltersComponent, deps: [{ token: i1.I18nService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
182
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: DataTableFiltersComponent, selector: "vdr-data-table-filters", inputs: { filters: "filters", filterWithValue: "filterWithValue" }, host: { listeners: { "window:keydown.f": "onFKeyPress($event)" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "customComponentHost", first: true, predicate: ["customComponentHost"], descendants: true, read: CustomFilterComponentDirective }], ngImport: i0, template: "<vdr-dropdown [manualToggle]=\"true\" #dropdown>\r\n <div class=\"filter-button\" [ngClass]=\"state\">\r\n <clr-icon shape=\"plus\" size=\"12\" *ngIf=\"state === 'new'\"></clr-icon>\r\n <button *ngIf=\"state === 'active'\" class=\"remove\" (click)=\"deactivate()\">\r\n <clr-icon shape=\"times\" size=\"12\"></clr-icon>\r\n </button>\r\n <button vdrDropdownTrigger class=\"\">\r\n <span *ngIf=\"state === 'new'\">{{ 'common.add-filter' | translate }} <span class=\"filter-hotkey\">f</span></span>\r\n <span *ngIf=\"state === 'active'\">\r\n <vdr-data-table-filter-label\r\n [filterWithValue]=\"filterWithValue\"\r\n ></vdr-data-table-filter-label>\r\n </span>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n </div>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <div *ngIf=\"!selectedFilter\">\r\n <div class=\"filter-heading\">Filter by:</div>\r\n <div *ngFor=\"let filter of filters.getFilters()\">\r\n <button vdrDropdownItem (click)=\"selectFilter(filter)\">\r\n <vdr-localized-text [text]=\"filter?.label\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-heading\" *ngIf=\"selectedFilter\">\r\n Filter by <vdr-localized-text [text]=\"selectedFilter.label\" />:\r\n </div>\r\n <div class=\"mx-2 mt-1\">\r\n <div vdrCustomFilterComponentHost #customComponentHost></div>\r\n </div>\r\n <form *ngIf=\"selectedFilter\" class=\"\" [cdkTrapFocus]=\"true\" [cdkTrapFocusAutoCapture]=\"true\">\r\n <ng-container *ngIf=\"selectedFilter.type.kind !== 'custom'\">\r\n <div class=\"mx-2 mt-1\" [ngSwitch]=\"selectedFilter.type.kind\">\r\n <div *ngSwitchCase=\"'select'\" [formGroup]=\"formControl\">\r\n <label *ngFor=\"let option of $any(selectedFilter.type).options; index as i\">\r\n <input type=\"checkbox\" [formControlName]=\"i\" />\r\n <span>{{ option.label | translate }}</span>\r\n </label>\r\n </div>\r\n <div *ngSwitchCase=\"'boolean'\">\r\n <label\r\n ><input type=\"checkbox\" [formControl]=\"formControl\" clrToggle />\r\n <span *ngIf=\"formControl.value\">{{ 'common.boolean-true' | translate }}</span>\r\n <span *ngIf=\"!formControl.value\">{{ 'common.boolean-false' | translate }}</span>\r\n </label>\r\n </div>\r\n <div *ngSwitchCase=\"'text'\">\r\n <div [formGroup]=\"formControl\">\r\n <div>\r\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\r\n <option value=\"contains\">\r\n {{ 'common.operator-contains' | translate }}\r\n </option>\r\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\r\n <option value=\"notContains\">\r\n {{ 'common.operator-not-contains' | translate }}\r\n </option>\r\n <option value=\"notEq\">{{ 'common.operator-not-eq' | translate }}</option>\r\n <option value=\"regex\">{{ 'common.operator-regex' | translate }}</option>\r\n </select>\r\n </div>\r\n <input type=\"text\" formControlName=\"term\" />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'number'\">\r\n <div [formGroup]=\"formControl\">\r\n <div>\r\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\r\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\r\n <option value=\"gt\">{{ 'common.operator-gt' | translate }}</option>\r\n <option value=\"lt\">{{ 'common.operator-lt' | translate }}</option>\r\n </select>\r\n </div>\r\n <input\r\n *ngIf=\"$any(selectedFilter.type).inputType !== 'currency'\"\r\n type=\"text\"\r\n formControlName=\"amount\"\r\n />\r\n <vdr-currency-input\r\n *ngIf=\"$any(selectedFilter.type).inputType === 'currency'\"\r\n formControlName=\"amount\"\r\n />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'dateRange'\">\r\n <div [formGroup]=\"formControl\">\r\n <label>\r\n <div>{{ 'common.start-date' | translate }}</div>\r\n </label>\r\n <vdr-datetime-picker formControlName=\"start\"></vdr-datetime-picker>\r\n <label>\r\n <div>{{ 'common.end-date' | translate }}</div>\r\n </label>\r\n <vdr-datetime-picker formControlName=\"end\"></vdr-datetime-picker>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"apply-wrapper mt-2\">\r\n <button class=\"button\" (click)=\"activate()\" [disabled]=\"!formControl?.valid\">\r\n <span>{{ 'common.apply' | translate }}</span>\r\n <clr-icon shape=\"check\"></clr-icon>\r\n </button>\r\n </div>\r\n </form>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:block}.filter-button{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;padding:0 var(--space-unit);height:calc(var(--space-unit) * 3);font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);background-color:var(--color-button-small-bg);color:var(--color-button-small-text)}.filter-button>button{border:none;gap:12px;cursor:pointer;background-color:transparent;display:flex;align-items:center;height:calc(var(--space-unit) * 2);border-radius:var(--border-radius-lg);color:var(--color-button-small-text)}.filter-button.active{background-color:var(--color-primary-700);color:var(--color-primary-100)}.filter-button.active>button{color:var(--color-primary-100)}label{display:flex;align-items:center;gap:var(--space-unit);margin-bottom:calc(var(--space-unit) * .5)}.filter-heading{font-size:var(--font-size-xs);text-transform:uppercase;color:var(--color-weight-600);margin:0 calc(var(--space-unit) * 2)}.apply-wrapper{display:flex;justify-content:flex-end;padding-inline-end:calc(var(--space-unit) * 2)}.filter-hotkey{font-size:var(--font-size-xs);color:var(--color-weight-500);border:1px solid var(--color-weight-200);background-color:var(--color-weight-100);border-radius:var(--border-radius);padding:0 3px;text-transform:uppercase;margin-inline-start:3px}\n"], dependencies: [{ kind: "directive", type: i2.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i2.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.CurrencyInputComponent, selector: "vdr-currency-input", inputs: ["disabled", "readonly", "value", "currencyCode"], outputs: ["valueChange"] }, { kind: "directive", type: i7.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i8.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i9.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i10.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i11.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i12.DatetimePickerComponent, selector: "vdr-datetime-picker", inputs: ["yearRange", "weekStartDay", "timeGranularityInterval", "min", "max", "readonly"] }, { kind: "component", type: i13.DataTableFilterLabelComponent, selector: "vdr-data-table-filter-label", inputs: ["filterWithValue"] }, { kind: "directive", type: i14.CustomFilterComponentDirective, selector: "[vdrCustomFilterComponentHost]" }, { kind: "component", type: i15.LocalizedTextComponent, selector: "vdr-localized-text", inputs: ["text"] }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DataTableFiltersComponent, deps: [{ token: i1.I18nService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: DataTableFiltersComponent, selector: "vdr-data-table-filters", inputs: { filters: "filters", filterWithValue: "filterWithValue" }, host: { listeners: { "window:keydown.f": "onFKeyPress($event)" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "customComponentHost", first: true, predicate: ["customComponentHost"], descendants: true, read: CustomFilterComponentDirective }], ngImport: i0, template: "<vdr-dropdown [manualToggle]=\"true\" #dropdown>\n <div class=\"filter-button\" [ngClass]=\"state\">\n <clr-icon shape=\"plus\" size=\"12\" *ngIf=\"state === 'new'\"></clr-icon>\n <button *ngIf=\"state === 'active'\" class=\"remove\" (click)=\"deactivate()\">\n <clr-icon shape=\"times\" size=\"12\"></clr-icon>\n </button>\n <button vdrDropdownTrigger class=\"\">\n <span *ngIf=\"state === 'new'\"\n >{{ 'common.add-filter' | translate }} <span class=\"filter-hotkey\">f</span></span\n >\n <span *ngIf=\"state === 'active'\">\n <vdr-data-table-filter-label\n [filterWithValue]=\"filterWithValue\"\n ></vdr-data-table-filter-label>\n </span>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n </div>\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\n <div *ngIf=\"!selectedFilter\">\n <div class=\"filter-heading\">Filter by:</div>\n <div *ngFor=\"let filter of filters.getFilters()\">\n <button vdrDropdownItem (click)=\"selectFilter(filter)\">\n <vdr-localized-text [text]=\"filter?.label\" />\n </button>\n </div>\n </div>\n\n <div class=\"filter-heading\" *ngIf=\"selectedFilter\">\n Filter by <vdr-localized-text [text]=\"selectedFilter.label\" />:\n </div>\n <div class=\"mx-2 mt-1\">\n <div vdrCustomFilterComponentHost #customComponentHost></div>\n </div>\n <form *ngIf=\"selectedFilter\" class=\"\" [cdkTrapFocus]=\"true\" [cdkTrapFocusAutoCapture]=\"true\">\n <ng-container *ngIf=\"selectedFilter.type.kind !== 'custom'\">\n <div class=\"mx-2 mt-1\" [ngSwitch]=\"selectedFilter.type.kind\">\n <div *ngSwitchCase=\"'select'\" [formGroup]=\"formControl\">\n <label *ngFor=\"let option of $any(selectedFilter.type).options; index as i\">\n <input type=\"checkbox\" [formControlName]=\"i\" />\n <span>{{ option.label | translate }}</span>\n </label>\n </div>\n <div *ngSwitchCase=\"'boolean'\">\n <label\n ><input type=\"checkbox\" [formControl]=\"formControl\" clrToggle />\n <span *ngIf=\"formControl.value\">{{ 'common.boolean-true' | translate }}</span>\n <span *ngIf=\"!formControl.value\">{{ 'common.boolean-false' | translate }}</span>\n </label>\n </div>\n <div *ngSwitchCase=\"'text'\">\n <div [formGroup]=\"formControl\">\n <div>\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\n <option value=\"contains\">\n {{ 'common.operator-contains' | translate }}\n </option>\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\n <option value=\"notContains\">\n {{ 'common.operator-not-contains' | translate }}\n </option>\n <option value=\"notEq\">{{ 'common.operator-not-eq' | translate }}</option>\n <option value=\"regex\">{{ 'common.operator-regex' | translate }}</option>\n </select>\n </div>\n <input type=\"text\" formControlName=\"term\" />\n </div>\n </div>\n <div *ngSwitchCase=\"'id'\">\n <div [formGroup]=\"formControl\">\n <div>\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\n <option value=\"notEq\">{{ 'common.operator-not-eq' | translate }}</option>\n </select>\n </div>\n <input type=\"text\" formControlName=\"term\" />\n </div>\n </div>\n <div *ngSwitchCase=\"'number'\">\n <div [formGroup]=\"formControl\">\n <div>\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\n <option value=\"gt\">{{ 'common.operator-gt' | translate }}</option>\n <option value=\"lt\">{{ 'common.operator-lt' | translate }}</option>\n </select>\n </div>\n <input\n *ngIf=\"$any(selectedFilter.type).inputType !== 'currency'\"\n type=\"text\"\n formControlName=\"amount\"\n />\n <vdr-currency-input\n *ngIf=\"$any(selectedFilter.type).inputType === 'currency'\"\n formControlName=\"amount\"\n />\n </div>\n </div>\n <div *ngSwitchCase=\"'dateRange'\">\n <div [formGroup]=\"formControl\">\n <vdr-form-field [label]=\"'common.data-table-filter-date-mode' | translate\">\n <select name=\"mode\" formControlName=\"mode\" class=\"mb-1\">\n <option value=\"relative\">\n {{ 'common.data-table-filter-date-relative' | translate }}\n </option>\n <option value=\"range\">\n {{ 'common.data-table-filter-date-range' | translate }}\n </option>\n </select>\n </vdr-form-field>\n <ng-container *ngIf=\"formControl.get('mode')?.value === 'relative'\">\n <div class=\"flex mt-2\">\n <vdr-form-field class=\"mr-1\">\n <input type=\"number\" min=\"1\" formControlName=\"relativeValue\" />\n </vdr-form-field>\n <vdr-form-field>\n <select name=\"mode\" formControlName=\"relativeUnit\">\n <option value=\"day\">{{ 'datetime.day' | translate }}</option>\n <option value=\"month\">{{ 'datetime.month' | translate }}</option>\n <option value=\"year\">{{ 'datetime.year' | translate }}</option>\n </select>\n </vdr-form-field>\n </div>\n </ng-container>\n <ng-container *ngIf=\"formControl.get('mode')?.value === 'range'\">\n <label>\n <div>{{ 'common.start-date' | translate }}</div>\n </label>\n <vdr-datetime-picker formControlName=\"start\"></vdr-datetime-picker>\n <label>\n <div>{{ 'common.end-date' | translate }}</div>\n </label>\n <vdr-datetime-picker formControlName=\"end\"></vdr-datetime-picker>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"apply-wrapper mt-2\">\n <button class=\"button\" (click)=\"activate()\" [disabled]=\"!formControl?.valid\">\n <span>{{ 'common.apply' | translate }}</span>\n <clr-icon shape=\"check\"></clr-icon>\n </button>\n </div>\n </form>\n </vdr-dropdown-menu>\n</vdr-dropdown>\n", styles: [":host{display:block}.filter-button{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;padding:0 var(--space-unit);height:calc(var(--space-unit) * 3);font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);background-color:var(--color-button-small-bg);color:var(--color-button-small-text)}.filter-button>button{border:none;gap:12px;cursor:pointer;background-color:transparent;display:flex;align-items:center;height:calc(var(--space-unit) * 2);border-radius:var(--border-radius-lg);color:var(--color-button-small-text)}.filter-button.active{background-color:var(--color-primary-700);color:var(--color-primary-100)}.filter-button.active>button{color:var(--color-primary-100)}label{display:flex;align-items:center;gap:var(--space-unit);margin-bottom:calc(var(--space-unit) * .5)}.filter-heading{font-size:var(--font-size-xs);text-transform:uppercase;color:var(--color-weight-600);margin:0 calc(var(--space-unit) * 2)}.apply-wrapper{display:flex;justify-content:flex-end;padding-inline-end:calc(var(--space-unit) * 2)}.filter-hotkey{font-size:var(--font-size-xs);color:var(--color-weight-500);border:1px solid var(--color-weight-200);background-color:var(--color-weight-100);border-radius:var(--border-radius);padding:0 3px;text-transform:uppercase;margin-inline-start:3px}\n"], dependencies: [{ kind: "directive", type: i2.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i2.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.CurrencyInputComponent, selector: "vdr-currency-input", inputs: ["disabled", "readonly", "value", "currencyCode"], outputs: ["valueChange"] }, { kind: "component", type: i7.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i8.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i9.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i10.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i11.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i12.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i13.DatetimePickerComponent, selector: "vdr-datetime-picker", inputs: ["yearRange", "weekStartDay", "timeGranularityInterval", "min", "max", "readonly"] }, { kind: "component", type: i14.DataTableFilterLabelComponent, selector: "vdr-data-table-filter-label", inputs: ["filterWithValue"] }, { kind: "directive", type: i15.CustomFilterComponentDirective, selector: "[vdrCustomFilterComponentHost]" }, { kind: "component", type: i16.LocalizedTextComponent, selector: "vdr-localized-text", inputs: ["text"] }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
183
198
  }
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DataTableFiltersComponent, decorators: [{
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DataTableFiltersComponent, decorators: [{
185
200
  type: Component,
186
- args: [{ selector: 'vdr-data-table-filters', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-dropdown [manualToggle]=\"true\" #dropdown>\r\n <div class=\"filter-button\" [ngClass]=\"state\">\r\n <clr-icon shape=\"plus\" size=\"12\" *ngIf=\"state === 'new'\"></clr-icon>\r\n <button *ngIf=\"state === 'active'\" class=\"remove\" (click)=\"deactivate()\">\r\n <clr-icon shape=\"times\" size=\"12\"></clr-icon>\r\n </button>\r\n <button vdrDropdownTrigger class=\"\">\r\n <span *ngIf=\"state === 'new'\">{{ 'common.add-filter' | translate }} <span class=\"filter-hotkey\">f</span></span>\r\n <span *ngIf=\"state === 'active'\">\r\n <vdr-data-table-filter-label\r\n [filterWithValue]=\"filterWithValue\"\r\n ></vdr-data-table-filter-label>\r\n </span>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n </div>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <div *ngIf=\"!selectedFilter\">\r\n <div class=\"filter-heading\">Filter by:</div>\r\n <div *ngFor=\"let filter of filters.getFilters()\">\r\n <button vdrDropdownItem (click)=\"selectFilter(filter)\">\r\n <vdr-localized-text [text]=\"filter?.label\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-heading\" *ngIf=\"selectedFilter\">\r\n Filter by <vdr-localized-text [text]=\"selectedFilter.label\" />:\r\n </div>\r\n <div class=\"mx-2 mt-1\">\r\n <div vdrCustomFilterComponentHost #customComponentHost></div>\r\n </div>\r\n <form *ngIf=\"selectedFilter\" class=\"\" [cdkTrapFocus]=\"true\" [cdkTrapFocusAutoCapture]=\"true\">\r\n <ng-container *ngIf=\"selectedFilter.type.kind !== 'custom'\">\r\n <div class=\"mx-2 mt-1\" [ngSwitch]=\"selectedFilter.type.kind\">\r\n <div *ngSwitchCase=\"'select'\" [formGroup]=\"formControl\">\r\n <label *ngFor=\"let option of $any(selectedFilter.type).options; index as i\">\r\n <input type=\"checkbox\" [formControlName]=\"i\" />\r\n <span>{{ option.label | translate }}</span>\r\n </label>\r\n </div>\r\n <div *ngSwitchCase=\"'boolean'\">\r\n <label\r\n ><input type=\"checkbox\" [formControl]=\"formControl\" clrToggle />\r\n <span *ngIf=\"formControl.value\">{{ 'common.boolean-true' | translate }}</span>\r\n <span *ngIf=\"!formControl.value\">{{ 'common.boolean-false' | translate }}</span>\r\n </label>\r\n </div>\r\n <div *ngSwitchCase=\"'text'\">\r\n <div [formGroup]=\"formControl\">\r\n <div>\r\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\r\n <option value=\"contains\">\r\n {{ 'common.operator-contains' | translate }}\r\n </option>\r\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\r\n <option value=\"notContains\">\r\n {{ 'common.operator-not-contains' | translate }}\r\n </option>\r\n <option value=\"notEq\">{{ 'common.operator-not-eq' | translate }}</option>\r\n <option value=\"regex\">{{ 'common.operator-regex' | translate }}</option>\r\n </select>\r\n </div>\r\n <input type=\"text\" formControlName=\"term\" />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'number'\">\r\n <div [formGroup]=\"formControl\">\r\n <div>\r\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\r\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\r\n <option value=\"gt\">{{ 'common.operator-gt' | translate }}</option>\r\n <option value=\"lt\">{{ 'common.operator-lt' | translate }}</option>\r\n </select>\r\n </div>\r\n <input\r\n *ngIf=\"$any(selectedFilter.type).inputType !== 'currency'\"\r\n type=\"text\"\r\n formControlName=\"amount\"\r\n />\r\n <vdr-currency-input\r\n *ngIf=\"$any(selectedFilter.type).inputType === 'currency'\"\r\n formControlName=\"amount\"\r\n />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'dateRange'\">\r\n <div [formGroup]=\"formControl\">\r\n <label>\r\n <div>{{ 'common.start-date' | translate }}</div>\r\n </label>\r\n <vdr-datetime-picker formControlName=\"start\"></vdr-datetime-picker>\r\n <label>\r\n <div>{{ 'common.end-date' | translate }}</div>\r\n </label>\r\n <vdr-datetime-picker formControlName=\"end\"></vdr-datetime-picker>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"apply-wrapper mt-2\">\r\n <button class=\"button\" (click)=\"activate()\" [disabled]=\"!formControl?.valid\">\r\n <span>{{ 'common.apply' | translate }}</span>\r\n <clr-icon shape=\"check\"></clr-icon>\r\n </button>\r\n </div>\r\n </form>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:block}.filter-button{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;padding:0 var(--space-unit);height:calc(var(--space-unit) * 3);font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);background-color:var(--color-button-small-bg);color:var(--color-button-small-text)}.filter-button>button{border:none;gap:12px;cursor:pointer;background-color:transparent;display:flex;align-items:center;height:calc(var(--space-unit) * 2);border-radius:var(--border-radius-lg);color:var(--color-button-small-text)}.filter-button.active{background-color:var(--color-primary-700);color:var(--color-primary-100)}.filter-button.active>button{color:var(--color-primary-100)}label{display:flex;align-items:center;gap:var(--space-unit);margin-bottom:calc(var(--space-unit) * .5)}.filter-heading{font-size:var(--font-size-xs);text-transform:uppercase;color:var(--color-weight-600);margin:0 calc(var(--space-unit) * 2)}.apply-wrapper{display:flex;justify-content:flex-end;padding-inline-end:calc(var(--space-unit) * 2)}.filter-hotkey{font-size:var(--font-size-xs);color:var(--color-weight-500);border:1px solid var(--color-weight-200);background-color:var(--color-weight-100);border-radius:var(--border-radius);padding:0 3px;text-transform:uppercase;margin-inline-start:3px}\n"] }]
201
+ args: [{ selector: 'vdr-data-table-filters', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-dropdown [manualToggle]=\"true\" #dropdown>\n <div class=\"filter-button\" [ngClass]=\"state\">\n <clr-icon shape=\"plus\" size=\"12\" *ngIf=\"state === 'new'\"></clr-icon>\n <button *ngIf=\"state === 'active'\" class=\"remove\" (click)=\"deactivate()\">\n <clr-icon shape=\"times\" size=\"12\"></clr-icon>\n </button>\n <button vdrDropdownTrigger class=\"\">\n <span *ngIf=\"state === 'new'\"\n >{{ 'common.add-filter' | translate }} <span class=\"filter-hotkey\">f</span></span\n >\n <span *ngIf=\"state === 'active'\">\n <vdr-data-table-filter-label\n [filterWithValue]=\"filterWithValue\"\n ></vdr-data-table-filter-label>\n </span>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n </div>\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\n <div *ngIf=\"!selectedFilter\">\n <div class=\"filter-heading\">Filter by:</div>\n <div *ngFor=\"let filter of filters.getFilters()\">\n <button vdrDropdownItem (click)=\"selectFilter(filter)\">\n <vdr-localized-text [text]=\"filter?.label\" />\n </button>\n </div>\n </div>\n\n <div class=\"filter-heading\" *ngIf=\"selectedFilter\">\n Filter by <vdr-localized-text [text]=\"selectedFilter.label\" />:\n </div>\n <div class=\"mx-2 mt-1\">\n <div vdrCustomFilterComponentHost #customComponentHost></div>\n </div>\n <form *ngIf=\"selectedFilter\" class=\"\" [cdkTrapFocus]=\"true\" [cdkTrapFocusAutoCapture]=\"true\">\n <ng-container *ngIf=\"selectedFilter.type.kind !== 'custom'\">\n <div class=\"mx-2 mt-1\" [ngSwitch]=\"selectedFilter.type.kind\">\n <div *ngSwitchCase=\"'select'\" [formGroup]=\"formControl\">\n <label *ngFor=\"let option of $any(selectedFilter.type).options; index as i\">\n <input type=\"checkbox\" [formControlName]=\"i\" />\n <span>{{ option.label | translate }}</span>\n </label>\n </div>\n <div *ngSwitchCase=\"'boolean'\">\n <label\n ><input type=\"checkbox\" [formControl]=\"formControl\" clrToggle />\n <span *ngIf=\"formControl.value\">{{ 'common.boolean-true' | translate }}</span>\n <span *ngIf=\"!formControl.value\">{{ 'common.boolean-false' | translate }}</span>\n </label>\n </div>\n <div *ngSwitchCase=\"'text'\">\n <div [formGroup]=\"formControl\">\n <div>\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\n <option value=\"contains\">\n {{ 'common.operator-contains' | translate }}\n </option>\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\n <option value=\"notContains\">\n {{ 'common.operator-not-contains' | translate }}\n </option>\n <option value=\"notEq\">{{ 'common.operator-not-eq' | translate }}</option>\n <option value=\"regex\">{{ 'common.operator-regex' | translate }}</option>\n </select>\n </div>\n <input type=\"text\" formControlName=\"term\" />\n </div>\n </div>\n <div *ngSwitchCase=\"'id'\">\n <div [formGroup]=\"formControl\">\n <div>\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\n <option value=\"notEq\">{{ 'common.operator-not-eq' | translate }}</option>\n </select>\n </div>\n <input type=\"text\" formControlName=\"term\" />\n </div>\n </div>\n <div *ngSwitchCase=\"'number'\">\n <div [formGroup]=\"formControl\">\n <div>\n <select name=\"options\" formControlName=\"operator\" class=\"mb-1\">\n <option value=\"eq\">{{ 'common.operator-eq' | translate }}</option>\n <option value=\"gt\">{{ 'common.operator-gt' | translate }}</option>\n <option value=\"lt\">{{ 'common.operator-lt' | translate }}</option>\n </select>\n </div>\n <input\n *ngIf=\"$any(selectedFilter.type).inputType !== 'currency'\"\n type=\"text\"\n formControlName=\"amount\"\n />\n <vdr-currency-input\n *ngIf=\"$any(selectedFilter.type).inputType === 'currency'\"\n formControlName=\"amount\"\n />\n </div>\n </div>\n <div *ngSwitchCase=\"'dateRange'\">\n <div [formGroup]=\"formControl\">\n <vdr-form-field [label]=\"'common.data-table-filter-date-mode' | translate\">\n <select name=\"mode\" formControlName=\"mode\" class=\"mb-1\">\n <option value=\"relative\">\n {{ 'common.data-table-filter-date-relative' | translate }}\n </option>\n <option value=\"range\">\n {{ 'common.data-table-filter-date-range' | translate }}\n </option>\n </select>\n </vdr-form-field>\n <ng-container *ngIf=\"formControl.get('mode')?.value === 'relative'\">\n <div class=\"flex mt-2\">\n <vdr-form-field class=\"mr-1\">\n <input type=\"number\" min=\"1\" formControlName=\"relativeValue\" />\n </vdr-form-field>\n <vdr-form-field>\n <select name=\"mode\" formControlName=\"relativeUnit\">\n <option value=\"day\">{{ 'datetime.day' | translate }}</option>\n <option value=\"month\">{{ 'datetime.month' | translate }}</option>\n <option value=\"year\">{{ 'datetime.year' | translate }}</option>\n </select>\n </vdr-form-field>\n </div>\n </ng-container>\n <ng-container *ngIf=\"formControl.get('mode')?.value === 'range'\">\n <label>\n <div>{{ 'common.start-date' | translate }}</div>\n </label>\n <vdr-datetime-picker formControlName=\"start\"></vdr-datetime-picker>\n <label>\n <div>{{ 'common.end-date' | translate }}</div>\n </label>\n <vdr-datetime-picker formControlName=\"end\"></vdr-datetime-picker>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"apply-wrapper mt-2\">\n <button class=\"button\" (click)=\"activate()\" [disabled]=\"!formControl?.valid\">\n <span>{{ 'common.apply' | translate }}</span>\n <clr-icon shape=\"check\"></clr-icon>\n </button>\n </div>\n </form>\n </vdr-dropdown-menu>\n</vdr-dropdown>\n", styles: [":host{display:block}.filter-button{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;padding:0 var(--space-unit);height:calc(var(--space-unit) * 3);font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);background-color:var(--color-button-small-bg);color:var(--color-button-small-text)}.filter-button>button{border:none;gap:12px;cursor:pointer;background-color:transparent;display:flex;align-items:center;height:calc(var(--space-unit) * 2);border-radius:var(--border-radius-lg);color:var(--color-button-small-text)}.filter-button.active{background-color:var(--color-primary-700);color:var(--color-primary-100)}.filter-button.active>button{color:var(--color-primary-100)}label{display:flex;align-items:center;gap:var(--space-unit);margin-bottom:calc(var(--space-unit) * .5)}.filter-heading{font-size:var(--font-size-xs);text-transform:uppercase;color:var(--color-weight-600);margin:0 calc(var(--space-unit) * 2)}.apply-wrapper{display:flex;justify-content:flex-end;padding-inline-end:calc(var(--space-unit) * 2)}.filter-hotkey{font-size:var(--font-size-xs);color:var(--color-weight-500);border:1px solid var(--color-weight-200);background-color:var(--color-weight-100);border-radius:var(--border-radius);padding:0 3px;text-transform:uppercase;margin-inline-start:3px}\n"] }]
187
202
  }], ctorParameters: function () { return [{ type: i1.I18nService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filters: [{
188
203
  type: Input
189
204
  }], filterWithValue: [{
@@ -198,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
198
213
  type: HostListener,
199
214
  args: ['window:keydown.f', ['$event']]
200
215
  }] } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvZGF0YS10YWJsZS1maWx0ZXJzL2RhdGEtdGFibGUtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUtZmlsdGVycy9kYXRhLXRhYmxlLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVUvRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXJGLE1BQU0sT0FBTyx5QkFBeUI7SUFJbEMsSUFDSSxtQkFBbUIsQ0FBQyxPQUF1QztRQUMzRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFRRCxXQUFXLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxLQUFLLENBQUMsTUFBTSxZQUFZLFdBQVcsRUFBRTtZQUNyQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7Z0JBQ3pFLE9BQU87YUFDVjtTQUNKO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsWUFBb0IsV0FBd0IsRUFBVSxpQkFBb0M7UUFBdEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBakJoRixVQUFLLEdBQXFCLEtBQUssQ0FBQztJQWlCbUQsQ0FBQztJQUU5RixlQUFlO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtnQkFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7YUFDbkM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDekI7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUF1QixFQUFFLEtBQVc7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FDNUI7Z0JBQ0ksUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksVUFBVSxDQUFDO2dCQUN4RCxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7YUFDM0MsRUFDRCxPQUFPLENBQUMsRUFBRTtnQkFDTixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQ3JCLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ2hDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FDSixDQUFDO1NBQ0w7UUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksU0FBUyxDQUM1QjtnQkFDSSxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUM7Z0JBQ2xELE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQzthQUMvQyxFQUNELE9BQU8sQ0FBQyxFQUFFO2dCQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDaEM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQyxDQUNKLENBQUM7U0FDTDthQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQ2hGLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMxRSxDQUFDO1NBQ0w7YUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQztTQUN0RDthQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQzVCO2dCQUNJLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztnQkFDNUMsR0FBRyxFQUFFLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO2FBQzNDLEVBQ0QsT0FBTyxDQUFDLEVBQUU7Z0JBQ04sTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNqQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ2hDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FDSixDQUFDO1NBQ0w7YUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDN0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFNLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBTSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7U0FDakY7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RCLE9BQU87U0FDVjtRQUNELElBQUksS0FBVSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUM7UUFDdkMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2YsS0FBSyxTQUFTO2dCQUNWLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUE4QyxDQUFDO2dCQUMxRSxNQUFNO1lBQ1YsS0FBSyxXQUFXLENBQUMsQ0FBQztnQkFDZCxJQUFJLGFBQTRCLENBQUM7Z0JBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUM7Z0JBQ3hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUM7Z0JBQ3BELElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtvQkFDZCxhQUFhLEdBQUc7d0JBQ1osT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtxQkFDMUIsQ0FBQztpQkFDTDtxQkFBTSxJQUFJLEtBQUssRUFBRTtvQkFDZCxhQUFhLEdBQUc7d0JBQ1osS0FBSyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQztpQkFDTDtxQkFBTTtvQkFDSCxhQUFhLEdBQUc7d0JBQ1osTUFBTSxFQUFFLEdBQUc7cUJBQ2QsQ0FBQztpQkFDTDtnQkFDRCxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUEyQyxDQUFDO2dCQUNoRSxNQUFNO2FBQ1Q7WUFDRCxLQUFLLFFBQVE7Z0JBQ1QsS0FBSyxHQUFHO29CQUNKLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO29CQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUTtpQkFDSCxDQUFDO2dCQUMzQyxNQUFNO1lBRVYsS0FBSyxRQUFRO2dCQUNULE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztxQkFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixLQUFLLEdBQUcsT0FBZ0QsQ0FBQztnQkFDekQsTUFBTTtZQUNWLEtBQUssTUFBTTtnQkFDUCxLQUFLLEdBQUc7b0JBQ0osUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7b0JBQ3pDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJO2lCQUNLLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO29CQUN0QixJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3REO2dCQUNELE1BQU07WUFDVjtnQkFDSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQzs4R0FsTFEseUJBQXlCO2tHQUF6Qix5QkFBeUIsa1pBSXVCLDhCQUE4Qiw2QkNqQzNGLHkwTUE2R0E7OzJGRGhGYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNO2tJQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDbUMsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVuQyxtQkFBbUI7c0JBRHRCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSw4QkFBOEIsRUFBRTtnQkFXekYsV0FBVztzQkFEVixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29tcG9uZW50UmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudC1yZWdpc3RyeS10eXBlcyc7XHJcbmltcG9ydCB7IERhdGVPcGVyYXRvcnMsIExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBEYXRhVGFibGVGaWx0ZXIsIEtpbmRWYWx1ZU1hcCB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtZmlsdGVyJztcclxuaW1wb3J0IHtcclxuICAgIERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb24sXHJcbiAgICBGaWx0ZXJXaXRoVmFsdWUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2kxOG4vaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21GaWx0ZXJDb21wb25lbnREaXJlY3RpdmUgfSBmcm9tICcuL2N1c3RvbS1maWx0ZXItY29tcG9uZW50LmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWRhdGEtdGFibGUtZmlsdGVycycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUtZmlsdGVycy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBASW5wdXQoKSBmaWx0ZXJzOiBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uO1xyXG4gICAgQElucHV0KCkgZmlsdGVyV2l0aFZhbHVlPzogRmlsdGVyV2l0aFZhbHVlO1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bjogRHJvcGRvd25Db21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjdXN0b21Db21wb25lbnRIb3N0JywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBDdXN0b21GaWx0ZXJDb21wb25lbnREaXJlY3RpdmUgfSlcclxuICAgIHNldCBjdXN0b21Db21wb25lbnRIb3N0KGNvbnRlbnQ6IEN1c3RvbUZpbHRlckNvbXBvbmVudERpcmVjdGl2ZSkge1xyXG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudEhvc3QgPSBjb250ZW50O1xyXG4gICAgfVxyXG4gICAgX2N1c3RvbUNvbXBvbmVudEhvc3Q6IEN1c3RvbUZpbHRlckNvbXBvbmVudERpcmVjdGl2ZTtcclxuICAgIHByb3RlY3RlZCBzdGF0ZTogJ25ldycgfCAnYWN0aXZlJyA9ICduZXcnO1xyXG4gICAgcHJvdGVjdGVkIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRGaWx0ZXI6IERhdGFUYWJsZUZpbHRlciB8IHVuZGVmaW5lZDtcclxuICAgIHByb3RlY3RlZCBjdXN0b21Db21wb25lbnQ/OiBDb21wb25lbnRSZWY8Rm9ybUlucHV0Q29tcG9uZW50PjtcclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5mJywgWyckZXZlbnQnXSlcclxuICAgIG9uRktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCBldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5kcm9wZG93bi5pc09wZW4gJiYgdGhpcy5zdGF0ZSA9PT0gJ25ldycpIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGVPcGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5kcm9wZG93bi5vbk9wZW5DaGFuZ2UoaXNPcGVuID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpc09wZW4gJiYgdGhpcy5zdGF0ZSA9PT0gJ25ldycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJXaXRoVmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXIsIHZhbHVlIH0gPSB0aGlzLmZpbHRlcldpdGhWYWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXIoZmlsdGVyLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAnYWN0aXZlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RGaWx0ZXIoZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXIsIHZhbHVlPzogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlciA9IGZpbHRlcjtcclxuICAgICAgICBpZiAoZmlsdGVyLmlzVGV4dCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUdyb3VwKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/Lm9wZXJhdG9yID8/ICdjb250YWlucycpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm06IG5ldyBGb3JtQ29udHJvbCh2YWx1ZT8udGVybSA/PyAnJyksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29udHJvbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRlcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbm9TZWxlY3Rpb246IHRydWUgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsdGVyLmlzTnVtYmVyKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtR3JvdXAoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZT8ub3BlcmF0b3IgPz8gJ2d0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/LmFtb3VudCA/PyAnJyksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29udHJvbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlLmFtb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBub1NlbGVjdGlvbjogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuaXNTZWxlY3QoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IEZvcm1BcnJheShcclxuICAgICAgICAgICAgICAgIGZpbHRlci50eXBlLm9wdGlvbnMubWFwKG8gPT4gbmV3IEZvcm1Db250cm9sKHZhbHVlPy5pbmNsdWRlcyhvLnZhbHVlKSA/PyBmYWxzZSkpLFxyXG4gICAgICAgICAgICAgICAgY29udHJvbCA9PiAoY29udHJvbC52YWx1ZS5zb21lKEJvb2xlYW4pID8gbnVsbCA6IHsgbm9TZWxlY3Rpb246IHRydWUgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuaXNCb29sZWFuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSA/PyBmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuaXNEYXRlUmFuZ2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IEZvcm1Hcm91cChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGFydDogbmV3IEZvcm1Db250cm9sKHZhbHVlPy5zdGFydCA/PyBudWxsKSxcclxuICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZT8uZW5kID8/IG51bGwpLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC5zdGFydCAmJiB2YWwuZW5kICYmIHZhbC5zdGFydCA+IHZhbC5lbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZFJhbmdlOiB0cnVlIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsLnN0YXJ0ICYmICF2YWwuZW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG5vU2VsZWN0aW9uOiB0cnVlIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5pc0N1c3RvbSgpICYmIHRoaXMuX2N1c3RvbUNvbXBvbmVudEhvc3QpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy4jY3VzdG9tQ29tcG9uZW50SG9zdC52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50ID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50SG9zdC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICAgICAgICAgIGZpbHRlci50eXBlLmNvbXBvbmVudCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxhbnk+KHZhbHVlID8/IFtdKTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db21wb25lbnQuaW5zdGFuY2UuY29uZmlnID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50Lmluc3RhbmNlLmZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPGFueT4odmFsdWUgPz8gW10pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhY3RpdmF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWx0ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5zZWxlY3RlZEZpbHRlcj8udHlwZTtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUua2luZCkge1xyXG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gISF0aGlzLmZvcm1Db250cm9sLnZhbHVlIGFzIEtpbmRWYWx1ZU1hcFt0eXBlb2YgdHlwZS5raW5kXVsncmF3J107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnZGF0ZVJhbmdlJzoge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGVPcGVyYXRvcnM6IERhdGVPcGVyYXRvcnM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUuc3RhcnQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZS5lbmQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVPcGVyYXRvcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW46IHsgc3RhcnQsIGVuZCB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZU9wZXJhdG9ycyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6IHN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVPcGVyYXRvcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZTogZW5kLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHsgc3RhcnQsIGVuZCB9IGFzIEtpbmRWYWx1ZU1hcFt0eXBlb2YgdHlwZS5raW5kXVsncmF3J107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBOdW1iZXIodGhpcy5mb3JtQ29udHJvbC52YWx1ZS5hbW91bnQpLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgICAgfSBhcyBLaW5kVmFsdWVNYXBbdHlwZW9mIHR5cGUua2luZF1bJ3JhdyddO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2LCBpKSA9PiAodiA/IHR5cGUub3B0aW9uc1tpXS52YWx1ZSA6IHVuZGVmaW5lZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih2ID0+ICEhdik7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbnMgYXMgS2luZFZhbHVlTWFwW3R5cGVvZiB0eXBlLmtpbmRdWydyYXcnXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0ZXh0JzpcclxuICAgICAgICAgICAgICAgIHZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm06IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUudGVybSxcclxuICAgICAgICAgICAgICAgIH0gYXMgS2luZFZhbHVlTWFwW3R5cGVvZiB0eXBlLmtpbmRdWydyYXcnXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbUNvbXBvbmVudD8uaW5zdGFuY2UuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlID09PSAnbmV3Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudEhvc3Qudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcih0eXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09ICduZXcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIuYWN0aXZhdGUodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyV2l0aFZhbHVlPy51cGRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZHJvcGRvd24udG9nZ2xlT3BlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlYWN0aXZhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyV2l0aFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzLmFjdGl2ZUZpbHRlcnMuaW5kZXhPZih0aGlzLmZpbHRlcldpdGhWYWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVycy5yZW1vdmVBY3RpdmVGaWx0ZXJBdEluZGV4KGluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHZkci1kcm9wZG93biBbbWFudWFsVG9nZ2xlXT1cInRydWVcIiAjZHJvcGRvd24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cInN0YXRlXCI+XHJcbiAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiIHNpemU9XCIxMlwiICpuZ0lmPVwic3RhdGUgPT09ICduZXcnXCI+PC9jbHItaWNvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUgPT09ICdhY3RpdmUnXCIgY2xhc3M9XCJyZW1vdmVcIiAoY2xpY2spPVwiZGVhY3RpdmF0ZSgpXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRpbWVzXCIgc2l6ZT1cIjEyXCI+PC9jbHItaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHZkckRyb3Bkb3duVHJpZ2dlciBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN0YXRlID09PSAnbmV3J1wiPnt7ICdjb21tb24uYWRkLWZpbHRlcicgfCB0cmFuc2xhdGUgfX0gPHNwYW4gY2xhc3M9XCJmaWx0ZXItaG90a2V5XCI+Zjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RhdGUgPT09ICdhY3RpdmUnXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRhdGEtdGFibGUtZmlsdGVyLWxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcldpdGhWYWx1ZV09XCJmaWx0ZXJXaXRoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgPjwvdmRyLWRhdGEtdGFibGUtZmlsdGVyLWxhYmVsPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImVsbGlwc2lzLXZlcnRpY2FsXCIgc2l6ZT1cIjEyXCI+PC9jbHItaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLWxlZnRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkRmlsdGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaGVhZGluZ1wiPkZpbHRlciBieTo8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlcnMuZ2V0RmlsdGVycygpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHZkckRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2VsZWN0RmlsdGVyKGZpbHRlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWxvY2FsaXplZC10ZXh0IFt0ZXh0XT1cImZpbHRlcj8ubGFiZWxcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRpbmdcIiAqbmdJZj1cInNlbGVjdGVkRmlsdGVyXCI+XHJcbiAgICAgICAgICAgIEZpbHRlciBieSA8dmRyLWxvY2FsaXplZC10ZXh0IFt0ZXh0XT1cInNlbGVjdGVkRmlsdGVyLmxhYmVsXCIgLz46XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgbXQtMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IHZkckN1c3RvbUZpbHRlckNvbXBvbmVudEhvc3QgI2N1c3RvbUNvbXBvbmVudEhvc3Q+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGZvcm0gKm5nSWY9XCJzZWxlY3RlZEZpbHRlclwiIGNsYXNzPVwiXCIgW2Nka1RyYXBGb2N1c109XCJ0cnVlXCIgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkRmlsdGVyLnR5cGUua2luZCAhPT0gJ2N1c3RvbSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIG10LTFcIiBbbmdTd2l0Y2hdPVwic2VsZWN0ZWRGaWx0ZXIudHlwZS5raW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIiBbZm9ybUdyb3VwXT1cImZvcm1Db250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mICRhbnkoc2VsZWN0ZWRGaWx0ZXIudHlwZSkub3B0aW9uczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBvcHRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBjbHJUb2dnbGUgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybUNvbnRyb2wudmFsdWVcIj57eyAnY29tbW9uLmJvb2xlYW4tdHJ1ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmb3JtQ29udHJvbC52YWx1ZVwiPnt7ICdjb21tb24uYm9vbGVhbi1mYWxzZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtQ29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJvcHRpb25zXCIgZm9ybUNvbnRyb2xOYW1lPVwib3BlcmF0b3JcIiBjbGFzcz1cIm1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLm9wZXJhdG9yLWNvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxXCI+e3sgJ2NvbW1vbi5vcGVyYXRvci1lcScgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdENvbnRhaW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLm9wZXJhdG9yLW5vdC1jb250YWlucycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RFcVwiPnt7ICdjb21tb24ub3BlcmF0b3Itbm90LWVxJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmVnZXhcIj57eyAnY29tbW9uLm9wZXJhdG9yLXJlZ2V4JyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJtXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Db250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIm9wdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRvclwiIGNsYXNzPVwibWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXFcIj57eyAnY29tbW9uLm9wZXJhdG9yLWVxJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3RcIj57eyAnY29tbW9uLm9wZXJhdG9yLWd0JyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibHRcIj57eyAnY29tbW9uLm9wZXJhdG9yLWx0JyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiRhbnkoc2VsZWN0ZWRGaWx0ZXIudHlwZSkuaW5wdXRUeXBlICE9PSAnY3VycmVuY3knXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIkYW55KHNlbGVjdGVkRmlsdGVyLnR5cGUpLmlucHV0VHlwZSA9PT0gJ2N1cnJlbmN5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidkYXRlUmFuZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtQ29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgJ2NvbW1vbi5zdGFydC1kYXRlJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZGF0ZXRpbWUtcGlja2VyIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCI+PC92ZHItZGF0ZXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgJ2NvbW1vbi5lbmQtZGF0ZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRhdGV0aW1lLXBpY2tlciBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIj48L3Zkci1kYXRldGltZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktd3JhcHBlciBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlKClcIiBbZGlzYWJsZWRdPVwiIWZvcm1Db250cm9sPy52YWxpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdjb21tb24uYXBwbHknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImNoZWNrXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG48L3Zkci1kcm9wZG93bj5cclxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvZGF0YS10YWJsZS1maWx0ZXJzL2RhdGEtdGFibGUtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUtZmlsdGVycy9kYXRhLXRhYmxlLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVUvRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFyRixNQUFNLE9BQU8seUJBQXlCO0lBSWxDLElBQ0ksbUJBQW1CLENBQUMsT0FBdUM7UUFDM0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0lBUUQsV0FBVyxDQUFDLEtBQW9CO1FBQzVCLElBQUksS0FBSyxDQUFDLE1BQU0sWUFBWSxXQUFXLEVBQUU7WUFDckMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUN6RSxPQUFPO2FBQ1Y7U0FDSjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENB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QVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2QzthQUFNO1lBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqRDtJQUNMLENBQUM7OEdBck1RLHlCQUF5QjtrR0FBekIseUJBQXlCLGtaQUl1Qiw4QkFBOEIsNkJDakMzRiw0dFJBb0pBOzsyRkR2SGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTtrSUFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ21DLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFbkMsbUJBQW1CO3NCQUR0QixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsOEJBQThCLEVBQUU7Z0JBV3pGLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb21wb25lbnQtcmVnaXN0cnktdHlwZXMnO1xuaW1wb3J0IHsgRGF0ZU9wZXJhdG9ycyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IHsgRGF0YVRhYmxlRmlsdGVyLCBLaW5kVmFsdWVNYXAgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlcic7XG5pbXBvcnQge1xuICAgIERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb24sXG4gICAgRmlsdGVyV2l0aFZhbHVlLFxufSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlci1jb2xsZWN0aW9uJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbUZpbHRlckNvbXBvbmVudERpcmVjdGl2ZSB9IGZyb20gJy4vY3VzdG9tLWZpbHRlci1jb21wb25lbnQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2ZHItZGF0YS10YWJsZS1maWx0ZXJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRhLXRhYmxlLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlRmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGZpbHRlcnM6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb247XG4gICAgQElucHV0KCkgZmlsdGVyV2l0aFZhbHVlPzogRmlsdGVyV2l0aFZhbHVlO1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyBzdGF0aWM6IHRydWUgfSkgZHJvcGRvd246IERyb3Bkb3duQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2N1c3RvbUNvbXBvbmVudEhvc3QnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEN1c3RvbUZpbHRlckNvbXBvbmVudERpcmVjdGl2ZSB9KVxuICAgIHNldCBjdXN0b21Db21wb25lbnRIb3N0KGNvbnRlbnQ6IEN1c3RvbUZpbHRlckNvbXBvbmVudERpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRIb3N0ID0gY29udGVudDtcbiAgICB9XG4gICAgX2N1c3RvbUNvbXBvbmVudEhvc3Q6IEN1c3RvbUZpbHRlckNvbXBvbmVudERpcmVjdGl2ZTtcbiAgICBwcm90ZWN0ZWQgc3RhdGU6ICduZXcnIHwgJ2FjdGl2ZScgPSAnbmV3JztcbiAgICBwcm90ZWN0ZWQgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRGaWx0ZXI6IERhdGFUYWJsZUZpbHRlciB8IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgY3VzdG9tQ29tcG9uZW50PzogQ29tcG9uZW50UmVmPEZvcm1JbnB1dENvbXBvbmVudD47XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5mJywgWyckZXZlbnQnXSlcbiAgICBvbkZLZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCBldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZHJvcGRvd24uaXNPcGVuICYmIHRoaXMuc3RhdGUgPT09ICduZXcnKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZU9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5vbk9wZW5DaGFuZ2UoaXNPcGVuID0+IHtcbiAgICAgICAgICAgIGlmICghaXNPcGVuICYmIHRoaXMuc3RhdGUgPT09ICduZXcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcldpdGhWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXIsIHZhbHVlIH0gPSB0aGlzLmZpbHRlcldpdGhWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyKGZpbHRlciwgdmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICdhY3RpdmUnO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0RmlsdGVyKGZpbHRlcjogRGF0YVRhYmxlRmlsdGVyLCB2YWx1ZT86IGFueSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyID0gZmlsdGVyO1xuICAgICAgICBpZiAoZmlsdGVyLmlzSWQoKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtR3JvdXAoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogbmV3IEZvcm1Db250cm9sKHZhbHVlPy5vcGVyYXRvciA/PyAnZXEnKSxcbiAgICAgICAgICAgICAgICAgICAgdGVybTogbmV3IEZvcm1Db250cm9sKHZhbHVlPy50ZXJtID8/ICcnKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUudGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbm9TZWxlY3Rpb246IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyLmlzVGV4dCgpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IEZvcm1Hcm91cChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/Lm9wZXJhdG9yID8/ICdjb250YWlucycpLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtOiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/LnRlcm0gPz8gJycpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29udHJvbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udHJvbC52YWx1ZS50ZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBub1NlbGVjdGlvbjogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXIuaXNOdW1iZXIoKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtR3JvdXAoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogbmV3IEZvcm1Db250cm9sKHZhbHVlPy5vcGVyYXRvciA/PyAnZ3QnKSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/LmFtb3VudCA/PyAnJyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb250cm9sID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUuYW1vdW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG5vU2VsZWN0aW9uOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLmlzU2VsZWN0KCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUFycmF5KFxuICAgICAgICAgICAgICAgIGZpbHRlci50eXBlLm9wdGlvbnMubWFwKG8gPT4gbmV3IEZvcm1Db250cm9sKHZhbHVlPy5pbmNsdWRlcyhvLnZhbHVlKSA/PyBmYWxzZSkpLFxuICAgICAgICAgICAgICAgIGNvbnRyb2wgPT4gKGNvbnRyb2wudmFsdWUuc29tZShCb29sZWFuKSA/IG51bGwgOiB7IG5vU2VsZWN0aW9uOiB0cnVlIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuaXNCb29sZWFuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUgPz8gZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5pc0RhdGVSYW5nZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IEZvcm1Hcm91cChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IG5ldyBGb3JtQ29udHJvbCgncmVsYXRpdmUnKSxcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVWYWx1ZTogbmV3IEZvcm1Db250cm9sKHZhbHVlPy5yZWxhdGl2ZVZhbHVlID8/IDMwKSxcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVVbml0OiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/LnJlbGF0aXZlVW5pdCA/PyAnZGF5JyksXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2wodmFsdWU/LnN0YXJ0ID8/IG51bGwpLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZT8uZW5kID8/IG51bGwpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29udHJvbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB2YWwubW9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdyYW5nZScgJiYgdmFsLnN0YXJ0ICYmIHZhbC5lbmQgJiYgdmFsLnN0YXJ0ID4gdmFsLmVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZFJhbmdlOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdyYW5nZScgJiYgIXZhbC5zdGFydCAmJiAhdmFsLmVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbm9TZWxlY3Rpb246IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuaXNDdXN0b20oKSAmJiB0aGlzLl9jdXN0b21Db21wb25lbnRIb3N0KSB7XG4gICAgICAgICAgICAvLyB0aGlzLiNjdXN0b21Db21wb25lbnRIb3N0LnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50ID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50SG9zdC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICBmaWx0ZXIudHlwZS5jb21wb25lbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxhbnk+KHZhbHVlID8/IFtdKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50Lmluc3RhbmNlLmNvbmZpZyA9IHt9O1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db21wb25lbnQuaW5zdGFuY2UuZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8YW55Pih2YWx1ZSA/PyBbXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhY3RpdmF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnNlbGVjdGVkRmlsdGVyPy50eXBlO1xuICAgICAgICBzd2l0Y2ggKHR5cGUua2luZCkge1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSAhIXRoaXMuZm9ybUNvbnRyb2wudmFsdWUgYXMgS2luZFZhbHVlTWFwW3R5cGVvZiB0eXBlLmtpbmRdWydyYXcnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVSYW5nZSc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZS5tb2RlID8/ICdyZWxhdGl2ZSc7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUucmVsYXRpdmVWYWx1ZSA/PyAzMDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWxhdGl2ZVVuaXQgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlLnJlbGF0aXZlVW5pdCA/PyAnZGF5JztcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUuc3RhcnQgPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUuZW5kID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZSxcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVVbml0LFxuICAgICAgICAgICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgICAgICAgICAgZW5kLFxuICAgICAgICAgICAgICAgIH0gYXMgS2luZFZhbHVlTWFwW3R5cGVvZiB0eXBlLmtpbmRdWydyYXcnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogTnVtYmVyKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUuYW1vdW50KSxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUub3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgfSBhcyBLaW5kVmFsdWVNYXBbdHlwZW9mIHR5cGUua2luZF1bJ3JhdyddO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHYsIGkpID0+ICh2ID8gdHlwZS5vcHRpb25zW2ldLnZhbHVlIDogdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih2ID0+ICEhdik7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb25zIGFzIEtpbmRWYWx1ZU1hcFt0eXBlb2YgdHlwZS5raW5kXVsncmF3J107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUub3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgIHRlcm06IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUudGVybSxcbiAgICAgICAgICAgICAgICB9IGFzIEtpbmRWYWx1ZU1hcFt0eXBlb2YgdHlwZS5raW5kXVsncmF3J107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpZCc6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlLnRlcm0sXG4gICAgICAgICAgICAgICAgfSBhcyBLaW5kVmFsdWVNYXBbdHlwZW9mIHR5cGUua2luZF1bJ3JhdyddO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3VzdG9tJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuY3VzdG9tQ29tcG9uZW50Py5pbnN0YW5jZS5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ25ldycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50SG9zdC52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcih0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ25ldycpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIuYWN0aXZhdGUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJXaXRoVmFsdWU/LnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZU9wZW4oKTtcbiAgICB9XG5cbiAgICBkZWFjdGl2YXRlKCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJXaXRoVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzLmFjdGl2ZUZpbHRlcnMuaW5kZXhPZih0aGlzLmZpbHRlcldpdGhWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnMucmVtb3ZlQWN0aXZlRmlsdGVyQXRJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8dmRyLWRyb3Bkb3duIFttYW51YWxUb2dnbGVdPVwidHJ1ZVwiICNkcm9wZG93bj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cInN0YXRlXCI+XG4gICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIiBzaXplPVwiMTJcIiAqbmdJZj1cInN0YXRlID09PSAnbmV3J1wiPjwvY2xyLWljb24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzdGF0ZSA9PT0gJ2FjdGl2ZSdcIiBjbGFzcz1cInJlbW92ZVwiIChjbGljayk9XCJkZWFjdGl2YXRlKClcIj5cbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRpbWVzXCIgc2l6ZT1cIjEyXCI+PC9jbHItaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdmRyRHJvcGRvd25UcmlnZ2VyIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN0YXRlID09PSAnbmV3J1wiXG4gICAgICAgICAgICAgICAgPnt7ICdjb21tb24uYWRkLWZpbHRlcicgfCB0cmFuc2xhdGUgfX0gPHNwYW4gY2xhc3M9XCJmaWx0ZXItaG90a2V5XCI+Zjwvc3Bhbj48L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RhdGUgPT09ICdhY3RpdmUnXCI+XG4gICAgICAgICAgICAgICAgPHZkci1kYXRhLXRhYmxlLWZpbHRlci1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyV2l0aFZhbHVlXT1cImZpbHRlcldpdGhWYWx1ZVwiXG4gICAgICAgICAgICAgICAgPjwvdmRyLWRhdGEtdGFibGUtZmlsdGVyLWxhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWxsaXBzaXMtdmVydGljYWxcIiBzaXplPVwiMTJcIj48L2Nsci1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tbGVmdFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkRmlsdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRpbmdcIj5GaWx0ZXIgYnk6PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVycy5nZXRGaWx0ZXJzKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHZkckRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2VsZWN0RmlsdGVyKGZpbHRlcilcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1sb2NhbGl6ZWQtdGV4dCBbdGV4dF09XCJmaWx0ZXI/LmxhYmVsXCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRpbmdcIiAqbmdJZj1cInNlbGVjdGVkRmlsdGVyXCI+XG4gICAgICAgICAgICBGaWx0ZXIgYnkgPHZkci1sb2NhbGl6ZWQtdGV4dCBbdGV4dF09XCJzZWxlY3RlZEZpbHRlci5sYWJlbFwiIC8+OlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiB2ZHJDdXN0b21GaWx0ZXJDb21wb25lbnRIb3N0ICNjdXN0b21Db21wb25lbnRIb3N0PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvcm0gKm5nSWY9XCJzZWxlY3RlZEZpbHRlclwiIGNsYXNzPVwiXCIgW2Nka1RyYXBGb2N1c109XCJ0cnVlXCIgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEZpbHRlci50eXBlLmtpbmQgIT09ICdjdXN0b20nXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgbXQtMVwiIFtuZ1N3aXRjaF09XCJzZWxlY3RlZEZpbHRlci50eXBlLmtpbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIiBbZm9ybUdyb3VwXT1cImZvcm1Db250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiAkYW55KHNlbGVjdGVkRmlsdGVyLnR5cGUpLm9wdGlvbnM7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBvcHRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIGNsclRvZ2dsZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybUNvbnRyb2wudmFsdWVcIj57eyAnY29tbW9uLmJvb2xlYW4tdHJ1ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZm9ybUNvbnRyb2wudmFsdWVcIj57eyAnY29tbW9uLmJvb2xlYW4tZmFsc2UnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Db250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwib3B0aW9uc1wiIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCIgY2xhc3M9XCJtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLm9wZXJhdG9yLWNvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXFcIj57eyAnY29tbW9uLm9wZXJhdG9yLWVxJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdENvbnRhaW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5vcGVyYXRvci1ub3QtY29udGFpbnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RFcVwiPnt7ICdjb21tb24ub3BlcmF0b3Itbm90LWVxJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJlZ2V4XCI+e3sgJ2NvbW1vbi5vcGVyYXRvci1yZWdleCcgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGVybVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtQ29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIm9wdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRvclwiIGNsYXNzPVwibWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxXCI+e3sgJ2NvbW1vbi5vcGVyYXRvci1lcScgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RFcVwiPnt7ICdjb21tb24ub3BlcmF0b3Itbm90LWVxJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJtXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtQ29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIm9wdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRvclwiIGNsYXNzPVwibWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxXCI+e3sgJ2NvbW1vbi5vcGVyYXRvci1lcScgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJndFwiPnt7ICdjb21tb24ub3BlcmF0b3ItZ3QnIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibHRcIj57eyAnY29tbW9uLm9wZXJhdG9yLWx0JyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIkYW55KHNlbGVjdGVkRmlsdGVyLnR5cGUpLmlucHV0VHlwZSAhPT0gJ2N1cnJlbmN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VycmVuY3ktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIkYW55KHNlbGVjdGVkRmlsdGVyLnR5cGUpLmlucHV0VHlwZSA9PT0gJ2N1cnJlbmN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFtb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVSYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtQ29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5kYXRhLXRhYmxlLWZpbHRlci1kYXRlLW1vZGUnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIm1vZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJtb2RlXCIgY2xhc3M9XCJtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLmRhdGEtdGFibGUtZmlsdGVyLWRhdGUtcmVsYXRpdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJyYW5nZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uZGF0YS10YWJsZS1maWx0ZXItZGF0ZS1yYW5nZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtQ29udHJvbC5nZXQoJ21vZGUnKT8udmFsdWUgPT09ICdyZWxhdGl2ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIGNsYXNzPVwibXItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMVwiIGZvcm1Db250cm9sTmFtZT1cInJlbGF0aXZlVmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJtb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwicmVsYXRpdmVVbml0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkYXlcIj57eyAnZGF0ZXRpbWUuZGF5JyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9udGhcIj57eyAnZGF0ZXRpbWUubW9udGgnIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ5ZWFyXCI+e3sgJ2RhdGV0aW1lLnllYXInIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUNvbnRyb2wuZ2V0KCdtb2RlJyk/LnZhbHVlID09PSAncmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgJ2NvbW1vbi5zdGFydC1kYXRlJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRhdGV0aW1lLXBpY2tlciBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiPjwvdmRyLWRhdGV0aW1lLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyAnY29tbW9uLmVuZC1kYXRlJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRhdGV0aW1lLXBpY2tlciBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIj48L3Zkci1kYXRldGltZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBseS13cmFwcGVyIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlKClcIiBbZGlzYWJsZWRdPVwiIWZvcm1Db250cm9sPy52YWxpZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnY29tbW9uLmFwcGx5JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY2hlY2tcIj48L2Nsci1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxuPC92ZHItZHJvcGRvd24+XG4iXX0=
@@ -181,8 +181,8 @@ export class DatetimePickerComponent {
181
181
  }
182
182
  this.minutes = minutes;
183
183
  }
184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DatetimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DatetimePickerService }], target: i0.ɵɵFactoryTarget.Component }); }
185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: DatetimePickerComponent, selector: "vdr-datetime-picker", inputs: { yearRange: "yearRange", weekStartDay: "weekStartDay", timeGranularityInterval: "timeGranularityInterval", min: "min", max: "max", readonly: "readonly" }, providers: [
184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DatetimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DatetimePickerService }], target: i0.ɵɵFactoryTarget.Component }); }
185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: DatetimePickerComponent, selector: "vdr-datetime-picker", inputs: { yearRange: "yearRange", weekStartDay: "weekStartDay", timeGranularityInterval: "timeGranularityInterval", min: "min", max: "max", readonly: "readonly" }, providers: [
186
186
  DatetimePickerService,
187
187
  {
188
188
  provide: NG_VALUE_ACCESSOR,
@@ -191,7 +191,7 @@ export class DatetimePickerComponent {
191
191
  },
192
192
  ], viewQueries: [{ propertyName: "dropdownComponent", first: true, predicate: ["dropdownComponent"], descendants: true, static: true }, { propertyName: "datetimeInput", first: true, predicate: ["datetimeInput"], descendants: true, static: true }, { propertyName: "calendarTable", first: true, predicate: ["calendarTable"], descendants: true }], ngImport: i0, template: "<div class=\"input-wrapper\">\r\n <input\r\n readonly\r\n [ngModel]=\"selected$ | async | localeDate : 'medium'\"\r\n class=\"selected-datetime\"\r\n (keydown.enter)=\"dropdownComponent.toggleOpen()\"\r\n (keydown.space)=\"dropdownComponent.toggleOpen()\"\r\n #datetimeInput\r\n />\r\n <button\r\n class=\"clear-value-button\"\r\n [class.visible]=\"!disabled && !readonly && (selected$ | async)\"\r\n (click)=\"clearValue()\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n</div>\r\n<vdr-dropdown #dropdownComponent>\r\n <button class=\"calendar-button\" vdrDropdownTrigger [disabled]=\"readonly || disabled\">\r\n <clr-icon shape=\"calendar\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div\r\n class=\"datetime-picker\"\r\n *ngIf=\"current$ | async as currentView\"\r\n (keydown.escape)=\"closeDatepicker()\"\r\n >\r\n <div class=\"controls\">\r\n <div class=\"selects\">\r\n <div class=\"month-select\">\r\n <select name=\"month\" [ngModel]=\"currentView.month\" (change)=\"setMonth($event)\">\r\n <option [value]=\"1\">{{ 'datetime.month-jan' | translate }}</option>\r\n <option [value]=\"2\">{{ 'datetime.month-feb' | translate }}</option>\r\n <option [value]=\"3\">{{ 'datetime.month-mar' | translate }}</option>\r\n <option [value]=\"4\">{{ 'datetime.month-apr' | translate }}</option>\r\n <option [value]=\"5\">{{ 'datetime.month-may' | translate }}</option>\r\n <option [value]=\"6\">{{ 'datetime.month-jun' | translate }}</option>\r\n <option [value]=\"7\">{{ 'datetime.month-jul' | translate }}</option>\r\n <option [value]=\"8\">{{ 'datetime.month-aug' | translate }}</option>\r\n <option [value]=\"9\">{{ 'datetime.month-sep' | translate }}</option>\r\n <option [value]=\"10\">{{ 'datetime.month-oct' | translate }}</option>\r\n <option [value]=\"11\">{{ 'datetime.month-nov' | translate }}</option>\r\n <option [value]=\"12\">{{ 'datetime.month-dec' | translate }}</option>\r\n </select>\r\n </div>\r\n <div class=\"year-select\">\r\n <select name=\"month\" [ngModel]=\"currentView.year\" (change)=\"setYear($event)\">\r\n <option *ngFor=\"let year of years\" [value]=\"year\">{{ year }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"control-buttons\">\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"prevMonth()\"\r\n [title]=\"'common.view-previous-month' | translate\"\r\n >\r\n <clr-icon shape=\"caret\" dir=\"left\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"selectToday()\"\r\n [title]=\"'common.select-today' | translate\"\r\n >\r\n <clr-icon shape=\"event\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"nextMonth()\"\r\n [title]=\"'common.view-next-month' | translate\"\r\n >\r\n <clr-icon shape=\"caret\" dir=\"right\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <table\r\n class=\"calendar-table\"\r\n #calendarTable\r\n tabindex=\"0\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n >\r\n <thead>\r\n <tr>\r\n <td *ngFor=\"let weekdayName of weekdays\">\r\n {{ weekdayName | translate }}\r\n </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let week of calendarView$ | async\">\r\n <td\r\n *ngFor=\"let day of week\"\r\n class=\"day-cell\"\r\n [class.selected]=\"day.selected\"\r\n [class.today]=\"day.isToday\"\r\n [class.viewing]=\"day.isViewing\"\r\n [class.current-month]=\"day.inCurrentMonth\"\r\n [class.disabled]=\"day.disabled\"\r\n (keydown.enter)=\"selectDay(day)\"\r\n (click)=\"selectDay(day)\"\r\n >\r\n {{ day.dayOfMonth }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"time-picker\">\r\n <span class=\"flex-spacer\"> {{ 'datetime.time' | translate }}: </span>\r\n <select name=\"hour\" [ngModel]=\"selectedHours$ | async\" (change)=\"setHour($event)\">\r\n <option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour | number : '2.0-0' }}</option>\r\n </select>\r\n <span>:</span>\r\n <select name=\"hour\" [ngModel]=\"selectedMinutes$ | async\" (change)=\"setMinute($event)\">\r\n <option *ngFor=\"let minute of minutes\" [value]=\"minute\">\r\n {{ minute | number : '2.0-0' }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:flex;width:100%}.input-wrapper{flex:1;display:flex}input.selected-datetime{flex:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-inline-end:none!important}button.clear-value-button{margin:0;border-radius:0;border-inline-start:none;border:none;border-top:1px solid var(--color-weight-200);border-bottom:1px solid var(--color-weight-200);border-inline-end:1px solid var(--color-weight-200);background-color:var(--color-button-bg);color:var(--color-text-100);display:none}button.clear-value-button.visible{display:block}button.calendar-button{margin:0;border-top-left-radius:0;border-bottom-left-radius:0;border:1px solid var(--color-weight-200);border-radius:var(--border-radius-sm);border-inline-start:none;height:100%;background-color:var(--color-button-bg);color:var(--color-text-100)}.datetime-picker{margin:0 12px}table.calendar-table{padding:6px}table.calendar-table:focus{outline:1px solid var(--color-primary-500);box-shadow:0 0 1px 2px var(--color-primary-100)}table.calendar-table td{width:24px;text-align:center;border:1px solid transparent;-webkit-user-select:none;user-select:none}table.calendar-table .day-cell{background-color:var(--color-component-bg-200);color:var(--color-text-100);cursor:pointer;transition:background-color .1s}table.calendar-table .day-cell.current-month{background-color:var(--color-weight-100);color:var(--color-text-100)}table.calendar-table .day-cell.selected{background-color:var(--color-primary-500);color:#fff}table.calendar-table .day-cell.viewing:not(.selected){background-color:var(--color-primary-200)}table.calendar-table .day-cell.today{border:1px solid var(--color-component-border-300)}table.calendar-table .day-cell:hover:not(.selected):not(.disabled){background-color:var(--color-primary-100)}table.calendar-table .day-cell.disabled{cursor:default;color:var(--color-text-200)}.selects{display:flex;justify-content:space-between;margin-bottom:12px}.control-buttons{display:flex}.time-picker{display:flex;align-items:baseline;margin-top:12px}\n"], dependencies: [{ kind: "directive", type: i2.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i6.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i7.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i8.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i9.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
193
193
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DatetimePickerComponent, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DatetimePickerComponent, decorators: [{
195
195
  type: Component,
196
196
  args: [{ selector: 'vdr-datetime-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
197
197
  DatetimePickerService,
@@ -192,10 +192,10 @@ export class DatetimePickerService {
192
192
  }
193
193
  return true;
194
194
  }
195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DatetimePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
196
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DatetimePickerService }); }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DatetimePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
196
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DatetimePickerService }); }
197
197
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DatetimePickerService, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DatetimePickerService, decorators: [{
199
199
  type: Injectable
200
200
  }], ctorParameters: function () { return []; } });
201
201
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFJN0MsTUFBTSxPQUFPLHFCQUFxQjtJQVc5QjtRQVBRLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQUNsRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBYyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTdELFFBQUcsR0FBdUIsSUFBSSxDQUFDO1FBQy9CLFFBQUcsR0FBdUIsSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxj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RUFBRSxHQUFHLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDakMsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQWlCO1FBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OEdBNU5RLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgZGF5T2ZXZWVrSW5kZXggfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhbGVuZGFyVmlldywgRGF5Q2VsbCwgRGF5T2ZXZWVrIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEYXRldGltZVBpY2tlclNlcnZpY2Uge1xyXG4gICAgY2FsZW5kYXJWaWV3JDogT2JzZXJ2YWJsZTxDYWxlbmRhclZpZXc+O1xyXG4gICAgc2VsZWN0ZWQkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPjtcclxuICAgIHZpZXdpbmckOiBPYnNlcnZhYmxlPERhdGU+O1xyXG4gICAgcHJpdmF0ZSBzZWxlY3RlZERhdGV0aW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8ZGF5anMuRGF5anMgfCBudWxsPihudWxsKTtcclxuICAgIHByaXZhdGUgdmlld2luZ0RhdGV0aW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8ZGF5anMuRGF5anM+KGRheWpzKCkpO1xyXG4gICAgcHJpdmF0ZSB3ZWVrU3RhcnREYXlJbmRleDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBtaW46IGRheWpzLkRheWpzIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIG1heDogZGF5anMuRGF5anMgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUganVtcGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQkID0gdGhpcy5zZWxlY3RlZERhdGV0aW1lJC5waXBlKG1hcCh2YWx1ZSA9PiB2YWx1ZSAmJiB2YWx1ZS50b0RhdGUoKSkpO1xyXG4gICAgICAgIHRoaXMudmlld2luZyQgPSB0aGlzLnZpZXdpbmdEYXRldGltZSQucGlwZShtYXAodmFsdWUgPT4gdmFsdWUudG9EYXRlKCkpKTtcclxuICAgICAgICB0aGlzLndlZWtTdGFydERheUluZGV4ID0gZGF5T2ZXZWVrSW5kZXhbJ21vbiddO1xyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJWaWV3JCA9IGNvbWJpbmVMYXRlc3QodGhpcy52aWV3aW5nRGF0ZXRpbWUkLCB0aGlzLnNlbGVjdGVkRGF0ZXRpbWUkKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKFt2aWV3aW5nLCBzZWxlY3RlZF0pID0+IHRoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcodmlld2luZywgc2VsZWN0ZWQpKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdlZWtTdGFydGluZ0RheSh3ZWVrU3RhcnREYXk6IERheU9mV2Vlaykge1xyXG4gICAgICAgIHRoaXMud2Vla1N0YXJ0RGF5SW5kZXggPSBkYXlPZldlZWtJbmRleFt3ZWVrU3RhcnREYXldO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE1pbihtaW4/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtaW4gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWluID0gZGF5anMobWluKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWF4KG1heD86IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICBpZiAodHlwZW9mIG1heCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXggPSBkYXlqcyhtYXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3REYXRldGltZShkYXRlOiBEYXRlIHwgc3RyaW5nIHwgZGF5anMuRGF5anMgfCBudWxsKSB7XHJcbiAgICAgICAgbGV0IHZpZXdpbmdWYWx1ZTogZGF5anMuRGF5anM7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWU6IGRheWpzLkRheWpzIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGRhdGUgPT0gbnVsbCB8fCBkYXRlID09PSAnJykge1xyXG4gICAgICAgICAgICB2aWV3aW5nVmFsdWUgPSBkYXlqcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZpZXdpbmdWYWx1ZSA9IGRheWpzKGRhdGUpO1xyXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0gZGF5anMoZGF0ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXRpbWUkLm5leHQoc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy52aWV3aW5nRGF0ZXRpbWUkLm5leHQodmlld2luZ1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RIb3VyKGhvdXJPZkRheTogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VsZWN0ZWREYXRldGltZSQudmFsdWUgfHwgZGF5anMoKTtcclxuICAgICAgICBjb25zdCBuZXh0ID0gY3VycmVudC5ob3VyKGhvdXJPZkRheSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGV0aW1lJC5uZXh0KG5leHQpO1xyXG4gICAgICAgIHRoaXMudmlld2luZ0RhdGV0aW1lJC5uZXh0KG5leHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdE1pbnV0ZShtaW51dGVQYXN0SG91cjogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VsZWN0ZWREYXRldGltZSQudmFsdWUgfHwgZGF5anMoKTtcclxuICAgICAgICBjb25zdCBuZXh0ID0gY3VycmVudC5taW51dGUobWludXRlUGFzdEhvdXIpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRldGltZSQubmV4dChuZXh0KTtcclxuICAgICAgICB0aGlzLnZpZXdpbmdEYXRldGltZSQubmV4dChuZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICB2aWV3TmV4dE1vbnRoKCkge1xyXG4gICAgICAgIHRoaXMuanVtcGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnZpZXdpbmdEYXRldGltZSQudmFsdWU7XHJcbiAgICAgICAgdGhpcy52aWV3aW5nRGF0ZXRpbWUkLm5leHQoY3VycmVudC5hZGQoMSwgJ21vbnRoJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXdQcmV2TW9udGgoKSB7XHJcbiAgICAgICAgdGhpcy5qdW1waW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMudmlld2luZ0RhdGV0aW1lJC52YWx1ZTtcclxuICAgICAgICB0aGlzLnZpZXdpbmdEYXRldGltZSQubmV4dChjdXJyZW50LnN1YnRyYWN0KDEsICdtb250aCcpKTtcclxuICAgIH1cclxuXHJcbiAgICB2aWV3VG9kYXkoKSB7XHJcbiAgICAgICAgdGhpcy5qdW1waW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy52aWV3aW5nRGF0ZXRpbWUkLm5leHQoZGF5anMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlld0p1bXBEb3duKCkge1xyXG4gICAgICAgIHRoaXMuanVtcGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMudmlld2luZ0RhdGV0aW1lJC52YWx1ZTtcclxuICAgICAgICB0aGlzLnZpZXdpbmdEYXRldGltZSQubmV4dChjdXJyZW50LmFkZCgxLCAnd2VlaycpKTtcclxuICAgIH1cclxuXHJcbiAgICB2aWV3SnVtcFVwKCkge1xyXG4gICAgICAgIHRoaXMuanVtcGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMudmlld2luZ0RhdGV0aW1lJC52YWx1ZTtcclxuICAgICAgICB0aGlzLnZpZXdpbmdEYXRldGltZSQubmV4dChjdXJyZW50LnN1YnRyYWN0KDEsICd3ZWVrJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXdKdW1wUmlnaHQoKSB7XHJcbiAgICAgICAgdGhpcy5qdW1waW5nID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy52aWV3aW5nRGF0ZXRpbWUkLnZhbHVlO1xyXG4gICAgICAgIHRoaXMudmlld2luZ0RhdGV0aW1lJC5uZXh0KGN1cnJlbnQuYWRkKDEsICdkYXknKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlld0p1bXBMZWZ0KCkge1xyXG4gICAgICAgIHRoaXMuanVtcGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMudmlld2luZ0RhdGV0aW1lJC52YWx1ZTtcclxuICAgICAgICB0aGlzLnZpZXdpbmdEYXRldGltZSQubmV4dChjdXJyZW50LnN1YnRyYWN0KDEsICdkYXknKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0VG9kYXkoKSB7XHJcbiAgICAgICAgdGhpcy5qdW1waW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3REYXRldGltZShkYXlqcygpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RWaWV3ZWQoKSB7XHJcbiAgICAgICAgdGhpcy5qdW1waW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3REYXRldGltZSh0aGlzLnZpZXdpbmdEYXRldGltZSQudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXdNb250aChtb250aDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5qdW1waW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMudmlld2luZ0RhdGV0aW1lJC52YWx1ZTtcclxuICAgICAgICB0aGlzLnZpZXdpbmdEYXRldGltZSQubmV4dChjdXJyZW50Lm1vbnRoKG1vbnRoIC0gMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXdZZWFyKHllYXI6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuanVtcGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnZpZXdpbmdEYXRldGltZSQudmFsdWU7XHJcbiAgICAgICAgdGhpcy52aWV3aW5nRGF0ZXRpbWUkLm5leHQoY3VycmVudC55ZWFyKHllYXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXJWaWV3KHZpZXdpbmc6IGRheWpzLkRheWpzLCBzZWxlY3RlZDogZGF5anMuRGF5anMgfCBudWxsKTogQ2FsZW5kYXJWaWV3IHtcclxuICAgICAgICBpZiAoIXZpZXdpbmcuaXNWYWxpZCgpIHx8IChzZWxlY3RlZCAmJiAhc2VsZWN0ZWQuaXNWYWxpZCgpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdmlld2luZy5zdGFydE9mKCdtb250aCcpO1xyXG4gICAgICAgIGNvbnN0IGVuZCA9IHZpZXdpbmcuZW5kT2YoJ21vbnRoJyk7XHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBkYXlqcygpO1xyXG4gICAgICAgIGNvbnN0IGRheXNJbk1vbnRoID0gdmlld2luZy5kYXlzSW5Nb250aCgpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF5T2ZNb250aCA9IHNlbGVjdGVkICYmIHNlbGVjdGVkLmdldCgnZGF0ZScpO1xyXG5cclxuICAgICAgICBjb25zdCBzdGFydERheU9mV2VlayA9IHN0YXJ0LmRheSgpO1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAoNyArIChzdGFydERheU9mV2VlayAtIHRoaXMud2Vla1N0YXJ0RGF5SW5kZXgpKSAlIDc7XHJcblxyXG4gICAgICAgIGNvbnN0IGNhbGVuZGFyVmlldzogQ2FsZW5kYXJWaWV3ID0gW107XHJcbiAgICAgICAgbGV0IHdlZWs6IERheUNlbGxbXSA9IFtdO1xyXG5cclxuICAgICAgICAvLyBBZGQgdGhlIGRheXMgYXQgdGhlIHRhaWwgb2YgdGhlIHByZXZpb3VzIG1vbnRoXHJcbiAgICAgICAgaWYgKDAgPCBzdGFydEluZGV4KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZXZNb250aCA9IHZpZXdpbmcuc3VidHJhY3QoMSwgJ21vbnRoJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRheXNJblByZXZNb250aCA9IHByZXZNb250aC5kYXlzSW5Nb250aCgpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2SXNDdXJyZW50TW9udGggPSBwcmV2TW9udGguaXNTYW1lKHRvZGF5LCAnbW9udGgnKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGRheXNJblByZXZNb250aCAtIHN0YXJ0SW5kZXggKyAxOyBpIDw9IGRheXNJblByZXZNb250aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aGlzRGF5ID0gdmlld2luZy5zdWJ0cmFjdCgxLCAnbW9udGgnKS5kYXRlKGkpO1xyXG4gICAgICAgICAgICAgICAgd2Vlay5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBkYXlPZk1vbnRoOiBpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBpbkN1cnJlbnRNb250aDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNUb2RheTogcHJldklzQ3VycmVudE1vbnRoICYmIHRvZGF5LmdldCgnZGF0ZScpID09PSBpLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmlld2luZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLmlzSW5Cb3VuZHModGhpc0RheSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZXRpbWUodGhpc0RheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgdGhpcyBtb250aCdzIGRheXNcclxuICAgICAgICBjb25zdCBpc0N1cnJlbnRNb250aCA9IHZpZXdpbmcuaXNTYW1lKHRvZGF5LCAnbW9udGgnKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzSW5Nb250aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICgoaSArIHN0YXJ0SW5kZXggLSAxKSAlIDcgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyVmlldy5wdXNoKHdlZWspO1xyXG4gICAgICAgICAgICAgICAgd2VlayA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHRoaXNEYXkgPSBzdGFydC5hZGQoaSAtIDEsICdkYXknKTtcclxuICAgICAgICAgICAgY29uc3QgaXNWaWV3aW5nVGhpc01vbnRoID1cclxuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuaXNTYW1lKHZpZXdpbmcsICdtb250aCcpICYmIHNlbGVjdGVkLmlzU2FtZSh2aWV3aW5nLCAneWVhcicpO1xyXG4gICAgICAgICAgICB3ZWVrLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZGF5T2ZNb250aDogaSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBpID09PSBzZWxlY3RlZERheU9mTW9udGggJiYgaXNWaWV3aW5nVGhpc01vbnRoLFxyXG4gICAgICAgICAgICAgICAgaW5DdXJyZW50TW9udGg6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBpc1RvZGF5OiBpc0N1cnJlbnRNb250aCAmJiB0b2RheS5nZXQoJ2RhdGUnKSA9PT0gaSxcclxuICAgICAgICAgICAgICAgIGlzVmlld2luZzogdGhpcy5qdW1waW5nICYmIHZpZXdpbmcuZGF0ZSgpID09PSBpLFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLmlzSW5Cb3VuZHModGhpc0RheSksXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Q6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGV0aW1lKHRoaXNEYXkpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgdGhlIGRheXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IG1vbnRoXHJcbiAgICAgICAgY29uc3QgZW1wdHlDZWxsc0VuZCA9IDcgLSAoKHN0YXJ0SW5kZXggKyBkYXlzSW5Nb250aCkgJSA3KTtcclxuICAgICAgICBpZiAoZW1wdHlDZWxsc0VuZCAhPT0gNykge1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0TW9udGggPSB2aWV3aW5nLmFkZCgxLCAnbW9udGgnKTtcclxuICAgICAgICAgICAgY29uc3QgbmV4dElzQ3VycmVudE1vbnRoID0gbmV4dE1vbnRoLmlzU2FtZSh0b2RheSwgJ21vbnRoJyk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBlbXB0eUNlbGxzRW5kOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXNEYXkgPSBlbmQuYWRkKGksICdkYXknKTtcclxuICAgICAgICAgICAgICAgIHdlZWsucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5T2ZNb250aDogaSxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgaW5DdXJyZW50TW9udGg6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVG9kYXk6IG5leHRJc0N1cnJlbnRNb250aCAmJiB0b2RheS5nZXQoJ2RhdGUnKSA9PT0gaSxcclxuICAgICAgICAgICAgICAgICAgICBpc1ZpZXdpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5pc0luQm91bmRzKHRoaXNEYXkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGV0aW1lKHRoaXNEYXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWxlbmRhclZpZXcucHVzaCh3ZWVrKTtcclxuICAgICAgICByZXR1cm4gY2FsZW5kYXJWaWV3O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNJbkJvdW5kcyhkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1pbi5pc0FmdGVyKGRhdGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubWF4ICYmIHRoaXMubWF4LmlzQmVmb3JlKGRhdGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -8,10 +8,10 @@ export class DropdownItemDirective {
8
8
  onDropdownItemClick(event) {
9
9
  this.dropdown.onClick();
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DropdownItemDirective, deps: [{ token: i1.DropdownComponent }], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: DropdownItemDirective, selector: "[vdrDropdownItem]", host: { listeners: { "click": "onDropdownItemClick($event)" }, properties: { "class.dropdown-item": "true" } }, ngImport: i0 }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DropdownItemDirective, deps: [{ token: i1.DropdownComponent }], target: i0.ɵɵFactoryTarget.Directive }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: DropdownItemDirective, selector: "[vdrDropdownItem]", host: { listeners: { "click": "onDropdownItemClick($event)" }, properties: { "class.dropdown-item": "true" } }, ngImport: i0 }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DropdownItemDirective, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DropdownItemDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{
17
17
  selector: '[vdrDropdownItem]',
@@ -119,8 +119,8 @@ export class DropdownMenuComponent {
119
119
  inverted.overlayY = pos.overlayY === 'top' ? 'bottom' : 'top';
120
120
  return inverted;
121
121
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DropdownMenuComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i2.DropdownComponent }], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: { position: ["vdrPosition", "position"], customClasses: "customClasses" }, host: { listeners: { "window:keydown.escape": "onEscapeKeydown($event)", "window:keydown": "onArrowKey($event)" } }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: `
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DropdownMenuComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i2.DropdownComponent }], target: i0.ɵɵFactoryTarget.Component }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: { position: ["vdrPosition", "position"], customClasses: "customClasses" }, host: { listeners: { "window:keydown.escape": "onEscapeKeydown($event)", "window:keydown": "onArrowKey($event)" } }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: `
124
124
  <ng-template #menu>
125
125
  <div class="dropdown open">
126
126
  <div class="dropdown-menu" [ngClass]="customClasses">
@@ -136,7 +136,7 @@ export class DropdownMenuComponent {
136
136
  </ng-template>
137
137
  `, isInline: true, styles: [".clear-backdrop{background-color:#ff69b4}::ng-deep .dropdown-menu{max-width:initial}::ng-deep .dropdown-menu .dropdown-item{display:flex;align-items:center}::ng-deep .dropdown-menu .dropdown-item clr-icon{margin-inline-end:3px}::ng-deep .dropdown-menu .dropdown-item:focus{outline:var(--color-dropdown-item-focus-outline) solid 1px;outline-offset:1px 0}.dropdown.open>.dropdown-menu{position:relative;top:0;height:100%;overflow-y:auto}:host{opacity:1;transition:opacity .3s}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
138
138
  }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DropdownMenuComponent, decorators: [{
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DropdownMenuComponent, decorators: [{
140
140
  type: Component,
141
141
  args: [{ selector: 'vdr-dropdown-menu', template: `
142
142
  <ng-template #menu>
@@ -10,10 +10,10 @@ export class DropdownTriggerDirective {
10
10
  onDropdownTriggerClick(event) {
11
11
  this.dropdown.toggleOpen();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DropdownTriggerDirective, deps: [{ token: i1.DropdownComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
14
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]", host: { listeners: { "click": "onDropdownTriggerClick($event)" } }, ngImport: i0 }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DropdownTriggerDirective, deps: [{ token: i1.DropdownComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]", host: { listeners: { "click": "onDropdownTriggerClick($event)" } }, ngImport: i0 }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DropdownTriggerDirective, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: DropdownTriggerDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: '[vdrDropdownTrigger]',