ontimize-web-ngx 15.0.0-beta.5 → 15.0.0

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 (372) hide show
  1. package/esm2020/lib/components/app-header/o-app-header.component.mjs +4 -4
  2. package/esm2020/lib/components/app-header/o-app-header.module.mjs +5 -5
  3. package/esm2020/lib/components/app-sidenav/image/o-app-sidenav-image.component.mjs +4 -4
  4. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +4 -4
  5. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +4 -4
  6. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +4 -4
  7. package/esm2020/lib/components/app-sidenav/o-app-sidenav.module.mjs +5 -5
  8. package/esm2020/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.mjs +4 -4
  9. package/esm2020/lib/components/bar-menu/menu-group/o-bar-menu-group.component.mjs +4 -4
  10. package/esm2020/lib/components/bar-menu/menu-item/o-bar-menu-item.component.mjs +4 -4
  11. package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +4 -4
  12. package/esm2020/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.mjs +4 -4
  13. package/esm2020/lib/components/bar-menu/o-bar-menu-base.class.mjs +4 -4
  14. package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +4 -4
  15. package/esm2020/lib/components/bar-menu/o-bar-menu.module.mjs +5 -5
  16. package/esm2020/lib/components/bar-menu/o-base-menu-item.class.mjs +4 -4
  17. package/esm2020/lib/components/breadcrumb/o-breadcrumb.component.mjs +4 -4
  18. package/esm2020/lib/components/breadcrumb/o-breadcrumb.module.mjs +5 -5
  19. package/esm2020/lib/components/button/o-button.component.mjs +4 -4
  20. package/esm2020/lib/components/button/o-button.module.mjs +5 -5
  21. package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +4 -4
  22. package/esm2020/lib/components/button-toggle/o-button-toggle.component.mjs +4 -4
  23. package/esm2020/lib/components/button-toggle/o-button-toggle.module.mjs +5 -5
  24. package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +4 -4
  25. package/esm2020/lib/components/card-menu-item/o-card-menu-item.module.mjs +5 -5
  26. package/esm2020/lib/components/container/column/o-column.component.mjs +4 -4
  27. package/esm2020/lib/components/container/column/o-column.module.mjs +5 -5
  28. package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.component.mjs +4 -4
  29. package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.module.mjs +5 -5
  30. package/esm2020/lib/components/container/o-container-collapsible-component.class.mjs +4 -4
  31. package/esm2020/lib/components/container/o-container-component.class.mjs +4 -4
  32. package/esm2020/lib/components/container/row/o-row.component.mjs +4 -4
  33. package/esm2020/lib/components/container/row/o-row.module.mjs +5 -5
  34. package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.component.mjs +4 -4
  35. package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.module.mjs +5 -5
  36. package/esm2020/lib/components/contextmenu/context-menu/o-context-menu-content.component.mjs +4 -4
  37. package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +4 -4
  38. package/esm2020/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.mjs +4 -4
  39. package/esm2020/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.mjs +4 -4
  40. package/esm2020/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.mjs +4 -4
  41. package/esm2020/lib/components/contextmenu/o-content-menu-base-item.class.mjs +4 -4
  42. package/esm2020/lib/components/contextmenu/o-context-menu-overlay.service.mjs +4 -4
  43. package/esm2020/lib/components/contextmenu/o-context-menu.component.mjs +4 -4
  44. package/esm2020/lib/components/contextmenu/o-context-menu.directive.mjs +4 -4
  45. package/esm2020/lib/components/contextmenu/o-context-menu.module.mjs +5 -5
  46. package/esm2020/lib/components/contextmenu/o-context-menu.service.mjs +4 -4
  47. package/esm2020/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.mjs +4 -4
  48. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +4 -4
  49. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.module.mjs +5 -5
  50. package/esm2020/lib/components/expandable-container/o-expandable-container.component.mjs +4 -4
  51. package/esm2020/lib/components/expandable-container/o-expandable-container.module.mjs +5 -5
  52. package/esm2020/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.mjs +4 -4
  53. package/esm2020/lib/components/filter-builder/o-filter-builder-clear.directive.mjs +4 -4
  54. package/esm2020/lib/components/filter-builder/o-filter-builder-query.directive.mjs +4 -4
  55. package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +4 -4
  56. package/esm2020/lib/components/filter-builder/o-filter-builder.module.mjs +5 -5
  57. package/esm2020/lib/components/form/guards/o-form-can-deactivate.guard.mjs +4 -4
  58. package/esm2020/lib/components/form/navigation/o-form-confirm-exit.service.mjs +4 -4
  59. package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +13 -22
  60. package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -2
  61. package/esm2020/lib/components/form/o-form.component.mjs +4 -4
  62. package/esm2020/lib/components/form/o-form.module.mjs +5 -5
  63. package/esm2020/lib/components/form/services/o-form-message.service.mjs +4 -4
  64. package/esm2020/lib/components/form/toolbar/o-form-toolbar.component.mjs +4 -4
  65. package/esm2020/lib/components/form/toolbar/o-form-toolbar.module.mjs +5 -5
  66. package/esm2020/lib/components/form-container/o-form-container.component.mjs +4 -4
  67. package/esm2020/lib/components/form-container/o-form-container.module.mjs +5 -5
  68. package/esm2020/lib/components/grid/grid-item/o-grid-item.component.mjs +4 -4
  69. package/esm2020/lib/components/grid/grid-item/o-grid-item.directive.mjs +4 -4
  70. package/esm2020/lib/components/grid/o-grid.component.mjs +11 -11
  71. package/esm2020/lib/components/grid/o-grid.module.mjs +9 -7
  72. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton/o-grid-skeleton.component.mjs +26 -0
  73. package/esm2020/lib/components/image/fullscreen/fullscreen-dialog.component.mjs +4 -4
  74. package/esm2020/lib/components/image/o-image.component.mjs +5 -5
  75. package/esm2020/lib/components/image/o-image.module.mjs +5 -5
  76. package/esm2020/lib/components/index.mjs +2 -1
  77. package/esm2020/lib/components/input/checkbox/o-checkbox.component.mjs +4 -4
  78. package/esm2020/lib/components/input/checkbox/o-checkbox.module.mjs +5 -5
  79. package/esm2020/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.mjs +4 -4
  80. package/esm2020/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.mjs +4 -4
  81. package/esm2020/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.mjs +4 -4
  82. package/esm2020/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.mjs +4 -4
  83. package/esm2020/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.mjs +4 -4
  84. package/esm2020/lib/components/input/combo/combo-renderer/o-combo-renderer.class.mjs +4 -4
  85. package/esm2020/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.mjs +4 -4
  86. package/esm2020/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.mjs +4 -4
  87. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -4
  88. package/esm2020/lib/components/input/combo/o-combo.component.mjs +4 -4
  89. package/esm2020/lib/components/input/combo/o-combo.module.mjs +5 -5
  90. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
  91. package/esm2020/lib/components/input/currency-input/o-currency-input.module.mjs +5 -5
  92. package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +4 -4
  93. package/esm2020/lib/components/input/date-input/o-date-input.module.mjs +5 -5
  94. package/esm2020/lib/components/input/date-range/o-daterange-input.component.mjs +4 -4
  95. package/esm2020/lib/components/input/date-range/o-daterange-input.directive.mjs +4 -4
  96. package/esm2020/lib/components/input/date-range/o-daterange-input.module.mjs +5 -5
  97. package/esm2020/lib/components/input/date-range/o-daterange-picker.component.mjs +4 -4
  98. package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +4 -4
  99. package/esm2020/lib/components/input/email-input/o-email-input.module.mjs +5 -5
  100. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +7 -7
  101. package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
  102. package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +4 -4
  103. package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +5 -5
  104. package/esm2020/lib/components/input/html-input/o-html-input.component.mjs +4 -4
  105. package/esm2020/lib/components/input/html-input/o-html-input.module.mjs +5 -5
  106. package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +4 -4
  107. package/esm2020/lib/components/input/integer-input/o-integer-input.module.mjs +5 -5
  108. package/esm2020/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.mjs +4 -4
  109. package/esm2020/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.mjs +4 -4
  110. package/esm2020/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.mjs +4 -4
  111. package/esm2020/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.mjs +4 -4
  112. package/esm2020/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.mjs +4 -4
  113. package/esm2020/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.mjs +4 -4
  114. package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +4 -4
  115. package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +4 -4
  116. package/esm2020/lib/components/input/listpicker/o-list-picker.module.mjs +5 -5
  117. package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +4 -4
  118. package/esm2020/lib/components/input/nif-input/o-nif-input.module.mjs +5 -5
  119. package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +4 -4
  120. package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -4
  121. package/esm2020/lib/components/input/password-input/o-password-input.component.mjs +4 -4
  122. package/esm2020/lib/components/input/password-input/o-password-input.module.mjs +5 -5
  123. package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +4 -4
  124. package/esm2020/lib/components/input/percent-input/o-percent-input.module.mjs +5 -5
  125. package/esm2020/lib/components/input/phone-input/data/country-code.mjs +4 -4
  126. package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +4 -4
  127. package/esm2020/lib/components/input/phone-input/o-phone-input.module.mjs +5 -5
  128. package/esm2020/lib/components/input/radio/o-radio.component.mjs +4 -4
  129. package/esm2020/lib/components/input/radio/o-radio.module.mjs +5 -5
  130. package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +4 -4
  131. package/esm2020/lib/components/input/real-input/o-real-input.module.mjs +5 -5
  132. package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +4 -4
  133. package/esm2020/lib/components/input/search-input/o-search-input.module.mjs +5 -5
  134. package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.component.mjs +4 -4
  135. package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.module.mjs +5 -5
  136. package/esm2020/lib/components/input/slider/o-slider.component.mjs +4 -4
  137. package/esm2020/lib/components/input/slider/o-slider.module.mjs +5 -5
  138. package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +4 -4
  139. package/esm2020/lib/components/input/text-input/o-text-input.module.mjs +5 -5
  140. package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +4 -4
  141. package/esm2020/lib/components/input/textarea-input/o-textarea-input.module.mjs +5 -5
  142. package/esm2020/lib/components/input/time-input/o-time-input.component.mjs +4 -4
  143. package/esm2020/lib/components/input/time-input/o-time-input.module.mjs +5 -5
  144. package/esm2020/lib/components/language-selector/o-language-selector.component.mjs +4 -4
  145. package/esm2020/lib/components/language-selector/o-language-selector.module.mjs +5 -5
  146. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +4 -4
  147. package/esm2020/lib/components/list/list-item/o-list-item.directive.mjs +4 -4
  148. package/esm2020/lib/components/list/o-list.component.mjs +14 -15
  149. package/esm2020/lib/components/list/o-list.module.mjs +12 -8
  150. package/esm2020/lib/components/list/renderers/avatar/o-list-item-avatar.component.mjs +4 -4
  151. package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +4 -4
  152. package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +4 -4
  153. package/esm2020/lib/components/list/renderers/o-list-item-card-renderer.class.mjs +4 -4
  154. package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +4 -4
  155. package/esm2020/lib/components/list/renderers/text/o-list-item-text.component.mjs +4 -4
  156. package/esm2020/lib/components/list/skeleton/o-list-skeleton/o-list-skeleton.component.mjs +26 -0
  157. package/esm2020/lib/components/material/ckeditor/ck-editor.component.mjs +4 -4
  158. package/esm2020/lib/components/material/ckeditor/ck-editor.module.mjs +5 -5
  159. package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +4 -4
  160. package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.module.mjs +5 -5
  161. package/esm2020/lib/components/o-form-data-component.class.mjs +4 -4
  162. package/esm2020/lib/components/o-service-base-component.class.mjs +10 -10
  163. package/esm2020/lib/components/o-service-component.class.mjs +17 -11
  164. package/esm2020/lib/components/o-skeleton.component.mjs +21 -0
  165. package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +4 -4
  166. package/esm2020/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.mjs +4 -4
  167. package/esm2020/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.mjs +4 -4
  168. package/esm2020/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.mjs +4 -4
  169. package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +4 -4
  170. package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +4 -4
  171. package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +4 -4
  172. package/esm2020/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.mjs +4 -4
  173. package/esm2020/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.mjs +4 -4
  174. package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
  175. package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
  176. package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
  177. package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
  178. package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
  179. package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
  180. package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
  181. package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
  182. package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
  183. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +4 -4
  184. package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
  185. package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
  186. package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
  187. package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
  188. package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +2 -2
  189. package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
  190. package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
  191. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
  192. package/esm2020/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +4 -4
  193. package/esm2020/lib/components/table/extensions/dialog/o-table-base-dialog.class.mjs +4 -4
  194. package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +4 -4
  195. package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -4
  196. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +4 -4
  197. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.service.mjs +4 -4
  198. package/esm2020/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.mjs +4 -4
  199. package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +4 -4
  200. package/esm2020/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.mjs +4 -4
  201. package/esm2020/lib/components/table/extensions/footer/paginator/o-table-paginator.component.mjs +4 -4
  202. package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +4 -4
  203. package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +4 -4
  204. package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +4 -4
  205. package/esm2020/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.mjs +4 -4
  206. package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +4 -4
  207. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +4 -4
  208. package/esm2020/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.mjs +4 -4
  209. package/esm2020/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.mjs +4 -4
  210. package/esm2020/lib/components/table/extensions/header/table-header/o-table-header.component.mjs +4 -4
  211. package/esm2020/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.mjs +4 -4
  212. package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
  213. package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
  214. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
  215. package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
  216. package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
  217. package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
  218. package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +4 -4
  219. package/esm2020/lib/components/table/extensions/pipes/o-table-row-class.pipe.mjs +4 -4
  220. package/esm2020/lib/components/table/extensions/row/o-table-row.directive.mjs +4 -4
  221. package/esm2020/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.mjs +4 -4
  222. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton/o-table-skeleton.component.mjs +26 -0
  223. package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +4 -4
  224. package/esm2020/lib/components/table/extensions/sort/o-mat-sort-module.mjs +5 -5
  225. package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +4 -4
  226. package/esm2020/lib/components/table/o-table.component.mjs +37 -38
  227. package/esm2020/lib/components/table/o-table.module.mjs +14 -7
  228. package/esm2020/lib/components/tree/header/index.mjs +2 -0
  229. package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +33 -0
  230. package/esm2020/lib/components/tree/index.mjs +5 -0
  231. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +43 -0
  232. package/esm2020/lib/components/tree/o-tree.component.mjs +523 -0
  233. package/esm2020/lib/components/tree/o-tree.datasource.mjs +79 -0
  234. package/esm2020/lib/components/tree/o-tree.module.mjs +24 -0
  235. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +49 -0
  236. package/esm2020/lib/components/user-info/o-user-info.component.mjs +4 -4
  237. package/esm2020/lib/components/user-info/o-user-info.module.mjs +5 -5
  238. package/esm2020/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.mjs +4 -4
  239. package/esm2020/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.mjs +4 -4
  240. package/esm2020/lib/config/o-modules.mjs +12 -10
  241. package/esm2020/lib/directives/keyboard-listener.directive.mjs +4 -4
  242. package/esm2020/lib/directives/locker.directive.mjs +4 -4
  243. package/esm2020/lib/directives/o-file-drag-and-drop.directive.mjs +4 -4
  244. package/esm2020/lib/directives/o-hidden.directive.mjs +4 -4
  245. package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -4
  246. package/esm2020/lib/directives/o-mat-prefix.directive.mjs +4 -4
  247. package/esm2020/lib/directives/o-mat-suffix.directive.mjs +4 -4
  248. package/esm2020/lib/directives/o-tab-group.directive.mjs +4 -4
  249. package/esm2020/lib/i18n/i18n.mjs +6 -3
  250. package/esm2020/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.mjs +4 -4
  251. package/esm2020/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.mjs +4 -4
  252. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +4 -4
  253. package/esm2020/lib/layouts/app-layout/o-app-layout.module.mjs +5 -5
  254. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +4 -4
  255. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.module.mjs +5 -5
  256. package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +4 -4
  257. package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +4 -4
  258. package/esm2020/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.mjs +4 -4
  259. package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +4 -4
  260. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -4
  261. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.module.mjs +5 -5
  262. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +6 -8
  263. package/esm2020/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.mjs +4 -4
  264. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +5 -5
  265. package/esm2020/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.mjs +4 -4
  266. package/esm2020/lib/ontimize-web-ngx.module.mjs +6 -5
  267. package/esm2020/lib/pipes/columns-filter.pipe.mjs +4 -4
  268. package/esm2020/lib/pipes/o-currency.pipe.mjs +4 -4
  269. package/esm2020/lib/pipes/o-icon.pipe.mjs +4 -4
  270. package/esm2020/lib/pipes/o-integer.pipe.mjs +4 -4
  271. package/esm2020/lib/pipes/o-moment.pipe.mjs +4 -4
  272. package/esm2020/lib/pipes/o-percentage.pipe.mjs +4 -4
  273. package/esm2020/lib/pipes/o-real.pipe.mjs +4 -4
  274. package/esm2020/lib/pipes/o-safe.pipe.mjs +4 -4
  275. package/esm2020/lib/pipes/o-translate.pipe.mjs +8 -8
  276. package/esm2020/lib/pipes/order-by.pipe.mjs +4 -4
  277. package/esm2020/lib/services/app-menu.service.mjs +4 -4
  278. package/esm2020/lib/services/appearance.service.mjs +4 -4
  279. package/esm2020/lib/services/auth-guard.service.mjs +4 -4
  280. package/esm2020/lib/services/auth.service.mjs +4 -4
  281. package/esm2020/lib/services/currency.service.mjs +4 -4
  282. package/esm2020/lib/services/dialog.service.mjs +4 -4
  283. package/esm2020/lib/services/icon.service.mjs +4 -4
  284. package/esm2020/lib/services/local-storage.service.mjs +4 -4
  285. package/esm2020/lib/services/login-storage.service.mjs +4 -4
  286. package/esm2020/lib/services/moment.service.mjs +4 -4
  287. package/esm2020/lib/services/navigation.service.mjs +4 -4
  288. package/esm2020/lib/services/number.service.mjs +4 -4
  289. package/esm2020/lib/services/o-auth.service.mjs +4 -4
  290. package/esm2020/lib/services/o-breadcrumb.service.mjs +4 -4
  291. package/esm2020/lib/services/o-error-dialog-manager.service.mjs +4 -4
  292. package/esm2020/lib/services/o-form-layout-manager.service.mjs +4 -4
  293. package/esm2020/lib/services/o-modules-info.service.mjs +4 -4
  294. package/esm2020/lib/services/o-user-info.service.mjs +4 -4
  295. package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +4 -4
  296. package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +4 -4
  297. package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +4 -4
  298. package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +4 -4
  299. package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +4 -4
  300. package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +4 -4
  301. package/esm2020/lib/services/ontimize/ontimize.service.mjs +4 -4
  302. package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +4 -4
  303. package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +4 -4
  304. package/esm2020/lib/services/ontimize-export-data-provider.service.mjs +4 -4
  305. package/esm2020/lib/services/ontimize-icon-registry.service.mjs +4 -4
  306. package/esm2020/lib/services/parser/o-service-response.parser.mjs +4 -4
  307. package/esm2020/lib/services/permissions/o-permissions.module.mjs +5 -7
  308. package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +4 -4
  309. package/esm2020/lib/services/permissions/ontimize-permissions.service.mjs +4 -4
  310. package/esm2020/lib/services/permissions/permissions-can-activate.guard.mjs +4 -4
  311. package/esm2020/lib/services/permissions/permissions.service.mjs +20 -10
  312. package/esm2020/lib/services/remote-config.service.mjs +5 -5
  313. package/esm2020/lib/services/share-can-activate-child.service.mjs +4 -4
  314. package/esm2020/lib/services/snackbar.service.mjs +4 -4
  315. package/esm2020/lib/services/state/o-component-state.service.mjs +10 -10
  316. package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +4 -4
  317. package/esm2020/lib/services/state/o-form-layout-manager-component-state.service.mjs +4 -4
  318. package/esm2020/lib/services/state/o-grid-component-state.service.mjs +4 -4
  319. package/esm2020/lib/services/state/o-list-component-state.service.mjs +4 -4
  320. package/esm2020/lib/services/state/o-table-component-state.service.mjs +4 -4
  321. package/esm2020/lib/services/state/o-tree-component-state.class.mjs +4 -0
  322. package/esm2020/lib/services/state/o-tree-component-state.service.mjs +50 -0
  323. package/esm2020/lib/services/translate/o-translate.parser.mjs +4 -4
  324. package/esm2020/lib/services/translate/o-translate.service.mjs +4 -4
  325. package/esm2020/lib/shared/components/dialog/o-dialog-internal.component.mjs +4 -4
  326. package/esm2020/lib/shared/components/dialog/o-dialog.component.mjs +4 -4
  327. package/esm2020/lib/shared/components/error403/o-error-403.component.mjs +4 -4
  328. package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +4 -4
  329. package/esm2020/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +4 -4
  330. package/esm2020/lib/shared/components/snackbar/o-snackbar-base.class.mjs +4 -4
  331. package/esm2020/lib/shared/components/snackbar/o-snackbar.component.mjs +4 -4
  332. package/esm2020/lib/shared/components/validation/o-error.component.mjs +4 -4
  333. package/esm2020/lib/shared/components/validation/o-validator.component.mjs +4 -4
  334. package/esm2020/lib/shared/material/custom.material.module.mjs +5 -5
  335. package/esm2020/lib/shared/material/date/ontimize-moment-date-adapter.mjs +4 -4
  336. package/esm2020/lib/shared/shared.module.mjs +5 -5
  337. package/esm2020/lib/util/util.mjs +11 -8
  338. package/fesm2015/ontimize-web-ngx.mjs +7405 -6605
  339. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  340. package/fesm2020/ontimize-web-ngx.mjs +6431 -5636
  341. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  342. package/lib/components/grid/o-grid.module.d.ts +8 -6
  343. package/lib/components/grid/skeketon/o-grid-skeleton/o-grid-skeleton.component.d.ts +11 -0
  344. package/lib/components/index.d.ts +1 -0
  345. package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
  346. package/lib/components/list/o-list.module.d.ts +8 -6
  347. package/lib/components/list/skeleton/o-list-skeleton/o-list-skeleton.component.d.ts +11 -0
  348. package/lib/components/o-service-component.class.d.ts +2 -1
  349. package/lib/components/o-skeleton.component.d.ts +14 -0
  350. package/lib/components/table/extensions/skeleton/o-table-skeleton/o-table-skeleton.component.d.ts +11 -0
  351. package/lib/components/table/o-table.component.d.ts +3 -1
  352. package/lib/components/table/o-table.module.d.ts +14 -12
  353. package/lib/components/tree/header/index.d.ts +1 -0
  354. package/lib/components/tree/header/tree-menu/o-tree-menu.component.d.ts +13 -0
  355. package/lib/components/tree/index.d.ts +4 -0
  356. package/lib/components/tree/o-tree-dao.service.d.ts +18 -0
  357. package/lib/components/tree/o-tree.component.d.ts +111 -0
  358. package/lib/components/tree/o-tree.datasource.d.ts +22 -0
  359. package/lib/components/tree/o-tree.module.d.ts +14 -0
  360. package/lib/components/tree/tree-node/tree-node.component.d.ts +14 -0
  361. package/lib/i18n/i18n.d.ts +3 -0
  362. package/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.d.ts +2 -3
  363. package/lib/ontimize-web-ngx.module.d.ts +2 -1
  364. package/lib/services/state/o-tree-component-state.class.d.ts +3 -0
  365. package/lib/services/state/o-tree-component-state.service.d.ts +13 -0
  366. package/lib/util/util.d.ts +1 -1
  367. package/package.json +3 -2
  368. package/theme.scss +20 -4
  369. package/theming/ontimize-style-v8.scss +2 -1
  370. package/theming/ontimize-style.scss +18 -0
  371. package/theming/styles/density.scss +6 -2
  372. package/theming/themes/ontimize-black-yellow.scss +13 -3
@@ -63,9 +63,9 @@ export class OListItemComponent {
63
63
  return this._list.isItemSelected(this.modelData);
64
64
  }
65
65
  }
66
- OListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => OListComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
67
- OListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OListItemComponent, selector: "o-list-item", host: { properties: { "class.o-list-item": "true" } }, queries: [{ propertyName: "_lines", predicate: MatListItemLine, descendants: true }, { propertyName: "_titles", predicate: MatListItemTitle, descendants: true }], viewQueries: [{ propertyName: "_innerListItem", first: true, predicate: ["innerListItem"], descendants: true, static: true }], ngImport: i0, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemMeta, selector: "[matListItemMeta]" }], encapsulation: i0.ViewEncapsulation.None });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListItemComponent, decorators: [{
66
+ OListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => OListComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
67
+ OListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListItemComponent, selector: "o-list-item", host: { properties: { "class.o-list-item": "true" } }, queries: [{ propertyName: "_lines", predicate: MatListItemLine, descendants: true }, { propertyName: "_titles", predicate: MatListItemTitle, descendants: true }], viewQueries: [{ propertyName: "_innerListItem", first: true, predicate: ["innerListItem"], descendants: true, static: true }], ngImport: i0, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemMeta, selector: "[matListItemMeta]" }], encapsulation: i0.ViewEncapsulation.None });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemComponent, decorators: [{
69
69
  type: Component,
70
70
  args: [{ selector: 'o-list-item', encapsulation: ViewEncapsulation.None, host: {
71
71
  '[class.o-list-item]': 'true'
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
85
85
  type: ViewChild,
86
86
  args: ['innerListItem', { static: true }]
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFZckQsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QixZQUNTLEtBQWlCLEVBQ2QsU0FBb0IsRUFDcEIsU0FBbUIsRUFDbkIsRUFBcUIsRUFDOEIsS0FBcUI7UUFKM0UsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUM4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWY3RSxZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBZ0JmLENBQUM7SUFFRSxrQkFBa0I7UUFDdkIsTUFB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b3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMaXN0SXRlbSwgTWF0TGlzdEl0ZW1MaW5lLCBNYXRMaXN0SXRlbVRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9vLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9vLWxpc3QtaXRlbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1saXN0LWl0ZW1dJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgTGlzdEl0ZW0sIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyBtb2RlbERhdGE6IGFueTtcbiAgcHVibGljIGxpbmVzTm8gPSAxO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1MaW5lLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9saW5lczogUXVlcnlMaXN0PE1hdExpc3RJdGVtTGluZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1UaXRsZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfdGl0bGVzOiBRdWVyeUxpc3Q8TWF0TGlzdEl0ZW1UaXRsZT47XG5cblxuICBAVmlld0NoaWxkKCdpbm5lckxpc3RJdGVtJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIF9pbm5lckxpc3RJdGVtOiBNYXRMaXN0SXRlbTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0xpc3RDb21wb25lbnQpKSBwdWJsaWMgX2xpc3Q6IE9MaXN0Q29tcG9uZW50XG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRMaW5lc1JlZiA9IHRoaXMuX3RpdGxlcy5sZW5ndGggKyB0aGlzLl9saW5lcy5sZW5ndGg7XG5cbiAgICBjb25zdCBuZ0FmdGVyQ29udGVudEluaXRPcmlnaW5hbCA9IHRoaXMuX2lubmVyTGlzdEl0ZW0ubmdBZnRlclZpZXdJbml0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW5cbiAgICB0aGlzLl9pbm5lckxpc3RJdGVtLm5nQWZ0ZXJWaWV3SW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVtcHR5RGl2ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbGlzdC10ZXh0OmVtcHR5Jyk7XG4gICAgICBpZiAoZW1wdHlEaXYpIHtcbiAgICAgICAgZW1wdHlEaXYucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saW5lcyA9IG1hdExpbmVzUmVmO1xuICAgICAgbmdBZnRlckNvbnRlbnRJbml0T3JpZ2luYWwuYXBwbHkodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRldGFpbEljb25DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdC52aWV3RGV0YWlsKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRJY29uQ2xpY2tlZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZSkpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3QuZWRpdERldGFpbCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkpIHtcbiAgICAgIHRoaXMubW9kZWxEYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0LnNlbGVjdGFibGUgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5tb2RlbERhdGEpKSB7XG4gICAgICB0aGlzLl9saXN0LnNldFNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdC5pc0l0ZW1TZWxlY3RlZCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxufVxuIiwiPG1hdC1saXN0LWl0ZW0gI2lubmVyTGlzdEl0ZW0+XG4gIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1zZWxlY3Rpb24tY2hlY2tcIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LnNlbGVjdGFibGVcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIChjbGljayk9XCJvbkNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LWl0ZW0tYXZhdGFyXSwgW21hdExpc3RBdmF0YXJdLCBbbWF0TGlzdEljb25dXCI+IDwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtbGlzdC1pdGVtXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdExpbmVdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPCEtLW1hdExpc3RJdGVtTWV0YSB0byBwdXQgY29udGVudCBpbnRvIHRoZSBtZXRhIHNlY3Rpb24gb2YgYSBsaXN0IGl0ZW0tLT5cbiAgPGRpdiBtYXRMaXN0SXRlbU1ldGE+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tY2FyZC1pbWFnZSxvLWxpc3QtaXRlbS1jYXJkXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tdGV4dCxvLWxpc3QtaXRlbS1hdmF0YXIsIFtvLWxpc3QtaXRlbV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwicm93LWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbGlzdC1yb3ctYWN0aW9uIG8tbGlzdC1pdGVtLWljb25cIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LmVkaXRCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkVkaXRJY29uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IF9saXN0LmVkaXRCdXR0b25JblJvd0ljb24gfX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1pY29uXCIgKm5nSWY9XCJfbGlzdCAmJiBfbGlzdC5kZXRhaWxCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkRldGFpbEljb25DbGlja2VkKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgX2xpc3QuZGV0YWlsQnV0dG9uSW5Sb3dJY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1saXN0LWl0ZW0+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFZckQsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QixZQUNTLEtBQWlCLEVBQ2QsU0FBb0IsRUFDcEIsU0FBbUIsRUFDbkIsRUFBcUIsRUFDOEIsS0FBcUI7UUFKM0UsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUM4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWY3RSxZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBZ0JmLENBQUM7SUFFRSxrQkFBa0I7UUFDdkIsTUFB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b3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMaXN0SXRlbSwgTWF0TGlzdEl0ZW1MaW5lLCBNYXRMaXN0SXRlbVRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9vLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9vLWxpc3QtaXRlbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1saXN0LWl0ZW1dJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgTGlzdEl0ZW0sIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyBtb2RlbERhdGE6IGFueTtcbiAgcHVibGljIGxpbmVzTm8gPSAxO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1MaW5lLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9saW5lczogUXVlcnlMaXN0PE1hdExpc3RJdGVtTGluZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1UaXRsZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfdGl0bGVzOiBRdWVyeUxpc3Q8TWF0TGlzdEl0ZW1UaXRsZT47XG5cblxuICBAVmlld0NoaWxkKCdpbm5lckxpc3RJdGVtJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIF9pbm5lckxpc3RJdGVtOiBNYXRMaXN0SXRlbTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0xpc3RDb21wb25lbnQpKSBwdWJsaWMgX2xpc3Q6IE9MaXN0Q29tcG9uZW50XG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRMaW5lc1JlZiA9IHRoaXMuX3RpdGxlcy5sZW5ndGggKyB0aGlzLl9saW5lcy5sZW5ndGg7XG5cbiAgICBjb25zdCBuZ0FmdGVyQ29udGVudEluaXRPcmlnaW5hbCA9IHRoaXMuX2lubmVyTGlzdEl0ZW0ubmdBZnRlclZpZXdJbml0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW5cbiAgICB0aGlzLl9pbm5lckxpc3RJdGVtLm5nQWZ0ZXJWaWV3SW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVtcHR5RGl2ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbGlzdC10ZXh0OmVtcHR5Jyk7XG4gICAgICBpZiAoZW1wdHlEaXYpIHtcbiAgICAgICAgZW1wdHlEaXYucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saW5lcyA9IG1hdExpbmVzUmVmO1xuICAgICAgbmdBZnRlckNvbnRlbnRJbml0T3JpZ2luYWwuYXBwbHkodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRldGFpbEljb25DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdC52aWV3RGV0YWlsKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRJY29uQ2xpY2tlZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZSkpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3QuZWRpdERldGFpbCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkpIHtcbiAgICAgIHRoaXMubW9kZWxEYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0LnNlbGVjdGFibGUgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5tb2RlbERhdGEpKSB7XG4gICAgICB0aGlzLl9saXN0LnNldFNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdC5pc0l0ZW1TZWxlY3RlZCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxufVxuIiwiPG1hdC1saXN0LWl0ZW0gI2lubmVyTGlzdEl0ZW0+XG4gIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1zZWxlY3Rpb24tY2hlY2tcIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LnNlbGVjdGFibGVcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIChjbGljayk9XCJvbkNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LWl0ZW0tYXZhdGFyXSwgW21hdExpc3RBdmF0YXJdLCBbbWF0TGlzdEljb25dXCI+IDwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtbGlzdC1pdGVtXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdExpbmVdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPCEtLW1hdExpc3RJdGVtTWV0YSB0byBwdXQgY29udGVudCBpbnRvIHRoZSBtZXRhIHNlY3Rpb24gb2YgYSBsaXN0IGl0ZW0tLT5cbiAgPGRpdiBtYXRMaXN0SXRlbU1ldGE+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tY2FyZC1pbWFnZSxvLWxpc3QtaXRlbS1jYXJkXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tdGV4dCxvLWxpc3QtaXRlbS1hdmF0YXIsIFtvLWxpc3QtaXRlbV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwicm93LWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbGlzdC1yb3ctYWN0aW9uIG8tbGlzdC1pdGVtLWljb25cIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LmVkaXRCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkVkaXRJY29uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IF9saXN0LmVkaXRCdXR0b25JblJvd0ljb24gfX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1pY29uXCIgKm5nSWY9XCJfbGlzdCAmJiBfbGlzdC5kZXRhaWxCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkRldGFpbEljb25DbGlja2VkKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgX2xpc3QuZGV0YWlsQnV0dG9uSW5Sb3dJY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1saXN0LWl0ZW0+XG4iXX0=
@@ -86,9 +86,9 @@ export class OListItemDirective {
86
86
  return this.modelData;
87
87
  }
88
88
  }
89
- OListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListItemDirective, deps: [{ token: i1.ListItem, host: true, optional: true, self: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Directive });
90
- OListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OListItemDirective, selector: "o-list-item, mat-list-item[o-list-item], mat-card[o-list-item]", inputs: { modelData: ["o-list-item", "modelData"], selectable: "selectable" }, host: { listeners: { "click": "onItemClicked($event)", "dblclick": "onItemDoubleClicked($event)", "mouseenter": "onMouseEnter()" }, properties: { "class.o-list-item": "true" } }, exportAs: ["olistitem"], ngImport: i0 });
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListItemDirective, decorators: [{
89
+ OListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemDirective, deps: [{ token: i1.ListItem, host: true, optional: true, self: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Directive });
90
+ OListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OListItemDirective, selector: "o-list-item, mat-list-item[o-list-item], mat-card[o-list-item]", inputs: { modelData: ["o-list-item", "modelData"], selectable: "selectable" }, host: { listeners: { "click": "onItemClicked($event)", "dblclick": "onItemDoubleClicked($event)", "mouseenter": "onMouseEnter()" }, properties: { "class.o-list-item": "true" } }, exportAs: ["olistitem"], ngImport: i0 });
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemDirective, decorators: [{
92
92
  type: Directive,
93
93
  args: [{
94
94
  selector: 'o-list-item, mat-list-item[o-list-item], mat-card[o-list-item]',
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
114
114
  type: HostListener,
115
115
  args: ['mouseenter']
116
116
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixJQUFJLEVBQ0osWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFXekMsTUFBTSxPQUFPLGtCQUFrQjtJQWM3QixZQUNxQyxRQUFrQixFQUM5QyxHQUFlLEVBQ2QsUUFBbUIsRUFDcEIsUUFBd0I7UUFISSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzlDLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBaEIxQixZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU10RCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBR3pCLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFPdEQsQ0FBQztJQUVFLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFD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QUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzsrR0EvRlUsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFUOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0VBQWdFO29CQUMxRSxRQUFRLEVBQUUsV0FBVztvQkFDckIsSUFBSSxFQUFFO3dCQUNKLHFCQUFxQixFQUFFLE1BQU07d0JBQzdCLFNBQVMsRUFBRSx1QkFBdUI7d0JBQ2xDLFlBQVksRUFBRSw2QkFBNkI7cUJBQzVDO2lCQUNGOzswQkFnQkksSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTswSEFUcEIsU0FBUztzQkFEZixLQUFLO3VCQUFDLGFBQWE7Z0JBSWIsVUFBVTtzQkFEaEIsS0FBSztnQkFzQkMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElMaXN0IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLWxpc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9vLWxpc3QtaXRlbSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ28tbGlzdC1pdGVtLCBtYXQtbGlzdC1pdGVtW28tbGlzdC1pdGVtXSwgbWF0LWNhcmRbby1saXN0LWl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdvbGlzdGl0ZW0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWxpc3QtaXRlbV0nOiAndHJ1ZScsXG4gICAgJyhjbGljayknOiAnb25JdGVtQ2xpY2tlZCgkZXZlbnQpJyxcbiAgICAnKGRibGNsaWNrKSc6ICdvbkl0ZW1Eb3VibGVDbGlja2VkKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIG9uRG91YmxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgnby1saXN0LWl0ZW0nKVxuICBwdWJsaWMgbW9kZWxEYXRhOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgX2xpc3Q6IElMaXN0O1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEhvc3QoKSBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBsaXN0SXRlbTogTGlzdEl0ZW0sXG4gICAgcHVibGljIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5hY3RSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlKHBhcmFtcykpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHB1YmxpYyBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5fbGlzdCAmJiB0aGlzLl9saXN0LmRldGFpbE1vZGUgIT09IENvZGVzLkRFVEFJTF9NT0RFX05PTkUpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ2N1cnNvcicsICdwb2ludGVyJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZVN0YXRlKHBhcmFtcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0KSB7XG4gICAgICBjb25zdCBhS2V5cyA9IHRoaXMuX2xpc3QuZ2V0S2V5cygpO1xuICAgICAgaWYgKHRoaXMubW9kZWxEYXRhKSB7XG4gICAgICAgIGxldCBfYWN0ID0gZmFsc2U7XG4gICAgICAgIGlmIChhS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBhS2V5cy5sZW5ndGg7ICsraykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYUtleXNba107XG4gICAgICAgICAgICBjb25zdCBpZCA9IHBhcmFtc1trZXldO1xuICAgICAgICAgICAgX2FjdCA9ICh0aGlzLm1vZGVsRGF0YVtrZXldID09PSBpZCk7XG4gICAgICAgICAgICBpZiAoX2FjdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChfYWN0KSB7XG4gICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtYWN0aXZlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtYXQtYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbWF0LWFjdGl2ZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuX2xpc3QpIHtcbiAgICAgIHRoaXMuX2xpc3Qub25JdGVtRGV0YWlsQ2xpY2sodGhpcyk7XG4gICAgICB0aGlzLm9uQ2xpY2suZW1pdCh0aGlzLmdldEl0ZW1EYXRhKCkpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSXRlbURvdWJsZUNsaWNrZWQoZT86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5fbGlzdCkge1xuICAgICAgdGhpcy5fbGlzdC5vbkl0ZW1EZXRhaWxEb3VibGVDbGljayh0aGlzKTtcbiAgICAgIHRoaXMub25Eb3VibGVDbGljay5lbWl0KHRoaXMuZ2V0SXRlbURhdGEoKSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCAmJiB0aGlzLl9saXN0LmlzSXRlbVNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaXN0Q29tcG9uZW50KGxpc3Q6IElMaXN0KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdCA9IGxpc3Q7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkgfHwgdGhpcy5tb2RlbERhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLm1vZGVsRGF0YSA9IGRhdGE7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmxpc3RJdGVtKSkge1xuICAgICAgdGhpcy5saXN0SXRlbS5zZXRJdGVtRGF0YSh0aGlzLm1vZGVsRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEl0ZW1EYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxEYXRhO1xuICB9XG5cbn1cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixJQUFJLEVBQ0osWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFXekMsTUFBTSxPQUFPLGtCQUFrQjtJQWM3QixZQUNxQyxRQUFrQixFQUM5QyxHQUFlLEVBQ2QsUUFBbUIsRUFDcEIsUUFBd0I7UUFISSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzlDLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBaEIxQixZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU10RCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBR3pCLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFPdEQsQ0FBQztJQUVFLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFD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QUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOztnSEEvRlUsa0JBQWtCO29HQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFUOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0VBQWdFO29CQUMxRSxRQUFRLEVBQUUsV0FBVztvQkFDckIsSUFBSSxFQUFFO3dCQUNKLHFCQUFxQixFQUFFLE1BQU07d0JBQzdCLFNBQVMsRUFBRSx1QkFBdUI7d0JBQ2xDLFlBQVksRUFBRSw2QkFBNkI7cUJBQzVDO2lCQUNGOzswQkFnQkksSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTswSEFUcEIsU0FBUztzQkFEZixLQUFLO3VCQUFDLGFBQWE7Z0JBSWIsVUFBVTtzQkFEaEIsS0FBSztnQkFzQkMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElMaXN0IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLWxpc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9vLWxpc3QtaXRlbSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ28tbGlzdC1pdGVtLCBtYXQtbGlzdC1pdGVtW28tbGlzdC1pdGVtXSwgbWF0LWNhcmRbby1saXN0LWl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdvbGlzdGl0ZW0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWxpc3QtaXRlbV0nOiAndHJ1ZScsXG4gICAgJyhjbGljayknOiAnb25JdGVtQ2xpY2tlZCgkZXZlbnQpJyxcbiAgICAnKGRibGNsaWNrKSc6ICdvbkl0ZW1Eb3VibGVDbGlja2VkKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIG9uRG91YmxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgnby1saXN0LWl0ZW0nKVxuICBwdWJsaWMgbW9kZWxEYXRhOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgX2xpc3Q6IElMaXN0O1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEhvc3QoKSBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBsaXN0SXRlbTogTGlzdEl0ZW0sXG4gICAgcHVibGljIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5hY3RSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlKHBhcmFtcykpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHB1YmxpYyBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5fbGlzdCAmJiB0aGlzLl9saXN0LmRldGFpbE1vZGUgIT09IENvZGVzLkRFVEFJTF9NT0RFX05PTkUpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ2N1cnNvcicsICdwb2ludGVyJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZVN0YXRlKHBhcmFtcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0KSB7XG4gICAgICBjb25zdCBhS2V5cyA9IHRoaXMuX2xpc3QuZ2V0S2V5cygpO1xuICAgICAgaWYgKHRoaXMubW9kZWxEYXRhKSB7XG4gICAgICAgIGxldCBfYWN0ID0gZmFsc2U7XG4gICAgICAgIGlmIChhS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBhS2V5cy5sZW5ndGg7ICsraykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYUtleXNba107XG4gICAgICAgICAgICBjb25zdCBpZCA9IHBhcmFtc1trZXldO1xuICAgICAgICAgICAgX2FjdCA9ICh0aGlzLm1vZGVsRGF0YVtrZXldID09PSBpZCk7XG4gICAgICAgICAgICBpZiAoX2FjdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChfYWN0KSB7XG4gICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtYWN0aXZlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtYXQtYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbWF0LWFjdGl2ZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuX2xpc3QpIHtcbiAgICAgIHRoaXMuX2xpc3Qub25JdGVtRGV0YWlsQ2xpY2sodGhpcyk7XG4gICAgICB0aGlzLm9uQ2xpY2suZW1pdCh0aGlzLmdldEl0ZW1EYXRhKCkpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSXRlbURvdWJsZUNsaWNrZWQoZT86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5fbGlzdCkge1xuICAgICAgdGhpcy5fbGlzdC5vbkl0ZW1EZXRhaWxEb3VibGVDbGljayh0aGlzKTtcbiAgICAgIHRoaXMub25Eb3VibGVDbGljay5lbWl0KHRoaXMuZ2V0SXRlbURhdGEoKSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCAmJiB0aGlzLl9saXN0LmlzSXRlbVNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaXN0Q29tcG9uZW50KGxpc3Q6IElMaXN0KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdCA9IGxpc3Q7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkgfHwgdGhpcy5tb2RlbERhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLm1vZGVsRGF0YSA9IGRhdGE7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmxpc3RJdGVtKSkge1xuICAgICAgdGhpcy5saXN0SXRlbS5zZXRJdGVtRGF0YSh0aGlzLm1vZGVsRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEl0ZW1EYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxEYXRhO1xuICB9XG5cbn1cbiJdfQ==
@@ -18,14 +18,13 @@ import * as i1 from "@angular/common";
18
18
  import * as i2 from "../input/search-input/o-search-input.component";
19
19
  import * as i3 from "@angular/flex-layout/flex";
20
20
  import * as i4 from "@angular/material/button";
21
- import * as i5 from "@angular/material/core";
22
- import * as i6 from "@angular/material/icon";
23
- import * as i7 from "@angular/material/list";
24
- import * as i8 from "@angular/material/progress-spinner";
25
- import * as i9 from "@angular/material/paginator";
26
- import * as i10 from "../o-data-toolbar/o-data-toolbar.component";
27
- import * as i11 from "../../pipes/o-translate.pipe";
28
- import * as i12 from "../form/o-form.component";
21
+ import * as i5 from "@angular/material/icon";
22
+ import * as i6 from "@angular/material/list";
23
+ import * as i7 from "@angular/material/paginator";
24
+ import * as i8 from "../o-data-toolbar/o-data-toolbar.component";
25
+ import * as i9 from "./skeleton/o-list-skeleton/o-list-skeleton.component";
26
+ import * as i10 from "../../pipes/o-translate.pipe";
27
+ import * as i11 from "../form/o-form.component";
29
28
  export const DEFAULT_INPUTS_O_LIST = [
30
29
  'quickFilterColumns: quick-filter-columns',
31
30
  'refreshButton: refresh-button',
@@ -266,12 +265,12 @@ export class OListComponent extends AbstractOServiceComponent {
266
265
  return sqlTypes;
267
266
  }
268
267
  }
269
- OListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
270
- OListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OListComponent, selector: "o-list", inputs: { quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], refreshButton: ["refresh-button", "refreshButton"], route: "route", selectable: "selectable", deleteButton: ["delete-button", "deleteButton"], sortColumns: ["sort-columns", "sortColumns"], insertButtonPosition: ["insert-button-position", "insertButtonPosition"], insertButtonFloatable: ["insert-button-floatable", "insertButtonFloatable"], showButtonsText: ["show-buttons-text", "showButtonsText"], keysSqlTypes: ["keys-sql-types", "keysSqlTypes"] }, outputs: { onInsertButtonClick: "onInsertButtonClick", onItemDeleted: "onItemDeleted" }, host: { properties: { "class.o-list": "true" } }, providers: [
268
+ OListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
269
+ OListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListComponent, selector: "o-list", inputs: { quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], refreshButton: ["refresh-button", "refreshButton"], route: "route", selectable: "selectable", deleteButton: ["delete-button", "deleteButton"], sortColumns: ["sort-columns", "sortColumns"], insertButtonPosition: ["insert-button-position", "insertButtonPosition"], insertButtonFloatable: ["insert-button-floatable", "insertButtonFloatable"], showButtonsText: ["show-buttons-text", "showButtonsText"], keysSqlTypes: ["keys-sql-types", "keysSqlTypes"] }, outputs: { onInsertButtonClick: "onInsertButtonClick", onItemDeleted: "onItemDeleted" }, host: { properties: { "class.o-list": "true" } }, providers: [
271
270
  OntimizeServiceProvider,
272
271
  ComponentStateServiceProvider,
273
272
  { provide: O_COMPONENT_STATE_SERVICE, useClass: OListComponentStateService },
274
- ], queries: [{ propertyName: "listItemDirectives", predicate: OListItemDirective }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\">\n <mat-progress-spinner strokeWidth=\"3\" mode=\"indeterminate\"></mat-progress-spinner>\n </div>\n <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\">\n\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matLine>\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0;background:rgb(255,255,255)}.o-list-container .spinner-container.pageable-loading{background:rgba(255,255,255,.5)}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.OSearchInputComponent, selector: "o-search-input", inputs: ["placeholder", "label", "width", "float-label", "appearance", "columns", "filter-case-sensitive", "show-case-sensitive-checkbox", "show-menu"], outputs: ["onSearch"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "directive", type: i5.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i9.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i10.ODataToolbarComponent, selector: "o-data-toolbar", inputs: ["show-title", "title"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
273
+ ], queries: [{ propertyName: "listItemDirectives", predicate: OListItemDirective }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\">\n <o-list-skeleton></o-list-skeleton>\n </div>\n <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\"\n (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\"\n (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <ng-container *ngIf=\"(loading | async) === false\">\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\" >\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n</ng-container>\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.OSearchInputComponent, selector: "o-search-input", inputs: ["placeholder", "label", "width", "float-label", "appearance", "columns", "filter-case-sensitive", "show-case-sensitive-checkbox", "show-menu"], outputs: ["onSearch"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i6.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i6.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.ODataToolbarComponent, selector: "o-data-toolbar", inputs: ["show-title", "title"] }, { kind: "component", type: i9.OListSkeletonComponent, selector: "o-list-skeleton" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
275
274
  __decorate([
276
275
  BooleanInputConverter(),
277
276
  __metadata("design:type", Boolean)
@@ -292,7 +291,7 @@ __decorate([
292
291
  BooleanInputConverter(),
293
292
  __metadata("design:type", Boolean)
294
293
  ], OListComponent.prototype, "showButtonsText", void 0);
295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListComponent, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListComponent, decorators: [{
296
295
  type: Component,
297
296
  args: [{ selector: 'o-list', providers: [
298
297
  OntimizeServiceProvider,
@@ -300,8 +299,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
300
299
  { provide: O_COMPONENT_STATE_SERVICE, useClass: OListComponentStateService },
301
300
  ], inputs: DEFAULT_INPUTS_O_LIST, outputs: DEFAULT_OUTPUTS_O_LIST, encapsulation: ViewEncapsulation.None, host: {
302
301
  '[class.o-list]': 'true'
303
- }, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\">\n <mat-progress-spinner strokeWidth=\"3\" mode=\"indeterminate\"></mat-progress-spinner>\n </div>\n <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\">\n\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matLine>\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0;background:rgb(255,255,255)}.o-list-container .spinner-container.pageable-loading{background:rgba(255,255,255,.5)}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"] }]
304
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i12.OFormComponent, decorators: [{
302
+ }, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\">\n <o-list-skeleton></o-list-skeleton>\n </div>\n <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\"\n (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\"\n (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <ng-container *ngIf=\"(loading | async) === false\">\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\" >\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n</ng-container>\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"] }]
303
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i11.OFormComponent, decorators: [{
305
304
  type: Optional
306
305
  }, {
307
306
  type: Inject,
@@ -310,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
310
309
  type: ContentChildren,
311
310
  args: [OListItemDirective]
312
311
  }], refreshButton: [], selectable: [], deleteButton: [], insertButtonFloatable: [], showButtonsText: [] } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFJUixRQUFRLEVBQ1IsU0FBUyxFQUVULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUlqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFF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eyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGlzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1saXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1saXN0LWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPTGlzdENvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tbGlzdC1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPTGlzdEluaXRpYWxpemF0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tbGlzdC1pbml0aWFsaXphdGlvbi1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgT1F1ZXJ5RGF0YUFyZ3MgfSBmcm9tICcuLi8uLi90eXBlcy9xdWVyeS1kYXRhLWFyZ3MudHlwZSc7XG5pbXBvcnQgeyBTUUxPcmRlciB9IGZyb20gJy4uLy4uL3R5cGVzL3NxbC1vcmRlci50eXBlJztcbmltcG9ydCB7IE9ic2VydmFibGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9hc3luYyc7XG5pbXBvcnQgeyBTZXJ2aWNlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3NlcnZpY2UudXRpbHMnO1xuaW1wb3J0IHsgU1FMVHlwZXMgfSBmcm9tICcuLi8uLi91dGlsL3NxbHR5cGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RPU2VydmljZUNvbXBvbmVudCB9IGZyb20gJy4uL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgT01hdFNvcnQgfSBmcm9tICcuLi90YWJsZS9leHRlbnNpb25zL3NvcnQvby1tYXQtc29ydCc7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4vbGlzdC1pdGVtL28tbGlzdC1pdGVtJztcbmltcG9ydCB7IE9MaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vbGlzdC1pdGVtL28tbGlzdC1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0xJU1QgPSBbXG4gIC8vIHF1aWNrLWZpbHRlci1jb2x1bW5zIFtzdHJpbmddOiBjb2x1bW5zIG9mIHRoZSBmaWx0ZXIsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAncXVpY2tGaWx0ZXJDb2x1bW5zOiBxdWljay1maWx0ZXItY29sdW1ucycsXG5cbiAgLy8gcmVmcmVzaC1idXR0b24gW25vfHllc106IHNob3cgcmVmcmVzaCBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ3JlZnJlc2hCdXR0b246IHJlZnJlc2gtYnV0dG9uJyxcblxuICAncm91dGUnLFxuXG4gICdzZWxlY3RhYmxlJyxcblxuICAvLyBkZWxldGUtYnV0dG9uIFtub3x5ZXNdOiBzaG93IGRlbGV0ZSBidXR0b24gd2hlbiB1c2VyIHNlbGVjdCBpdGVtcy4gRGVmYXVsdDogeWVzLlxuICAnZGVsZXRlQnV0dG9uOiBkZWxldGUtYnV0dG9uJyxcblxuICAvLyBzb3J0LWNvbHVtbnMgW3N0cmluZ106IGluaXRpYWwgc29ydGluZywgd2l0aCB0aGUgZm9ybWF0IGNvbHVtbjpbQVNDfERFU0NdLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3NvcnRDb2x1bW5zOiBzb3J0LWNvbHVtbnMnLFxuXG4gIC8vIGluc2VydC1idXR0b24tcG9zaXRpb24gWyB0b3AgfCBib3R0b20gXTogcG9zaXRpb24gb2YgdGhlIGluc2VydCBidXR0b24uIERlZmF1bHQ6ICdib3R0b20nXG4gICdpbnNlcnRCdXR0b25Qb3NpdGlvbjppbnNlcnQtYnV0dG9uLXBvc2l0aW9uJyxcblxuICAvLyBpbnNlcnQtYnV0dG9uLWZsb2F0YWJsZSBbbm98eWVzXTogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRvIHBvc2l0aW9uIG9mIHRoZSBpbnNlcnQgYnV0dG9uIGlzIGZsb2F0aW5nIC4gRGVmYXVsdDogJ3llcydcbiAgJ2luc2VydEJ1dHRvbkZsb2F0YWJsZTppbnNlcnQtYnV0dG9uLWZsb2F0YWJsZScsXG5cbiAgLy8gc2hvdy1idXR0b25zLXRleHQgW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyB0ZXh0IG9mIGJ1dHRvbnMuIERlZmF1bHQ6IG5vLlxuICAnc2hvd0J1dHRvbnNUZXh0OiBzaG93LWJ1dHRvbnMtdGV4dCcsXG4gIC8vIGtleXMtc3FsLXR5cGVzIFtzdHJpbmddOiBlbnRpdHkga2V5cyB0eXBlcywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzU3FsVHlwZXM6IGtleXMtc3FsLXR5cGVzJyxcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19MSVNUID0gW1xuICAnb25JbnNlcnRCdXR0b25DbGljaycsXG4gICdvbkl0ZW1EZWxldGVkJ1xuXTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbGlzdCcsXG4gIHByb3ZpZGVyczogW1xuICAgIE9udGltaXplU2VydmljZVByb3ZpZGVyLFxuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9MaXN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gIF0sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19MSVNULFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19MSVNULFxuICB0ZW1wbGF0ZVVybDogJy4vby1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tbGlzdF0nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPTGlzdENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VDb21wb25lbnQ8T0xpc3RDb21wb25lbnRTdGF0ZVNlcnZpY2U+IGltcGxlbWVudHMgSUxpc3QsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oT0xpc3RJdGVtRGlyZWN0aXZlKVxuICBwdWJsaWMgbGlzdEl0ZW1EaXJlY3RpdmVzOiBRdWVyeUxpc3Q8T0xpc3RJdGVtRGlyZWN0aXZlPjtcblxuICAvKiBJbnB1dHMgKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyByZWZyZXNoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgZGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBpbnNlcnRCdXR0b25GbG9hdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0J1dHRvbnNUZXh0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcGFnaW5hdGlvbkNvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHF1aWNrRmlsdGVyQ29sdW1uczogc3RyaW5nO1xuICBwdWJsaWMgcm91dGU6IHN0cmluZztcbiAgcHVibGljIHNvcnRDb2x1bW5zOiBzdHJpbmc7XG4gIC8qIEVuZCBJbnB1dHMgKi9cblxuICBwdWJsaWMgc29ydENvbEFycmF5OiBTUUxPcmRlcltdID0gW107XG5cbiAgcHVibGljIG9uSW5zZXJ0QnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwdWJsaWMgb25JdGVtRGVsZXRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50Pih0cnVlLCBbXSk7XG4gIHB1YmxpYyBlbmFibGVkRGVsZXRlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpbnNlcnRCdXR0b25Qb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBwdWJsaWMgc3RvcmVQYWdpbmF0aW9uU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgX3F1aWNrRmlsdGVyQXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdvdXRsaW5lJztcbiAgcHJvdGVjdGVkIGtleXNTcWxUeXBlczogc3RyaW5nO1xuICBrZXlzU3FsVHlwZXNBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gIHByb3RlY3RlZCBvTWF0U29ydDogT01hdFNvcnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPRm9ybUNvbXBvbmVudCkpIGZvcm06IE9Gb3JtQ29tcG9uZW50XG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCBlbFJlZiwgZm9ybSk7XG4gICAgdGhpcy5vTWF0U29ydCA9IG5ldyBPTWF0U29ydCgpO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IE9MaXN0Q29tcG9uZW50U3RhdGVDbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnN0YXRlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmVuYWJsZWREZWxldGVCdXR0b24gPSAhdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLmFmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLmZpbHRlckNhc2VTZW5zaXRpdmUgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLmZpbHRlckNhc2VTZW5zaXRpdmUpID9cbiAgICAgIHRoaXMuc3RhdGUuZmlsdGVyQ2FzZVNlbnNpdGl2ZSA6XG4gICAgICB0aGlzLmZpbHRlckNhc2VTZW5zaXRpdmU7XG4gICAgdGhpcy5wYXJzZVNvcnRDb2x1bW5zKCk7XG4gICAgdGhpcy5yZWdpc3RlclF1aWNrRmlsdGVyKHRoaXMuc2VhcmNoSW5wdXRDb21wb25lbnQpO1xuICAgIGlmICh0aGlzLnF1ZXJ5T25Jbml0KSB7XG4gICAgICB0aGlzLnF1ZXJ5RGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRMaXN0SXRlbURpcmVjdGl2ZXNEYXRhKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubGlzdEl0ZW1EaXJlY3RpdmVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0TGlzdEl0ZW1EaXJlY3RpdmVzRGF0YSgpKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zdGF0aWNEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkgPSBjaGFuZ2VzLnN0YXRpY0RhdGEuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5vbkRhdGFMb2FkZWQuZW1pdCh0aGlzLmRhdGFSZXNwb25zZUFycmF5KTtcbiAgICAgIC8qIGlmIHRoZSBzdGF0aWMgZGF0YSBjaGFuZ2VzIGFmdGVyIHJlZ2lzdGVyaW5nIHRoZSBxdWljayBmaWx0ZXIsXG4gICAgICB0aGUgZmlsdGVyRGF0YSBtZXRob2QgaXMgY2FsbGVkIGVsc2Ugd2hlbiByZWdpc3RlcmluZyB0aGUgcXVpY2tmaWx0ZXJcbiAgICAgIG9yIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzICovXG4gICAgICBpZiAodGhpcy5xdWlja0ZpbHRlckNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmZpbHRlckRhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdPTGlzdENvbXBvbmVudF8nICsgdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICB0aGlzLmtleXNTcWxUeXBlc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMua2V5c1NxbFR5cGVzKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zKSkge1xuICAgICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XG4gICAgfVxuICAgIHRoaXMucXVpY2tGaWx0ZXJDb2xBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucywgdHJ1ZSk7XG4gICAgdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9IDA7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyKSkge1xuICAgICAgdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlaW5pdGlhbGl6ZShvcHRpb25zOiBPTGlzdEluaXRpYWxpemF0aW9uT3B0aW9ucyk6IHZvaWQge1xuICAgIHN1cGVyLnJlaW5pdGlhbGl6ZShvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxpc3RJdGVtQ2xpY2tlZChvbk5leHQ6IChpdGVtOiBPTGlzdEl0ZW1EaXJlY3RpdmUpID0+IHZvaWQpOiBvYmplY3Qge1xuICAgIHJldHVybiBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5vbkNsaWNrLCBvbk5leHQpO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbURldGFpbENsaWNrKGl0ZW06IE9MaXN0SXRlbURpcmVjdGl2ZSB8IExpc3RJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJdGVtQ2xpY2soaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVtRGV0YWlsRG91YmxlQ2xpY2soaXRlbTogT0xpc3RJdGVtRGlyZWN0aXZlIHwgTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUl0ZW1EYmxDbGljayhpdGVtKTtcbiAgfVxuXG4gIGdldERhdGFUb1N0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5nZXREYXRhVG9TdG9yZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZERhdGEoY2xlYXJTZWxlY3RlZEl0ZW1zOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnJlZnJlc2hTZWxlY3Rpb24oKTtcbiAgICBpZiAoY2xlYXJTZWxlY3RlZEl0ZW1zICYmIHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cbiAgICBsZXQgcXVlcnlBcmdzOiBPUXVlcnlEYXRhQXJncyA9IHt9O1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICAgIHF1ZXJ5QXJncyA9IHtcbiAgICAgICAgbGVuZ3RoOiBNYXRoLm1heCh0aGlzLnF1ZXJ5Um93cywgdGhpcy5kYXRhUmVzcG9uc2VBcnJheS5sZW5ndGgpLFxuICAgICAgICByZXBsYWNlOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMucXVlcnlEYXRhKHZvaWQgMCwgcXVlcnlBcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KGNsZWFyU2VsZWN0ZWRJdGVtczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5kYXRhUmVzcG9uc2VBcnJheSA9IFtdO1xuICAgICAgdGhpcy5yZWxvYWREYXRhKGNsZWFyU2VsZWN0ZWRJdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldFNvcnRlZERhdGFGcm9tQXJyYXkoZGF0YUFycmF5OiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5vTWF0U29ydC5nZXRTb3J0ZWREYXRhQnlTUUxPcmRlcihkYXRhQXJyYXksIHRoaXMuc29ydENvbEFycmF5KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0l0ZW1TZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgb25TY3JvbGwoZTogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXRwYWdpbmF0b3IpIHJldHVybjtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgY29uc3QgcGVuZGluZ1JlZ2lzdHJpZXMgPSB0aGlzLmRhdGFSZXNwb25zZUFycmF5Lmxlbmd0aCA8IHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXI7XG4gICAgICBpZiAoIXRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgJiYgcGVuZGluZ1JlZ2lzdHJpZXMpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGUudGFyZ2V0IGFzIGFueTtcbiAgICAgICAgaWYgKGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgZWxlbWVudC5zY3JvbGxUb3AgKyA1ID49IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgY29uc3QgcXVlcnlBcmdzOiBPUXVlcnlEYXRhQXJncyA9IHtcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCxcbiAgICAgICAgICAgIGxlbmd0aDogdGhpcy5xdWVyeVJvd3NcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucXVlcnlEYXRhKHZvaWQgMCwgcXVlcnlBcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoY2xlYXJTZWxlY3RlZEl0ZW1zOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkNPTkZJUk1fREVMRVRFJykudGhlbihyZXMgPT4ge1xuICAgICAgaWYgKHJlcyA9PT0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYXRhU2VydmljZSAmJiAodGhpcy5kZWxldGVNZXRob2QgaW4gdGhpcy5kYXRhU2VydmljZSkgJiYgdGhpcy5lbnRpdHkgJiYgKHRoaXMua2V5c0FycmF5Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVycyA9IFNlcnZpY2VVdGlscy5nZXRBcnJheVByb3BlcnRpZXMoc2VsZWN0ZWRJdGVtcywgdGhpcy5rZXlzQXJyYXkpO1xuICAgICAgICAgIGNvbnN0IHNxbFR5cGVzQXJnID0gdGhpcy5nZXRTcWxUeXBlc09mS2V5cygpO1xuICAgICAgICAgIG1lcmdlKGZpbHRlcnMubWFwKChrdiA9PiB0aGlzLmRhdGFTZXJ2aWNlW3RoaXMuZGVsZXRlTWV0aG9kXShrdiwgdGhpcy5lbnRpdHksIHNxbFR5cGVzQXJnKSkpKS5zdWJzY3JpYmUob2JzID0+IG9icy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5vbkl0ZW1EZWxldGVkLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWxlcnQoJ0VSUk9SJywgJ01FU1NBR0VTLkVSUk9SX0RFTEVURScpO1xuICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIC8vIEVuc3VyaW5nIHRoYXQgdGhlIGRlbGV0ZWQgaXRlbXMgd2lsbCBub3QgbG9uZ2VyIGJlIHBhcnQgb2YgdGhlIHNlbGVjdGlvbk1vZGVsXG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZWxldGVMb2NhbEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xlYXJTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQoZT86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkluc2VydEJ1dHRvbkNsaWNrLmVtaXQoZSk7XG4gICAgc3VwZXIuaW5zZXJ0RGV0YWlsKCk7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VTb3J0Q29sdW1ucygpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0Q29sdW1uc1BhcmFtID0gdGhpcy5zdGF0ZS5zb3J0Q29sdW1ucyB8fCB0aGlzLnNvcnRDb2x1bW5zO1xuICAgIHRoaXMuc29ydENvbEFycmF5ID0gU2VydmljZVV0aWxzLnBhcnNlU29ydENvbHVtbnMoc29ydENvbHVtbnNQYXJhbSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyOiBvYmplY3QsIG92cnJBcmdzPzogT1F1ZXJ5RGF0YUFyZ3MpOiBhbnlbXSB7XG4gICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSBzdXBlci5nZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXIsIG92cnJBcmdzKTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgcXVlcnlBcmd1bWVudHNbNl0gPSB0aGlzLnNvcnRDb2xBcnJheTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5QXJndW1lbnRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldExpc3RJdGVtRGlyZWN0aXZlc0RhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0SXRlbURpcmVjdGl2ZXMuZm9yRWFjaCgoZWxlbWVudDogT0xpc3RJdGVtRGlyZWN0aXZlLCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5zZXRJdGVtRGF0YSh0aGlzLmRhdGFBcnJheVtpbmRleF0pO1xuICAgICAgZWxlbWVudC5zZXRMaXN0Q29tcG9uZW50KHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVEYXRhTmF2aWdhdGlvbkluTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgIHN1cGVyLnNhdmVEYXRhTmF2aWdhdGlvbkluTG9jYWxTdG9yYWdlKCk7XG4gICAgdGhpcy5zdG9yZVBhZ2luYXRpb25TdGF0ZSA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZUFycmF5KGRhdGE6IGFueVtdLCByZXBsYWNlPzogYm9vbGVhbikge1xuICAgIGxldCByZXN1bHQgPSBkYXRhO1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlICYmICFyZXBsYWNlKSB7XG4gICAgICByZXN1bHQgPSAodGhpcy5kYXRhUmVzcG9uc2VBcnJheSB8fCBbXSkuY29uY2F0KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUXVpY2tGaWx0ZXIoYXJnOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5yZWdpc3RlclF1aWNrRmlsdGVyKGFyZyk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUucXVpY2tGaWx0ZXJBY3RpdmVDb2x1bW5zKSkge1xuICAgICAgY29uc3QgcGFyc2VkQXJyID0gVXRpbC5wYXJzZUFycmF5KHRoaXMuc3RhdGUucXVpY2tGaWx0ZXJBY3RpdmVDb2x1bW5zLCB0cnVlKTtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQuc2V0QWN0aXZlQ29sdW1ucyhwYXJzZWRBcnIpO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGFBcnJheShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXREYXRhQXJyYXkoZGF0YSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuc2V0U2VsZWN0ZWQoaXRlbSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UucmVmcmVzaFNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGVkSXRlbXMoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgfHwgIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUuc2VsZWN0aW9uKSB8fCB0aGlzLmdldFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMoc2VsZWN0ZWRJdGVtKTtcbiAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuZGF0YUFycmF5LmZpbmQoZGF0YSA9PiBpdGVtS2V5cy5ldmVyeShrZXkgPT4gZGF0YVtrZXldID09PSBzZWxlY3RlZEl0ZW1ba2V5XSkpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGZvdW5kSXRlbSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KGZvdW5kSXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3FsVHlwZXMoKSB7XG4gICAgY29uc3Qgc3FsVHlwZXMgPSB0aGlzLnNxbFR5cGVzO1xuICAgIHRoaXMua2V5c1NxbFR5cGVzQXJyYXkuZm9yRWFjaCgoa3N0LCBpKSA9PiBzcWxUeXBlc1t0aGlzLmtleXNBcnJheVtpXV0gPSBTUUxUeXBlcy5nZXRTUUxUeXBlVmFsdWUoa3N0KSk7XG4gICAgcmV0dXJuIHNxbFR5cGVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1saXN0LWNvbnRhaW5lclwiIFtzdHlsZS5kaXNwbGF5XT1cImlzVmlzaWJsZSgpPyAnJyA6ICdub25lJ1wiIGZ4RmlsbD5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmcgfCBhc3luY1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgW2NsYXNzLnBhZ2VhYmxlLWxvYWRpbmddPVwicGFnZWFibGUgJiYgc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPiAwXCJcbiAgICBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCI+XG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIHN0cm9rZVdpZHRoPVwiM1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPC9kaXY+XG4gIDxvLWRhdGEtdG9vbGJhciAqbmdJZj1cImhhc0NvbnRyb2xzKClcIiBbdGl0bGVdPVwidGl0bGVcIiBbc2hvdy10aXRsZV09XCJoYXNUaXRsZSgpXCIgY2xhc3M9XCJvLWxpc3QtdG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXIgby1kYXRhLXRvb2xiYXItcHJvamVjdGlvbi1zdGFydD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnV0dG9uc1RleHQ7ZWxzZSBzaG93QnV0dG9uc1dpdGhvdXRUZXh0XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJpbnNlcnRCdXR0b24gJiYgIWluc2VydEJ1dHRvbkZsb2F0YWJsZVwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiB0ZXh0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdBREQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwiby1saXN0LWJ1dHRvbiB0ZXh0XCIgYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiAoY2xpY2spPVwicmVsb2FkRGF0YSgpXCIgKm5nSWY9XCJyZWZyZXNoQnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdSRUZSRVNIJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkZWxldGVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJvLWxpc3QtYnV0dG9uIHRleHRcIiBtYXQtc3Ryb2tlZC1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdERUxFVEUnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0J1dHRvbnNXaXRob3V0VGV4dD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluc2VydEJ1dHRvbiAmJiAhaW5zZXJ0QnV0dG9uRmxvYXRhYmxlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiBuby10ZXh0XCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJJbnNlcnRcIiAoY2xpY2spPVwiYWRkKCRldmVudClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUmVmcmVzaFwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiBuby10ZXh0XCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm8tbGlzdC1idXR0b24gbm8tdGV4dFwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIiAoY2xpY2spPVwicmVtb3ZlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmRlbGV0ZVwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LXRvb2xiYXJdW3Bvc2l0aW9uPXN0YXJ0XVwiIG5nUHJvamVjdEFzPVwiW28tZGF0YS10b29sYmFyLWN1c3RvbS1wcm9qZWN0aW9uLXN0YXJ0XVwiPlxuICAgIDwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LXRvb2xiYXJdW3Bvc2l0aW9uPWVuZF1cIiBuZ1Byb2plY3RBcz1cIltvLWRhdGEtdG9vbGJhci1jdXN0b20tcHJvamVjdGlvbi1lbmRdXCI+XG4gICAgPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLWxpc3QtdG9vbGJhcl1cIiBuZ1Byb2plY3RBcz1cIltvLWRhdGEtdG9vbGJhci1jdXN0b20tcHJvamVjdGlvbi1zdGFydF1cIj5cbiAgICA8L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciBvLWRhdGEtdG9vbGJhci1wcm9qZWN0aW9uLWVuZD5cbiAgICAgIDxvLXNlYXJjaC1pbnB1dCAqbmdJZj1cInF1aWNrRmlsdGVyXCIgW2ZpbHRlci1jYXNlLXNlbnNpdGl2ZV09XCJmaWx0ZXJDYXNlU2Vuc2l0aXZlXCIgW3Nob3ctY2FzZS1zZW5zaXRpdmUtY2hlY2tib3hdPVwic2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpXCJcbiAgICAgICAgW2NvbHVtbnNdPVwicXVpY2tGaWx0ZXJDb2x1bW5zXCIgW3BsYWNlaG9sZGVyXT1cInF1aWNrRmlsdGVyUGxhY2Vob2xkZXJcIiBbYXBwZWFyYW5jZV09XCJxdWlja0ZpbHRlckFwcGVhcmFuY2VcIiBmbG9hdC1sYWJlbD1cIm5ldmVyXCI+XG4gICAgICA8L28tc2VhcmNoLWlucHV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L28tZGF0YS10b29sYmFyPlxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJvLWxpc3QtY29udGVudFwiIGZ4RmxleD1cIjEgMSAxMDAlXCI+XG5cbiAgICA8IS0tTUFULUxJU1QtLT5cbiAgICA8bWF0LWxpc3QgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiIFtjbGFzcy5zZWxlY3RhYmxlXT1cInNlbGVjdGFibGVcIlxuICAgICAgW2NsYXNzLm8tbGlzdC1pdGVtLWhhcy1idXR0b25zXT1cImluc2VydEJ1dHRvbiAmJiAoZWRpdEJ1dHRvbkluUm93IHx8IGRldGFpbEJ1dHRvbkluUm93KVwiPlxuXG4gICAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cIiFnZXREYXRhQXJyYXkoKS5sZW5ndGhcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgc3R5bGU9XCJjdXJzb3I6IGRlZmF1bHQ7XCI+XG4gICAgICAgIDxoMyBtYXRMaW5lPlxuICAgICAgICAgIHt7ICdUQUJMRS5FTVBUWScgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFF1aWNrRmlsdGVyVmFsdWUoKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRU1QVFlfVVNJTkdfRklMVEVSJyB8IG9UcmFuc2xhdGUgOiB7dmFsdWVzOiBbZ2V0UXVpY2tGaWx0ZXJWYWx1ZSgpXX0gfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L21hdC1saXN0PlxuICA8L2Rpdj5cbiAgPG1hdC1wYWdpbmF0b3IgZnhGbGV4PVwiMCAxIGF1dG9cIiBjbGFzcz1cIm8tbWF0LXBhZ2luYXRvclwiICNwYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uQ29udHJvbHNcIiBbbGVuZ3RoXT1cInRvdGFsUmVjb3Jkc1wiIFtwYWdlU2l6ZV09XCJxdWVyeVJvd3NcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwib25DaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XG5cbiAgPCEtLUlOU0VSVCBCVVRUT04gLS0+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiaW5zZXJ0QnV0dG9uICYmIGluc2VydEJ1dHRvbkZsb2F0YWJsZVwiIG1hdC1mYWIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCIgY2xhc3M9XCJhZGQtYnV0dG9uIGFkZC1idXR0b24tYm90dG9tXCJcbiAgICBbY2xhc3MuYWRkLWJ1dHRvbi1ib3R0b21dPVwiaW5zZXJ0QnV0dG9uUG9zaXRpb24gPT09J2JvdHRvbSdcIiBbY2xhc3MuYWRkLWJ1dHRvbi10b3BdPVwiaW5zZXJ0QnV0dG9uUG9zaXRpb24gPT09J3RvcCdcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG48L2Rpdj5cbiJdfQ==
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFJUixRQUFRLEVBQ1IsU0FBUyxFQUVULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUlqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFF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U2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL28tbGlzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsIE9fQ09NUE9ORU5UX1NUQVRFX1NFUlZJQ0UsIE9udGltaXplU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9MaXN0Q29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tbGlzdC1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWxpc3QtY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0xpc3RJbml0aWFsaXphdGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9vLWxpc3QtaW5pdGlhbGl6YXRpb24tb3B0aW9ucy50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgU1FMT3JkZXIgfSBmcm9tICcuLi8uLi90eXBlcy9zcWwtb3JkZXIudHlwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlV3JhcHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYXN5bmMnO1xuaW1wb3J0IHsgU2VydmljZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9zZXJ2aWNlLnV0aWxzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEFic3RyYWN0T1NlcnZpY2VDb21wb25lbnQgfSBmcm9tICcuLi9vLXNlcnZpY2UtY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE9NYXRTb3J0IH0gZnJvbSAnLi4vdGFibGUvZXh0ZW5zaW9ucy9zb3J0L28tbWF0LXNvcnQnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuL2xpc3QtaXRlbS9vLWxpc3QtaXRlbSc7XG5pbXBvcnQgeyBPTGlzdEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2xpc3QtaXRlbS9vLWxpc3QtaXRlbS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19MSVNUID0gW1xuICAvLyBxdWljay1maWx0ZXItY29sdW1ucyBbc3RyaW5nXTogY29sdW1ucyBvZiB0aGUgZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3F1aWNrRmlsdGVyQ29sdW1uczogcXVpY2stZmlsdGVyLWNvbHVtbnMnLFxuXG4gIC8vIHJlZnJlc2gtYnV0dG9uIFtub3x5ZXNdOiBzaG93IHJlZnJlc2ggYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdyZWZyZXNoQnV0dG9uOiByZWZyZXNoLWJ1dHRvbicsXG5cbiAgJ3JvdXRlJyxcblxuICAnc2VsZWN0YWJsZScsXG5cbiAgLy8gZGVsZXRlLWJ1dHRvbiBbbm98eWVzXTogc2hvdyBkZWxldGUgYnV0dG9uIHdoZW4gdXNlciBzZWxlY3QgaXRlbXMuIERlZmF1bHQ6IHllcy5cbiAgJ2RlbGV0ZUJ1dHRvbjogZGVsZXRlLWJ1dHRvbicsXG5cbiAgLy8gc29ydC1jb2x1bW5zIFtzdHJpbmddOiBpbml0aWFsIHNvcnRpbmcsIHdpdGggdGhlIGZvcm1hdCBjb2x1bW46W0FTQ3xERVNDXSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzb3J0Q29sdW1uczogc29ydC1jb2x1bW5zJyxcblxuICAvLyBpbnNlcnQtYnV0dG9uLXBvc2l0aW9uIFsgdG9wIHwgYm90dG9tIF06IHBvc2l0aW9uIG9mIHRoZSBpbnNlcnQgYnV0dG9uLiBEZWZhdWx0OiAnYm90dG9tJ1xuICAnaW5zZXJ0QnV0dG9uUG9zaXRpb246aW5zZXJ0LWJ1dHRvbi1wb3NpdGlvbicsXG5cbiAgLy8gaW5zZXJ0LWJ1dHRvbi1mbG9hdGFibGUgW25vfHllc106IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byBwb3NpdGlvbiBvZiB0aGUgaW5zZXJ0IGJ1dHRvbiBpcyBmbG9hdGluZyAuIERlZmF1bHQ6ICd5ZXMnXG4gICdpbnNlcnRCdXR0b25GbG9hdGFibGU6aW5zZXJ0LWJ1dHRvbi1mbG9hdGFibGUnLFxuXG4gIC8vIHNob3ctYnV0dG9ucy10ZXh0IFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgdGV4dCBvZiBidXR0b25zLiBEZWZhdWx0OiBuby5cbiAgJ3Nob3dCdXR0b25zVGV4dDogc2hvdy1idXR0b25zLXRleHQnLFxuICAvLyBrZXlzLXNxbC10eXBlcyBbc3RyaW5nXTogZW50aXR5IGtleXMgdHlwZXMsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAna2V5c1NxbFR5cGVzOiBrZXlzLXNxbC10eXBlcycsXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fTElTVCA9IFtcbiAgJ29uSW5zZXJ0QnV0dG9uQ2xpY2snLFxuICAnb25JdGVtRGVsZXRlZCdcbl07XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWxpc3QnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPbnRpbWl6ZVNlcnZpY2VQcm92aWRlcixcbiAgICBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlcixcbiAgICB7IHByb3ZpZGU6IE9fQ09NUE9ORU5UX1NUQVRFX1NFUlZJQ0UsIHVzZUNsYXNzOiBPTGlzdENvbXBvbmVudFN0YXRlU2VydmljZSB9LFxuICBdLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fTElTVCxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fTElTVCxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWxpc3RdJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50PE9MaXN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlPiBpbXBsZW1lbnRzIElMaXN0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBAQ29udGVudENoaWxkcmVuKE9MaXN0SXRlbURpcmVjdGl2ZSlcbiAgcHVibGljIGxpc3RJdGVtRGlyZWN0aXZlczogUXVlcnlMaXN0PE9MaXN0SXRlbURpcmVjdGl2ZT47XG5cbiAgLyogSW5wdXRzICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgcmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIGRlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgaW5zZXJ0QnV0dG9uRmxvYXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dCdXR0b25zVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHBhZ2luYXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBxdWlja0ZpbHRlckNvbHVtbnM6IHN0cmluZztcbiAgcHVibGljIHJvdXRlOiBzdHJpbmc7XG4gIHB1YmxpYyBzb3J0Q29sdW1uczogc3RyaW5nO1xuICAvKiBFbmQgSW5wdXRzICovXG5cbiAgcHVibGljIHNvcnRDb2xBcnJheTogU1FMT3JkZXJbXSA9IFtdO1xuXG4gIHB1YmxpYyBvbkluc2VydEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIG9uSXRlbURlbGV0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8RWxlbWVudD4odHJ1ZSwgW10pO1xuICBwdWJsaWMgZW5hYmxlZERlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaW5zZXJ0QnV0dG9uUG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgPSAnYm90dG9tJztcbiAgcHVibGljIHN0b3JlUGFnaW5hdGlvblN0YXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvdGVjdGVkIF9xdWlja0ZpbHRlckFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnb3V0bGluZSc7XG4gIHByb3RlY3RlZCBrZXlzU3FsVHlwZXM6IHN0cmluZztcbiAga2V5c1NxbFR5cGVzQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICBwcm90ZWN0ZWQgb01hdFNvcnQ6IE9NYXRTb3J0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudFxuICApIHtcbiAgICBzdXBlcihpbmplY3RvciwgZWxSZWYsIGZvcm0pO1xuICAgIHRoaXMub01hdFNvcnQgPSBuZXcgT01hdFNvcnQoKTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBPTGlzdENvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5lbmFibGVkRGVsZXRlQnV0dG9uID0gIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSkpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5hZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlID0gVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS5maWx0ZXJDYXNlU2Vuc2l0aXZlKSA/XG4gICAgICB0aGlzLnN0YXRlLmZpbHRlckNhc2VTZW5zaXRpdmUgOlxuICAgICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlO1xuICAgIHRoaXMucGFyc2VTb3J0Q29sdW1ucygpO1xuICAgIHRoaXMucmVnaXN0ZXJRdWlja0ZpbHRlcih0aGlzLnNlYXJjaElucHV0Q29tcG9uZW50KTtcbiAgICBpZiAodGhpcy5xdWVyeU9uSW5pdCkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0TGlzdEl0ZW1EaXJlY3RpdmVzRGF0YSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmxpc3RJdGVtRGlyZWN0aXZlcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldExpc3RJdGVtRGlyZWN0aXZlc0RhdGEoKSkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcE5hbWU6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc3RhdGljRGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRhdGFSZXNwb25zZUFycmF5ID0gY2hhbmdlcy5zdGF0aWNEYXRhLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMub25EYXRhTG9hZGVkLmVtaXQodGhpcy5kYXRhUmVzcG9uc2VBcnJheSk7XG4gICAgICAvKiBpZiB0aGUgc3RhdGljIGRhdGEgY2hhbmdlcyBhZnRlciByZWdpc3RlcmluZyB0aGUgcXVpY2sgZmlsdGVyLFxuICAgICAgdGhlIGZpbHRlckRhdGEgbWV0aG9kIGlzIGNhbGxlZCBlbHNlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIHF1aWNrZmlsdGVyXG4gICAgICBvciB3aGVuIGEgY2hhbmdlIG9jY3VycyAqL1xuICAgICAgaWYgKHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJEYXRhKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnT0xpc3RDb21wb25lbnRfJyArIHRoaXMub2F0dHI7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5rZXlzU3FsVHlwZXNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLmtleXNTcWxUeXBlcyk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucykpIHtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgIH1cbiAgICB0aGlzLnF1aWNrRmlsdGVyQ29sQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5xdWlja0ZpbHRlckNvbHVtbnMsIHRydWUpO1xuICAgIHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPSAwO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcikpIHtcbiAgICAgIHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWluaXRpYWxpemUob3B0aW9uczogT0xpc3RJbml0aWFsaXphdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdXBlci5yZWluaXRpYWxpemUob3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25MaXN0SXRlbUNsaWNrZWQob25OZXh0OiAoaXRlbTogT0xpc3RJdGVtRGlyZWN0aXZlKSA9PiB2b2lkKTogb2JqZWN0IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHRoaXMub25DbGljaywgb25OZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1EZXRhaWxDbGljayhpdGVtOiBPTGlzdEl0ZW1EaXJlY3RpdmUgfCBMaXN0SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSXRlbUNsaWNrKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbURldGFpbERvdWJsZUNsaWNrKGl0ZW06IE9MaXN0SXRlbURpcmVjdGl2ZSB8IExpc3RJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJdGVtRGJsQ2xpY2soaXRlbSk7XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuZ2V0RGF0YVRvU3RvcmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWREYXRhKGNsZWFyU2VsZWN0ZWRJdGVtczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5yZWZyZXNoU2VsZWN0aW9uKCk7XG4gICAgaWYgKGNsZWFyU2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gICAgbGV0IHF1ZXJ5QXJnczogT1F1ZXJ5RGF0YUFyZ3MgPSB7fTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9IDA7XG4gICAgICBxdWVyeUFyZ3MgPSB7XG4gICAgICAgIGxlbmd0aDogTWF0aC5tYXgodGhpcy5xdWVyeVJvd3MsIHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkubGVuZ3RoKSxcbiAgICAgICAgcmVwbGFjZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXJ5RGF0YSh2b2lkIDAsIHF1ZXJ5QXJncyk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkUGFnaW5hdGVkRGF0YUZyb21TdGFydChjbGVhclNlbGVjdGVkSXRlbXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZWFibGUpIHtcbiAgICAgIHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkgPSBbXTtcbiAgICAgIHRoaXMucmVsb2FkRGF0YShjbGVhclNlbGVjdGVkSXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTb3J0ZWREYXRhRnJvbUFycmF5KGRhdGFBcnJheTogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMub01hdFNvcnQuZ2V0U29ydGVkRGF0YUJ5U1FMT3JkZXIoZGF0YUFycmF5LCB0aGlzLnNvcnRDb2xBcnJheSk7XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIG9uU2Nyb2xsKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF0cGFnaW5hdG9yKSByZXR1cm47XG4gICAgaWYgKHRoaXMucGFnZWFibGUpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdSZWdpc3RyaWVzID0gdGhpcy5kYXRhUmVzcG9uc2VBcnJheS5sZW5ndGggPCB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyO1xuICAgICAgaWYgKCF0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICYmIHBlbmRpbmdSZWdpc3RyaWVzKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlLnRhcmdldCBhcyBhbnk7XG4gICAgICAgIGlmIChlbGVtZW50Lm9mZnNldEhlaWdodCArIGVsZW1lbnQuc2Nyb2xsVG9wICsgNSA+PSBlbGVtZW50LnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5QXJnczogT1F1ZXJ5RGF0YUFyZ3MgPSB7XG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMucXVlcnlSb3dzXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnF1ZXJ5RGF0YSh2b2lkIDAsIHF1ZXJ5QXJncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGNsZWFyU2VsZWN0ZWRJdGVtczogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZ2V0U2VsZWN0ZWRJdGVtcygpO1xuICAgIGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdNRVNTQUdFUy5DT05GSVJNX0RFTEVURScpLnRoZW4ocmVzID0+IHtcbiAgICAgIGlmIChyZXMgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNlcnZpY2UgJiYgKHRoaXMuZGVsZXRlTWV0aG9kIGluIHRoaXMuZGF0YVNlcnZpY2UpICYmIHRoaXMuZW50aXR5ICYmICh0aGlzLmtleXNBcnJheS5sZW5ndGggPiAwKSkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBTZXJ2aWNlVXRpbHMuZ2V0QXJyYXlQcm9wZXJ0aWVzKHNlbGVjdGVkSXRlbXMsIHRoaXMua2V5c0FycmF5KTtcbiAgICAgICAgICBjb25zdCBzcWxUeXBlc0FyZyA9IHRoaXMuZ2V0U3FsVHlwZXNPZktleXMoKTtcbiAgICAgICAgICBtZXJnZShmaWx0ZXJzLm1hcCgoa3YgPT4gdGhpcy5kYXRhU2VydmljZVt0aGlzLmRlbGV0ZU1ldGhvZF0oa3YsIHRoaXMuZW50aXR5LCBzcWxUeXBlc0FyZykpKSkuc3Vic2NyaWJlKG9icyA9PiBvYnMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMub25JdGVtRGVsZXRlZCwgc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFsZXJ0KCdFUlJPUicsICdNRVNTQUdFUy5FUlJPUl9ERUxFVEUnKTtcbiAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAvLyBFbnN1cmluZyB0aGF0IHRoZSBkZWxldGVkIGl0ZW1zIHdpbGwgbm90IGxvbmdlciBiZSBwYXJ0IG9mIHRoZSBzZWxlY3Rpb25Nb2RlbFxuICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5yZWxvYWREYXRhKCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGVsZXRlTG9jYWxJdGVtcygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNsZWFyU2VsZWN0ZWRJdGVtcykge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25JbnNlcnRCdXR0b25DbGljay5lbWl0KGUpO1xuICAgIHN1cGVyLmluc2VydERldGFpbCgpO1xuICB9XG5cbiAgcHVibGljIHBhcnNlU29ydENvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydENvbHVtbnNQYXJhbSA9IHRoaXMuc3RhdGUuc29ydENvbHVtbnMgfHwgdGhpcy5zb3J0Q29sdW1ucztcbiAgICB0aGlzLnNvcnRDb2xBcnJheSA9IFNlcnZpY2VVdGlscy5wYXJzZVNvcnRDb2x1bW5zKHNvcnRDb2x1bW5zUGFyYW0pO1xuICB9XG5cbiAgcHVibGljIGdldFF1ZXJ5QXJndW1lbnRzKGZpbHRlcjogb2JqZWN0LCBvdnJyQXJncz86IE9RdWVyeURhdGFBcmdzKTogYW55W10ge1xuICAgIGNvbnN0IHF1ZXJ5QXJndW1lbnRzID0gc3VwZXIuZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyLCBvdnJyQXJncyk7XG4gICAgaWYgKHRoaXMucGFnZWFibGUpIHtcbiAgICAgIHF1ZXJ5QXJndW1lbnRzWzZdID0gdGhpcy5zb3J0Q29sQXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBxdWVyeUFyZ3VtZW50cztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRMaXN0SXRlbURpcmVjdGl2ZXNEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdEl0ZW1EaXJlY3RpdmVzLmZvckVhY2goKGVsZW1lbnQ6IE9MaXN0SXRlbURpcmVjdGl2ZSwgaW5kZXgpID0+IHtcbiAgICAgIGVsZW1lbnQuc2V0SXRlbURhdGEodGhpcy5kYXRhQXJyYXlbaW5kZXhdKTtcbiAgICAgIGVsZW1lbnQuc2V0TGlzdENvbXBvbmVudCh0aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzYXZlRGF0YU5hdmlnYXRpb25JbkxvY2FsU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBzdXBlci5zYXZlRGF0YU5hdmlnYXRpb25JbkxvY2FsU3RvcmFnZSgpO1xuICAgIHRoaXMuc3RvcmVQYWdpbmF0aW9uU3RhdGUgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlUmVzcG9uc2VBcnJheShkYXRhOiBhbnlbXSwgcmVwbGFjZT86IGJvb2xlYW4pIHtcbiAgICBsZXQgcmVzdWx0ID0gZGF0YTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSAmJiAhcmVwbGFjZSkge1xuICAgICAgcmVzdWx0ID0gKHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkgfHwgW10pLmNvbmNhdChkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclF1aWNrRmlsdGVyKGFyZzogYW55KTogdm9pZCB7XG4gICAgc3VwZXIucmVnaXN0ZXJRdWlja0ZpbHRlcihhcmcpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnF1aWNrRmlsdGVyQ29tcG9uZW50KSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnF1aWNrRmlsdGVyQWN0aXZlQ29sdW1ucykpIHtcbiAgICAgIGNvbnN0IHBhcnNlZEFyciA9IFV0aWwucGFyc2VBcnJheSh0aGlzLnN0YXRlLnF1aWNrRmlsdGVyQWN0aXZlQ29sdW1ucywgdHJ1ZSk7XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyQ29tcG9uZW50LnNldEFjdGl2ZUNvbHVtbnMocGFyc2VkQXJyKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRhQXJyYXkoZGF0YTogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuc2V0RGF0YUFycmF5KGRhdGEpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHN1cGVyLnNldFNlbGVjdGVkKGl0ZW0pO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnJlZnJlc2hTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3RlZEl0ZW1zKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RhYmxlIHx8ICFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnNlbGVjdGlvbikgfHwgdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLnNlbGVjdGlvbi5mb3JFYWNoKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICBjb25zdCBpdGVtS2V5cyA9IE9iamVjdC5rZXlzKHNlbGVjdGVkSXRlbSk7XG4gICAgICBjb25zdCBmb3VuZEl0ZW0gPSB0aGlzLmRhdGFBcnJheS5maW5kKGRhdGEgPT4gaXRlbUtleXMuZXZlcnkoa2V5ID0+IGRhdGFba2V5XSA9PT0gc2VsZWN0ZWRJdGVtW2tleV0pKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChmb3VuZEl0ZW0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdChmb3VuZEl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFNxbFR5cGVzKCkge1xuICAgIGNvbnN0IHNxbFR5cGVzID0gdGhpcy5zcWxUeXBlcztcbiAgICB0aGlzLmtleXNTcWxUeXBlc0FycmF5LmZvckVhY2goKGtzdCwgaSkgPT4gc3FsVHlwZXNbdGhpcy5rZXlzQXJyYXlbaV1dID0gU1FMVHlwZXMuZ2V0U1FMVHlwZVZhbHVlKGtzdCkpO1xuICAgIHJldHVybiBzcWxUeXBlcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tbGlzdC1jb250YWluZXJcIiBbc3R5bGUuZGlzcGxheV09XCJpc1Zpc2libGUoKT8gJycgOiAnbm9uZSdcIiBmeEZpbGw+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nIHwgYXN5bmNcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIFtjbGFzcy5wYWdlYWJsZS1sb2FkaW5nXT1cInBhZ2VhYmxlICYmIHN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID4gMFwiXG4gICAgY2xhc3M9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxuICAgIDxvLWxpc3Qtc2tlbGV0b24+PC9vLWxpc3Qtc2tlbGV0b24+XG4gIDwvZGl2PlxuICA8by1kYXRhLXRvb2xiYXIgKm5nSWY9XCJoYXNDb250cm9scygpXCIgW3RpdGxlXT1cInRpdGxlXCIgW3Nob3ctdGl0bGVdPVwiaGFzVGl0bGUoKVwiIGNsYXNzPVwiby1saXN0LXRvb2xiYXJcIj5cbiAgICA8bmctY29udGFpbmVyIG8tZGF0YS10b29sYmFyLXByb2plY3Rpb24tc3RhcnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0J1dHRvbnNUZXh0O2Vsc2Ugc2hvd0J1dHRvbnNXaXRob3V0VGV4dFwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uICYmICFpbnNlcnRCdXR0b25GbG9hdGFibGVcIiBjbGFzcz1cIm8tbGlzdC1idXR0b24gdGV4dFwiIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gYXJpYS1sYWJlbD1cIkluc2VydFwiXG4gICAgICAgICAgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdBREQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwiby1saXN0LWJ1dHRvbiB0ZXh0XCIgYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiAoY2xpY2spPVwicmVsb2FkRGF0YSgpXCIgKm5nSWY9XCJyZWZyZXNoQnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdSRUZSRVNIJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkZWxldGVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJvLWxpc3QtYnV0dG9uIHRleHRcIiBtYXQtc3Ryb2tlZC1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdERUxFVEUnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0J1dHRvbnNXaXRob3V0VGV4dD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluc2VydEJ1dHRvbiAmJiAhaW5zZXJ0QnV0dG9uRmxvYXRhYmxlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiBuby10ZXh0XCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJJbnNlcnRcIlxuICAgICAgICAgIChjbGljayk9XCJhZGQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YWRkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgY2xhc3M9XCJvLWxpc3QtYnV0dG9uIG5vLXRleHRcIiAoY2xpY2spPVwicmVsb2FkRGF0YSgpXCIgKm5nSWY9XCJyZWZyZXNoQnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiBuby10ZXh0XCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJEZWxldGVcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiIChjbGljayk9XCJyZW1vdmUoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6ZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLWxpc3QtdG9vbGJhcl1bcG9zaXRpb249c3RhcnRdXCIgbmdQcm9qZWN0QXM9XCJbby1kYXRhLXRvb2xiYXItY3VzdG9tLXByb2plY3Rpb24tc3RhcnRdXCI+XG4gICAgPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLWxpc3QtdG9vbGJhcl1bcG9zaXRpb249ZW5kXVwiIG5nUHJvamVjdEFzPVwiW28tZGF0YS10b29sYmFyLWN1c3RvbS1wcm9qZWN0aW9uLWVuZF1cIj5cbiAgICA8L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW28tbGlzdC10b29sYmFyXVwiIG5nUHJvamVjdEFzPVwiW28tZGF0YS10b29sYmFyLWN1c3RvbS1wcm9qZWN0aW9uLXN0YXJ0XVwiPlxuICAgIDwvbmctY29udGVudD5cbiAgICA8bmctY29udGFpbmVyIG8tZGF0YS10b29sYmFyLXByb2plY3Rpb24tZW5kPlxuICAgICAgPG8tc2VhcmNoLWlucHV0ICpuZ0lmPVwicXVpY2tGaWx0ZXJcIiBbZmlsdGVyLWNhc2Utc2Vuc2l0aXZlXT1cImZpbHRlckNhc2VTZW5zaXRpdmVcIiBbc2hvdy1jYXNlLXNlbnNpdGl2ZS1jaGVja2JveF09XCJzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KClcIlxuICAgICAgICBbY29sdW1uc109XCJxdWlja0ZpbHRlckNvbHVtbnNcIiBbcGxhY2Vob2xkZXJdPVwicXVpY2tGaWx0ZXJQbGFjZWhvbGRlclwiIFthcHBlYXJhbmNlXT1cInF1aWNrRmlsdGVyQXBwZWFyYW5jZVwiIGZsb2F0LWxhYmVsPVwibmV2ZXJcIj5cbiAgICAgIDwvby1zZWFyY2gtaW5wdXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvby1kYXRhLXRvb2xiYXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIobG9hZGluZyB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiby1saXN0LWNvbnRlbnRcIiBmeEZsZXg9XCIxIDEgMTAwJVwiID5cbiAgICA8IS0tTUFULUxJU1QtLT5cbiAgICA8bWF0LWxpc3QgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwic2VsZWN0YWJsZVwiXG4gICAgICBbY2xhc3Muby1saXN0LWl0ZW0taGFzLWJ1dHRvbnNdPVwiaW5zZXJ0QnV0dG9uICYmIChlZGl0QnV0dG9uSW5Sb3cgfHwgZGV0YWlsQnV0dG9uSW5Sb3cpXCI+XG5cbiAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwiIWdldERhdGFBcnJheSgpLmxlbmd0aFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj5cbiAgICAgICAgPGgzIG1hdExpc3RJdGVtVGl0bGUgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgIHt7ICdUQUJMRS5FTVBUWScgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFF1aWNrRmlsdGVyVmFsdWUoKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRU1QVFlfVVNJTkdfRklMVEVSJyB8IG9UcmFuc2xhdGUgOiB7dmFsdWVzOiBbZ2V0UXVpY2tGaWx0ZXJWYWx1ZSgpXX0gfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L21hdC1saXN0PlxuICA8L2Rpdj5cbiAgPG1hdC1wYWdpbmF0b3IgZnhGbGV4PVwiMCAxIGF1dG9cIiBjbGFzcz1cIm8tbWF0LXBhZ2luYXRvclwiICNwYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uQ29udHJvbHNcIiBbbGVuZ3RoXT1cInRvdGFsUmVjb3Jkc1wiIFtwYWdlU2l6ZV09XCJxdWVyeVJvd3NcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwib25DaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XG5cbiAgPCEtLUlOU0VSVCBCVVRUT04gLS0+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiaW5zZXJ0QnV0dG9uICYmIGluc2VydEJ1dHRvbkZsb2F0YWJsZVwiIG1hdC1mYWIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCIgY2xhc3M9XCJhZGQtYnV0dG9uIGFkZC1idXR0b24tYm90dG9tXCJcbiAgICBbY2xhc3MuYWRkLWJ1dHRvbi1ib3R0b21dPVwiaW5zZXJ0QnV0dG9uUG9zaXRpb24gPT09J2JvdHRvbSdcIiBbY2xhc3MuYWRkLWJ1dHRvbi10b3BdPVwiaW5zZXJ0QnV0dG9uUG9zaXRpb24gPT09J3RvcCdcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -10,23 +10,26 @@ import { OListItemAvatarComponent } from './renderers/avatar/o-list-item-avatar.
10
10
  import { OListItemCardImageComponent } from './renderers/card-image/o-list-item-card-image.component';
11
11
  import { OListItemCardComponent } from './renderers/card/o-list-item-card.component';
12
12
  import { OListItemTextComponent } from './renderers/text/o-list-item-text.component';
13
+ import { OListSkeletonComponent } from './skeleton/o-list-skeleton/o-list-skeleton.component';
14
+ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
13
15
  import * as i0 from "@angular/core";
14
16
  export class OListModule {
15
17
  }
16
- OListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- OListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: OListModule, declarations: [OListComponent,
18
+ OListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
+ OListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: OListModule, declarations: [OListComponent,
18
20
  OListItemComponent,
19
21
  OListItemAvatarComponent,
20
22
  OListItemCardImageComponent,
21
23
  OListItemCardComponent,
22
- OListItemTextComponent], imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule], exports: [OListComponent,
24
+ OListItemTextComponent,
25
+ OListSkeletonComponent], imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule, NgxSkeletonLoaderModule], exports: [OListComponent,
23
26
  OListItemComponent,
24
27
  OListItemAvatarComponent,
25
28
  OListItemCardImageComponent,
26
29
  OListItemCardComponent,
27
30
  OListItemTextComponent] });
28
- OListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListModule, imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule] });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OListModule, decorators: [{
31
+ OListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListModule, imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule, NgxSkeletonLoaderModule] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListModule, decorators: [{
30
33
  type: NgModule,
31
34
  args: [{
32
35
  declarations: [
@@ -35,9 +38,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
35
38
  OListItemAvatarComponent,
36
39
  OListItemCardImageComponent,
37
40
  OListItemCardComponent,
38
- OListItemTextComponent
41
+ OListItemTextComponent,
42
+ OListSkeletonComponent
39
43
  ],
40
- imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule],
44
+ imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule, NgxSkeletonLoaderModule],
41
45
  exports: [
42
46
  OListComponent,
43
47
  OListItemComponent,
@@ -48,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
48
52
  ]
49
53
  }]
50
54
  }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFxQnJGLE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBakJoQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLHdCQUF3QjtRQUN4QiwyQkFBMkI7UUFDM0Isc0JBQXNCO1FBQ3RCLHNCQUFzQixhQUVoQixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsYUFFdkYsY0FBYztRQUNkLGtCQUFrQjtRQUNsQix3QkFBd0I7UUFDeEIsMkJBQTJCO1FBQzNCLHNCQUFzQjtRQUN0QixzQkFBc0I7eUdBR2pCLFdBQVcsWUFWVixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxrQkFBa0I7MkZBVWxGLFdBQVc7a0JBbkJ2QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRTt3QkFDVixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztvQkFDNUYsT0FBTyxFQUFFO3dCQUNMLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgT1NlYXJjaElucHV0TW9kdWxlIH0gZnJvbSAnLi4vaW5wdXQvc2VhcmNoLWlucHV0L28tc2VhcmNoLWlucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBPRGF0YVRvb2xiYXJNb2R1bGUgfSBmcm9tICcuLi9vLWRhdGEtdG9vbGJhci9vLWRhdGEtdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHsgT0xpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE9MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9vLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE9MaXN0SXRlbUF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL2F2YXRhci9vLWxpc3QtaXRlbS1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9MaXN0SXRlbUNhcmRJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL2NhcmQtaW1hZ2Uvby1saXN0LWl0ZW0tY2FyZC1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0xpc3RJdGVtQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL2NhcmQvby1saXN0LWl0ZW0tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0xpc3RJdGVtVGV4dENvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL3RleHQvby1saXN0LWl0ZW0tdGV4dC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBPTGlzdENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBPTGlzdEl0ZW1BdmF0YXJDb21wb25lbnQsXG4gICAgICAgIE9MaXN0SXRlbUNhcmRJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQ2FyZENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtVGV4dENvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NlYXJjaElucHV0TW9kdWxlLCBPU2hhcmVkTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE9EYXRhVG9vbGJhck1vZHVsZV0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBPTGlzdENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBPTGlzdEl0ZW1BdmF0YXJDb21wb25lbnQsXG4gICAgICAgIE9MaXN0SXRlbUNhcmRJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQ2FyZENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtVGV4dENvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RNb2R1bGUgeyB9XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUF1QjlELE1BQU0sT0FBTyxXQUFXOzt5R0FBWCxXQUFXOzBHQUFYLFdBQVcsaUJBbEJoQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLHdCQUF3QjtRQUN4QiwyQkFBMkI7UUFDM0Isc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0IsYUFFaEIsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLGFBRWhILGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsd0JBQXdCO1FBQ3hCLDJCQUEyQjtRQUMzQixzQkFBc0I7UUFDdEIsc0JBQXNCOzBHQUdqQixXQUFXLFlBVlYsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCOzRGQVUzRyxXQUFXO2tCQXBCdkIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztvQkFDckgsT0FBTyxFQUFFO3dCQUNMLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgT1NlYXJjaElucHV0TW9kdWxlIH0gZnJvbSAnLi4vaW5wdXQvc2VhcmNoLWlucHV0L28tc2VhcmNoLWlucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBPRGF0YVRvb2xiYXJNb2R1bGUgfSBmcm9tICcuLi9vLWRhdGEtdG9vbGJhci9vLWRhdGEtdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHsgT0xpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE9MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9vLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE9MaXN0SXRlbUF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL2F2YXRhci9vLWxpc3QtaXRlbS1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9MaXN0SXRlbUNhcmRJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL2NhcmQtaW1hZ2Uvby1saXN0LWl0ZW0tY2FyZC1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0xpc3RJdGVtQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL2NhcmQvby1saXN0LWl0ZW0tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0xpc3RJdGVtVGV4dENvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXJzL3RleHQvby1saXN0LWl0ZW0tdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0xpc3RTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4vc2tlbGV0b24vby1saXN0LXNrZWxldG9uL28tbGlzdC1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBPTGlzdENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBPTGlzdEl0ZW1BdmF0YXJDb21wb25lbnQsXG4gICAgICAgIE9MaXN0SXRlbUNhcmRJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQ2FyZENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtVGV4dENvbXBvbmVudCxcbiAgICAgICAgT0xpc3RTa2VsZXRvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NlYXJjaElucHV0TW9kdWxlLCBPU2hhcmVkTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE9EYXRhVG9vbGJhck1vZHVsZSwgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgT0xpc3RDb21wb25lbnQsXG4gICAgICAgIE9MaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgT0xpc3RJdGVtQXZhdGFyQ29tcG9uZW50LFxuICAgICAgICBPTGlzdEl0ZW1DYXJkSW1hZ2VDb21wb25lbnQsXG4gICAgICAgIE9MaXN0SXRlbUNhcmRDb21wb25lbnQsXG4gICAgICAgIE9MaXN0SXRlbVRleHRDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE9MaXN0TW9kdWxlIHsgfVxuIl19