shared-ui-test-2 1.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 (747) hide show
  1. package/constants/breadcrumbs.const.d.ts +1 -0
  2. package/constants/class-name.constant.d.ts +1 -0
  3. package/constants/query-design-custom-class.constant.d.ts +1 -0
  4. package/core/auth-providers.module.d.ts +7 -0
  5. package/core/blank/blank.component.d.ts +5 -0
  6. package/core/components/horizontal-navigation/horizontal-navigation-menu-item/horizontal-navigation-menu-item.component.d.ts +9 -0
  7. package/core/components/horizontal-navigation/horizontal-navigation.component.d.ts +7 -0
  8. package/core/components/not-authorized/not-authorized.component.d.ts +6 -0
  9. package/core/components/sidebar/main-navigation/main-navigation.component.d.ts +28 -0
  10. package/core/components/sidebar/sidebar.component.d.ts +5 -0
  11. package/core/components/top-navigation/top-navigation.component.d.ts +6 -0
  12. package/core/components/user-info-menu/user-info-menu.component.d.ts +32 -0
  13. package/core/constants/active-statuses.d.ts +2 -0
  14. package/core/constants/availability.d.ts +2 -0
  15. package/core/constants/dashboard-portal-url.d.ts +1 -0
  16. package/core/constants/full-width-modal-config.d.ts +2 -0
  17. package/core/constants/horizontal-navigation.config.d.ts +2 -0
  18. package/core/constants/local-constants.d.ts +13 -0
  19. package/core/constants/pagination.const.d.ts +6 -0
  20. package/core/constants/privacy.d.ts +2 -0
  21. package/core/constants/request-context.d.ts +7 -0
  22. package/core/constants/yes-no.d.ts +2 -0
  23. package/core/core.module.d.ts +18 -0
  24. package/core/directive/authorize.directive.d.ts +14 -0
  25. package/core/enums/client-name.enum.d.ts +4 -0
  26. package/core/enums/object-properties.enum.d.ts +57 -0
  27. package/core/interceptors/error.interceptor.d.ts +13 -0
  28. package/core/interceptors/health-check-header.interceptor.d.ts +10 -0
  29. package/core/interfaces/business-rule.interface.d.ts +54 -0
  30. package/core/interfaces/filters.api.interface.d.ts +32 -0
  31. package/core/interfaces/horizontal-navigation.interface.d.ts +11 -0
  32. package/core/interfaces/navigation.interface.d.ts +5 -0
  33. package/core/interfaces/response-headers.interface.d.ts +5 -0
  34. package/core/models/auth-service-configuration.d.ts +4 -0
  35. package/core/models/menu-elements-dto.d.ts +21 -0
  36. package/core/models/refresh-tokens-response.d.ts +5 -0
  37. package/core/models/version-data.d.ts +3 -0
  38. package/core/resolvers/policy.resolver.d.ts +18 -0
  39. package/core/services/http.service.d.ts +75 -0
  40. package/core/services/loading.service.d.ts +10 -0
  41. package/core/services/local-storage.service.d.ts +35 -0
  42. package/core/services/nav-menu-data.service.d.ts +13 -0
  43. package/core/services/user-management.service.d.ts +39 -0
  44. package/core/services/user-policy.service.d.ts +15 -0
  45. package/core/site/services/support-util.service.d.ts +18 -0
  46. package/core/token/app-auth-config-injection-token.d.ts +9 -0
  47. package/core/token/app-env-injection.token.d.ts +8 -0
  48. package/core/token/policy-injection-token.d.ts +2 -0
  49. package/core/utils/service-url.util.d.ts +1 -0
  50. package/core/utils/sql-to-filter-datatype-converter.d.ts +2 -0
  51. package/core/utils/type-checks.utils.d.ts +10 -0
  52. package/core/utils/uuid-generator.utils.d.ts +1 -0
  53. package/directives/let.directive.d.ts +25 -0
  54. package/directives/remove-cancel-button.directive.d.ts +10 -0
  55. package/enums/access-types.enum.d.ts +5 -0
  56. package/enums/action-types.enum.d.ts +16 -0
  57. package/enums/active-status.enum.d.ts +4 -0
  58. package/enums/sort-direction.enum.d.ts +4 -0
  59. package/enums/source-types.enum.d.ts +4 -0
  60. package/enums/tooltips-prop.enum.d.ts +31 -0
  61. package/esm2022/constants/breadcrumbs.const.mjs +2 -0
  62. package/esm2022/constants/class-name.constant.mjs +2 -0
  63. package/esm2022/constants/query-design-custom-class.constant.mjs +2 -0
  64. package/esm2022/core/auth-providers.module.mjs +131 -0
  65. package/esm2022/core/blank/blank.component.mjs +12 -0
  66. package/esm2022/core/components/horizontal-navigation/horizontal-navigation-menu-item/horizontal-navigation-menu-item.component.mjs +29 -0
  67. package/esm2022/core/components/horizontal-navigation/horizontal-navigation.component.mjs +17 -0
  68. package/esm2022/core/components/not-authorized/not-authorized.component.mjs +17 -0
  69. package/esm2022/core/components/sidebar/main-navigation/main-navigation.component.mjs +88 -0
  70. package/esm2022/core/components/sidebar/sidebar.component.mjs +12 -0
  71. package/esm2022/core/components/top-navigation/top-navigation.component.mjs +15 -0
  72. package/esm2022/core/components/user-info-menu/user-info-menu.component.mjs +96 -0
  73. package/esm2022/core/constants/active-statuses.mjs +9 -0
  74. package/esm2022/core/constants/availability.mjs +9 -0
  75. package/esm2022/core/constants/dashboard-portal-url.mjs +2 -0
  76. package/esm2022/core/constants/full-width-modal-config.mjs +10 -0
  77. package/esm2022/core/constants/horizontal-navigation.config.mjs +29 -0
  78. package/esm2022/core/constants/local-constants.mjs +28 -0
  79. package/esm2022/core/constants/pagination.const.mjs +10 -0
  80. package/esm2022/core/constants/privacy.mjs +9 -0
  81. package/esm2022/core/constants/request-context.mjs +9 -0
  82. package/esm2022/core/constants/yes-no.mjs +5 -0
  83. package/esm2022/core/core.module.mjs +81 -0
  84. package/esm2022/core/directive/authorize.directive.mjs +37 -0
  85. package/esm2022/core/enums/client-name.enum.mjs +6 -0
  86. package/esm2022/core/enums/object-properties.enum.mjs +67 -0
  87. package/esm2022/core/interceptors/error.interceptor.mjs +61 -0
  88. package/esm2022/core/interceptors/health-check-header.interceptor.mjs +25 -0
  89. package/esm2022/core/interfaces/business-rule.interface.mjs +18 -0
  90. package/esm2022/core/interfaces/filters.api.interface.mjs +12 -0
  91. package/esm2022/core/interfaces/horizontal-navigation.interface.mjs +2 -0
  92. package/esm2022/core/interfaces/navigation.interface.mjs +2 -0
  93. package/esm2022/core/interfaces/response-headers.interface.mjs +2 -0
  94. package/esm2022/core/models/auth-service-configuration.mjs +3 -0
  95. package/esm2022/core/models/menu-elements-dto.mjs +2 -0
  96. package/esm2022/core/models/refresh-tokens-response.mjs +3 -0
  97. package/esm2022/core/models/version-data.mjs +2 -0
  98. package/esm2022/core/resolvers/policy.resolver.mjs +52 -0
  99. package/esm2022/core/services/http.service.mjs +111 -0
  100. package/esm2022/core/services/loading.service.mjs +24 -0
  101. package/esm2022/core/services/local-storage.service.mjs +55 -0
  102. package/esm2022/core/services/nav-menu-data.service.mjs +21 -0
  103. package/esm2022/core/services/user-management.service.mjs +97 -0
  104. package/esm2022/core/services/user-policy.service.mjs +31 -0
  105. package/esm2022/core/site/services/support-util.service.mjs +55 -0
  106. package/esm2022/core/token/app-auth-config-injection-token.mjs +3 -0
  107. package/esm2022/core/token/app-env-injection.token.mjs +3 -0
  108. package/esm2022/core/token/policy-injection-token.mjs +3 -0
  109. package/esm2022/core/utils/service-url.util.mjs +7 -0
  110. package/esm2022/core/utils/sql-to-filter-datatype-converter.mjs +37 -0
  111. package/esm2022/core/utils/type-checks.utils.mjs +34 -0
  112. package/esm2022/core/utils/uuid-generator.utils.mjs +8 -0
  113. package/esm2022/directives/let.directive.mjs +48 -0
  114. package/esm2022/directives/remove-cancel-button.directive.mjs +23 -0
  115. package/esm2022/enums/access-types.enum.mjs +7 -0
  116. package/esm2022/enums/action-types.enum.mjs +18 -0
  117. package/esm2022/enums/active-status.enum.mjs +6 -0
  118. package/esm2022/enums/sort-direction.enum.mjs +6 -0
  119. package/esm2022/enums/source-types.enum.mjs +6 -0
  120. package/esm2022/enums/tooltips-prop.enum.mjs +33 -0
  121. package/esm2022/models/auth-token.mjs +2 -0
  122. package/esm2022/modules/dynamic-cards/directives/flip-card.directive.mjs +44 -0
  123. package/esm2022/modules/dynamic-cards/dynamic-card/card-list-container/card-list-container.component.mjs +20 -0
  124. package/esm2022/modules/dynamic-cards/dynamic-card/dynamic-card/dynamic-card.component.mjs +19 -0
  125. package/esm2022/modules/dynamic-cards/dynamic-card/dynamic-card-back/dynamic-card-back.component.mjs +16 -0
  126. package/esm2022/modules/dynamic-cards/dynamic-card/dynamic-card-footer/dynamic-card-footer.component.mjs +21 -0
  127. package/esm2022/modules/dynamic-cards/dynamic-card/dynamic-card-front/dynamic-card-front.component.mjs +18 -0
  128. package/esm2022/modules/dynamic-cards/dynamic-cards.module.mjs +60 -0
  129. package/esm2022/modules/dynamic-cards/interface/card-list.interface.mjs +2 -0
  130. package/esm2022/modules/dynamic-cards/interface/card.interface.mjs +2 -0
  131. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-button-control/dynamic-form-button-control.component.mjs +27 -0
  132. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-checkbox-control/dynamic-form-checkbox-control.component.mjs +19 -0
  133. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-control-label/dynamic-form-control-label.component.mjs +14 -0
  134. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-counter-control/dynamic-form-counter-control.component.mjs +43 -0
  135. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-datepicker-control/dynamic-form-datepicker-control.component.mjs +48 -0
  136. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-field-control/dynamic-form-field-control.component.mjs +96 -0
  137. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-field-control/dynamic-form-field.matcher.mjs +9 -0
  138. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-input-control/dynamic-form-input-control.component.mjs +22 -0
  139. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-ng-select-control/dynamic-form-ng-select-control.component.mjs +27 -0
  140. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-radio-group/dynamic-form-radio-group.component.mjs +31 -0
  141. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-radio-group/enum/radio-group-orientation.enum.mjs +6 -0
  142. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-select-control/dynamic-form-select-control.component.mjs +29 -0
  143. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-switch-control/dynamic-form-switch-control.component.mjs +18 -0
  144. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-text-area-control/dynamic-form-text-area-control.component.mjs +22 -0
  145. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-ui-control/dynamic-form-ui-control-list/dynamic-form-ui-control-list.component.mjs +74 -0
  146. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-ui-control/dynamic-form-ui-control.component.mjs +30 -0
  147. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/base-form-actions/base-form-actions.component.mjs +47 -0
  148. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/base-form-actions/enums/base-form-action-types.mjs +7 -0
  149. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/base-form-actions/interfaces/base-form-action.interface.mjs +2 -0
  150. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/dynamic-form-ui.component.mjs +64 -0
  151. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-array/dynamic-form-ui-array.component.mjs +26 -0
  152. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-group/dynamic-form-group.component.mjs +26 -0
  153. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-layout/dynamic-form-layout-item/dynamic-form-layout-item.component.mjs +65 -0
  154. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-layout/dynamic-form-layout.component.mjs +33 -0
  155. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/enums/form-field-css-class.enum.mjs +9 -0
  156. package/esm2022/modules/dynamic-forms/dynamic-form-UI/components/errors-block/errors-block.component.mjs +25 -0
  157. package/esm2022/modules/dynamic-forms/dynamic-form-UI/dynamic-form-ui.module.mjs +117 -0
  158. package/esm2022/modules/dynamic-forms/dynamic-form-UI/index.mjs +6 -0
  159. package/esm2022/modules/dynamic-forms/dynamic-form-UI/providers/ui-form-control-map.provider.mjs +47 -0
  160. package/esm2022/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-array.component.mjs +16 -0
  161. package/esm2022/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-component.mjs +82 -0
  162. package/esm2022/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-control-container.component.mjs +189 -0
  163. package/esm2022/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-control.component.mjs +112 -0
  164. package/esm2022/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-layout.component.mjs +34 -0
  165. package/esm2022/modules/dynamic-forms/dynamic-forms-core/constants/form-errors.constant.mjs +34 -0
  166. package/esm2022/modules/dynamic-forms/dynamic-forms-core/constants/matchers/matchers.constant.mjs +27 -0
  167. package/esm2022/modules/dynamic-forms/dynamic-forms-core/constants/reg-exp-error.constant.mjs +10 -0
  168. package/esm2022/modules/dynamic-forms/dynamic-forms-core/directives/dynamic-id.directive.mjs +24 -0
  169. package/esm2022/modules/dynamic-forms/dynamic-forms-core/directives/dynamic-list.directive.mjs +26 -0
  170. package/esm2022/modules/dynamic-forms/dynamic-forms-core/directives/dynamic-template.directive.mjs +29 -0
  171. package/esm2022/modules/dynamic-forms/dynamic-forms-core/dynamic-form-core.module.mjs +49 -0
  172. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/autocomplete.enum.mjs +6 -0
  173. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/control-types.enum.mjs +22 -0
  174. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/form-control-events.enum.mjs +8 -0
  175. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/form-control-statuses.enum.mjs +8 -0
  176. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/form-hooks.enum.mjs +7 -0
  177. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/input-types.enum.mjs +20 -0
  178. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/matcher-operators.enum.mjs +6 -0
  179. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/matcher-types.enum.mjs +10 -0
  180. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/template-directive-alignment.mjs +6 -0
  181. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/textarea-wrap.enum.mjs +6 -0
  182. package/esm2022/modules/dynamic-forms/dynamic-forms-core/enums/validation-states.enum.mjs +6 -0
  183. package/esm2022/modules/dynamic-forms/dynamic-forms-core/index.mjs +39 -0
  184. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/components/dynamic-templateable-form-control.interface.mjs +2 -0
  185. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/components/form-control/dynamic-form-control-event.interface.mjs +2 -0
  186. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/components/form-control/dynamic-form-control.interface.mjs +2 -0
  187. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/dynamic-form/dynamic-form-model.interface.mjs +2 -0
  188. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/form-control-layout.interface.mjs +2 -0
  189. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/form-layout-config.interface.mjs +2 -0
  190. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/form-layout.interface.mjs +2 -0
  191. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/layout-render-template.interface.mjs +2 -0
  192. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/matchers/form-control-matcher.interface.mjs +2 -0
  193. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-array/form-array-model-config.interface.mjs +2 -0
  194. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-button-control/button-control-model-config.interface.mjs +2 -0
  195. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-check-control/check-control-model-config.interface.mjs +2 -0
  196. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-control/form-control-model-config.interface.mjs +2 -0
  197. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-control/form-control-relation.interface.mjs +2 -0
  198. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-date-control/date-control-model-config.interface.mjs +2 -0
  199. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-file-control/file-control-model-config.interface.mjs +2 -0
  200. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-group/form-group-model-config.interface.mjs +2 -0
  201. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-input-control/form-input-control-config.interface.mjs +2 -0
  202. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-number-control/form-number-control-config.interface.mjs +2 -0
  203. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-option/form-option-config.interface.mjs +2 -0
  204. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-option-control/form-option-control-config.interface.mjs +2 -0
  205. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/button-control-model-config.interface.mjs +2 -0
  206. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/checkbox-control-model-config.interface.mjs +2 -0
  207. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/colorpicker-control-model-config.interface.mjs +2 -0
  208. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/datepicker-control-model-config.interface.mjs +2 -0
  209. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/fileupload-control-model-config.interface.mjs +2 -0
  210. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/input-control-model-config.interface.mjs +2 -0
  211. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/radio-group-model-config.interface.mjs +2 -0
  212. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/rating-control-model-config.interface.mjs +2 -0
  213. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/select-control-model-config.interface.mjs +2 -0
  214. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/slider-control-model-config.interface.mjs +2 -0
  215. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/switch-control-model-config.interface.mjs +2 -0
  216. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/textarea-control-model-config.interface.mjs +2 -0
  217. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/timepicker-control-model-config.interface.mjs +2 -0
  218. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-value-control/form-value-control.interface.mjs +2 -0
  219. package/esm2022/modules/dynamic-forms/dynamic-forms-core/interfaces/validators/validators.interface.mjs +2 -0
  220. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-array/dynamic-form-array.model.mjs +51 -0
  221. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-array/form-array-group/dynamic-form-array-group.model.mjs +15 -0
  222. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-button-control/dynamic-button-control.model.mjs +19 -0
  223. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-check-control/dynamic-check-control.model.mjs +19 -0
  224. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-control/dynamic-form-control.model.mjs +23 -0
  225. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-date-control/dynamic-date-control.model.mjs +11 -0
  226. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-file-control/dynamic-file-control.model.mjs +9 -0
  227. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-group/dynamic-form-group.model.mjs +37 -0
  228. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-input-control/dynamic-input-control.model.mjs +20 -0
  229. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-number-control/dynamic-number-control.model.mjs +15 -0
  230. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-option/form-option.model.mjs +15 -0
  231. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-option-control/dynamic-option-control.model.mjs +52 -0
  232. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-static-control/static-control.model.mjs +7 -0
  233. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/button/dynamic-button.model.mjs +13 -0
  234. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/checkbox/dynamic-checkbox-group.model.mjs +21 -0
  235. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/checkbox/dynamic-checkbox.model.mjs +12 -0
  236. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/colorpicker/dynamic-colorpicker.model.mjs +12 -0
  237. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/counter/dynamic-counter.model.mjs +11 -0
  238. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/datepicker/dynamic-datepicker.model.mjs +18 -0
  239. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/file-upload/dynamic-file-upload.model.mjs +17 -0
  240. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/input/dynamic-input.model.mjs +13 -0
  241. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/radio/dynamic-radio-group.model.mjs +13 -0
  242. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/rating/dynamic-rating.model.mjs +11 -0
  243. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/select/dynamic-select.model.mjs +18 -0
  244. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/slider/dynamic-slider.model.mjs +14 -0
  245. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/switch/dynamic-switch.model.mjs +11 -0
  246. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/textarea/dynamic-textarea.model.mjs +14 -0
  247. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/timepicker/dynamic-timepicker.model.mjs +12 -0
  248. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/form-value-control/form-value-control.model.mjs +25 -0
  249. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/layout/col-control.model.mjs +10 -0
  250. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/layout/enums/FormLayoutControlTypes.enum.mjs +7 -0
  251. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/layout/layout-control.model.mjs +8 -0
  252. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/layout/layout-group-control.mjs +9 -0
  253. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/layout/row-control.model.mjs +10 -0
  254. package/esm2022/modules/dynamic-forms/dynamic-forms-core/models/ng-select-control/dynamic-ng-select.model.mjs +19 -0
  255. package/esm2022/modules/dynamic-forms/dynamic-forms-core/pipes/find-dynamic-control-model/find-dynamic-control-model.mock.mjs +20 -0
  256. package/esm2022/modules/dynamic-forms/dynamic-forms-core/pipes/find-dynamic-control-model/find-dynamic-control-model.pipe.mjs +38 -0
  257. package/esm2022/modules/dynamic-forms/dynamic-forms-core/pipes/get-error-from-key-value.pipe.mjs +20 -0
  258. package/esm2022/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-component.service.mjs +37 -0
  259. package/esm2022/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-layout.service.mjs +35 -0
  260. package/esm2022/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-relation.service.mjs +22 -0
  261. package/esm2022/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-validation.service.mjs +35 -0
  262. package/esm2022/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form.service.mjs +239 -0
  263. package/esm2022/modules/dynamic-forms/dynamic-forms-core/service/static-form-service.mjs +111 -0
  264. package/esm2022/modules/dynamic-forms/dynamic-forms-core/tokens/dynamic-matchers.token.mjs +3 -0
  265. package/esm2022/modules/dynamic-forms/dynamic-forms-core/tokens/form-control-map.token.mjs +3 -0
  266. package/esm2022/modules/dynamic-forms/dynamic-forms-core/tokens/validators.token.mjs +3 -0
  267. package/esm2022/modules/dynamic-forms/dynamic-forms-core/utils/events/form-control-events.utils.mjs +5 -0
  268. package/esm2022/modules/dynamic-forms/dynamic-forms-core/utils/json/json.utils.mjs +30 -0
  269. package/esm2022/modules/dynamic-forms/dynamic-forms.module.mjs +32 -0
  270. package/esm2022/modules/material/mat-cdk-module.mjs +17 -0
  271. package/esm2022/modules/material/material.module.mjs +201 -0
  272. package/esm2022/modules/query-builder/components/query-design/query-design.component.mjs +103 -0
  273. package/esm2022/modules/query-builder/components/query-design/rule-line/components/alphanumeric-control/alphanumeric-control.component.mjs +150 -0
  274. package/esm2022/modules/query-builder/components/query-design/rule-line/components/boolean-control/boolean-control.component.mjs +102 -0
  275. package/esm2022/modules/query-builder/components/query-design/rule-line/components/date-control/date-control.component.mjs +76 -0
  276. package/esm2022/modules/query-builder/components/query-design/rule-line/components/numeric-control/numeric-control.component.mjs +168 -0
  277. package/esm2022/modules/query-builder/components/query-design/rule-line/constants/operators-sets.mjs +108 -0
  278. package/esm2022/modules/query-builder/components/query-design/rule-line/helpers/condition-operators.mapper.mjs +8 -0
  279. package/esm2022/modules/query-builder/components/query-design/rule-line/helpers/control-values-mapper.mjs +78 -0
  280. package/esm2022/modules/query-builder/components/query-design/rule-line/rule-line.component.mjs +234 -0
  281. package/esm2022/modules/query-builder/directive/auto-complete-position.directive.mjs +30 -0
  282. package/esm2022/modules/query-builder/interfaces/query-builder.interface.mjs +39 -0
  283. package/esm2022/modules/query-builder/interfaces/select-custom-css-object.mjs +2 -0
  284. package/esm2022/modules/query-builder/query-builder.module.mjs +66 -0
  285. package/esm2022/modules/ui-kit/components/accordion/accordion-content/accordion-content.component.mjs +16 -0
  286. package/esm2022/modules/ui-kit/components/accordion/accordion-trigger.directive.mjs +30 -0
  287. package/esm2022/modules/ui-kit/components/accordion/accordion.directive.mjs +19 -0
  288. package/esm2022/modules/ui-kit/components/banner/banner.component.mjs +53 -0
  289. package/esm2022/modules/ui-kit/components/banner/banner.service.mjs +64 -0
  290. package/esm2022/modules/ui-kit/components/breadcrumbs/breadcrumbs.component.mjs +25 -0
  291. package/esm2022/modules/ui-kit/components/breadcrumbs/model/breadCrumbItem.mjs +2 -0
  292. package/esm2022/modules/ui-kit/components/breadcrumbs/service/breadcrumb.service.mjs +63 -0
  293. package/esm2022/modules/ui-kit/components/breadcrumbs/utils/crumb-service.enum.mjs +8 -0
  294. package/esm2022/modules/ui-kit/components/buttons/button-control/button-control.component.mjs +46 -0
  295. package/esm2022/modules/ui-kit/components/buttons/buttons-list/buttons-list.component.mjs +11 -0
  296. package/esm2022/modules/ui-kit/components/buttons/circle-button/circle-button.component.mjs +37 -0
  297. package/esm2022/modules/ui-kit/components/card-container/card-container.component.mjs +11 -0
  298. package/esm2022/modules/ui-kit/components/common-breadcrumbs/common-breadcrumbs.component.mjs +30 -0
  299. package/esm2022/modules/ui-kit/components/common-breadcrumbs/interface/breadcrumb.interface.mjs +2 -0
  300. package/esm2022/modules/ui-kit/components/common-breadcrumbs/service/breadcrumb.service.mjs +65 -0
  301. package/esm2022/modules/ui-kit/components/data-pagination/data-pagination.component.mjs +155 -0
  302. package/esm2022/modules/ui-kit/components/data-table/api-classes/filter-manager.mjs +50 -0
  303. package/esm2022/modules/ui-kit/components/data-table/api-classes/grid-api.mjs +73 -0
  304. package/esm2022/modules/ui-kit/components/data-table/base-data-table-container/base-data-table-container.component.mjs +10 -0
  305. package/esm2022/modules/ui-kit/components/data-table/constants/change-type.enum.mjs +8 -0
  306. package/esm2022/modules/ui-kit/components/data-table/constants/column-id.mjs +13 -0
  307. package/esm2022/modules/ui-kit/components/data-table/constants/row.mjs +4 -0
  308. package/esm2022/modules/ui-kit/components/data-table/data-col/base-data-col/base-data-col.component.mjs +93 -0
  309. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col/data-col.component.mjs +17 -0
  310. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col-action-button/data-col-action-button.component.mjs +27 -0
  311. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col-boolean/data-col-boolean.component.mjs +20 -0
  312. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col-multivalue/data-col-multivalue.component.mjs +18 -0
  313. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col-nested/data-col-nested.component.mjs +31 -0
  314. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col-reference/data-col-reference.component.mjs +96 -0
  315. package/esm2022/modules/ui-kit/components/data-table/data-col/data-col-view/data-col-view.component.mjs +75 -0
  316. package/esm2022/modules/ui-kit/components/data-table/data-col-disp/data-col-disp.component.mjs +248 -0
  317. package/esm2022/modules/ui-kit/components/data-table/data-col-filter/data-col-filter.component.mjs +323 -0
  318. package/esm2022/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-between-value.mjs +68 -0
  319. package/esm2022/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-contains-value.mjs +25 -0
  320. package/esm2022/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-in-value.mjs +64 -0
  321. package/esm2022/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-slider-value.mjs +42 -0
  322. package/esm2022/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/filter-value-executor-provider.mjs +42 -0
  323. package/esm2022/modules/ui-kit/components/data-table/data-column-filter/data-column-filter.component.mjs +69 -0
  324. package/esm2022/modules/ui-kit/components/data-table/data-row/data-row.component.mjs +251 -0
  325. package/esm2022/modules/ui-kit/components/data-table/data-table/data-table.component.mjs +1534 -0
  326. package/esm2022/modules/ui-kit/components/data-table/data-table-actions/data-table-actions.component.mjs +153 -0
  327. package/esm2022/modules/ui-kit/components/data-table/data-table-body/data-table-body.component.mjs +205 -0
  328. package/esm2022/modules/ui-kit/components/data-table/data-table-check-rows/data-table-check-rows.component.mjs +61 -0
  329. package/esm2022/modules/ui-kit/components/data-table/data-table-row-actions/const/data-table-actions.enum.mjs +8 -0
  330. package/esm2022/modules/ui-kit/components/data-table/data-table-row-actions/data-table-row-actions.component.mjs +120 -0
  331. package/esm2022/modules/ui-kit/components/data-table/enums/col-filter-types.mjs +17 -0
  332. package/esm2022/modules/ui-kit/components/data-table/header-row/header-row.component.mjs +14 -0
  333. package/esm2022/modules/ui-kit/components/data-table/interfaces/data-table-component.interface.mjs +2 -0
  334. package/esm2022/modules/ui-kit/components/data-table/interfaces/filter-value-executor.interface.mjs +2 -0
  335. package/esm2022/modules/ui-kit/components/data-table/services/data-table-context.service.mjs +26 -0
  336. package/esm2022/modules/ui-kit/components/data-table-wrap/data-table-wrap.component.mjs +38 -0
  337. package/esm2022/modules/ui-kit/components/excel-table/excel-table.component.mjs +164 -0
  338. package/esm2022/modules/ui-kit/components/excel-table/interface/excel-table.interface.mjs +44 -0
  339. package/esm2022/modules/ui-kit/components/form/base-form-control/base-form-control.component.mjs +41 -0
  340. package/esm2022/modules/ui-kit/components/form/base-form-page/base-form-page.component.mjs +8 -0
  341. package/esm2022/modules/ui-kit/components/form/checkbox-form-control/checkbox-form-control.component.mjs +21 -0
  342. package/esm2022/modules/ui-kit/components/form/counter-form-control/counter-form-control.component.mjs +66 -0
  343. package/esm2022/modules/ui-kit/components/form/form-container/form-container.component.mjs +133 -0
  344. package/esm2022/modules/ui-kit/components/form/form-group-container/form-group-container.component.mjs +11 -0
  345. package/esm2022/modules/ui-kit/components/form/input-form-control/input-form-control.component.mjs +20 -0
  346. package/esm2022/modules/ui-kit/components/form/multivalue-form-control/custom-input/custom-input.component.mjs +35 -0
  347. package/esm2022/modules/ui-kit/components/form/multivalue-form-control/custom-input/old-new-value.interface.mjs +2 -0
  348. package/esm2022/modules/ui-kit/components/form/multivalue-form-control/multivalue-form-control.component.mjs +66 -0
  349. package/esm2022/modules/ui-kit/components/form/radio-form-control/radio-form-control.component.mjs +19 -0
  350. package/esm2022/modules/ui-kit/components/form/select-form-control/select-form-control.component.mjs +78 -0
  351. package/esm2022/modules/ui-kit/components/form/selection-group-container/selection-group-container.component.mjs +18 -0
  352. package/esm2022/modules/ui-kit/components/form/textarea-form-control/textarea-form-control.component.mjs +20 -0
  353. package/esm2022/modules/ui-kit/components/icon/expand-collapse-icon/expand-collapse-icon.component.mjs +26 -0
  354. package/esm2022/modules/ui-kit/components/icon/icon/icon.component.mjs +35 -0
  355. package/esm2022/modules/ui-kit/components/icon/text-icon/text-icon.component.mjs +22 -0
  356. package/esm2022/modules/ui-kit/components/layouts/form-layout/form-layout.component.mjs +56 -0
  357. package/esm2022/modules/ui-kit/components/layouts/primary-layout/primary-layout.component.mjs +11 -0
  358. package/esm2022/modules/ui-kit/components/loader/loader.component.mjs +27 -0
  359. package/esm2022/modules/ui-kit/components/mat-actions-button/mat-actions-button.mjs +34 -0
  360. package/esm2022/modules/ui-kit/components/modals/common-confirm-modal/common-confirm-modal.component.mjs +53 -0
  361. package/esm2022/modules/ui-kit/components/modals/confirm-modal/confirm-modal.component.mjs +37 -0
  362. package/esm2022/modules/ui-kit/components/modals/delete-modal/delete-modal.component.mjs +41 -0
  363. package/esm2022/modules/ui-kit/components/modals/enums/confirmation-modal.enum.mjs +13 -0
  364. package/esm2022/modules/ui-kit/components/snackbar/snackbar.component.mjs +21 -0
  365. package/esm2022/modules/ui-kit/components/tabs/constants/index.mjs +2 -0
  366. package/esm2022/modules/ui-kit/components/tabs/interfaces/index.mjs +2 -0
  367. package/esm2022/modules/ui-kit/components/tabs/tab-group/tab-group.component.mjs +77 -0
  368. package/esm2022/modules/ui-kit/components/tabs/tab.directive.mjs +60 -0
  369. package/esm2022/modules/ui-kit/components/tree-view/tree-view.component.mjs +374 -0
  370. package/esm2022/modules/ui-kit/constants/data-table-icon-class.constant.mjs +2 -0
  371. package/esm2022/modules/ui-kit/constants/data-table.constants.mjs +7 -0
  372. package/esm2022/modules/ui-kit/constants/date-separator.constant.mjs +2 -0
  373. package/esm2022/modules/ui-kit/constants/snackbar.constants.mjs +4 -0
  374. package/esm2022/modules/ui-kit/enums/action-type.enum.mjs +14 -0
  375. package/esm2022/modules/ui-kit/enums/coderefs-prop.enum.mjs +26 -0
  376. package/esm2022/modules/ui-kit/enums/color-schemes.enum.mjs +13 -0
  377. package/esm2022/modules/ui-kit/enums/column-disable-mode.enum.mjs +7 -0
  378. package/esm2022/modules/ui-kit/enums/column-types.enum.mjs +10 -0
  379. package/esm2022/modules/ui-kit/enums/component-sizes.enum.mjs +6 -0
  380. package/esm2022/modules/ui-kit/enums/data-type.enum.mjs +13 -0
  381. package/esm2022/modules/ui-kit/enums/form-item-type.mjs +7 -0
  382. package/esm2022/modules/ui-kit/enums/form-types.enum.mjs +7 -0
  383. package/esm2022/modules/ui-kit/enums/form-url-params.enum.mjs +6 -0
  384. package/esm2022/modules/ui-kit/enums/icons.enum.mjs +24 -0
  385. package/esm2022/modules/ui-kit/enums/operator.enum.mjs +21 -0
  386. package/esm2022/modules/ui-kit/enums/position.enum.mjs +6 -0
  387. package/esm2022/modules/ui-kit/enums/select-option.enum.mjs +10 -0
  388. package/esm2022/modules/ui-kit/enums/snackbar.enum.mjs +8 -0
  389. package/esm2022/modules/ui-kit/enums/url-param-action.enum.mjs +6 -0
  390. package/esm2022/modules/ui-kit/enums/utils.enum.mjs +6 -0
  391. package/esm2022/modules/ui-kit/enums/viewType.enum.mjs +7 -0
  392. package/esm2022/modules/ui-kit/interfaces/api.interface.mjs +2 -0
  393. package/esm2022/modules/ui-kit/interfaces/confirm-modal-data.interface.mjs +2 -0
  394. package/esm2022/modules/ui-kit/interfaces/constants.interface.mjs +2 -0
  395. package/esm2022/modules/ui-kit/interfaces/data-table.interface.mjs +2 -0
  396. package/esm2022/modules/ui-kit/interfaces/form.interface.mjs +2 -0
  397. package/esm2022/modules/ui-kit/interfaces/generic.interface.mjs +2 -0
  398. package/esm2022/modules/ui-kit/interfaces/list-item.interface.mjs +2 -0
  399. package/esm2022/modules/ui-kit/interfaces/mat-action-buttons.interface.mjs +2 -0
  400. package/esm2022/modules/ui-kit/interfaces/row-selection-info.interface.mjs +2 -0
  401. package/esm2022/modules/ui-kit/interfaces/select.interface.mjs +2 -0
  402. package/esm2022/modules/ui-kit/interfaces/snackbar.interface.mjs +2 -0
  403. package/esm2022/modules/ui-kit/interfaces/tree-view.interface.mjs +2 -0
  404. package/esm2022/modules/ui-kit/models/storage-object.model.mjs +3 -0
  405. package/esm2022/modules/ui-kit/pipes/column-filter.pipe.mjs +21 -0
  406. package/esm2022/modules/ui-kit/pipes/filter-by-prop.pipe.mjs +27 -0
  407. package/esm2022/modules/ui-kit/pipes/first-letter-text.pipe.mjs +17 -0
  408. package/esm2022/modules/ui-kit/pipes/keys.pipe.mjs +17 -0
  409. package/esm2022/modules/ui-kit/pipes/paginate.pipe.mjs +29 -0
  410. package/esm2022/modules/ui-kit/pipes/search.pipe.mjs +50 -0
  411. package/esm2022/modules/ui-kit/services/api/api.service.mjs +72 -0
  412. package/esm2022/modules/ui-kit/services/api/rest-api.service.mjs +62 -0
  413. package/esm2022/modules/ui-kit/services/data-table.service.mjs +202 -0
  414. package/esm2022/modules/ui-kit/services/form.service.mjs +91 -0
  415. package/esm2022/modules/ui-kit/services/formatters/date-formatter.service.mjs +48 -0
  416. package/esm2022/modules/ui-kit/services/mappers/form-data-table-mapper.service.mjs +19 -0
  417. package/esm2022/modules/ui-kit/services/select.service.mjs +19 -0
  418. package/esm2022/modules/ui-kit/services/snackbar.service.mjs +43 -0
  419. package/esm2022/modules/ui-kit/services/url.service.mjs +17 -0
  420. package/esm2022/modules/ui-kit/types/basic.type.mjs +2 -0
  421. package/esm2022/modules/ui-kit/types/function.type.mjs +2 -0
  422. package/esm2022/modules/ui-kit/types/select.type.mjs +2 -0
  423. package/esm2022/modules/ui-kit/ui-kit.module.mjs +370 -0
  424. package/esm2022/public-api.mjs +373 -0
  425. package/esm2022/resolvers/null-value.resolver.mjs +16 -0
  426. package/esm2022/services/api/common-crud-api.service.mjs +59 -0
  427. package/esm2022/services/api/filter-api.service.mjs +30 -0
  428. package/esm2022/services/selectable.service.mjs +23 -0
  429. package/esm2022/shared-pipes/pipes/search.pipe.mjs +48 -0
  430. package/esm2022/shared-ui-test-2.mjs +5 -0
  431. package/esm2022/shared.module.mjs +57 -0
  432. package/esm2022/validators/debounce-async.validator.mjs +12 -0
  433. package/fesm2022/shared-ui-test-2.mjs +12538 -0
  434. package/fesm2022/shared-ui-test-2.mjs.map +1 -0
  435. package/index.d.ts +5 -0
  436. package/models/auth-token.d.ts +3 -0
  437. package/modules/dynamic-cards/directives/flip-card.directive.d.ts +15 -0
  438. package/modules/dynamic-cards/dynamic-card/card-list-container/card-list-container.component.d.ts +10 -0
  439. package/modules/dynamic-cards/dynamic-card/dynamic-card/dynamic-card.component.d.ts +7 -0
  440. package/modules/dynamic-cards/dynamic-card/dynamic-card-back/dynamic-card-back.component.d.ts +7 -0
  441. package/modules/dynamic-cards/dynamic-card/dynamic-card-footer/dynamic-card-footer.component.d.ts +10 -0
  442. package/modules/dynamic-cards/dynamic-card/dynamic-card-front/dynamic-card-front.component.d.ts +8 -0
  443. package/modules/dynamic-cards/dynamic-cards.module.d.ts +18 -0
  444. package/modules/dynamic-cards/interface/card-list.interface.d.ts +9 -0
  445. package/modules/dynamic-cards/interface/card.interface.d.ts +12 -0
  446. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-button-control/dynamic-form-button-control.component.d.ts +11 -0
  447. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-checkbox-control/dynamic-form-checkbox-control.component.d.ts +9 -0
  448. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-control-label/dynamic-form-control-label.component.d.ts +7 -0
  449. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-counter-control/dynamic-form-counter-control.component.d.ts +13 -0
  450. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-datepicker-control/dynamic-form-datepicker-control.component.d.ts +13 -0
  451. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-field-control/dynamic-form-field-control.component.d.ts +34 -0
  452. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-field-control/dynamic-form-field.matcher.d.ts +8 -0
  453. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-input-control/dynamic-form-input-control.component.d.ts +8 -0
  454. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-ng-select-control/dynamic-form-ng-select-control.component.d.ts +11 -0
  455. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-radio-group/dynamic-form-radio-group.component.d.ts +12 -0
  456. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-radio-group/enum/radio-group-orientation.enum.d.ts +4 -0
  457. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-select-control/dynamic-form-select-control.component.d.ts +10 -0
  458. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-switch-control/dynamic-form-switch-control.component.d.ts +9 -0
  459. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-text-area-control/dynamic-form-text-area-control.component.d.ts +9 -0
  460. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-ui-control/dynamic-form-ui-control-list/dynamic-form-ui-control-list.component.d.ts +26 -0
  461. package/modules/dynamic-forms/dynamic-form-UI/components/controls/dynamic-form-ui-control/dynamic-form-ui-control.component.d.ts +14 -0
  462. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/base-form-actions/base-form-actions.component.d.ts +19 -0
  463. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/base-form-actions/enums/base-form-action-types.d.ts +5 -0
  464. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/base-form-actions/interfaces/base-form-action.interface.d.ts +5 -0
  465. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form/dynamic-form-ui.component.d.ts +26 -0
  466. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-array/dynamic-form-ui-array.component.d.ts +9 -0
  467. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-group/dynamic-form-group.component.d.ts +11 -0
  468. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-layout/dynamic-form-layout-item/dynamic-form-layout-item.component.d.ts +23 -0
  469. package/modules/dynamic-forms/dynamic-form-UI/components/dynamic-form-layout/dynamic-form-layout.component.d.ts +21 -0
  470. package/modules/dynamic-forms/dynamic-form-UI/components/enums/form-field-css-class.enum.d.ts +7 -0
  471. package/modules/dynamic-forms/dynamic-form-UI/components/errors-block/errors-block.component.d.ts +11 -0
  472. package/modules/dynamic-forms/dynamic-form-UI/dynamic-form-ui.module.d.ts +32 -0
  473. package/modules/dynamic-forms/dynamic-form-UI/index.d.ts +3 -0
  474. package/modules/dynamic-forms/dynamic-form-UI/providers/ui-form-control-map.provider.d.ts +6 -0
  475. package/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-array.component.d.ts +10 -0
  476. package/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-component.d.ts +26 -0
  477. package/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-control-container.component.d.ts +57 -0
  478. package/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-control.component.d.ts +42 -0
  479. package/modules/dynamic-forms/dynamic-forms-core/components/dynamic-form-layout.component.d.ts +28 -0
  480. package/modules/dynamic-forms/dynamic-forms-core/constants/form-errors.constant.d.ts +6 -0
  481. package/modules/dynamic-forms/dynamic-forms-core/constants/matchers/matchers.constant.d.ts +6 -0
  482. package/modules/dynamic-forms/dynamic-forms-core/constants/reg-exp-error.constant.d.ts +9 -0
  483. package/modules/dynamic-forms/dynamic-forms-core/directives/dynamic-id.directive.d.ts +11 -0
  484. package/modules/dynamic-forms/dynamic-forms-core/directives/dynamic-list.directive.d.ts +11 -0
  485. package/modules/dynamic-forms/dynamic-forms-core/directives/dynamic-template.directive.d.ts +13 -0
  486. package/modules/dynamic-forms/dynamic-forms-core/dynamic-form-core.module.d.ts +12 -0
  487. package/modules/dynamic-forms/dynamic-forms-core/enums/autocomplete.enum.d.ts +4 -0
  488. package/modules/dynamic-forms/dynamic-forms-core/enums/control-types.enum.d.ts +20 -0
  489. package/modules/dynamic-forms/dynamic-forms-core/enums/form-control-events.enum.d.ts +6 -0
  490. package/modules/dynamic-forms/dynamic-forms-core/enums/form-control-statuses.enum.d.ts +6 -0
  491. package/modules/dynamic-forms/dynamic-forms-core/enums/form-hooks.enum.d.ts +5 -0
  492. package/modules/dynamic-forms/dynamic-forms-core/enums/input-types.enum.d.ts +18 -0
  493. package/modules/dynamic-forms/dynamic-forms-core/enums/matcher-operators.enum.d.ts +4 -0
  494. package/modules/dynamic-forms/dynamic-forms-core/enums/matcher-types.enum.d.ts +8 -0
  495. package/modules/dynamic-forms/dynamic-forms-core/enums/template-directive-alignment.d.ts +4 -0
  496. package/modules/dynamic-forms/dynamic-forms-core/enums/textarea-wrap.enum.d.ts +4 -0
  497. package/modules/dynamic-forms/dynamic-forms-core/enums/validation-states.enum.d.ts +4 -0
  498. package/modules/dynamic-forms/dynamic-forms-core/index.d.ts +38 -0
  499. package/modules/dynamic-forms/dynamic-forms-core/interfaces/components/dynamic-templateable-form-control.interface.d.ts +5 -0
  500. package/modules/dynamic-forms/dynamic-forms-core/interfaces/components/form-control/dynamic-form-control-event.interface.d.ts +15 -0
  501. package/modules/dynamic-forms/dynamic-forms-core/interfaces/components/form-control/dynamic-form-control.interface.d.ts +19 -0
  502. package/modules/dynamic-forms/dynamic-forms-core/interfaces/dynamic-form/dynamic-form-model.interface.d.ts +4 -0
  503. package/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/form-control-layout.interface.d.ts +3 -0
  504. package/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/form-layout-config.interface.d.ts +6 -0
  505. package/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/form-layout.interface.d.ts +2 -0
  506. package/modules/dynamic-forms/dynamic-forms-core/interfaces/layout/layout-render-template.interface.d.ts +9 -0
  507. package/modules/dynamic-forms/dynamic-forms-core/interfaces/matchers/form-control-matcher.interface.d.ts +8 -0
  508. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-array/form-array-model-config.interface.d.ts +7 -0
  509. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-button-control/button-control-model-config.interface.d.ts +4 -0
  510. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-check-control/check-control-model-config.interface.d.ts +4 -0
  511. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-control/form-control-model-config.interface.d.ts +16 -0
  512. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-control/form-control-relation.interface.d.ts +8 -0
  513. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-date-control/date-control-model-config.interface.d.ts +8 -0
  514. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-file-control/file-control-model-config.interface.d.ts +4 -0
  515. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-group/form-group-model-config.interface.d.ts +6 -0
  516. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-input-control/form-input-control-config.interface.d.ts +14 -0
  517. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-number-control/form-number-control-config.interface.d.ts +7 -0
  518. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-option/form-option-config.interface.d.ts +5 -0
  519. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-option-control/form-option-control-config.interface.d.ts +6 -0
  520. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/button-control-model-config.interface.d.ts +6 -0
  521. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/checkbox-control-model-config.interface.d.ts +5 -0
  522. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/colorpicker-control-model-config.interface.d.ts +5 -0
  523. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/datepicker-control-model-config.interface.d.ts +11 -0
  524. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/fileupload-control-model-config.interface.d.ts +10 -0
  525. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/input-control-model-config.interface.d.ts +9 -0
  526. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/radio-group-model-config.interface.d.ts +4 -0
  527. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/rating-control-model-config.interface.d.ts +4 -0
  528. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/select-control-model-config.interface.d.ts +8 -0
  529. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/slider-control-model-config.interface.d.ts +7 -0
  530. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/switch-control-model-config.interface.d.ts +5 -0
  531. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/textarea-control-model-config.interface.d.ts +6 -0
  532. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-ui-models/timepicker-control-model-config.interface.d.ts +5 -0
  533. package/modules/dynamic-forms/dynamic-forms-core/interfaces/models/form-value-control/form-value-control.interface.d.ts +10 -0
  534. package/modules/dynamic-forms/dynamic-forms-core/interfaces/validators/validators.interface.d.ts +5 -0
  535. package/modules/dynamic-forms/dynamic-forms-core/models/form-array/dynamic-form-array.model.d.ts +19 -0
  536. package/modules/dynamic-forms/dynamic-forms-core/models/form-array/form-array-group/dynamic-form-array-group.model.d.ts +12 -0
  537. package/modules/dynamic-forms/dynamic-forms-core/models/form-button-control/dynamic-button-control.model.d.ts +9 -0
  538. package/modules/dynamic-forms/dynamic-forms-core/models/form-check-control/dynamic-check-control.model.d.ts +9 -0
  539. package/modules/dynamic-forms/dynamic-forms-core/models/form-control/dynamic-form-control.model.d.ts +24 -0
  540. package/modules/dynamic-forms/dynamic-forms-core/models/form-date-control/dynamic-date-control.model.d.ts +9 -0
  541. package/modules/dynamic-forms/dynamic-forms-core/models/form-file-control/dynamic-file-control.model.d.ts +6 -0
  542. package/modules/dynamic-forms/dynamic-forms-core/models/form-group/dynamic-form-group.model.d.ts +17 -0
  543. package/modules/dynamic-forms/dynamic-forms-core/models/form-input-control/dynamic-input-control.model.d.ts +16 -0
  544. package/modules/dynamic-forms/dynamic-forms-core/models/form-number-control/dynamic-number-control.model.d.ts +12 -0
  545. package/modules/dynamic-forms/dynamic-forms-core/models/form-option/form-option.model.d.ts +9 -0
  546. package/modules/dynamic-forms/dynamic-forms-core/models/form-option-control/dynamic-option-control.model.d.ts +19 -0
  547. package/modules/dynamic-forms/dynamic-forms-core/models/form-static-control/static-control.model.d.ts +7 -0
  548. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/button/dynamic-button.model.d.ts +10 -0
  549. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/checkbox/dynamic-checkbox-group.model.d.ts +12 -0
  550. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/checkbox/dynamic-checkbox.model.d.ts +8 -0
  551. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/colorpicker/dynamic-colorpicker.model.d.ts +8 -0
  552. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/counter/dynamic-counter.model.d.ts +7 -0
  553. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/datepicker/dynamic-datepicker.model.d.ts +15 -0
  554. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/file-upload/dynamic-file-upload.model.d.ts +13 -0
  555. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/input/dynamic-input.model.d.ts +10 -0
  556. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/radio/dynamic-radio-group.model.d.ts +8 -0
  557. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/rating/dynamic-rating.model.d.ts +7 -0
  558. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/select/dynamic-select.model.d.ts +11 -0
  559. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/slider/dynamic-slider.model.d.ts +10 -0
  560. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/switch/dynamic-switch.model.d.ts +8 -0
  561. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/textarea/dynamic-textarea.model.d.ts +9 -0
  562. package/modules/dynamic-forms/dynamic-forms-core/models/form-ui-models/timepicker/dynamic-timepicker.model.d.ts +8 -0
  563. package/modules/dynamic-forms/dynamic-forms-core/models/form-value-control/form-value-control.model.d.ts +17 -0
  564. package/modules/dynamic-forms/dynamic-forms-core/models/layout/col-control.model.d.ts +8 -0
  565. package/modules/dynamic-forms/dynamic-forms-core/models/layout/enums/FormLayoutControlTypes.enum.d.ts +5 -0
  566. package/modules/dynamic-forms/dynamic-forms-core/models/layout/layout-control.model.d.ts +9 -0
  567. package/modules/dynamic-forms/dynamic-forms-core/models/layout/layout-group-control.d.ts +7 -0
  568. package/modules/dynamic-forms/dynamic-forms-core/models/layout/row-control.model.d.ts +8 -0
  569. package/modules/dynamic-forms/dynamic-forms-core/models/ng-select-control/dynamic-ng-select.model.d.ts +12 -0
  570. package/modules/dynamic-forms/dynamic-forms-core/pipes/find-dynamic-control-model/find-dynamic-control-model.mock.d.ts +11 -0
  571. package/modules/dynamic-forms/dynamic-forms-core/pipes/find-dynamic-control-model/find-dynamic-control-model.pipe.d.ts +20 -0
  572. package/modules/dynamic-forms/dynamic-forms-core/pipes/get-error-from-key-value.pipe.d.ts +8 -0
  573. package/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-component.service.d.ts +14 -0
  574. package/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-layout.service.d.ts +14 -0
  575. package/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-relation.service.d.ts +8 -0
  576. package/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form-validation.service.d.ts +11 -0
  577. package/modules/dynamic-forms/dynamic-forms-core/service/dynamic-form.service.d.ts +30 -0
  578. package/modules/dynamic-forms/dynamic-forms-core/service/static-form-service.d.ts +17 -0
  579. package/modules/dynamic-forms/dynamic-forms-core/tokens/dynamic-matchers.token.d.ts +3 -0
  580. package/modules/dynamic-forms/dynamic-forms-core/tokens/form-control-map.token.d.ts +3 -0
  581. package/modules/dynamic-forms/dynamic-forms-core/tokens/validators.token.d.ts +3 -0
  582. package/modules/dynamic-forms/dynamic-forms-core/utils/events/form-control-events.utils.d.ts +2 -0
  583. package/modules/dynamic-forms/dynamic-forms-core/utils/json/json.utils.d.ts +5 -0
  584. package/modules/dynamic-forms/dynamic-forms.module.d.ts +9 -0
  585. package/modules/material/mat-cdk-module.d.ts +7 -0
  586. package/modules/material/material.module.d.ts +50 -0
  587. package/modules/query-builder/components/query-design/query-design.component.d.ts +35 -0
  588. package/modules/query-builder/components/query-design/rule-line/components/alphanumeric-control/alphanumeric-control.component.d.ts +46 -0
  589. package/modules/query-builder/components/query-design/rule-line/components/boolean-control/boolean-control.component.d.ts +29 -0
  590. package/modules/query-builder/components/query-design/rule-line/components/date-control/date-control.component.d.ts +21 -0
  591. package/modules/query-builder/components/query-design/rule-line/components/numeric-control/numeric-control.component.d.ts +46 -0
  592. package/modules/query-builder/components/query-design/rule-line/constants/operators-sets.d.ts +12 -0
  593. package/modules/query-builder/components/query-design/rule-line/helpers/condition-operators.mapper.d.ts +6 -0
  594. package/modules/query-builder/components/query-design/rule-line/helpers/control-values-mapper.d.ts +7 -0
  595. package/modules/query-builder/components/query-design/rule-line/rule-line.component.d.ts +64 -0
  596. package/modules/query-builder/directive/auto-complete-position.directive.d.ts +11 -0
  597. package/modules/query-builder/interfaces/query-builder.interface.d.ts +61 -0
  598. package/modules/query-builder/interfaces/select-custom-css-object.d.ts +7 -0
  599. package/modules/query-builder/query-builder.module.d.ts +18 -0
  600. package/modules/ui-kit/components/accordion/accordion-content/accordion-content.component.d.ts +8 -0
  601. package/modules/ui-kit/components/accordion/accordion-trigger.directive.d.ts +10 -0
  602. package/modules/ui-kit/components/accordion/accordion.directive.d.ts +7 -0
  603. package/modules/ui-kit/components/banner/banner.component.d.ts +14 -0
  604. package/modules/ui-kit/components/banner/banner.service.d.ts +27 -0
  605. package/modules/ui-kit/components/breadcrumbs/breadcrumbs.component.d.ts +15 -0
  606. package/modules/ui-kit/components/breadcrumbs/model/breadCrumbItem.d.ts +4 -0
  607. package/modules/ui-kit/components/breadcrumbs/service/breadcrumb.service.d.ts +19 -0
  608. package/modules/ui-kit/components/breadcrumbs/utils/crumb-service.enum.d.ts +6 -0
  609. package/modules/ui-kit/components/buttons/button-control/button-control.component.d.ts +16 -0
  610. package/modules/ui-kit/components/buttons/buttons-list/buttons-list.component.d.ts +5 -0
  611. package/modules/ui-kit/components/buttons/circle-button/circle-button.component.d.ts +20 -0
  612. package/modules/ui-kit/components/card-container/card-container.component.d.ts +5 -0
  613. package/modules/ui-kit/components/common-breadcrumbs/common-breadcrumbs.component.d.ts +20 -0
  614. package/modules/ui-kit/components/common-breadcrumbs/interface/breadcrumb.interface.d.ts +6 -0
  615. package/modules/ui-kit/components/common-breadcrumbs/service/breadcrumb.service.d.ts +21 -0
  616. package/modules/ui-kit/components/data-pagination/data-pagination.component.d.ts +54 -0
  617. package/modules/ui-kit/components/data-table/api-classes/filter-manager.d.ts +13 -0
  618. package/modules/ui-kit/components/data-table/api-classes/grid-api.d.ts +31 -0
  619. package/modules/ui-kit/components/data-table/base-data-table-container/base-data-table-container.component.d.ts +7 -0
  620. package/modules/ui-kit/components/data-table/constants/change-type.enum.d.ts +6 -0
  621. package/modules/ui-kit/components/data-table/constants/column-id.d.ts +2 -0
  622. package/modules/ui-kit/components/data-table/constants/row.d.ts +2 -0
  623. package/modules/ui-kit/components/data-table/data-col/base-data-col/base-data-col.component.d.ts +28 -0
  624. package/modules/ui-kit/components/data-table/data-col/data-col/data-col.component.d.ts +7 -0
  625. package/modules/ui-kit/components/data-table/data-col/data-col-action-button/data-col-action-button.component.d.ts +12 -0
  626. package/modules/ui-kit/components/data-table/data-col/data-col-boolean/data-col-boolean.component.d.ts +8 -0
  627. package/modules/ui-kit/components/data-table/data-col/data-col-multivalue/data-col-multivalue.component.d.ts +8 -0
  628. package/modules/ui-kit/components/data-table/data-col/data-col-nested/data-col-nested.component.d.ts +13 -0
  629. package/modules/ui-kit/components/data-table/data-col/data-col-reference/data-col-reference.component.d.ts +29 -0
  630. package/modules/ui-kit/components/data-table/data-col/data-col-view/data-col-view.component.d.ts +27 -0
  631. package/modules/ui-kit/components/data-table/data-col-disp/data-col-disp.component.d.ts +60 -0
  632. package/modules/ui-kit/components/data-table/data-col-filter/data-col-filter.component.d.ts +85 -0
  633. package/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-between-value.d.ts +12 -0
  634. package/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-contains-value.d.ts +9 -0
  635. package/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-in-value.d.ts +13 -0
  636. package/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/col-filter-slider-value.d.ts +10 -0
  637. package/modules/ui-kit/components/data-table/data-col-filter/filter-value-helpers/filter-value-executor-provider.d.ts +11 -0
  638. package/modules/ui-kit/components/data-table/data-column-filter/data-column-filter.component.d.ts +29 -0
  639. package/modules/ui-kit/components/data-table/data-row/data-row.component.d.ts +81 -0
  640. package/modules/ui-kit/components/data-table/data-table/data-table.component.d.ts +302 -0
  641. package/modules/ui-kit/components/data-table/data-table-actions/data-table-actions.component.d.ts +53 -0
  642. package/modules/ui-kit/components/data-table/data-table-body/data-table-body.component.d.ts +75 -0
  643. package/modules/ui-kit/components/data-table/data-table-check-rows/data-table-check-rows.component.d.ts +25 -0
  644. package/modules/ui-kit/components/data-table/data-table-row-actions/const/data-table-actions.enum.d.ts +6 -0
  645. package/modules/ui-kit/components/data-table/data-table-row-actions/data-table-row-actions.component.d.ts +42 -0
  646. package/modules/ui-kit/components/data-table/enums/col-filter-types.d.ts +14 -0
  647. package/modules/ui-kit/components/data-table/header-row/header-row.component.d.ts +7 -0
  648. package/modules/ui-kit/components/data-table/interfaces/data-table-component.interface.d.ts +28 -0
  649. package/modules/ui-kit/components/data-table/interfaces/filter-value-executor.interface.d.ts +12 -0
  650. package/modules/ui-kit/components/data-table/services/data-table-context.service.d.ts +12 -0
  651. package/modules/ui-kit/components/data-table-wrap/data-table-wrap.component.d.ts +13 -0
  652. package/modules/ui-kit/components/excel-table/excel-table.component.d.ts +28 -0
  653. package/modules/ui-kit/components/excel-table/interface/excel-table.interface.d.ts +29 -0
  654. package/modules/ui-kit/components/form/base-form-control/base-form-control.component.d.ts +17 -0
  655. package/modules/ui-kit/components/form/base-form-page/base-form-page.component.d.ts +14 -0
  656. package/modules/ui-kit/components/form/checkbox-form-control/checkbox-form-control.component.d.ts +8 -0
  657. package/modules/ui-kit/components/form/counter-form-control/counter-form-control.component.d.ts +21 -0
  658. package/modules/ui-kit/components/form/form-container/form-container.component.d.ts +45 -0
  659. package/modules/ui-kit/components/form/form-group-container/form-group-container.component.d.ts +5 -0
  660. package/modules/ui-kit/components/form/input-form-control/input-form-control.component.d.ts +8 -0
  661. package/modules/ui-kit/components/form/multivalue-form-control/custom-input/custom-input.component.d.ts +15 -0
  662. package/modules/ui-kit/components/form/multivalue-form-control/custom-input/old-new-value.interface.d.ts +4 -0
  663. package/modules/ui-kit/components/form/multivalue-form-control/multivalue-form-control.component.d.ts +26 -0
  664. package/modules/ui-kit/components/form/radio-form-control/radio-form-control.component.d.ts +8 -0
  665. package/modules/ui-kit/components/form/select-form-control/select-form-control.component.d.ts +32 -0
  666. package/modules/ui-kit/components/form/selection-group-container/selection-group-container.component.d.ts +7 -0
  667. package/modules/ui-kit/components/form/textarea-form-control/textarea-form-control.component.d.ts +8 -0
  668. package/modules/ui-kit/components/icon/expand-collapse-icon/expand-collapse-icon.component.d.ts +11 -0
  669. package/modules/ui-kit/components/icon/icon/icon.component.d.ts +14 -0
  670. package/modules/ui-kit/components/icon/text-icon/text-icon.component.d.ts +10 -0
  671. package/modules/ui-kit/components/layouts/form-layout/form-layout.component.d.ts +29 -0
  672. package/modules/ui-kit/components/layouts/primary-layout/primary-layout.component.d.ts +5 -0
  673. package/modules/ui-kit/components/loader/loader.component.d.ts +12 -0
  674. package/modules/ui-kit/components/mat-actions-button/mat-actions-button.d.ts +14 -0
  675. package/modules/ui-kit/components/modals/common-confirm-modal/common-confirm-modal.component.d.ts +17 -0
  676. package/modules/ui-kit/components/modals/confirm-modal/confirm-modal.component.d.ts +13 -0
  677. package/modules/ui-kit/components/modals/delete-modal/delete-modal.component.d.ts +17 -0
  678. package/modules/ui-kit/components/modals/enums/confirmation-modal.enum.d.ts +11 -0
  679. package/modules/ui-kit/components/snackbar/snackbar.component.d.ts +10 -0
  680. package/modules/ui-kit/components/tabs/constants/index.d.ts +1 -0
  681. package/modules/ui-kit/components/tabs/interfaces/index.d.ts +3 -0
  682. package/modules/ui-kit/components/tabs/tab-group/tab-group.component.d.ts +25 -0
  683. package/modules/ui-kit/components/tabs/tab.directive.d.ts +16 -0
  684. package/modules/ui-kit/components/tree-view/tree-view.component.d.ts +67 -0
  685. package/modules/ui-kit/constants/data-table-icon-class.constant.d.ts +1 -0
  686. package/modules/ui-kit/constants/data-table.constants.d.ts +6 -0
  687. package/modules/ui-kit/constants/date-separator.constant.d.ts +1 -0
  688. package/modules/ui-kit/constants/snackbar.constants.d.ts +3 -0
  689. package/modules/ui-kit/enums/action-type.enum.d.ts +12 -0
  690. package/modules/ui-kit/enums/coderefs-prop.enum.d.ts +24 -0
  691. package/modules/ui-kit/enums/color-schemes.enum.d.ts +11 -0
  692. package/modules/ui-kit/enums/column-disable-mode.enum.d.ts +5 -0
  693. package/modules/ui-kit/enums/column-types.enum.d.ts +8 -0
  694. package/modules/ui-kit/enums/component-sizes.enum.d.ts +4 -0
  695. package/modules/ui-kit/enums/data-type.enum.d.ts +10 -0
  696. package/modules/ui-kit/enums/form-item-type.d.ts +5 -0
  697. package/modules/ui-kit/enums/form-types.enum.d.ts +5 -0
  698. package/modules/ui-kit/enums/form-url-params.enum.d.ts +4 -0
  699. package/modules/ui-kit/enums/icons.enum.d.ts +22 -0
  700. package/modules/ui-kit/enums/operator.enum.d.ts +19 -0
  701. package/modules/ui-kit/enums/position.enum.d.ts +4 -0
  702. package/modules/ui-kit/enums/select-option.enum.d.ts +8 -0
  703. package/modules/ui-kit/enums/snackbar.enum.d.ts +6 -0
  704. package/modules/ui-kit/enums/url-param-action.enum.d.ts +4 -0
  705. package/modules/ui-kit/enums/utils.enum.d.ts +4 -0
  706. package/modules/ui-kit/enums/viewType.enum.d.ts +5 -0
  707. package/modules/ui-kit/interfaces/api.interface.d.ts +45 -0
  708. package/modules/ui-kit/interfaces/confirm-modal-data.interface.d.ts +7 -0
  709. package/modules/ui-kit/interfaces/constants.interface.d.ts +4 -0
  710. package/modules/ui-kit/interfaces/data-table.interface.d.ts +253 -0
  711. package/modules/ui-kit/interfaces/form.interface.d.ts +21 -0
  712. package/modules/ui-kit/interfaces/generic.interface.d.ts +7 -0
  713. package/modules/ui-kit/interfaces/list-item.interface.d.ts +5 -0
  714. package/modules/ui-kit/interfaces/mat-action-buttons.interface.d.ts +14 -0
  715. package/modules/ui-kit/interfaces/row-selection-info.interface.d.ts +7 -0
  716. package/modules/ui-kit/interfaces/select.interface.d.ts +8 -0
  717. package/modules/ui-kit/interfaces/snackbar.interface.d.ts +4 -0
  718. package/modules/ui-kit/interfaces/tree-view.interface.d.ts +49 -0
  719. package/modules/ui-kit/models/storage-object.model.d.ts +6 -0
  720. package/modules/ui-kit/pipes/column-filter.pipe.d.ts +12 -0
  721. package/modules/ui-kit/pipes/filter-by-prop.pipe.d.ts +9 -0
  722. package/modules/ui-kit/pipes/first-letter-text.pipe.d.ts +7 -0
  723. package/modules/ui-kit/pipes/keys.pipe.d.ts +7 -0
  724. package/modules/ui-kit/pipes/paginate.pipe.d.ts +12 -0
  725. package/modules/ui-kit/pipes/search.pipe.d.ts +16 -0
  726. package/modules/ui-kit/services/api/api.service.d.ts +50 -0
  727. package/modules/ui-kit/services/api/rest-api.service.d.ts +28 -0
  728. package/modules/ui-kit/services/data-table.service.d.ts +37 -0
  729. package/modules/ui-kit/services/form.service.d.ts +26 -0
  730. package/modules/ui-kit/services/formatters/date-formatter.service.d.ts +13 -0
  731. package/modules/ui-kit/services/mappers/form-data-table-mapper.service.d.ts +8 -0
  732. package/modules/ui-kit/services/select.service.d.ts +7 -0
  733. package/modules/ui-kit/services/snackbar.service.d.ts +15 -0
  734. package/modules/ui-kit/services/url.service.d.ts +7 -0
  735. package/modules/ui-kit/types/basic.type.d.ts +2 -0
  736. package/modules/ui-kit/types/function.type.d.ts +20 -0
  737. package/modules/ui-kit/types/select.type.d.ts +2 -0
  738. package/modules/ui-kit/ui-kit.module.d.ts +79 -0
  739. package/package.json +45 -0
  740. package/public-api.d.ts +367 -0
  741. package/resolvers/null-value.resolver.d.ts +7 -0
  742. package/services/api/common-crud-api.service.d.ts +28 -0
  743. package/services/api/filter-api.service.d.ts +19 -0
  744. package/services/selectable.service.d.ts +10 -0
  745. package/shared-pipes/pipes/search.pipe.d.ts +15 -0
  746. package/shared.module.d.ts +13 -0
  747. package/validators/debounce-async.validator.d.ts +9 -0
@@ -0,0 +1,323 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { cloneDeep, isFunction } from 'lodash';
4
+ import { BehaviorSubject, Subject } from 'rxjs';
5
+ import { debounceTime, finalize, first, shareReplay, takeUntil, distinctUntilChanged } from 'rxjs/operators';
6
+ import { DataTableColumnFilterInputTypes, DataTableColumnFilterTypes } from '../../data-table/enums/col-filter-types';
7
+ import moment from 'moment';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../data-table/data-col-filter/filter-value-helpers/filter-value-executor-provider";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "@angular/material/input";
12
+ import * as i4 from "@angular/material/form-field";
13
+ import * as i5 from "@angular/material/button";
14
+ import * as i6 from "@angular/material/card";
15
+ import * as i7 from "@angular/material/checkbox";
16
+ import * as i8 from "@angular/material/datepicker";
17
+ import * as i9 from "@angular/material/icon";
18
+ import * as i10 from "@angular/material/menu";
19
+ import * as i11 from "@angular/material/progress-spinner";
20
+ import * as i12 from "@angular/material/radio";
21
+ import * as i13 from "@angular/forms";
22
+ import * as i14 from "@ng-select/ng-select";
23
+ import * as i15 from "@angular-slider/ngx-slider";
24
+ import * as i16 from "@angular/flex-layout/flex";
25
+ import * as i17 from "@angular/flex-layout/extended";
26
+ import * as i18 from "@ng-bootstrap/ng-bootstrap";
27
+ import * as i19 from "../../../pipes/filter-by-prop.pipe";
28
+ export class DataColFilterComponent {
29
+ constructor(filterValueExecutorProvider, cd) {
30
+ this.filterValueExecutorProvider = filterValueExecutorProvider;
31
+ this.cd = cd;
32
+ this.isClearFilter$ = new BehaviorSubject(false);
33
+ this.isUpdatedFilterDesign = false;
34
+ this.selectableItems$ = new BehaviorSubject(null);
35
+ this.searchText = new FormControl();
36
+ this.selectAllCtrl = new FormControl(false);
37
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
38
+ this.onFilterClicked = new EventEmitter();
39
+ this.dateRangeFormGroup = new FormGroup({
40
+ startDate: new FormControl(''),
41
+ endDate: new FormControl(''),
42
+ });
43
+ this.dateRangeValue = '';
44
+ this.sliderValueOpt = {
45
+ maxScore: 100,
46
+ minScore: 0,
47
+ };
48
+ this.searchCtrl = new FormControl();
49
+ this.FILTER_TYPES = DataTableColumnFilterTypes;
50
+ this.FILTER_INPUT_TYPES = DataTableColumnFilterInputTypes;
51
+ this.sliderDefaultOptions = {
52
+ floor: 0,
53
+ ceil: 100,
54
+ };
55
+ this.isLoading$ = new BehaviorSubject(false);
56
+ this.selectableItems = [];
57
+ this.clearSubs$ = new Subject();
58
+ this.searchObject$ = new Subject();
59
+ this.setSearchWatcher$();
60
+ }
61
+ get getCheckBoxsValue() {
62
+ return Array.isArray(this.filterWorkingValue) ? this.filterWorkingValue.join(' ') : this.filterWorkingValue[0];
63
+ }
64
+ get isIndeterminate() {
65
+ return this.filterWorkingValue.length > 0 && this.filterWorkingValue.length !== this.selectableItems.length;
66
+ }
67
+ get isAllSelected() {
68
+ return this.filterWorkingValue.length > 0 && this.filterWorkingValue.length === this.selectableItems.length;
69
+ }
70
+ get isClearEnabled() {
71
+ return !!(this.dateRangeFormGroup.get('startDate').value || this.dateRangeFormGroup.get('endDate').value);
72
+ }
73
+ get isSearchBoxHide() {
74
+ return !!this.filterOption?.isSearchBoxHide;
75
+ }
76
+ ngOnDestroy() {
77
+ this.clearSubs$.next(null);
78
+ this.clearSubs$.complete();
79
+ this.isLoading$.next(false);
80
+ this.isLoading$.complete();
81
+ }
82
+ ngOnInit() {
83
+ this.filterValue = new FormControl('');
84
+ this.isClearFilter$.pipe(distinctUntilChanged()).subscribe(res => {
85
+ if (res) {
86
+ this.clearFilter();
87
+ }
88
+ });
89
+ if (this.filterOption && (this.filterOption.type === DataTableColumnFilterInputTypes.REFERENCE)) {
90
+ this.loadDefaultReferenceItems();
91
+ this.loadReferenceData();
92
+ }
93
+ this.filterValueMaker = this.filterValueExecutorProvider
94
+ .getFilterValueExecutorProvider(this.filterOption && this.filterOption.type || this.FILTER_TYPES.CONTAINS);
95
+ this.filterValueMaker.setInitValues(this);
96
+ }
97
+ ngOnChanges(changes) {
98
+ if (changes.filterParam && this.filterValue) {
99
+ this.filterValue.setValue(this.filterParam ? this.filterParam.filterValue : '');
100
+ }
101
+ }
102
+ selectAllCheckbox() {
103
+ if (this.selectAllCtrl.value) {
104
+ this.filterWorkingValue = this.selectableItems$.getValue().map(x => x.value);
105
+ }
106
+ else {
107
+ this.filterWorkingValue = [];
108
+ }
109
+ this.emitFilterParam(this.filterWorkingValue);
110
+ }
111
+ columnFilterClicked() {
112
+ this.emitFilterParam();
113
+ this.ngbPopover.close();
114
+ }
115
+ columnFilterResetClicked() {
116
+ this.filterValueMaker.resetValue(this);
117
+ this.emitFilterParam();
118
+ this.ngbPopover.close();
119
+ }
120
+ matMenuOpend() {
121
+ this.previousSelectableItems = cloneDeep(this.selectableItems);
122
+ this.selectableItems = [];
123
+ this.selectableItems$.next(this.selectableItems);
124
+ if (this.searchText.value) {
125
+ this.searchText.setValue('');
126
+ }
127
+ if (this.filterOption.selectableItems) {
128
+ this.selectableItems = this.filterOption.selectableItems;
129
+ this.selectableItems$.next(this.filterOption.selectableItems);
130
+ return;
131
+ }
132
+ this.isLoading$.next(true);
133
+ if (this.filterOption && isFunction(this.filterOption.getSelectableFn$)) {
134
+ this.filterOption.getSelectableFn$('')
135
+ .pipe(first(), shareReplay(), takeUntil(this.clearSubs$), finalize(() => this.isLoading$.next(false)))
136
+ .subscribe((res) => {
137
+ const currntSelectedItems = this.getCurrentSelectedItems();
138
+ this.selectableItems = [...res];
139
+ this.removePreviousSelectedItems(currntSelectedItems, res);
140
+ this.selectableItems$.next(currntSelectedItems.concat(res));
141
+ });
142
+ this.getSelectableItems();
143
+ }
144
+ }
145
+ dateRangeClick(ev) {
146
+ this.dateRangeValue = ev.value;
147
+ const val = +ev.value;
148
+ const raw = { days: 1, weeks: 7, months: 30, years: 365 };
149
+ const days = (val * raw[this.filterOption.dateRangeItems?.unit ?? 'days']) - 1;
150
+ this.dateRangeFormGroup.setValue({ startDate: new Date(), endDate: moment().add(days, 'days').toDate() });
151
+ }
152
+ clearSelection() {
153
+ this.filterValueMaker.resetValue(this);
154
+ this.emitFilterParam();
155
+ this.selectAllCtrl.reset();
156
+ }
157
+ clearDateFilter() {
158
+ this.dateRangeFormGroup.reset({}, { emitEvent: false });
159
+ this.filterValueMaker.resetValue(this);
160
+ this.emitFilterParam();
161
+ this.dateRangeValue = '';
162
+ }
163
+ closePopup() {
164
+ this.ngbPopover.close();
165
+ }
166
+ clearSearch() {
167
+ this.searchText.setValue('');
168
+ }
169
+ changeContainsValue() {
170
+ this.filterWorkingValue = this.filterValue.value;
171
+ }
172
+ searchValueChanged() {
173
+ this.searchObject$.next(this.filterValue.value);
174
+ }
175
+ setCheckedValuesToFilter(item) {
176
+ if (!item) {
177
+ return;
178
+ }
179
+ this.filterWorkingValue = this.filterValueMaker.setFilterValue(this.filterOption, this.filterWorkingValue, item);
180
+ this.emitFilterParam(this.filterWorkingValue);
181
+ }
182
+ referenceValueChanged() {
183
+ this.emitFilterParam(this.filterValue.value);
184
+ }
185
+ sliderValueChanged() {
186
+ if (!this.filterWorkingValue) {
187
+ this.filterWorkingValue = {};
188
+ }
189
+ this.filterWorkingValue['maxScore'] = this.sliderValueOpt.maxScore;
190
+ this.filterWorkingValue['minScore'] = this.sliderValueOpt.minScore;
191
+ this.emitFilterParam();
192
+ }
193
+ setDateValue(formName) {
194
+ if (!this.filterWorkingValue) {
195
+ this.filterWorkingValue = {};
196
+ }
197
+ this.filterWorkingValue[formName] = this.dateRangeFormGroup.controls[formName].value;
198
+ if (this.isUpdatedFilterDesign && (this.filterWorkingValue[formName] ||
199
+ this.filterWorkingValue[formName])) {
200
+ this.emitFilterParam(this.populateDateRnage());
201
+ }
202
+ }
203
+ isItemChecked(item) {
204
+ return this.filterValueMaker.isCheckedFilterValue(this.filterOption, this.filterWorkingValue, item);
205
+ }
206
+ isFormInvalid() {
207
+ return this.filterValueMaker.isFormInvalid(this);
208
+ }
209
+ getFilterValue() {
210
+ return this.filterValueMaker.getFilterValue(this.filterWorkingValue, this.isUpdatedFilterDesign);
211
+ }
212
+ emitFilterParam(filterValue) {
213
+ this.onFilterClicked.emit({
214
+ filterColumn: this.columnName,
215
+ filterValue: filterValue ? filterValue : this.getFilterValue(),
216
+ columnName: this.columnName.prop,
217
+ filterType: this.filterOption && this.filterOption.type || this.FILTER_TYPES.CONTAINS,
218
+ });
219
+ }
220
+ getSelectableItems() {
221
+ this.searchText.valueChanges.pipe(debounceTime(500))
222
+ .subscribe(() => {
223
+ const existingObj = this.getCurrentSelectedItems();
224
+ this.isLoading$.next(true);
225
+ this.filterOption.getSelectableFn$(this.searchText.value, true)
226
+ .pipe(first(), shareReplay(), takeUntil(this.clearSubs$), finalize(() => this.isLoading$.next(false)))
227
+ .subscribe((response) => {
228
+ this.removePreviousSelectedItems(existingObj, response);
229
+ this.selectableItems = existingObj.concat(response);
230
+ this.selectableItems$.next(existingObj.concat(response));
231
+ });
232
+ });
233
+ }
234
+ clearFilter() {
235
+ this.filterValueMaker.resetValue(this);
236
+ this.dateRangeFormGroup.reset();
237
+ this.isClearFilter$.next(false);
238
+ }
239
+ getCurrentSelectedItems() {
240
+ const existingValues = this.filterWorkingValue;
241
+ return existingValues.map(item => {
242
+ const label = this.previousSelectableItems.find(x => x[this.filterOption.bindProp] === item)?.[this.filterOption.displayProp];
243
+ return { [this.filterOption.bindProp]: item, [this.filterOption.displayProp]: label || '' };
244
+ });
245
+ }
246
+ removePreviousSelectedItems(previousItems, currentItems) {
247
+ previousItems.forEach(x => {
248
+ const position = currentItems.findIndex(item => item[this.filterOption.bindProp] === x[this.filterOption.bindProp]);
249
+ if (position !== -1) {
250
+ currentItems.splice(position, 1);
251
+ }
252
+ });
253
+ }
254
+ populateDateRnage() {
255
+ const dateRanges = [];
256
+ dateRanges[0] = this.formatDate(this.filterWorkingValue.startDate);
257
+ dateRanges[1] = this.formatDate(this.filterWorkingValue.endDate);
258
+ return dateRanges;
259
+ }
260
+ formatDate(date) {
261
+ if (!date) {
262
+ return '';
263
+ }
264
+ return `${new Date(date).getFullYear()}-${new Date(date).getMonth() + 1}-${new Date(date).getDate()}`;
265
+ }
266
+ loadReferenceData() {
267
+ this.filterValue.setValue(null);
268
+ if (this.filterOption.selectableItems && this.filterOption.selectableItems.length) {
269
+ this.selectableItems$.next(this.filterOption.selectableItems);
270
+ return;
271
+ }
272
+ if (isFunction(this.filterOption.getSelectableFn$)) {
273
+ this.filterOption.getSelectableFn$().pipe(takeUntil(this.clearSubs$))
274
+ .subscribe((res) => {
275
+ if (res && res.length > 0) {
276
+ this.selectableItems$.next(res);
277
+ }
278
+ });
279
+ }
280
+ }
281
+ setSearchWatcher$() {
282
+ this.searchObject$.pipe(debounceTime(500), takeUntil(this.clearSubs$))
283
+ .subscribe((searchStr) => {
284
+ this.onFilterClicked.emit({
285
+ filterColumn: this.columnName,
286
+ filterValue: searchStr,
287
+ columnName: this.columnName.prop,
288
+ filterType: this.filterOption && this.filterOption.type || this.FILTER_TYPES.CONTAINS,
289
+ });
290
+ });
291
+ }
292
+ loadDefaultReferenceItems() {
293
+ this.selectableItems$.next([
294
+ { [this.filterOption.displayProp]: 'SELECT', [this.filterOption.bindProp]: '' },
295
+ { [this.filterOption.displayProp]: 'True', [this.filterOption.bindProp]: true },
296
+ { [this.filterOption.displayProp]: 'False', [this.filterOption.bindProp]: false },
297
+ ]);
298
+ }
299
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataColFilterComponent, deps: [{ token: i1.FilterValueExecutorProvider }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
300
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DataColFilterComponent, selector: "app-data-col-filter", inputs: { isClearFilter$: "isClearFilter$", isUpdatedFilterDesign: "isUpdatedFilterDesign", columnName: "columnName", filterParam: "filterParam", numberOfTableRefresh: "numberOfTableRefresh", filterOption: "filterOption" }, outputs: { onFilterClicked: "onFilterClicked" }, viewQueries: [{ propertyName: "ngbPopover", first: true, predicate: ["ngbPopover"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"isUpdatedFilterDesign\">\n <ng-container [ngSwitch]=\"filterOption?.type\">\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.TEXT\">\n <mat-form-field\n class=\"apollo-text-field table-header-apollo-text-field text-search\"\n [floatLabel]=\"'auto'\"\n >\n <input\n (ngModelChange)=\"searchValueChanged()\"\n matInput\n type=\"text\"\n placeholder=\"Search {{ columnName.header }}\"\n name=\"search\"\n [formControl]=\"searchCtrl\"\n (ngModelChange)=\"changeContainsValue()\"\n />\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.REFERENCE\">\n <ng-select\n class=\"apollo-text-field table-header-apollo-text-field\"\n (change)=\"referenceValueChanged()\"\n [appendTo]=\"'mat-card'\"\n [items]=\"(selectableItems$ | async) || []\"\n [bindValue]=\"filterOption.bindProp\"\n [bindLabel]=\"filterOption.displayProp\"\n [multiple]=\"false\"\n placeholder=\"{{ columnName.header }}\"\n [formControl]=\"filterValue\"\n >\n </ng-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.CHECKBOX\">\n <button\n (menuOpened)=\"matMenuOpend()\"\n mat-raised-button\n [matMenuTriggerFor]=\"actions\"\n class=\"dropdown-toggle odp-secondary-button\"\n >\n <span>{{ columnName.header || columnName.prop | titlecase }}</span>\n <mat-menu\n #actions=\"matMenu\"\n focusFirstItem=\"false\"\n class=\"odb-mat-menu-panel custom-panel filter-panel\"\n >\n <div class=\"custom-panel-padding\">\n <span\n class=\"filter-search-container\"\n (click)=\"$event.stopPropagation()\"\n >\n <input\n *ngIf=\"!isSearchBoxHide\"\n required\n matInput\n type=\"text\"\n placeholder=\"Search {{ columnName.header }}\"\n name=\"search\"\n [formControl]=\"searchText\"\n />\n <span\n class=\"clear-filter-search\"\n *ngIf=\"searchText.value\"\n (click)=\"clearSearch()\"\n >&#x2715;</span\n >\n </span>\n <span\n (click)=\"clearSelection()\"\n class=\"clear-all\"\n >Clear all</span\n >\n <mat-spinner\n *ngIf=\"isLoading$ | async\"\n class=\"mr-1\"\n [diameter]=\"16\"\n ></mat-spinner>\n <div\n class=\"custom-mat-menu-item\"\n class=\"my-1\"\n >\n <span>\n <mat-checkbox\n class=\"bold-text\"\n [indeterminate]=\"isIndeterminate\"\n [checked]=\"isAllSelected\"\n [formControl]=\"selectAllCtrl\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"selectAllCheckbox()\"\n >Select All</mat-checkbox\n >\n </span>\n </div>\n <div\n class=\"custom-mat-menu-item\"\n *ngFor=\"\n let item of (selectableItems$ | async) ||\n filterOption.selectableItems ||\n []\n \"\n class=\"my-1\"\n >\n <span>\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n [checked]=\"isItemChecked(item)\"\n (change)=\"setCheckedValuesToFilter(item)\"\n [title]=\"item[filterOption.displayProp]\"\n >{{ item[filterOption.displayProp] }}</mat-checkbox\n >\n </span>\n </div>\n </div>\n </mat-menu>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.DATE_RANGE\">\n <ng-container *ngTemplateOutlet=\"dateRangeTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.SLIDER\">\n <ng-container *ngIf=\"filterOption.filterTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n filterOption.filterTemplate;\n context: {\n $implicit: {\n filterOption: filterOption,\n thOptions: filterOption.thOptions\n }\n }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!filterOption.filterTemplate\">\n <div class=\"custom-slider custom-slider-alignment\">\n <ngx-slider (userChangeEnd)=\"sliderValueChanged()\" [(value)]=\"sliderValueOpt.minScore\"\n [(highValue)]=\"sliderValueOpt.maxScore\" [options]=\"sliderDefaultOptions\">\n </ngx-slider>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!isUpdatedFilterDesign\">\n <a #ngbPopover=\"ngbPopover\" [ngbPopover]=\"popTemplate\" [placement]=\"'bottom'\" [autoClose]=\"false\">\n <i class=\"fas fa-filter filter-icon\"></i>\n </a>\n <ng-template #popTemplate>\n <div class=\"card-width table-col-filter-panel\">\n <mat-icon (click)=\"closePopup()\" class=\"mat-icon material-icons close-icon\">close</mat-icon>\n <div class=\"card-form\">\n <mat-form-field *ngIf=\"!filterOption?.type || filterOption.type == FILTER_TYPES.CONTAINS\"\n class=\"card-full-width apollo-text-field\" [floatLabel]=\"'always'\">\n <mat-label>Filter By {{ columnName.header }}</mat-label>\n <input matInput placeholder=\"Enter {{ columnName.header }}\" [formControl]=\"filterValue\"\n (ngModelChange)=\"changeContainsValue()\">\n </mat-form-field>\n\n <mat-label *ngIf=\"filterOption?.type && filterOption?.type != FILTER_TYPES.CONTAINS\">Filter By\n {{columnName.header }}</mat-label>\n <div *ngIf=\"filterOption?.type === FILTER_TYPES.IN\">\n <section class=\"search\">\n <form ngForm>\n <div class=\"searchbar-wrapper\">\n <i class=\"svg-icon fa-solid fa-magnifying-glass\"></i>\n <input required matInput type=\"text\" placeholder=\"Search \"\n name=\"search\" />\n </div>\n </form>\n </section>\n <div [ngClass]=\"{ 'multi-select-section': filterOption.selectableItems?.length>6 }\">\n <div *ngFor=\"let item of filterOption.selectableItems | filterByProp: filterOption.displayProp: ''\"\n class=\"my-1\">\n <span>\n <mat-checkbox [checked]=\"isItemChecked(item)\"\n (change)=\"setCheckedValuesToFilter(item)\">\n {{item[filterOption.displayProp]}}</mat-checkbox>\n </span>\n </div>\n </div>\n </div>\n <div *ngIf=\"filterOption?.type === FILTER_TYPES.BETWEEN\" class=\"filter-item\" fxLayout=\"row\"\n [formGroup]=\"dateRangeFormGroup\">\n <div class=\"apollo-text-field date-picker-field\" fxLayout=\"row\">\n <input [readonly]=\"true\" matInput required (ngModelChange)=\"setDateValue('startDate')\"\n class=\"input-element\" [matDatepicker]=\"picker1\" [placeholder]=\"'Start Date'\"\n formControlName=\"startDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker1\"\n class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker1></mat-datepicker>\n\n </div>\n <div class=\"apollo-text-field date-picker-field\" fxLayout=\"row\">\n <input [readonly]=\"true\" matInput required (ngModelChange)=\"setDateValue('endDate')\"\n class=\"input-element\" [matDatepicker]=\"picker2\" [placeholder]=\"'End Date'\"\n formControlName=\"endDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker2\"\n class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </div>\n </div>\n <div *ngIf=\"filterOption?.type === FILTER_INPUT_TYPES.CHECKBOX\" class=\"filter-item\" fxLayout=\"row\">\n <button (menuOpened)=\"matMenuOpend()\" mat-raised-button [matMenuTriggerFor]=\"actions\"\n class=\"dropdown-toggle odp-secondary-button\">\n <span>{{getCheckBoxsValue?? columnName.header || columnName.prop | titlecase }}</span>\n <mat-menu #actions=\"matMenu\" focusFirstItem=\"false\" class=\"odb-mat-menu-panel custom-panel filter-panel\">\n <div class=\"custom-panel-padding\">\n <span class=\"filter-search-container\" (click)=\"$event.stopPropagation()\">\n <input *ngIf=\"!isSearchBoxHide\" required matInput type=\"text\"\n placeholder=\"Search {{ columnName.header }}\" name=\"search\" [formControl]=\"searchText\" />\n <span class=\"clear-filter-search\" *ngIf=\"searchText.value\" (click)=\"clearSearch()\">&#x2715;</span>\n </span>\n <span (click)=\"clearSelection()\" class=\"clear-all\">Clear all</span>\n <mat-spinner *ngIf=\"isLoading$ | async\" class=\"mr-1\" [diameter]=\"16\"></mat-spinner>\n <div class=\"custom-mat-menu-item\" class=\"my-1\">\n <span>\n <mat-checkbox class=\"bold-text\" [indeterminate]=\"isIndeterminate\" [checked]=\"isAllSelected\"\n [formControl]=\"selectAllCtrl\" (click)=\"$event.stopPropagation()\"\n (change)=\"selectAllCheckbox()\">Select All</mat-checkbox>\n </span>\n </div>\n <div class=\"custom-mat-menu-item\" *ngFor=\"\n let item of (selectableItems$ | async) ||\n filterOption.selectableItems ||\n []\n \" class=\"my-1\">\n <span>\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isItemChecked(item)\"\n (change)=\"setCheckedValuesToFilter(item)\" [title]=\"item[filterOption.displayProp]\">{{\n item[filterOption.displayProp] }}</mat-checkbox>\n </span>\n </div>\n </div>\n </mat-menu>\n </button>\n </div>\n </div>\n <mat-card-actions>\n <button [disabled]=\"isFormInvalid()\" (click)=\"columnFilterClicked()\" mat-button color=\"primary\"><i\n class=\"fa-solid fa-magnifying-glass\"></i> Search</button>\n <button (click)=\"columnFilterResetClicked()\" mat-button color=\"primary\"><i class=\"fas fa-redo\"></i>\n Clear</button>\n </mat-card-actions>\n </div>\n </ng-template>\n</ng-container>\n<ng-template #dateRangeTemplate>\n <button mat-raised-button [matMenuTriggerFor]=\"actions\" class=\"dropdown-toggle odp-secondary-button\">\n <span>{{ (columnName.header || columnName.prop) | titlecase}}</span>\n <mat-menu #actions=\"matMenu\" focusFirstItem=\"false\" class=\"date-range-panel\">\n <div class=\"filter-item\" fxLayout=\"row\" [formGroup]=\"dateRangeFormGroup\">\n <div class=\"apollo-text-field custom-date-picker-field\" fxLayout=\"row\">\n <input [readonly]=\"true\" (click)=\"picker1.open(); $event.stopPropagation();\" [max]=\"dateRangeFormGroup.controls['endDate'].value\" matInput required\n (ngModelChange)=\"setDateValue('startDate')\" class=\"custom-date-field\" [matDatepicker]=\"picker1\"\n [placeholder]=\"'From Date'\" formControlName=\"startDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker1\" class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker1></mat-datepicker>\n\n </div>\n <div class=\"apollo-text-field custom-date-picker-field\" fxLayout=\"row\">\n <input (click)=\"picker2.open(); $event.stopPropagation();\" [readonly]=\"true\" matInput required (ngModelChange)=\"setDateValue('endDate')\"\n class=\"custom-date-field\" [min]=\"dateRangeFormGroup.controls['startDate'].value\"\n [matDatepicker]=\"picker2\" [placeholder]=\"'To Date'\" formControlName=\"endDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker2\" class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </div>\n <button title=\"Clear all\" [disabled]=\"!isClearEnabled\" class=\"date-clear\" (click)=\"clearDateFilter()\" mat-stroked-button color=\"primary\">\n <em class=\"fas fa-broom\"></em>\n </button>\n </div>\n <div *ngIf=\"filterOption.dateRangeItems\">\n <mat-radio-group name=\"fontStyle\" aria-label=\"Font Style\" [value]=\"dateRangeValue\"\n (change)=\"dateRangeClick($event)\">\n <mat-radio-button *ngFor=\"let item of filterOption.dateRangeItems.items\" value=\"{{ item }}\">\n {{ item }} {{ filterOption.dateRangeItems.unit }} &nbsp;\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </mat-menu>\n </button>\n</ng-template>\n", styles: [":host ::ng-deep .mat-mdc-text-field-wrapper{margin-left:0!important}.apollo-text-field .mat-input-element{padding:10px;font-size:14px;border:1px solid #d4d4d4;border-radius:3px}.apollo-text-field .mat-form-field-wrapper{margin:0;padding:0;font-size:16px;color:#4d4d4d}.apollo-mat-label{font-size:18px;color:#4d4d4d;padding-bottom:15px}.apollo-mat-label .apollo-text-field .mat-input-element,.apollo-text-field .apollo-mat-label .mat-input-element{padding:10px;font-size:14px;border:1px solid #d4d4d4;border-radius:3px}.apollo-text-field .mat-form-field-underline{display:none}.apollo-text-field .mat-input-element:focus{border:1px solid #0768fd}.apollo-text-field .error-text{margin-top:10px}.mat-card.table-col-filter-panel{box-shadow:0 16px 24px #00000029;border-radius:4px;border:1px solid #d9d9d9}.mat-card.table-col-filter-panel .mat-card-actions i{vertical-align:baseline}.mat-card.table-col-filter-panel .mat-form-field-label{color:#000;font-size:17px}.mat-card.table-col-filter-panel .mat-card-content{margin-bottom:0;color:#000;font-size:17px}.date-picker-field{width:140px}.input-element{font:inherit;background:0 0;border:none;outline:0;padding:0;margin:0;width:130px!important;max-width:100%;vertical-align:bottom;text-align:inherit}.datepicker-toggle{right:40px;position:relative;margin-top:-7px}.multi-select-section{height:180px;overflow-y:auto}.custom-mat-menu-item{cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;text-align:left;text-decoration:none;max-width:100%;position:relative;height:40px;line-height:40px;font-family:Proxima-Nova-Regular,arial,sans-serif;font-size:14px;padding:0 20px;border:1px solid #f8f9fa}.custom-mat-menu-item:hover{background-color:#ecf3ff;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;text-align:left;text-decoration:none;max-width:100%;position:relative;height:40px;line-height:40px;font-family:Proxima-Nova-Regular,arial,sans-serif;font-size:14px;padding:0 20px;border:1px solid #f8f9fa}.disabled{pointer-events:none;background-color:#f8f9fa}.action-icon{margin-left:20px}.clear-all{color:#0768fd;font-weight:700;font-size:14px;float:right;padding:7px;cursor:pointer}.filter-icon{padding-right:6px}.custom-date-picker-field{width:130px}.custom-date-field{height:32px;padding:0 5px;width:125px}.date-clear{height:32px;line-height:32px;min-width:auto;padding:0 7px!important}.custom-panel-padding{padding:5px}.filter-search-container{position:relative}.clear-filter-search{position:absolute;right:6px;top:0%;cursor:pointer;font-size:14px;font-weight:600}.icon-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.card-width{max-width:300px}.card-form{min-width:150px;max-width:300px;width:100%}.card-full-width{width:100%}.close-icon{position:absolute;top:5px;right:-3px;font-size:16px;color:#4d4d4d;z-index:9999;opacity:.7}:host ::ng-deep .mdc-label{margin-bottom:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i8.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i8.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i8.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i13.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i13.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i15.SliderComponent, selector: "ngx-slider", inputs: ["value", "highValue", "options", "manualRefresh", "triggerFocus"], outputs: ["valueChange", "highValueChange", "userChangeStart", "userChange", "userChangeEnd"] }, { kind: "directive", type: i16.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: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i18.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i19.FilterByPropPipe, name: "filterByProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
301
+ }
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataColFilterComponent, decorators: [{
303
+ type: Component,
304
+ args: [{ selector: 'app-data-col-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"isUpdatedFilterDesign\">\n <ng-container [ngSwitch]=\"filterOption?.type\">\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.TEXT\">\n <mat-form-field\n class=\"apollo-text-field table-header-apollo-text-field text-search\"\n [floatLabel]=\"'auto'\"\n >\n <input\n (ngModelChange)=\"searchValueChanged()\"\n matInput\n type=\"text\"\n placeholder=\"Search {{ columnName.header }}\"\n name=\"search\"\n [formControl]=\"searchCtrl\"\n (ngModelChange)=\"changeContainsValue()\"\n />\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.REFERENCE\">\n <ng-select\n class=\"apollo-text-field table-header-apollo-text-field\"\n (change)=\"referenceValueChanged()\"\n [appendTo]=\"'mat-card'\"\n [items]=\"(selectableItems$ | async) || []\"\n [bindValue]=\"filterOption.bindProp\"\n [bindLabel]=\"filterOption.displayProp\"\n [multiple]=\"false\"\n placeholder=\"{{ columnName.header }}\"\n [formControl]=\"filterValue\"\n >\n </ng-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.CHECKBOX\">\n <button\n (menuOpened)=\"matMenuOpend()\"\n mat-raised-button\n [matMenuTriggerFor]=\"actions\"\n class=\"dropdown-toggle odp-secondary-button\"\n >\n <span>{{ columnName.header || columnName.prop | titlecase }}</span>\n <mat-menu\n #actions=\"matMenu\"\n focusFirstItem=\"false\"\n class=\"odb-mat-menu-panel custom-panel filter-panel\"\n >\n <div class=\"custom-panel-padding\">\n <span\n class=\"filter-search-container\"\n (click)=\"$event.stopPropagation()\"\n >\n <input\n *ngIf=\"!isSearchBoxHide\"\n required\n matInput\n type=\"text\"\n placeholder=\"Search {{ columnName.header }}\"\n name=\"search\"\n [formControl]=\"searchText\"\n />\n <span\n class=\"clear-filter-search\"\n *ngIf=\"searchText.value\"\n (click)=\"clearSearch()\"\n >&#x2715;</span\n >\n </span>\n <span\n (click)=\"clearSelection()\"\n class=\"clear-all\"\n >Clear all</span\n >\n <mat-spinner\n *ngIf=\"isLoading$ | async\"\n class=\"mr-1\"\n [diameter]=\"16\"\n ></mat-spinner>\n <div\n class=\"custom-mat-menu-item\"\n class=\"my-1\"\n >\n <span>\n <mat-checkbox\n class=\"bold-text\"\n [indeterminate]=\"isIndeterminate\"\n [checked]=\"isAllSelected\"\n [formControl]=\"selectAllCtrl\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"selectAllCheckbox()\"\n >Select All</mat-checkbox\n >\n </span>\n </div>\n <div\n class=\"custom-mat-menu-item\"\n *ngFor=\"\n let item of (selectableItems$ | async) ||\n filterOption.selectableItems ||\n []\n \"\n class=\"my-1\"\n >\n <span>\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n [checked]=\"isItemChecked(item)\"\n (change)=\"setCheckedValuesToFilter(item)\"\n [title]=\"item[filterOption.displayProp]\"\n >{{ item[filterOption.displayProp] }}</mat-checkbox\n >\n </span>\n </div>\n </div>\n </mat-menu>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.DATE_RANGE\">\n <ng-container *ngTemplateOutlet=\"dateRangeTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"FILTER_INPUT_TYPES.SLIDER\">\n <ng-container *ngIf=\"filterOption.filterTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n filterOption.filterTemplate;\n context: {\n $implicit: {\n filterOption: filterOption,\n thOptions: filterOption.thOptions\n }\n }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!filterOption.filterTemplate\">\n <div class=\"custom-slider custom-slider-alignment\">\n <ngx-slider (userChangeEnd)=\"sliderValueChanged()\" [(value)]=\"sliderValueOpt.minScore\"\n [(highValue)]=\"sliderValueOpt.maxScore\" [options]=\"sliderDefaultOptions\">\n </ngx-slider>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!isUpdatedFilterDesign\">\n <a #ngbPopover=\"ngbPopover\" [ngbPopover]=\"popTemplate\" [placement]=\"'bottom'\" [autoClose]=\"false\">\n <i class=\"fas fa-filter filter-icon\"></i>\n </a>\n <ng-template #popTemplate>\n <div class=\"card-width table-col-filter-panel\">\n <mat-icon (click)=\"closePopup()\" class=\"mat-icon material-icons close-icon\">close</mat-icon>\n <div class=\"card-form\">\n <mat-form-field *ngIf=\"!filterOption?.type || filterOption.type == FILTER_TYPES.CONTAINS\"\n class=\"card-full-width apollo-text-field\" [floatLabel]=\"'always'\">\n <mat-label>Filter By {{ columnName.header }}</mat-label>\n <input matInput placeholder=\"Enter {{ columnName.header }}\" [formControl]=\"filterValue\"\n (ngModelChange)=\"changeContainsValue()\">\n </mat-form-field>\n\n <mat-label *ngIf=\"filterOption?.type && filterOption?.type != FILTER_TYPES.CONTAINS\">Filter By\n {{columnName.header }}</mat-label>\n <div *ngIf=\"filterOption?.type === FILTER_TYPES.IN\">\n <section class=\"search\">\n <form ngForm>\n <div class=\"searchbar-wrapper\">\n <i class=\"svg-icon fa-solid fa-magnifying-glass\"></i>\n <input required matInput type=\"text\" placeholder=\"Search \"\n name=\"search\" />\n </div>\n </form>\n </section>\n <div [ngClass]=\"{ 'multi-select-section': filterOption.selectableItems?.length>6 }\">\n <div *ngFor=\"let item of filterOption.selectableItems | filterByProp: filterOption.displayProp: ''\"\n class=\"my-1\">\n <span>\n <mat-checkbox [checked]=\"isItemChecked(item)\"\n (change)=\"setCheckedValuesToFilter(item)\">\n {{item[filterOption.displayProp]}}</mat-checkbox>\n </span>\n </div>\n </div>\n </div>\n <div *ngIf=\"filterOption?.type === FILTER_TYPES.BETWEEN\" class=\"filter-item\" fxLayout=\"row\"\n [formGroup]=\"dateRangeFormGroup\">\n <div class=\"apollo-text-field date-picker-field\" fxLayout=\"row\">\n <input [readonly]=\"true\" matInput required (ngModelChange)=\"setDateValue('startDate')\"\n class=\"input-element\" [matDatepicker]=\"picker1\" [placeholder]=\"'Start Date'\"\n formControlName=\"startDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker1\"\n class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker1></mat-datepicker>\n\n </div>\n <div class=\"apollo-text-field date-picker-field\" fxLayout=\"row\">\n <input [readonly]=\"true\" matInput required (ngModelChange)=\"setDateValue('endDate')\"\n class=\"input-element\" [matDatepicker]=\"picker2\" [placeholder]=\"'End Date'\"\n formControlName=\"endDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker2\"\n class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </div>\n </div>\n <div *ngIf=\"filterOption?.type === FILTER_INPUT_TYPES.CHECKBOX\" class=\"filter-item\" fxLayout=\"row\">\n <button (menuOpened)=\"matMenuOpend()\" mat-raised-button [matMenuTriggerFor]=\"actions\"\n class=\"dropdown-toggle odp-secondary-button\">\n <span>{{getCheckBoxsValue?? columnName.header || columnName.prop | titlecase }}</span>\n <mat-menu #actions=\"matMenu\" focusFirstItem=\"false\" class=\"odb-mat-menu-panel custom-panel filter-panel\">\n <div class=\"custom-panel-padding\">\n <span class=\"filter-search-container\" (click)=\"$event.stopPropagation()\">\n <input *ngIf=\"!isSearchBoxHide\" required matInput type=\"text\"\n placeholder=\"Search {{ columnName.header }}\" name=\"search\" [formControl]=\"searchText\" />\n <span class=\"clear-filter-search\" *ngIf=\"searchText.value\" (click)=\"clearSearch()\">&#x2715;</span>\n </span>\n <span (click)=\"clearSelection()\" class=\"clear-all\">Clear all</span>\n <mat-spinner *ngIf=\"isLoading$ | async\" class=\"mr-1\" [diameter]=\"16\"></mat-spinner>\n <div class=\"custom-mat-menu-item\" class=\"my-1\">\n <span>\n <mat-checkbox class=\"bold-text\" [indeterminate]=\"isIndeterminate\" [checked]=\"isAllSelected\"\n [formControl]=\"selectAllCtrl\" (click)=\"$event.stopPropagation()\"\n (change)=\"selectAllCheckbox()\">Select All</mat-checkbox>\n </span>\n </div>\n <div class=\"custom-mat-menu-item\" *ngFor=\"\n let item of (selectableItems$ | async) ||\n filterOption.selectableItems ||\n []\n \" class=\"my-1\">\n <span>\n <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isItemChecked(item)\"\n (change)=\"setCheckedValuesToFilter(item)\" [title]=\"item[filterOption.displayProp]\">{{\n item[filterOption.displayProp] }}</mat-checkbox>\n </span>\n </div>\n </div>\n </mat-menu>\n </button>\n </div>\n </div>\n <mat-card-actions>\n <button [disabled]=\"isFormInvalid()\" (click)=\"columnFilterClicked()\" mat-button color=\"primary\"><i\n class=\"fa-solid fa-magnifying-glass\"></i> Search</button>\n <button (click)=\"columnFilterResetClicked()\" mat-button color=\"primary\"><i class=\"fas fa-redo\"></i>\n Clear</button>\n </mat-card-actions>\n </div>\n </ng-template>\n</ng-container>\n<ng-template #dateRangeTemplate>\n <button mat-raised-button [matMenuTriggerFor]=\"actions\" class=\"dropdown-toggle odp-secondary-button\">\n <span>{{ (columnName.header || columnName.prop) | titlecase}}</span>\n <mat-menu #actions=\"matMenu\" focusFirstItem=\"false\" class=\"date-range-panel\">\n <div class=\"filter-item\" fxLayout=\"row\" [formGroup]=\"dateRangeFormGroup\">\n <div class=\"apollo-text-field custom-date-picker-field\" fxLayout=\"row\">\n <input [readonly]=\"true\" (click)=\"picker1.open(); $event.stopPropagation();\" [max]=\"dateRangeFormGroup.controls['endDate'].value\" matInput required\n (ngModelChange)=\"setDateValue('startDate')\" class=\"custom-date-field\" [matDatepicker]=\"picker1\"\n [placeholder]=\"'From Date'\" formControlName=\"startDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker1\" class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker1></mat-datepicker>\n\n </div>\n <div class=\"apollo-text-field custom-date-picker-field\" fxLayout=\"row\">\n <input (click)=\"picker2.open(); $event.stopPropagation();\" [readonly]=\"true\" matInput required (ngModelChange)=\"setDateValue('endDate')\"\n class=\"custom-date-field\" [min]=\"dateRangeFormGroup.controls['startDate'].value\"\n [matDatepicker]=\"picker2\" [placeholder]=\"'To Date'\" formControlName=\"endDate\">\n <mat-datepicker-toggle matSuffix [for]=\"picker2\" class=\"datepicker-toggle\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </div>\n <button title=\"Clear all\" [disabled]=\"!isClearEnabled\" class=\"date-clear\" (click)=\"clearDateFilter()\" mat-stroked-button color=\"primary\">\n <em class=\"fas fa-broom\"></em>\n </button>\n </div>\n <div *ngIf=\"filterOption.dateRangeItems\">\n <mat-radio-group name=\"fontStyle\" aria-label=\"Font Style\" [value]=\"dateRangeValue\"\n (change)=\"dateRangeClick($event)\">\n <mat-radio-button *ngFor=\"let item of filterOption.dateRangeItems.items\" value=\"{{ item }}\">\n {{ item }} {{ filterOption.dateRangeItems.unit }} &nbsp;\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </mat-menu>\n </button>\n</ng-template>\n", styles: [":host ::ng-deep .mat-mdc-text-field-wrapper{margin-left:0!important}.apollo-text-field .mat-input-element{padding:10px;font-size:14px;border:1px solid #d4d4d4;border-radius:3px}.apollo-text-field .mat-form-field-wrapper{margin:0;padding:0;font-size:16px;color:#4d4d4d}.apollo-mat-label{font-size:18px;color:#4d4d4d;padding-bottom:15px}.apollo-mat-label .apollo-text-field .mat-input-element,.apollo-text-field .apollo-mat-label .mat-input-element{padding:10px;font-size:14px;border:1px solid #d4d4d4;border-radius:3px}.apollo-text-field .mat-form-field-underline{display:none}.apollo-text-field .mat-input-element:focus{border:1px solid #0768fd}.apollo-text-field .error-text{margin-top:10px}.mat-card.table-col-filter-panel{box-shadow:0 16px 24px #00000029;border-radius:4px;border:1px solid #d9d9d9}.mat-card.table-col-filter-panel .mat-card-actions i{vertical-align:baseline}.mat-card.table-col-filter-panel .mat-form-field-label{color:#000;font-size:17px}.mat-card.table-col-filter-panel .mat-card-content{margin-bottom:0;color:#000;font-size:17px}.date-picker-field{width:140px}.input-element{font:inherit;background:0 0;border:none;outline:0;padding:0;margin:0;width:130px!important;max-width:100%;vertical-align:bottom;text-align:inherit}.datepicker-toggle{right:40px;position:relative;margin-top:-7px}.multi-select-section{height:180px;overflow-y:auto}.custom-mat-menu-item{cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;text-align:left;text-decoration:none;max-width:100%;position:relative;height:40px;line-height:40px;font-family:Proxima-Nova-Regular,arial,sans-serif;font-size:14px;padding:0 20px;border:1px solid #f8f9fa}.custom-mat-menu-item:hover{background-color:#ecf3ff;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;text-align:left;text-decoration:none;max-width:100%;position:relative;height:40px;line-height:40px;font-family:Proxima-Nova-Regular,arial,sans-serif;font-size:14px;padding:0 20px;border:1px solid #f8f9fa}.disabled{pointer-events:none;background-color:#f8f9fa}.action-icon{margin-left:20px}.clear-all{color:#0768fd;font-weight:700;font-size:14px;float:right;padding:7px;cursor:pointer}.filter-icon{padding-right:6px}.custom-date-picker-field{width:130px}.custom-date-field{height:32px;padding:0 5px;width:125px}.date-clear{height:32px;line-height:32px;min-width:auto;padding:0 7px!important}.custom-panel-padding{padding:5px}.filter-search-container{position:relative}.clear-filter-search{position:absolute;right:6px;top:0%;cursor:pointer;font-size:14px;font-weight:600}.icon-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.card-width{max-width:300px}.card-form{min-width:150px;max-width:300px;width:100%}.card-full-width{width:100%}.close-icon{position:absolute;top:5px;right:-3px;font-size:16px;color:#4d4d4d;z-index:9999;opacity:.7}:host ::ng-deep .mdc-label{margin-bottom:0!important}\n"] }]
305
+ }], ctorParameters: () => [{ type: i1.FilterValueExecutorProvider }, { type: i0.ChangeDetectorRef }], propDecorators: { isClearFilter$: [{
306
+ type: Input
307
+ }], isUpdatedFilterDesign: [{
308
+ type: Input
309
+ }], columnName: [{
310
+ type: Input
311
+ }], filterParam: [{
312
+ type: Input
313
+ }], numberOfTableRefresh: [{
314
+ type: Input
315
+ }], filterOption: [{
316
+ type: Input
317
+ }], onFilterClicked: [{
318
+ type: Output
319
+ }], ngbPopover: [{
320
+ type: ViewChild,
321
+ args: ['ngbPopover']
322
+ }] } });
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb2wtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy91aS1raXQvY29tcG9uZW50cy9kYXRhLXRhYmxlL2RhdGEtY29sLWZpbHRlci9kYXRhLWNvbC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9tb2R1bGVzL3VpLWtpdC9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS1jb2wtZmlsdGVyL2RhdGEtY29sLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUVsRSxNQUFNLEVBQWlCLFNBQVMsRUFDekMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXRILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTVCLE1BQU0sT0FBTyxzQkFBc0I7SUF1Q2pDLFlBQ1UsMkJBQXdELEVBQ3hELEVBQXFCO1FBRHJCLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNkI7UUFDeEQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF4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Q0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0EvVFUsc0JBQXNCO21HQUF0QixzQkFBc0IsMmNDekJuQyxzc2NBeVJBOzs0RkRoUWEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNO2dJQUcvQixjQUFjO3NCQUE3QixLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBS1csZUFBZTtzQkFBL0IsTUFBTTtnQkFvQjBCLFVBQVU7c0JBQTFDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1zbGlkZXIvbmd4LXNsaWRlcic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiUG9wb3ZlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNGdW5jdGlvbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmluYWxpemUsIGZpcnN0LCBzaGFyZVJlcGxheSwgdGFrZVVudGlsLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElLZXlWYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdWkta2l0L2ludGVyZmFjZXMvZ2VuZXJpYy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlck9wdGlvbiwgSUZpbHRlclBhcmFtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9hcGkuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2RhdGEtdGFibGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlclZhbHVlRXhlY3V0b3JQcm92aWRlciB9IGZyb20gJy4uLy4uL2RhdGEtdGFibGUvZGF0YS1jb2wtZmlsdGVyL2ZpbHRlci12YWx1ZS1oZWxwZXJzL2ZpbHRlci12YWx1ZS1leGVjdXRvci1wcm92aWRlcic7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW5GaWx0ZXJJbnB1dFR5cGVzLCBEYXRhVGFibGVDb2x1bW5GaWx0ZXJUeXBlcyB9IGZyb20gJy4uLy4uL2RhdGEtdGFibGUvZW51bXMvY29sLWZpbHRlci10eXBlcyc7XG5pbXBvcnQgeyBJRGF0YVRhYmxlQ29sdW1uRmlsdGVyVmFsdWUgfSBmcm9tICcuLi8uLi9kYXRhLXRhYmxlL2ludGVyZmFjZXMvZmlsdGVyLXZhbHVlLWV4ZWN1dG9yLmludGVyZmFjZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXRhLWNvbC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1jb2wtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS1jb2wtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhQ29sRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc0NsZWFyRmlsdGVyJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc1VwZGF0ZWRGaWx0ZXJEZXNpZ24gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbk5hbWU6IElEYXRhVGFibGVDb2x1bW47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXJQYXJhbTogSUZpbHRlclBhcmFtO1xuICBASW5wdXQoKSBwdWJsaWMgbnVtYmVyT2ZUYWJsZVJlZnJlc2g6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGZpbHRlck9wdGlvbjogSUZpbHRlck9wdGlvbjtcbiAgcHVibGljIHNlbGVjdGFibGVJdGVtcyQ6IEJlaGF2aW9yU3ViamVjdDxJS2V5VmFsdWVbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElLZXlWYWx1ZVtdPihudWxsKTtcbiAgcHVibGljIHNlYXJjaFRleHQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIHB1YmxpYyBzZWxlY3RBbGxDdHJsOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KCkgcHVibGljIG9uRmlsdGVyQ2xpY2tlZDogRXZlbnRFbWl0dGVyPElGaWx0ZXJQYXJhbT4gPSBuZXcgRXZlbnRFbWl0dGVyPElGaWx0ZXJQYXJhbT4oKTtcblxuICBwdWJsaWMgZGF0ZVJhbmdlRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIGVuZERhdGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuICBwdWJsaWMgZGF0ZVJhbmdlVmFsdWUgPSAnJztcbiAgcHVibGljIHNsaWRlclZhbHVlT3B0ID0ge1xuICAgIG1heFNjb3JlOiAxMDAsXG4gICAgbWluU2NvcmU6IDAsXG4gIH07XG4gIHB1YmxpYyBmaWx0ZXJWYWx1ZTogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBzZWFyY2hDdHJsOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBwdWJsaWMgRklMVEVSX1RZUEVTID0gRGF0YVRhYmxlQ29sdW1uRmlsdGVyVHlwZXM7XG4gIHB1YmxpYyBGSUxURVJfSU5QVVRfVFlQRVMgPSBEYXRhVGFibGVDb2x1bW5GaWx0ZXJJbnB1dFR5cGVzO1xuICBwdWJsaWMgc2xpZGVyRGVmYXVsdE9wdGlvbnM6IE9wdGlvbnMgPSB7XG4gICAgZmxvb3I6IDAsXG4gICAgY2VpbDogMTAwLFxuICB9O1xuICBwdWJsaWMgaXNMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIEBWaWV3Q2hpbGQoJ25nYlBvcG92ZXInKSBwcml2YXRlIG5nYlBvcG92ZXI6IE5nYlBvcG92ZXJcbiAgcHJpdmF0ZSBmaWx0ZXJWYWx1ZU1ha2VyOiBJRGF0YVRhYmxlQ29sdW1uRmlsdGVyVmFsdWU7XG4gIHByaXZhdGUgZmlsdGVyV29ya2luZ1ZhbHVlOiBJS2V5VmFsdWU7XG4gIHByaXZhdGUgc2VsZWN0YWJsZUl0ZW1zOiBJS2V5VmFsdWVbXSA9IFtdO1xuICBwcml2YXRlIHByZXZpb3VzU2VsZWN0YWJsZUl0ZW1zOiBJS2V5VmFsdWVbXTtcbiAgcHJpdmF0ZSBjbGVhclN1YnMkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBzZWFyY2hPYmplY3QkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmlsdGVyVmFsdWVFeGVjdXRvclByb3ZpZGVyOiBGaWx0ZXJWYWx1ZUV4ZWN1dG9yUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuc2V0U2VhcmNoV2F0Y2hlciQoKTtcbiAgfVxuXG4gIGdldCBnZXRDaGVja0JveHNWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlKSA/ICB0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZS5qb2luKCcgJykgOiB0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZVswXTtcbiAgfVxuICBcbiAgZ2V0IGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKDxzdHJpbmdbXT50aGlzLmZpbHRlcldvcmtpbmdWYWx1ZSkubGVuZ3RoID4gMCAmJiAoPHN0cmluZ1tdPnRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlKS5sZW5ndGggIT09IHRoaXMuc2VsZWN0YWJsZUl0ZW1zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZS5sZW5ndGggPiAwICYmIHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlLmxlbmd0aCA9PT0gdGhpcy5zZWxlY3RhYmxlSXRlbXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGlzQ2xlYXJFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmRhdGVSYW5nZUZvcm1Hcm91cC5nZXQoJ3N0YXJ0RGF0ZScpLnZhbHVlIHx8IHRoaXMuZGF0ZVJhbmdlRm9ybUdyb3VwLmdldCgnZW5kRGF0ZScpLnZhbHVlKTtcbiAgfVxuXG4gIGdldCBpc1NlYXJjaEJveEhpZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWx0ZXJPcHRpb24/LmlzU2VhcmNoQm94SGlkZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyU3VicyQubmV4dChudWxsKTtcbiAgICB0aGlzLmNsZWFyU3VicyQuY29tcGxldGUoKTtcbiAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5pc0xvYWRpbmckLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZSA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5pc0NsZWFyRmlsdGVyJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuZmlsdGVyT3B0aW9uICYmICh0aGlzLmZpbHRlck9wdGlvbi50eXBlID09PSBEYXRhVGFibGVDb2x1bW5GaWx0ZXJJbnB1dFR5cGVzLlJFRkVSRU5DRSkpIHtcbiAgICAgIHRoaXMubG9hZERlZmF1bHRSZWZlcmVuY2VJdGVtcygpO1xuICAgICAgdGhpcy5sb2FkUmVmZXJlbmNlRGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlclZhbHVlTWFrZXIgPSB0aGlzLmZpbHRlclZhbHVlRXhlY3V0b3JQcm92aWRlclxuICAgICAgLmdldEZpbHRlclZhbHVlRXhlY3V0b3JQcm92aWRlcih0aGlzLmZpbHRlck9wdGlvbiAmJiB0aGlzLmZpbHRlck9wdGlvbi50eXBlIHx8IHRoaXMuRklMVEVSX1RZUEVTLkNPTlRBSU5TKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlTWFrZXIuc2V0SW5pdFZhbHVlcyh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZmlsdGVyUGFyYW0gJiYgdGhpcy5maWx0ZXJWYWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZS5zZXRWYWx1ZSh0aGlzLmZpbHRlclBhcmFtID8gdGhpcy5maWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZSA6ICcnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsQ2hlY2tib3goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsQ3RybC52YWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJXb3JraW5nVmFsdWUgPSB0aGlzLnNlbGVjdGFibGVJdGVtcyQuZ2V0VmFsdWUoKS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJXb3JraW5nVmFsdWUgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5lbWl0RmlsdGVyUGFyYW0oPHN0cmluZ1tdPnRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5GaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZW1pdEZpbHRlclBhcmFtKCk7XG4gICAgdGhpcy5uZ2JQb3BvdmVyLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgY29sdW1uRmlsdGVyUmVzZXRDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyVmFsdWVNYWtlci5yZXNldFZhbHVlKHRoaXMpO1xuICAgIHRoaXMuZW1pdEZpbHRlclBhcmFtKCk7XG4gICAgdGhpcy5uZ2JQb3BvdmVyLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgbWF0TWVudU9wZW5kKCk6IHZvaWQge1xuICAgIHRoaXMucHJldmlvdXNTZWxlY3RhYmxlSXRlbXMgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RhYmxlSXRlbXMpO1xuICAgIHRoaXMuc2VsZWN0YWJsZUl0ZW1zID0gW107XG4gICAgdGhpcy5zZWxlY3RhYmxlSXRlbXMkLm5leHQodGhpcy5zZWxlY3RhYmxlSXRlbXMpO1xuICAgIGlmICh0aGlzLnNlYXJjaFRleHQudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dC5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpbHRlck9wdGlvbi5zZWxlY3RhYmxlSXRlbXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0YWJsZUl0ZW1zID0gdGhpcy5maWx0ZXJPcHRpb24uc2VsZWN0YWJsZUl0ZW1zO1xuICAgICAgdGhpcy5zZWxlY3RhYmxlSXRlbXMkLm5leHQodGhpcy5maWx0ZXJPcHRpb24uc2VsZWN0YWJsZUl0ZW1zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuZmlsdGVyT3B0aW9uICYmIGlzRnVuY3Rpb24odGhpcy5maWx0ZXJPcHRpb24uZ2V0U2VsZWN0YWJsZUZuJCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9uLmdldFNlbGVjdGFibGVGbiQoJycpXG4gICAgICAgIC5waXBlKGZpcnN0KCksIHNoYXJlUmVwbGF5KCksIHRha2VVbnRpbCh0aGlzLmNsZWFyU3VicyQpLCBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSkpKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IElLZXlWYWx1ZTxhbnk+W10pID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJybnRTZWxlY3RlZEl0ZW1zID0gdGhpcy5nZXRDdXJyZW50U2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUl0ZW1zID0gWy4uLnJlc107XG4gICAgICAgICAgdGhpcy5yZW1vdmVQcmV2aW91c1NlbGVjdGVkSXRlbXMoY3Vycm50U2VsZWN0ZWRJdGVtcywgcmVzKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGFibGVJdGVtcyQubmV4dChjdXJybnRTZWxlY3RlZEl0ZW1zLmNvbmNhdChyZXMpKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmdldFNlbGVjdGFibGVJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkYXRlUmFuZ2VDbGljayhldjogYW55KSB7XG4gICAgdGhpcy5kYXRlUmFuZ2VWYWx1ZSA9IGV2LnZhbHVlO1xuICAgIGNvbnN0IHZhbCA9ICtldi52YWx1ZTtcbiAgICBjb25zdCByYXcgPSB7IGRheXM6IDEsIHdlZWtzOiA3LCBtb250aHM6IDMwLCB5ZWFyczogMzY1IH07XG4gICAgY29uc3QgZGF5cyA9ICh2YWwgKiByYXdbdGhpcy5maWx0ZXJPcHRpb24uZGF0ZVJhbmdlSXRlbXM/LnVuaXQgPz8gJ2RheXMnXSkgLSAxO1xuICAgIHRoaXMuZGF0ZVJhbmdlRm9ybUdyb3VwLnNldFZhbHVlKHsgc3RhcnREYXRlOiBuZXcgRGF0ZSgpIGFzIGFueSwgZW5kRGF0ZTogbW9tZW50KCkuYWRkKGRheXMsICdkYXlzJykudG9EYXRlKCkgYXMgYW55IH0pO1xuICB9XG5cblxuICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZU1ha2VyLnJlc2V0VmFsdWUodGhpcyk7XG4gICAgdGhpcy5lbWl0RmlsdGVyUGFyYW0oKTtcbiAgICB0aGlzLnNlbGVjdEFsbEN0cmwucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckRhdGVGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlUmFuZ2VGb3JtR3JvdXAucmVzZXQoe30sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLmZpbHRlclZhbHVlTWFrZXIucmVzZXRWYWx1ZSh0aGlzKTtcbiAgICB0aGlzLmVtaXRGaWx0ZXJQYXJhbSgpO1xuICAgIHRoaXMuZGF0ZVJhbmdlVmFsdWUgPSAnJztcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBvcHVwKCk6IHZvaWQge1xuICAgIHRoaXMubmdiUG9wb3Zlci5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dC5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlQ29udGFpbnNWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWUudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoVmFsdWVDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoT2JqZWN0JC5uZXh0KHRoaXMuZmlsdGVyVmFsdWUudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHNldENoZWNrZWRWYWx1ZXNUb0ZpbHRlcihpdGVtOiBJS2V5VmFsdWUpOiB2b2lkIHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJXb3JraW5nVmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlTWFrZXIuc2V0RmlsdGVyVmFsdWUodGhpcy5maWx0ZXJPcHRpb24sIHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlLCBpdGVtKTtcbiAgICB0aGlzLmVtaXRGaWx0ZXJQYXJhbSg8c3RyaW5nW10+dGhpcy5maWx0ZXJXb3JraW5nVmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHJlZmVyZW5jZVZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRGaWx0ZXJQYXJhbSh0aGlzLmZpbHRlclZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzbGlkZXJWYWx1ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJXb3JraW5nVmFsdWUgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJXb3JraW5nVmFsdWVbJ21heFNjb3JlJ10gPSB0aGlzLnNsaWRlclZhbHVlT3B0Lm1heFNjb3JlO1xuICAgIHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlWydtaW5TY29yZSddID0gdGhpcy5zbGlkZXJWYWx1ZU9wdC5taW5TY29yZTtcbiAgICB0aGlzLmVtaXRGaWx0ZXJQYXJhbSgpO1xuXG4gIH1cblxuICBwdWJsaWMgc2V0RGF0ZVZhbHVlKGZvcm1OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZSA9IHt9O1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZVtmb3JtTmFtZV0gPSB0aGlzLmRhdGVSYW5nZUZvcm1Hcm91cC5jb250cm9sc1tmb3JtTmFtZV0udmFsdWU7XG4gICAgaWYgKHRoaXMuaXNVcGRhdGVkRmlsdGVyRGVzaWduICYmICh0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZVtmb3JtTmFtZV0gfHxcbiAgICAgIHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlW2Zvcm1OYW1lXSkpIHtcbiAgICAgIHRoaXMuZW1pdEZpbHRlclBhcmFtKHRoaXMucG9wdWxhdGVEYXRlUm5hZ2UoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzSXRlbUNoZWNrZWQoaXRlbTogSUtleVZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVNYWtlci5pc0NoZWNrZWRGaWx0ZXJWYWx1ZSh0aGlzLmZpbHRlck9wdGlvbiwgdGhpcy5maWx0ZXJXb3JraW5nVmFsdWUsIGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGlzRm9ybUludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVNYWtlci5pc0Zvcm1JbnZhbGlkKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJWYWx1ZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVNYWtlci5nZXRGaWx0ZXJWYWx1ZSh0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZSwgdGhpcy5pc1VwZGF0ZWRGaWx0ZXJEZXNpZ24pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmlsdGVyUGFyYW0oZmlsdGVyVmFsdWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMub25GaWx0ZXJDbGlja2VkLmVtaXQoe1xuICAgICAgZmlsdGVyQ29sdW1uOiB0aGlzLmNvbHVtbk5hbWUsXG4gICAgICBmaWx0ZXJWYWx1ZTogZmlsdGVyVmFsdWUgPyBmaWx0ZXJWYWx1ZSA6IHRoaXMuZ2V0RmlsdGVyVmFsdWUoKSxcbiAgICAgIGNvbHVtbk5hbWU6IHRoaXMuY29sdW1uTmFtZS5wcm9wLFxuICAgICAgZmlsdGVyVHlwZTogdGhpcy5maWx0ZXJPcHRpb24gJiYgdGhpcy5maWx0ZXJPcHRpb24udHlwZSB8fCB0aGlzLkZJTFRFUl9UWVBFUy5DT05UQUlOUyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0YWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZ09iaiA9IHRoaXMuZ2V0Q3VycmVudFNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9uLmdldFNlbGVjdGFibGVGbiQodGhpcy5zZWFyY2hUZXh0LnZhbHVlLCB0cnVlKVxuICAgICAgICAgIC5waXBlKGZpcnN0KCksIHNoYXJlUmVwbGF5KCksIHRha2VVbnRpbCh0aGlzLmNsZWFyU3VicyQpLCBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSkpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBJS2V5VmFsdWU8YW55PltdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVByZXZpb3VzU2VsZWN0ZWRJdGVtcyhleGlzdGluZ09iaiwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlSXRlbXMgPSBleGlzdGluZ09iai5jb25jYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlSXRlbXMkLm5leHQoZXhpc3RpbmdPYmouY29uY2F0KHJlc3BvbnNlKSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZU1ha2VyLnJlc2V0VmFsdWUodGhpcyk7XG4gICAgdGhpcy5kYXRlUmFuZ2VGb3JtR3JvdXAucmVzZXQoKTtcbiAgICB0aGlzLmlzQ2xlYXJGaWx0ZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50U2VsZWN0ZWRJdGVtcygpOiBJS2V5VmFsdWVbXSB7XG4gICAgY29uc3QgZXhpc3RpbmdWYWx1ZXMgPSA8W10+IHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlO1xuICAgIHJldHVybiBleGlzdGluZ1ZhbHVlcy5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMucHJldmlvdXNTZWxlY3RhYmxlSXRlbXMuZmluZCh4ID0+IHhbdGhpcy5maWx0ZXJPcHRpb24uYmluZFByb3BdID09PSBpdGVtKT8uW3RoaXMuZmlsdGVyT3B0aW9uLmRpc3BsYXlQcm9wXTtcbiAgICAgIHJldHVybiA8SUtleVZhbHVlPnsgW3RoaXMuZmlsdGVyT3B0aW9uLmJpbmRQcm9wXTogaXRlbSwgW3RoaXMuZmlsdGVyT3B0aW9uLmRpc3BsYXlQcm9wXTogbGFiZWwgfHwgJycgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUHJldmlvdXNTZWxlY3RlZEl0ZW1zKHByZXZpb3VzSXRlbXM6IElLZXlWYWx1ZVtdLCBjdXJyZW50SXRlbXM6IElLZXlWYWx1ZVtdKTogdm9pZCB7XG4gICAgcHJldmlvdXNJdGVtcy5mb3JFYWNoKHggPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBjdXJyZW50SXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbVt0aGlzLmZpbHRlck9wdGlvbi5iaW5kUHJvcF0gPT09IHhbdGhpcy5maWx0ZXJPcHRpb24uYmluZFByb3BdKTtcbiAgICAgIGlmIChwb3NpdGlvbiAhPT0gLSAxKSB7XG4gICAgICAgIGN1cnJlbnRJdGVtcy5zcGxpY2UocG9zaXRpb24sIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZURhdGVSbmFnZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGF0ZVJhbmdlczogc3RyaW5nW10gPSBbXTtcbiAgICBkYXRlUmFuZ2VzWzBdID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuZmlsdGVyV29ya2luZ1ZhbHVlLnN0YXJ0RGF0ZSk7XG4gICAgZGF0ZVJhbmdlc1sxXSA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLmZpbHRlcldvcmtpbmdWYWx1ZS5lbmREYXRlKTtcbiAgICByZXR1cm4gZGF0ZVJhbmdlcztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RGF0ZShkYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gYCR7bmV3IERhdGUoZGF0ZSkuZ2V0RnVsbFllYXIoKX0tJHtuZXcgRGF0ZShkYXRlKS5nZXRNb250aCgpICsgMX0tJHtuZXcgRGF0ZShkYXRlKS5nZXREYXRlKCl9YDtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFJlZmVyZW5jZURhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZS5zZXRWYWx1ZShudWxsKTtcbiAgICBpZiAodGhpcy5maWx0ZXJPcHRpb24uc2VsZWN0YWJsZUl0ZW1zICYmIHRoaXMuZmlsdGVyT3B0aW9uLnNlbGVjdGFibGVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0YWJsZUl0ZW1zJC5uZXh0KHRoaXMuZmlsdGVyT3B0aW9uLnNlbGVjdGFibGVJdGVtcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMuZmlsdGVyT3B0aW9uLmdldFNlbGVjdGFibGVGbiQpKSB7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbi5nZXRTZWxlY3RhYmxlRm4kKCkucGlwZSh0YWtlVW50aWwodGhpcy5jbGVhclN1YnMkKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBJS2V5VmFsdWU8YW55PltdKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlSXRlbXMkLm5leHQocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VhcmNoV2F0Y2hlciQoKTogdm9pZCB7XG4gICAgIHRoaXMuc2VhcmNoT2JqZWN0JC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB0YWtlVW50aWwodGhpcy5jbGVhclN1YnMkKSlcbiAgICAgLnN1YnNjcmliZSgoc2VhcmNoU3RyOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMub25GaWx0ZXJDbGlja2VkLmVtaXQoe1xuICAgICAgICBmaWx0ZXJDb2x1bW46IHRoaXMuY29sdW1uTmFtZSxcbiAgICAgICAgZmlsdGVyVmFsdWU6IHNlYXJjaFN0cixcbiAgICAgICAgY29sdW1uTmFtZTogdGhpcy5jb2x1bW5OYW1lLnByb3AsXG4gICAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyT3B0aW9uICYmIHRoaXMuZmlsdGVyT3B0aW9uLnR5cGUgfHwgdGhpcy5GSUxURVJfVFlQRVMuQ09OVEFJTlMsXG4gICAgICB9KTtcbiAgICAgfSk7XG4gIH1cbiAgXG4gIHByaXZhdGUgbG9hZERlZmF1bHRSZWZlcmVuY2VJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGFibGVJdGVtcyQubmV4dChbXG4gICAgICB7IFt0aGlzLmZpbHRlck9wdGlvbi5kaXNwbGF5UHJvcF06ICdTRUxFQ1QnLCBbdGhpcy5maWx0ZXJPcHRpb24uYmluZFByb3BdOiAnJyB9LFxuICAgICAgeyBbdGhpcy5maWx0ZXJPcHRpb24uZGlzcGxheVByb3BdOiAnVHJ1ZScsIFt0aGlzLmZpbHRlck9wdGlvbi5iaW5kUHJvcF06IHRydWUgfSxcbiAgICAgIHsgW3RoaXMuZmlsdGVyT3B0aW9uLmRpc3BsYXlQcm9wXTogJ0ZhbHNlJywgW3RoaXMuZmlsdGVyT3B0aW9uLmJpbmRQcm9wXTogZmFsc2UgfSxcbiAgICBdKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVXBkYXRlZEZpbHRlckRlc2lnblwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWx0ZXJPcHRpb24/LnR5cGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGSUxURVJfSU5QVVRfVFlQRVMuVEVYVFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIGNsYXNzPVwiYXBvbGxvLXRleHQtZmllbGQgdGFibGUtaGVhZGVyLWFwb2xsby10ZXh0LWZpZWxkIHRleHQtc2VhcmNoXCJcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwiJ2F1dG8nXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoVmFsdWVDaGFuZ2VkKClcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHt7IGNvbHVtbk5hbWUuaGVhZGVyIH19XCJcbiAgICAgICAgICBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ3RybFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29udGFpbnNWYWx1ZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRklMVEVSX0lOUFVUX1RZUEVTLlJFRkVSRU5DRVwiPlxuICAgICAgPG5nLXNlbGVjdFxuICAgICAgICBjbGFzcz1cImFwb2xsby10ZXh0LWZpZWxkIHRhYmxlLWhlYWRlci1hcG9sbG8tdGV4dC1maWVsZFwiXG4gICAgICAgIChjaGFuZ2UpPVwicmVmZXJlbmNlVmFsdWVDaGFuZ2VkKClcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiJ21hdC1jYXJkJ1wiXG4gICAgICAgIFtpdGVtc109XCIoc2VsZWN0YWJsZUl0ZW1zJCB8IGFzeW5jKSB8fCBbXVwiXG4gICAgICAgIFtiaW5kVmFsdWVdPVwiZmlsdGVyT3B0aW9uLmJpbmRQcm9wXCJcbiAgICAgICAgW2JpbmRMYWJlbF09XCJmaWx0ZXJPcHRpb24uZGlzcGxheVByb3BcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbHVtbk5hbWUuaGVhZGVyIH19XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclZhbHVlXCJcbiAgICAgID5cbiAgICAgIDwvbmctc2VsZWN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZJTFRFUl9JTlBVVF9UWVBFUy5DSEVDS0JPWFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAobWVudU9wZW5lZCk9XCJtYXRNZW51T3BlbmQoKVwiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25zXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgb2RwLXNlY29uZGFyeS1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBjb2x1bW5OYW1lLmhlYWRlciB8fCBjb2x1bW5OYW1lLnByb3AgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgIDxtYXQtbWVudVxuICAgICAgICAgICNhY3Rpb25zPVwibWF0TWVudVwiXG4gICAgICAgICAgZm9jdXNGaXJzdEl0ZW09XCJmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJvZGItbWF0LW1lbnUtcGFuZWwgY3VzdG9tLXBhbmVsIGZpbHRlci1wYW5lbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXBhbmVsLXBhZGRpbmdcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXNlYXJjaC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNTZWFyY2hCb3hIaWRlXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHt7IGNvbHVtbk5hbWUuaGVhZGVyIH19XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1maWx0ZXItc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlYXJjaFRleHQudmFsdWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICA+JiN4MjcxNTs8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWFsbFwiXG4gICAgICAgICAgICAgID5DbGVhciBhbGw8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lclxuICAgICAgICAgICAgICAqbmdJZj1cImlzTG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXItMVwiXG4gICAgICAgICAgICAgIFtkaWFtZXRlcl09XCIxNlwiXG4gICAgICAgICAgICA+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tbWF0LW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXktMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9sZC10ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWxlY3RBbGxDdHJsXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RBbGxDaGVja2JveCgpXCJcbiAgICAgICAgICAgICAgICAgID5TZWxlY3QgQWxsPC9tYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1tYXQtbWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgKHNlbGVjdGFibGVJdGVtcyQgfCBhc3luYykgfHxcbiAgICAgICAgICAgICAgICAgIGZpbHRlck9wdGlvbi5zZWxlY3RhYmxlSXRlbXMgfHxcbiAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXktMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNJdGVtQ2hlY2tlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldENoZWNrZWRWYWx1ZXNUb0ZpbHRlcihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtmaWx0ZXJPcHRpb24uZGlzcGxheVByb3BdXCJcbiAgICAgICAgICAgICAgICAgID57eyBpdGVtW2ZpbHRlck9wdGlvbi5kaXNwbGF5UHJvcF0gfX08L21hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGSUxURVJfSU5QVVRfVFlQRVMuREFURV9SQU5HRVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVSYW5nZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRklMVEVSX0lOUFVUX1RZUEVTLlNMSURFUlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlck9wdGlvbi5maWx0ZXJUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGZpbHRlck9wdGlvbi5maWx0ZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgZmlsdGVyT3B0aW9uOiBmaWx0ZXJPcHRpb24sXG4gICAgICAgICAgICAgICAgdGhPcHRpb25zOiBmaWx0ZXJPcHRpb24udGhPcHRpb25zXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyT3B0aW9uLmZpbHRlclRlbXBsYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2xpZGVyIGN1c3RvbS1zbGlkZXItYWxpZ25tZW50XCI+XG4gICAgICAgICAgPG5neC1zbGlkZXIgKHVzZXJDaGFuZ2VFbmQpPVwic2xpZGVyVmFsdWVDaGFuZ2VkKClcIiBbKHZhbHVlKV09XCJzbGlkZXJWYWx1ZU9wdC5taW5TY29yZVwiXG4gICAgICAgICAgICBbKGhpZ2hWYWx1ZSldPVwic2xpZGVyVmFsdWVPcHQubWF4U2NvcmVcIiBbb3B0aW9uc109XCJzbGlkZXJEZWZhdWx0T3B0aW9uc1wiPlxuICAgICAgICAgIDwvbmd4LXNsaWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVXBkYXRlZEZpbHRlckRlc2lnblwiPlxuICA8YSAjbmdiUG9wb3Zlcj1cIm5nYlBvcG92ZXJcIiBbbmdiUG9wb3Zlcl09XCJwb3BUZW1wbGF0ZVwiIFtwbGFjZW1lbnRdPVwiJ2JvdHRvbSdcIiBbYXV0b0Nsb3NlXT1cImZhbHNlXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgZmlsdGVyLWljb25cIj48L2k+XG4gIDwvYT5cbiAgPG5nLXRlbXBsYXRlICNwb3BUZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXdpZHRoIHRhYmxlLWNvbC1maWx0ZXItcGFuZWxcIj5cbiAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjbG9zZVBvcHVwKClcIiBjbGFzcz1cIm1hdC1pY29uIG1hdGVyaWFsLWljb25zIGNsb3NlLWljb25cIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvcm1cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFmaWx0ZXJPcHRpb24/LnR5cGUgfHwgZmlsdGVyT3B0aW9uLnR5cGUgPT0gRklMVEVSX1RZUEVTLkNPTlRBSU5TXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtZnVsbC13aWR0aCBhcG9sbG8tdGV4dC1maWVsZFwiIFtmbG9hdExhYmVsXT1cIidhbHdheXMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWx0ZXIgQnkge3sgY29sdW1uTmFtZS5oZWFkZXIgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJFbnRlciB7eyBjb2x1bW5OYW1lLmhlYWRlciB9fVwiIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNvbnRhaW5zVmFsdWUoKVwiPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImZpbHRlck9wdGlvbj8udHlwZSAmJiBmaWx0ZXJPcHRpb24/LnR5cGUgIT0gRklMVEVSX1RZUEVTLkNPTlRBSU5TXCI+RmlsdGVyIEJ5XG4gICAgICAgICAgICAgICAgICAgICAge3tjb2x1bW5OYW1lLmhlYWRlciB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlck9wdGlvbj8udHlwZSA9PT0gRklMVEVSX1RZUEVTLklOXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbmdGb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaGJhci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzdmctaWNvbiBmYS1zb2xpZCBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCByZXF1aXJlZCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWFyY2hcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdtdWx0aS1zZWxlY3Qtc2VjdGlvbic6IGZpbHRlck9wdGlvbi5zZWxlY3RhYmxlSXRlbXM/Lmxlbmd0aD42IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJPcHRpb24uc2VsZWN0YWJsZUl0ZW1zIHwgZmlsdGVyQnlQcm9wOiBmaWx0ZXJPcHRpb24uZGlzcGxheVByb3A6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJpc0l0ZW1DaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRDaGVja2VkVmFsdWVzVG9GaWx0ZXIoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2ZpbHRlck9wdGlvbi5kaXNwbGF5UHJvcF19fTwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlck9wdGlvbj8udHlwZSA9PT0gRklMVEVSX1RZUEVTLkJFVFdFRU5cIiBjbGFzcz1cImZpbHRlci1pdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZGF0ZVJhbmdlRm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwb2xsby10ZXh0LWZpZWxkIGRhdGUtcGlja2VyLWZpZWxkXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtyZWFkb25seV09XCJ0cnVlXCIgbWF0SW5wdXQgcmVxdWlyZWQgKG5nTW9kZWxDaGFuZ2UpPVwic2V0RGF0ZVZhbHVlKCdzdGFydERhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWVsZW1lbnRcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXIxXCIgW3BsYWNlaG9sZGVyXT1cIidTdGFydCBEYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydERhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXIxPjwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBvbGxvLXRleHQtZmllbGQgZGF0ZS1waWNrZXItZmllbGRcIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3JlYWRvbmx5XT1cInRydWVcIiBtYXRJbnB1dCByZXF1aXJlZCAobmdNb2RlbENoYW5nZSk9XCJzZXREYXRlVmFsdWUoJ2VuZERhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWVsZW1lbnRcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXIyXCIgW3BsYWNlaG9sZGVyXT1cIidFbmQgRGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlcjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLXRvZ2dsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcjI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJPcHRpb24/LnR5cGUgPT09IEZJTFRFUl9JTlBVVF9UWVBFUy5DSEVDS0JPWFwiIGNsYXNzPVwiZmlsdGVyLWl0ZW1cIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgIDxidXR0b24gKG1lbnVPcGVuZWQpPVwibWF0TWVudU9wZW5kKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uc1wiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBvZHAtc2Vjb25kYXJ5LWJ1dHRvblwiPlxuICAgICAgICAgICAgPHNwYW4+e3tnZXRDaGVja0JveHNWYWx1ZT8/IGNvbHVtbk5hbWUuaGVhZGVyIHx8IGNvbHVtbk5hbWUucHJvcCB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjYWN0aW9ucz1cIm1hdE1lbnVcIiBmb2N1c0ZpcnN0SXRlbT1cImZhbHNlXCIgY2xhc3M9XCJvZGItbWF0LW1lbnUtcGFuZWwgY3VzdG9tLXBhbmVsIGZpbHRlci1wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXBhbmVsLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1zZWFyY2gtY29udGFpbmVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIWlzU2VhcmNoQm94SGlkZVwiIHJlcXVpcmVkIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2gge3sgY29sdW1uTmFtZS5oZWFkZXIgfX1cIiBuYW1lPVwic2VhcmNoXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaFRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjbGVhci1maWx0ZXItc2VhcmNoXCIgKm5nSWY9XCJzZWFyY2hUZXh0LnZhbHVlXCIgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj4mI3gyNzE1Ozwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIiBjbGFzcz1cImNsZWFyLWFsbFwiPkNsZWFyIGFsbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIiBjbGFzcz1cIm1yLTFcIiBbZGlhbWV0ZXJdPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tbWF0LW1lbnUtaXRlbVwiIGNsYXNzPVwibXktMVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJib2xkLXRleHRcIiBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVcIiBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0QWxsQ3RybFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0QWxsQ2hlY2tib3goKVwiPlNlbGVjdCBBbGw8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW1hdC1tZW51LWl0ZW1cIiAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiAoc2VsZWN0YWJsZUl0ZW1zJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgZmlsdGVyT3B0aW9uLnNlbGVjdGFibGVJdGVtcyB8fFxuICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgXCIgY2xhc3M9XCJteS0xXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2NoZWNrZWRdPVwiaXNJdGVtQ2hlY2tlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRDaGVja2VkVmFsdWVzVG9GaWx0ZXIoaXRlbSlcIiBbdGl0bGVdPVwiaXRlbVtmaWx0ZXJPcHRpb24uZGlzcGxheVByb3BdXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtW2ZpbHRlck9wdGlvbi5kaXNwbGF5UHJvcF0gfX08L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzRm9ybUludmFsaWQoKVwiIChjbGljayk9XCJjb2x1bW5GaWx0ZXJDbGlja2VkKClcIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPiBTZWFyY2g8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29sdW1uRmlsdGVyUmVzZXRDbGlja2VkKClcIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPjxpIGNsYXNzPVwiZmFzIGZhLXJlZG9cIj48L2k+XG4gICAgICAgICAgICAgICAgICBDbGVhcjwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI2RhdGVSYW5nZVRlbXBsYXRlPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjdGlvbnNcIiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBvZHAtc2Vjb25kYXJ5LWJ1dHRvblwiPlxuICAgICAgICA8c3Bhbj57eyAoY29sdW1uTmFtZS5oZWFkZXIgfHwgY29sdW1uTmFtZS5wcm9wKSB8IHRpdGxlY2FzZX19PC9zcGFuPlxuICAgICAgICA8bWF0LW1lbnUgI2FjdGlvbnM9XCJtYXRNZW51XCIgZm9jdXNGaXJzdEl0ZW09XCJmYWxzZVwiIGNsYXNzPVwiZGF0ZS1yYW5nZS1wYW5lbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIiBbZm9ybUdyb3VwXT1cImRhdGVSYW5nZUZvcm1Hcm91cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcG9sbG8tdGV4dC1maWVsZCBjdXN0b20tZGF0ZS1waWNrZXItZmllbGRcIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3JlYWRvbmx5XT1cInRydWVcIiAoY2xpY2spPVwicGlja2VyMS5vcGVuKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiBbbWF4XT1cImRhdGVSYW5nZUZvcm1Hcm91cC5jb250cm9sc1snZW5kRGF0ZSddLnZhbHVlXCIgbWF0SW5wdXQgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldERhdGVWYWx1ZSgnc3RhcnREYXRlJylcIiBjbGFzcz1cImN1c3RvbS1kYXRlLWZpZWxkXCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Zyb20gRGF0ZSdcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGFydERhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXIxXCIgY2xhc3M9XCJkYXRlcGlja2VyLXRvZ2dsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcjE+PC9tYXQtZGF0ZXBpY2tlcj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcG9sbG8tdGV4dC1maWVsZCBjdXN0b20tZGF0ZS1waWNrZXItZmllbGRcIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNsaWNrKT1cInBpY2tlcjIub3BlbigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgW3JlYWRvbmx5XT1cInRydWVcIiBtYXRJbnB1dCByZXF1aXJlZCAobmdNb2RlbENoYW5nZSk9XCJzZXREYXRlVmFsdWUoJ2VuZERhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1kYXRlLWZpZWxkXCIgW21pbl09XCJkYXRlUmFuZ2VGb3JtR3JvdXAuY29udHJvbHNbJ3N0YXJ0RGF0ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlcjJcIiBbcGxhY2Vob2xkZXJdPVwiJ1RvIERhdGUnXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlcjJcIiBjbGFzcz1cImRhdGVwaWNrZXItdG9nZ2xlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyMj48L21hdC1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gdGl0bGU9XCJDbGVhciBhbGxcIiBbZGlzYWJsZWRdPVwiIWlzQ2xlYXJFbmFibGVkXCIgY2xhc3M9XCJkYXRlLWNsZWFyXCIgKGNsaWNrKT1cImNsZWFyRGF0ZUZpbHRlcigpXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJmYXMgZmEtYnJvb21cIj48L2VtPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlck9wdGlvbi5kYXRlUmFuZ2VJdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1ncm91cCBuYW1lPVwiZm9udFN0eWxlXCIgYXJpYS1sYWJlbD1cIkZvbnQgU3R5bGVcIiBbdmFsdWVdPVwiZGF0ZVJhbmdlVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImRhdGVSYW5nZUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyT3B0aW9uLmRhdGVSYW5nZUl0ZW1zLml0ZW1zXCIgdmFsdWU9XCJ7eyBpdGVtIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fSB7eyBmaWx0ZXJPcHRpb24uZGF0ZVJhbmdlSXRlbXMudW5pdCB9fSAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19