nuxeo-development-framework 5.2.2 → 5.2.4

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 (373) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +7114 -714
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +48 -34
  4. package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +5 -5
  5. package/esm2015/lib/components/ndf-datepicker/adapters/hijri-adapter.js +203 -0
  6. package/esm2015/lib/components/ndf-datepicker/adapters/index.js +3 -0
  7. package/esm2015/lib/components/ndf-datepicker/adapters/moment-adapter.js +186 -0
  8. package/esm2015/lib/components/ndf-datepicker/base/base-value-accessor.js +92 -0
  9. package/esm2015/lib/components/ndf-datepicker/base/index.js +2 -0
  10. package/esm2015/lib/components/ndf-datepicker/components/base-datepicker.js +37 -0
  11. package/esm2015/lib/components/ndf-datepicker/components/index.js +4 -0
  12. package/esm2015/lib/components/ndf-datepicker/components/input-date.component.js +110 -0
  13. package/esm2015/lib/components/ndf-datepicker/components/input-range-date.component.js +124 -0
  14. package/esm2015/lib/components/ndf-datepicker/constants/date-locale-keys.js +7 -0
  15. package/esm2015/lib/components/ndf-datepicker/constants/date-picker.js +2 -0
  16. package/esm2015/lib/components/ndf-datepicker/constants/date-type.js +5 -0
  17. package/esm2015/lib/components/ndf-datepicker/constants/formats.js +24 -0
  18. package/esm2015/lib/components/ndf-datepicker/constants/hijri-dates-names.js +117 -0
  19. package/esm2015/lib/components/ndf-datepicker/constants/index.js +6 -0
  20. package/esm2015/lib/components/ndf-datepicker/containers/datepicker-container.js +37 -0
  21. package/esm2015/lib/components/ndf-datepicker/containers/index.js +3 -0
  22. package/esm2015/lib/components/ndf-datepicker/containers/ndf-gregorian-datepicker.component.js +105 -0
  23. package/esm2015/lib/components/ndf-datepicker/containers/ndf-hijri-datepicker.component.js +112 -0
  24. package/esm2015/lib/components/ndf-datepicker/index.js +10 -0
  25. package/esm2015/lib/components/ndf-datepicker/models/data-types.js +2 -0
  26. package/esm2015/lib/components/ndf-datepicker/models/index.js +3 -0
  27. package/esm2015/lib/components/ndf-datepicker/models/value-object.js +2 -0
  28. package/esm2015/lib/components/ndf-datepicker/ndf-datepicker.component.js +198 -0
  29. package/esm2015/lib/components/ndf-datepicker/ndf-datepicker.module.js +66 -0
  30. package/esm2015/lib/components/ndf-datepicker/services/calendar.service.js +130 -0
  31. package/esm2015/lib/components/ndf-datepicker/services/index.js +3 -0
  32. package/esm2015/lib/components/ndf-datepicker/services/localize-state.service.js +41 -0
  33. package/esm2015/lib/components/no-data-found/index.js +3 -0
  34. package/esm2015/lib/components/no-data-found/no-data-found.component.js +33 -0
  35. package/esm2015/lib/components/no-data-found/no-data.module.js +19 -0
  36. package/esm2015/lib/components/notifications/models/common.js +1 -1
  37. package/esm2015/lib/components/{dynamic-table → tables/dynamic-table}/directives/empty-state.directive.js +1 -1
  38. package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +353 -0
  39. package/esm2015/lib/components/tables/dynamic-table/dynamic-table.module.js +51 -0
  40. package/esm2015/lib/components/tables/dynamic-table/index.js +2 -0
  41. package/esm2015/lib/components/tables/dynamic-table/public-api.js +5 -0
  42. package/esm2015/lib/components/tables/dynamic-table/services/dynamic-table.service.js +16 -0
  43. package/esm2015/lib/components/{dynamic-table → tables}/index.js +1 -1
  44. package/esm2015/lib/components/tables/ndf-table/components/index.js +6 -0
  45. package/esm2015/lib/components/tables/ndf-table/components/mode-toggler/mode-toggler.component.js +45 -0
  46. package/esm2015/lib/components/tables/ndf-table/components/sorting-list/sorting-list.component.js +42 -0
  47. package/esm2015/lib/components/tables/ndf-table/components/table-columns-toggler/table-columns-toggler.component.js +123 -0
  48. package/esm2015/lib/components/tables/ndf-table/components/table-export/table-export.component.js +41 -0
  49. package/esm2015/lib/components/tables/ndf-table/components/text-search/text-search.component.js +74 -0
  50. package/esm2015/lib/components/tables/ndf-table/constants/index.js +2 -0
  51. package/esm2015/lib/components/tables/ndf-table/constants/sizes.js +19 -0
  52. package/esm2015/lib/components/tables/ndf-table/containers/index.js +2 -0
  53. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +404 -0
  54. package/esm2015/lib/components/tables/ndf-table/directives/actions.directive.js +28 -0
  55. package/esm2015/lib/components/tables/ndf-table/directives/filter-custom.directive.js +28 -0
  56. package/esm2015/lib/components/tables/ndf-table/directives/fluid-height.directive.js +112 -0
  57. package/esm2015/lib/components/tables/ndf-table/directives/index.js +5 -0
  58. package/esm2015/lib/components/tables/ndf-table/directives/search.directive.js +28 -0
  59. package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-aggregation-field.component.js +91 -0
  60. package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-checkbox-radio.component.js +66 -0
  61. package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-custom-field.component.js +46 -0
  62. package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-predicate-field.component.js +43 -0
  63. package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-value-accessor.component.js +34 -0
  64. package/esm2015/lib/components/tables/ndf-table/filters-panel/base/index.js +6 -0
  65. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/field-header.component.js +36 -0
  66. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +97 -0
  67. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +43 -0
  68. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-collapse-control/filter-collapse-control.component.js +44 -0
  69. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-date-range/filter-date-range.component.js +89 -0
  70. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-empty-message.component.js +30 -0
  71. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-option-text/filter-option-text.component.js +33 -0
  72. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-options-sort/filter-options-sort.component.js +34 -0
  73. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-search-input/filter-search-input.component.js +36 -0
  74. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/html-dialog/html-dialog.component.js +34 -0
  75. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/index.js +10 -0
  76. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-autocomplete/aggregation-autocomplete.component.js +109 -0
  77. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-checkbox/aggregation-checkbox.component.js +65 -0
  78. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-custom/aggregation-custom.component.js +66 -0
  79. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-date-list/aggregation-date-list.component.js +219 -0
  80. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-radio/aggregation-radio.component.js +68 -0
  81. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-select/aggregation-select.component.js +83 -0
  82. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-switch/aggregation-switch.component.js +71 -0
  83. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/index.js +11 -0
  84. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/predicate-date-input/predicate-date-input.component.js +146 -0
  85. package/esm2015/lib/components/tables/ndf-table/filters-panel/components/predicate-text-input/predicate-text-input.component.js +144 -0
  86. package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/common.js +4 -0
  87. package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/field.js +6 -0
  88. package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/index.js +5 -0
  89. package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/operators.js +18 -0
  90. package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/sort.js +23 -0
  91. package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/type.js +26 -0
  92. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/aggregation-field/aggregation-field.component.js +78 -0
  93. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/base-field.js +62 -0
  94. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/custom-field/custom-field.component.js +73 -0
  95. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/base-filters-panel.js +55 -0
  96. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/filters-panel.component.js +122 -0
  97. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/index.js +5 -0
  98. package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/predicate-field/predicate-field.component.js +71 -0
  99. package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user-switch.component.js +55 -0
  100. package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user.service.js +17 -0
  101. package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/user-types.js +2 -0
  102. package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/index.js +2 -0
  103. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/autocomplete-template.directive.js +28 -0
  104. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/checkbox-template.directive.js +28 -0
  105. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/custom-template.directive.js +28 -0
  106. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/date-template.directive.js +28 -0
  107. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/dropdown-label-template.directive.js +53 -0
  108. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/dropdown-template.directive.js +28 -0
  109. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/index.js +9 -0
  110. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/radio-template.directive.js +28 -0
  111. package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/switch-template.directive.js +28 -0
  112. package/esm2015/lib/components/tables/ndf-table/filters-panel/filters-panel.module.js +205 -0
  113. package/esm2015/lib/components/tables/ndf-table/filters-panel/index.js +12 -0
  114. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/aggregation-field-config.js +2 -0
  115. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/aggregation-response.model.js +2 -0
  116. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/base-field-config.js +2 -0
  117. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/common.js +2 -0
  118. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/custom-field-config.js +2 -0
  119. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-config.model.js +2 -0
  120. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/autocomplete-options.js +2 -0
  121. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/checkbox-options.js +2 -0
  122. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/common-utils.js +2 -0
  123. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-fields-options.js +2 -0
  124. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-options.js +2 -0
  125. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/date-list-options.js +2 -0
  126. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/date-options.js +2 -0
  127. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/dropdown-options.js +2 -0
  128. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/index.js +12 -0
  129. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/input-options.js +2 -0
  130. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/radio-options.js +2 -0
  131. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/switch-options.js +2 -0
  132. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/filter-option.model.js +2 -0
  133. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/form-query-request.js +2 -0
  134. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/index.js +13 -0
  135. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/predicate-field-config.js +2 -0
  136. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/types-helper.js +2 -0
  137. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/value-object.model.js +12 -0
  138. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/autocomplete-filter.pipe.js +27 -0
  139. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/filter.pipe.js +27 -0
  140. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/hash-translate.pipe.js +52 -0
  141. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/index.js +9 -0
  142. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/localized-label.pipe.js +28 -0
  143. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/roles-filters.pipe.js +31 -0
  144. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/sanitizer.pipe.js +34 -0
  145. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/sort.pipe.js +40 -0
  146. package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/tooltip.pipe.js +69 -0
  147. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/aggregation-field.service.js +105 -0
  148. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/dynamic-component-loader.service.js +59 -0
  149. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/filters-query.service.js +117 -0
  150. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/index.js +5 -0
  151. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/ndf-transform.service.js +80 -0
  152. package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/index.js +3 -0
  153. package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/nxql.js +47 -0
  154. package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/object.js +42 -0
  155. package/esm2015/lib/components/tables/ndf-table/index.js +2 -0
  156. package/esm2015/lib/components/tables/ndf-table/models/index.js +8 -0
  157. package/esm2015/lib/components/tables/ndf-table/models/payload-types.js +2 -0
  158. package/esm2015/lib/components/tables/ndf-table/models/search.config.js +2 -0
  159. package/esm2015/lib/components/tables/ndf-table/models/table-column.js +2 -0
  160. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +2 -0
  161. package/esm2015/lib/components/tables/ndf-table/models/table-mode.js +2 -0
  162. package/esm2015/lib/components/tables/ndf-table/models/table-options.js +2 -0
  163. package/esm2015/lib/components/tables/ndf-table/models/types.js +2 -0
  164. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +104 -0
  165. package/esm2015/lib/components/tables/ndf-table/public-api.js +8 -0
  166. package/esm2015/lib/components/tables/ndf-table/services/filters-mapper.service.js +60 -0
  167. package/esm2015/lib/components/tables/ndf-table/services/index.js +3 -0
  168. package/esm2015/lib/components/tables/ndf-table/services/ndf-table.service.js +27 -0
  169. package/esm2015/lib/components/tables/ndf-table/utils/index.js +2 -0
  170. package/esm2015/lib/components/tables/ndf-table/utils/nxql-query.js +52 -0
  171. package/esm2015/lib/components/tables/public-api.js +4 -0
  172. package/esm2015/lib/components/tables/table/dynamic-column/dynamic-column.component.js +68 -0
  173. package/esm2015/lib/components/tables/table/dynamic-component.js +59 -0
  174. package/esm2015/lib/components/tables/table/index.js +2 -0
  175. package/esm2015/lib/components/{table → tables/table}/page-sizes-list/page-sizes-list.component.js +1 -1
  176. package/esm2015/lib/components/tables/table/public-api.js +6 -0
  177. package/esm2015/lib/components/tables/table/table/table.component.js +302 -0
  178. package/esm2015/lib/components/tables/table/table.module.js +69 -0
  179. package/esm2015/lib/core/services/index.js +3 -0
  180. package/esm2015/lib/shared/models/index.js +2 -1
  181. package/esm2015/lib/shared/models/types-helper.js +2 -0
  182. package/esm2015/public-api.js +4 -7
  183. package/fesm2015/nuxeo-development-framework.js +6335 -554
  184. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  185. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +1 -1
  186. package/lib/components/dynamic-search/dynamic-search.module.d.ts +1 -1
  187. package/lib/components/ndf-datepicker/adapters/hijri-adapter.d.ts +35 -0
  188. package/lib/components/ndf-datepicker/adapters/index.d.ts +2 -0
  189. package/lib/components/ndf-datepicker/adapters/moment-adapter.d.ts +50 -0
  190. package/lib/components/ndf-datepicker/base/base-value-accessor.d.ts +38 -0
  191. package/lib/components/ndf-datepicker/base/index.d.ts +1 -0
  192. package/lib/components/ndf-datepicker/components/base-datepicker.d.ts +13 -0
  193. package/lib/components/ndf-datepicker/components/index.d.ts +3 -0
  194. package/lib/components/ndf-datepicker/components/input-date.component.d.ts +19 -0
  195. package/lib/components/ndf-datepicker/components/input-range-date.component.d.ts +19 -0
  196. package/lib/components/ndf-datepicker/constants/date-locale-keys.d.ts +6 -0
  197. package/lib/components/ndf-datepicker/constants/date-picker.d.ts +1 -0
  198. package/lib/components/ndf-datepicker/constants/date-type.d.ts +4 -0
  199. package/lib/components/ndf-datepicker/constants/formats.d.ts +5 -0
  200. package/lib/components/ndf-datepicker/constants/hijri-dates-names.d.ts +12 -0
  201. package/lib/components/ndf-datepicker/constants/index.d.ts +5 -0
  202. package/lib/components/ndf-datepicker/containers/datepicker-container.d.ts +15 -0
  203. package/lib/components/ndf-datepicker/containers/index.d.ts +2 -0
  204. package/lib/components/ndf-datepicker/containers/ndf-gregorian-datepicker.component.d.ts +10 -0
  205. package/lib/components/ndf-datepicker/containers/ndf-hijri-datepicker.component.d.ts +10 -0
  206. package/lib/components/ndf-datepicker/index.d.ts +9 -0
  207. package/lib/components/ndf-datepicker/models/data-types.d.ts +11 -0
  208. package/lib/components/ndf-datepicker/models/index.d.ts +2 -0
  209. package/lib/components/ndf-datepicker/models/value-object.d.ts +8 -0
  210. package/lib/components/ndf-datepicker/ndf-datepicker.component.d.ts +42 -0
  211. package/lib/components/ndf-datepicker/ndf-datepicker.module.d.ts +20 -0
  212. package/lib/components/ndf-datepicker/services/calendar.service.d.ts +33 -0
  213. package/lib/components/ndf-datepicker/services/index.d.ts +2 -0
  214. package/lib/components/ndf-datepicker/services/localize-state.service.d.ts +34 -0
  215. package/lib/components/no-data-found/index.d.ts +2 -0
  216. package/lib/components/no-data-found/no-data-found.component.d.ts +8 -0
  217. package/lib/components/no-data-found/no-data.module.d.ts +9 -0
  218. package/lib/components/notifications/models/common.d.ts +0 -1
  219. package/lib/components/{dynamic-table → tables/dynamic-table}/dynamic-table/dynamic-table.component.d.ts +7 -3
  220. package/lib/components/{dynamic-table → tables/dynamic-table}/dynamic-table.module.d.ts +3 -3
  221. package/lib/components/tables/index.d.ts +1 -0
  222. package/lib/components/tables/ndf-table/components/index.d.ts +5 -0
  223. package/lib/components/tables/ndf-table/components/mode-toggler/mode-toggler.component.d.ts +13 -0
  224. package/lib/components/tables/ndf-table/components/sorting-list/sorting-list.component.d.ts +12 -0
  225. package/lib/components/tables/ndf-table/components/table-columns-toggler/table-columns-toggler.component.d.ts +35 -0
  226. package/lib/components/tables/ndf-table/components/table-export/table-export.component.d.ts +13 -0
  227. package/lib/components/tables/ndf-table/components/text-search/text-search.component.d.ts +21 -0
  228. package/lib/components/tables/ndf-table/constants/index.d.ts +1 -0
  229. package/lib/components/tables/ndf-table/constants/sizes.d.ts +4 -0
  230. package/lib/components/tables/ndf-table/containers/index.d.ts +1 -0
  231. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +119 -0
  232. package/lib/components/tables/ndf-table/directives/actions.directive.d.ts +9 -0
  233. package/lib/components/tables/ndf-table/directives/filter-custom.directive.d.ts +9 -0
  234. package/lib/components/tables/ndf-table/directives/fluid-height.directive.d.ts +36 -0
  235. package/lib/components/tables/ndf-table/directives/index.d.ts +4 -0
  236. package/lib/components/tables/ndf-table/directives/search.directive.d.ts +9 -0
  237. package/lib/components/tables/ndf-table/filters-panel/base/base-aggregation-field.component.d.ts +35 -0
  238. package/lib/components/tables/ndf-table/filters-panel/base/base-checkbox-radio.component.d.ts +22 -0
  239. package/lib/components/tables/ndf-table/filters-panel/base/base-custom-field.component.d.ts +19 -0
  240. package/lib/components/tables/ndf-table/filters-panel/base/base-predicate-field.component.d.ts +15 -0
  241. package/lib/components/tables/ndf-table/filters-panel/base/base-value-accessor.component.d.ts +20 -0
  242. package/lib/components/tables/ndf-table/filters-panel/base/index.d.ts +5 -0
  243. package/lib/components/tables/ndf-table/filters-panel/components/__parts/field-header.component.d.ts +5 -0
  244. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.d.ts +35 -0
  245. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete.service.d.ts +13 -0
  246. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-collapse-control/filter-collapse-control.component.d.ts +12 -0
  247. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-date-range/filter-date-range.component.d.ts +16 -0
  248. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-empty-message.component.d.ts +6 -0
  249. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-option-text/filter-option-text.component.d.ts +9 -0
  250. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-options-sort/filter-options-sort.component.d.ts +11 -0
  251. package/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-search-input/filter-search-input.component.d.ts +10 -0
  252. package/lib/components/tables/ndf-table/filters-panel/components/__parts/html-dialog/html-dialog.component.d.ts +10 -0
  253. package/lib/components/tables/ndf-table/filters-panel/components/__parts/index.d.ts +9 -0
  254. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-autocomplete/aggregation-autocomplete.component.d.ts +20 -0
  255. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-checkbox/aggregation-checkbox.component.d.ts +10 -0
  256. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-custom/aggregation-custom.component.d.ts +9 -0
  257. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-date-list/aggregation-date-list.component.d.ts +41 -0
  258. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-radio/aggregation-radio.component.d.ts +11 -0
  259. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-select/aggregation-select.component.d.ts +14 -0
  260. package/lib/components/tables/ndf-table/filters-panel/components/aggregation-switch/aggregation-switch.component.d.ts +11 -0
  261. package/lib/components/tables/ndf-table/filters-panel/components/index.d.ts +10 -0
  262. package/lib/components/tables/ndf-table/filters-panel/components/predicate-date-input/predicate-date-input.component.d.ts +25 -0
  263. package/lib/components/tables/ndf-table/filters-panel/components/predicate-text-input/predicate-text-input.component.d.ts +40 -0
  264. package/lib/components/tables/ndf-table/filters-panel/constants/common.d.ts +3 -0
  265. package/lib/components/tables/ndf-table/filters-panel/constants/field.d.ts +5 -0
  266. package/lib/components/tables/ndf-table/filters-panel/constants/index.d.ts +4 -0
  267. package/lib/components/tables/ndf-table/filters-panel/constants/operators.d.ts +17 -0
  268. package/lib/components/tables/ndf-table/filters-panel/constants/sort.d.ts +2 -0
  269. package/lib/components/tables/ndf-table/filters-panel/constants/type.d.ts +25 -0
  270. package/lib/components/tables/ndf-table/filters-panel/containers/aggregation-field/aggregation-field.component.d.ts +13 -0
  271. package/lib/components/tables/ndf-table/filters-panel/containers/base-field.d.ts +21 -0
  272. package/lib/components/tables/ndf-table/filters-panel/containers/custom-field/custom-field.component.d.ts +13 -0
  273. package/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/base-filters-panel.d.ts +19 -0
  274. package/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/filters-panel.component.d.ts +48 -0
  275. package/lib/components/tables/ndf-table/filters-panel/containers/index.d.ts +4 -0
  276. package/lib/components/tables/ndf-table/filters-panel/containers/predicate-field/predicate-field.component.d.ts +12 -0
  277. package/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user-switch.component.d.ts +14 -0
  278. package/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user.service.d.ts +8 -0
  279. package/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/user-types.d.ts +29 -0
  280. package/lib/components/tables/ndf-table/filters-panel/custom-components/index.d.ts +1 -0
  281. package/lib/components/tables/ndf-table/filters-panel/directives/autocomplete-template.directive.d.ts +9 -0
  282. package/lib/components/tables/ndf-table/filters-panel/directives/checkbox-template.directive.d.ts +9 -0
  283. package/lib/components/tables/ndf-table/filters-panel/directives/custom-template.directive.d.ts +9 -0
  284. package/lib/components/tables/ndf-table/filters-panel/directives/date-template.directive.d.ts +9 -0
  285. package/lib/components/tables/ndf-table/filters-panel/directives/dropdown-label-template.directive.d.ts +16 -0
  286. package/lib/components/tables/ndf-table/filters-panel/directives/dropdown-template.directive.d.ts +9 -0
  287. package/lib/components/tables/ndf-table/filters-panel/directives/index.d.ts +8 -0
  288. package/lib/components/tables/ndf-table/filters-panel/directives/radio-template.directive.d.ts +9 -0
  289. package/lib/components/tables/ndf-table/filters-panel/directives/switch-template.directive.d.ts +9 -0
  290. package/lib/components/tables/ndf-table/filters-panel/filters-panel.module.d.ts +65 -0
  291. package/lib/components/tables/ndf-table/filters-panel/index.d.ts +11 -0
  292. package/lib/components/tables/ndf-table/filters-panel/models/aggregation-field-config.d.ts +42 -0
  293. package/lib/components/tables/ndf-table/filters-panel/models/aggregation-response.model.d.ts +20 -0
  294. package/lib/components/tables/ndf-table/filters-panel/models/base-field-config.d.ts +13 -0
  295. package/lib/components/tables/ndf-table/filters-panel/models/common.d.ts +5 -0
  296. package/lib/components/tables/ndf-table/filters-panel/models/custom-field-config.d.ts +7 -0
  297. package/lib/components/tables/ndf-table/filters-panel/models/field-config.model.d.ts +14 -0
  298. package/lib/components/tables/ndf-table/filters-panel/models/field-options/autocomplete-options.d.ts +6 -0
  299. package/lib/components/tables/ndf-table/filters-panel/models/field-options/checkbox-options.d.ts +6 -0
  300. package/lib/components/tables/ndf-table/filters-panel/models/field-options/common-utils.d.ts +35 -0
  301. package/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-fields-options.d.ts +9 -0
  302. package/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-options.d.ts +5 -0
  303. package/lib/components/tables/ndf-table/filters-panel/models/field-options/date-list-options.d.ts +10 -0
  304. package/lib/components/tables/ndf-table/filters-panel/models/field-options/date-options.d.ts +22 -0
  305. package/lib/components/tables/ndf-table/filters-panel/models/field-options/dropdown-options.d.ts +6 -0
  306. package/lib/components/tables/ndf-table/filters-panel/models/field-options/index.d.ts +11 -0
  307. package/lib/components/tables/ndf-table/filters-panel/models/field-options/input-options.d.ts +40 -0
  308. package/lib/components/tables/ndf-table/filters-panel/models/field-options/radio-options.d.ts +6 -0
  309. package/lib/components/tables/ndf-table/filters-panel/models/field-options/switch-options.d.ts +6 -0
  310. package/lib/components/tables/ndf-table/filters-panel/models/filter-option.model.d.ts +13 -0
  311. package/lib/components/tables/ndf-table/filters-panel/models/form-query-request.d.ts +5 -0
  312. package/lib/components/tables/ndf-table/filters-panel/models/index.d.ts +12 -0
  313. package/lib/components/tables/ndf-table/filters-panel/models/predicate-field-config.d.ts +7 -0
  314. package/lib/components/tables/ndf-table/filters-panel/models/types-helper.d.ts +47 -0
  315. package/lib/components/tables/ndf-table/filters-panel/models/value-object.model.d.ts +18 -0
  316. package/lib/components/tables/ndf-table/filters-panel/pipes/autocomplete-filter.pipe.d.ts +11 -0
  317. package/lib/components/tables/ndf-table/filters-panel/pipes/filter.pipe.d.ts +11 -0
  318. package/lib/components/tables/ndf-table/filters-panel/pipes/hash-translate.pipe.d.ts +18 -0
  319. package/lib/components/tables/ndf-table/filters-panel/pipes/index.d.ts +8 -0
  320. package/lib/components/tables/ndf-table/filters-panel/pipes/localized-label.pipe.d.ts +14 -0
  321. package/lib/components/tables/ndf-table/filters-panel/pipes/roles-filters.pipe.d.ts +12 -0
  322. package/lib/components/tables/ndf-table/filters-panel/pipes/sanitizer.pipe.d.ts +10 -0
  323. package/lib/components/tables/ndf-table/filters-panel/pipes/sort.pipe.d.ts +11 -0
  324. package/lib/components/tables/ndf-table/filters-panel/pipes/tooltip.pipe.d.ts +21 -0
  325. package/lib/components/tables/ndf-table/filters-panel/services/aggregation-field.service.d.ts +16 -0
  326. package/lib/components/tables/ndf-table/filters-panel/services/dynamic-component-loader.service.d.ts +18 -0
  327. package/lib/components/tables/ndf-table/filters-panel/services/filters-query.service.d.ts +58 -0
  328. package/lib/components/tables/ndf-table/filters-panel/services/index.d.ts +4 -0
  329. package/lib/components/tables/ndf-table/filters-panel/services/ndf-transform.service.d.ts +55 -0
  330. package/lib/components/tables/ndf-table/filters-panel/utility/index.d.ts +2 -0
  331. package/lib/components/tables/ndf-table/filters-panel/utility/nxql.d.ts +19 -0
  332. package/lib/components/tables/ndf-table/filters-panel/utility/object.d.ts +7 -0
  333. package/lib/components/tables/ndf-table/index.d.ts +1 -0
  334. package/lib/components/tables/ndf-table/models/index.d.ts +7 -0
  335. package/lib/components/tables/ndf-table/models/payload-types.d.ts +28 -0
  336. package/lib/components/tables/ndf-table/models/search.config.d.ts +13 -0
  337. package/lib/components/tables/ndf-table/models/table-column.d.ts +34 -0
  338. package/lib/components/tables/ndf-table/models/table-config.d.ts +45 -0
  339. package/lib/components/tables/ndf-table/models/table-mode.d.ts +25 -0
  340. package/lib/components/tables/ndf-table/models/table-options.d.ts +54 -0
  341. package/lib/components/tables/ndf-table/models/types.d.ts +38 -0
  342. package/lib/components/tables/ndf-table/ndf-table.module.d.ts +32 -0
  343. package/lib/components/tables/ndf-table/public-api.d.ts +7 -0
  344. package/lib/components/tables/ndf-table/services/filters-mapper.service.d.ts +17 -0
  345. package/lib/components/tables/ndf-table/services/index.d.ts +2 -0
  346. package/lib/components/tables/ndf-table/services/ndf-table.service.d.ts +10 -0
  347. package/lib/components/tables/ndf-table/utils/index.d.ts +1 -0
  348. package/lib/components/tables/ndf-table/utils/nxql-query.d.ts +10 -0
  349. package/lib/components/tables/public-api.d.ts +3 -0
  350. package/lib/components/{table → tables/table}/dynamic-column/dynamic-column.component.d.ts +1 -1
  351. package/lib/components/{table → tables/table}/dynamic-component.d.ts +1 -1
  352. package/lib/components/tables/table/index.d.ts +1 -0
  353. package/lib/components/tables/table/public-api.d.ts +5 -0
  354. package/lib/components/{table → tables/table}/table/table.component.d.ts +6 -5
  355. package/lib/components/{table → tables/table}/table.module.d.ts +3 -3
  356. package/lib/core/services/index.d.ts +2 -0
  357. package/lib/shared/models/index.d.ts +1 -0
  358. package/lib/shared/models/types-helper.d.ts +1 -0
  359. package/package.json +3 -2
  360. package/public-api.d.ts +3 -6
  361. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +0 -349
  362. package/esm2015/lib/components/dynamic-table/dynamic-table.module.js +0 -51
  363. package/esm2015/lib/components/dynamic-table/public-api.js +0 -5
  364. package/esm2015/lib/components/dynamic-table/services/dynamic-table.service.js +0 -16
  365. package/esm2015/lib/components/table/dynamic-column/dynamic-column.component.js +0 -68
  366. package/esm2015/lib/components/table/dynamic-component.js +0 -59
  367. package/esm2015/lib/components/table/table/table.component.js +0 -300
  368. package/esm2015/lib/components/table/table.module.js +0 -69
  369. /package/lib/components/{dynamic-table → tables/dynamic-table}/directives/empty-state.directive.d.ts +0 -0
  370. /package/lib/components/{dynamic-table → tables/dynamic-table}/index.d.ts +0 -0
  371. /package/lib/components/{dynamic-table → tables/dynamic-table}/public-api.d.ts +0 -0
  372. /package/lib/components/{dynamic-table → tables/dynamic-table}/services/dynamic-table.service.d.ts +0 -0
  373. /package/lib/components/{table → tables/table}/page-sizes-list/page-sizes-list.component.d.ts +0 -0
@@ -1,300 +0,0 @@
1
- var _TableComponent_resizeObserver;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
4
- import { BehaviorSubject } from 'rxjs';
5
- import { DatatableComponent } from '@swimlane/ngx-datatable';
6
- import { map } from 'rxjs/operators';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../../core/services/nuxeo/nuxeo.service";
9
- import * as i2 from "../../../configuration/app-config.service";
10
- import * as i3 from "../../../core/services/translation/translation.service";
11
- import * as i4 from "@swimlane/ngx-datatable";
12
- import * as i5 from "@angular/material/checkbox";
13
- import * as i6 from "../../dynamic-view/dropdown-viewer/dropdown-viewer.component";
14
- import * as i7 from "../../dynamic-view/department-viewer/department-viewer.component";
15
- import * as i8 from "@angular/material/menu";
16
- import * as i9 from "../../dynamic-view/date-viewer/date-viewer.component";
17
- import * as i10 from "../dynamic-column/dynamic-column.component";
18
- import * as i11 from "../dynamic-component";
19
- import * as i12 from "@angular/common";
20
- import * as i13 from "../../../directive/permissions/permissions.directive";
21
- import * as i14 from "@angular/material/tooltip";
22
- import * as i15 from "@ngx-translate/core";
23
- import * as i16 from "../../../pipes/localized-date.pipe";
24
- const TABLE_MODE = {
25
- list: 'list',
26
- card: 'card',
27
- dynamicCard: 'dynamicCard',
28
- custom: 'custom'
29
- };
30
- /**
31
- * this component is a multi-purpose dynamically generated dumb data table that can be configured to show any list of data,
32
- * for more information on configuring the table
33
- * and the json structure for the inputs please check [Configuration File]{@link ../additional-documentation/config-file.html}
34
- * ![Screenshot-1](../screenshots/dynamicTable.png)
35
- *
36
- * ### related Links:
37
- * - [Pagination Component]{@link PaginationComponent}
38
- * - [Dynamic Table]{@link DynamicTableComponent}
39
- * - [Configuration File]{@link ../additional-documentation/config-file.html}
40
- *
41
- * @title
42
- * Data Table
43
- *
44
- * @example
45
- *
46
- * <cts-table
47
- * [rows]="rows"
48
- * [columns]="columns"
49
- * [responsiveColumns]="responsiveColumns"
50
- * [rowCursor]="rowCursor"
51
- * [fullWidth]="fullWidth"
52
- * [entityType]="entityType"
53
- * [prefix]="prefix"
54
- * [totalRecords]="totalRecords"
55
- * [tableMode]="tableMode"
56
- * [tableActions]="tableActions"
57
- * (onRowSelected)="rowDetails($event)"
58
- * (actionOnRow)="performAction($event)"
59
- * (onSorting)="onSort($event)"
60
- * ></cts-table>
61
- *
62
- */
63
- export class TableComponent {
64
- constructor(nuxeoService, appConfig, translation) {
65
- var _a;
66
- this.nuxeoService = nuxeoService;
67
- this.appConfig = appConfig;
68
- this.translation = translation;
69
- /** event to emit when selecting single row */
70
- this.onRowSelected = new EventEmitter();
71
- /** event to emit when selecting single row to catch index*/
72
- this.onRowIndexSelected = new EventEmitter();
73
- /** event to emit when selecting single row Icon */
74
- this.onIconSelected = new EventEmitter();
75
- /** event to emit when perform action on row (delte, edit, ... ) */
76
- this.actionOnRow = new EventEmitter();
77
- /** event t emit when sorting table */
78
- this.onSorting = new EventEmitter();
79
- /** event t emit when selecting multiple row */
80
- this.onMultiRowSelected = new EventEmitter();
81
- /** aray of rows passed from out side the component */
82
- this._rows = [];
83
- /** to define the page in which table is being used */
84
- this.entityType = '';
85
- /** static path for translation passed from out side according to each page translation path */
86
- this.prefix = '';
87
- /** @deprecated */
88
- this.rowCursor = false;
89
- /** Max full width in PX | auto */
90
- this.fullWidth = 'auto';
91
- this.tableModes = TABLE_MODE;
92
- this.tableMode = TABLE_MODE.list;
93
- this.format = 'MMMM d, y';
94
- this.defultSort = null;
95
- this.highlightSelectedCard = false;
96
- /** allow multiselect rows with checkbox */
97
- this.multiSelectRows = false;
98
- /** to show 1st row with custom template in the table*/
99
- this.customFirstRow = false;
100
- /** flage used to disable actions if there was multi selected rows */
101
- this.showActionsAsMenu = false; // flage to show action in menu or side by side
102
- this.messages = { emptyMessage: '' };
103
- this.disabledActions = false;
104
- this.isArabic = false;
105
- this.tableWidth = 'auto';
106
- this.tableColumnsSub = new BehaviorSubject([]);
107
- this.tableColumns$ = this.tableColumnsSub.asObservable();
108
- _TableComponent_resizeObserver.set(this, void 0);
109
- this.defaultColumnSize = 200;
110
- this.sumOfColumnSizes$ = this.tableColumns$.pipe(map((columns) => columns.reduce((sum, col) => sum + (col.size || this.defaultColumnSize), 0) + (this.multiSelectRows ? 30 : 0)));
111
- this.selected = [];
112
- this.pageNumber = 1;
113
- this.responsiveView = false;
114
- this.statusIcons = {}; // object to contains all status icons if exist
115
- this.directionIcons = {}; // object to contains all direction icons if exist
116
- this.isFixedOptionColumns = false;
117
- this.format = this.appConfig.myConfiguration['dateFormate'];
118
- this.statusIcons = this.appConfig.myConfiguration['statusIcons'];
119
- this.directionIcons = this.appConfig.myConfiguration['directionIcons'];
120
- this.isFixedOptionColumns = (_a = this.appConfig.myConfiguration.tables) === null || _a === void 0 ? void 0 : _a.isFixedOptionColumns;
121
- this.langSubscription = this.translation.isArabic.subscribe((res) => {
122
- this.isArabic = res;
123
- });
124
- }
125
- set rows(rows) {
126
- this._rows = rows;
127
- this.selected = [];
128
- }
129
- get rows() {
130
- return this._rows;
131
- }
132
- get tableColumns() {
133
- return this.tableColumnsSub.getValue();
134
- }
135
- ngAfterViewInit() {
136
- var _a;
137
- if (!((_a = this.tableContainer) === null || _a === void 0 ? void 0 : _a.nativeElement))
138
- return;
139
- __classPrivateFieldSet(this, _TableComponent_resizeObserver, new ResizeObserver((entries) => {
140
- this.dataTable.recalculate();
141
- }), "f");
142
- __classPrivateFieldGet(this, _TableComponent_resizeObserver, "f").observe(this.tableContainer.nativeElement);
143
- }
144
- ngOnDestroy() {
145
- if (__classPrivateFieldGet(this, _TableComponent_resizeObserver, "f")) {
146
- __classPrivateFieldGet(this, _TableComponent_resizeObserver, "f").disconnect();
147
- }
148
- }
149
- ngOnChanges(changes) {
150
- var _a, _b;
151
- if (changes.columns && !((_a = changes === null || changes === void 0 ? void 0 : changes.columns) === null || _a === void 0 ? void 0 : _a.isFirstChange())) {
152
- this.tableColumnsSub.next([...(_b = changes.columns) === null || _b === void 0 ? void 0 : _b.currentValue]);
153
- }
154
- }
155
- ngOnInit() {
156
- this.onResize(window.innerWidth);
157
- }
158
- // function to be executed when clicking on single row
159
- rowDetails(event) {
160
- if (event.type !== 'mouseenter') {
161
- if (event.type === 'click' && event.column.prop !== '') {
162
- this.currentRow = event.row;
163
- this.onRowSelected.emit(this.currentRow);
164
- }
165
- }
166
- }
167
- iconSelected(event, row) {
168
- event.stopPropagation();
169
- this.onIconSelected.emit(row);
170
- }
171
- //function to handle all operations on single row (delete , edit , ...)
172
- performAction(singleRow, actionType) {
173
- if (!this.disabledActions)
174
- this.actionOnRow.emit({
175
- type: actionType,
176
- row: singleRow
177
- });
178
- }
179
- // handle checkbox if table has ones
180
- onSelect({ selected }) {
181
- if (this.multiSelectRows) {
182
- this.selected.splice(0, this.selected.length);
183
- this.selected.push(...selected);
184
- this.onMultiRowSelected.emit(selected);
185
- }
186
- this.disabledActions = this.multiSelectRows && selected.length > 0;
187
- }
188
- // handle sorting functionality of the table
189
- onSort(event) {
190
- let sort = {
191
- sortBy: event.column.headerClass,
192
- sortOrder: event.newValue
193
- };
194
- this.onSorting.emit(sort);
195
- }
196
- assignTableColumns(event) {
197
- this.onResize(event.target.innerWidth);
198
- }
199
- onResize(width) {
200
- if (width > 1400) {
201
- this.tableWidth = 'auto';
202
- }
203
- else {
204
- this.tableWidth = this.fullWidth;
205
- }
206
- if (width < 768) {
207
- this.tableColumnsSub.next(this.responsiveColumns);
208
- this.responsiveView = true;
209
- }
210
- else {
211
- this.responsiveView = false;
212
- this.tableColumnsSub.next(this.columns);
213
- }
214
- }
215
- cardSelected(card) {
216
- if (this.highlightSelectedCard) {
217
- this.rows.map((row) => {
218
- row['isSelected'] = false;
219
- });
220
- card['isSelected'] = true;
221
- }
222
- this.onRowSelected.emit(card);
223
- }
224
- cardFocused(index) {
225
- this.onRowIndexSelected.emit(index);
226
- }
227
- }
228
- _TableComponent_resizeObserver = new WeakMap();
229
- TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableComponent, deps: [{ token: i1.NuxeoService }, { token: i2.AppConfigService }, { token: i3.TranslationService }], target: i0.ɵɵFactoryTarget.Component });
230
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TableComponent, selector: "cts-table", inputs: { rows: "rows", columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", pageCount: "pageCount", totalRecords: "totalRecords", rowCursor: "rowCursor", fullWidth: "fullWidth", vocItemTranslationPrefix: "vocItemTranslationPrefix", tableMode: "tableMode", componentName: "componentName", tableActions: "tableActions", format: "format", defultSort: "defultSort", highlightSelectedCard: "highlightSelectedCard", multiSelectRows: "multiSelectRows", customFirstRow: "customFirstRow", showActionsAsMenu: "showActionsAsMenu", messages: "messages", defaultColumnSize: "defaultColumnSize" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", onIconSelected: "onIconSelected", actionOnRow: "actionOnRow", onSorting: "onSorting", onMultiRowSelected: "onMultiRowSelected" }, viewQueries: [{ propertyName: "dataTable", first: true, predicate: DatatableComponent, descendants: true }, { propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n\t#tableContainer\r\n\tclass=\"iner-table-container\"\r\n\t[style]=\"'width:' + tableWidth\"\r\n\t*ngIf=\"tableMode === tableModes.list && !responsiveView\"\r\n>\r\n\t<ngx-datatable\r\n\t\t[ngClass]=\"{ overflowVisible: customFirstRow }\"\r\n\t\tclass=\"large-table\"\r\n\t\t[rows]=\"rows\"\r\n\t\t[summaryRow]=\"customFirstRow\"\r\n\t\t[columnMode]=\"'standard'\"\r\n\t\t[scrollbarH]=\"true\"\r\n\t\t[style.width.%]=\"100\"\r\n\t\t[externalSorting]=\"true\"\r\n\t\t(activate)=\"rowDetails($event)\"\r\n\t\t(select)=\"onSelect($event)\"\r\n\t\t(sort)=\"onSort($event)\"\r\n\t\t(window:resize)=\"assignTableColumns($event)\"\r\n\t\t[rowHeight]=\"'3rem'\"\r\n\t\t[selected]=\"selected\"\r\n\t\t[selectionType]=\"multiSelectRows ? 'checkbox' : 'single'\"\r\n\t\t[sorts]=\"[{ prop: defultSort?.name, dir: defultSort?.dir }]\"\r\n\t\t[messages]=\"messages\"\r\n\t>\r\n\t\t<ngx-datatable-column\r\n\t\t\t*ngIf=\"multiSelectRows\"\r\n\t\t\t[width]=\"30\"\r\n\t\t\t[sortable]=\"false\"\r\n\t\t\t[prop]=\"''\"\r\n\t\t\t[canAutoResize]=\"false\"\r\n\t\t\t[draggable]=\"false\"\r\n\t\t\t[resizeable]=\"false\"\r\n\t\t>\r\n\t\t\t<ng-template\r\n\t\t\t\tngx-datatable-header-template\r\n\t\t\t\tlet-value=\"value\"\r\n\t\t\t\tlet-allRowsSelected=\"allRowsSelected\"\r\n\t\t\t\tlet-selectFn=\"selectFn\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox color=\"primary\" [checked]=\"allRowsSelected\" (change)=\"selectFn(!allRowsSelected)\"> </mat-checkbox>\r\n\t\t\t</ng-template>\r\n\t\t\t<ng-template\r\n\t\t\t\tngx-datatable-cell-template\r\n\t\t\t\tlet-value=\"value\"\r\n\t\t\t\tlet-isSelected=\"isSelected\"\r\n\t\t\t\tlet-onCheckboxChangeFn=\"onCheckboxChangeFn\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox color=\"primary\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\"> </mat-checkbox>\r\n\t\t\t</ng-template>\r\n\t\t</ngx-datatable-column>\r\n\t\t<!-- | translate -->\r\n\r\n\t\t<ng-container *ngIf=\"tableColumns$ | async as columns\">\r\n\t\t\t<ngx-datatable-column *ngIf=\"!columns.length\"></ngx-datatable-column>\r\n\r\n\t\t\t<!-- [frozenRight]=\"column.type === 'actions'\" -->\r\n\t\t\t<ng-container *ngFor=\"let column of columns; let i = index\">\r\n\t\t\t\t<ng-container *permission=\"{ name: column.permission }\">\r\n\t\t\t\t\t<ngx-datatable-column\r\n\t\t\t\t\t\t*ngIf=\"column.display\"\r\n\t\t\t\t\t\t[sortable]=\"column.sortable\"\r\n\t\t\t\t\t\t[name]=\"prefix + column.name | translate\"\r\n\t\t\t\t\t\t[prop]=\"column.prop\"\r\n\t\t\t\t\t\t[resizeable]=\"false\"\r\n\t\t\t\t\t\t[draggable]=\"false\"\r\n\t\t\t\t\t\t[width]=\"column?.size || defaultColumnSize\"\r\n\t\t\t\t\t\t[frozenLeft]=\"isFixedOptionColumns && column.type === 'actions'\"\r\n\t\t\t\t\t\t[headerClass]=\"column.headerClass ? column.headerClass : ''\"\r\n\t\t\t\t\t\t[summaryTemplate]=\"customFirstRow ? customRowTemplate : null\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ng-template let-row=\"row\" let-value=\"value\" let-index=\"index\" ngx-datatable-cell-template>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'text'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\" *ngIf=\"!column.withTooltip\">\r\n\t\t\t\t\t\t\t\t\t{{ value ? value : '--' }}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\" matTooltip=\"{{ value ? value : '--' }}\" *ngIf=\"column.withTooltip\">\r\n\t\t\t\t\t\t\t\t\t{{ value ? value : '--' }}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'vocabulary'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t\t\t<cts-dropdown-viewer [withOutLabel]=\"true\" [value]=\"value\" [dropdownId]=\"column.vocabularyId\">\r\n\t\t\t\t\t\t\t\t\t</cts-dropdown-viewer>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'VocCell'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t\t\t{{ (value ? column.vocabularyId + '.' + value : '--') | translate }}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'VocItem'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t\t\t{{ vocItemTranslationPrefix + value | translate }}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'department'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t\t\t<cts-department-viewer [noStyle]=\"true\" [value]=\"value\"> </cts-department-viewer>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'status'\">\r\n\t\t\t\t\t\t\t\t<div class=\"status-wrapper\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"value {{ value }}\">\r\n\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"statusIcons && statusIcons !== {}\" class=\"status-icon {{ statusIcons[value] }}\"></span>\r\n\t\t\t\t\t\t\t\t\t\t{{ 'STATS.' + value | translate }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'role'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t\t\t{{ 'role.' + (value ? value : '--') | translate }}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'actions' && rows.length !== 0\">\r\n\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t[ngClass]=\"disabledActions ? 'disabled-actions-wrapper' : 'actions-wrapper'\"\r\n\t\t\t\t\t\t\t\t\t*ngIf=\"!showActionsAsMenu\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<!-- <span class=\"bi bi-trash delete-icon\" (click)=\"performAction(row , 'delete')\"></span> -->\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\tclass=\"bi bi-pencil-square edit-icon\"\r\n\t\t\t\t\t\t\t\t\t\tmatTooltip=\"{{ 'UPDATE' | translate }}\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, 'edit')\"\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"entityType === 'voc-table'\"\r\n\t\t\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\tclass=\"bi bi-trash\"\r\n\t\t\t\t\t\t\t\t\t\tmatTooltip=\"{{ 'delete' | translate }}\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, 'delete')\"\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"entityType === 'voc-table' || entityType === 'department' || entityType === 'signers'\"\r\n\t\t\t\t\t\t\t\t\t></i>\r\n\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\tclass=\"bi bi-plus-square\"\r\n\t\t\t\t\t\t\t\t\t\tmatTooltip=\"{{ 'USER_MANGMENT.addToDepartment' | translate }}\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, 'delete')\"\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"entityType === 'users' && row.isInitial\"\r\n\t\t\t\t\t\t\t\t\t></i>\r\n\r\n\t\t\t\t\t\t\t\t\t<span *ngFor=\"let action of column.actions\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"action.type == 'button'; else showIcon\">\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tname: action.permission,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"{{ action.class }}\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, action.actionName)\"\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<mat-icon *ngIf=\"action.icon\" [class]=\"action.iconClass\" [svgIcon]=\"action.icon\"> </mat-icon>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{ action.title | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-template #showIcon>\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tname: action.permission,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"{{ action.icon }}\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tmatTooltip=\"{{ action.tooltip | translate }}\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, action.actionName)\"\r\n\t\t\t\t\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t\t\t\t<!-- <i\r\n *permission=\"{ name: 'registerCorrespondance', entity: row }\"\r\n class=\"bi bi-box-arrow-in-right\"\r\n matTooltip=\"{{ 'LISTING.REGISTER' | translate }}\"\r\n (click)=\"performAction(row, 'register')\"\r\n ></i>\r\n <i\r\n *permission=\"{ name: 'sendCorrespondance', entity: row }\"\r\n class=\"bi bi-envelope\"\r\n matTooltip=\"{{ 'LISTING.SEND' | translate }}\"\r\n (click)=\"performAction(row, 'send')\"\r\n ></i>\r\n <i\r\n *permission=\"{ name: 'closeCorrespondance', entity: row }\"\r\n class=\"bi bi-x-circle\"\r\n matTooltip=\"{{ 'LISTING.CLOSE' | translate }}\"\r\n (click)=\"performAction(row, 'close')\"\r\n ></i>\r\n <i\r\n *permission=\"{ name: 'archiveCorrespondance', entity: row }\"\r\n class=\"bi bi-folder-symlink\"\r\n matTooltip=\"{{ 'LISTING.ARCHIVE' | translate }}\"\r\n (click)=\"performAction(row, 'archive')\"\r\n ></i> -->\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t[ngClass]=\"disabledActions ? 'disabled-actions-wrapper' : 'actions-wrapper'\"\r\n\t\t\t\t\t\t\t\t\t*ngIf=\"showActionsAsMenu\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<button class=\"action-menu-trigger\" [matMenuTriggerFor]=\"menu\" [disabled]=\"disabledActions\">\r\n\t\t\t\t\t\t\t\t\t\t<i class=\"bi bi-three-dots-vertical\"></i>\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<mat-menu #menu=\"matMenu\" class=\"datatable-actions-menu\">\r\n\t\t\t\t\t\t\t\t\t\t<button mat-menu-item (click)=\"performAction(row, 'edit')\" *ngIf=\"entityType === 'voc-table'\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"bi bi-pencil-square edit-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"action-text\">{{ 'UPDATE' | translate }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\tmat-menu-item\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, 'delete')\"\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"entityType === 'voc-table' || entityType === 'department' || entityType === 'signers'\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"bi bi-trash\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"action-text\">{{ 'delete' | translate }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\tmat-menu-item\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, 'delete')\"\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"entityType === 'users' && row.isInitial\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"bi bi-plus-square\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"action-text\">{{ 'USER_MANGMENT.addToDepartment' | translate }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t<ng-conttainer *ngFor=\"let action of column.actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"performAction(row, action.actionName)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tname: action.permission,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"{{ action.icon }}\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"action-text\">{{ action.tooltip | translate }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</ng-conttainer>\r\n\t\t\t\t\t\t\t\t\t</mat-menu>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'date'\">\r\n\t\t\t\t\t\t\t\t<div class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t\t\t<cts-date-viewer [withOutLabel]=\"true\" [value]=\"value\"></cts-date-viewer>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'custom'\">\r\n\t\t\t\t\t\t\t\t<cts-dynamic-column [id]=\"column.template\" [column]=\"column\" [context]=\"row\"> </cts-dynamic-column>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"column.type === 'direction'\">\r\n\t\t\t\t\t\t\t\t<div (click)=\"iconSelected($event, row)\" class=\"status-wrapper {{ value }} {{ row.state }}\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"iner-status-wrapper\" matTooltip=\"{{ 'STATS.' + row.state | translate }}\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container *permission=\"{ name: 'isFavorite', entity: row }\">\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"fav-icon-indicator bi bi-star-fill\"></span>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"{{ directionIcons ? directionIcons['incoming'] : 'bi bi-box-arrow-down' }}\"\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"row.type === 'IncomingCorrespondence'\"\r\n\t\t\t\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"{{ directionIcons ? directionIcons['outgoing'] : 'bi bi-box-arrow-up outgoing' }}\"\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"row.type === 'OutgoingCorrespondence'\"\r\n\t\t\t\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"{{ directionIcons ? directionIcons['internal'] : 'bi bi-box-arrow-right internal' }}\"\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"row.type === 'InternalCorrespondence'\"\r\n\t\t\t\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<!-- <span class=\"value {{ value }}\">{{ \"STATS.\" + value | translate }}</span> -->\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t<ng-template #customRowTemplate let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n\t\t\t\t\t\t\t<div class=\"w-full flex items-center justify-center overflow-visible\">\r\n\t\t\t\t\t\t\t\t<cts-dynamic-column [id]=\"column.custom1stCellTemplate\" [column]=\"column\" [context]=\"row\">\r\n\t\t\t\t\t\t\t\t</cts-dynamic-column>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</ngx-datatable-column>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</ngx-datatable>\r\n</div>\r\n\r\n<div *ngIf=\"responsiveView && tableMode !== tableModes.card\" (window:resize)=\"assignTableColumns($event)\">\r\n\t<div class=\"dynamic-cards-container\">\r\n\t\t<div\r\n\t\t\tclass=\"single-card\"\r\n\t\t\t[ngClass]=\"{ 'selected-card': highlightSelectedCard && row?.isSelected }\"\r\n\t\t\t*ngFor=\"let row of rows\"\r\n\t\t>\r\n\t\t\t<div class=\"memo-title\">\r\n\t\t\t\t<span>\r\n\t\t\t\t\t{{ row.properties.referenceNumber }}\r\n\t\t\t\t</span>\r\n\t\t\t\t<span class=\"action-wrap\">\r\n\t\t\t\t\t<span class=\"action\" *ngFor=\"let action of tableActions\">\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\t\tname: action.permission,\r\n\t\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\tclass=\"{{ action.icon }}\"\r\n\t\t\t\t\t\t\tmatTooltip=\"{{ action.tooltip | translate }}\"\r\n\t\t\t\t\t\t\t(click)=\"performAction(row, action.actionName)\"\r\n\t\t\t\t\t\t></i>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"tableColumns.length > 1\">\r\n\t\t\t\t<div class=\"memo-body\" *ngFor=\"let property of tableColumns$ | async\" (click)=\"cardSelected(row)\">\r\n\t\t\t\t\t<div class=\"key\">{{ prefix + property.key | translate }}</div>\r\n\t\t\t\t\t<div class=\"value\">\r\n\t\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'text'\">\r\n\t\t\t\t\t\t\t{{ row.properties[property.value] }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'owner'\">\r\n\t\t\t\t\t\t\t{{ row.properties[property.owner]?.[property.value] }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'date'\">\r\n\t\t\t\t\t\t\t{{ row.properties[property.value] | localizedDate : format : (isArabic ? 'ar-AR' : 'en-US') }}\r\n\t\t\t\t\t\t\t<!-- <cts-date-viewer [withOutLabel]=\"true\" [value]=\"row.properties[property.value]\" ></cts-date-viewer> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"property.type === 'status'\" class=\"value {{ row[property.value] }}\">\r\n\t\t\t\t\t\t\t{{ 'STATS.' + row[property.value] | translate }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"property.type === 'department'\">\r\n\t\t\t\t\t\t\t<cts-department-viewer [noStyle]=\"true\" [value]=\"row.properties[property.value]\"> </cts-department-viewer>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"property.type === 'vocabulary'\" class=\"cell-text-wrapper\">\r\n\t\t\t\t\t\t\t<cts-dropdown-viewer\r\n\t\t\t\t\t\t\t\t[withOutLabel]=\"true\"\r\n\t\t\t\t\t\t\t\t[value]=\"row.properties[property.value]\"\r\n\t\t\t\t\t\t\t\t[dropdownId]=\"property.vocabularyId\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</cts-dropdown-viewer>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t*ngIf=\"property.type === 'direction'\"\r\n\t\t\t\t\t\t\t(click)=\"iconSelected($event, row)\"\r\n\t\t\t\t\t\t\tclass=\"status-wrapper {{ property.value }} {{ row.state }}\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"iner-status-wrapper\" matTooltip=\"{{ 'STATS.' + row.state | translate }}\">\r\n\t\t\t\t\t\t\t\t<ng-container *permission=\"{ name: 'isFavorite', entity: row }\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"fav-icon-indicator bi bi-star-fill\"></span>\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t<i class=\"bi bi-box-arrow-down\" *ngIf=\"row.type === 'IncomingCorrespondence'\"></i>\r\n\t\t\t\t\t\t\t\t<i class=\"bi bi-box-arrow-up outgoing\" *ngIf=\"row.type === 'OutgoingCorrespondence'\"></i>\r\n\t\t\t\t\t\t\t\t<i class=\"bi bi-box-arrow-right internal\" *ngIf=\"row.type === 'InternalCorrespondence'\"></i>\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"property.type === 'custom'\">\r\n\t\t\t\t\t\t\t<cts-dynamic-column [id]=\"property.template\" [column]=\"property\" [context]=\"row\"> </cts-dynamic-column>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"tableColumns.length === 1\">\r\n\t\t\t<div class=\"iner-card-container {{ entityType }}\" (click)=\"cardSelected(row)\" *ngFor=\"let row of rows\">\r\n\t\t\t\t<cts-dynamic-column [id]=\"columns[0].template\" [column]=\"columns[0]\" [context]=\"row\"> </cts-dynamic-column>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"tableMode === tableModes.card\">\r\n\t<div class=\"cards-container\">\r\n\t\t<div class=\"single-card\" *ngFor=\"let row of rows; let i = index\">\r\n\t\t\t<div class=\"memo-title\">\r\n\t\t\t\t<span>\r\n\t\t\t\t\t{{ row.properties.referenceNumber }}\r\n\t\t\t\t</span>\r\n\t\t\t\t<span class=\"action-wrap\">\r\n\t\t\t\t\t<span class=\"action\" *ngFor=\"let action of tableActions\">\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\t\tname: action.permission,\r\n\t\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\tclass=\"{{ action.icon }}\"\r\n\t\t\t\t\t\t\tmatTooltip=\"{{ action.tooltip | translate }}\"\r\n\t\t\t\t\t\t\t(click)=\"performAction(row, action.actionName)\"\r\n\t\t\t\t\t\t></i>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\tname: 'deleteMemo',\r\n\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t(click)=\"performAction(row, 'deleteMemo')\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<i class=\"bi bi-trash\" matTooltip=\"{{ 'LISTING.ONLY_DELETE' | translate }}\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\tname: 'terminateDelegation',\r\n\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t(click)=\"performAction(row, 'terminateDelegation')\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<i class=\"bi bi-trash\" matTooltip=\"{{ 'LISTING.CANCEL' | translate }}\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\tclass=\"publish-state\"\r\n\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\tname: 'memoPublished',\r\n\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ 'MEMOS.PUBLISHED' | translate }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\tclass=\"publish-state\"\r\n\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\tname: 'delegationFinished',\r\n\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ 'delegations.finished' | translate }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\tclass=\"publish-state\"\r\n\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\tname: 'delegationActive',\r\n\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ 'delegations.active' | translate }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"memo-body\" *ngFor=\"let property of tableColumns$ | async\" (click)=\"cardSelected(row); cardFocused(i)\">\r\n\t\t\t\t<div class=\"key\" *ngIf=\"property.type !== 'default'\">\r\n\t\t\t\t\t{{ prefix + property.key | translate }}\r\n\t\t\t\t</div>\r\n\t\t\t\t<ng-container *ngIf=\"property.type === 'default'\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclass=\"key\"\r\n\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\tname: 'internalIsEnabled',\r\n\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ prefix + property.key | translate }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<div class=\"value\">\r\n\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'text'\">\r\n\t\t\t\t\t\t{{ row.properties[property.value] }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'user'\">\r\n\t\t\t\t\t\t{{ row.properties[property.value].fullName }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'date'\">\r\n\t\t\t\t\t\t{{ row.properties[property.value] | localizedDate : format : (isArabic ? 'ar-AR' : 'en-US') }}\r\n\t\t\t\t\t\t<!-- <cts-date-viewer [withOutLabel]=\"true\" [value]=\"row.properties[property.value]\" ></cts-date-viewer> -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'boolean'\">\r\n\t\t\t\t\t\t{{ (row.properties[property.value] ? 'Yes' : 'No') | translate }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<ng-container *ngIf=\"property.type === 'default'\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"text\"\r\n\t\t\t\t\t\t\t*permission=\"{\r\n\t\t\t\t\t\t\t\tname: 'internalIsEnabled',\r\n\t\t\t\t\t\t\t\tentity: row,\r\n\t\t\t\t\t\t\t\tuser: nuxeoService.nuxeoClient.user\r\n\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{{ row.properties[property.value] }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<ng-container *ngIf=\"property.type === 'custom'\">\r\n\t\t\t\t\t\t<div class=\"text\" *ngFor=\"let item of row.properties[property.value]\">\r\n\t\t\t\t\t\t\t{{ item | translate }} {{ ', ' }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"tableMode === tableModes.dynamicCard\">\r\n\t<div class=\"cards-container\">\r\n\t\t<div\r\n\t\t\tclass=\"single-card\"\r\n\t\t\t[ngClass]=\"{ 'selected-card': highlightSelectedCard && row?.isSelected }\"\r\n\t\t\t*ngFor=\"let row of rows\"\r\n\t\t>\r\n\t\t\t<div *ngIf=\"tableColumns.length > 1\">\r\n\t\t\t\t<div class=\"memo-body\" *ngFor=\"let property of tableColumns$ | async\" (click)=\"cardSelected(row)\">\r\n\t\t\t\t\t<div class=\"key\">{{ prefix + property.key | translate }}</div>\r\n\t\t\t\t\t<div class=\"value\">\r\n\t\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'text'\">\r\n\t\t\t\t\t\t\t{{ row.properties[property.value] }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"text\" *ngIf=\"property.type === 'date'\">\r\n\t\t\t\t\t\t\t{{ row.properties[property.value] | localizedDate : format : (isArabic ? 'ar-AR' : 'en-US') }}\r\n\t\t\t\t\t\t\t<!-- <cts-date-viewer [withOutLabel]=\"true\" [value]=\"row.properties[property.value]\" ></cts-date-viewer> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"iner-card-container {{ entityType }}\" (click)=\"cardSelected(row)\" *ngIf=\"tableColumns.length === 1\">\r\n\t\t\t\t<cts-dynamic-column [id]=\"tableColumns[0].template\" [column]=\"tableColumns[0]\" [context]=\"row\">\r\n\t\t\t\t</cts-dynamic-column>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"tableMode === tableModes.custom\" class=\"table-custom-view\">\r\n\t<app-dynamic-component\r\n\t\tclass=\"table-custom-view__component\"\r\n\t\t*ngFor=\"let row of rows\"\r\n\t\t[componentName]=\"componentName\"\r\n\t\t[row]=\"row\"\r\n\t\t[rowAction]=\"actionOnRow\"\r\n\t\t[onClick]=\"onRowSelected\"\r\n\t\t(click)=\"cardSelected(row)\"\r\n\t\t[class.dynamic-selected-card]=\"highlightSelectedCard && row?.isSelected\"\r\n\t></app-dynamic-component>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.iner-table-container{max-width:var(--table-container-max-width, 100%)}.ngx-datatable{border:1px solid #eef1f5;border-radius:5px}.ngx-datatable .datatable-header{font-weight:bold;height:50px!important;background-color:#eef1f5;color:#9aa4ac;font-size:14px}.ngx-datatable .datatable-header .datatable-header-inner{height:100%;padding:0 20px}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center{display:flex;justify-content:space-between;align-items:center}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .sort-btn{margin:5px 5px 0;width:16px;height:16px}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .sort-btn:before{content:\"\\f127\";display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:normal!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .datatable-icon-up.sort-btn:before{content:\"\\f57b\";color:#000;font-size:16px}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .datatable-icon-down.sort-btn:before{content:\"\\f574\";color:#000;font-size:16px}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .datatable-header-cell-template-wrap{width:100%;height:100%;display:flex;align-items:center;justify-content:center;white-space:pre-wrap}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .datatable-header-cell-template-wrap .datatable-header-cell-wrapper{display:flex}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .datatable-header-cell-template-wrap .datatable-header-cell-wrapper .datatable-header-cell-label{text-align:center}.ngx-datatable .datatable-header .datatable-header-inner .datatable-row-center .datatable-header-cell .datatable-header-cell-template-wrap .checkbox-input{z-index:99}.ngx-datatable .datatable-body .empty-row{text-align:center}.ngx-datatable .datatable-body .datatable-scroll{width:100%!important}.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row{display:flex!important;min-height:50px!important;overflow:visible!important}.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-row-center{overflow:visible!important}.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-row-center .datatable-body-cell{overflow:visible!important}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row{height:50px;font-size:14px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row{min-width:100%!important;height:100%}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center{display:flex;justify-content:space-between;padding:0 20px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell{min-height:50px;display:flex;align-items:center;overflow:hidden}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .datatable-body-cell-label,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .datatable-body-cell-label{width:100%;display:flex;justify-content:center}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .datatable-body-cell-label .checkbox-input,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .datatable-body-cell-label .checkbox-input{z-index:99}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .datatable-body-cell-label .cell-text-wrapper,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .datatable-body-cell-label .cell-text-wrapper{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 5px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .iner-status-wrapper,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .iner-status-wrapper{position:relative}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .iner-status-wrapper .fav-icon-indicator,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .iner-status-wrapper .fav-icon-indicator{font-size:12px;position:absolute;top:-5px;right:-10px;color:#ebb98e}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .value,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .value{display:flex;justify-content:center;align-items:center;border-radius:5px;width:100px;height:25px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .value .status-icon,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .value .status-icon{margin-inline-end:5px;font-size:16px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .draft,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .draft{background-color:#596973;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .inProgress,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .inProgress{background-color:#3c3cf0;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .registered,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .registered{background-color:#5a1496;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .archived,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .archived{background-color:#fbb62c;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .closed,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .closed{background-color:#00dca5;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .approved,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .approved{background-color:#06a57e;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .assigned,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .assigned{background-color:#fd6670;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .sent,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .sent{background-color:#3c3cf0;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .under_revision,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .under_revision{background:#689be7;color:#e9f1fd}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .rejected,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .rejected{background-color:#fd6670;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .under_sign,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .under_sign{background-color:#dda722;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .redirectSelection,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .redirectSelection{background-color:#28b994;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .redirect,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper .redirect{background-color:#e38888;color:#fff}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.Incoming,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.Incoming{color:#00dca5;font-size:30px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.Outgoing,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.Outgoing{color:#fbb62c;font-size:30px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.Internal,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.Internal{color:#3c3cf0;font-size:30px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.internal,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .status-wrapper.internal{color:#3c3cf0;font-size:30px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper{width:100%}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .bi,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .bi{font-size:25px;cursor:pointer;color:#465573;margin:0 5px!important}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .bi:hover,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .bi:hover{color:#2e62df!important;font-size:26px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button{display:flex;color:#5171a6;font-size:16px;height:45px;align-items:center;padding:0 10px;width:100%}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button i,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button i{font-size:20px;padding:0;display:flex;align-items:center}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button .action-text,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button .action-text{padding:0 5px}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button:hover,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .actions-wrapper .datatable-actions-menu button:hover{background-color:#e6ebf2}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .disabled-actions-wrapper,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .disabled-actions-wrapper{width:100%}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell .disabled-actions-wrapper .bi,.ngx-datatable .datatable-body .datatable-scroll .datatable-summary-row .datatable-body-row .datatable-row-center .datatable-body-cell .disabled-actions-wrapper .bi{font-size:25px;cursor:not-allowed;color:#465573;margin:0 5px!important;opacity:.7}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper:nth-child(even){background-color:#f4f6f8}.ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper:hover{background-color:#eef1f5}.cards-container{display:flex;flex-wrap:wrap;justify-content:center}.cards-container .single-card{padding:15px;border:1px solid rgba(180,186,198,.2);border-radius:3px;min-width:270px;width:24%;margin:0 5px 10px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;cursor:pointer}.cards-container .single-card .memo-title{font-size:14px;font-weight:bold;color:#465573;border-bottom:1px solid lightgray;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.cards-container .single-card .memo-title .action-wrap .action{margin:0 5px;cursor:pointer}.cards-container .single-card .memo-title .action-wrap .action i{font-size:16px}.cards-container .single-card .memo-title .action-wrap .action i:hover{color:#00f}.cards-container .single-card .memo-title .action-wrap .publish-state{font-size:12px;color:#00dca5;font-weight:bold}.cards-container .single-card .memo-title .action-wrap button{border:none;color:#465573;background-color:transparent}.cards-container .single-card .memo-title .action-wrap button i{font-size:16px}.cards-container .single-card .memo-title .action-wrap button i:hover{color:#00f}.cards-container .single-card .memo-body{display:flex;padding:0 10px}.cards-container .single-card .memo-body .key{width:50%;font-size:12px;color:#9aa4ac}.cards-container .single-card .memo-body .value{width:50%;font-size:12px}.cards-container .single-card .memo-body .value .text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cards-container .single-card:hover{background-color:#f6f7f8}.cards-container .single-card:focus{background-color:#f6f7f8}.cards-container .selected-card{background-color:#f6f7f8}.rtl .ngx-datatable .datatable-body .status-wrapper .fav-icon-indicator{left:-10px;top:15px!important;right:auto!important}.dynamic-cards-container{display:flex;flex-wrap:wrap;justify-content:center}.dynamic-cards-container .single-card{padding:15px;border:1px solid rgba(180,186,198,.2);border-radius:3px;min-width:306px;width:24%;margin:0 5px 10px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;cursor:pointer}.dynamic-cards-container .single-card .memo-title{font-size:14px;font-weight:bold;color:#465573;border-bottom:1px solid lightgray;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.dynamic-cards-container .single-card .memo-title .action-wrap .action{cursor:pointer}.dynamic-cards-container .single-card .memo-title .action-wrap .action i{font-size:16px}.dynamic-cards-container .single-card .memo-title .action-wrap .action i:hover{color:#00f}.dynamic-cards-container .single-card .memo-title .action-wrap .publish-state{font-size:12px;color:#00dca5;font-weight:bold}.dynamic-cards-container .single-card .memo-title .action-wrap button{border:none;color:#465573;background-color:transparent}.dynamic-cards-container .single-card .memo-title .action-wrap button i{font-size:16px}.dynamic-cards-container .single-card .memo-title .action-wrap button i:hover{color:#00f}.dynamic-cards-container .single-card .memo-body{display:flex;padding:0 10px}.dynamic-cards-container .single-card .memo-body .key{width:58%;font-size:12px;color:#9aa4ac;margin-bottom:4px}.dynamic-cards-container .single-card .memo-body .value{width:58%;font-size:12px}.dynamic-cards-container .single-card .memo-body .value .text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dynamic-cards-container .single-card .memo-body .draft{background-color:#596973;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .inProgress{background-color:#3c3cf0;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .registered{background-color:#5a1496;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .archived{background-color:#fbb62c;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .closed{background-color:#00dca5;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .approved{background-color:#06a57e;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .assigned{background-color:#fd6670;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .sent{background-color:#3c3cf0;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .under_revision{background:#689be7;color:#e9f1fd;text-align:center}.dynamic-cards-container .single-card .memo-body .rejected{background-color:#fd6670;color:#fff;text-align:center}.dynamic-cards-container .single-card .memo-body .under_sign{background-color:#dda722;color:#fff;text-align:center}.dynamic-cards-container .single-card:hover{background-color:#f6f7f8}.dynamic-cards-container .single-card:focus{background-color:#f6f7f8}.dynamic-cards-container .selected-card{background-color:#f6f7f8}.overflowVisible{overflow:visible!important}.table-custom-view{display:var(--tcv-display, grid);grid-template-columns:var(--tcv-display-columns, repeat(var(--tcv-columns-count, auto-fit), minmax(350px, 1fr)));grid-gap:var(--tcv-gap, 1rem);gap:var(--tcv-gap, 1rem);padding-inline:var(--tcv-padding-inline, 1rem);padding-block:var(--tcv-padding-block, 1rem)}.table-style .ngx-datatable .datatable-body .datatable-scroll .datatable-row-wrapper .datatable-body-row .datatable-row-center .datatable-body-cell{flex-shrink:0}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{flex-shrink:0}.actions-wrapper i{font-size:var(--table-options-font-size, 2rem)!important}.ngx-datatable .datatable-row-left{position:absolute!important;right:0px!important}.ngx-datatable .datatable-row-left .datatable-body-cell{overflow:hidden;background:var(--table-options-body-cell-color, #fff)}.ngx-datatable .datatable-row-left .datatable-header-cell{overflow:hidden;background:var(--table-options-header-cell-color, #fff)}.rtl .ngx-datatable .datatable-row-left{left:0px!important;right:unset!important}\n"], components: [{ type: i4.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.DropdownViewerComponent, selector: "cts-dropdown-viewer", inputs: ["label", "value", "dropdownId", "vertical", "withOutLabel"] }, { type: i7.DepartmentViewerComponent, selector: "cts-department-viewer", inputs: ["label", "value", "dropdownId", "vertical", "withOutLabel", "noStyle"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.DateViewerComponent, selector: "cts-date-viewer", inputs: ["label", "value", "vertical", "format", "hijri", "withOutLabel"] }, { type: i10.DynamicColumnComponent, selector: "cts-dynamic-column", inputs: ["id", "context", "column"] }, { type: i11.DynamicCustomComponent, selector: "app-dynamic-component", inputs: ["componentName", "row", "rowAction", "onClick"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { type: i4.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { type: i4.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.PermissionsDirective, selector: "[permission]", inputs: ["permission"] }, { type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], pipes: { "async": i12.AsyncPipe, "translate": i15.TranslatePipe, "localizedDate": i16.LocalizedDatePipe }, encapsulation: i0.ViewEncapsulation.None });
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableComponent, decorators: [{
232
- type: Component,
233
- args: [{
234
- selector: 'cts-table',
235
- templateUrl: './table.component.html',
236
- styleUrls: ['./table.component.scss'],
237
- encapsulation: ViewEncapsulation.None
238
- }]
239
- }], ctorParameters: function () { return [{ type: i1.NuxeoService }, { type: i2.AppConfigService }, { type: i3.TranslationService }]; }, propDecorators: { dataTable: [{
240
- type: ViewChild,
241
- args: [DatatableComponent]
242
- }], tableContainer: [{
243
- type: ViewChild,
244
- args: ['tableContainer']
245
- }], onRowSelected: [{
246
- type: Output
247
- }], onRowIndexSelected: [{
248
- type: Output
249
- }], onIconSelected: [{
250
- type: Output
251
- }], actionOnRow: [{
252
- type: Output
253
- }], onSorting: [{
254
- type: Output
255
- }], onMultiRowSelected: [{
256
- type: Output
257
- }], rows: [{
258
- type: Input
259
- }], columns: [{
260
- type: Input
261
- }], responsiveColumns: [{
262
- type: Input
263
- }], entityType: [{
264
- type: Input
265
- }], prefix: [{
266
- type: Input
267
- }], pageCount: [{
268
- type: Input
269
- }], totalRecords: [{
270
- type: Input
271
- }], rowCursor: [{
272
- type: Input
273
- }], fullWidth: [{
274
- type: Input
275
- }], vocItemTranslationPrefix: [{
276
- type: Input
277
- }], tableMode: [{
278
- type: Input
279
- }], componentName: [{
280
- type: Input
281
- }], tableActions: [{
282
- type: Input
283
- }], format: [{
284
- type: Input
285
- }], defultSort: [{
286
- type: Input
287
- }], highlightSelectedCard: [{
288
- type: Input
289
- }], multiSelectRows: [{
290
- type: Input
291
- }], customFirstRow: [{
292
- type: Input
293
- }], showActionsAsMenu: [{
294
- type: Input
295
- }], messages: [{
296
- type: Input
297
- }], defaultColumnSize: [{
298
- type: Input
299
- }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNOLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBS2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJDLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixXQUFXLEVBQUUsYUFBYTtJQUMxQixNQUFNLEVBQUUsUUFBUTtDQUNQLENBQUM7QUFFWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFPSCxNQUFNLE9BQU8sY0FBYztJQStGMUIsWUFDUSxZQUEwQixFQUN6QixTQUEyQixFQUMzQixXQUErQjs7UUFGaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBOUZ4Qyw4Q0FBOEM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFB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Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFTRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkNoYW5nZXMsXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFZpZXdDaGlsZCxcclxuXHRWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXRhYmxlQ29tcG9uZW50IH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5jb25zdCBUQUJMRV9NT0RFID0ge1xyXG5cdGxpc3Q6ICdsaXN0JyxcclxuXHRjYXJkOiAnY2FyZCcsXHJcblx0ZHluYW1pY0NhcmQ6ICdkeW5hbWljQ2FyZCcsXHJcblx0Y3VzdG9tOiAnY3VzdG9tJ1xyXG59IGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIHRoaXMgY29tcG9uZW50IGlzIGEgbXVsdGktcHVycG9zZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgZHVtYiBkYXRhIHRhYmxlIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gc2hvdyBhbnkgbGlzdCBvZiBkYXRhLFxyXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgdGFibGVcclxuICogYW5kIHRoZSBqc29uIHN0cnVjdHVyZSBmb3IgdGhlIGlucHV0cyBwbGVhc2UgY2hlY2sgW0NvbmZpZ3VyYXRpb24gRmlsZV17QGxpbmsgLi4vYWRkaXRpb25hbC1kb2N1bWVudGF0aW9uL2NvbmZpZy1maWxlLmh0bWx9XHJcbiAqICFbU2NyZWVuc2hvdC0xXSguLi9zY3JlZW5zaG90cy9keW5hbWljVGFibGUucG5nKVxyXG4gKlxyXG4gKiAjIyMgcmVsYXRlZCBMaW5rczpcclxuICogLSBbUGFnaW5hdGlvbiBDb21wb25lbnRde0BsaW5rIFBhZ2luYXRpb25Db21wb25lbnR9XHJcbiAqIC0gW0R5bmFtaWMgVGFibGVde0BsaW5rIER5bmFtaWNUYWJsZUNvbXBvbmVudH1cclxuICogLSBbQ29uZmlndXJhdGlvbiBGaWxlXXtAbGluayAuLi9hZGRpdGlvbmFsLWRvY3VtZW50YXRpb24vY29uZmlnLWZpbGUuaHRtbH1cclxuICpcclxuICogQHRpdGxlXHJcbiAqIERhdGEgVGFibGVcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGN0cy10YWJsZVxyXG4gKiAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAqICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICogICAgIFtyZXNwb25zaXZlQ29sdW1uc109XCJyZXNwb25zaXZlQ29sdW1uc1wiXHJcbiAqICAgICBbcm93Q3Vyc29yXT1cInJvd0N1cnNvclwiXHJcbiAqICAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcbiAqICAgICBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCJcclxuICogICAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICogICAgIFt0YWJsZU1vZGVdPVwidGFibGVNb2RlXCJcclxuICogICAgIFt0YWJsZUFjdGlvbnNdPVwidGFibGVBY3Rpb25zXCJcclxuICogICAgIChvblJvd1NlbGVjdGVkKT1cInJvd0RldGFpbHMoJGV2ZW50KVwiXHJcbiAqICAgICAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCJcclxuICogICAgIChvblNvcnRpbmcpPVwib25Tb3J0KCRldmVudClcIlxyXG4gKiAgPjwvY3RzLXRhYmxlPlxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjdHMtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHRAVmlld0NoaWxkKERhdGF0YWJsZUNvbXBvbmVudCkgZGF0YVRhYmxlOiBEYXRhdGFibGVDb21wb25lbnQ7XHJcblx0QFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuXHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyAqL1xyXG5cdEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgdG8gY2F0Y2ggaW5kZXgqL1xyXG5cdEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyBJY29uICovXHJcblx0QE91dHB1dCgpIG9uSWNvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gcGVyZm9ybSBhY3Rpb24gb24gcm93IChkZWx0ZSwgZWRpdCwgLi4uICkgKi9cclxuXHRAT3V0cHV0KCkgYWN0aW9uT25Sb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHQgZW1pdCB3aGVuIHNvcnRpbmcgdGFibGUgKi9cclxuXHRAT3V0cHV0KCkgb25Tb3J0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0IGVtaXQgd2hlbiBzZWxlY3RpbmcgbXVsdGlwbGUgcm93ICovXHJcblx0QE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogYXJheSBvZiByb3dzIHBhc3NlZCBmcm9tIG91dCBzaWRlIHRoZSBjb21wb25lbnQgKi9cclxuXHJcblx0cHJpdmF0ZSBfcm93czogQXJyYXk8YW55PiA9IFtdO1xyXG5cdEBJbnB1dCgpIHNldCByb3dzKHJvd3M6IEFycmF5PGFueT4pIHtcclxuXHRcdHRoaXMuX3Jvd3MgPSByb3dzO1xyXG5cdFx0dGhpcy5zZWxlY3RlZCA9IFtdO1xyXG5cdH1cclxuXHJcblx0Z2V0IHJvd3MoKTogQXJyYXk8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcm93cztcclxuXHR9XHJcblx0LyoqIGFycmF5IG9mIGNvbHVtbnMgcGFhc2VkIGZyb20gb3V0IHNpZGUgdGhlIGNvbXBvbmVudCAqL1xyXG5cdEBJbnB1dCgpIGNvbHVtbnM7XHJcblx0LyoqIGFycmF5IG9mIGNvbHVtbnMgcGFhc2VkIGZyb20gb3V0IHNpZGUgdGhlIGNvbXBvbmVudCBmb3Igc21hbGxlciBzY3JlZW5zICovXHJcblx0QElucHV0KCkgcmVzcG9uc2l2ZUNvbHVtbnM7XHJcblx0LyoqIHRvIGRlZmluZSB0aGUgcGFnZSBpbiB3aGljaCB0YWJsZSBpcyBiZWluZyB1c2VkICovXHJcblx0QElucHV0KCkgZW50aXR5VHlwZTogc3RyaW5nID0gJyc7XHJcblx0LyoqIHN0YXRpYyAgcGF0aCBmb3IgdHJhbnNsYXRpb24gcGFzc2VkIGZyb20gb3V0IHNpZGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFnZSB0cmFuc2xhdGlvbiBwYXRoICovXHJcblx0QElucHV0KCkgcHJlZml4ID0gJyc7XHJcblx0LyoqIEBkZXByZWNhdGVkICovXHJcblx0QElucHV0KCkgcGFnZUNvdW50O1xyXG5cdC8qKiBUb3RhbCBSZWNvcmRzY291bnQgKi9cclxuXHRASW5wdXQoKSB0b3RhbFJlY29yZHM7XHJcblx0LyoqIEBkZXByZWNhdGVkICovXHJcblx0QElucHV0KCkgcm93Q3Vyc29yID0gZmFsc2U7XHJcblx0LyoqIE1heCBmdWxsIHdpZHRoIGluIFBYIHwgYXV0byAqL1xyXG5cdEBJbnB1dCgpIGZ1bGxXaWR0aCA9ICdhdXRvJztcclxuXHQvKiogVm9jYWJ1bGFyeSBUcmFuc2xhdGlvbiBwcmVmaXggKi9cclxuXHRASW5wdXQoKSB2b2NJdGVtVHJhbnNsYXRpb25QcmVmaXg7XHJcblxyXG5cdHRhYmxlTW9kZXMgPSBUQUJMRV9NT0RFO1xyXG5cclxuXHRASW5wdXQoKSB0YWJsZU1vZGU6IHN0cmluZyA9IFRBQkxFX01PREUubGlzdDtcclxuXHJcblx0QElucHV0KCkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xyXG5cclxuXHQvKiogYWN0aW9uIHRvIGJlIGluIGNhcmQgbW9kZSAqL1xyXG5cdEBJbnB1dCgpIHRhYmxlQWN0aW9ucztcclxuXHRASW5wdXQoKSBmb3JtYXQgPSAnTU1NTSBkLCB5JztcclxuXHRASW5wdXQoKSBkZWZ1bHRTb3J0ID0gbnVsbDtcclxuXHRsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblx0QElucHV0KCkgaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkID0gZmFsc2U7XHJcblxyXG5cdC8qKiBhbGxvdyBtdWx0aXNlbGVjdCByb3dzIHdpdGggY2hlY2tib3ggKi9cclxuXHRASW5wdXQoKSBtdWx0aVNlbGVjdFJvd3MgPSBmYWxzZTtcclxuXHJcblx0LyoqIHRvIHNob3cgMXN0IHJvdyB3aXRoIGN1c3RvbSB0ZW1wbGF0ZSBpbiB0aGUgdGFibGUqL1xyXG5cdEBJbnB1dCgpIGN1c3RvbUZpcnN0Um93ID0gZmFsc2U7XHJcblx0LyoqIGZsYWdlIHVzZWQgdG8gZGlzYWJsZSBhY3Rpb25zIGlmIHRoZXJlIHdhcyBtdWx0aSBzZWxlY3RlZCByb3dzICovXHJcblxyXG5cdEBJbnB1dCgpIHNob3dBY3Rpb25zQXNNZW51ID0gZmFsc2U7IC8vIGZsYWdlIHRvIHNob3cgYWN0aW9uIGluIG1lbnUgb3Igc2lkZSBieSBzaWRlXHJcblxyXG5cdEBJbnB1dCgpIG1lc3NhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBlbXB0eU1lc3NhZ2U6ICcnIH07XHJcblxyXG5cdGRpc2FibGVkQWN0aW9ucyA9IGZhbHNlO1xyXG5cdGlzQXJhYmljID0gZmFsc2U7XHJcblx0dGFibGVXaWR0aCA9ICdhdXRvJztcclxuXHR0YWJsZUNvbHVtbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuXHR0YWJsZUNvbHVtbnMkID0gdGhpcy50YWJsZUNvbHVtbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0I3Jlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcblx0QElucHV0KCkgZGVmYXVsdENvbHVtblNpemUgPSAyMDA7XHJcblx0c3VtT2ZDb2x1bW5TaXplcyQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMudGFibGVDb2x1bW5zJC5waXBlKFxyXG5cdFx0bWFwKFxyXG5cdFx0XHQoY29sdW1ucykgPT5cclxuXHRcdFx0XHRjb2x1bW5zLnJlZHVjZSgoc3VtLCBjb2wpID0+IHN1bSArIChjb2wuc2l6ZSB8fCB0aGlzLmRlZmF1bHRDb2x1bW5TaXplKSwgMCkgKyAodGhpcy5tdWx0aVNlbGVjdFJvd3MgPyAzMCA6IDApXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0Z2V0IHRhYmxlQ29sdW1ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLnRhYmxlQ29sdW1uc1N1Yi5nZXRWYWx1ZSgpO1xyXG5cdH1cclxuXHRjdXJyZW50Um93O1xyXG5cdHNlbGVjdGVkID0gW107XHJcblx0cGFnZU51bWJlciA9IDE7XHJcblx0cmVzcG9uc2l2ZVZpZXcgPSBmYWxzZTtcclxuXHRzdGF0dXNJY29ucyA9IHt9OyAvLyBvYmplY3QgdG8gY29udGFpbnMgYWxsIHN0YXR1cyBpY29ucyBpZiBleGlzdFxyXG5cdGRpcmVjdGlvbkljb25zID0ge307IC8vIG9iamVjdCB0byBjb250YWlucyBhbGwgZGlyZWN0aW9uIGljb25zIGlmIGV4aXN0XHJcblx0aXNGaXhlZE9wdGlvbkNvbHVtbnMgPSBmYWxzZTtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuXHRcdHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25TZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLmZvcm1hdCA9IHRoaXMuYXBwQ29uZmlnLm15Q29uZmlndXJhdGlvblsnZGF0ZUZvcm1hdGUnXTtcclxuXHRcdHRoaXMuc3RhdHVzSWNvbnMgPSB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ3N0YXR1c0ljb25zJ107XHJcblx0XHR0aGlzLmRpcmVjdGlvbkljb25zID0gdGhpcy5hcHBDb25maWcubXlDb25maWd1cmF0aW9uWydkaXJlY3Rpb25JY29ucyddO1xyXG5cdFx0dGhpcy5pc0ZpeGVkT3B0aW9uQ29sdW1ucyA9IHRoaXMuYXBwQ29uZmlnLm15Q29uZmlndXJhdGlvbi50YWJsZXM/LmlzRml4ZWRPcHRpb25Db2x1bW5zO1xyXG5cdFx0dGhpcy5sYW5nU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGlvbi5pc0FyYWJpYy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmlzQXJhYmljID0gcmVzO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMudGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcclxuXHRcdHRoaXMuI3Jlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcblx0XHRcdHRoaXMuZGF0YVRhYmxlLnJlY2FsY3VsYXRlKCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLiNyZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuI3Jlc2l6ZU9ic2VydmVyKSB7XHJcblx0XHRcdHRoaXMuI3Jlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzLmNvbHVtbnMgJiYgIWNoYW5nZXM/LmNvbHVtbnM/LmlzRmlyc3RDaGFuZ2UoKSkge1xyXG5cdFx0XHR0aGlzLnRhYmxlQ29sdW1uc1N1Yi5uZXh0KFsuLi5jaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZV0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLm9uUmVzaXplKHdpbmRvdy5pbm5lcldpZHRoKTtcclxuXHR9XHJcblxyXG5cdC8vIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gc2luZ2xlIHJvd1xyXG5cdHJvd0RldGFpbHMoZXZlbnQpIHtcclxuXHRcdGlmIChldmVudC50eXBlICE9PSAnbW91c2VlbnRlcicpIHtcclxuXHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycgJiYgZXZlbnQuY29sdW1uLnByb3AgIT09ICcnKSB7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50Um93ID0gZXZlbnQucm93O1xyXG5cdFx0XHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KHRoaXMuY3VycmVudFJvdyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0aWNvblNlbGVjdGVkKGV2ZW50OiBNb3VzZUV2ZW50LCByb3cpIHtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0dGhpcy5vbkljb25TZWxlY3RlZC5lbWl0KHJvdyk7XHJcblx0fVxyXG5cclxuXHQvL2Z1bmN0aW9uIHRvIGhhbmRsZSBhbGwgb3BlcmF0aW9ucyBvbiBzaW5nbGUgcm93IChkZWxldGUgLCBlZGl0ICwgLi4uKVxyXG5cdHBlcmZvcm1BY3Rpb24oc2luZ2xlUm93LCBhY3Rpb25UeXBlKSB7XHJcblx0XHRpZiAoIXRoaXMuZGlzYWJsZWRBY3Rpb25zKVxyXG5cdFx0XHR0aGlzLmFjdGlvbk9uUm93LmVtaXQoe1xyXG5cdFx0XHRcdHR5cGU6IGFjdGlvblR5cGUsXHJcblx0XHRcdFx0cm93OiBzaW5nbGVSb3dcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBoYW5kbGUgY2hlY2tib3ggaWYgdGFibGUgaGFzIG9uZXNcclxuXHRvblNlbGVjdCh7IHNlbGVjdGVkIH0pIHtcclxuXHRcdGlmICh0aGlzLm11bHRpU2VsZWN0Um93cykge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkLnNwbGljZSgwLCB0aGlzLnNlbGVjdGVkLmxlbmd0aCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWQucHVzaCguLi5zZWxlY3RlZCk7XHJcblx0XHRcdHRoaXMub25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoc2VsZWN0ZWQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuZGlzYWJsZWRBY3Rpb25zID0gdGhpcy5tdWx0aVNlbGVjdFJvd3MgJiYgc2VsZWN0ZWQubGVuZ3RoID4gMDtcclxuXHR9XHJcblxyXG5cdC8vIGhhbmRsZSBzb3J0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlXHJcblx0b25Tb3J0KGV2ZW50KSB7XHJcblx0XHRsZXQgc29ydCA9IHtcclxuXHRcdFx0c29ydEJ5OiBldmVudC5jb2x1bW4uaGVhZGVyQ2xhc3MsXHJcblx0XHRcdHNvcnRPcmRlcjogZXZlbnQubmV3VmFsdWVcclxuXHRcdH07XHJcblx0XHR0aGlzLm9uU29ydGluZy5lbWl0KHNvcnQpO1xyXG5cdH1cclxuXHJcblx0YXNzaWduVGFibGVDb2x1bW5zKGV2ZW50KSB7XHJcblx0XHR0aGlzLm9uUmVzaXplKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoKTtcclxuXHR9XHJcblxyXG5cdG9uUmVzaXplKHdpZHRoKSB7XHJcblx0XHRpZiAod2lkdGggPiAxNDAwKSB7XHJcblx0XHRcdHRoaXMudGFibGVXaWR0aCA9ICdhdXRvJztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMudGFibGVXaWR0aCA9IHRoaXMuZnVsbFdpZHRoO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHdpZHRoIDwgNzY4KSB7XHJcblx0XHRcdHRoaXMudGFibGVDb2x1bW5zU3ViLm5leHQodGhpcy5yZXNwb25zaXZlQ29sdW1ucyk7XHJcblx0XHRcdHRoaXMucmVzcG9uc2l2ZVZpZXcgPSB0cnVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yZXNwb25zaXZlVmlldyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0dGhpcy50YWJsZUNvbHVtbnNTdWIubmV4dCh0aGlzLmNvbHVtbnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y2FyZFNlbGVjdGVkKGNhcmQpIHtcclxuXHRcdGlmICh0aGlzLmhpZ2hsaWdodFNlbGVjdGVkQ2FyZCkge1xyXG5cdFx0XHR0aGlzLnJvd3MubWFwKChyb3cpID0+IHtcclxuXHRcdFx0XHRyb3dbJ2lzU2VsZWN0ZWQnXSA9IGZhbHNlO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0Y2FyZFsnaXNTZWxlY3RlZCddID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGNhcmQpO1xyXG5cdH1cclxuXHJcblx0Y2FyZEZvY3VzZWQoaW5kZXgpIHtcclxuXHRcdHRoaXMub25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoaW5kZXgpO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2XHJcblx0I3RhYmxlQ29udGFpbmVyXHJcblx0Y2xhc3M9XCJpbmVyLXRhYmxlLWNvbnRhaW5lclwiXHJcblx0W3N0eWxlXT1cIid3aWR0aDonICsgdGFibGVXaWR0aFwiXHJcblx0Km5nSWY9XCJ0YWJsZU1vZGUgPT09IHRhYmxlTW9kZXMubGlzdCAmJiAhcmVzcG9uc2l2ZVZpZXdcIlxyXG4+XHJcblx0PG5neC1kYXRhdGFibGVcclxuXHRcdFtuZ0NsYXNzXT1cInsgb3ZlcmZsb3dWaXNpYmxlOiBjdXN0b21GaXJzdFJvdyB9XCJcclxuXHRcdGNsYXNzPVwibGFyZ2UtdGFibGVcIlxyXG5cdFx0W3Jvd3NdPVwicm93c1wiXHJcblx0XHRbc3VtbWFyeVJvd109XCJjdXN0b21GaXJzdFJvd1wiXHJcblx0XHRbY29sdW1uTW9kZV09XCInc3RhbmRhcmQnXCJcclxuXHRcdFtzY3JvbGxiYXJIXT1cInRydWVcIlxyXG5cdFx0W3N0eWxlLndpZHRoLiVdPVwiMTAwXCJcclxuXHRcdFtleHRlcm5hbFNvcnRpbmddPVwidHJ1ZVwiXHJcblx0XHQoYWN0aXZhdGUpPVwicm93RGV0YWlscygkZXZlbnQpXCJcclxuXHRcdChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXHJcblx0XHQoc29ydCk9XCJvblNvcnQoJGV2ZW50KVwiXHJcblx0XHQod2luZG93OnJlc2l6ZSk9XCJhc3NpZ25UYWJsZUNvbHVtbnMoJGV2ZW50KVwiXHJcblx0XHRbcm93SGVpZ2h0XT1cIiczcmVtJ1wiXHJcblx0XHRbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxyXG5cdFx0W3NlbGVjdGlvblR5cGVdPVwibXVsdGlTZWxlY3RSb3dzID8gJ2NoZWNrYm94JyA6ICdzaW5nbGUnXCJcclxuXHRcdFtzb3J0c109XCJbeyBwcm9wOiBkZWZ1bHRTb3J0Py5uYW1lLCBkaXI6IGRlZnVsdFNvcnQ/LmRpciB9XVwiXHJcblx0XHRbbWVzc2FnZXNdPVwibWVzc2FnZXNcIlxyXG5cdD5cclxuXHRcdDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG5cdFx0XHQqbmdJZj1cIm11bHRpU2VsZWN0Um93c1wiXHJcblx0XHRcdFt3aWR0aF09XCIzMFwiXHJcblx0XHRcdFtzb3J0YWJsZV09XCJmYWxzZVwiXHJcblx0XHRcdFtwcm9wXT1cIicnXCJcclxuXHRcdFx0W2NhbkF1dG9SZXNpemVdPVwiZmFsc2VcIlxyXG5cdFx0XHRbZHJhZ2dhYmxlXT1cImZhbHNlXCJcclxuXHRcdFx0W3Jlc2l6ZWFibGVdPVwiZmFsc2VcIlxyXG5cdFx0PlxyXG5cdFx0XHQ8bmctdGVtcGxhdGVcclxuXHRcdFx0XHRuZ3gtZGF0YXRhYmxlLWhlYWRlci10ZW1wbGF0ZVxyXG5cdFx0XHRcdGxldC12YWx1ZT1cInZhbHVlXCJcclxuXHRcdFx0XHRsZXQtYWxsUm93c1NlbGVjdGVkPVwiYWxsUm93c1NlbGVjdGVkXCJcclxuXHRcdFx0XHRsZXQtc2VsZWN0Rm49XCJzZWxlY3RGblwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cImFsbFJvd3NTZWxlY3RlZFwiIChjaGFuZ2UpPVwic2VsZWN0Rm4oIWFsbFJvd3NTZWxlY3RlZClcIj4gPC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZVxyXG5cdFx0XHRcdG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZVxyXG5cdFx0XHRcdGxldC12YWx1ZT1cInZhbHVlXCJcclxuXHRcdFx0XHRsZXQtaXNTZWxlY3RlZD1cImlzU2VsZWN0ZWRcIlxyXG5cdFx0XHRcdGxldC1vbkNoZWNrYm94Q2hhbmdlRm49XCJvbkNoZWNrYm94Q2hhbmdlRm5cIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlRm4oJGV2ZW50KVwiPiA8L21hdC1jaGVja2JveD5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcblx0XHQ8IS0tIHwgdHJhbnNsYXRlIC0tPlxyXG5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbHVtbnMkIHwgYXN5bmMgYXMgY29sdW1uc1wiPlxyXG5cdFx0XHQ8bmd4LWRhdGF0YWJsZS1jb2x1bW4gKm5nSWY9XCIhY29sdW1ucy5sZW5ndGhcIj48L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG5cclxuXHRcdFx0PCEtLSBbZnJvemVuUmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdhY3Rpb25zJ1wiIC0tPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKnBlcm1pc3Npb249XCJ7IG5hbWU6IGNvbHVtbi5wZXJtaXNzaW9uIH1cIj5cclxuXHRcdFx0XHRcdDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG5cdFx0XHRcdFx0XHQqbmdJZj1cImNvbHVtbi5kaXNwbGF5XCJcclxuXHRcdFx0XHRcdFx0W3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXHJcblx0XHRcdFx0XHRcdFtuYW1lXT1cInByZWZpeCArIGNvbHVtbi5uYW1lIHwgdHJhbnNsYXRlXCJcclxuXHRcdFx0XHRcdFx0W3Byb3BdPVwiY29sdW1uLnByb3BcIlxyXG5cdFx0XHRcdFx0XHRbcmVzaXplYWJsZV09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRcdFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRbd2lkdGhdPVwiY29sdW1uPy5zaXplIHx8IGRlZmF1bHRDb2x1bW5TaXplXCJcclxuXHRcdFx0XHRcdFx0W2Zyb3plbkxlZnRdPVwiaXNGaXhlZE9wdGlvbkNvbHVtbnMgJiYgY29sdW1uLnR5cGUgPT09ICdhY3Rpb25zJ1wiXHJcblx0XHRcdFx0XHRcdFtoZWFkZXJDbGFzc109XCJjb2x1bW4uaGVhZGVyQ2xhc3MgPyBjb2x1bW4uaGVhZGVyQ2xhc3MgOiAnJ1wiXHJcblx0XHRcdFx0XHRcdFtzdW1tYXJ5VGVtcGxhdGVdPVwiY3VzdG9tRmlyc3RSb3cgPyBjdXN0b21Sb3dUZW1wbGF0ZSA6IG51bGxcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGV4dCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiICpuZ0lmPVwiIWNvbHVtbi53aXRoVG9vbHRpcFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7eyB2YWx1ZSA/IHZhbHVlIDogJy0tJyB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIiBtYXRUb29sdGlwPVwie3sgdmFsdWUgPyB2YWx1ZSA6ICctLScgfX1cIiAqbmdJZj1cImNvbHVtbi53aXRoVG9vbHRpcFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7eyB2YWx1ZSA/IHZhbHVlIDogJy0tJyB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3ZvY2FidWxhcnknXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGN0cy1kcm9wZG93bi12aWV3ZXIgW3dpdGhPdXRMYWJlbF09XCJ0cnVlXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2Ryb3Bkb3duSWRdPVwiY29sdW1uLnZvY2FidWxhcnlJZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2N0cy1kcm9wZG93bi12aWV3ZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnVm9jQ2VsbCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7eyAodmFsdWUgPyBjb2x1bW4udm9jYWJ1bGFyeUlkICsgJy4nICsgdmFsdWUgOiAnLS0nKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ1ZvY0l0ZW0nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgdm9jSXRlbVRyYW5zbGF0aW9uUHJlZml4ICsgdmFsdWUgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RlcGFydG1lbnQnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGN0cy1kZXBhcnRtZW50LXZpZXdlciBbbm9TdHlsZV09XCJ0cnVlXCIgW3ZhbHVlXT1cInZhbHVlXCI+IDwvY3RzLWRlcGFydG1lbnQtdmlld2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3N0YXR1cydcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzdGF0dXMtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInZhbHVlIHt7IHZhbHVlIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJzdGF0dXNJY29ucyAmJiBzdGF0dXNJY29ucyAhPT0ge31cIiBjbGFzcz1cInN0YXR1cy1pY29uIHt7IHN0YXR1c0ljb25zW3ZhbHVlXSB9fVwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7eyAnU1RBVFMuJyArIHZhbHVlIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdyb2xlJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7ICdyb2xlLicgKyAodmFsdWUgPyB2YWx1ZSA6ICctLScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnYWN0aW9ucycgJiYgcm93cy5sZW5ndGggIT09IDBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwiZGlzYWJsZWRBY3Rpb25zID8gJ2Rpc2FibGVkLWFjdGlvbnMtd3JhcHBlcicgOiAnYWN0aW9ucy13cmFwcGVyJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiIXNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8c3BhbiBjbGFzcz1cImJpIGJpLXRyYXNoIGRlbGV0ZS1pY29uXCIgKGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93ICwgJ2RlbGV0ZScpXCI+PC9zcGFuPiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImJpIGJpLXBlbmNpbC1zcXVhcmUgZWRpdC1pY29uXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgJ1VQREFURScgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2VkaXQnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJlbnRpdHlUeXBlID09PSAndm9jLXRhYmxlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJiaSBiaS10cmFzaFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7ICdkZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdkZWxldGUnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJlbnRpdHlUeXBlID09PSAndm9jLXRhYmxlJyB8fCBlbnRpdHlUeXBlID09PSAnZGVwYXJ0bWVudCcgfHwgZW50aXR5VHlwZSA9PT0gJ3NpZ25lcnMnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJiaSBiaS1wbHVzLXNxdWFyZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7ICdVU0VSX01BTkdNRU5ULmFkZFRvRGVwYXJ0bWVudCcgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2RlbGV0ZScpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cImVudGl0eVR5cGUgPT09ICd1c2VycycgJiYgcm93LmlzSW5pdGlhbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbHVtbi5hY3Rpb25zXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi50eXBlID09ICdidXR0b24nOyBlbHNlIHNob3dJY29uXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IGFjdGlvbi5wZXJtaXNzaW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGFjdGlvbi5jbGFzcyB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG1hdC1pY29uICpuZ0lmPVwiYWN0aW9uLmljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiIFtzdmdJY29uXT1cImFjdGlvbi5pY29uXCI+IDwvbWF0LWljb24+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBhY3Rpb24udGl0bGUgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjc2hvd0ljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhY3Rpb24ucGVybWlzc2lvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBhY3Rpb24uaWNvbiB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1hdFRvb2x0aXA9XCJ7eyBhY3Rpb24udG9vbHRpcCB8IHRyYW5zbGF0ZSB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8aVxyXG4gICAgICAgICAgICAgICAgKnBlcm1pc3Npb249XCJ7IG5hbWU6ICdyZWdpc3RlckNvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1pbi1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ0xJU1RJTkcuUkVHSVNURVInIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ3JlZ2lzdGVyJylcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnc2VuZENvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWVudmVsb3BlXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5TRU5EJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdzZW5kJylcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnY2xvc2VDb3JyZXNwb25kYW5jZScsIGVudGl0eTogcm93IH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS14LWNpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ0xJU1RJTkcuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2Nsb3NlJylcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnYXJjaGl2ZUNvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWZvbGRlci1zeW1saW5rXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5BUkNISVZFJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdhcmNoaXZlJylcIlxyXG4gICAgICAgICAgICAgID48L2k+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cImRpc2FibGVkQWN0aW9ucyA/ICdkaXNhYmxlZC1hY3Rpb25zLXdyYXBwZXInIDogJ2FjdGlvbnMtd3JhcHBlcidcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1tZW51LXRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZEFjdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRocmVlLWRvdHMtdmVydGljYWxcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJkYXRhdGFibGUtYWN0aW9ucy1tZW51XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2VkaXQnKVwiICpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3ZvYy10YWJsZSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktcGVuY2lsLXNxdWFyZSBlZGl0LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi10ZXh0XCI+e3sgJ1VQREFURScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF0LW1lbnUtaXRlbVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAnZGVsZXRlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJlbnRpdHlUeXBlID09PSAndm9jLXRhYmxlJyB8fCBlbnRpdHlUeXBlID09PSAnZGVwYXJ0bWVudCcgfHwgZW50aXR5VHlwZSA9PT0gJ3NpZ25lcnMnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRyYXNoXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb24tdGV4dFwiPnt7ICdkZWxldGUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1hdC1tZW51LWl0ZW1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2RlbGV0ZScpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3VzZXJzJyAmJiByb3cuaXNJbml0aWFsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXBsdXMtc3F1YXJlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb24tdGV4dFwiPnt7ICdVU0VSX01BTkdNRU5ULmFkZFRvRGVwYXJ0bWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnR0YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb2x1bW4uYWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csIGFjdGlvbi5hY3Rpb25OYW1lKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IGFjdGlvbi5wZXJtaXNzaW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInt7IGFjdGlvbi5pY29uIH19XCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi10ZXh0XCI+e3sgYWN0aW9uLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLWNvbnR0YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvbWF0LW1lbnU+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Y3RzLWRhdGUtdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiPjwvY3RzLWRhdGUtdmlld2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnY3VzdG9tJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbHVtbl09XCJjb2x1bW5cIiBbY29udGV4dF09XCJyb3dcIj4gPC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RpcmVjdGlvbidcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgKGNsaWNrKT1cImljb25TZWxlY3RlZCgkZXZlbnQsIHJvdylcIiBjbGFzcz1cInN0YXR1cy13cmFwcGVyIHt7IHZhbHVlIH19IHt7IHJvdy5zdGF0ZSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImluZXItc3RhdHVzLXdyYXBwZXJcIiBtYXRUb29sdGlwPVwie3sgJ1NUQVRTLicgKyByb3cuc3RhdGUgfCB0cmFuc2xhdGUgfX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnaXNGYXZvcml0ZScsIGVudGl0eTogcm93IH1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmF2LWljb24taW5kaWNhdG9yIGJpIGJpLXN0YXItZmlsbFwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBkaXJlY3Rpb25JY29ucyA/IGRpcmVjdGlvbkljb25zWydpbmNvbWluZyddIDogJ2JpIGJpLWJveC1hcnJvdy1kb3duJyB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInJvdy50eXBlID09PSAnSW5jb21pbmdDb3JyZXNwb25kZW5jZSdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwie3sgZGlyZWN0aW9uSWNvbnMgPyBkaXJlY3Rpb25JY29uc1snb3V0Z29pbmcnXSA6ICdiaSBiaS1ib3gtYXJyb3ctdXAgb3V0Z29pbmcnIH19XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwicm93LnR5cGUgPT09ICdPdXRnb2luZ0NvcnJlc3BvbmRlbmNlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBkaXJlY3Rpb25JY29ucyA/IGRpcmVjdGlvbkljb25zWydpbnRlcm5hbCddIDogJ2JpIGJpLWJveC1hcnJvdy1yaWdodCBpbnRlcm5hbCcgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJyb3cudHlwZSA9PT0gJ0ludGVybmFsQ29ycmVzcG9uZGVuY2UnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHNwYW4gY2xhc3M9XCJ2YWx1ZSB7eyB2YWx1ZSB9fVwiPnt7IFwiU1RBVFMuXCIgKyB2YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICNjdXN0b21Sb3dUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy12aXNpYmxlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y3RzLWR5bmFtaWMtY29sdW1uIFtpZF09XCJjb2x1bW4uY3VzdG9tMXN0Q2VsbFRlbXBsYXRlXCIgW2NvbHVtbl09XCJjb2x1bW5cIiBbY29udGV4dF09XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvY3RzLWR5bmFtaWMtY29sdW1uPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuXHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L25neC1kYXRhdGFibGU+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInJlc3BvbnNpdmVWaWV3ICYmIHRhYmxlTW9kZSAhPT0gdGFibGVNb2Rlcy5jYXJkXCIgKHdpbmRvdzpyZXNpemUpPVwiYXNzaWduVGFibGVDb2x1bW5zKCRldmVudClcIj5cclxuXHQ8ZGl2IGNsYXNzPVwiZHluYW1pYy1jYXJkcy1jb250YWluZXJcIj5cclxuXHRcdDxkaXZcclxuXHRcdFx0Y2xhc3M9XCJzaW5nbGUtY2FyZFwiXHJcblx0XHRcdFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLWNhcmQnOiBoaWdobGlnaHRTZWxlY3RlZENhcmQgJiYgcm93Py5pc1NlbGVjdGVkIH1cIlxyXG5cdFx0XHQqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NcIlxyXG5cdFx0PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWVtby10aXRsZVwiPlxyXG5cdFx0XHRcdDxzcGFuPlxyXG5cdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXMucmVmZXJlbmNlTnVtYmVyIH19XHJcblx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiYWN0aW9uLXdyYXBcIj5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYWN0aW9uXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YWJsZUFjdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IGFjdGlvbi5wZXJtaXNzaW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwie3sgYWN0aW9uLmljb24gfX1cIlxyXG5cdFx0XHRcdFx0XHRcdG1hdFRvb2x0aXA9XCJ7eyBhY3Rpb24udG9vbHRpcCB8IHRyYW5zbGF0ZSB9fVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCBhY3Rpb24uYWN0aW9uTmFtZSlcIlxyXG5cdFx0XHRcdFx0XHQ+PC9pPlxyXG5cdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgKm5nSWY9XCJ0YWJsZUNvbHVtbnMubGVuZ3RoID4gMVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtZW1vLWJvZHlcIiAqbmdGb3I9XCJsZXQgcHJvcGVydHkgb2YgdGFibGVDb2x1bW5zJCB8IGFzeW5jXCIgKGNsaWNrKT1cImNhcmRTZWxlY3RlZChyb3cpXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwia2V5XCI+e3sgcHJlZml4ICsgcHJvcGVydHkua2V5IHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidmFsdWVcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICd0ZXh0J1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdvd25lcidcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS5vd25lcl0/Lltwcm9wZXJ0eS52YWx1ZV0gfX1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGF0ZSdcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfCBsb2NhbGl6ZWREYXRlIDogZm9ybWF0IDogKGlzQXJhYmljID8gJ2FyLUFSJyA6ICdlbi1VUycpIH19XHJcblx0XHRcdFx0XHRcdFx0PCEtLSA8Y3RzLWRhdGUtdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJyb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV1cIiA+PC9jdHMtZGF0ZS12aWV3ZXI+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdzdGF0dXMnXCIgY2xhc3M9XCJ2YWx1ZSB7eyByb3dbcHJvcGVydHkudmFsdWVdIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgJ1NUQVRTLicgKyByb3dbcHJvcGVydHkudmFsdWVdIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2RlcGFydG1lbnQnXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1kZXBhcnRtZW50LXZpZXdlciBbbm9TdHlsZV09XCJ0cnVlXCIgW3ZhbHVlXT1cInJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXVwiPiA8L2N0cy1kZXBhcnRtZW50LXZpZXdlcj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndm9jYWJ1bGFyeSdcIiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1kcm9wZG93bi12aWV3ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwicm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtkcm9wZG93bklkXT1cInByb3BlcnR5LnZvY2FidWxhcnlJZFwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDwvY3RzLWRyb3Bkb3duLXZpZXdlcj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHQqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkaXJlY3Rpb24nXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiaWNvblNlbGVjdGVkKCRldmVudCwgcm93KVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzdGF0dXMtd3JhcHBlciB7eyBwcm9wZXJ0eS52YWx1ZSB9fSB7eyByb3cuc3RhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbmVyLXN0YXR1cy13cmFwcGVyXCIgbWF0VG9vbHRpcD1cInt7ICdTVEFUUy4nICsgcm93LnN0YXRlIHwgdHJhbnNsYXRlIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnaXNGYXZvcml0ZScsIGVudGl0eTogcm93IH1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmYXYtaWNvbi1pbmRpY2F0b3IgYmkgYmktc3Rhci1maWxsXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1kb3duXCIgKm5nSWY9XCJyb3cudHlwZSA9PT0gJ0luY29taW5nQ29ycmVzcG9uZGVuY2UnXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1ib3gtYXJyb3ctdXAgb3V0Z29pbmdcIiAqbmdJZj1cInJvdy50eXBlID09PSAnT3V0Z29pbmdDb3JyZXNwb25kZW5jZSdcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1yaWdodCBpbnRlcm5hbFwiICpuZ0lmPVwicm93LnR5cGUgPT09ICdJbnRlcm5hbENvcnJlc3BvbmRlbmNlJ1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2N1c3RvbSdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8Y3RzLWR5bmFtaWMtY29sdW1uIFtpZF09XCJwcm9wZXJ0eS50ZW1wbGF0ZVwiIFtjb2x1bW5dPVwicHJvcGVydHlcIiBbY29udGV4dF09XCJyb3dcIj4gPC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb2x1bW5zLmxlbmd0aCA9PT0gMVwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaW5lci1jYXJkLWNvbnRhaW5lciB7eyBlbnRpdHlUeXBlIH19XCIgKGNsaWNrKT1cImNhcmRTZWxlY3RlZChyb3cpXCIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzXCI+XHJcblx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uc1swXS50ZW1wbGF0ZVwiIFtjb2x1bW5dPVwiY29sdW1uc1swXVwiIFtjb250ZXh0XT1cInJvd1wiPiA8L2N0cy1keW5hbWljLWNvbHVtbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwidGFibGVNb2RlID09PSB0YWJsZU1vZGVzLmNhcmRcIj5cclxuXHQ8ZGl2IGNsYXNzPVwiY2FyZHMtY29udGFpbmVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwic2luZ2xlLWNhcmRcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1lbW8tdGl0bGVcIj5cclxuXHRcdFx0XHQ8c3Bhbj5cclxuXHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzLnJlZmVyZW5jZU51bWJlciB9fVxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi13cmFwXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvblwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFibGVBY3Rpb25zXCI+XHJcblx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhY3Rpb24ucGVybWlzc2lvbixcclxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGFjdGlvbi5pY29uIH19XCJcclxuXHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgYWN0aW9uLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZU1lbW8nLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdkZWxldGVNZW1vJylcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRyYXNoXCIgbWF0VG9vbHRpcD1cInt7ICdMSVNUSU5HLk9OTFlfREVMRVRFJyB8IHRyYW5zbGF0ZSB9fVwiPjwvaT5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGVybWluYXRlRGVsZWdhdGlvbicsXHJcblx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ3Rlcm1pbmF0ZURlbGVnYXRpb24nKVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktdHJhc2hcIiBtYXRUb29sdGlwPVwie3sgJ0xJU1RJTkcuQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fVwiPjwvaT5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJwdWJsaXNoLXN0YXRlXCJcclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ21lbW9QdWJsaXNoZWQnLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7eyAnTUVNT1MuUFVCTElTSEVEJyB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJwdWJsaXNoLXN0YXRlXCJcclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGVnYXRpb25GaW5pc2hlZCcsXHJcblx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7ICdkZWxlZ2F0aW9ucy5maW5pc2hlZCcgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwicHVibGlzaC1zdGF0ZVwiXHJcblx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxlZ2F0aW9uQWN0aXZlJyxcclxuXHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0e3sgJ2RlbGVnYXRpb25zLmFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWVtby1ib2R5XCIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRhYmxlQ29sdW1ucyQgfCBhc3luY1wiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KTsgY2FyZEZvY3VzZWQoaSlcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwia2V5XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlICE9PSAnZGVmYXVsdCdcIj5cclxuXHRcdFx0XHRcdHt7IHByZWZpeCArIHByb3BlcnR5LmtleSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGVmYXVsdCdcIj5cclxuXHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJrZXlcIlxyXG5cdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnaW50ZXJuYWxJc0VuYWJsZWQnLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7eyBwcmVmaXggKyBwcm9wZXJ0eS5rZXkgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICd0ZXh0J1wiPlxyXG5cdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICd1c2VyJ1wiPlxyXG5cdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0uZnVsbE5hbWUgfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkYXRlJ1wiPlxyXG5cdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfCBsb2NhbGl6ZWREYXRlIDogZm9ybWF0IDogKGlzQXJhYmljID8gJ2FyLUFSJyA6ICdlbi1VUycpIH19XHJcblx0XHRcdFx0XHRcdDwhLS0gPGN0cy1kYXRlLXZpZXdlciBbd2l0aE91dExhYmVsXT1cInRydWVcIiBbdmFsdWVdPVwicm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCIgPjwvY3RzLWRhdGUtdmlld2VyPiAtLT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdib29sZWFuJ1wiPlxyXG5cdFx0XHRcdFx0XHR7eyAocm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdID8gJ1llcycgOiAnTm8nKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2RlZmF1bHQnXCI+XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2ludGVybmFsSXNFbmFibGVkJyxcclxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdjdXN0b20nXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgaXRlbSB8IHRyYW5zbGF0ZSB9fSB7eyAnLCAnIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInRhYmxlTW9kZSA9PT0gdGFibGVNb2Rlcy5keW5hbWljQ2FyZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJjYXJkcy1jb250YWluZXJcIj5cclxuXHRcdDxkaXZcclxuXHRcdFx0Y2xhc3M9XCJzaW5nbGUtY2FyZFwiXHJcblx0XHRcdFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLWNhcmQnOiBoaWdobGlnaHRTZWxlY3RlZENhcmQgJiYgcm93Py5pc1NlbGVjdGVkIH1cIlxyXG5cdFx0XHQqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NcIlxyXG5cdFx0PlxyXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwidGFibGVDb2x1bW5zLmxlbmd0aCA+IDFcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWVtby1ib2R5XCIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRhYmxlQ29sdW1ucyQgfCBhc3luY1wiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImtleVwiPnt7IHByZWZpeCArIHByb3BlcnR5LmtleSB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInZhbHVlXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndGV4dCdcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfX1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGF0ZSdcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfCBsb2NhbGl6ZWREYXRlIDogZm9ybWF0IDogKGlzQXJhYmljID8gJ2FyLUFSJyA6ICdlbi1VUycpIH19XHJcblx0XHRcdFx0XHRcdFx0PCEtLSA8Y3RzLWRhdGUtdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJyb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV1cIiA+PC9jdHMtZGF0ZS12aWV3ZXI+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImluZXItY2FyZC1jb250YWluZXIge3sgZW50aXR5VHlwZSB9fVwiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KVwiICpuZ0lmPVwidGFibGVDb2x1bW5zLmxlbmd0aCA9PT0gMVwiPlxyXG5cdFx0XHRcdDxjdHMtZHluYW1pYy1jb2x1bW4gW2lkXT1cInRhYmxlQ29sdW1uc1swXS50ZW1wbGF0ZVwiIFtjb2x1bW5dPVwidGFibGVDb2x1bW5zWzBdXCIgW2NvbnRleHRdPVwicm93XCI+XHJcblx0XHRcdFx0PC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInRhYmxlTW9kZSA9PT0gdGFibGVNb2Rlcy5jdXN0b21cIiBjbGFzcz1cInRhYmxlLWN1c3RvbS12aWV3XCI+XHJcblx0PGFwcC1keW5hbWljLWNvbXBvbmVudFxyXG5cdFx0Y2xhc3M9XCJ0YWJsZS1jdXN0b20tdmlld19fY29tcG9uZW50XCJcclxuXHRcdCpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiXHJcblx0XHRbY29tcG9uZW50TmFtZV09XCJjb21wb25lbnROYW1lXCJcclxuXHRcdFtyb3ddPVwicm93XCJcclxuXHRcdFtyb3dBY3Rpb25dPVwiYWN0aW9uT25Sb3dcIlxyXG5cdFx0W29uQ2xpY2tdPVwib25Sb3dTZWxlY3RlZFwiXHJcblx0XHQoY2xpY2spPVwiY2FyZFNlbGVjdGVkKHJvdylcIlxyXG5cdFx0W2NsYXNzLmR5bmFtaWMtc2VsZWN0ZWQtY2FyZF09XCJoaWdobGlnaHRTZWxlY3RlZENhcmQgJiYgcm93Py5pc1NlbGVjdGVkXCJcclxuXHQ+PC9hcHAtZHluYW1pYy1jb21wb25lbnQ+XHJcbjwvZGl2PlxyXG4iXX0=